@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
@@ -11,14 +11,19 @@
11
11
  * `db:query`, which is the shape atlas documents for bridging its own registry
12
12
  * (`onDbQuery((event) => emitter.emit('db:query', event))`). A project on
13
13
  * another data layer emits the same event and gets the same panel.
14
+ *
15
+ * Every entry is stamped with `at`, milliseconds since the request arrived, so
16
+ * the bar can lay queries, log lines and events out on one timeline.
14
17
  */
15
- import type { CollectedData, ProfilerCollector } from './types.js';
18
+ import type { CollectedData, CollectionScope, ProfilerCollector } from './types.js';
16
19
  /** One SQL statement, as the panel shows it. */
17
20
  export interface RecordedQuery {
18
21
  sql: string;
19
22
  bindings: readonly unknown[];
20
23
  /** Milliseconds. */
21
24
  duration: number;
25
+ /** When it started, milliseconds since the request arrived. */
26
+ at: number;
22
27
  connection?: string;
23
28
  model?: string;
24
29
  method?: string;
@@ -32,16 +37,41 @@ export interface QueryEventSource {
32
37
  }
33
38
  export declare function databaseCollector(events: QueryEventSource, read: () => QueryBag | undefined): ProfilerCollector<QueryBag>;
34
39
  export interface QueryBag {
40
+ scope: CollectionScope;
35
41
  total: number;
42
+ failed: number;
36
43
  duration: number;
37
44
  queries: RecordedQuery[];
38
45
  }
39
- /** The request and what it answered. */
46
+ /**
47
+ * The request and what it answered.
48
+ *
49
+ * Filled by the profiling middleware once the handler has run — routing, the
50
+ * session and the user are only known then. Every value that came from the
51
+ * client goes through {@link preview}, which caps it and hides secrets.
52
+ */
40
53
  export declare function requestCollector(): ProfilerCollector<RequestBag>;
41
54
  export interface RequestBag {
42
55
  route?: string;
56
+ pattern?: string;
43
57
  controller?: string;
44
58
  userId?: string;
59
+ user?: unknown;
60
+ path?: string;
61
+ ip?: string;
62
+ requestId?: string;
63
+ ajax?: boolean;
64
+ params?: unknown;
65
+ query?: unknown;
66
+ body?: unknown;
67
+ headers?: unknown;
68
+ cookies?: string[];
69
+ session?: unknown;
70
+ response?: {
71
+ status: number;
72
+ contentType?: string;
73
+ headers: unknown;
74
+ };
45
75
  }
46
76
  /**
47
77
  * What went wrong, if anything.
@@ -70,36 +100,85 @@ export interface ExceptionBag {
70
100
  export declare function logCollector(events: LogEventSource, read: () => LogBag | undefined): {
71
101
  name: string;
72
102
  badge: (data: CollectedData) => string | undefined;
73
- start: () => {
103
+ start: (scope: CollectionScope) => {
104
+ scope: CollectionScope;
74
105
  total: number;
106
+ errors: number;
107
+ warnings: number;
75
108
  lines: never[];
76
109
  };
77
110
  finish: (bag: LogBag) => {
78
111
  total?: undefined;
112
+ errors?: undefined;
113
+ warnings?: undefined;
79
114
  lines?: undefined;
80
115
  } | {
81
116
  total: number;
82
- lines: {
83
- level: string;
84
- message: string;
85
- time?: string;
86
- }[];
117
+ errors: number;
118
+ warnings: number;
119
+ lines: LogLine[];
87
120
  };
88
121
  };
89
122
  /** What the emitter must give the log collector. Structural, as above. */
90
123
  export interface LogEventSource {
91
124
  on(event: string, listener: (payload: unknown) => void): unknown;
92
125
  }
126
+ export interface LogLine {
127
+ level: string;
128
+ message: string;
129
+ time?: string;
130
+ /** Milliseconds since the request arrived. */
131
+ at: number;
132
+ context?: unknown;
133
+ }
93
134
  export interface LogBag {
135
+ scope: CollectionScope;
94
136
  total: number;
95
- lines: Array<{
96
- level: string;
97
- message: string;
98
- time?: string;
137
+ errors: number;
138
+ warnings: number;
139
+ lines: LogLine[];
140
+ }
141
+ /**
142
+ * Every event the application emitted while the request ran — cache hits,
143
+ * mail sent, authorisation checks, the application's own domain events.
144
+ *
145
+ * It reads them through the emitter's `tap`, which runs in the emitting code's
146
+ * async context. `onAny` would not do: it is delivered through the native bus,
147
+ * later and outside the request. Queries and log lines are left out: they have
148
+ * their own panels.
149
+ */
150
+ export declare function eventsCollector(source: EventTapSource, read: () => EventBag | undefined): ProfilerCollector<EventBag>;
151
+ /** What the emitter must give the events collector. Structural. */
152
+ export interface EventTapSource {
153
+ tap(observer: (event: string, data: unknown) => void): unknown;
154
+ }
155
+ export interface EventBag {
156
+ scope: CollectionScope;
157
+ total: number;
158
+ events: Array<{
159
+ name: string;
160
+ at: number;
161
+ data: unknown;
99
162
  }>;
100
163
  }
101
- /** Peak heap while the request ran, which is what a leak shows up in. */
164
+ /** Heap and resident memory once the request is answered. */
102
165
  export declare function memoryCollector(): ProfilerCollector<{
103
166
  start: number;
104
167
  }>;
168
+ /** The application and the runtime it answered on: the bar's right-hand item. */
169
+ export declare function appCollector(info?: {
170
+ version?: string;
171
+ environment?: string;
172
+ }): {
173
+ name: string;
174
+ start: () => undefined;
175
+ finish: () => {
176
+ node: string;
177
+ environment: string;
178
+ platform: string;
179
+ pid: number;
180
+ uptime: number;
181
+ ream?: string | undefined;
182
+ };
183
+ };
105
184
  //# sourceMappingURL=collectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collectors.d.ts","sourceRoot":"","sources":["../../src/profiler/collectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAElE,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IAC5B,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,kFAAkF;AAClF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAA;CACjE;AAWD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,QAAQ,GAAG,SAAS,GAC/B,iBAAiB,CAAC,QAAQ,CAAC,CA8B7B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,wCAAwC;AACxC,wBAAgB,gBAAgB,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAOhE;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAOpE;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,MAAM,GAAG,SAAS;;;;;;;;;;;;;mBAkC3D,MAAM;qBAAW,MAAM;mBAAS,MAAM;;;EAZ7D;AAED,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAA;CACjE;AAKD,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChE;AAWD,yEAAyE;AACzE,wBAAgB,eAAe,IAAI,iBAAiB,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAatE"}
1
+ {"version":3,"file":"collectors.d.ts","sourceRoot":"","sources":["../../src/profiler/collectors.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,11 @@
11
11
  * `db:query`, which is the shape atlas documents for bridging its own registry
12
12
  * (`onDbQuery((event) => emitter.emit('db:query', event))`). A project on
13
13
  * another data layer emits the same event and gets the same panel.
14
+ *
15
+ * Every entry is stamped with `at`, milliseconds since the request arrived, so
16
+ * the bar can lay queries, log lines and events out on one timeline.
14
17
  */
18
+ import { preview } from './preview.js';
15
19
  /**
16
20
  * How many statements one request may record.
17
21
  *
@@ -28,10 +32,15 @@ export function databaseCollector(events, read) {
28
32
  const bag = read();
29
33
  if (bag === undefined)
30
34
  return;
35
+ const duration = durationOf(payload);
31
36
  bag.total += 1;
32
- bag.duration += durationOf(payload);
33
- if (bag.queries.length < QUERY_CAP)
34
- bag.queries.push(toQuery(payload));
37
+ bag.duration += duration;
38
+ if (isFailed(payload))
39
+ bag.failed += 1;
40
+ if (bag.queries.length < QUERY_CAP) {
41
+ // The event arrives when the statement ENDS: it started `duration` ago.
42
+ bag.queries.push(toQuery(payload, Math.max(0, bag.scope.elapsed() - duration)));
43
+ }
35
44
  });
36
45
  return {
37
46
  name: 'database',
@@ -40,18 +49,25 @@ export function databaseCollector(events, read) {
40
49
  const duration = typeof data.duration === 'number' ? data.duration : 0;
41
50
  return `${total} ${total === 1 ? 'query' : 'queries'} · ${round(duration)} ms`;
42
51
  },
43
- start: () => ({ total: 0, duration: 0, queries: [] }),
52
+ start: (scope) => ({ scope, total: 0, failed: 0, duration: 0, queries: [] }),
44
53
  finish: (bag) => bag === undefined
45
- ? { total: 0, duration: 0, queries: [], capped: false }
54
+ ? { total: 0, failed: 0, duration: 0, queries: [], capped: false }
46
55
  : {
47
56
  total: bag.total,
57
+ failed: bag.failed,
48
58
  duration: round(bag.duration),
49
59
  queries: bag.queries,
50
60
  capped: bag.total > bag.queries.length,
51
61
  },
52
62
  };
53
63
  }
54
- /** The request and what it answered. */
64
+ /**
65
+ * The request and what it answered.
66
+ *
67
+ * Filled by the profiling middleware once the handler has run — routing, the
68
+ * session and the user are only known then. Every value that came from the
69
+ * client goes through {@link preview}, which caps it and hides secrets.
70
+ */
55
71
  export function requestCollector() {
56
72
  return {
57
73
  name: 'request',
@@ -91,9 +107,14 @@ export function logCollector(events, read) {
91
107
  const bag = read();
92
108
  if (bag === undefined)
93
109
  return;
94
- if (bag.lines.length < LINE_CAP)
95
- bag.lines.push(toLine(payload));
110
+ const line = toLine(payload, bag.scope.elapsed());
96
111
  bag.total += 1;
112
+ if (line.level === 'error' || line.level === 'fatal')
113
+ bag.errors += 1;
114
+ if (line.level === 'warn')
115
+ bag.warnings += 1;
116
+ if (bag.lines.length < LINE_CAP)
117
+ bag.lines.push(line);
97
118
  });
98
119
  return {
99
120
  name: 'logs',
@@ -101,43 +122,106 @@ export function logCollector(events, read) {
101
122
  const total = typeof data.total === 'number' ? data.total : 0;
102
123
  return total === 0 ? undefined : `${total} ${total === 1 ? 'log' : 'logs'}`;
103
124
  },
104
- start: () => ({ total: 0, lines: [] }),
125
+ start: (scope) => ({ scope, total: 0, errors: 0, warnings: 0, lines: [] }),
105
126
  // Nothing logged is nothing to show: an empty bag renders no panel at all,
106
127
  // rather than a heading over an empty list.
107
- finish: (bag) => bag === undefined || bag.total === 0 ? {} : { total: bag.total, lines: bag.lines },
128
+ finish: (bag) => bag === undefined || bag.total === 0
129
+ ? {}
130
+ : { total: bag.total, errors: bag.errors, warnings: bag.warnings, lines: bag.lines },
108
131
  };
109
132
  }
110
133
  /** As many lines as are worth scrolling; the count stays true past it. */
111
134
  const LINE_CAP = 200;
112
- function toLine(payload) {
135
+ /** Fields of a log entry that are its envelope, not its context. */
136
+ const LOG_ENVELOPE = new Set(['level', 'message', 'msg', 'timestamp', 'time']);
137
+ function toLine(payload, at) {
113
138
  const entry = asRecord(payload);
139
+ const message = entry.message ?? entry.msg;
140
+ const context = Object.fromEntries(Object.entries(entry).filter(([key]) => !LOG_ENVELOPE.has(key)));
114
141
  return {
115
142
  level: typeof entry.level === 'string' ? entry.level : 'info',
116
- message: typeof entry.message === 'string' ? entry.message : String(entry.message ?? ''),
143
+ message: typeof message === 'string' ? message : String(message ?? ''),
144
+ at: round(at),
117
145
  ...(typeof entry.timestamp === 'string' ? { time: entry.timestamp } : {}),
146
+ ...(Object.keys(context).length > 0 ? { context: preview(context) } : {}),
118
147
  };
119
148
  }
120
- /** Peak heap while the request ran, which is what a leak shows up in. */
149
+ /**
150
+ * Every event the application emitted while the request ran — cache hits,
151
+ * mail sent, authorisation checks, the application's own domain events.
152
+ *
153
+ * It reads them through the emitter's `tap`, which runs in the emitting code's
154
+ * async context. `onAny` would not do: it is delivered through the native bus,
155
+ * later and outside the request. Queries and log lines are left out: they have
156
+ * their own panels.
157
+ */
158
+ export function eventsCollector(source, read) {
159
+ source.tap((name, data) => {
160
+ if (OWN_PANEL.has(name))
161
+ return;
162
+ const bag = read();
163
+ if (bag === undefined)
164
+ return;
165
+ bag.total += 1;
166
+ if (bag.events.length < EVENT_CAP) {
167
+ bag.events.push({ name, at: round(bag.scope.elapsed()), data: preview(data) });
168
+ }
169
+ });
170
+ return {
171
+ name: 'events',
172
+ badge: (data) => {
173
+ const total = typeof data.total === 'number' ? data.total : 0;
174
+ return total === 0 ? undefined : `${total} ${total === 1 ? 'event' : 'events'}`;
175
+ },
176
+ start: (scope) => ({ scope, total: 0, events: [] }),
177
+ finish: (bag) => bag === undefined || bag.total === 0
178
+ ? {}
179
+ : { total: bag.total, events: bag.events, capped: bag.total > bag.events.length },
180
+ };
181
+ }
182
+ /** Events that already have a panel of their own. */
183
+ const OWN_PANEL = new Set(['db:query', 'log:line']);
184
+ const EVENT_CAP = 300;
185
+ /** Heap and resident memory once the request is answered. */
121
186
  export function memoryCollector() {
122
187
  return {
123
188
  name: 'memory',
124
189
  badge: (data) => (typeof data.usedMb === 'number' ? `${data.usedMb.toFixed(1)} MB` : undefined),
125
190
  start: () => ({ start: process.memoryUsage().heapUsed }),
126
191
  finish: (bag) => {
127
- const used = process.memoryUsage().heapUsed;
192
+ const usage = process.memoryUsage();
128
193
  return {
129
- usedMb: used / 1024 / 1024,
130
- deltaMb: bag === undefined ? 0 : (used - bag.start) / 1024 / 1024,
194
+ usedMb: usage.heapUsed / MB,
195
+ totalMb: usage.heapTotal / MB,
196
+ rssMb: usage.rss / MB,
197
+ deltaMb: bag === undefined ? 0 : (usage.heapUsed - bag.start) / MB,
131
198
  };
132
199
  },
133
200
  };
134
201
  }
135
- function toQuery(payload) {
202
+ const MB = 1024 * 1024;
203
+ /** The application and the runtime it answered on: the bar's right-hand item. */
204
+ export function appCollector(info = {}) {
205
+ return {
206
+ name: 'app',
207
+ start: () => undefined,
208
+ finish: () => ({
209
+ ...(info.version === undefined ? {} : { ream: info.version }),
210
+ node: process.version,
211
+ environment: info.environment ?? process.env.NODE_ENV ?? 'development',
212
+ platform: `${process.platform}-${process.arch}`,
213
+ pid: process.pid,
214
+ uptime: Math.round(process.uptime()),
215
+ }),
216
+ };
217
+ }
218
+ function toQuery(payload, at) {
136
219
  const event = asRecord(payload);
137
220
  return {
138
221
  sql: typeof event.sql === 'string' ? event.sql : String(event.sql ?? ''),
139
- bindings: Array.isArray(event.bindings) ? event.bindings : [],
140
- duration: durationOf(payload),
222
+ bindings: Array.isArray(event.bindings) ? event.bindings.map((value) => preview(value)) : [],
223
+ duration: round(durationOf(payload)),
224
+ at: round(at),
141
225
  ...pickString(event, 'connection'),
142
226
  ...pickString(event, 'model'),
143
227
  ...pickString(event, 'method'),
@@ -145,6 +229,9 @@ function toQuery(payload) {
145
229
  ...(event.error instanceof Error ? { error: event.error.message } : {}),
146
230
  };
147
231
  }
232
+ function isFailed(payload) {
233
+ return asRecord(payload).error instanceof Error;
234
+ }
148
235
  function durationOf(payload) {
149
236
  const value = asRecord(payload).duration;
150
237
  return typeof value === 'number' && Number.isFinite(value) ? value : 0;
@@ -1 +1 @@
1
- {"version":3,"file":"collectors.js","sourceRoot":"","sources":["../../src/profiler/collectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collectors.js","sourceRoot":"","sources":["../../src/profiler/collectors.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * Where the toolbar and the profiler read from.
3
3
  *
4
- * Three routes, all under `/__ream/profiler` and all development-only:
4
+ * All under `/__ream/profiler` and all development-only:
5
5
  *
6
6
  * /__ream/profiler the history, newest first
7
7
  * /__ream/profiler/<token> one request, every panel
8
8
  * /__ream/profiler/<token>.json the same, for the bar in the page
9
+ * /__ream/profiler/_assets/… the bar's own script and stylesheet
9
10
  *
10
11
  * Server middleware rather than routes, like the hot-reload endpoint: it
11
12
  * answers before the application's own middleware, so a profiler request does
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/profiler/endpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAI7C,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,MAAM,CAAA;KAAE,CAAA;IAC9B,QAAQ,EAAE;QACR,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;QAChD,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAA;QAChC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;KAClC,CAAA;CACF;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,GACjB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAgDpE"}
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/profiler/endpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAW7C,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,MAAM,CAAA;KAAE,CAAA;IAC9B,QAAQ,EAAE;QACR,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;QAChD,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAA;QAChC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;KAClC,CAAA;CACF;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,GACjB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAiEpE"}
@@ -1,18 +1,26 @@
1
1
  /**
2
2
  * Where the toolbar and the profiler read from.
3
3
  *
4
- * Three routes, all under `/__ream/profiler` and all development-only:
4
+ * All under `/__ream/profiler` and all development-only:
5
5
  *
6
6
  * /__ream/profiler the history, newest first
7
7
  * /__ream/profiler/<token> one request, every panel
8
8
  * /__ream/profiler/<token>.json the same, for the bar in the page
9
+ * /__ream/profiler/_assets/… the bar's own script and stylesheet
9
10
  *
10
11
  * Server middleware rather than routes, like the hot-reload endpoint: it
11
12
  * answers before the application's own middleware, so a profiler request does
12
13
  * not run the authentication stack and end up in its own history.
13
14
  */
15
+ import { TOOLBAR_CSS, TOOLBAR_JS } from './client.generated.js';
14
16
  import { PROFILER_PATH } from './Profiler.js';
15
17
  import { renderProfileList, renderProfilePage } from './render.js';
18
+ import { PROFILER_ASSETS_PATH } from './toolbar.js';
19
+ /** The bar's files, by the name the page asks for. */
20
+ const ASSETS = {
21
+ 'toolbar.js': { type: 'text/javascript; charset=utf-8', body: TOOLBAR_JS },
22
+ 'toolbar.css': { type: 'text/css; charset=utf-8', body: TOOLBAR_CSS },
23
+ };
16
24
  export function profilerEndpoint(profiler) {
17
25
  return async (ctx, next) => {
18
26
  const path = ctx.request.url().split('?')[0] ?? '';
@@ -20,6 +28,22 @@ export function profilerEndpoint(profiler) {
20
28
  await next();
21
29
  return;
22
30
  }
31
+ if (path.startsWith(`${PROFILER_ASSETS_PATH}/`)) {
32
+ const asset = Object.hasOwn(ASSETS, path.slice(PROFILER_ASSETS_PATH.length + 1))
33
+ ? ASSETS[path.slice(PROFILER_ASSETS_PATH.length + 1)]
34
+ : undefined;
35
+ if (asset === undefined) {
36
+ ctx.response.status(404);
37
+ ctx.response.send('');
38
+ return;
39
+ }
40
+ ctx.response.header('content-type', asset.type);
41
+ // Revalidated each time: the bar changes with the framework, and a stale
42
+ // copy would show the last version's panels after an upgrade.
43
+ ctx.response.header('cache-control', 'no-cache');
44
+ ctx.response.send(asset.body);
45
+ return;
46
+ }
23
47
  if (path === PROFILER_PATH) {
24
48
  ctx.response.header('content-type', 'text/html; charset=utf-8');
25
49
  ctx.response.send(renderProfileList(profiler.store.recent(50)));
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/profiler/endpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/profiler/endpoint.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * rather than a list — and an application that wants its own panel adds a
6
6
  * collector here instead of rebuilding the set.
7
7
  */
8
- import { type QueryEventSource } from './collectors.js';
8
+ import { type EventTapSource, type QueryEventSource } from './collectors.js';
9
9
  import { Profiler } from './Profiler.js';
10
10
  import type { ProfilerCollector } from './types.js';
11
11
  export * from './collectors.js';
@@ -13,14 +13,18 @@ export { profilerEndpoint } from './endpoint.js';
13
13
  export { MemoryProfileStore } from './MemoryProfileStore.js';
14
14
  export { profileRequest } from './middleware.js';
15
15
  export { PROFILER_PATH, PROFILER_TOKEN_HEADER, Profiler } from './Profiler.js';
16
- export { toolbarScript } from './toolbar.js';
16
+ export { isSecretKey, preview, REDACTED } from './preview.js';
17
+ export { PROFILER_ASSETS_PATH, toolbarScript } from './toolbar.js';
17
18
  export * from './types.js';
18
19
  /**
19
20
  * The profiler a dev server runs with.
20
21
  *
21
22
  * `events` is the application's emitter. The database panel comes from
22
23
  * `db:query` on it, which is how a data layer reports a statement without the
23
- * profiler importing one.
24
+ * profiler importing one; the events panel from its `tap`, when it has one.
24
25
  */
25
- export declare function createProfiler(events: QueryEventSource, extra?: readonly ProfilerCollector[]): Profiler;
26
+ export declare function createProfiler(events: QueryEventSource & Partial<EventTapSource>, extra?: readonly ProfilerCollector[], info?: {
27
+ version?: string;
28
+ environment?: string;
29
+ }): Profiler;
26
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profiler/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAOL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,cAAc,YAAY,CAAA;AAE1B;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,gBAAgB,EACxB,KAAK,GAAE,SAAS,iBAAiB,EAAO,GACvC,QAAQ,CAeV"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profiler/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAIL,KAAK,cAAc,EAOnB,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAClE,cAAc,YAAY,CAAA;AAE1B;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,EAClD,KAAK,GAAE,SAAS,iBAAiB,EAAO,EACxC,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,QAAQ,CAuBV"}
@@ -5,7 +5,7 @@
5
5
  * rather than a list — and an application that wants its own panel adds a
6
6
  * collector here instead of rebuilding the set.
7
7
  */
8
- import { databaseCollector, exceptionCollector, logCollector, memoryCollector, requestCollector, } from './collectors.js';
8
+ import { appCollector, databaseCollector, eventsCollector, exceptionCollector, logCollector, memoryCollector, requestCollector, } from './collectors.js';
9
9
  import { MemoryProfileStore } from './MemoryProfileStore.js';
10
10
  import { Profiler } from './Profiler.js';
11
11
  export * from './collectors.js';
@@ -13,16 +13,17 @@ export { profilerEndpoint } from './endpoint.js';
13
13
  export { MemoryProfileStore } from './MemoryProfileStore.js';
14
14
  export { profileRequest } from './middleware.js';
15
15
  export { PROFILER_PATH, PROFILER_TOKEN_HEADER, Profiler } from './Profiler.js';
16
- export { toolbarScript } from './toolbar.js';
16
+ export { isSecretKey, preview, REDACTED } from './preview.js';
17
+ export { PROFILER_ASSETS_PATH, toolbarScript } from './toolbar.js';
17
18
  export * from './types.js';
18
19
  /**
19
20
  * The profiler a dev server runs with.
20
21
  *
21
22
  * `events` is the application's emitter. The database panel comes from
22
23
  * `db:query` on it, which is how a data layer reports a statement without the
23
- * profiler importing one.
24
+ * profiler importing one; the events panel from its `tap`, when it has one.
24
25
  */
25
- export function createProfiler(events, extra = []) {
26
+ export function createProfiler(events, extra = [], info = {}) {
26
27
  // Built before the profiler so the database collector can read the bag of
27
28
  // whichever request is running — the reference is filled in a line later,
28
29
  // and nothing reads it until a request arrives.
@@ -32,7 +33,13 @@ export function createProfiler(events, extra = []) {
32
33
  databaseCollector(events, () => profiler.current('database')),
33
34
  exceptionCollector(),
34
35
  logCollector(events, () => profiler.current('logs')),
36
+ ...(typeof events.tap === 'function'
37
+ ? [
38
+ eventsCollector({ tap: events.tap.bind(events) }, () => profiler.current('events')),
39
+ ]
40
+ : []),
35
41
  memoryCollector(),
42
+ appCollector(info),
36
43
  ...extra,
37
44
  ];
38
45
  profiler = new Profiler(collectors, new MemoryProfileStore(collectors));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profiler/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAElB,YAAY,EACZ,eAAe,EAGf,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,cAAc,YAAY,CAAA;AAE1B;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAwB,EACxB,QAAsC,EAAE;IAExC,0EAA0E;IAC1E,0EAA0E;IAC1E,gDAAgD;IAChD,IAAI,QAAkB,CAAA;IACtB,MAAM,UAAU,GAAwB;QACtC,gBAAgB,EAAE;QAClB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAW,UAAU,CAAC,CAAC;QACvE,kBAAkB,EAAE;QACpB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAS,MAAM,CAAC,CAAC;QAC5D,eAAe,EAAE;QACjB,GAAG,KAAK;KACT,CAAA;IACD,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAA;IACvE,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profiler/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,YAAY,EACZ,iBAAiB,EAGjB,eAAe,EACf,kBAAkB,EAElB,YAAY,EACZ,eAAe,EAGf,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAClE,cAAc,YAAY,CAAA;AAE1B;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAkD,EAClD,QAAsC,EAAE,EACxC,OAAmD,EAAE;IAErD,0EAA0E;IAC1E,0EAA0E;IAC1E,gDAAgD;IAChD,IAAI,QAAkB,CAAA;IACtB,MAAM,UAAU,GAAwB;QACtC,gBAAgB,EAAE;QAClB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAW,UAAU,CAAC,CAAC;QACvE,kBAAkB,EAAE;QACpB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAS,MAAM,CAAC,CAAC;QAC5D,GAAG,CAAC,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU;YAClC,CAAC,CAAC;gBACE,eAAe,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CACrD,QAAQ,CAAC,OAAO,CAAW,QAAQ,CAAC,CACrC;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,eAAe,EAAE;QACjB,YAAY,CAAC,IAAI,CAAC;QAClB,GAAG,KAAK;KACT,CAAA;IACD,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAA;IACvE,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/profiler/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEpE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,kBAAkB,CAqBrE"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/profiler/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGpE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,kBAAkB,CAqBrE"}