@cobaltcore-dev/aurora 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/client/App.d.ts +2 -1
  2. package/dist/client/AuroraApp.d.ts +25 -0
  3. package/dist/client/{AuthProvider-5TyZKZkx.mjs → AuthProvider-BS5OVv8n.mjs} +2 -2
  4. package/dist/client/AuthProvider-BS5OVv8n.mjs.map +1 -0
  5. package/dist/client/{ContentHeader-D64NtKvo.mjs → ContentHeader-BHMUzd9H.mjs} +16 -16
  6. package/dist/client/{ContentHeader-D64NtKvo.mjs.map → ContentHeader-BHMUzd9H.mjs.map} +1 -1
  7. package/dist/client/{DeleteFlavorModal-C2K43ABZ.mjs → DeleteFlavorModal-BP83t9zX.mjs} +283 -294
  8. package/dist/client/DeleteFlavorModal-BP83t9zX.mjs.map +1 -0
  9. package/dist/client/{FiltersInput-Bw8TFfwb.mjs → FiltersInput-B8CNBg1L.mjs} +23 -23
  10. package/dist/client/{FiltersInput-Bw8TFfwb.mjs.map → FiltersInput-B8CNBg1L.mjs.map} +1 -1
  11. package/dist/client/{FloatingIpActionModals-BfEDfYg9.mjs → FloatingIpActionModals-BraiJWBi.mjs} +48 -48
  12. package/dist/client/{FloatingIpActionModals-BfEDfYg9.mjs.map → FloatingIpActionModals-BraiJWBi.mjs.map} +1 -1
  13. package/dist/client/ImageToastNotifications-BXMHJaIH.mjs +1131 -0
  14. package/dist/client/ImageToastNotifications-BXMHJaIH.mjs.map +1 -0
  15. package/dist/client/{RouteError-B-NPGIv7.mjs → RouteError-hAF8_jbe.mjs} +2 -2
  16. package/dist/client/{RouteError-B-NPGIv7.mjs.map → RouteError-hAF8_jbe.mjs.map} +1 -1
  17. package/dist/client/{SortInput-DysAXpB3.mjs → SortInput-Cqs2poV3.mjs} +7 -7
  18. package/dist/client/{SortInput-DysAXpB3.mjs.map → SortInput-Cqs2poV3.mjs.map} +1 -1
  19. package/dist/client/{StatusError-DX-GvLjq.mjs → StatusError-C5KodQOq.mjs} +4 -4
  20. package/dist/client/{StatusError-DX-GvLjq.mjs.map → StatusError-C5KodQOq.mjs.map} +1 -1
  21. package/dist/client/{TwoColumnDescriptionList-B3xunXmz.mjs → TwoColumnDescriptionList-DiDx3PnH.mjs} +6 -6
  22. package/dist/client/{TwoColumnDescriptionList-B3xunXmz.mjs.map → TwoColumnDescriptionList-DiDx3PnH.mjs.map} +1 -1
  23. package/dist/client/{_auth-R5H2yKFf.mjs → _auth-DJ9wHZaj.mjs} +2 -2
  24. package/dist/client/{_auth-R5H2yKFf.mjs.map → _auth-DJ9wHZaj.mjs.map} +1 -1
  25. package/dist/client/{_flavorId-Zj7LNL-R.mjs → _flavorId-BN_qessZ.mjs} +2 -2
  26. package/dist/client/{_flavorId-Zj7LNL-R.mjs.map → _flavorId-BN_qessZ.mjs.map} +1 -1
  27. package/dist/client/{_flavorId-Dit5mM8I.mjs → _flavorId-CJjEB_Ao.mjs} +34 -34
  28. package/dist/client/{_flavorId-Dit5mM8I.mjs.map → _flavorId-CJjEB_Ao.mjs.map} +1 -1
  29. package/dist/client/{_floatingIpId-DCQQpNO-.mjs → _floatingIpId-CwDGHkWm.mjs} +2 -2
  30. package/dist/client/{_floatingIpId-DCQQpNO-.mjs.map → _floatingIpId-CwDGHkWm.mjs.map} +1 -1
  31. package/dist/client/{_floatingIpId-B0MCoqE3.mjs → _floatingIpId-foMIwbE4.mjs} +23 -23
  32. package/dist/client/{_floatingIpId-B0MCoqE3.mjs.map → _floatingIpId-foMIwbE4.mjs.map} +1 -1
  33. package/dist/client/_imageId-BtJ7GmYB.mjs +558 -0
  34. package/dist/client/{_imageId-CZYzBAVx.mjs.map → _imageId-BtJ7GmYB.mjs.map} +1 -1
  35. package/dist/client/{_projectId-DhSWowQo.mjs → _projectId-BmtCuzJu.mjs} +4 -4
  36. package/dist/client/{_projectId-DhSWowQo.mjs.map → _projectId-BmtCuzJu.mjs.map} +1 -1
  37. package/dist/client/_projectId-Byt3GQDW.mjs +99 -0
  38. package/dist/client/_projectId-Byt3GQDW.mjs.map +1 -0
  39. package/dist/client/_projectId-NYk1IN_a.mjs +291 -0
  40. package/dist/client/_projectId-NYk1IN_a.mjs.map +1 -0
  41. package/dist/client/{_projectId-D2pFfYIs.mjs → _projectId-QueiFczy.mjs} +3 -3
  42. package/dist/client/{_projectId-D2pFfYIs.mjs.map → _projectId-QueiFczy.mjs.map} +1 -1
  43. package/dist/client/{_securityGroupId-Mj8NJT2-.mjs → _securityGroupId-BcbkRhsN.mjs} +2 -2
  44. package/dist/client/{_securityGroupId-Mj8NJT2-.mjs.map → _securityGroupId-BcbkRhsN.mjs.map} +1 -1
  45. package/dist/client/{_securityGroupId-DZ4D4WwB.mjs → _securityGroupId-pPtJsCoe.mjs} +438 -442
  46. package/dist/client/{_securityGroupId-DZ4D4WwB.mjs.map → _securityGroupId-pPtJsCoe.mjs.map} +1 -1
  47. package/dist/client/_storageType-BmqrU06i.mjs +2202 -0
  48. package/dist/client/_storageType-BmqrU06i.mjs.map +1 -0
  49. package/dist/client/{about-WLyShNgE.mjs → about-_73VmpTB.mjs} +2 -2
  50. package/dist/client/{about-WLyShNgE.mjs.map → about-_73VmpTB.mjs.map} +1 -1
  51. package/dist/client/assets/{objectDownload.worker-BXFQIIU_.js.map → objectDownload.worker-CWWLPDyb.js.map} +1 -1
  52. package/dist/client/assets/{objectDownload.worker-ECvFtmOF.js.map → objectDownload.worker-kZlQuo3F.js.map} +1 -1
  53. package/dist/client/{aurora-IMO9HhqJ.mjs → aurora-EbwGRLLf.mjs} +2 -2
  54. package/dist/client/{aurora-IMO9HhqJ.mjs.map → aurora-EbwGRLLf.mjs.map} +1 -1
  55. package/dist/client/{build-DnD-T35u.mjs → build-C_4vRMCq.mjs} +2233 -2662
  56. package/dist/client/{build-DnD-T35u.mjs.map → build-C_4vRMCq.mjs.map} +1 -1
  57. package/dist/client/{flavors-Cp0LEGOH.mjs → flavors-CiHCYrtZ.mjs} +2 -2
  58. package/dist/client/{flavors-Cp0LEGOH.mjs.map → flavors-CiHCYrtZ.mjs.map} +1 -1
  59. package/dist/client/{flavors-CwMbDRHm2.mjs → flavors-DY-bDc8l.mjs} +164 -164
  60. package/dist/client/flavors-DY-bDc8l.mjs.map +1 -0
  61. package/dist/client/{floatingips-ICwo-rV_.mjs → floatingips-Ci4jHkaG.mjs} +177 -177
  62. package/dist/client/{floatingips-ICwo-rV_.mjs.map → floatingips-Ci4jHkaG.mjs.map} +1 -1
  63. package/dist/client/{hooks-CrriowRk.mjs → hooks-LutR2Yg3.mjs} +2 -2
  64. package/dist/client/{hooks-CrriowRk.mjs.map → hooks-LutR2Yg3.mjs.map} +1 -1
  65. package/dist/client/images-91U7tr9Y2.mjs +1976 -0
  66. package/dist/client/images-91U7tr9Y2.mjs.map +1 -0
  67. package/dist/client/{images-DWiM_72I.mjs → images-CS4kZQyu.mjs} +2 -2
  68. package/dist/client/{images-DWiM_72I.mjs.map → images-CS4kZQyu.mjs.map} +1 -1
  69. package/dist/client/index.d.ts +4 -1
  70. package/dist/client/index.js +444 -586
  71. package/dist/client/index.js.map +1 -1
  72. package/dist/client/{md-DNzcRhmz.mjs → md-kvaGCNAK.mjs} +4 -22
  73. package/dist/client/{md-DNzcRhmz.mjs.map → md-kvaGCNAK.mjs.map} +1 -1
  74. package/dist/client/{objects-DeK2WD5K.mjs → objects-C3azvW8m.mjs} +2019 -2023
  75. package/dist/client/{objects-DeK2WD5K.mjs.map → objects-C3azvW8m.mjs.map} +1 -1
  76. package/dist/client/{objects-DI1-tnKr.mjs → objects-CM265S6b.mjs} +2 -2
  77. package/dist/client/{objects-DI1-tnKr.mjs.map → objects-CM265S6b.mjs.map} +1 -1
  78. package/dist/client/{objects-D2MKUCxc.mjs → objects-EE9Cd1wI.mjs} +2 -2
  79. package/dist/client/{objects-D2MKUCxc.mjs.map → objects-EE9Cd1wI.mjs.map} +1 -1
  80. package/dist/client/{routeInfo-CdTRlSxv.mjs → routeInfo-DXqB2HCf.mjs} +3 -3
  81. package/dist/client/routeInfo-DXqB2HCf.mjs.map +1 -0
  82. package/dist/client/router.d.ts +2 -1
  83. package/dist/client/{routes-DOJr5onJ.mjs → routes-CBd8CCuM.mjs} +13 -13
  84. package/dist/client/{routes-DOJr5onJ.mjs.map → routes-CBd8CCuM.mjs.map} +1 -1
  85. package/dist/client/{routes-B05u5bk4.mjs → routes-CdDm-hhO.mjs} +2 -2
  86. package/dist/client/{routes-B05u5bk4.mjs.map → routes-CdDm-hhO.mjs.map} +1 -1
  87. package/dist/client/{securitygroups-Be2Qgmew.mjs → securitygroups-Bd_uV4S9.mjs} +198 -198
  88. package/dist/client/{securitygroups-Be2Qgmew.mjs.map → securitygroups-Bd_uV4S9.mjs.map} +1 -1
  89. package/dist/client/{securitygroups-_7SYN2jN.mjs → securitygroups-Byte-iSp.mjs} +2 -2
  90. package/dist/client/{securitygroups-_7SYN2jN.mjs.map → securitygroups-Byte-iSp.mjs.map} +1 -1
  91. package/dist/client/services-D1PbooD1.mjs +6 -0
  92. package/dist/client/services-D1PbooD1.mjs.map +1 -0
  93. package/dist/client/services-DEMVtFyn.mjs +9 -0
  94. package/dist/client/services-DEMVtFyn.mjs.map +1 -0
  95. package/dist/client/trpcClient.d.ts +18 -367
  96. package/dist/client/{useSecurityGroupPermissions-qPwm4mFt.mjs → useSecurityGroupPermissions-C29mzb3b.mjs} +15 -15
  97. package/dist/client/{useSecurityGroupPermissions-qPwm4mFt.mjs.map → useSecurityGroupPermissions-C29mzb3b.mjs.map} +1 -1
  98. package/dist/server/index.d.ts +43 -369
  99. package/dist/server/index.js +71 -276
  100. package/package.json +1 -3
  101. package/dist/client/AuthProvider-5TyZKZkx.mjs.map +0 -1
  102. package/dist/client/DeleteFlavorModal-C2K43ABZ.mjs.map +0 -1
  103. package/dist/client/DeletePcaModal-D9v8E0Ki.mjs +0 -92
  104. package/dist/client/DeletePcaModal-D9v8E0Ki.mjs.map +0 -1
  105. package/dist/client/DetailsInfo-h7rPJ4Jf.mjs +0 -61
  106. package/dist/client/DetailsInfo-h7rPJ4Jf.mjs.map +0 -1
  107. package/dist/client/ImageToastNotifications-C0Tluzq-.mjs +0 -1125
  108. package/dist/client/ImageToastNotifications-C0Tluzq-.mjs.map +0 -1
  109. package/dist/client/_imageId-CZYzBAVx.mjs +0 -558
  110. package/dist/client/_pcaId-CHRRsWmO.mjs +0 -605
  111. package/dist/client/_pcaId-CHRRsWmO.mjs.map +0 -1
  112. package/dist/client/_projectId-B8wWSxPu.mjs +0 -98
  113. package/dist/client/_projectId-B8wWSxPu.mjs.map +0 -1
  114. package/dist/client/_projectId-C5DUYIjt.mjs +0 -291
  115. package/dist/client/_projectId-C5DUYIjt.mjs.map +0 -1
  116. package/dist/client/_storageType-C-9bNkmZ.mjs +0 -2211
  117. package/dist/client/_storageType-C-9bNkmZ.mjs.map +0 -1
  118. package/dist/client/flavors-CwMbDRHm2.mjs.map +0 -1
  119. package/dist/client/images-DOGZmr3D.mjs +0 -1937
  120. package/dist/client/images-DOGZmr3D.mjs.map +0 -1
  121. package/dist/client/pca-BokFv4Gz.mjs +0 -239
  122. package/dist/client/pca-BokFv4Gz.mjs.map +0 -1
  123. package/dist/client/pca-D5jHAl0b.mjs +0 -26
  124. package/dist/client/pca-D5jHAl0b.mjs.map +0 -1
  125. package/dist/client/pcaAccess-Br4kVjLQ.mjs +0 -9
  126. package/dist/client/pcaAccess-Br4kVjLQ.mjs.map +0 -1
  127. package/dist/client/routeInfo-CdTRlSxv.mjs.map +0 -1
