@c9up/ream 0.2.28 → 0.2.30

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 (293) hide show
  1. package/README.md +5 -6
  2. package/dist/Codemods.d.ts +24 -0
  3. package/dist/Codemods.d.ts.map +1 -1
  4. package/dist/Codemods.js +211 -1
  5. package/dist/Codemods.js.map +1 -1
  6. package/dist/HttpKernel.d.ts.map +1 -1
  7. package/dist/HttpKernel.js +17 -5
  8. package/dist/HttpKernel.js.map +1 -1
  9. package/dist/Ignitor.d.ts +15 -2
  10. package/dist/Ignitor.d.ts.map +1 -1
  11. package/dist/Ignitor.js +33 -23
  12. package/dist/Ignitor.js.map +1 -1
  13. package/dist/bodyparser/BodyParserMiddleware.d.ts +4 -4
  14. package/dist/bodyparser/BodyParserMiddleware.d.ts.map +1 -1
  15. package/dist/bodyparser/BodyParserMiddleware.js +41 -11
  16. package/dist/bodyparser/BodyParserMiddleware.js.map +1 -1
  17. package/dist/bodyparser/MultipartFile.d.ts +21 -15
  18. package/dist/bodyparser/MultipartFile.d.ts.map +1 -1
  19. package/dist/bodyparser/MultipartFile.js +40 -58
  20. package/dist/bodyparser/MultipartFile.js.map +1 -1
  21. package/dist/bodyparser/parseSize.d.ts +7 -4
  22. package/dist/bodyparser/parseSize.d.ts.map +1 -1
  23. package/dist/bodyparser/parseSize.js +12 -17
  24. package/dist/bodyparser/parseSize.js.map +1 -1
  25. package/dist/bodyparser/qsParse.d.ts +20 -1
  26. package/dist/bodyparser/qsParse.d.ts.map +1 -1
  27. package/dist/bodyparser/qsParse.js +78 -25
  28. package/dist/bodyparser/qsParse.js.map +1 -1
  29. package/dist/codemods/source.d.ts +57 -0
  30. package/dist/codemods/source.d.ts.map +1 -0
  31. package/dist/codemods/source.js +282 -0
  32. package/dist/codemods/source.js.map +1 -0
  33. package/dist/console/prompts.d.ts.map +1 -1
  34. package/dist/console/prompts.js +3 -1
  35. package/dist/console/prompts.js.map +1 -1
  36. package/dist/container/Container.d.ts.map +1 -1
  37. package/dist/container/Container.js +61 -71
  38. package/dist/container/Container.js.map +1 -1
  39. package/dist/events/Emitter.d.ts +12 -0
  40. package/dist/events/Emitter.d.ts.map +1 -1
  41. package/dist/events/Emitter.js +36 -9
  42. package/dist/events/Emitter.js.map +1 -1
  43. package/dist/events/helix/helpers.d.ts.map +1 -1
  44. package/dist/events/helix/helpers.js +19 -9
  45. package/dist/events/helix/helpers.js.map +1 -1
  46. package/dist/graphql/GraphQLEngine.d.ts +8 -0
  47. package/dist/graphql/GraphQLEngine.d.ts.map +1 -1
  48. package/dist/graphql/GraphQLEngine.js +79 -12
  49. package/dist/graphql/GraphQLEngine.js.map +1 -1
  50. package/dist/helpers/MessageBuilder.d.ts +4 -2
  51. package/dist/helpers/MessageBuilder.d.ts.map +1 -1
  52. package/dist/helpers/MessageBuilder.js +4 -2
  53. package/dist/helpers/MessageBuilder.js.map +1 -1
  54. package/dist/helpers/errors.d.ts +11 -0
  55. package/dist/helpers/errors.d.ts.map +1 -0
  56. package/dist/helpers/errors.js +17 -0
  57. package/dist/helpers/errors.js.map +1 -0
  58. package/dist/helpers/napi-loader.d.ts.map +1 -1
  59. package/dist/helpers/napi-loader.js +3 -2
  60. package/dist/helpers/napi-loader.js.map +1 -1
  61. package/dist/http/Exception.d.ts +14 -1
  62. package/dist/http/Exception.d.ts.map +1 -1
  63. package/dist/http/Exception.js +10 -2
  64. package/dist/http/Exception.js.map +1 -1
  65. package/dist/http/HttpContext.d.ts +31 -2
  66. package/dist/http/HttpContext.d.ts.map +1 -1
  67. package/dist/http/HttpContext.js +12 -5
  68. package/dist/http/HttpContext.js.map +1 -1
  69. package/dist/http/RedirectBuilder.d.ts +9 -3
  70. package/dist/http/RedirectBuilder.d.ts.map +1 -1
  71. package/dist/http/RedirectBuilder.js +43 -37
  72. package/dist/http/RedirectBuilder.js.map +1 -1
  73. package/dist/http/Request.d.ts +42 -17
  74. package/dist/http/Request.d.ts.map +1 -1
  75. package/dist/http/Request.js +80 -58
  76. package/dist/http/Request.js.map +1 -1
  77. package/dist/http/Response.d.ts +7 -4
  78. package/dist/http/Response.d.ts.map +1 -1
  79. package/dist/http/Response.js +14 -6
  80. package/dist/http/Response.js.map +1 -1
  81. package/dist/http/SseStream.js +6 -7
  82. package/dist/http/SseStream.js.map +1 -1
  83. package/dist/http/permissions.d.ts +25 -0
  84. package/dist/http/permissions.d.ts.map +1 -0
  85. package/dist/http/permissions.js +38 -0
  86. package/dist/http/permissions.js.map +1 -0
  87. package/dist/http-client/HttpClient.d.ts +111 -0
  88. package/dist/http-client/HttpClient.d.ts.map +1 -0
  89. package/dist/http-client/HttpClient.js +386 -0
  90. package/dist/http-client/HttpClient.js.map +1 -0
  91. package/dist/http-client/addresses.d.ts +14 -0
  92. package/dist/http-client/addresses.d.ts.map +1 -0
  93. package/dist/http-client/addresses.js +57 -0
  94. package/dist/http-client/addresses.js.map +1 -0
  95. package/dist/http-client/fake.d.ts +50 -0
  96. package/dist/http-client/fake.d.ts.map +1 -0
  97. package/dist/http-client/fake.js +95 -0
  98. package/dist/http-client/fake.js.map +1 -0
  99. package/dist/http-client/index.d.ts +7 -0
  100. package/dist/http-client/index.d.ts.map +1 -0
  101. package/dist/http-client/index.js +7 -0
  102. package/dist/http-client/index.js.map +1 -0
  103. package/dist/index.d.ts +4 -3
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +1 -1
  106. package/dist/index.js.map +1 -1
  107. package/dist/middleware/Pipeline.d.ts.map +1 -1
  108. package/dist/middleware/Pipeline.js +6 -3
  109. package/dist/middleware/Pipeline.js.map +1 -1
  110. package/dist/native/generated.d.ts +93 -36
  111. package/dist/native/generated.d.ts.map +1 -1
  112. package/dist/profiler/Profiler.d.ts.map +1 -1
  113. package/dist/profiler/Profiler.js +4 -1
  114. package/dist/profiler/Profiler.js.map +1 -1
  115. package/dist/profiler/client.generated.d.ts +5 -0
  116. package/dist/profiler/client.generated.d.ts.map +1 -0
  117. package/dist/profiler/client.generated.js +6 -0
  118. package/dist/profiler/client.generated.js.map +1 -0
  119. package/dist/profiler/collectors.d.ts +92 -13
  120. package/dist/profiler/collectors.d.ts.map +1 -1
  121. package/dist/profiler/collectors.js +106 -19
  122. package/dist/profiler/collectors.js.map +1 -1
  123. package/dist/profiler/endpoint.d.ts +2 -1
  124. package/dist/profiler/endpoint.d.ts.map +1 -1
  125. package/dist/profiler/endpoint.js +25 -1
  126. package/dist/profiler/endpoint.js.map +1 -1
  127. package/dist/profiler/index.d.ts +8 -4
  128. package/dist/profiler/index.d.ts.map +1 -1
  129. package/dist/profiler/index.js +11 -4
  130. package/dist/profiler/index.js.map +1 -1
  131. package/dist/profiler/middleware.d.ts.map +1 -1
  132. package/dist/profiler/middleware.js +76 -10
  133. package/dist/profiler/middleware.js.map +1 -1
  134. package/dist/profiler/preview.d.ts +17 -0
  135. package/dist/profiler/preview.d.ts.map +1 -0
  136. package/dist/profiler/preview.js +100 -0
  137. package/dist/profiler/preview.js.map +1 -0
  138. package/dist/profiler/toolbar.d.ts +15 -23
  139. package/dist/profiler/toolbar.d.ts.map +1 -1
  140. package/dist/profiler/toolbar.js +25 -91
  141. package/dist/profiler/toolbar.js.map +1 -1
  142. package/dist/profiler/types.d.ts +6 -1
  143. package/dist/profiler/types.d.ts.map +1 -1
  144. package/dist/router/Router.d.ts +6 -0
  145. package/dist/router/Router.d.ts.map +1 -1
  146. package/dist/router/Router.js +115 -12
  147. package/dist/router/Router.js.map +1 -1
  148. package/dist/rpc/RpcProvider.d.ts +6 -0
  149. package/dist/rpc/RpcProvider.d.ts.map +1 -1
  150. package/dist/rpc/RpcProvider.js +4 -1
  151. package/dist/rpc/RpcProvider.js.map +1 -1
  152. package/dist/rpc/RpcRouter.d.ts +27 -14
  153. package/dist/rpc/RpcRouter.d.ts.map +1 -1
  154. package/dist/rpc/RpcRouter.js +97 -40
  155. package/dist/rpc/RpcRouter.js.map +1 -1
  156. package/dist/scheduler/Scheduler.js +1 -1
  157. package/dist/scheduler/Scheduler.js.map +1 -1
  158. package/dist/scheduler/locks/RedisLockBackend.d.ts.map +1 -1
  159. package/dist/scheduler/locks/RedisLockBackend.js +13 -2
  160. package/dist/scheduler/locks/RedisLockBackend.js.map +1 -1
  161. package/dist/security/CookieSigner.d.ts.map +1 -1
  162. package/dist/security/CookieSigner.js +32 -8
  163. package/dist/security/CookieSigner.js.map +1 -1
  164. package/dist/security/SignedUrl.d.ts.map +1 -1
  165. package/dist/security/SignedUrl.js +16 -19
  166. package/dist/security/SignedUrl.js.map +1 -1
  167. package/dist/server/Server.d.ts +44 -12
  168. package/dist/server/Server.d.ts.map +1 -1
  169. package/dist/server/Server.js +31 -10
  170. package/dist/server/Server.js.map +1 -1
  171. package/dist/server/nativeGrpc.d.ts +27 -0
  172. package/dist/server/nativeGrpc.d.ts.map +1 -0
  173. package/dist/server/nativeGrpc.js +47 -0
  174. package/dist/server/nativeGrpc.js.map +1 -0
  175. package/dist/server/nativeLimits.d.ts +57 -0
  176. package/dist/server/nativeLimits.d.ts.map +1 -0
  177. package/dist/server/nativeLimits.js +75 -0
  178. package/dist/server/nativeLimits.js.map +1 -0
  179. package/dist/session/Session.d.ts +12 -0
  180. package/dist/session/Session.d.ts.map +1 -1
  181. package/dist/session/Session.js +13 -4
  182. package/dist/session/Session.js.map +1 -1
  183. package/dist/session/SessionMiddleware.d.ts.map +1 -1
  184. package/dist/session/SessionMiddleware.js +28 -9
  185. package/dist/session/SessionMiddleware.js.map +1 -1
  186. package/dist/session/config.d.ts +5 -0
  187. package/dist/session/config.d.ts.map +1 -1
  188. package/dist/session/config.js +8 -0
  189. package/dist/session/config.js.map +1 -1
  190. package/dist/session/drivers/MemoryDriver.d.ts.map +1 -1
  191. package/dist/session/drivers/MemoryDriver.js +26 -7
  192. package/dist/session/drivers/MemoryDriver.js.map +1 -1
  193. package/dist/session/errors.d.ts +17 -0
  194. package/dist/session/errors.d.ts.map +1 -1
  195. package/dist/session/errors.js +21 -0
  196. package/dist/session/errors.js.map +1 -1
  197. package/dist/session/templateTags.d.ts +14 -0
  198. package/dist/session/templateTags.d.ts.map +1 -1
  199. package/dist/session/templateTags.js +45 -17
  200. package/dist/session/templateTags.js.map +1 -1
  201. package/dist/storage/StaticMiddleware.d.ts.map +1 -1
  202. package/dist/storage/StaticMiddleware.js +49 -27
  203. package/dist/storage/StaticMiddleware.js.map +1 -1
  204. package/dist/testing/ApiResponse.d.ts.map +1 -1
  205. package/dist/testing/ApiResponse.js +7 -1
  206. package/dist/testing/ApiResponse.js.map +1 -1
  207. package/dist/testing/TestClient.d.ts.map +1 -1
  208. package/dist/testing/TestClient.js +16 -4
  209. package/dist/testing/TestClient.js.map +1 -1
  210. package/dist/utils/Macroable.d.ts +1 -1
  211. package/dist/utils/Macroable.js +2 -2
  212. package/dist/utils/Macroable.js.map +1 -1
  213. package/events.darwin-arm64.node +0 -0
  214. package/events.darwin-x64.node +0 -0
  215. package/events.linux-arm64-gnu.node +0 -0
  216. package/events.linux-x64-gnu.node +0 -0
  217. package/events.win32-x64-msvc.node +0 -0
  218. package/index.darwin-arm64.node +0 -0
  219. package/index.darwin-x64.node +0 -0
  220. package/index.linux-arm64-gnu.node +0 -0
  221. package/index.linux-x64-gnu.node +0 -0
  222. package/index.win32-x64-msvc.node +0 -0
  223. package/package.json +11 -3
  224. package/scheduler.darwin-arm64.node +0 -0
  225. package/scheduler.darwin-x64.node +0 -0
  226. package/scheduler.linux-arm64-gnu.node +0 -0
  227. package/scheduler.linux-x64-gnu.node +0 -0
  228. package/scheduler.win32-x64-msvc.node +0 -0
  229. package/src/Codemods.ts +314 -3
  230. package/src/HttpKernel.ts +18 -7
  231. package/src/Ignitor.ts +58 -26
  232. package/src/bodyparser/BodyParserMiddleware.ts +45 -16
  233. package/src/bodyparser/MultipartFile.ts +46 -67
  234. package/src/bodyparser/parseSize.ts +17 -17
  235. package/src/bodyparser/qsParse.ts +96 -26
  236. package/src/codemods/source.ts +303 -0
  237. package/src/console/prompts.ts +3 -1
  238. package/src/container/Container.ts +97 -81
  239. package/src/events/Emitter.ts +37 -10
  240. package/src/events/helix/helpers.ts +24 -19
  241. package/src/graphql/GraphQLEngine.ts +91 -14
  242. package/src/helpers/MessageBuilder.ts +4 -2
  243. package/src/helpers/errors.ts +16 -0
  244. package/src/helpers/napi-loader.ts +3 -2
  245. package/src/http/Exception.ts +17 -2
  246. package/src/http/HttpContext.ts +34 -5
  247. package/src/http/RedirectBuilder.ts +51 -37
  248. package/src/http/Request.ts +102 -58
  249. package/src/http/Response.ts +15 -7
  250. package/src/http/SseStream.ts +6 -7
  251. package/src/http/permissions.ts +47 -0
  252. package/src/http-client/HttpClient.ts +505 -0
  253. package/src/http-client/addresses.ts +58 -0
  254. package/src/http-client/fake.ts +141 -0
  255. package/src/http-client/index.ts +21 -0
  256. package/src/index.ts +6 -1
  257. package/src/middleware/Pipeline.ts +7 -3
  258. package/src/native/generated.ts +106 -48
  259. package/src/profiler/Profiler.ts +4 -1
  260. package/src/profiler/client/toolbar.css +595 -0
  261. package/src/profiler/client/toolbar.js +1299 -0
  262. package/src/profiler/client.generated.ts +7 -0
  263. package/src/profiler/collectors.ts +156 -19
  264. package/src/profiler/endpoint.ts +27 -1
  265. package/src/profiler/index.ts +17 -3
  266. package/src/profiler/middleware.ts +74 -9
  267. package/src/profiler/preview.ts +104 -0
  268. package/src/profiler/toolbar.ts +28 -91
  269. package/src/profiler/types.ts +6 -1
  270. package/src/router/Router.ts +136 -13
  271. package/src/rpc/RpcProvider.ts +10 -1
  272. package/src/rpc/RpcRouter.ts +129 -45
  273. package/src/scheduler/Scheduler.ts +1 -1
  274. package/src/scheduler/locks/RedisLockBackend.ts +12 -4
  275. package/src/security/CookieSigner.ts +30 -8
  276. package/src/security/SignedUrl.ts +18 -17
  277. package/src/server/Server.ts +60 -12
  278. package/src/server/nativeGrpc.ts +59 -0
  279. package/src/server/nativeLimits.ts +111 -0
  280. package/src/session/Session.ts +29 -4
  281. package/src/session/SessionMiddleware.ts +30 -10
  282. package/src/session/config.ts +7 -0
  283. package/src/session/drivers/MemoryDriver.ts +26 -7
  284. package/src/session/errors.ts +31 -0
  285. package/src/session/templateTags.ts +57 -0
  286. package/src/storage/StaticMiddleware.ts +46 -27
  287. package/src/testing/ApiResponse.ts +7 -1
  288. package/src/testing/TestClient.ts +14 -5
  289. package/src/utils/Macroable.ts +2 -2
  290. package/scripts/build-napi-types.mjs +0 -69
  291. package/scripts/copy-napi.mjs +0 -121
  292. package/scripts/generate-mime.mjs +0 -119
  293. package/scripts/generate-napi-types.mjs +0 -187
