@oneuptime/common 10.0.93 → 10.0.94

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 (136) hide show
  1. package/Models/DatabaseModels/DockerResource.ts +497 -0
  2. package/Models/DatabaseModels/Index.ts +2 -0
  3. package/Models/DatabaseModels/Monitor.ts +83 -0
  4. package/Server/API/MonitorTemplateAPI.ts +182 -0
  5. package/Server/Infrastructure/Postgres/SchemaMigrations/1777933061000-MigrationName.ts +41 -0
  6. package/Server/Infrastructure/Postgres/SchemaMigrations/1777972687018-MigrationName.ts +69 -0
  7. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  8. package/Server/Services/BillingInvoiceService.ts +18 -29
  9. package/Server/Services/DockerResourceService.ts +310 -0
  10. package/Server/Services/MonitorTemplateService.ts +359 -0
  11. package/Types/Dashboard/DashboardComponentType.ts +13 -0
  12. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +16 -0
  13. package/Types/Dashboard/DashboardComponents/DashboardAlertListComponent.ts +4 -0
  14. package/Types/Dashboard/DashboardComponents/DashboardDockerContainerListComponent.ts +15 -0
  15. package/Types/Dashboard/DashboardComponents/DashboardDockerHostListComponent.ts +14 -0
  16. package/Types/Dashboard/DashboardComponents/DashboardDockerImageListComponent.ts +15 -0
  17. package/Types/Dashboard/DashboardComponents/DashboardDockerNetworkListComponent.ts +14 -0
  18. package/Types/Dashboard/DashboardComponents/DashboardDockerVolumeListComponent.ts +14 -0
  19. package/Types/Dashboard/DashboardComponents/DashboardIncidentListComponent.ts +4 -0
  20. package/Types/Dashboard/DashboardComponents/DashboardKubernetesCronJobListComponent.ts +15 -0
  21. package/Types/Dashboard/DashboardComponents/DashboardKubernetesDaemonSetListComponent.ts +15 -0
  22. package/Types/Dashboard/DashboardComponents/DashboardKubernetesDeploymentListComponent.ts +15 -0
  23. package/Types/Dashboard/DashboardComponents/DashboardKubernetesJobListComponent.ts +15 -0
  24. package/Types/Dashboard/DashboardComponents/DashboardKubernetesNamespaceListComponent.ts +14 -0
  25. package/Types/Dashboard/DashboardComponents/DashboardKubernetesNodeListComponent.ts +15 -0
  26. package/Types/Dashboard/DashboardComponents/DashboardKubernetesPodListComponent.ts +16 -0
  27. package/Types/Dashboard/DashboardComponents/DashboardKubernetesStatefulSetListComponent.ts +15 -0
  28. package/Types/Dashboard/DashboardComponents/DashboardMonitorListComponent.ts +3 -0
  29. package/Types/Docker/DockerInventoryExtractor.ts +343 -0
  30. package/Utils/Dashboard/Components/DashboardAlertListComponent.ts +47 -2
  31. package/Utils/Dashboard/Components/DashboardDockerContainerListComponent.ts +93 -0
  32. package/Utils/Dashboard/Components/DashboardDockerHostListComponent.ts +83 -0
  33. package/Utils/Dashboard/Components/DashboardDockerImageListComponent.ts +92 -0
  34. package/Utils/Dashboard/Components/DashboardDockerNetworkListComponent.ts +82 -0
  35. package/Utils/Dashboard/Components/DashboardDockerVolumeListComponent.ts +82 -0
  36. package/Utils/Dashboard/Components/DashboardIncidentListComponent.ts +47 -2
  37. package/Utils/Dashboard/Components/DashboardKubernetesCronJobListComponent.ts +36 -0
  38. package/Utils/Dashboard/Components/DashboardKubernetesDaemonSetListComponent.ts +36 -0
  39. package/Utils/Dashboard/Components/DashboardKubernetesDeploymentListComponent.ts +36 -0
  40. package/Utils/Dashboard/Components/DashboardKubernetesJobListComponent.ts +34 -0
  41. package/Utils/Dashboard/Components/DashboardKubernetesNamespaceListComponent.ts +36 -0
  42. package/Utils/Dashboard/Components/DashboardKubernetesNodeListComponent.ts +57 -0
  43. package/Utils/Dashboard/Components/DashboardKubernetesPodListComponent.ts +60 -0
  44. package/Utils/Dashboard/Components/DashboardKubernetesResourceListShared.ts +75 -0
  45. package/Utils/Dashboard/Components/DashboardKubernetesStatefulSetListComponent.ts +36 -0
  46. package/Utils/Dashboard/Components/DashboardMonitorListComponent.ts +59 -2
  47. package/Utils/Dashboard/Components/Index.ts +102 -0
  48. package/build/dist/Models/DatabaseModels/DockerResource.js +525 -0
  49. package/build/dist/Models/DatabaseModels/DockerResource.js.map +1 -0
  50. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  51. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  52. package/build/dist/Models/DatabaseModels/Monitor.js +82 -0
  53. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  54. package/build/dist/Server/API/MonitorTemplateAPI.js +108 -0
  55. package/build/dist/Server/API/MonitorTemplateAPI.js.map +1 -0
  56. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777933061000-MigrationName.js +20 -0
  57. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777933061000-MigrationName.js.map +1 -0
  58. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777972687018-MigrationName.js +30 -0
  59. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777972687018-MigrationName.js.map +1 -0
  60. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  61. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  62. package/build/dist/Server/Services/BillingInvoiceService.js +22 -25
  63. package/build/dist/Server/Services/BillingInvoiceService.js.map +1 -1
  64. package/build/dist/Server/Services/DockerResourceService.js +196 -0
  65. package/build/dist/Server/Services/DockerResourceService.js.map +1 -0
  66. package/build/dist/Server/Services/MonitorTemplateService.js +290 -0
  67. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  68. package/build/dist/Types/Dashboard/DashboardComponentType.js +13 -0
  69. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  70. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +15 -0
  71. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  72. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerContainerListComponent.js +2 -0
  73. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerContainerListComponent.js.map +1 -0
  74. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerHostListComponent.js +2 -0
  75. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerHostListComponent.js.map +1 -0
  76. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerImageListComponent.js +2 -0
  77. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerImageListComponent.js.map +1 -0
  78. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerNetworkListComponent.js +2 -0
  79. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerNetworkListComponent.js.map +1 -0
  80. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerVolumeListComponent.js +2 -0
  81. package/build/dist/Types/Dashboard/DashboardComponents/DashboardDockerVolumeListComponent.js.map +1 -0
  82. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesCronJobListComponent.js +2 -0
  83. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesCronJobListComponent.js.map +1 -0
  84. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesDaemonSetListComponent.js +2 -0
  85. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesDaemonSetListComponent.js.map +1 -0
  86. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesDeploymentListComponent.js +2 -0
  87. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesDeploymentListComponent.js.map +1 -0
  88. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesJobListComponent.js +2 -0
  89. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesJobListComponent.js.map +1 -0
  90. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesNamespaceListComponent.js +2 -0
  91. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesNamespaceListComponent.js.map +1 -0
  92. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesNodeListComponent.js +2 -0
  93. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesNodeListComponent.js.map +1 -0
  94. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesPodListComponent.js +2 -0
  95. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesPodListComponent.js.map +1 -0
  96. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesStatefulSetListComponent.js +2 -0
  97. package/build/dist/Types/Dashboard/DashboardComponents/DashboardKubernetesStatefulSetListComponent.js.map +1 -0
  98. package/build/dist/Types/Docker/DockerInventoryExtractor.js +293 -0
  99. package/build/dist/Types/Docker/DockerInventoryExtractor.js.map +1 -0
  100. package/build/dist/Utils/Dashboard/Components/DashboardAlertListComponent.js +43 -3
  101. package/build/dist/Utils/Dashboard/Components/DashboardAlertListComponent.js.map +1 -1
  102. package/build/dist/Utils/Dashboard/Components/DashboardDockerContainerListComponent.js +75 -0
  103. package/build/dist/Utils/Dashboard/Components/DashboardDockerContainerListComponent.js.map +1 -0
  104. package/build/dist/Utils/Dashboard/Components/DashboardDockerHostListComponent.js +69 -0
  105. package/build/dist/Utils/Dashboard/Components/DashboardDockerHostListComponent.js.map +1 -0
  106. package/build/dist/Utils/Dashboard/Components/DashboardDockerImageListComponent.js +75 -0
  107. package/build/dist/Utils/Dashboard/Components/DashboardDockerImageListComponent.js.map +1 -0
  108. package/build/dist/Utils/Dashboard/Components/DashboardDockerNetworkListComponent.js +66 -0
  109. package/build/dist/Utils/Dashboard/Components/DashboardDockerNetworkListComponent.js.map +1 -0
  110. package/build/dist/Utils/Dashboard/Components/DashboardDockerVolumeListComponent.js +66 -0
  111. package/build/dist/Utils/Dashboard/Components/DashboardDockerVolumeListComponent.js.map +1 -0
  112. package/build/dist/Utils/Dashboard/Components/DashboardIncidentListComponent.js +43 -3
  113. package/build/dist/Utils/Dashboard/Components/DashboardIncidentListComponent.js.map +1 -1
  114. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesCronJobListComponent.js +29 -0
  115. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesCronJobListComponent.js.map +1 -0
  116. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesDaemonSetListComponent.js +29 -0
  117. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesDaemonSetListComponent.js.map +1 -0
  118. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesDeploymentListComponent.js +29 -0
  119. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesDeploymentListComponent.js.map +1 -0
  120. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesJobListComponent.js +29 -0
  121. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesJobListComponent.js.map +1 -0
  122. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesNamespaceListComponent.js +29 -0
  123. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesNamespaceListComponent.js.map +1 -0
  124. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesNodeListComponent.js +44 -0
  125. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesNodeListComponent.js.map +1 -0
  126. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesPodListComponent.js +47 -0
  127. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesPodListComponent.js.map +1 -0
  128. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesResourceListShared.js +55 -0
  129. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesResourceListShared.js.map +1 -0
  130. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesStatefulSetListComponent.js +29 -0
  131. package/build/dist/Utils/Dashboard/Components/DashboardKubernetesStatefulSetListComponent.js.map +1 -0
  132. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js +46 -3
  133. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js.map +1 -1
  134. package/build/dist/Utils/Dashboard/Components/Index.js +53 -0
  135. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  136. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DashboardKubernetesCronJobListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardKubernetesCronJobListComponent.js","sourceRoot":"","sources":["../../../../../Types/Dashboard/DashboardComponents/DashboardKubernetesCronJobListComponent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DashboardKubernetesDaemonSetListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardKubernetesDaemonSetListComponent.js","sourceRoot":"","sources":["../../../../../Types/Dashboard/DashboardComponents/DashboardKubernetesDaemonSetListComponent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DashboardKubernetesDeploymentListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardKubernetesDeploymentListComponent.js","sourceRoot":"","sources":["../../../../../Types/Dashboard/DashboardComponents/DashboardKubernetesDeploymentListComponent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DashboardKubernetesJobListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardKubernetesJobListComponent.js","sourceRoot":"","sources":["../../../../../Types/Dashboard/DashboardComponents/DashboardKubernetesJobListComponent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DashboardKubernetesNamespaceListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardKubernetesNamespaceListComponent.js","sourceRoot":"","sources":["../../../../../Types/Dashboard/DashboardComponents/DashboardKubernetesNamespaceListComponent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DashboardKubernetesNodeListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardKubernetesNodeListComponent.js","sourceRoot":"","sources":["../../../../../Types/Dashboard/DashboardComponents/DashboardKubernetesNodeListComponent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DashboardKubernetesPodListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardKubernetesPodListComponent.js","sourceRoot":"","sources":["../../../../../Types/Dashboard/DashboardComponents/DashboardKubernetesPodListComponent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DashboardKubernetesStatefulSetListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardKubernetesStatefulSetListComponent.js","sourceRoot":"","sources":["../../../../../Types/Dashboard/DashboardComponents/DashboardKubernetesStatefulSetListComponent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,293 @@
