@c9up/ream 0.1.33 → 0.2.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 (215) hide show
  1. package/dist/Application.d.ts +68 -0
  2. package/dist/Application.d.ts.map +1 -1
  3. package/dist/Application.js +142 -6
  4. package/dist/Application.js.map +1 -1
  5. package/dist/ConfigLoader.d.ts +4 -0
  6. package/dist/ConfigLoader.d.ts.map +1 -1
  7. package/dist/ConfigLoader.js +0 -8
  8. package/dist/ConfigLoader.js.map +1 -1
  9. package/dist/HealthCheck.d.ts +14 -7
  10. package/dist/HealthCheck.d.ts.map +1 -1
  11. package/dist/HealthCheck.js +21 -12
  12. package/dist/HealthCheck.js.map +1 -1
  13. package/dist/HttpKernel.d.ts +12 -0
  14. package/dist/HttpKernel.d.ts.map +1 -1
  15. package/dist/HttpKernel.js +15 -4
  16. package/dist/HttpKernel.js.map +1 -1
  17. package/dist/Ignitor.d.ts +8 -0
  18. package/dist/Ignitor.d.ts.map +1 -1
  19. package/dist/Ignitor.js +11 -0
  20. package/dist/Ignitor.js.map +1 -1
  21. package/dist/bodyparser/BodyParserMiddleware.d.ts +13 -2
  22. package/dist/bodyparser/BodyParserMiddleware.d.ts.map +1 -1
  23. package/dist/bodyparser/BodyParserMiddleware.js +50 -30
  24. package/dist/bodyparser/BodyParserMiddleware.js.map +1 -1
  25. package/dist/bodyparser/MultipartFile.d.ts +65 -6
  26. package/dist/bodyparser/MultipartFile.d.ts.map +1 -1
  27. package/dist/bodyparser/MultipartFile.js +100 -7
  28. package/dist/bodyparser/MultipartFile.js.map +1 -1
  29. package/dist/console/BaseCommand.d.ts +8 -1
  30. package/dist/console/BaseCommand.d.ts.map +1 -1
  31. package/dist/console/BaseCommand.js +1 -1
  32. package/dist/console/BaseCommand.js.map +1 -1
  33. package/dist/console/Kernel.d.ts +15 -0
  34. package/dist/console/Kernel.d.ts.map +1 -1
  35. package/dist/console/Kernel.js +17 -0
  36. package/dist/console/Kernel.js.map +1 -1
  37. package/dist/directories.d.ts +52 -0
  38. package/dist/directories.d.ts.map +1 -0
  39. package/dist/directories.js +38 -0
  40. package/dist/directories.js.map +1 -0
  41. package/dist/events/Emitter.d.ts +49 -6
  42. package/dist/events/Emitter.d.ts.map +1 -1
  43. package/dist/events/Emitter.js +117 -7
  44. package/dist/events/Emitter.js.map +1 -1
  45. package/dist/events/EventsBuffer.d.ts +47 -0
  46. package/dist/events/EventsBuffer.d.ts.map +1 -0
  47. package/dist/events/EventsBuffer.js +107 -0
  48. package/dist/events/EventsBuffer.js.map +1 -0
  49. package/dist/events/index.d.ts +2 -0
  50. package/dist/events/index.d.ts.map +1 -1
  51. package/dist/events/index.js +1 -0
  52. package/dist/events/index.js.map +1 -1
  53. package/dist/health/BaseCheck.d.ts +19 -0
  54. package/dist/health/BaseCheck.d.ts.map +1 -0
  55. package/dist/health/BaseCheck.js +24 -0
  56. package/dist/health/BaseCheck.js.map +1 -0
  57. package/dist/health/HealthChecks.d.ts +15 -0
  58. package/dist/health/HealthChecks.d.ts.map +1 -0
  59. package/dist/health/HealthChecks.js +69 -0
  60. package/dist/health/HealthChecks.js.map +1 -0
  61. package/dist/health/Result.d.ts +27 -0
  62. package/dist/health/Result.d.ts.map +1 -0
  63. package/dist/health/Result.js +55 -0
  64. package/dist/health/Result.js.map +1 -0
  65. package/dist/health/checks/DiskSpaceCheck.d.ts +29 -0
  66. package/dist/health/checks/DiskSpaceCheck.d.ts.map +1 -0
  67. package/dist/health/checks/DiskSpaceCheck.js +58 -0
  68. package/dist/health/checks/DiskSpaceCheck.js.map +1 -0
  69. package/dist/health/checks/MemoryHeapCheck.d.ts +21 -0
  70. package/dist/health/checks/MemoryHeapCheck.d.ts.map +1 -0
  71. package/dist/health/checks/MemoryHeapCheck.js +55 -0
  72. package/dist/health/checks/MemoryHeapCheck.js.map +1 -0
  73. package/dist/health/checks/MemoryRSSCheck.d.ts +21 -0
  74. package/dist/health/checks/MemoryRSSCheck.d.ts.map +1 -0
  75. package/dist/health/checks/MemoryRSSCheck.js +55 -0
  76. package/dist/health/checks/MemoryRSSCheck.js.map +1 -0
  77. package/dist/health/checks/memory.d.ts +24 -0
  78. package/dist/health/checks/memory.d.ts.map +1 -0
  79. package/dist/health/checks/memory.js +88 -0
  80. package/dist/health/checks/memory.js.map +1 -0
  81. package/dist/health/index.d.ts +9 -0
  82. package/dist/health/index.d.ts.map +1 -0
  83. package/dist/health/index.js +8 -0
  84. package/dist/health/index.js.map +1 -0
  85. package/dist/health/tracing.d.ts +12 -0
  86. package/dist/health/tracing.d.ts.map +1 -0
  87. package/dist/health/tracing.js +11 -0
  88. package/dist/health/tracing.js.map +1 -0
  89. package/dist/health/types.d.ts +51 -0
  90. package/dist/health/types.d.ts.map +1 -0
  91. package/dist/health/types.js +5 -0
  92. package/dist/health/types.js.map +1 -0
  93. package/dist/helpers/bytes.d.ts +28 -0
  94. package/dist/helpers/bytes.d.ts.map +1 -0
  95. package/dist/helpers/bytes.js +63 -0
  96. package/dist/helpers/bytes.js.map +1 -0
  97. package/dist/helpers/string.d.ts +4 -0
  98. package/dist/helpers/string.d.ts.map +1 -1
  99. package/dist/helpers/string.js +2 -0
  100. package/dist/helpers/string.js.map +1 -1
  101. package/dist/http/HttpContext.d.ts +38 -2
  102. package/dist/http/HttpContext.d.ts.map +1 -1
  103. package/dist/http/HttpContext.js +81 -3
  104. package/dist/http/HttpContext.js.map +1 -1
  105. package/dist/http/Request.d.ts +57 -3
  106. package/dist/http/Request.d.ts.map +1 -1
  107. package/dist/http/Request.js +51 -38
  108. package/dist/http/Request.js.map +1 -1
  109. package/dist/http/Response.d.ts +82 -2
  110. package/dist/http/Response.d.ts.map +1 -1
  111. package/dist/http/Response.js +240 -13
  112. package/dist/http/Response.js.map +1 -1
  113. package/dist/http/SseStream.d.ts +10 -0
  114. package/dist/http/SseStream.d.ts.map +1 -1
  115. package/dist/http/SseStream.js.map +1 -1
  116. package/dist/index.d.ts +7 -2
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +4 -1
  119. package/dist/index.js.map +1 -1
  120. package/dist/migrations/MigrationRegistry.d.ts +28 -0
  121. package/dist/migrations/MigrationRegistry.d.ts.map +1 -0
  122. package/dist/migrations/MigrationRegistry.js +41 -0
  123. package/dist/migrations/MigrationRegistry.js.map +1 -0
  124. package/dist/migrations/types.d.ts +64 -0
  125. package/dist/migrations/types.d.ts.map +1 -0
  126. package/dist/migrations/types.js +15 -0
  127. package/dist/migrations/types.js.map +1 -0
  128. package/dist/router/Router.d.ts +112 -9
  129. package/dist/router/Router.d.ts.map +1 -1
  130. package/dist/router/Router.js +206 -28
  131. package/dist/router/Router.js.map +1 -1
  132. package/dist/security/CookieSigner.d.ts +43 -4
  133. package/dist/security/CookieSigner.d.ts.map +1 -1
  134. package/dist/security/CookieSigner.js +68 -10
  135. package/dist/security/CookieSigner.js.map +1 -1
  136. package/dist/session/Session.d.ts +46 -1
  137. package/dist/session/Session.d.ts.map +1 -1
  138. package/dist/session/Session.js +57 -4
  139. package/dist/session/Session.js.map +1 -1
  140. package/dist/session/SessionMiddleware.d.ts.map +1 -1
  141. package/dist/session/SessionMiddleware.js +19 -9
  142. package/dist/session/SessionMiddleware.js.map +1 -1
  143. package/dist/session/drivers/CookieDriver.d.ts +1 -1
  144. package/dist/session/drivers/CookieDriver.d.ts.map +1 -1
  145. package/dist/session/drivers/CookieDriver.js +3 -3
  146. package/dist/session/drivers/CookieDriver.js.map +1 -1
  147. package/dist/session/drivers/DatabaseDriver.d.ts +1 -1
  148. package/dist/session/drivers/DatabaseDriver.d.ts.map +1 -1
  149. package/dist/session/drivers/DatabaseDriver.js +2 -2
  150. package/dist/session/drivers/DatabaseDriver.js.map +1 -1
  151. package/dist/session/drivers/FileDriver.d.ts +1 -1
  152. package/dist/session/drivers/FileDriver.d.ts.map +1 -1
  153. package/dist/session/drivers/FileDriver.js +7 -5
  154. package/dist/session/drivers/FileDriver.js.map +1 -1
  155. package/dist/session/drivers/MemoryDriver.d.ts +1 -1
  156. package/dist/session/drivers/MemoryDriver.d.ts.map +1 -1
  157. package/dist/session/drivers/MemoryDriver.js +1 -1
  158. package/dist/session/drivers/MemoryDriver.js.map +1 -1
  159. package/dist/session/drivers/RedisDriver.d.ts +1 -1
  160. package/dist/session/drivers/RedisDriver.d.ts.map +1 -1
  161. package/dist/session/drivers/RedisDriver.js +11 -4
  162. package/dist/session/drivers/RedisDriver.js.map +1 -1
  163. package/events.win32-x64-msvc.node +0 -0
  164. package/index.darwin-arm64.node +0 -0
  165. package/index.darwin-x64.node +0 -0
  166. package/index.linux-arm64-gnu.node +0 -0
  167. package/index.linux-x64-gnu.node +0 -0
  168. package/index.win32-x64-msvc.node +0 -0
  169. package/package.json +5 -2
  170. package/scheduler.win32-x64-msvc.node +0 -0
  171. package/src/Application.ts +169 -6
  172. package/src/ConfigLoader.ts +6 -0
  173. package/src/HealthCheck.ts +27 -14
  174. package/src/HttpKernel.ts +27 -4
  175. package/src/Ignitor.ts +17 -0
  176. package/src/bodyparser/BodyParserMiddleware.ts +70 -36
  177. package/src/bodyparser/MultipartFile.ts +125 -8
  178. package/src/console/BaseCommand.ts +8 -1
  179. package/src/console/Kernel.ts +18 -0
  180. package/src/directories.ts +81 -0
  181. package/src/events/Emitter.ts +129 -13
  182. package/src/events/EventsBuffer.ts +131 -0
  183. package/src/events/index.ts +7 -0
  184. package/src/health/BaseCheck.ts +30 -0
  185. package/src/health/HealthChecks.ts +83 -0
  186. package/src/health/Result.ts +69 -0
  187. package/src/health/checks/DiskSpaceCheck.ts +69 -0
  188. package/src/health/checks/MemoryHeapCheck.ts +68 -0
  189. package/src/health/checks/MemoryRSSCheck.ts +68 -0
  190. package/src/health/checks/memory.ts +115 -0
  191. package/src/health/index.ts +13 -0
  192. package/src/health/tracing.ts +15 -0
  193. package/src/health/types.ts +51 -0
  194. package/src/helpers/bytes.ts +71 -0
  195. package/src/helpers/string.ts +2 -0
  196. package/src/http/HttpContext.ts +86 -4
  197. package/src/http/Request.ts +82 -10
  198. package/src/http/Response.ts +283 -14
  199. package/src/http/SseStream.ts +10 -0
  200. package/src/index.ts +27 -1
  201. package/src/migrations/MigrationRegistry.ts +49 -0
  202. package/src/migrations/types.ts +68 -0
  203. package/src/router/Router.ts +241 -32
  204. package/src/security/CookieSigner.ts +92 -18
  205. package/src/session/Session.ts +71 -5
  206. package/src/session/SessionMiddleware.ts +19 -9
  207. package/src/session/drivers/CookieDriver.ts +4 -4
  208. package/src/session/drivers/DatabaseDriver.ts +3 -3
  209. package/src/session/drivers/FileDriver.ts +8 -6
  210. package/src/session/drivers/MemoryDriver.ts +2 -2
  211. package/src/session/drivers/RedisDriver.ts +12 -5
  212. package/tsconfig.app.json +13 -13
  213. package/tsconfig.base.json +19 -0
  214. package/tsconfig.client.json +16 -0
  215. package/tsconfig.package.json +15 -0
