adonisjs-server-stats 1.13.0 → 1.14.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 (150) hide show
  1. package/README.md +3 -2
  2. package/dist/configure.js +6 -1
  3. package/dist/core/collectors/collector.d.ts +83 -0
  4. package/dist/core/core/types.d.ts +186 -0
  5. package/dist/core/debug/types.d.ts +467 -0
  6. package/dist/core/index.js +184 -169
  7. package/dist/core/types.d.ts +855 -167
  8. package/dist/react/{CacheSection-CX2duJuc.js → CacheSection-DkLtukWz.js} +1 -1
  9. package/dist/react/{CacheTab-CgT4t0oZ.js → CacheTab-DWeXnEBI.js} +51 -46
  10. package/dist/react/ConfigContent-Bwvfl_G7.js +350 -0
  11. package/dist/react/{ConfigSection-Dt0FyeaW.js → ConfigSection-DaVbFPDg.js} +2 -2
  12. package/dist/react/{ConfigTab-KtiTtsrj.js → ConfigTab-D4640WJZ.js} +2 -2
  13. package/dist/react/{CustomPaneTab-15QoEplP.js → CustomPaneTab-DglmAVMC.js} +1 -1
  14. package/dist/react/{EmailsSection-YcJYR5eA.js → EmailsSection-vYx6ExTb.js} +1 -1
  15. package/dist/react/{EmailsTab-CUjubln_.js → EmailsTab-DKDrRmRH.js} +54 -49
  16. package/dist/react/{EventsSection-GGPoYSNv.js → EventsSection-CapH5xut.js} +1 -1
  17. package/dist/react/{EventsTab-Wdwr0_ny.js → EventsTab-BNVEySAm.js} +1 -1
  18. package/dist/react/{InternalsContent-BNOnSoi9.js → InternalsContent-C9lIA92C.js} +1 -1
  19. package/dist/react/{InternalsSection-BwrTfpjA.js → InternalsSection-lOv_UcSV.js} +1 -1
  20. package/dist/react/{InternalsTab--RD-L1dX.js → InternalsTab-BygoSorC.js} +1 -1
  21. package/dist/react/{JobsSection-BqqIh_DR.js → JobsSection-ZIQsJWid.js} +1 -1
  22. package/dist/react/{JobsTab-CBrU-ryL.js → JobsTab-DXQzXrDt.js} +1 -1
  23. package/dist/react/{LogEntryRow-BOrRkhRU.js → LogEntryRow-BWkHE51-.js} +1 -1
  24. package/dist/react/{LogsSection-Cm_lphM6.js → LogsSection-ConXdBkL.js} +2 -2
  25. package/dist/react/LogsTab-CJM47LPn.js +82 -0
  26. package/dist/react/{OverviewSection-XF7bakyM.js → OverviewSection-DOMu2qvl.js} +131 -131
  27. package/dist/react/{QueriesSection-DsQBKrNK.js → QueriesSection-DFsaOSJI.js} +1 -1
  28. package/dist/react/{QueriesTab-CxCC1GVq.js → QueriesTab-CY9CG_7L.js} +1 -1
  29. package/dist/react/RequestsSection-CC-eVHsl.js +326 -0
  30. package/dist/react/{RoutesSection-D0y5JQP4.js → RoutesSection-p1DMq41y.js} +1 -1
  31. package/dist/react/{RoutesTab-Y_alJVMV.js → RoutesTab-Cnqy8UcK.js} +1 -1
  32. package/dist/react/{SplitPaneWrapper-CZl1ouIT.js → SplitPaneWrapper-XgkA0QxE.js} +1 -1
  33. package/dist/react/{TimelineTab-HyqZpfbp.js → TimelineTab-1YOERxe5.js} +3 -3
  34. package/dist/react/index-DOSlCpZ9.js +1159 -0
  35. package/dist/react/index.js +1 -1
  36. package/dist/react/useApiClient-CtEG7rHs.js +11 -0
  37. package/dist/src/collectors/queue_collector.js +22 -6
  38. package/dist/src/config/deprecation_migration.js +11 -0
  39. package/dist/src/dashboard/cache_handlers.js +22 -2
  40. package/dist/src/dashboard/flush_manager.d.ts +2 -0
  41. package/dist/src/dashboard/flush_manager.js +17 -0
  42. package/dist/src/dashboard/integrations/config_inspector.d.ts +0 -1
  43. package/dist/src/dashboard/integrations/config_inspector.js +4 -2
  44. package/dist/src/dashboard/paginate_helper.d.ts +5 -0
  45. package/dist/src/dashboard/paginate_helper.js +16 -4
  46. package/dist/src/dashboard/query_explain_handler.d.ts +6 -1
  47. package/dist/src/dashboard/query_explain_handler.js +12 -2
  48. package/dist/src/dashboard/write_queue.d.ts +13 -0
  49. package/dist/src/dashboard/write_queue.js +34 -2
  50. package/dist/src/debug/debug_store.js +8 -1
  51. package/dist/src/debug/event_collector.js +4 -0
  52. package/dist/src/debug/query_collector.js +2 -0
  53. package/dist/src/debug/ring_buffer.js +8 -1
  54. package/dist/src/debug/trace_collector.js +34 -10
  55. package/dist/src/debug/types.d.ts +2 -0
  56. package/dist/src/define_config.js +1 -0
  57. package/dist/src/edge/client/dashboard.js +2 -2
  58. package/dist/src/edge/client/debug-panel-deferred.js +1 -1
  59. package/dist/src/edge/client/stats-bar.js +1 -1
  60. package/dist/src/edge/client-vue/dashboard.js +5 -5
  61. package/dist/src/edge/client-vue/debug-panel-deferred.js +2 -2
  62. package/dist/src/engine/request_metrics.js +8 -10
  63. package/dist/src/log_stream/log_stream_service.d.ts +1 -0
  64. package/dist/src/log_stream/log_stream_service.js +7 -5
  65. package/dist/src/prometheus/prometheus_collector.d.ts +9 -0
  66. package/dist/src/prometheus/prometheus_collector.js +11 -0
  67. package/dist/src/provider/dashboard_init.js +15 -0
  68. package/dist/src/provider/dashboard_setup.js +9 -2
  69. package/dist/src/provider/email_bridge.js +6 -2
  70. package/dist/src/provider/email_helpers.d.ts +9 -1
  71. package/dist/src/provider/email_helpers.js +32 -4
  72. package/dist/src/provider/pino_hook.d.ts +8 -0
  73. package/dist/src/provider/pino_hook.js +19 -1
  74. package/dist/src/provider/provider_helpers_extra.d.ts +2 -0
  75. package/dist/src/provider/provider_helpers_extra.js +17 -2
  76. package/dist/src/provider/server_stats_provider.js +19 -1
  77. package/dist/src/provider/shutdown_helpers.js +2 -0
  78. package/dist/src/provider/toolbar_setup.js +17 -14
  79. package/dist/src/routes/dashboard_routes.js +96 -62
  80. package/dist/src/routes/debug_routes.js +45 -35
  81. package/dist/src/routes/no_session_middleware.d.ts +6 -3
  82. package/dist/src/routes/no_session_middleware.js +7 -3
  83. package/dist/src/routes/register_routes.d.ts +8 -0
  84. package/dist/src/routes/register_routes.js +19 -0
  85. package/dist/src/types.d.ts +31 -0
  86. package/dist/src/utils/app_import.js +12 -4
  87. package/dist/vue/CacheSection-CxEBVVkF.js +156 -0
  88. package/dist/vue/ConfigSection-BiRAiaHj.js +415 -0
  89. package/dist/vue/EmailsSection-Dl44qyqY.js +208 -0
  90. package/dist/vue/{EmailsTab-CwIF1fik.js → EmailsTab-Diya54CP.js} +6 -5
  91. package/dist/vue/{EventsSection-BpgkWIwM.js → EventsSection-CWjeitjU.js} +1 -1
  92. package/dist/vue/{InternalsTab-521fxYYj.js → InternalsTab-Z3c82glB.js} +15 -15
  93. package/dist/vue/{JobsSection-DrghFEKL.js → JobsSection-DOBb4LjZ.js} +1 -1
  94. package/dist/vue/LogsSection-CXx-HOWJ.js +260 -0
  95. package/dist/vue/{OverviewSection-BAgZTPjY.js → OverviewSection-CyfNQ8uV.js} +318 -302
  96. package/dist/vue/{QueriesSection-CUpwhp7u.js → QueriesSection-CXBsFp-y.js} +1 -1
  97. package/dist/vue/{RequestsSection-D8P2xpF2.js → RequestsSection-YTIaZGZd.js} +151 -145
  98. package/dist/vue/{RoutesSection-0qB81hTT.js → RoutesSection-CDKMey49.js} +1 -1
  99. package/dist/vue/composables/useApiClient.d.ts +8 -1
  100. package/dist/vue/index-14x39RI_.js +1239 -0
  101. package/dist/vue/index.js +1 -1
  102. package/dist/vue/style.css +1 -1
  103. package/package.json +6 -3
  104. package/dist/react/ConfigContent-CnsEI4j3.js +0 -397
  105. package/dist/react/LogsTab-jKwv9G7Q.js +0 -79
  106. package/dist/react/RequestsSection-D8cMbZU0.js +0 -321
  107. package/dist/react/index-CsprmgzI.js +0 -1121
  108. package/dist/react/useApiClient-BVtNCmnL.js +0 -9
  109. package/dist/vue/CacheSection-DRqV3YX2.js +0 -149
  110. package/dist/vue/ConfigSection-C6pQCHAL.js +0 -576
  111. package/dist/vue/EmailsSection-BTNw3ZU2.js +0 -206
  112. package/dist/vue/LogsSection-BDxx9Bfi.js +0 -258
  113. package/dist/vue/index-30jLw-_w.js +0 -1232
  114. /package/dist/core/{api-client.d.ts → core/api-client.d.ts} +0 -0
  115. /package/dist/core/{config-utils.d.ts → core/config-utils.d.ts} +0 -0
  116. /package/dist/core/{constants.d.ts → core/constants.d.ts} +0 -0
  117. /package/dist/core/{dashboard-api.d.ts → core/dashboard-api.d.ts} +0 -0
  118. /package/dist/core/{dashboard-data-controller.d.ts → core/dashboard-data-controller.d.ts} +0 -0
  119. /package/dist/core/{dashboard-data-helpers.d.ts → core/dashboard-data-helpers.d.ts} +0 -0
  120. /package/dist/core/{debug-data-controller.d.ts → core/debug-data-controller.d.ts} +0 -0
  121. /package/dist/core/{define-config-helpers.d.ts → core/define-config-helpers.d.ts} +0 -0
  122. /package/dist/core/{explain-utils.d.ts → core/explain-utils.d.ts} +0 -0
  123. /package/dist/core/{feature-detect-helpers.d.ts → core/feature-detect-helpers.d.ts} +0 -0
  124. /package/dist/core/{feature-detect.d.ts → core/feature-detect.d.ts} +0 -0
  125. /package/dist/core/{field-resolvers.d.ts → core/field-resolvers.d.ts} +0 -0
  126. /package/dist/core/{formatters-helpers.d.ts → core/formatters-helpers.d.ts} +0 -0
  127. /package/dist/core/{formatters.d.ts → core/formatters.d.ts} +0 -0
  128. /package/dist/core/{history-buffer.d.ts → core/history-buffer.d.ts} +0 -0
  129. /package/dist/core/{icons.d.ts → core/icons.d.ts} +0 -0
  130. /package/dist/core/{index.d.ts → core/index.d.ts} +0 -0
  131. /package/dist/core/{internals-utils.d.ts → core/internals-utils.d.ts} +0 -0
  132. /package/dist/core/{job-utils.d.ts → core/job-utils.d.ts} +0 -0
  133. /package/dist/core/{log-utils-helpers.d.ts → core/log-utils-helpers.d.ts} +0 -0
  134. /package/dist/core/{log-utils.d.ts → core/log-utils.d.ts} +0 -0
  135. /package/dist/core/{metrics.d.ts → core/metrics.d.ts} +0 -0
  136. /package/dist/core/{pagination.d.ts → core/pagination.d.ts} +0 -0
  137. /package/dist/core/{queries-columns.d.ts → core/queries-columns.d.ts} +0 -0
  138. /package/dist/core/{queries-controller.d.ts → core/queries-controller.d.ts} +0 -0
  139. /package/dist/core/{query-utils.d.ts → core/query-utils.d.ts} +0 -0
  140. /package/dist/core/{resizable-columns.d.ts → core/resizable-columns.d.ts} +0 -0
  141. /package/dist/core/{routes.d.ts → core/routes.d.ts} +0 -0
  142. /package/dist/core/{server-stats-controller.d.ts → core/server-stats-controller.d.ts} +0 -0
  143. /package/dist/core/{sparkline.d.ts → core/sparkline.d.ts} +0 -0
  144. /package/dist/core/{split-pane.d.ts → core/split-pane.d.ts} +0 -0
  145. /package/dist/core/{theme.d.ts → core/theme.d.ts} +0 -0
  146. /package/dist/core/{trace-utils.d.ts → core/trace-utils.d.ts} +0 -0
  147. /package/dist/core/{transmit-adapter.d.ts → core/transmit-adapter.d.ts} +0 -0
  148. /package/dist/core/{transmit-helpers.d.ts → core/transmit-helpers.d.ts} +0 -0
  149. /package/dist/core/{types-dashboard.d.ts → core/types-dashboard.d.ts} +0 -0
  150. /package/dist/core/{types-diagnostics.d.ts → core/types-diagnostics.d.ts} +0 -0