1
+ import OneUptimeDate from "../Date";
2
+ /*
3
+ * ------------------------------------------------------------------
4
+ * DockerInventoryExtractor
5
+ * ------------------------------------------------------------------
6
+ *
7
+ * Parses a single inventory log record emitted by the OneUptime
8
+ * Docker Agent's snapshot script. The script polls the local Docker
9
+ * daemon every 5 minutes for containers / images / networks /
10
+ * volumes and emits one JSON object per line into a log file that
11
+ * the OTel filelog receiver forwards as an OTLP log.
12
+ *
13
+ * The agreed wire format is a JSON envelope:
14
+ *
15
+ * {
16
+ * "kind": "Container" | "Image" | "Network" | "Volume",
17
+ * "data": { ...native docker payload... }
18
+ * }
19
+ *
20
+ * The kind discriminator is set as a log record attribute by the
21
+ * agent's filelog operator chain, but we also keep it inside the
22
+ * envelope so the parser can sanity-check.
23
+ *
24
+ * Each kind has a small dedicated parser that pulls out the fields
25
+ * we promote to first-class columns on `DockerResource` (name,
26
+ * containerId, imageName, state, labels, creation timestamp). The
27
+ * full payload is *not* persisted — it lives on the original log
28
+ * record in ClickHouse if a user ever needs the raw blob.
29
+ *
30
+ * ------------------------------------------------------------------
31
+ */
32
+ export const INVENTORY_KIND_ATTRIBUTE = "oneuptime.docker.kind";
33
+ export const INVENTORIED_DOCKER_KINDS = [
34
+ "Container",
35
+ "Image",
36
+ "Network",
37
+ "Volume",
38
+ ];
39
+ const INVENTORIED_KIND_SET = new Set(INVENTORIED_DOCKER_KINDS.map((k) => {
40
+ return k.toLowerCase();
41
+ }));
42
+ export function isInventoriedDockerKind(kind) {
43
+ return INVENTORIED_KIND_SET.has(kind.toLowerCase());
44
+ }
45
+ /*
46
+ * Map a kind in any common form (lowercase plural, lowercase
47
+ * singular, or PascalCase) to the canonical PascalCase kind we store
48
+ * in the database. Returns null for anything we don't model.
49
+ */
50
+ export function canonicalDockerKind(raw) {
51
+ const trimmed = (raw || "").trim().toLowerCase();
52
+ if (!trimmed) {
53
+ return null;
54
+ }
55
+ const map = {
56
+ container: "Container",
57
+ containers: "Container",
58
+ image: "Image",
59
+ images: "Image",
60
+ network: "Network",
61
+ networks: "Network",
62
+ volume: "Volume",
63
+ volumes: "Volume",
64
+ };
65
+ return map[trimmed] || null;
66
+ }
67
+ function parseLogBody(logBody) {
68
+ try {
69
+ const parsed = JSON.parse(logBody);
70
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
71
+ return parsed;
72
+ }
73
+ return null;
74
+ }
75
+ catch (_a) {
76
+ return null;
77
+ }
78
+ }
79
+ function readString(obj, key) {
80
+ const v = obj[key];
81
+ if (typeof v === "string" && v.trim().length > 0) {
82
+ return v.trim();
83
+ }
84
+ return null;
85
+ }
86
+ function readJSONObject(obj, key) {
87
+ const v = obj[key];
88
+ if (v && typeof v === "object" && !Array.isArray(v)) {
89
+ return v;
90
+ }
91
+ return null;
92
+ }
93
+ function parseTimestamp(raw) {
94
+ if (!raw) {
95
+ return null;
96
+ }
97
+ try {
98
+ const d = OneUptimeDate.fromString(raw);
99
+ if (isNaN(d.getTime())) {
100
+ return null;
101
+ }
102
+ return d;
103
+ }
104
+ catch (_a) {
105
+ return null;
106
+ }
107
+ }
108
+ /*
109
+ * Container shape emitted by `docker container ls --format json` plus
110
+ * a few enrichments the agent script adds:
111
+ * { Id, Names, Image, State, Status, CreatedAt, Labels }
112
+ *
113
+ * Names from the Docker CLI is a slash-prefixed comma-joined string
114
+ * ("/web,/web-1"). We strip the leading slash and take the first
115
+ * entry — that's what `docker_stats` reports as `container.name` in
116
+ * metric attributes, so the row keys stay consistent across paths.
117
+ */
118
+ function parseContainer(data, lastSeenAt) {
119
+ const rawNames = readString(data, "Names");
120
+ const rawName = readString(data, "Name");
121
+ const namesField = rawNames || rawName || "";
122
+ const firstName = namesField
123
+ .split(",")
124
+ .map((n) => {
125
+ return n.trim().replace(/^\//, "");
126
+ })
127
+ .filter((n) => {
128
+ return n.length > 0;
129
+ })[0];
130
+ if (!firstName) {
131
+ return null;
132
+ }
133
+ const idRaw = readString(data, "Id");
134
+ const containerId = idRaw ? idRaw.substring(0, 12) : null;
135
+ const imageName = readString(data, "Image");
136
+ const state = readString(data, "State");
137
+ const labels = readJSONObject(data, "Labels");
138
+ const created = parseTimestamp(readString(data, "CreatedAt"));
139
+ return {
140
+ kind: "Container",
141
+ name: firstName,
142
+ containerId,
143
+ imageName,
144
+ state: state ? state.toLowerCase() : null,
145
+ labels,
146
+ resourceCreationTimestamp: created,
147
+ lastSeenAt,
148
+ };
149
+ }
150
+ /*
151
+ * Image shape from `docker image ls --format json`:
152
+ * { ID, Repository, Tag, CreatedAt, Labels }
153
+ *
154
+ * Name = Repository:Tag (matches what container.image.name emits).
155
+ * Skip dangling images (Repository=<none> with no tag) — they would
156
+ * collide on the unique key and are noise in a list view.
157
+ */
158
+ function parseImage(data, lastSeenAt) {
159
+ const repository = readString(data, "Repository");
160
+ const tag = readString(data, "Tag");
161
+ const explicitName = readString(data, "Name");
162
+ let name = explicitName;
163
+ if (!name && repository && repository !== "<none>") {
164
+ name = tag && tag !== "<none>" ? `${repository}:${tag}` : repository;
165
+ }
166
+ if (!name) {
167
+ return null;
168
+ }
169
+ const idRaw = readString(data, "ID") || readString(data, "Id");
170
+ const containerId = idRaw
171
+ ? idRaw.replace(/^sha256:/, "").substring(0, 12)
172
+ : null;
173
+ const labels = readJSONObject(data, "Labels");
174
+ const created = parseTimestamp(readString(data, "CreatedAt"));
175
+ return {
176
+ kind: "Image",
177
+ name,
178
+ containerId,
179
+ imageName: null,
180
+ state: null,
181
+ labels,
182
+ resourceCreationTimestamp: created,
183
+ lastSeenAt,
184
+ };
185
+ }
186
+ /*
187
+ * Network shape from `docker network ls --format json`:
188
+ * { ID, Name, Driver, Scope, CreatedAt, Labels }
189
+ */
190
+ function parseNetwork(data, lastSeenAt) {
191
+ const name = readString(data, "Name");
192
+ if (!name) {
193
+ return null;
194
+ }
195
+ const idRaw = readString(data, "ID") || readString(data, "Id");
196
+ const driver = readString(data, "Driver");
197
+ const scope = readString(data, "Scope");
198
+ const labels = readJSONObject(data, "Labels");
199
+ const created = parseTimestamp(readString(data, "CreatedAt"));
200
+ /*
201
+ * Driver and scope are surfaced in the State column in the widget
202
+ * (e.g. "bridge / local"). Encoded as "driver/scope" so we don't
203
+ * need a new column on the table.
204
+ */
205
+ const stateParts = [];
206
+ if (driver) {
207
+ stateParts.push(driver);
208
+ }
209
+ if (scope) {
210
+ stateParts.push(scope);
211
+ }
212
+ return {
213
+ kind: "Network",
214
+ name,
215
+ containerId: idRaw ? idRaw.substring(0, 12) : null,
216
+ imageName: null,
217
+ state: stateParts.length > 0 ? stateParts.join("/") : null,
218
+ labels,
219
+ resourceCreationTimestamp: created,
220
+ lastSeenAt,
221
+ };
222
+ }
223
+ /*
224
+ * Volume shape from `docker volume ls --format json`:
225
+ * { Name, Driver, Mountpoint, Scope, Labels, CreatedAt }
226
+ */
227
+ function parseVolume(data, lastSeenAt) {
228
+ const name = readString(data, "Name");
229
+ if (!name) {
230
+ return null;
231
+ }
232
+ const driver = readString(data, "Driver");
233
+ const scope = readString(data, "Scope");
234
+ const labels = readJSONObject(data, "Labels");
235
+ const created = parseTimestamp(readString(data, "CreatedAt"));
236
+ const stateParts = [];
237
+ if (driver) {
238
+ stateParts.push(driver);
239
+ }
240
+ if (scope) {
241
+ stateParts.push(scope);
242
+ }
243
+ return {
244
+ kind: "Volume",
245
+ name,
246
+ containerId: null,
247
+ imageName: null,
248
+ state: stateParts.length > 0 ? stateParts.join("/") : null,
249
+ labels,
250
+ resourceCreationTimestamp: created,
251
+ lastSeenAt,
252
+ };
253
+ }
254
+ /**
255
+ * Parse a single inventory log line. Returns null when the body is
256
+ * malformed or the kind is not modeled — callers should swallow nulls
257
+ * silently rather than fail the whole batch.
258
+ */
259
+ export function extractDockerInventoryResource(data) {
260
+ const canonical = canonicalDockerKind(data.kind);
261
+ if (!canonical) {
262
+ return null;
263
+ }
264
+ const body = parseLogBody(data.logBody);
265
+ if (!body) {
266
+ return null;
267
+ }
268
+ /*
269
+ * The agent wraps the native docker payload in `{ kind, data }`.
270
+ * Older snapshot lines or test inputs may be the raw payload — we
271
+ * accept either by pulling `data` if present, else using the body
272
+ * directly.
273
+ */
274
+ const inner = readJSONObject(body, "data") || body;
275
+ let parsed = null;
276
+ if (canonical === "Container") {
277
+ parsed = parseContainer(inner, data.lastSeenAt);
278
+ }
279
+ else if (canonical === "Image") {
280
+ parsed = parseImage(inner, data.lastSeenAt);
281
+ }
282
+ else if (canonical === "Network") {
283
+ parsed = parseNetwork(inner, data.lastSeenAt);
284
+ }
285
+ else if (canonical === "Volume") {
286
+ parsed = parseVolume(inner, data.lastSeenAt);
287
+ }
288
+ if (!parsed) {
289
+ return null;
290
+ }
291
+ return { resource: parsed };
292
+ }
293
+ //# sourceMappingURL=DockerInventoryExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockerInventoryExtractor.js","sourceRoot":"","sources":["../../../../Types/Docker/DockerInventoryExtractor.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ObjectType } from "../../../Types/JSON";
2
2
  import ObjectID from "../../../Types/ObjectID";
3
3
  import DashboardBaseComponentUtil from "./DashboardBaseComponent";
4
- import { ComponentInputType, } from "../../../Types/Dashboard/DashboardComponents/ComponentArgument";
4
+ import { ComponentInputType, EntityFilterModelType, } from "../../../Types/Dashboard/DashboardComponents/ComponentArgument";
5
5
  import DashboardComponentType from "../../../Types/Dashboard/DashboardComponentType";
6
6
  const DisplaySection = {
7
7
  name: "Display Options",
@@ -51,8 +51,8 @@ export default class DashboardAlertListComponentUtil extends DashboardBaseCompon
51
51
  section: DisplaySection,
52
52
  });