@@ -11,6 +11,7 @@
11
11
  *
12
12
  * Listeners support @inject() for DI when a container resolver is provided.
13
13
  */
14
+ import { type BufferedEventName, EventsBuffer } from './EventsBuffer.js';
14
15
  import type { EventBus } from './native.js';
15
16
  /**
16
17
  * Listener class interface — must have a handle() method.
@@ -41,6 +42,14 @@ export type ContainerResolver = EmitterResolver;
41
42
  * after the AdonisJS type of the same shape.
42
43
  */
43
44
  export type UnsubscribeFunction = () => void;
45
+ /**
46
+ * What `onAny` hands back. Same shape as {@link UnsubscribeFunction} — and
47
+ * assignable wherever one is expected — but awaitable, because dropping a
48
+ * wildcard subscription is a NAPI call into the Rust bus. Ignore the promise
49
+ * for the AdonisJS behaviour; await it when the next assertion depends on the
50
+ * subscription being gone.
51
+ */
52
+ export type AsyncUnsubscribeFunction = () => Promise<void>;
44
53
  export declare class Emitter {
45
54
  #private;
46
55
  private bus;
@@ -75,7 +84,7 @@ export declare class Emitter {
75
84
  * Register the listener only when `condition` holds (AdonisJS `listenIf`) —
76
85
  * the shape a feature flag takes at boot, without an `if` around every call.
77
86
  */
78
- listenIf<T>(condition: boolean, event: string, listener: ListenerFn<T>): void;
87
+ listenIf<T>(condition: boolean | (() => boolean), event: string, listener: ListenerFn<T>): void;
79
88
  /** Alias of {@link on} (AdonisJS names it `listen`). */
80
89
  listen<T>(event: string, listener: ListenerFn<T>): void;
81
90
  /** Report listener failures (AdonisJS `onError`). */
@@ -88,6 +97,14 @@ export declare class Emitter {
88
97
  clearListeners(event: string): void;
89
98
  /** Drop every listener of every event (AdonisJS `clearAllListeners`). */
90
99
  clearAllListeners(): void;
100
+ /**
101
+ * Every event with the listeners registered for it (AdonisJS
102
+ * `eventsListeners`).
103
+ *
104
+ * Read-only copies: a caller inspecting the map — a debug screen, a test
105
+ * asserting nothing leaked — must not be able to unsubscribe by mutating it.
106
+ */
107
+ get eventsListeners(): Map<EventConstructor | string, Listener[]>;
91
108
  /** How many listeners an event has, or all of them (AdonisJS `listenerCount`). */
92
109
  listenerCount(event?: string): number;
93
110
  /**
@@ -114,6 +131,23 @@ export declare class Emitter {
114
131
  * Dispatch a class-based event. Called by BaseEvent#emit().
115
132
  */
116
133
  dispatchEvent<T extends object>(event: T): Promise<void>;
134
+ /**
135
+ * Stop the named events from reaching their listeners and the bus, and
136
+ * collect them instead.
137
+ *
138
+ * With no argument every event is faked. Calling it again drops the previous
139
+ * fake and starts a fresh buffer, as AdonisJS does.
140
+ *
141
+ * ```ts
142
+ * const events = emitter.fake(['user:registered'])
143
+ * await register(payload)
144
+ * events.assertEmitted('user:registered')
145
+ * emitter.restore()
146
+ * ```
147
+ */
148
+ fake(events?: BufferedEventName[]): EventsBuffer;
149
+ /** Let events through again (AdonisJS `restore`). */
150
+ restore(): void;
117
151
  /**
118
152
  * Subscribe to events matching a wildcard pattern.
119
153
  * Uses Rust wildcard engine via NAPI for pattern matching.
@@ -121,10 +155,19 @@ export declare class Emitter {
121
155
  * emitter.onAny('order.*', (name, data) => { ... }) // single segment
122
156
  * emitter.onAny('order.**', (name, data) => { ... }) // deep match
123
157
  */
124
- onAny(listener: (eventName: string, data: unknown) => void): Promise<number>;
125
- onAny(pattern: string, listener: (eventName: string, data: unknown) => void): Promise<number>;
126
- /** Unsubscribe a wildcard subscription by ID. */
127
- offAny(subscriptionId: number): Promise<void>;
158
+ onAny(listener: (eventName: string, data: unknown) => void): Promise<UnsubscribeFunction>;
159
+ onAny(pattern: string, listener: (eventName: string, data: unknown) => void): Promise<UnsubscribeFunction>;
160
+ /**
161
+ * Stop a wildcard subscription (AdonisJS `offAny`).
162
+ *
163
+ * Takes the listener, as AdonisJS does. The numeric handle the Rust bus
164
+ * issued is also accepted, because that is what the unsubscribe crosses NAPI
165
+ * with and `onAny`'s unsubscribe function closes over it.
166
+ *
167
+ * Async where AdonisJS is sync: dropping the subscription is a NAPI call, and
168
+ * returning before it lands would let an event through after `offAny`.
169
+ */
170
+ offAny(listenerOrId: number | ((eventName: string, data: unknown) => void)): Promise<this>;
128
171
  /** Check if a pattern matches an event name (wildcard matching via Rust). */
129
172
  matchesPattern(pattern: string, eventName: string): boolean;
130
173
  /**
@@ -159,7 +202,7 @@ export declare class Emitter {
159
202
  /**
160
203
  * Check if any listeners are registered for an event.
161
204
  */
162
- hasListeners(event: EventConstructor | string): boolean;
205
+ hasListeners(event?: EventConstructor | string): boolean;
163
206
  /** Get the number of Rust-side subscriptions. */
164
207
  subscriptionCount(): Promise<number>;
165
208
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Emitter.d.ts","sourceRoot":"","sources":["../../src/events/Emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Emitter.d.ts","sourceRoot":"","sources":["../../src/events/Emitter.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@
12
12
  * Listeners support @inject() for DI when a container resolver is provided.
13
13
  */
14
14
  import { AsyncLocalStorage } from 'node:async_hooks';
15
+ import { EventsBuffer } from './EventsBuffer.js';
15
16
  /** Per-request correlation ID stored in async context so concurrent requests don't corrupt each other. */
16
17
  const correlationStorage = new AsyncLocalStorage();
17
18
  export class Emitter {
@@ -19,6 +20,12 @@ export class Emitter {
19
20
  resolver;
20
21
  classListeners = new Map();
21
22
  stringListeners = new Map();
23
+ /** Set while faking; every emission lands here instead of running. */
24
+ #buffer;
25
+ /** Which events are faked. `undefined` means all of them. */
26
+ #fakedEvents;
27
+ /** Wildcard subscriptions, so `offAny(listener)` can find its Rust handle. */
28
+ #anySubscriptions = new Map();
22
29
  constructor(bus, resolver) {
23
30
  this.bus = bus;
24
31
  this.resolver = resolver;
@@ -62,7 +69,9 @@ export class Emitter {
62
69
  * the shape a feature flag takes at boot, without an `if` around every call.
63
70
  */
64
71
  listenIf(condition, event, listener) {
65
- if (condition)
72
+ // AdonisJS takes either — a thunk lets the flag be read at registration
73
+ // time rather than at the call site.
74
+ if (typeof condition === 'function' ? condition() : condition)
66
75
  this.on(event, listener);
67
76
  }
68
77
  /** Alias of {@link on} (AdonisJS names it `listen`). */
@@ -100,6 +109,21 @@ export class Emitter {
100
109
  this.stringListeners.clear();
101
110
  this.classListeners.clear();
102
111
  }
112
+ /**
113
+ * Every event with the listeners registered for it (AdonisJS
114
+ * `eventsListeners`).
115
+ *
116
+ * Read-only copies: a caller inspecting the map — a debug screen, a test
117
+ * asserting nothing leaked — must not be able to unsubscribe by mutating it.
118
+ */
119
+ get eventsListeners() {
120
+ const all = new Map();
121
+ for (const [event, listeners] of this.classListeners)
122
+ all.set(event, [...listeners]);
123
+ for (const [event, listeners] of this.stringListeners)
124
+ all.set(event, [...listeners]);
125
+ return all;
126
+ }
103
127
  /** How many listeners an event has, or all of them (AdonisJS `listenerCount`). */
104
128
  listenerCount(event) {
105
129
  if (event !== undefined)
@@ -151,6 +175,8 @@ export class Emitter {
151
175
  * Use it when order matters — a listener that seeds what the next one reads.
152
176
  */
153
177
  async emitSerial(event, data) {
178
+ if (this.#capture(event, data))
179
+ return;
154
180
  await this.#dispatchListeners(event, data, true);
155
181
  this.#publishToBus(event, data);
156
182
  }
@@ -166,6 +192,8 @@ export class Emitter {
166
192
  * rejects is reported through `emitError`, never left unhandled.
167
193
  */
168
194
  async emit(event, data) {
195
+ if (this.#capture(event, data))
196
+ return;
169
197
  await this.#dispatchListeners(event, data, false);
170
198
  this.#publishToBus(event, data);
171
199
  }
@@ -214,6 +242,10 @@ export class Emitter {
214
242
  */
215
243
  async dispatchEvent(event) {
216
244
  const EventClass = event.constructor;
245
+ // Faked by the class, as AdonisJS does — `fake([TaskDeclared])` catches
246
+ // `new TaskDeclared(...).emit()`.
247
+ if (this.#capture(EventClass, event))
248
+ return;
217
249
  const listeners = this.classListeners.get(EventClass) ?? [];
218
250
  const name = EventClass.eventName ?? classToEventName(EventClass);
219
251
  // Per-listener error isolation — mirrors the string `emit()` contract.
@@ -243,6 +275,49 @@ export class Emitter {
243
275
  // Reached unconditionally: a listener failure above no longer skips it.
244
276
  await this.bus.emit(name, JSON.stringify(this.#wrapForBus(event)));
245
277
  }
278
+ // ─── Faking (AdonisJS `fake` / `restore`) ─────────────────
279
+ /**
280
+ * Stop the named events from reaching their listeners and the bus, and
281
+ * collect them instead.
282
+ *
283
+ * With no argument every event is faked. Calling it again drops the previous
284
+ * fake and starts a fresh buffer, as AdonisJS does.
285
+ *
286
+ * ```ts
287
+ * const events = emitter.fake(['user:registered'])
288
+ * await register(payload)
289
+ * events.assertEmitted('user:registered')
290
+ * emitter.restore()
291
+ * ```
292
+ */
293
+ fake(events) {
294
+ this.restore();
295
+ this.#fakedEvents = events === undefined ? undefined : new Set(events);
296
+ this.#buffer = new EventsBuffer(() => {
297
+ this.restore();
298
+ });
299
+ return this.#buffer;
300
+ }
301
+ /** Let events through again (AdonisJS `restore`). */
302
+ restore() {
303
+ this.#buffer = undefined;
304
+ this.#fakedEvents = undefined;
305
+ }
306
+ /**
307
+ * Record the emission and report whether it was swallowed.
308
+ *
309
+ * Returns `true` when the event is faked — the caller must then return
310
+ * without dispatching or publishing, which is what "the listeners are not
311
+ * invoked" means.
312
+ */
313
+ #capture(event, data) {
314
+ if (this.#buffer === undefined)
315
+ return false;
316
+ if (this.#fakedEvents !== undefined && !this.#fakedEvents.has(event))
317
+ return false;
318
+ this.#buffer.add(event, data);
319
+ return true;
320
+ }
246
321
  async onAny(patternOrListener, maybeListener) {
247
322
  // `onAny(listener)` — every event, the AdonisJS signature. `**` is the
248
323
  // deep-match pattern the Rust matcher already understands, so the two
@@ -252,7 +327,19 @@ export class Emitter {
252
327
  if (listener === undefined) {
253
328
  throw new TypeError('onAny() requires a listener');
254
329
  }
255
- return this.#subscribeAny(pattern, listener);
330
+ const id = await this.#subscribeAny(pattern, listener);
331
+ // AdonisJS hands back the unsubscribe function, not the handle. The Rust
332
+ // subscription id stays reachable through `offAny(id)` because that is what
333
+ // the bus needs, but a caller following the AdonisJS shape never sees it.
334
+ let ids = this.#anySubscriptions.get(listener);
335
+ if (!ids) {
336
+ ids = new Set();
337
+ this.#anySubscriptions.set(listener, ids);
338
+ }
339
+ ids.add(id);
340
+ return async () => {
341
+ await this.offAny(id);
342
+ };
256
343
  }
257
344
  async #subscribeAny(pattern, listener) {
258
345
  return this.bus.subscribe(pattern, (eventJson) => {
@@ -276,9 +363,29 @@ export class Emitter {
276
363
  }
277
364
  });
278
365
  }
279
- /** Unsubscribe a wildcard subscription by ID. */
280
- async offAny(subscriptionId) {
281
- await this.bus.unsubscribe(subscriptionId);
366
+ /**
367
+ * Stop a wildcard subscription (AdonisJS `offAny`).
368
+ *
369
+ * Takes the listener, as AdonisJS does. The numeric handle the Rust bus
370
+ * issued is also accepted, because that is what the unsubscribe crosses NAPI
371
+ * with and `onAny`'s unsubscribe function closes over it.
372
+ *
373
+ * Async where AdonisJS is sync: dropping the subscription is a NAPI call, and
374
+ * returning before it lands would let an event through after `offAny`.
375
+ */
376
+ async offAny(listenerOrId) {
377
+ if (typeof listenerOrId === 'number') {
378
+ await this.bus.unsubscribe(listenerOrId);
379
+ for (const ids of this.#anySubscriptions.values())
380
+ ids.delete(listenerOrId);
381
+ return this;
382
+ }
383
+ const ids = this.#anySubscriptions.get(listenerOrId);
384
+ if (!ids)
385
+ return this;
386
+ this.#anySubscriptions.delete(listenerOrId);
387
+ await Promise.all([...ids].map((id) => this.bus.unsubscribe(id)));
388
+ return this;
282
389
  }
283
390
  /** Check if a pattern matches an event name (wildcard matching via Rust). */
284
391
  matchesPattern(pattern, eventName) {
@@ -350,9 +457,12 @@ export class Emitter {
350
457
  * Check if any listeners are registered for an event.
351
458
  */
352
459
  hasListeners(event) {
353
- if (typeof event === 'string') {
460
+ // AdonisJS makes the argument optional: no argument asks whether ANY event
461
+ // has a listener at all.
462
+ if (event === undefined)
463
+ return this.listenerCount() > 0;
464
+ if (typeof event === 'string')
354
465
  return (this.stringListeners.get(event)?.length ?? 0) > 0;
355
- }
356
466
  return (this.classListeners.get(event)?.length ?? 0) > 0;
357
467
  }
358
468
  /** Get the number of Rust-side subscriptions. */
@@ -1 +1 @@
1
- {"version":3,"file":"Emitter.js","sourceRoot":"","sources":["../../src/events/Emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Emitter.js","sourceRoot":"","sources":["../../src/events/Emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * What {@link import('./Emitter.js').Emitter.fake} hands back: the events that
3
+ * were emitted while faking, and the assertions to check them.
4
+ *
5
+ * AdonisJS parity (`@adonisjs/events` `EventsBuffer`). A faked event never
6
+ * reaches its listeners nor the bus — it lands here instead, so a test asserts
7
+ * on what the code decided to announce without running the reaction to it.
8
+ */
9
+ /** An event name: a string, or the class of a class-based event. */
10
+ export type BufferedEventName = string | (new (...args: never[]) => unknown);
11
+ /** One captured emission. */
12
+ export interface BufferedEvent<Data = unknown> {
13
+ event: BufferedEventName;
14
+ data: Data;
15
+ }
16
+ /** Narrows an assertion to one emission among several of the same event. */
17
+ export type EventFinder<Data = unknown> = (event: BufferedEvent<Data>) => boolean;
18
+ export declare class EventsBuffer {
19
+ #private;
20
+ constructor(restore: () => void);
21
+ /** Record an emission. Called by the emitter while faking. */
22
+ add(event: BufferedEventName, data: unknown): void;
23
+ /** Every captured emission, in the order they happened. */
24
+ all(): BufferedEvent[];
25
+ /** How many emissions were captured. */
26
+ size(): number;
27
+ /** Was this event emitted (optionally, one matching `finder`)? */
28
+ exists<Data = unknown>(event: BufferedEventName, finder?: EventFinder<Data>): boolean;
29
+ /** The first matching emission, or `null`. */
30
+ find<Data = unknown>(event: BufferedEventName, finder?: EventFinder<Data>): BufferedEvent<Data> | null;
31
+ /** Fail unless the event was emitted. */
32
+ assertEmitted<Data = unknown>(event: BufferedEventName, finder?: EventFinder<Data>): void;
33
+ /** Fail unless the event was emitted exactly `count` times. */
34
+ assertEmittedCount(event: BufferedEventName, count: number): void;
35
+ /** Fail if the event was emitted. */
36
+ assertNotEmitted<Data = unknown>(event: BufferedEventName, finder?: EventFinder<Data>): void;
37
+ /** Fail if anything at all was emitted. */
38
+ assertNoneEmitted(): void;
39
+ /** Drop the captured events, keeping the fake in place. */
40
+ flush(): void;
41
+ /**
42
+ * Restore the emitter when the buffer leaves a `using` block, so a test that
43
+ * throws mid-way cannot leave events faked for the next one.
44
+ */
45
+ [Symbol.dispose](): void;
46
+ }
47
+ //# sourceMappingURL=EventsBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventsBuffer.d.ts","sourceRoot":"","sources":["../../src/events/EventsBuffer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,CAAA;AAE5E,6BAA6B;AAC7B,MAAM,WAAW,aAAa,CAAC,IAAI,GAAG,OAAO;IAC3C,KAAK,EAAE,iBAAiB,CAAA;IACxB,IAAI,EAAE,IAAI,CAAA;CACX;AAED,4EAA4E;AAC5E,MAAM,MAAM,WAAW,CAAC,IAAI,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,OAAO,CAAA;AAEjF,qBAAa,YAAY;;gBAIX,OAAO,EAAE,MAAM,IAAI;IAI/B,8DAA8D;IAC9D,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAIlD,2DAA2D;IAC3D,GAAG,IAAI,aAAa,EAAE;IAItB,wCAAwC;IACxC,IAAI,IAAI,MAAM;IAId,kEAAkE;IAClE,MAAM,CAAC,IAAI,GAAG,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO;IAIrF,8CAA8C;IAC9C,IAAI,CAAC,IAAI,GAAG,OAAO,EACjB,KAAK,EAAE,iBAAiB,EACxB,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GACzB,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI;IAS7B,yCAAyC;IACzC,aAAa,CAAC,IAAI,GAAG,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;IAUzF,+DAA+D;IAC/D,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWjE,qCAAqC;IACrC,gBAAgB,CAAC,IAAI,GAAG,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;IAU5F,2CAA2C;IAC3C,iBAAiB,IAAI,IAAI;IAUzB,2DAA2D;IAC3D,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAOzB"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * What {@link import('./Emitter.js').Emitter.fake} hands back: the events that
3
+ * were emitted while faking, and the assertions to check them.
4
+ *
5
+ * AdonisJS parity (`@adonisjs/events` `EventsBuffer`). A faked event never
6
+ * reaches its listeners nor the bus — it lands here instead, so a test asserts
7
+ * on what the code decided to announce without running the reaction to it.
8
+ */
9
+ import { AssertionError } from 'node:assert';
10
+ export class EventsBuffer {
11
+ #events = [];
12
+ #restore;
13
+ constructor(restore) {
14
+ this.#restore = restore;
15
+ }
16
+ /** Record an emission. Called by the emitter while faking. */
17
+ add(event, data) {
18
+ this.#events.push({ event, data });
19
+ }
20
+ /** Every captured emission, in the order they happened. */
21
+ all() {
22
+ return [...this.#events];
23
+ }
24
+ /** How many emissions were captured. */
25
+ size() {
26
+ return this.#events.length;
27
+ }
28
+ /** Was this event emitted (optionally, one matching `finder`)? */
29
+ exists(event, finder) {
30
+ return this.find(event, finder) !== null;
31
+ }
32
+ /** The first matching emission, or `null`. */
33
+ find(event, finder) {
34
+ for (const buffered of this.#events) {
35
+ if (buffered.event !== event)
36
+ continue;
37
+ const typed = buffered;
38
+ if (finder === undefined || finder(typed))
39
+ return typed;
40
+ }
41
+ return null;
42
+ }
43
+ /** Fail unless the event was emitted. */
44
+ assertEmitted(event, finder) {
45
+ if (this.exists(event, finder))
46
+ return;
47
+ throw new AssertionError({
48
+ message: `Expected "${nameOf(event)}" event to be emitted`,
49
+ operator: 'assertEmitted',
50
+ expected: nameOf(event),
51
+ actual: this.#emittedNames(),
52
+ });
53
+ }
54
+ /** Fail unless the event was emitted exactly `count` times. */
55
+ assertEmittedCount(event, count) {
56
+ const actual = this.#events.filter((buffered) => buffered.event === event).length;
57
+ if (actual === count)
58
+ return;
59
+ throw new AssertionError({
60
+ message: `Expected "${nameOf(event)}" event to be emitted "${count}" times, instead it was emitted "${actual}" times`,
61
+ operator: 'assertEmittedCount',
62
+ expected: count,
63
+ actual,
64
+ });
65
+ }
66
+ /** Fail if the event was emitted. */
67
+ assertNotEmitted(event, finder) {
68
+ if (!this.exists(event, finder))
69
+ return;
70
+ throw new AssertionError({
71
+ message: `Unexpected "${nameOf(event)}" event was emitted`,
72
+ operator: 'assertNotEmitted',
73
+ expected: [],
74
+ actual: this.#emittedNames(),
75
+ });
76
+ }
77
+ /** Fail if anything at all was emitted. */
78
+ assertNoneEmitted() {
79
+ if (this.#events.length === 0)
80
+ return;
81
+ throw new AssertionError({
82
+ message: `Expected zero events to be emitted, instead received "${this.#events.length}" events`,
83
+ operator: 'assertNoneEmitted',
84
+ expected: 0,
85
+ actual: this.#events.length,
86
+ });
87
+ }
88
+ /** Drop the captured events, keeping the fake in place. */
89
+ flush() {
90
+ this.#events.length = 0;
91
+ }
92
+ /**
93
+ * Restore the emitter when the buffer leaves a `using` block, so a test that
94
+ * throws mid-way cannot leave events faked for the next one.
95
+ */
96
+ [Symbol.dispose]() {
97
+ this.#restore();
98
+ }
99
+ #emittedNames() {
100
+ return this.#events.map((buffered) => nameOf(buffered.event));
101
+ }
102
+ }
103
+ /** A readable name for an event, whether it is a string or a class. */
104
+ function nameOf(event) {
105
+ return typeof event === 'string' ? event : event.name;
106
+ }
107
+ //# sourceMappingURL=EventsBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventsBuffer.js","sourceRoot":"","sources":["../../src/events/EventsBuffer.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,9 @@
10
10
  */
11
11
  export type { EventsConfig } from './config.js';
12
12
  export { defineConfig } from './config.js';
13
+ export type { AsyncUnsubscribeFunction, UnsubscribeFunction } from './Emitter.js';
13
14
  export { BaseEvent, type ContainerResolver, Emitter, type ListenerClass, } from './Emitter.js';
15
+ export { type BufferedEvent, type BufferedEventName, type EventFinder, EventsBuffer, } from './EventsBuffer.js';
14
16
  export type { EventsAppContext } from './EventsProvider.js';
15
17
  export { default as EventsProvider } from './EventsProvider.js';
16
18
  export { EventBus } from './native.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EACL,SAAS,EACT,KAAK,iBAAiB,EACtB,OAAO,EACP,KAAK,aAAa,GACnB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACjF,OAAO,EACL,SAAS,EACT,KAAK,iBAAiB,EACtB,OAAO,EACP,KAAK,aAAa,GACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
@@ -10,6 +10,7 @@
10
10
  */
11
11
  export { defineConfig } from './config.js';
12
12
  export { BaseEvent, Emitter, } from './Emitter.js';
13
+ export { EventsBuffer, } from './EventsBuffer.js';
13
14
  export { default as EventsProvider } from './EventsProvider.js';
14
15
  export { EventBus } from './native.js';
15
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EACL,SAAS,EAET,OAAO,GAER,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EACL,SAAS,EAET,OAAO,GAER,MAAM,cAAc,CAAA;AACrB,OAAO,EAIL,YAAY,GACb,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { HealthCheckContract, HealthCheckResult } from './types.js';
2
+ /**
3
+ * The base every check extends (AdonisJS `BaseCheck`).
4
+ */
5
+ export declare abstract class BaseCheck implements HealthCheckContract {
6
+ abstract name: string;
7
+ /** Seconds to reuse a previous result for. */
8
+ cacheDuration?: number;
9
+ /** Rename the check, so two instances of one check stay distinguishable. */
10
+ as(name: string): this;
11
+ /**
12
+ * Reuse this check's result for the given duration — `60`, `'1 minute'`,
13
+ * `'30s'`. An expensive check (a remote ping, a disk stat) should not run on
14
+ * every probe.
15
+ */
16
+ cacheFor(duration: string | number): this;
17
+ abstract run(): Promise<HealthCheckResult>;
18
+ }
19
+ //# sourceMappingURL=BaseCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseCheck.d.ts","sourceRoot":"","sources":["../../src/health/BaseCheck.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAExE;;GAEG;AACH,8BAAsB,SAAU,YAAW,mBAAmB;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,4EAA4E;IAC5E,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKtB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMzC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAC3C"}
@@ -0,0 +1,24 @@
1
+ import { durationToSeconds } from '../helpers/duration.js';
2
+ /**
3
+ * The base every check extends (AdonisJS `BaseCheck`).
4
+ */
5
+ export class BaseCheck {
6
+ /** Seconds to reuse a previous result for. */
7
+ cacheDuration;
8
+ /** Rename the check, so two instances of one check stay distinguishable. */
9
+ as(name) {
10
+ this.name = name;
11
+ return this;
12
+ }
13
+ /**
14
+ * Reuse this check's result for the given duration — `60`, `'1 minute'`,
15
+ * `'30s'`. An expensive check (a remote ping, a disk stat) should not run on
16
+ * every probe.
17
+ */
18
+ cacheFor(duration) {
19
+ this.cacheDuration =
20
+ typeof duration === 'number' ? duration : durationToSeconds(duration, 'a health check cache');
21
+ return this;
22
+ }
23
+ }
24
+ //# sourceMappingURL=BaseCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseCheck.js","sourceRoot":"","sources":["../../src/health/BaseCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D;;GAEG;AACH,MAAM,OAAgB,SAAS;IAE7B,8CAA8C;IAC9C,aAAa,CAAS;IAEtB,4EAA4E;IAC5E,EAAE,CAAC,IAAY;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,QAAyB;QAChC,IAAI,CAAC,aAAa;YAChB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;QAC/F,OAAO,IAAI,CAAA;IACb,CAAC;CAGF"}
@@ -0,0 +1,15 @@
1
+ import type { HealthCheckContract, HealthCheckReport } from './types.js';
2
+ /**
3
+ * Runs the registered checks and aggregates them into one report
4
+ * (AdonisJS `HealthChecks`).
5
+ */
6
+ export declare class HealthChecks {
7
+ #private;
8
+ /** Replace the registered checks. */
9
+ register(checks: HealthCheckContract[]): this;
10
+ /** Add to the registered checks. */
11
+ append(checks: HealthCheckContract[]): this;
12
+ /** Run every check concurrently and aggregate the verdicts. */
13
+ run(): Promise<HealthCheckReport>;
14
+ }
15
+ //# sourceMappingURL=HealthChecks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HealthChecks.d.ts","sourceRoot":"","sources":["../../src/health/HealthChecks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAIxE;;;GAGG;AACH,qBAAa,YAAY;;IAIvB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI;IAK7C,oCAAoC;IACpC,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI;IAmC3C,+DAA+D;IACzD,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAyBxC"}