@@ -1,239 +0,0 @@
1
- import { B as e, C as t, E as n, G as r, I as i, S as a, Y as o, Z as s, _ as c, a as l, dt as u, f as d, h as f, k as p, m, rt as h, s as g, t as _ } from "./build-DnD-T35u.mjs";
2
- import { a as v } from "./trpcClient-D7gpR7YG.mjs";
3
- import { t as y } from "./pca-D5jHAl0b.mjs";
4
- import { t as b } from "./useProjectId-DBc5lpoU.mjs";
5
- import { f as x, n as S } from "./md-DNzcRhmz.mjs";
6
- import { t as C } from "./ContentHeader-D64NtKvo.mjs";
7
- import "./hooks-CrriowRk.mjs";
8
- import { t as w } from "./useModal-DCs1OJh7.mjs";
9
- import { t as T } from "./DeletePcaModal-D9v8E0Ki.mjs";
10
- import { Fragment as E, jsx as D, jsxs as O } from "react/jsx-runtime";
11
- import { useState as k } from "react";
12
- import { useNavigate as A } from "@tanstack/react-router";
13
- import { Trans as j, useLingui as M } from "@lingui/react";
14
- import { z as N } from "zod";
15
- import { useForm as P, useStore as F } from "@tanstack/react-form";
16
- //#region src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/PcaTableRow.tsx
17
- var I = ({ pca: e }) => {
18
- let { i18n: t, _: i } = M(), o = A(), s = b(), [l, u] = w(!1), f = () => o({
19
- to: "/projects/$projectId/services/pca/$pcaId",
20
- params: {
21
- projectId: s,
22
- pcaId: e.id
23
- }
24
- }), m = {
25
- CREATING: {
26
- text: t._({ id: "E9bKSA" }),
27
- icon: /*#__PURE__*/ D(r, { size: "18" })
28
- },
29
- AWAITING_CERTIFICATE: {
30
- text: t._({ id: "mB4LB4" }),
31
- icon: /*#__PURE__*/ D(d, {
32
- icon: "accessTime",
33
- size: 20,
34
- color: "#FBC02D"
35
- })
36
- },
37
- READY: {
38
- text: t._({ id: "ckH3fT" }),
39
- icon: /*#__PURE__*/ D(S, {
40
- size: 20,
41
- color: "white",
42
- fill: "#4FB81C"
43
- })
44
- },
45
- FAILED: {
46
- text: t._({ id: "7Bj3x9" }),
47
- icon: /*#__PURE__*/ D(x, {
48
- size: 20,
49
- color: "white",
50
- fill: "#D32F2F"
51
- })
52
- }
53
- };
54
- return /*#__PURE__*/ O(E, { children: [/*#__PURE__*/ O(n, {
55
- "data-testid": `pca-row-${e.id}`,
56
- onClick: f,
57
- children: [
58
- /*#__PURE__*/ D(_, { children: /*#__PURE__*/ O("div", {
59
- className: "flex items-center gap-2",
60
- children: [m[e.state].icon, m[e.state].text]
61
- }) }),
62
- /*#__PURE__*/ D(_, { children: e.id }),
63
- /*#__PURE__*/ D(_, { children: e.display_subject || "—" }),
64
- /*#__PURE__*/ D(_, {
65
- onClick: (e) => e.stopPropagation(),
66
- className: "items-end pr-0",
67
- children: /*#__PURE__*/ D(p, { children: /*#__PURE__*/ O(c, { children: [/*#__PURE__*/ D(a, {
68
- label: t._({ id: "v0hPHE" }),
69
- onClick: f
70
- }), /*#__PURE__*/ D(a, {
71
- label: t._({ id: "nzFJqC" }),
72
- onClick: u
73
- })] }) })
74
- })
75
- ]
76
- }, e.id), l && /*#__PURE__*/ D(T, {
77
- pca: e,
78
- open: l,
79
- onClose: u
80
- })] });
81
- }, L = /^(?=.{1,253}$)(?:\*\.)?(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,63}$/, R = (e) => L.test(e), z = ({ open: e, onClose: t }) => {
82
- let { i18n: n, _: a } = M(), s = A(), c = b(), l = v.useUtils(), { isPending: d, ...p } = v.services.pca.create.useMutation({ onSettled: () => l.services.pca.list.invalidate() }), h = N.object({ common_name: N.string().trim().min(1, n._({ id: "qhDo93" })).refine((e) => R(e), { message: n._({ id: "gy6L1u" }) }) }), g = P({
83
- defaultValues: { common_name: "" },
84
- validators: { onSubmit: h },
85
- onSubmit: async ({ value: e }) => {
86
- if (d) return;
87
- let t = await p.mutateAsync({
88
- project_id: c,
89
- configuration: { subject: { named_attributes: { cn: e.common_name } } }
90
- });
91
- _(), await s({
92
- to: "/projects/$projectId/services/pca/$pcaId",
93
- params: {
94
- projectId: c,
95
- pcaId: t.id
96
- }
97
- });
98
- }
99
- }), _ = () => {
100
- d || (g.reset(), p.reset(), t());
101
- }, y = F(g.store, (e) => e.isSubmitting || e.values.common_name.trim().length === 0);
102
- return /*#__PURE__*/ O(o, {
103
- open: e,
104
- size: "large",
105
- title: n._({ id: "WidMsn" }),
106
- onCancel: _,
107
- cancelButtonLabel: n._({ id: "dEgA5A" }),
108
- confirmButtonLabel: n._({ id: "tfDRzk" }),
109
- onConfirm: g.handleSubmit,
110
- disableConfirmButton: d || y,
111
- children: [
112
- p.error?.message && /*#__PURE__*/ D(i, {
113
- dismissible: !1,
114
- variant: "error",
115
- className: "mb-4",
116
- children: p.error.message
117
- }),
118
- d && /*#__PURE__*/ O("div", {
119
- className: "mb-4 flex items-center justify-center gap-2",
120
- children: [/*#__PURE__*/ D(r, { variant: "primary" }), /*#__PURE__*/ D("span", {
121
- className: "text-theme-high text-sm",
122
- children: /*#__PURE__*/ D(j, { id: "wdUvGT" })
123
- })]
124
- }),
125
- !d && /*#__PURE__*/ D(u, {
126
- className: "mb-0",
127
- id: "create-certificate-authority-form",
128
- onSubmit: (e) => {
129
- e.preventDefault(), g.handleSubmit();
130
- },
131
- children: /*#__PURE__*/ D(m, {
132
- className: "mb-4",
133
- children: /*#__PURE__*/ D(g.Field, {
134
- name: "common_name",
135
- children: (e) => /*#__PURE__*/ D(f, {
136
- id: e.name,
137
- name: e.name,
138
- value: e.state.value,
139
- onBlur: e.handleBlur,
140
- onChange: (t) => e.handleChange(t.target.value),
141
- label: n._({ id: "DHrCY6" }),
142
- placeholder: n._({ id: "RWQ6BN" }),
143
- helptext: n._({ id: "jVjr9h" }),
144
- errortext: e.state.meta.errors.map((e) => e?.message).join(", "),
145
- disabled: d
146
- })
147
- })
148
- })
149
- })
150
- ]
151
- });
152
- }, B = 50, V = () => {
153
- let { i18n: i, _: a } = M(), o = b(), [c, u] = w(!1), [d, f] = k([void 0]), [p, m] = k(1), y = d[p - 1], { data: x, isLoading: S, isError: C, error: T } = v.services.pca.list.useQuery({
154
- project_id: o,
155
- limit: B,
156
- next_page_marker: y
157
- }), A = x?.certificate_authorities ?? [], N = x?.next_page_marker, P = N ? p + 1 : p, F = Math.max(P, d.length), L = (e) => {
158
- e < 1 || e > F || (e > p && N && f((t) => {
159
- let n = [...t];
160
- return n[e - 1] = N, n;
161
- }), m(e));
162
- };
163
- if (S) return /*#__PURE__*/ O(s, {
164
- className: "py-8",
165
- distribution: "center",
166
- alignment: "center",
167
- direction: "vertical",
168
- children: [/*#__PURE__*/ D(r, {
169
- variant: "primary",
170
- size: "large",
171
- className: "mb-2"
172
- }), /*#__PURE__*/ D(j, { id: "Z3FXyt" })]
173
- });
174
- if (C) return /*#__PURE__*/ D(s, {
175
- className: "py-8",
176
- distribution: "center",
177
- alignment: "center",
178
- direction: "vertical",
179
- children: T?.message ?? i._({ id: "Sf3Gvg" })
180
- });
181
- let R = [
182
- i._({ id: "RS0o7b" }),
183
- i._({ id: "S0kLOH" }),
184
- i._({ id: "QGFuw+" }),
185
- ""
186
- ], V = R.length;
187
- return /*#__PURE__*/ O("div", {
188
- className: "relative",
189
- children: [
190
- /*#__PURE__*/ D(s, {
191
- className: "pt-3 pb-2",
192
- distribution: "end",
193
- children: /*#__PURE__*/ D(l, {
194
- variant: "primary",
195
- label: i._({ id: "WidMsn" }),
196
- onClick: u
197
- })
198
- }),
199
- A.length === 0 && p === 1 ? /*#__PURE__*/ D(g, {
200
- columns: V,
201
- className: "pca",
202
- "data-testid": "no-pcas",
203
- children: /*#__PURE__*/ D(n, { children: /*#__PURE__*/ O(_, {
204
- colSpan: V,
205
- children: [/*#__PURE__*/ D(h, { children: /*#__PURE__*/ D(j, { id: "8S2nDL" }) }), /*#__PURE__*/ D("p", { children: /*#__PURE__*/ D(j, { id: "ng+PCh" }) })]
206
- }) })
207
- }) : /*#__PURE__*/ O(E, { children: [/*#__PURE__*/ O(g, {
208
- columns: V,
209
- children: [/*#__PURE__*/ D(n, { children: R.map((e) => /*#__PURE__*/ D(t, { children: e }, e)) }), A.map((e) => /*#__PURE__*/ D(I, { pca: e }, e.id))]
210
- }), F > 1 && /*#__PURE__*/ D("div", {
211
- className: "flex justify-center py-4",
212
- children: /*#__PURE__*/ D(e, {
213
- variant: "input",
214
- currentPage: p,
215
- pages: F,
216
- onPressPrevious: () => L(p - 1),
217
- onPressNext: () => L(p + 1)
218
- })
219
- })] }),
220
- c && /*#__PURE__*/ D(z, {
221
- open: c,
222
- onClose: u
223
- })
224
- ]
225
- });
226
- };
227
- //#endregion
228
- //#region src/client/routes/_auth/projects/$projectId/services/pca/index.tsx?tsr-split=component
229
- function H() {
230
- let { i18n: e, _: t } = M(), { projectId: n } = y.useParams();
231
- return /*#__PURE__*/ O(E, { children: [/*#__PURE__*/ D(C, {
232
- title: e._({ id: "ffw//c" }),
233
- projectId: n
234
- }), /*#__PURE__*/ D(V, {})] });
235
- }
236
- //#endregion
237
- export { H as component };
238
-
239
- //# sourceMappingURL=pca-BokFv4Gz.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pca-BokFv4Gz.mjs","names":["MdCheckCircle","MdReportProblem","useNavigate","DataGridCell","DataGridRow","Icon","PopupMenu","PopupMenuItem","PopupMenuOptions","Spinner","useModal","useProjectId","DeletePcaModal","PcaTableRow","pca","useLingui","navigate","projectId","deletePcaModalOpen","toggleDeletePcaModal","navigateToDetailsPage","to","params","pcaId","id","STATE_CONFIG","CREATING","text","t","icon","size","AWAITING_CERTIFICATE","color","READY","fill","FAILED","data-testid","onClick","div","className","state","display_subject","e","stopPropagation","label","open","onClose","z","useForm","useStore","useNavigate","Modal","Form","FormSection","Spinner","TextInput","Message","trpcReact","useProjectId","csrRegex","isValidCommonName","value","test","CreatePcaModal","open","onClose","useLingui","navigate","projectId","utils","useUtils","isPending","createPcaMutation","services","pca","create","useMutation","onSettled","list","invalidate","formSchema","object","common_name","string","trim","min","t","refine","message","form","defaultValues","validators","onSubmit","createdPca","mutateAsync","project_id","configuration","subject","named_attributes","cn","handleClose","to","params","pcaId","id","reset","isCreateDisabled","store","state","isSubmitting","values","length","size","title","onCancel","cancelButtonLabel","confirmButtonLabel","onConfirm","handleSubmit","disableConfirmButton","error","dismissible","variant","className","div","span","e","preventDefault","Field","name","children","field","onBlur","handleBlur","onChange","handleChange","target","label","placeholder","helptext","errortext","meta","errors","map","join","disabled","useState","Stack","Spinner","DataGrid","DataGridRow","DataGridCell","ContentHeading","DataGridHeadCell","Button","Pagination","trpcReact","useProjectId","useModal","PcaTableRow","CreatePcaModal","ITEMS_PER_PAGE","PcaListContainer","useLingui","projectId","createCaOpen","toggleCreateCa","pageMarkers","setPageMarkers","undefined","currentPage","setCurrentPage","currentMarker","data","isLoading","isError","error","services","pca","list","useQuery","project_id","limit","next_page_marker","pcas","certificate_authorities","nextMarker","computedTotal","totalPages","Math","max","length","goToPage","page","prev","updated","className","distribution","alignment","direction","variant","size","message","t","TABLE_COLUMNS","columnsLength","div","label","onClick","columns","data-testid","colSpan","p","map","id","pages","onPressPrevious","onPressNext","open","onClose","useLingui","ContentHeader","PcaListContainer","Route","RouteComponent","t","projectId","useParams","component"],"sources":["../../src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/PcaTableRow.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/-components/-modals/CreatePcaModal.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/-components/-table/PcaListContainer.tsx","../../src/client/routes/_auth/projects/$projectId/services/pca/index.tsx?tsr-split=component"],"sourcesContent":["import { MdCheckCircle, MdReportProblem } from \"react-icons/md\"\nimport { useNavigate } from \"@tanstack/react-router\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport {\n DataGridCell,\n DataGridRow,\n Icon,\n PopupMenu,\n PopupMenuItem,\n PopupMenuOptions,\n Spinner,\n} from \"@cloudoperators/juno-ui-components\"\nimport { CertificateAuthority } from \"@/server/Services/types/pca\"\nimport { useModal } from \"@/client/utils/useModal\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { DeletePcaModal } from \"../-modals/DeletePcaModal\"\n\ninterface PcaTableRowProps {\n pca: CertificateAuthority\n}\n\nexport const PcaTableRow = ({ pca }: PcaTableRowProps) => {\n const { t } = useLingui()\n const navigate = useNavigate()\n const projectId = useProjectId()\n const [deletePcaModalOpen, toggleDeletePcaModal] = useModal(false)\n\n const navigateToDetailsPage = () =>\n navigate({\n to: \"/projects/$projectId/services/pca/$pcaId\",\n params: { projectId, pcaId: pca.id },\n })\n\n const STATE_CONFIG = {\n CREATING: {\n text: t`Creating`,\n icon: <Spinner size=\"18\" />,\n },\n AWAITING_CERTIFICATE: {\n text: t`Awaiting Certificate`,\n icon: <Icon icon=\"accessTime\" size={20} color=\"#FBC02D\" />,\n },\n READY: {\n text: t`Ready`,\n icon: <MdCheckCircle size={20} color=\"white\" fill=\"#4FB81C\" />,\n },\n FAILED: {\n text: t`Failed`,\n icon: <MdReportProblem size={20} color=\"white\" fill=\"#D32F2F\" />,\n },\n } as const\n\n return (\n <>\n <DataGridRow key={pca.id} data-testid={`pca-row-${pca.id}`} onClick={navigateToDetailsPage}>\n <DataGridCell>\n <div className=\"flex items-center gap-2\">\n {STATE_CONFIG[pca.state].icon}\n {STATE_CONFIG[pca.state].text}\n </div>\n </DataGridCell>\n <DataGridCell>{pca.id}</DataGridCell>\n <DataGridCell>{pca.display_subject || \"—\"}</DataGridCell>\n <DataGridCell onClick={(e) => e.stopPropagation()} className=\"items-end pr-0\">\n <PopupMenu>\n <PopupMenuOptions>\n <PopupMenuItem label={t`Show Details`} onClick={navigateToDetailsPage} />\n <PopupMenuItem label={t`Delete CA`} onClick={toggleDeletePcaModal} />\n </PopupMenuOptions>\n </PopupMenu>\n </DataGridCell>\n </DataGridRow>\n\n {deletePcaModalOpen && <DeletePcaModal pca={pca} open={deletePcaModalOpen} onClose={toggleDeletePcaModal} />}\n </>\n )\n}\n","import { z } from \"zod\"\nimport { useForm, useStore } from \"@tanstack/react-form\"\nimport { useNavigate } from \"@tanstack/react-router\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { Modal, Form, FormSection, Spinner, TextInput, Message } from \"@cloudoperators/juno-ui-components\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\n\ninterface CreatePcaModalProps {\n open: boolean\n onClose: () => void\n}\n\nconst csrRegex = /^(?=.{1,253}$)(?:\\*\\.)?(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$/\nconst isValidCommonName = (value: string) => csrRegex.test(value)\n\nexport const CreatePcaModal = ({ open, onClose }: CreatePcaModalProps) => {\n const { t } = useLingui()\n const navigate = useNavigate()\n const projectId = useProjectId()\n const utils = trpcReact.useUtils()\n\n const { isPending, ...createPcaMutation } = trpcReact.services.pca.create.useMutation({\n onSettled: () => utils.services.pca.list.invalidate(),\n })\n\n const formSchema = z.object({\n common_name: z\n .string()\n .trim()\n .min(1, t`Common name is required.`)\n .refine((value) => isValidCommonName(value), { message: t`Must be a valid common name (FQDN).` }),\n })\n\n const form = useForm({\n defaultValues: {\n common_name: \"\",\n },\n validators: {\n onSubmit: formSchema,\n },\n onSubmit: async ({ value }) => {\n if (isPending) return\n\n const createdPca = await createPcaMutation.mutateAsync({\n project_id: projectId,\n configuration: {\n subject: {\n named_attributes: {\n cn: value.common_name,\n },\n },\n },\n })\n handleClose()\n\n await navigate({\n to: \"/projects/$projectId/services/pca/$pcaId\",\n params: { projectId, pcaId: createdPca.id },\n })\n },\n })\n\n const handleClose = () => {\n if (isPending) return\n\n form.reset()\n createPcaMutation.reset()\n onClose()\n }\n\n // Reactive subscription used to control create action disabled state.\n const isCreateDisabled = useStore(\n form.store,\n (state) => state.isSubmitting || state.values.common_name.trim().length === 0\n )\n\n return (\n <Modal\n open={open}\n size=\"large\"\n title={t`Create Certificate Authority`}\n onCancel={handleClose}\n cancelButtonLabel={t`Cancel`}\n confirmButtonLabel={t`Save`}\n onConfirm={form.handleSubmit}\n disableConfirmButton={isPending || isCreateDisabled}\n >\n {createPcaMutation.error?.message && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {createPcaMutation.error.message}\n </Message>\n )}\n\n {isPending && (\n <div className=\"mb-4 flex items-center justify-center gap-2\">\n <Spinner variant=\"primary\" />\n <span className=\"text-theme-high text-sm\">\n <Trans>Creating Certificate Authority...</Trans>\n </span>\n </div>\n )}\n\n {!isPending && (\n <Form\n className=\"mb-0\"\n id=\"create-certificate-authority-form\"\n onSubmit={(e) => {\n e.preventDefault()\n form.handleSubmit()\n }}\n >\n <FormSection className=\"mb-4\">\n <form.Field\n name=\"common_name\"\n children={(field) => (\n <TextInput\n id={field.name}\n name={field.name}\n value={field.state.value}\n onBlur={field.handleBlur}\n onChange={(e) => field.handleChange(e.target.value)}\n label={t`Common name`}\n placeholder={t`Enter Common name (e.g., demo-ca.test.sci)`}\n helptext={t`Enter a valid common name in FQDN format (e.g., demo-ca.test.sci).`}\n errortext={field.state.meta.errors.map((e) => e?.message).join(\", \")}\n disabled={isPending}\n />\n )}\n />\n </FormSection>\n </Form>\n )}\n </Modal>\n )\n}\n","import { Trans, useLingui } from \"@lingui/react/macro\"\nimport { useState } from \"react\"\nimport {\n Stack,\n Spinner,\n DataGrid,\n DataGridRow,\n DataGridCell,\n ContentHeading,\n DataGridHeadCell,\n Button,\n Pagination,\n} from \"@cloudoperators/juno-ui-components\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { useModal } from \"@/client/utils/useModal\"\nimport { PcaTableRow } from \"./PcaTableRow\"\nimport { CreatePcaModal } from \"../-modals/CreatePcaModal\"\n\nconst ITEMS_PER_PAGE = 50\n\nexport const PcaListContainer = () => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const [createCaOpen, toggleCreateCa] = useModal(false)\n const [pageMarkers, setPageMarkers] = useState<(string | undefined)[]>([undefined])\n const [currentPage, setCurrentPage] = useState(1)\n const currentMarker = pageMarkers[currentPage - 1]\n\n const { data, isLoading, isError, error } = trpcReact.services.pca.list.useQuery({\n project_id: projectId,\n limit: ITEMS_PER_PAGE,\n next_page_marker: currentMarker,\n })\n\n const pcas = data?.certificate_authorities ?? []\n const nextMarker = data?.next_page_marker\n const computedTotal = nextMarker ? currentPage + 1 : currentPage\n const totalPages = Math.max(computedTotal, pageMarkers.length)\n\n const goToPage = (page: number) => {\n if (page < 1 || page > totalPages) return\n if (page > currentPage && nextMarker) {\n setPageMarkers((prev) => {\n const updated = [...prev]\n updated[page - 1] = nextMarker\n return updated\n })\n }\n setCurrentPage(page)\n }\n\n if (isLoading) {\n return (\n <Stack className=\"py-8\" distribution=\"center\" alignment=\"center\" direction=\"vertical\">\n <Spinner variant=\"primary\" size=\"large\" className=\"mb-2\" />\n <Trans>Loading...</Trans>\n </Stack>\n )\n }\n\n if (isError) {\n return (\n <Stack className=\"py-8\" distribution=\"center\" alignment=\"center\" direction=\"vertical\">\n {error?.message ?? t`Failed to load PCAs`}\n </Stack>\n )\n }\n\n const TABLE_COLUMNS = [\n t`State`,\n t`ID`,\n t`Subject Information`,\n \"\", // empty column for item-action with context menu containing \"Delete CA\" button\n ] as const\n const columnsLength = TABLE_COLUMNS.length\n\n return (\n <div className=\"relative\">\n <Stack className=\"pt-3 pb-2\" distribution=\"end\">\n <Button variant=\"primary\" label={t`Create Certificate Authority`} onClick={toggleCreateCa} />\n </Stack>\n\n {pcas.length === 0 && currentPage === 1 ? (\n <DataGrid columns={columnsLength} className=\"pca\" data-testid=\"no-pcas\">\n <DataGridRow>\n <DataGridCell colSpan={columnsLength}>\n <ContentHeading>\n <Trans>No PCAs found</Trans>\n </ContentHeading>\n <p>\n <Trans>There are no PCAs available for this project.</Trans>\n </p>\n </DataGridCell>\n </DataGridRow>\n </DataGrid>\n ) : (\n <>\n <DataGrid columns={columnsLength}>\n <DataGridRow>\n {TABLE_COLUMNS.map((label) => (\n <DataGridHeadCell key={label}>{label}</DataGridHeadCell>\n ))}\n </DataGridRow>\n {pcas.map((pca) => (\n <PcaTableRow key={pca.id} pca={pca} />\n ))}\n </DataGrid>\n\n {totalPages > 1 && (\n <div className=\"flex justify-center py-4\">\n <Pagination\n variant=\"input\"\n currentPage={currentPage}\n pages={totalPages}\n onPressPrevious={() => goToPage(currentPage - 1)}\n onPressNext={() => goToPage(currentPage + 1)}\n />\n </div>\n )}\n </>\n )}\n\n {createCaOpen && <CreatePcaModal open={createCaOpen} onClose={toggleCreateCa} />}\n </div>\n )\n}\n","import { createFileRoute, redirect } from \"@tanstack/react-router\"\nimport { t } from \"@lingui/core/macro\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { ContentHeader } from \"@/client/components/ContentHeader/ContentHeader\"\nimport { canAccessClavisPca } from \"./-components/pcaAccess\"\nimport { PcaListContainer } from \"./-components/-table/PcaListContainer\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/services/pca/\")({\n staticData: {\n section: \"services\",\n service: \"pca\",\n analytics: {\n name: \"services.pca.list\",\n },\n sectionCrumb: { labelKey: \"Services\" },\n crumb: { labelKey: \"PCA (Clavis)\" },\n } satisfies RouteInfo,\n head: () => ({ meta: [{ title: t`PCA` }] }),\n beforeLoad: async ({ context, params }) => {\n const availableServices = (await context.trpcClient?.auth.getAvailableServices.query()) || []\n const serviceIndex = getServiceIndex(availableServices)\n\n if (!canAccessClavisPca(serviceIndex, context.enabledServices)) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId: params.projectId },\n })\n }\n },\n component: RouteComponent,\n})\n\nfunction RouteComponent() {\n const { t } = useLingui()\n const { projectId } = Route.useParams()\n\n return (\n <>\n <ContentHeader title={t`PCA`} projectId={projectId} />\n <PcaListContainer />\n </>\n )\n}\n"],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import { t as e } from "./helpers-1PpYf-fC.mjs";
2
- import { t } from "./pcaAccess-Br4kVjLQ.mjs";
3
- import { createFileRoute as n, lazyRouteComponent as r, redirect as i } from "@tanstack/react-router";
4
- import { i18n as a } from "@lingui/core";
5
- var o = n("/_auth/projects/$projectId/services/pca/")({
6
- staticData: {
7
- section: "services",
8
- service: "pca",
9
- analytics: { name: "services.pca.list" },
10
- sectionCrumb: { labelKey: "Services" },
11
- crumb: { labelKey: "PCA (Clavis)" }
12
- },
13
- head: () => ({ meta: [{ title: a._({ id: "ffw//c" }) }] }),
14
- beforeLoad: async ({ context: n, params: r }) => {
15
- let a = await n.trpcClient?.auth.getAvailableServices.query() || [], o = e(a);
16
- if (!t(o, n.enabledServices)) throw i({
17
- to: "/projects/$projectId",
18
- params: { projectId: r.projectId }
19
- });
20
- },
21
- component: r(() => import("./pca-BokFv4Gz.mjs"), "component")
22
- });
23
- //#endregion
24
- export { o as t };
25
-
26
- //# sourceMappingURL=pca-D5jHAl0b.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pca-D5jHAl0b.mjs","names":["createFileRoute","redirect","t","getServiceIndex","canAccessClavisPca","Route","staticData","section","service","analytics","name","sectionCrumb","labelKey","crumb","RouteInfo","head","meta","title","beforeLoad","context","params","availableServices","trpcClient","auth","getAvailableServices","query","serviceIndex","enabledServices","to","projectId","component","lazyRouteComponent","$$splitComponentImporter"],"sources":["../../src/client/routes/_auth/projects/$projectId/services/pca/index.tsx"],"sourcesContent":["import { createFileRoute, redirect } from \"@tanstack/react-router\"\nimport { t } from \"@lingui/core/macro\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport { getServiceIndex } from \"@/server/Authentication/helpers\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { ContentHeader } from \"@/client/components/ContentHeader/ContentHeader\"\nimport { canAccessClavisPca } from \"./-components/pcaAccess\"\nimport { PcaListContainer } from \"./-components/-table/PcaListContainer\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/services/pca/\")({\n staticData: {\n section: \"services\",\n service: \"pca\",\n analytics: {\n name: \"services.pca.list\",\n },\n sectionCrumb: { labelKey: \"Services\" },\n crumb: { labelKey: \"PCA (Clavis)\" },\n } satisfies RouteInfo,\n head: () => ({ meta: [{ title: t`PCA` }] }),\n beforeLoad: async ({ context, params }) => {\n const availableServices = (await context.trpcClient?.auth.getAvailableServices.query()) || []\n const serviceIndex = getServiceIndex(availableServices)\n\n if (!canAccessClavisPca(serviceIndex, context.enabledServices)) {\n throw redirect({\n to: \"/projects/$projectId\",\n params: { projectId: params.projectId },\n })\n }\n },\n component: RouteComponent,\n})\n\nfunction RouteComponent() {\n const { t } = useLingui()\n const { projectId } = Route.useParams()\n\n return (\n <>\n <ContentHeader title={t`PCA`} projectId={projectId} />\n <PcaListContainer />\n </>\n )\n}\n"],"mappings":";;;;AASA,IAAaK,IAAQL,EAAgB,0CAAA,CAAA,CAA4C;CAC/EM,YAAY;EACVC,SAAS;EACTC,SAAS;EACTC,WAAW,EACTC,MAAM,oBACR;EACAC,cAAc,EAAEC,UAAU,WAAW;EACrCC,OAAO,EAAED,UAAU,eAAe;CACpC;CACAG,aAAa,EAAEC,MAAM,CAAC,EAAEC,OAAOf,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA,EAAM,CAAC,EAAE;CACzCgB,YAAY,OAAO,EAAEC,YAASC,gBAAQ;EACpC,IAAMC,IAAoB,MAAOF,EAAQG,YAAYC,KAAKC,qBAAqBC,MAAAA,KAAY,CAAA,GACrFC,IAAevB,EAAgBkB,CAAAA;EAErC,IAAI,CAACjB,EAAmBsB,GAAcP,EAAQQ,eAAe,GAC3D,MAAM1B,EAAS;GACb2B,IAAI;GACJR,QAAQ,EAAES,WAAWT,EAAOS,UAAU;EACxC,CAAA;CAEJ;CACAC,WAASC,sCAAA,WAAA;AACX,CAAA"}
@@ -1,9 +0,0 @@
1
- //#region src/client/routes/_auth/projects/$projectId/services/pca/-components/pcaAccess.ts
2
- var e = (e, t) => {
3
- let n = !t || t.includes("pca");
4
- return e.pca?.clavis && n;
5
- };
6
- //#endregion
7
- export { e as t };
8
-
9
- //# sourceMappingURL=pcaAccess-Br4kVjLQ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pcaAccess-Br4kVjLQ.mjs","names":["canAccessClavisPca","serviceIndex","enabledServices","isPcaEnabled","includes"],"sources":["../../src/client/routes/_auth/projects/$projectId/services/pca/-components/pcaAccess.ts"],"sourcesContent":["import type { getServiceIndex } from \"@/server/Authentication/helpers\"\n\ntype ServiceIndex = ReturnType<typeof getServiceIndex>\n\nexport const canAccessClavisPca = (serviceIndex: ServiceIndex, enabledServices?: string[]) => {\n const isPcaEnabled = !enabledServices || enabledServices.includes(\"pca\")\n return serviceIndex[\"pca\"]?.[\"clavis\"] && isPcaEnabled\n}\n"],"mappings":";AAIA,IAAaA,KAAsBC,GAA4BC,MAAAA;CAC7D,IAAMC,IAAe,CAACD,KAAmBA,EAAgBE,SAAS,KAAA;CAClE,OAAOH,EAAa,KAAS,UAAaE;AAC5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"routeInfo-CdTRlSxv.mjs","names":["z","CRUMB_LABEL_KEYS","CrumbSchema","object","labelKey","enum","optional","to","string","useParamAsLabel","useParentTitleAsLabel","boolean","AnalyticsSchema","name","RouteInfoSchema","section","service","isDetail","crumb","sectionCrumb","intermediateCrumb","analytics","isRouteInfo","data","safeParse","success"],"sources":["../../src/client/routes/routeInfo.ts"],"sourcesContent":["import { z } from \"zod\"\n\nexport const CRUMB_LABEL_KEYS = [\n \"Compute\",\n \"Network\",\n \"Storage\",\n \"Services\",\n \"Images\",\n \"Flavors\",\n \"Security Groups\",\n \"Floating IPs\",\n \"PCA (Clavis)\",\n] as const\n\nexport type CrumbLabelKey = (typeof CRUMB_LABEL_KEYS)[number]\n\nconst CrumbSchema = z.object({\n labelKey: z.enum(CRUMB_LABEL_KEYS).optional(),\n to: z.string().optional(),\n useParamAsLabel: z.string().optional(),\n useParentTitleAsLabel: z.boolean().optional(),\n})\n\nconst AnalyticsSchema = z.object({\n name: z.string(),\n})\n\nconst RouteInfoSchema = z.object({\n section: z.string().optional(),\n service: z.string().optional(),\n isDetail: z.boolean().optional(),\n crumb: CrumbSchema.optional(),\n sectionCrumb: CrumbSchema.optional(),\n intermediateCrumb: CrumbSchema.optional(),\n analytics: AnalyticsSchema.optional(),\n})\n\nexport type Crumb = z.infer<typeof CrumbSchema>\nexport type Analytics = z.infer<typeof AnalyticsSchema>\nexport type RouteInfo = z.infer<typeof RouteInfoSchema>\n\nexport function isRouteInfo(data: unknown): data is RouteInfo {\n return RouteInfoSchema.safeParse(data).success\n}\n"],"mappings":";AAgBA,IAAME,IAAcF,EAAEG,OAAO;CAC3BC,UAAUJ,EAAEK,KAAKJ;EAdjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAMiBA,CAAAA,CAAAA,CAAkBK,SAAQ;CAC3CC,IAAIP,EAAEQ,OAAM,CAAA,CAAGF,SAAQ;CACvBG,iBAAiBT,EAAEQ,OAAM,CAAA,CAAGF,SAAQ;CACpCI,uBAAuBV,EAAEW,QAAO,CAAA,CAAGL,SAAQ;AAC7C,CAAA,GAEMM,IAAkBZ,EAAEG,OAAO,EAC/BU,MAAMb,EAAEQ,OAAM,EAChB,CAAA,GAEMM,IAAkBd,EAAEG,OAAO;CAC/BY,SAASf,EAAEQ,OAAM,CAAA,CAAGF,SAAQ;CAC5BU,SAAShB,EAAEQ,OAAM,CAAA,CAAGF,SAAQ;CAC5BW,UAAUjB,EAAEW,QAAO,CAAA,CAAGL,SAAQ;CAC9BY,OAAOhB,EAAYI,SAAQ;CAC3Ba,cAAcjB,EAAYI,SAAQ;CAClCc,mBAAmBlB,EAAYI,SAAQ;CACvCe,WAAWT,EAAgBN,SAAQ;AACrC,CAAA;AAMA,SAAgBgB,EAAYC,GAAa;CACvC,OAAOT,EAAgBU,UAAUD,CAAAA,CAAAA,CAAME;AACzC"}