53
53
  componentArguments.push({
54
- name: "State",
55
- description: "Filter alerts by lifecycle state",
54
+ name: "Lifecycle State",
55
+ description: "Quick filter by lifecycle state",
56
56
  required: false,
57
57
  type: ComponentInputType.Dropdown,
58
58
  id: "stateFilter",
@@ -64,6 +64,46 @@ export default class DashboardAlertListComponentUtil extends DashboardBaseCompon
64
64
  { label: "Resolved", value: "resolved" },
65
65
  ],
66
66
  });
67
+ componentArguments.push({
68
+ name: "Severity",
69
+ description: "Show only alerts matching the selected severities",
70
+ required: false,
71
+ type: ComponentInputType.EntityMultiSelectDropdown,
72
+ id: "severityIds",
73
+ placeholder: "All severities",
74
+ section: FiltersSection,
75
+ entityFilterModelType: EntityFilterModelType.AlertSeverity,
76
+ });
77
+ componentArguments.push({
78
+ name: "State",
79
+ description: "Show only alerts in the selected states",
80
+ required: false,
81
+ type: ComponentInputType.EntityMultiSelectDropdown,
82
+ id: "stateIds",
83
+ placeholder: "All states",
84
+ section: FiltersSection,
85
+ entityFilterModelType: EntityFilterModelType.AlertState,
86
+ });
87
+ componentArguments.push({
88
+ name: "Monitors",
89
+ description: "Show only alerts linked to the selected monitors",
90
+ required: false,
91
+ type: ComponentInputType.EntityMultiSelectDropdown,
92
+ id: "monitorIds",
93
+ placeholder: "All monitors",
94
+ section: FiltersSection,
95
+ entityFilterModelType: EntityFilterModelType.Monitor,
96
+ });
97
+ componentArguments.push({
98
+ name: "Labels",
99
+ description: "Show only alerts tagged with the selected labels",
100
+ required: false,
101
+ type: ComponentInputType.EntityMultiSelectDropdown,
102
+ id: "labelIds",
103
+ placeholder: "All labels",
104
+ section: FiltersSection,
105
+ entityFilterModelType: EntityFilterModelType.Label,
106
+ });
67
107
  return componentArguments;