@@ -0,0 +1,595 @@
1
+ /*
2
+ * The debug toolbar's stylesheet. Loaded into the bar's shadow root from
3
+ * /__ream/profiler/_assets/toolbar.css: a same-origin stylesheet passes a
4
+ * `style-src 'self'` policy, where an inline one would be dropped.
5
+ */
6
+
7
+ :host {
8
+ all: initial;
9
+ }
10
+
11
+ * {
12
+ box-sizing: border-box;
13
+ }
14
+
15
+ .rp {
16
+ --bg: #17191d;
17
+ --bg-2: #1f2228;
18
+ --bg-3: #272b33;
19
+ --line: #2f343d;
20
+ --text: #e6e8eb;
21
+ --muted: #8b939e;
22
+ --accent: #6cb6ff;
23
+ --ok: #3fb950;
24
+ --warn: #d29922;
25
+ --bad: #f85149;
26
+ --bar: 34px;
27
+ position: fixed;
28
+ left: 0;
29
+ right: 0;
30
+ bottom: 0;
31
+ z-index: 2147483000;
32
+ display: flex;
33
+ flex-direction: column;
34
+ color: var(--text);
35
+ font:
36
+ 12px / 1.45 ui-sans-serif,
37
+ system-ui,
38
+ -apple-system,
39
+ "Segoe UI",
40
+ sans-serif;
41
+ text-align: left;
42
+ }
43
+
44
+ .rp[data-closed] {
45
+ left: auto;
46
+ right: 8px;
47
+ bottom: 8px;
48
+ }
49
+
50
+ .mono,
51
+ .sql,
52
+ pre,
53
+ code {
54
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
55
+ font-size: 12px;
56
+ }
57
+
58
+ button {
59
+ font: inherit;
60
+ color: inherit;
61
+ background: none;
62
+ border: 0;
63
+ cursor: pointer;
64
+ padding: 0;
65
+ }
66
+
67
+ /* The closed state: one small button in the corner. */
68
+ .restore {
69
+ display: none;
70
+ width: 34px;
71
+ height: 34px;
72
+ border-radius: 8px;
73
+ background: var(--bg);
74
+ border: 1px solid var(--line);
75
+ color: var(--accent);
76
+ font-weight: 700;
77
+ box-shadow: 0 2px 10px rgb(0 0 0 / 0.4);
78
+ }
79
+
80
+ .rp[data-closed] .restore {
81
+ display: block;
82
+ }
83
+
84
+ /* ── The bar ─────────────────────────────────────────────── */
85
+
86
+ .bar {
87
+ display: flex;
88
+ align-items: stretch;
89
+ height: var(--bar);
90
+ background: var(--bg);
91
+ border-top: 1px solid var(--line);
92
+ box-shadow: 0 -2px 10px rgb(0 0 0 / 0.35);
93
+ }
94
+
95
+ .item {
96
+ position: relative;
97
+ display: flex;
98
+ align-items: center;
99
+ gap: 6px;
100
+ padding: 0 11px;
101
+ border-right: 1px solid var(--line);
102
+ white-space: nowrap;
103
+ cursor: pointer;
104
+ }
105
+
106
+ .item:hover,
107
+ .item:focus-visible,
108
+ .item[data-active] {
109
+ background: var(--bg-2);
110
+ outline: none;
111
+ }
112
+
113
+ .item .label {
114
+ color: var(--muted);
115
+ }
116
+
117
+ .item .value {
118
+ font-weight: 600;
119
+ }
120
+
121
+ .item[data-tone="ok"] .value {
122
+ color: var(--ok);
123
+ }
124
+
125
+ .item[data-tone="warn"] {
126
+ box-shadow: inset 0 -3px 0 var(--warn);
127
+ }
128
+
129
+ .item[data-tone="warn"] .value {
130
+ color: var(--warn);
131
+ }
132
+
133
+ .item[data-tone="bad"] {
134
+ box-shadow: inset 0 -3px 0 var(--bad);
135
+ }
136
+
137
+ .item[data-tone="bad"] .value {
138
+ color: var(--bad);
139
+ }
140
+
141
+ .status {
142
+ display: inline-block;
143
+ min-width: 34px;
144
+ padding: 2px 6px;
145
+ border-radius: 4px;
146
+ text-align: center;
147
+ font-weight: 700;
148
+ color: #fff;
149
+ background: #238636;
150
+ }
151
+
152
+ .status[data-tone="warn"] {
153
+ background: #9e6a03;
154
+ }
155
+
156
+ .status[data-tone="bad"] {
157
+ background: #b62324;
158
+ }
159
+
160
+ .spacer {
161
+ flex: 1;
162
+ min-width: 0;
163
+ display: flex;
164
+ align-items: center;
165
+ padding: 0 10px;
166
+ color: var(--muted);
167
+ overflow: hidden;
168
+ text-overflow: ellipsis;
169
+ white-space: nowrap;
170
+ }
171
+
172
+ .viewing {
173
+ margin-left: 8px;
174
+ padding: 1px 8px;
175
+ border-radius: 999px;
176
+ background: #1f3a5f;
177
+ color: var(--accent);
178
+ }
179
+
180
+ .tool {
181
+ display: flex;
182
+ align-items: center;
183
+ justify-content: center;
184
+ width: 34px;
185
+ border-left: 1px solid var(--line);
186
+ color: var(--muted);
187
+ }
188
+
189
+ .tool:hover {
190
+ color: var(--text);
191
+ background: var(--bg-2);
192
+ }
193
+
194
+ a {
195
+ color: var(--accent);
196
+ text-decoration: none;
197
+ }
198
+
199
+ a:hover {
200
+ text-decoration: underline;
201
+ }
202
+
203
+ /* ── Hover summaries ─────────────────────────────────────── */
204
+
205
+ .info {
206
+ display: none;
207
+ position: absolute;
208
+ bottom: calc(100% + 1px);
209
+ left: 0;
210
+ min-width: 240px;
211
+ max-width: 520px;
212
+ max-height: 420px;
213
+ overflow: auto;
214
+ padding: 8px 10px;
215
+ background: var(--bg-2);
216
+ border: 1px solid var(--line);
217
+ border-radius: 6px 6px 0 0;
218
+ box-shadow: 0 -4px 14px rgb(0 0 0 / 0.4);
219
+ cursor: default;
220
+ white-space: normal;
221
+ }
222
+
223
+ .item:hover .info,
224
+ .item:focus-within .info {
225
+ display: block;
226
+ }
227
+
228
+ .rp[data-open] .item .info {
229
+ display: none;
230
+ }
231
+
232
+ .row {
233
+ display: flex;
234
+ gap: 12px;
235
+ padding: 3px 0;
236
+ }
237
+
238
+ .row b {
239
+ flex: 0 0 130px;
240
+ color: var(--muted);
241
+ font-weight: 500;
242
+ }
243
+
244
+ .row span {
245
+ overflow-wrap: anywhere;
246
+ }
247
+
248
+ /* ── The panel ───────────────────────────────────────────── */
249
+
250
+ .panel {
251
+ display: none;
252
+ flex-direction: column;
253
+ background: var(--bg);
254
+ border-top: 1px solid var(--line);
255
+ box-shadow: 0 -4px 16px rgb(0 0 0 / 0.4);
256
+ }
257
+
258
+ .rp[data-open] .panel {
259
+ display: flex;
260
+ }
261
+
262
+ .rp[data-closed] .bar,
263
+ .rp[data-closed] .panel {
264
+ display: none;
265
+ }
266
+
267
+ .grip {
268
+ height: 5px;
269
+ cursor: row-resize;
270
+ background: var(--bg-3);
271
+ }
272
+
273
+ .grip:hover {
274
+ background: var(--accent);
275
+ }
276
+
277
+ .tabs {
278
+ display: flex;
279
+ gap: 2px;
280
+ padding: 0 6px;
281
+ border-bottom: 1px solid var(--line);
282
+ background: var(--bg-2);
283
+ overflow-x: auto;
284
+ }
285
+
286
+ .tab {
287
+ padding: 7px 12px;
288
+ color: var(--muted);
289
+ border-bottom: 2px solid transparent;
290
+ white-space: nowrap;
291
+ }
292
+
293
+ .tab:hover {
294
+ color: var(--text);
295
+ }
296
+
297
+ .tab[data-active] {
298
+ color: var(--text);
299
+ border-bottom-color: var(--accent);
300
+ }
301
+
302
+ .tab .count {
303
+ margin-left: 6px;
304
+ padding: 0 6px;
305
+ border-radius: 999px;
306
+ background: var(--bg-3);
307
+ color: var(--text);
308
+ font-size: 11px;
309
+ }
310
+
311
+ .tab .count[data-tone="warn"] {
312
+ background: #5c4106;
313
+ }
314
+
315
+ .tab .count[data-tone="bad"] {
316
+ background: #6e1a1b;
317
+ }
318
+
319
+ .body {
320
+ flex: 1;
321
+ overflow: auto;
322
+ padding: 10px 12px 14px;
323
+ }
324
+
325
+ .toolbar {
326
+ display: flex;
327
+ flex-wrap: wrap;
328
+ align-items: center;
329
+ gap: 8px;
330
+ margin-bottom: 10px;
331
+ color: var(--muted);
332
+ }
333
+
334
+ .toolbar input[type="search"] {
335
+ min-width: 220px;
336
+ padding: 4px 8px;
337
+ border: 1px solid var(--line);
338
+ border-radius: 4px;
339
+ background: var(--bg-2);
340
+ color: var(--text);
341
+ font: inherit;
342
+ }
343
+
344
+ .chip {
345
+ display: inline-block;
346
+ padding: 1px 7px;
347
+ border-radius: 999px;
348
+ background: var(--bg-3);
349
+ color: var(--muted);
350
+ font-size: 11px;
351
+ }
352
+
353
+ button.chip[data-off] {
354
+ text-decoration: line-through;
355
+ opacity: 0.55;
356
+ }
357
+
358
+ .chip[data-tone="warn"] {
359
+ background: #5c4106;
360
+ color: #f2cc60;
361
+ }
362
+
363
+ .chip[data-tone="bad"] {
364
+ background: #6e1a1b;
365
+ color: #ffa198;
366
+ }
367
+
368
+ .chip[data-tone="ok"] {
369
+ background: #133d20;
370
+ color: #7ee787;
371
+ }
372
+
373
+ .btn {
374
+ padding: 3px 9px;
375
+ border: 1px solid var(--line);
376
+ border-radius: 4px;
377
+ background: var(--bg-2);
378
+ }
379
+
380
+ .btn:hover,
381
+ .btn[data-on] {
382
+ border-color: var(--accent);
383
+ color: var(--accent);
384
+ }
385
+
386
+ .list {
387
+ border-top: 1px solid var(--line);
388
+ }
389
+
390
+ .entry {
391
+ display: grid;
392
+ grid-template-columns: 78px 1fr auto;
393
+ gap: 10px;
394
+ padding: 6px 4px;
395
+ border-bottom: 1px solid var(--line);
396
+ cursor: pointer;
397
+ }
398
+
399
+ .entry:hover {
400
+ background: var(--bg-2);
401
+ }
402
+
403
+ .entry[data-tone="warn"] {
404
+ box-shadow: inset 3px 0 0 var(--warn);
405
+ }
406
+
407
+ .entry[data-tone="bad"] {
408
+ box-shadow: inset 3px 0 0 var(--bad);
409
+ }
410
+
411
+ .entry .num {
412
+ color: var(--muted);
413
+ text-align: right;
414
+ }
415
+
416
+ .entry .meter {
417
+ height: 3px;
418
+ margin-top: 4px;
419
+ background: var(--accent);
420
+ border-radius: 2px;
421
+ opacity: 0.6;
422
+ }
423
+
424
+ .entry .extra {
425
+ display: none;
426
+ grid-column: 2 / 4;
427
+ }
428
+
429
+ .entry[data-expanded] .extra {
430
+ display: block;
431
+ }
432
+
433
+ .sql {
434
+ white-space: pre-wrap;
435
+ overflow-wrap: anywhere;
436
+ }
437
+
438
+ .meta {
439
+ color: var(--muted);
440
+ }
441
+
442
+ .bad {
443
+ color: var(--bad);
444
+ }
445
+
446
+ pre {
447
+ margin: 6px 0 0;
448
+ padding: 8px;
449
+ max-height: 320px;
450
+ overflow: auto;
451
+ border-radius: 4px;
452
+ background: var(--bg-2);
453
+ white-space: pre-wrap;
454
+ overflow-wrap: anywhere;
455
+ }
456
+
457
+ h3 {
458
+ margin: 14px 0 6px;
459
+ font-size: 11px;
460
+ font-weight: 600;
461
+ letter-spacing: 0.06em;
462
+ text-transform: uppercase;
463
+ color: var(--muted);
464
+ }
465
+
466
+ h3:first-child {
467
+ margin-top: 0;
468
+ }
469
+
470
+ table {
471
+ width: 100%;
472
+ border-collapse: collapse;
473
+ }
474
+
475
+ td,
476
+ th {
477
+ padding: 4px 8px;
478
+ border-bottom: 1px solid var(--line);
479
+ text-align: left;
480
+ vertical-align: top;
481
+ }
482
+
483
+ th {
484
+ color: var(--muted);
485
+ font-weight: 500;
486
+ }
487
+
488
+ td.key {
489
+ width: 200px;
490
+ color: var(--muted);
491
+ }
492
+
493
+ tr.pick {
494
+ cursor: pointer;
495
+ }
496
+
497
+ tr.pick:hover,
498
+ tr.pick[data-active] {
499
+ background: var(--bg-2);
500
+ }
501
+
502
+ .empty {
503
+ padding: 18px 4px;
504
+ color: var(--muted);
505
+ }
506
+
507
+ /* ── Timeline ────────────────────────────────────────────── */
508
+
509
+ .lane {
510
+ display: grid;
511
+ grid-template-columns: 260px 1fr 70px;
512
+ align-items: center;
513
+ gap: 10px;
514
+ padding: 3px 0;
515
+ }
516
+
517
+ .lane .name {
518
+ overflow: hidden;
519
+ text-overflow: ellipsis;
520
+ white-space: nowrap;
521
+ }
522
+
523
+ .track {
524
+ position: relative;
525
+ height: 12px;
526
+ background: var(--bg-2);
527
+ border-radius: 2px;
528
+ }
529
+
530
+ .span {
531
+ position: absolute;
532
+ top: 0;
533
+ bottom: 0;
534
+ min-width: 2px;
535
+ border-radius: 2px;
536
+ background: var(--accent);
537
+ }
538
+
539
+ .legend::before {
540
+ content: "";
541
+ display: inline-block;
542
+ width: 8px;
543
+ height: 8px;
544
+ margin-right: 5px;
545
+ border-radius: 2px;
546
+ background: var(--accent);
547
+ }
548
+
549
+ .legend[data-kind="request"]::before {
550
+ background: #3b4250;
551
+ }
552
+
553
+ .legend[data-kind="query"]::before {
554
+ background: #a371f7;
555
+ }
556
+
557
+ .legend[data-kind="log"]::before {
558
+ background: var(--warn);
559
+ }
560
+
561
+ .legend[data-kind="event"]::before {
562
+ background: var(--ok);
563
+ }
564
+
565
+ .span[data-kind="request"] {
566
+ background: #3b4250;
567
+ }
568
+
569
+ .span[data-kind="query"] {
570
+ background: #a371f7;
571
+ }
572
+
573
+ .span[data-kind="log"] {
574
+ background: var(--warn);
575
+ }
576
+
577
+ .span[data-kind="event"] {
578
+ background: var(--ok);
579
+ }
580
+
581
+ @media (max-width: 760px) {
582
+ .item .label {
583
+ display: none;
584
+ }
585
+
586
+ .lane {
587
+ grid-template-columns: 140px 1fr 56px;
588
+ }
589
+ }
590
+
591
+ @media print {
592
+ .rp {
593
+ display: none;
594
+ }
595
+ }