@@ -0,0 +1,208 @@
1
+ import { defineComponent as F, inject as y, ref as f, computed as b, openBlock as l, createElementBlock as n, createElementVNode as t, Fragment as c, createTextVNode as d, toDisplayString as i, createCommentVNode as w, normalizeClass as g, createVNode as B, unref as r, renderList as D, createBlock as R } from "vue";
2
+ import { formatTime as z, timeAgo as L } from "adonisjs-server-stats/core";
3
+ import { u as M } from "./index-14x39RI_.js";
4
+ import { u as U } from "./useResizableTable-BoivAevK.js";
5
+ import { _ as q } from "./FilterBar.vue_vue_type_script_setup_true_lang-ClJ37hhT.js";
6
+ import { _ as H } from "./PaginationControls.vue_vue_type_script_setup_true_lang-CuN7g_8Z.js";
7
+ const I = {
8
+ key: 0,
9
+ class: "ss-dash-email-preview",
10
+ id: "ss-dash-email-preview"
11
+ }, K = { class: "ss-dash-email-preview-header" }, G = {
12
+ class: "ss-dash-email-preview-meta",
13
+ id: "ss-dash-email-preview-meta"
14
+ }, J = ["srcdoc"], O = {
15
+ key: 0,
16
+ class: "ss-dash-empty"
17
+ }, Q = { class: "ss-dash-table-wrap" }, W = ["onClick"], X = { style: { color: "var(--ss-dim)" } }, Y = ["title"], Z = ["title"], tt = ["title"], et = {
18
+ key: 0,
19
+ style: { color: "var(--ss-dim)", "text-align": "center", display: "block" }
20
+ }, st = {
21
+ key: 1,
22
+ style: { color: "var(--ss-dim)", "text-align": "center", display: "block" }
23
+ }, lt = ["title"], at = ["title"], ot = {
24
+ key: 1,
25
+ class: "ss-dash-empty"
26
+ }, vt = /* @__PURE__ */ F({
27
+ __name: "EmailsSection",
28
+ setup(nt) {
29
+ const k = y("ss-refresh-key", f(0)), x = y("ss-dashboard-endpoint", "/__stats/api"), C = y("ss-auth-token", void 0), T = y("ss-base-url", ""), { data: v, loading: P, pagination: m, goToPage: S, setSearch: E, fetchEmailPreview: j } = M(
30
+ () => "emails",
31
+ {
32
+ baseUrl: T,
33
+ dashboardEndpoint: x,
34
+ authToken: C,
35
+ refreshKey: k
36
+ }
37
+ ), _ = f(""), u = f(null), p = f(null), h = b(() => {
38
+ if (!v.value) return [];
39
+ const o = v.value;
40
+ return o.data || o.emails || v.value || [];
41
+ }), a = b(
42
+ () => u.value === null ? void 0 : h.value.find((o) => o.id === u.value)
43
+ );
44
+ function $(o) {
45
+ _.value = o, E(o);
46
+ }
47
+ async function N(o) {
48
+ if (o.html) {
49
+ u.value = o.id, p.value = o.html;
50
+ return;
51
+ }
52
+ const s = await j(o.id);
53
+ u.value = o.id, p.value = s;
54
+ }
55
+ function V() {
56
+ u.value = null, p.value = null;
57
+ }
58
+ const { tableRef: A } = U(() => h.value);
59
+ return (o, s) => (l(), n("div", null, [
60
+ u.value && p.value ? (l(), n("div", I, [
61
+ t("div", K, [
62
+ t("div", G, [
63
+ a.value ? (l(), n(c, { key: 0 }, [
64
+ s[4] || (s[4] = t("strong", null, "Subject:", -1)),
65
+ d(" " + i(a.value.subject) + "   |  ", 1),
66
+ s[5] || (s[5] = t("strong", null, "From:", -1)),
67
+ d(" " + i(a.value.from_addr || a.value.from) + "   |  ", 1),
68
+ s[6] || (s[6] = t("strong", null, "To:", -1)),
69
+ d(" " + i(a.value.to_addr || a.value.to) + " ", 1),
70
+ a.value.cc || a.value.cc_addr ? (l(), n(c, { key: 0 }, [
71
+ s[0] || (s[0] = d("   |  ", -1)),
72
+ s[1] || (s[1] = t("strong", null, "CC:", -1)),
73
+ d(" " + i(a.value.cc || a.value.cc_addr), 1)
74
+ ], 64)) : w("", !0),
75
+ s[7] || (s[7] = d("   |  ", -1)),
76
+ s[8] || (s[8] = t("strong", null, "Status:", -1)),
77
+ t("span", {
78
+ class: g(`ss-dash-badge ss-dash-email-status-${a.value.status}`)
79
+ }, i(a.value.status), 3),
80
+ a.value.mailer ? (l(), n(c, { key: 1 }, [
81
+ s[2] || (s[2] = d("   |  ", -1)),
82
+ s[3] || (s[3] = t("strong", null, "Mailer:", -1)),
83
+ d(" " + i(a.value.mailer), 1)
84
+ ], 64)) : w("", !0)
85
+ ], 64)) : w("", !0)
86
+ ]),
87
+ t("button", {
88
+ type: "button",
89
+ class: "ss-dash-btn",
90
+ id: "ss-dash-email-preview-close",
91
+ onClick: V
92
+ }, " Close ")
93
+ ]),
94
+ t("iframe", {
95
+ class: "ss-dash-email-iframe",
96
+ id: "ss-dash-email-iframe",
97
+ srcdoc: p.value,
98
+ title: "Email preview",
99
+ sandbox: ""
100
+ }, null, 8, J)
101
+ ])) : (l(), n(c, { key: 1 }, [
102
+ B(q, {
103
+ "model-value": _.value,
104
+ placeholder: "Filter emails...",
105
+ summary: `${r(m).total ?? 0} emails`,
106
+ "onUpdate:modelValue": $
107
+ }, null, 8, ["model-value", "summary"]),
108
+ r(P) && !r(v) ? (l(), n("div", O, "Loading emails...")) : (l(), n(c, { key: 1 }, [
109
+ t("div", Q, [
110
+ h.value.length > 0 ? (l(), n("table", {
111
+ key: 0,
112
+ ref_key: "tableRef",
113
+ ref: A,
114
+ class: "ss-dash-table"
115
+ }, [
116
+ s[9] || (s[9] = t("colgroup", null, [
117
+ t("col", { style: { width: "40px" } }),
118
+ t("col", { style: { width: "150px" } }),
119
+ t("col", { style: { width: "150px" } }),
120
+ t("col"),
121
+ t("col", { style: { width: "80px" } }),
122
+ t("col", { style: { width: "40px" } }),
123
+ t("col", { style: { width: "70px" } }),
124
+ t("col", { style: { width: "80px" } })
125
+ ], -1)),
126
+ s[10] || (s[10] = t("thead", null, [
127
+ t("tr", null, [
128
+ t("th", null, "#"),
129
+ t("th", null, "From"),
130
+ t("th", null, "To"),
131
+ t("th", null, "Subject"),
132
+ t("th", null, "Status"),
133
+ t("th", null, "ATT"),
134
+ t("th", null, "Mailer"),
135
+ t("th", null, "Time")
136
+ ])
137
+ ], -1)),
138
+ t("tbody", null, [
139
+ (l(!0), n(c, null, D(h.value, (e) => (l(), n("tr", {
140
+ key: e.id,
141
+ class: "ss-dash-clickable ss-dash-email-row",
142
+ onClick: (it) => N(e)
143
+ }, [
144
+ t("td", null, [
145
+ t("span", X, i(e.id), 1)
146
+ ]),
147
+ t("td", null, [
148
+ t("span", {
149
+ title: e.from_addr || e.from || "",
150
+ style: { color: "var(--ss-text-secondary)", overflow: "hidden", "text-overflow": "ellipsis", "white-space": "nowrap", display: "block" }
151
+ }, i(e.from_addr || e.from || ""), 9, Y)
152
+ ]),
153
+ t("td", null, [
154
+ t("span", {
155
+ title: e.to_addr || e.to || "",
156
+ style: { color: "var(--ss-text-secondary)", overflow: "hidden", "text-overflow": "ellipsis", "white-space": "nowrap", display: "block" }
157
+ }, i(e.to_addr || e.to || ""), 9, Z)
158
+ ]),
159
+ t("td", null, [
160
+ t("span", {
161
+ title: e.subject || "",
162
+ style: { color: "var(--ss-sql-color)", overflow: "hidden", "text-overflow": "ellipsis", "white-space": "nowrap", display: "block" }
163
+ }, i(e.subject || ""), 9, tt)
164
+ ]),
165
+ t("td", null, [
166
+ t("span", {
167
+ class: g(`ss-dash-badge ss-dash-email-status-${e.status || ""}`)
168
+ }, i(e.status), 3)
169
+ ]),
170
+ t("td", null, [
171
+ (e.attachment_count || e.attachmentCount || 0) > 0 ? (l(), n("span", et, i(e.attachment_count || e.attachmentCount || 0), 1)) : (l(), n("span", st, "-"))
172
+ ]),
173
+ t("td", null, [
174
+ t("span", {
175
+ title: e.mailer || "",
176
+ style: { color: "var(--ss-muted)", overflow: "hidden", "text-overflow": "ellipsis", "white-space": "nowrap", display: "block" }
177
+ }, i(e.mailer || ""), 9, lt)
178
+ ]),
179
+ t("td", null, [
180
+ t("span", {
181
+ class: "ss-dash-event-time",
182
+ style: { "white-space": "nowrap" },
183
+ title: r(z)(
184
+ e.createdAt || e.created_at || e.timestamp
185
+ )
186
+ }, i(r(L)(
187
+ e.createdAt || e.created_at || e.timestamp
188
+ )), 9, at)
189
+ ])
190
+ ], 8, W))), 128))
191
+ ])
192
+ ], 512)) : (l(), n("div", ot, "No emails captured yet"))
193
+ ]),
194
+ r(m).totalPages > 1 ? (l(), R(H, {
195
+ key: 0,
196
+ page: r(m).page,
197
+ "last-page": r(m).totalPages,
198
+ total: r(m).total,
199
+ onPageChange: r(S)
200
+ }, null, 8, ["page", "last-page", "total", "onPageChange"])) : w("", !0)
201
+ ], 64))
202
+ ], 64))
203
+ ]));
204
+ }
205
+ });
206
+ export {
207
+ vt as default
208
+ };
@@ -65,10 +65,10 @@ const F = { style: { position: "relative", height: "100%" } }, P = {
65
65
  }