68
108
  }
69
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardAlertListComponent.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/DashboardAlertListComponent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,0BAA0B,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAGL,kBAAkB,GACnB,MAAM,gEAAgE,CAAC;AACxE,OAAO,sBAAsB,MAAM,iDAAiD,CAAC;AAErF,MAAM,cAAc,GAA6B;IAC/C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,0CAA0C;IACvD,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,cAAc,GAA6B;IAC/C,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,oCAAoC;IACjD,KAAK,EAAE,CAAC;IACR,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,+BAAgC,SAAQ,0BAA0B;IAC9E,MAAM,CAAU,mBAAmB;QACxC,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,kBAAkB;YACpC,aAAa,EAAE,sBAAsB,CAAC,SAAS;YAC/C,qBAAqB,EAAE,CAAC;YACxB,sBAAsB,EAAE,CAAC;YACzB,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,EAAE,CAAC;YACvB,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE;YAChC,yBAAyB,EAAE,CAAC;YAC5B,wBAAwB,EAAE,CAAC;YAC3B,SAAS,EAAE;gBACT,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAU,2BAA2B;QAGhD,MAAM,kBAAkB,GAEpB,EAAE,CAAC;QAEP,kBAAkB,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,EAAE,EAAE,OAAO;YACX,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,kBAAkB,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,MAAM;YAC/B,EAAE,EAAE,SAAS;YACb,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,kBAAkB,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,QAAQ;YACjC,EAAE,EAAE,aAAa;YACjB,OAAO,EAAE,cAAc;YACvB,eAAe,EAAE;gBACf,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC3B,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE;gBACnD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;gBAChD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;aACzC;SACF,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF"}
1
+ {"version":3,"file":"DashboardAlertListComponent.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/DashboardAlertListComponent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { ObjectType } from "../../../Types/JSON";
2
+ import ObjectID from "../../../Types/ObjectID";
3
+ import DashboardBaseComponentUtil from "./DashboardBaseComponent";
4
+ import { ComponentInputType, EntityFilterModelType, } from "../../../Types/Dashboard/DashboardComponents/ComponentArgument";
5
+ import DashboardComponentType from "../../../Types/Dashboard/DashboardComponentType";
6
+ const DisplaySection = {
7
+ name: "Display Options",
8
+ description: "Configure the widget title and row limit",
9
+ order: 1,
10
+ };
11
+ const FiltersSection = {
12
+ name: "Filters",
13
+ description: "Narrow down which containers are shown",
14
+ order: 2,
15
+ defaultCollapsed: true,
16
+ };
17
+ export default class DashboardDockerContainerListComponentUtil extends DashboardBaseComponentUtil {
18
+ static getDefaultComponent() {
19
+ return {
20
+ _type: ObjectType.DashboardComponent,
21
+ componentType: DashboardComponentType.DockerContainerList,
22
+ widthInDashboardUnits: 6,
23
+ heightInDashboardUnits: 4,
24
+ topInDashboardUnits: 0,
25
+ leftInDashboardUnits: 0,
26
+ componentId: ObjectID.generate(),
27
+ minHeightInDashboardUnits: 3,
28
+ minWidthInDashboardUnits: 6,
29
+ arguments: {
30
+ maxRows: 25,
31
+ },
32
+ };
33
+ }
34
+ static getComponentConfigArguments() {
35
+ const args = [];
36
+ args.push({
37
+ name: "Title",
38
+ description: "Header shown above the container list",
39
+ required: false,
40
+ type: ComponentInputType.Text,
41
+ id: "title",
42
+ section: DisplaySection,
43
+ });
44
+ args.push({
45
+ name: "Max Rows",
46
+ description: "Maximum number of containers to show",
47
+ required: false,
48
+ type: ComponentInputType.Number,
49
+ id: "maxRows",
50
+ placeholder: "25",
51
+ section: DisplaySection,
52
+ });
53
+ args.push({
54
+ name: "Hosts",
55
+ description: "Show only containers from the selected hosts",
56
+ required: false,
57
+ type: ComponentInputType.EntityMultiSelectDropdown,
58
+ id: "dockerHostIds",
59
+ placeholder: "All hosts",
60
+ section: FiltersSection,
61
+ entityFilterModelType: EntityFilterModelType.DockerHost,
62
+ });
63
+ args.push({
64
+ name: "Image Name",
65
+ description: "Substring of the container image to match (e.g. nginx)",
66
+ required: false,
67
+ type: ComponentInputType.Text,
68
+ id: "imageName",
69
+ placeholder: "nginx",
70
+ section: FiltersSection,
71
+ });
72
+ return args;
73
+ }
74
+ }
75
+ //# sourceMappingURL=DashboardDockerContainerListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardDockerContainerListComponent.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/DashboardDockerContainerListComponent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,0BAA0B,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAGL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gEAAgE,CAAC;AACxE,OAAO,sBAAsB,MAAM,iDAAiD,CAAC;AAErF,MAAM,cAAc,GAA6B;IAC/C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,0CAA0C;IACvD,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,cAAc,GAA6B;IAC/C,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,wCAAwC;IACrD,KAAK,EAAE,CAAC;IACR,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,yCAA0C,SAAQ,0BAA0B;IACxF,MAAM,CAAU,mBAAmB;QACxC,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,kBAAkB;YACpC,aAAa,EAAE,sBAAsB,CAAC,mBAAmB;YACzD,qBAAqB,EAAE,CAAC;YACxB,sBAAsB,EAAE,CAAC;YACzB,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,EAAE,CAAC;YACvB,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE;YAChC,yBAAyB,EAAE,CAAC;YAC5B,wBAAwB,EAAE,CAAC;YAC3B,SAAS,EAAE;gBACT,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAU,2BAA2B;QAGhD,MAAM,IAAI,GAEN,EAAE,CAAC;QAEP,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,EAAE,EAAE,OAAO;YACX,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,MAAM;YAC/B,EAAE,EAAE,SAAS;YACb,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,yBAAyB;YAClD,EAAE,EAAE,eAAe;YACnB,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,cAAc;YACvB,qBAAqB,EAAE,qBAAqB,CAAC,UAAU;SACxD,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,wDAAwD;YACrE,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,EAAE,EAAE,WAAW;YACf,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,69 @@
1
+ import { ObjectType } from "../../../Types/JSON";
2
+ import ObjectID from "../../../Types/ObjectID";
3
+ import DashboardBaseComponentUtil from "./DashboardBaseComponent";
4
+ import { ComponentInputType, } from "../../../Types/Dashboard/DashboardComponents/ComponentArgument";
5
+ import DashboardComponentType from "../../../Types/Dashboard/DashboardComponentType";
6
+ const DisplaySection = {
7
+ name: "Display Options",
8
+ description: "Configure the widget title and row limit",
9
+ order: 1,
10
+ };
11
+ const FiltersSection = {
12
+ name: "Filters",
13
+ description: "Narrow down which Docker hosts are shown",
14
+ order: 2,
15
+ defaultCollapsed: true,
16
+ };
17
+ export default class DashboardDockerHostListComponentUtil extends DashboardBaseComponentUtil {
18
+ static getDefaultComponent() {
19
+ return {
20
+ _type: ObjectType.DashboardComponent,
21
+ componentType: DashboardComponentType.DockerHostList,
22
+ widthInDashboardUnits: 6,
23
+ heightInDashboardUnits: 4,
24
+ topInDashboardUnits: 0,
25
+ leftInDashboardUnits: 0,
26
+ componentId: ObjectID.generate(),
27
+ minHeightInDashboardUnits: 3,
28
+ minWidthInDashboardUnits: 6,
29
+ arguments: {
30
+ maxRows: 25,
31
+ },
32
+ };
33
+ }
34
+ static getComponentConfigArguments() {
35
+ const args = [];
36
+ args.push({
37
+ name: "Title",
38
+ description: "Header shown above the host list",
39
+ required: false,
40
+ type: ComponentInputType.Text,
41
+ id: "title",
42
+ section: DisplaySection,
43
+ });
44
+ args.push({
45
+ name: "Max Rows",
46
+ description: "Maximum number of hosts to show",
47
+ required: false,
48
+ type: ComponentInputType.Number,
49
+ id: "maxRows",
50
+ placeholder: "25",
51
+ section: DisplaySection,
52
+ });
53
+ args.push({
54
+ name: "Connection Status",
55
+ description: "Quick filter by OTel collector status",
56
+ required: false,
57
+ type: ComponentInputType.Dropdown,
58
+ id: "statusFilter",
59
+ section: FiltersSection,
60
+ dropdownOptions: [
61
+ { label: "All", value: "" },
62
+ { label: "Connected only", value: "connected" },
63
+ { label: "Disconnected only", value: "disconnected" },
64
+ ],
65
+ });
66
+ return args;
67
+ }
68
+ }
69
+ //# sourceMappingURL=DashboardDockerHostListComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardDockerHostListComponent.js","sourceRoot":"","sources":["../../../../../Utils/Dashboard/Components/DashboardDockerHostListComponent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,0BAA0B,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAGL,kBAAkB,GACnB,MAAM,gEAAgE,CAAC;AACxE,OAAO,sBAAsB,MAAM,iDAAiD,CAAC;AAErF,MAAM,cAAc,GAA6B;IAC/C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,0CAA0C;IACvD,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,cAAc,GAA6B;IAC/C,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,0CAA0C;IACvD,KAAK,EAAE,CAAC;IACR,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,oCAAqC,SAAQ,0BAA0B;IACnF,MAAM,CAAU,mBAAmB;QACxC,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,kBAAkB;YACpC,aAAa,EAAE,sBAAsB,CAAC,cAAc;YACpD,qBAAqB,EAAE,CAAC;YACxB,sBAAsB,EAAE,CAAC;YACzB,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,EAAE,CAAC;YACvB,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE;YAChC,yBAAyB,EAAE,CAAC;YAC5B,wBAAwB,EAAE,CAAC;YAC3B,SAAS,EAAE;gBACT,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAU,2BAA2B;QAGhD,MAAM,IAAI,GAA+D,EAAE,CAAC;QAE5E,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,EAAE,EAAE,OAAO;YACX,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,MAAM;YAC/B,EAAE,EAAE,SAAS;YACb,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB,CAAC,QAAQ;YACjC,EAAE,EAAE,cAAc;YAClB,OAAO,EAAE,cAAc;YACvB,eAAe,EAAE;gBACf,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC3B,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE;gBAC/C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,EAAE;aACtD;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}