66
66
  }
67
67
  }
68
- function L() {
68
+ function x() {
69
69
  n.value = null, r.value = null, m.value = !1;
70
70
  }
71
- const { tableRef: x } = $(() => g.value);
71
+ const { tableRef: L } = $(() => g.value);
72
72
  return (l, e) => (o(), i("div", F, [
73
73
  n.value ? (o(), i("div", P, [
74
74
  t("div", V, [
@@ -99,13 +99,14 @@ const F = { style: { position: "relative", height: "100%" } }, P = {
99
99
  t("button", {
100
100
  type: "button",
101
101
  class: "ss-dbg-btn-clear",
102
- onClick: L
102
+ onClick: x
103
103
  }, "×")
104
104
  ]),
105
105
  m.value ? (o(), i("div", M, "Loading preview...")) : r.value ? (o(), i("iframe", {
106
106
  key: 1,
107
107
  class: "ss-dbg-email-iframe",
108
- srcdoc: r.value
108
+ srcdoc: r.value,
109
+ sandbox: ""
109
110
  }, null, 8, R)) : (o(), i("div", D, "No HTML content"))
110
111
  ])) : p("", !0),
111
112
  n.value ? p("", !0) : (o(), i(_, { key: 1 }, [
@@ -123,7 +124,7 @@ const F = { style: { position: "relative", height: "100%" } }, P = {
123
124
  g.value.length === 0 ? (o(), i("div", G, "No emails captured")) : (o(), i("table", {
124
125
  key: 1,
125
126
  ref_key: "tableRef",
126
- ref: x,
127
+ ref: L,
127
128
  class: "ss-dbg-table"
128
129
  }, [
129
130
  e[6] || (e[6] = t("thead", null, [
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as E, inject as i, ref as p, computed as P, openBlock as s, createElementBlock as l, createVNode as v, unref as a, Fragment as h, createElementVNode as e, renderList as T, toDisplayString as c, createBlock as C, createCommentVNode as D } from "vue";
2
2
  import { formatTime as S, timeAgo as V } from "adonisjs-server-stats/core";
3
- import { u as $ } from "./index-30jLw-_w.js";
3
+ import { u as $ } from "./index-14x39RI_.js";
4
4
  import { u as A } from "./useResizableTable-BoivAevK.js";
5
5
  import { _ as B } from "./FilterBar.vue_vue_type_script_setup_true_lang-ClJ37hhT.js";
6
6
  import { _ as R } from "./PaginationControls.vue_vue_type_script_setup_true_lang-CuN7g_8Z.js";
@@ -1,4 +1,4 @@
1
- import { defineComponent as V, ref as C, onMounted as B, onBeforeUnmount as R, computed as k, openBlock as a, createElementBlock as o, toDisplayString as s, Fragment as u, createElementVNode as l, createTextVNode as d, createCommentVNode as c, renderList as v, unref as S, normalizeClass as m, normalizeStyle as F } from "vue";
1
+ import { defineComponent as V, ref as T, onMounted as B, onBeforeUnmount as R, computed as k, openBlock as a, createElementBlock as o, toDisplayString as s, Fragment as u, createElementVNode as l, createTextVNode as d, createCommentVNode as c, renderList as v, unref as C, normalizeClass as m, normalizeStyle as F } from "vue";
2
2
  import { fillPercent as U, getTimerLabel as j, getIntegrationDetails as Q, getIntegrationStatus as H, getIntegrationLabel as O, formatUptime as q, timeAgo as M, formatCollectorConfig as J, UnauthorizedError as K, classifyStatus as W, formatDuration as w } from "adonisjs-server-stats/core";
3
3
  import { u as G } from "./useApiClient-BQQ9CF-q.js";
4
4
  const X = {
@@ -65,11 +65,11 @@ const X = {
65
65
  authToken: {}
66
66
  },
67
67
  setup(L) {
68
- const x = L, z = C(null), y = C(!0), g = C(null);
68
+ const S = L, z = T(null), y = T(!0), g = T(null);
69
69
  let b = null;
70
- const P = G(x.baseUrl || "", x.authToken);
70
+ const P = G(S.baseUrl || "", S.authToken);
71
71
  async function h() {
72
- const r = x.debugEndpoint || "/admin/api/debug";
72
+ const r = S.debugEndpoint || "/admin/api/debug";
73
73
  try {
74
74
  const e = await P().get(`${r}/diagnostics`);
75
75
  z.value = e, g.value = null, y.value = !1;
@@ -86,18 +86,18 @@ const X = {
86
86
  }), R(() => {
87
87
  b && (clearInterval(b), b = null);
88
88
  });
89
- const p = C(/* @__PURE__ */ new Set());
89
+ const p = T(/* @__PURE__ */ new Set());
90
90
  function f(r) {
91
91
  p.value.has(r) ? p.value.delete(r) : p.value.add(r);
92
92
  }
93
- function T(r) {
93
+ function x(r) {
94
94
  const t = W(r);
95
95
  return t === "ok" ? "ss-dbg-dot-ok" : t === "err" ? "ss-dbg-dot-err" : "";
96
96
  }
97
97
  function N(r) {
98
98
  return r.debounceMs !== void 0 ? `${w(r.debounceMs)} (debounce)` : r.intervalMs !== void 0 ? w(r.intervalMs) : "-";
99
99
  }
100
- const E = k(() => z.value || x.data || null), n = k(() => E.value || {}), D = k(() => n.value.buffers ? Object.entries(n.value.buffers).map(([r, t]) => ({
100
+ const E = k(() => z.value || null), n = k(() => E.value || {}), D = k(() => n.value.buffers ? Object.entries(n.value.buffers).map(([r, t]) => ({
101
101
  name: r.charAt(0).toUpperCase() + r.slice(1),
102
102
  ...t,
103
103
  percent: U(t.current, t.max)
@@ -140,7 +140,7 @@ const X = {
140
140
  { label: "Version", value: n.value.package?.version || "-" },
141
141
  { label: "Node.js", value: n.value.package?.nodeVersion || "-" },
142
142
  { label: "AdonisJS", value: n.value.package?.adonisVersion || "-" },
143
- { label: "Uptime", value: S(q)(n.value.package?.uptime) },
143
+ { label: "Uptime", value: C(q)(n.value.package?.uptime) },
144
144
  { label: "Renderer", value: n.value.devToolbar?.renderer || "preact" }
145
145
  ], (e) => (a(), o("div", {
146
146
  key: e.label,
@@ -170,20 +170,20 @@ const X = {
170
170
  ]),
171
171
  l("td", null, [
172
172
  l("span", {
173
- class: m(["ss-dbg-dot", T(e.status)])
173
+ class: m(["ss-dbg-dot", x(e.status)])
174
174
  }, null, 2),
175
175
  d(" " + s(e.status), 1)
176
176
  ]),
177
177
  l("td", rl, [
178
178
  e.lastError ? (a(), o(u, { key: 0 }, [
179
179
  d(s(e.lastError) + " ", 1),
180
- l("span", ul, s(S(M)(e.lastErrorAt ?? 0)), 1)
180
+ l("span", ul, s(C(M)(e.lastErrorAt ?? 0)), 1)
181
181
  ], 64)) : (a(), o(u, { key: 1 }, [
182
182
  d("-")
183
183
  ], 64))
184
184
  ]),
185
185
  l("td", dl, [
186
- Object.keys(e.config || {}).length ? (a(!0), o(u, { key: 0 }, v(S(J)(e.config), (i) => (a(), o("span", {
186
+ Object.keys(e.config || {}).length ? (a(!0), o(u, { key: 0 }, v(C(J)(e.config), (i) => (a(), o("span", {
187
187
  key: i.key,
188
188
  style: { "margin-right": "8px" }
189
189
  }, [
@@ -255,7 +255,7 @@ const X = {
255
255
  l("td", null, s(e.label), 1),
256
256
  l("td", null, [
257
257
  l("span", {
258
- class: m(["ss-dbg-dot", T(e.active ? "active" : "inactive")])
258
+ class: m(["ss-dbg-dot", x(e.active ? "active" : "inactive")])
259
259
  }, null, 2),
260
260
  d(" " + s(e.active ? "active" : "inactive"), 1)
261
261
  ]),
@@ -279,7 +279,7 @@ const X = {
279
279
  l("td", null, s(e.label), 1),
280
280
  l("td", null, [
281
281
  l("span", {
282
- class: m(["ss-dbg-dot", T(e.status)])
282
+ class: m(["ss-dbg-dot", x(e.status)])
283
283
  }, null, 2),
284
284
  d(" " + s(e.status), 1)
285
285
  ]),
@@ -301,7 +301,7 @@ const X = {
301
301
  t[9] || (t[9] = l("td", null, "Status", -1)),
302
302
  l("td", null, [
303
303
  l("span", {
304
- class: m(["ss-dbg-dot", T(n.value.storage.ready ? "ready" : "unavailable")])
304
+ class: m(["ss-dbg-dot", x(n.value.storage.ready ? "ready" : "unavailable")])
305
305
  }, null, 2),
306
306
  d(" " + s(n.value.storage.ready ? "ready" : "not ready"), 1)
307
307
  ])
@@ -324,7 +324,7 @@ const X = {
324
324
  ]),
325
325
  l("tr", null, [
326
326
  t[14] || (t[14] = l("td", null, "Last Cleanup", -1)),
327
- l("td", null, s(S(M)(n.value.storage.lastCleanupAt ?? 0)), 1)
327
+ l("td", null, s(C(M)(n.value.storage.lastCleanupAt ?? 0)), 1)
328
328
  ])
329
329
  ])
330
330
  ]),
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as L, inject as h, ref as p, computed as g, openBlock as o, createElementBlock as d, createElementVNode as s, toDisplayString as n, createCommentVNode as v, createVNode as k, unref as a, withCtx as z, Fragment as _, renderList as x, normalizeClass as w, withModifiers as K, createBlock as M } from "vue";
2
2
  import { extractJobs as O, extractJobStats as Q, JOB_STATUS_FILTERS as W, getJobStatusBadgeColor as q, formatDuration as G, formatTime as H, timeAgo as X } from "adonisjs-server-stats/core";
3
- import { u as Y } from "./index-30jLw-_w.js";
3
+ import { u as Y } from "./index-14x39RI_.js";
4
4
  import { u as Z } from "./useResizableTable-BoivAevK.js";
5
5
  import { _ as I } from "./JsonViewer.vue_vue_type_script_setup_true_lang-Bid05zpm.js";
6
6
  import { _ as j } from "./FilterBar.vue_vue_type_script_setup_true_lang-ClJ37hhT.js";
@@ -0,0 +1,260 @@
1
+ import { defineComponent as ne, inject as b, ref as r, computed as U, openBlock as a, createElementBlock as o, createVNode as M, unref as s, withCtx as ue, createElementVNode as n, Fragment as q, renderList as x, normalizeClass as $, toDisplayString as u, withKeys as V, createCommentVNode as _, createStaticVNode as ie, createTextVNode as w, withModifiers as O, createBlock as re } from "vue";
2
+ import { LOG_LEVELS as de, getStructuredData as m, getLogLevelCssClass as ce, resolveLogLevel as j, resolveLogTimestamp as F, formatTime as ve, timeAgo as pe, resolveLogRequestId as g, resolveLogMessage as he } from "adonisjs-server-stats/core";
3
+ import { _ as _e } from "./JsonViewer.vue_vue_type_script_setup_true_lang-Bid05zpm.js";
4
+ import { u as fe } from "./index-14x39RI_.js";
5
+ import { _ as me } from "./FilterBar.vue_vue_type_script_setup_true_lang-ClJ37hhT.js";
6
+ import { _ as ge } from "./PaginationControls.vue_vue_type_script_setup_true_lang-CuN7g_8Z.js";
7
+ const ye = { class: "ss-dash-log-filters" }, ke = ["onClick"], Ce = ["value"], be = { class: "ss-dash-structured-search" }, qe = ["value"], $e = ["value"], Fe = ["value"], Le = {
8
+ key: 0,
9
+ class: "ss-dash-filter-chips"
10
+ }, Se = {
11
+ key: 0,
12
+ class: "ss-dash-filter-chip"
13
+ }, Ie = {
14
+ key: 1,
15
+ class: "ss-dash-filter-chip"
16
+ }, xe = ["onClick"], Ve = {
17
+ key: 1,
18
+ class: "ss-dash-empty"
19
+ }, we = {
20
+ key: 2,
21
+ class: "ss-dash-empty"
22
+ }, Ee = {
23
+ key: 3,
24
+ class: "ss-dash-empty"
25
+ }, Ke = {
26
+ key: 4,
27
+ class: "ss-dash-log-entries"
28
+ }, Ne = ["onClick"], De = ["title"], Pe = ["title", "onClick", "onKeydown"], Te = {
29
+ key: 1,
30
+ class: "ss-dash-log-reqid-empty"
31
+ }, Re = {
32
+ key: 3,
33
+ style: { width: "14px" }
34
+ }, Ae = { class: "ss-dash-log-msg" }, Be = {
35
+ key: 0,
36
+ class: "ss-dash-log-detail"
37
+ }, Je = /* @__PURE__ */ ne({
38
+ __name: "LogsSection",
39
+ setup(Ue) {
40
+ const z = b("ss-refresh-key", r(0)), G = b("ss-dashboard-endpoint", "/__stats/api"), H = b("ss-auth-token", void 0), J = b("ss-base-url", ""), {
41
+ data: y,
42
+ loading: Q,
43
+ error: W,
44
+ pagination: f,
45
+ goToPage: X,
46
+ setSearch: Y,
47
+ setFilter: i
48
+ } = fe(() => "logs", {
49
+ baseUrl: J,
50
+ dashboardEndpoint: G,
51
+ authToken: H,
52
+ refreshKey: z
53
+ }), E = r(""), c = r("all"), d = r(""), p = r(""), k = r(null), h = r([]), L = r("level"), S = r("equals"), C = r(""), K = U(() => {
54
+ if (!y.value) return [];
55
+ const t = y.value;
56
+ return t.data || t.logs || y.value || [];
57
+ }), Z = U(
58
+ () => c.value !== "all" || d.value !== "" || h.value.length > 0
59
+ );
60
+ function ee(t, l) {
61
+ l && (k.value = k.value === t ? null : t);
62
+ }
63
+ function te(t) {
64
+ E.value = t, Y(t);
65
+ }
66
+ function se(t) {
67
+ c.value = t, t === "all" ? i("level", "") : i("level", t);
68
+ }
69
+ function N(t) {
70
+ d.value = t, p.value = t, i("request_id", t);
71
+ }
72
+ function le() {
73
+ const t = p.value.trim();
74
+ d.value = t, i("request_id", t);
75
+ }
76
+ function D() {
77
+ d.value = "", p.value = "", i("request_id", "");
78
+ }
79
+ function ae() {
80
+ c.value = "all", i("level", "");
81
+ }
82
+ let P = [];
83
+ function T() {
84
+ const t = [];
85
+ h.value.forEach((l, e) => {
86
+ t.push(`filter_field_${e}`, `filter_op_${e}`, `filter_value_${e}`);
87
+ });
88
+ for (const l of P)
89
+ t.includes(l) || i(l, "");
90
+ h.value.forEach((l, e) => {
91
+ i(`filter_field_${e}`, l.field), i(`filter_op_${e}`, l.operator), i(`filter_value_${e}`, l.value);
92
+ }), P = t;
93
+ }
94
+ function R() {
95
+ const t = C.value.trim();
96
+ t && (h.value.push({
97
+ field: L.value,
98
+ operator: S.value,
99
+ value: t
100
+ }), C.value = "", T());
101
+ }
102
+ function oe(t) {
103
+ h.value.splice(t, 1), T();
104
+ }
105
+ function A(t) {
106
+ return t.target.value;
107
+ }
108
+ function B(t) {
109
+ return t.target.value;
110
+ }
111
+ return (t, l) => (a(), o("div", null, [
112
+ M(me, {
113
+ "model-value": E.value,
114
+ placeholder: "Search logs...",
115
+ summary: `${s(f).total ?? 0} logs`,
116
+ "onUpdate:modelValue": te
117
+ }, {
118
+ default: ue(() => [
119
+ n("div", ye, [
120
+ (a(!0), o(q, null, x(s(de), (e) => (a(), o("button", {
121
+ key: e,
122
+ type: "button",
123
+ class: $(`ss-dash-log-filter ${c.value === e ? "ss-dash-active" : ""}`),
124
+ onClick: (v) => se(e)
125
+ }, u(e), 11, ke))), 128)),
126
+ n("input", {
127
+ type: "text",
128
+ class: "ss-dash-filter-input ss-dash-reqid-input",
129
+ placeholder: "Filter by request ID...",
130
+ value: p.value,
131
+ onInput: l[0] || (l[0] = (e) => p.value = A(e)),
132
+ onKeydown: V(le, ["enter"])
133
+ }, null, 40, Ce),
134
+ p.value || d.value ? (a(), o("button", {
135
+ key: 0,
136
+ type: "button",
137
+ class: "ss-dash-btn ss-dash-reqid-clear",
138
+ onClick: D
139
+ }, " Clear ")) : _("", !0)
140
+ ])
141
+ ]),
142
+ _: 1
143
+ }, 8, ["model-value", "summary"]),
144
+ n("div", be, [
145
+ n("select", {
146
+ class: "ss-dash-filter-select",
147
+ value: L.value,
148
+ onChange: l[1] || (l[1] = (e) => L.value = B(e))
149
+ }, [...l[4] || (l[4] = [
150
+ ie('<option value="level">level</option><option value="message">message</option><option value="request_id">request_id</option><option value="userId">userId</option><option value="email">email</option><option value="path">path</option>', 6)
151
+ ])], 40, qe),
152
+ n("select", {
153
+ class: "ss-dash-filter-select",
154
+ value: S.value,
155
+ onChange: l[2] || (l[2] = (e) => S.value = B(e))
156
+ }, [...l[5] || (l[5] = [
157
+ n("option", { value: "equals" }, "equals", -1),
158
+ n("option", { value: "contains" }, "contains", -1),
159
+ n("option", { value: "starts_with" }, "starts with", -1)
160
+ ])], 40, $e),
161
+ n("input", {
162
+ class: "ss-dash-filter-input",
163
+ placeholder: "Value...",
164
+ value: C.value,
165
+ onInput: l[3] || (l[3] = (e) => C.value = A(e)),
166
+ onKeydown: V(R, ["enter"])
167
+ }, null, 40, Fe),
168
+ n("button", {
169
+ type: "button",
170
+ class: "ss-dash-btn",
171
+ onClick: R
172
+ }, "Add")
173
+ ]),
174
+ Z.value ? (a(), o("div", Le, [
175
+ c.value !== "all" ? (a(), o("span", Se, [
176
+ w(" level: " + u(c.value) + " ", 1),
177
+ n("button", {
178
+ type: "button",
179
+ class: "ss-dash-filter-chip-remove",
180
+ onClick: ae
181
+ }, " × ")
182
+ ])) : _("", !0),
183
+ d.value ? (a(), o("span", Ie, [
184
+ w(" requestId: " + u(d.value.slice(0, 8)) + "... ", 1),
185
+ n("button", {
186
+ type: "button",
187
+ class: "ss-dash-filter-chip-remove",
188
+ onClick: D
189
+ }, " × ")
190
+ ])) : _("", !0),
191
+ (a(!0), o(q, null, x(h.value, (e, v) => (a(), o("span", {
192
+ key: v,
193
+ class: "ss-dash-filter-chip"
194
+ }, [
195
+ w(u(e.field) + " " + u(e.operator) + ' "' + u(e.value) + '" ', 1),
196
+ n("button", {
197
+ type: "button",
198
+ class: "ss-dash-filter-chip-remove",
199
+ onClick: (I) => oe(v)
200
+ }, " × ", 8, xe)
201
+ ]))), 128))
202
+ ])) : _("", !0),
203
+ s(W) ? (a(), o("div", Ve, "Failed to load logs")) : s(Q) && !s(y) ? (a(), o("div", we, "Loading logs...")) : K.value.length === 0 ? (a(), o("div", Ee, " No log entries" + u(d.value ? ` matching request ${d.value}` : c.value !== "all" ? ` for ${c.value}` : ""), 1)) : (a(), o("div", Ke, [
204
+ (a(!0), o(q, null, x(K.value, (e, v) => (a(), o(q, {
205
+ key: String(e.id || v)
206
+ }, [
207
+ n("div", {
208
+ class: $([
209
+ "ss-dash-log-entry",
210
+ { "ss-dash-log-entry-expandable": !!s(m)(e) }
211
+ ]),
212
+ onClick: (I) => ee(v, !!s(m)(e))
213
+ }, [
214
+ n("span", {
215
+ class: $(`ss-dash-log-level ${s(ce)(s(j)(e), "ss-dash-log-level")}`)
216
+ }, u(s(j)(e).toUpperCase()), 3),
217
+ n("span", {
218
+ class: "ss-dash-log-time",
219
+ title: s(F)(e) ? s(ve)(s(F)(e)) : ""
220
+ }, u(s(F)(e) ? s(pe)(s(F)(e)) : "-"), 9, De),
221
+ s(g)(e) ? (a(), o("span", {
222
+ key: 0,
223
+ class: "ss-dash-log-reqid",
224
+ title: s(g)(e),
225
+ role: "button",
226
+ tabindex: "0",
227
+ onClick: O((I) => N(s(g)(e)), ["stop"]),
228
+ onKeydown: V(O((I) => N(s(g)(e)), ["stop"]), ["enter"])
229
+ }, u(s(g)(e).slice(0, 8)), 41, Pe)) : (a(), o("span", Te, "--")),
230
+ s(m)(e) ? (a(), o("span", {
231
+ key: 2,
232
+ class: $([
233
+ "ss-dash-log-expand-icon",
234
+ { "ss-dash-log-expand-icon-open": k.value === v }
235
+ ])
236
+ }, "▶", 2)) : (a(), o("span", Re)),
237
+ n("span", Ae, u(s(he)(e)), 1)
238
+ ], 10, Ne),
239
+ k.value === v && s(m)(e) ? (a(), o("div", Be, [
240
+ M(_e, {
241
+ value: s(m)(e),
242
+ "class-prefix": "ss-dash",
243
+ "default-expanded": ""
244
+ }, null, 8, ["value"])
245
+ ])) : _("", !0)
246
+ ], 64))), 128))
247
+ ])),
248
+ s(f).totalPages > 1 ? (a(), re(ge, {
249
+ key: 5,
250
+ page: s(f).page,
251
+ "last-page": s(f).totalPages,
252
+ total: s(f).total,
253
+ onPageChange: s(X)
254
+ }, null, 8, ["page", "last-page", "total", "onPageChange"])) : _("", !0)
255
+ ]));
256
+ }
257
+ });
258
+ export {
259
+ Je as default
260
+ };