@vettvangur/framework 0.0.15 → 0.0.20

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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,59 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { createEventBus } from './events';
3
+ describe('createEventBus', () => {
4
+ it('delivers payload to on() subscriber', () => {
5
+ const bus = createEventBus();
6
+ const handler = vi.fn();
7
+ bus.on('TEST', handler);
8
+ bus.emit('TEST', { value: 42 });
9
+ expect(handler).toHaveBeenCalledOnce();
10
+ expect(handler).toHaveBeenCalledWith({ value: 42 });
11
+ });
12
+ it('unsubscribe stops further delivery', () => {
13
+ const bus = createEventBus();
14
+ const handler = vi.fn();
15
+ const off = bus.on('TEST', handler);
16
+ off();
17
+ bus.emit('TEST', 'hello');
18
+ expect(handler).not.toHaveBeenCalled();
19
+ });
20
+ it('once() fires only on first emit', () => {
21
+ const bus = createEventBus();
22
+ const handler = vi.fn();
23
+ bus.once('READY', handler);
24
+ bus.emit('READY');
25
+ bus.emit('READY');
26
+ expect(handler).toHaveBeenCalledOnce();
27
+ });
28
+ it('once() receives the payload', () => {
29
+ const bus = createEventBus();
30
+ const handler = vi.fn();
31
+ bus.once('PING', handler);
32
+ bus.emit('PING', 'data');
33
+ expect(handler).toHaveBeenCalledWith('data');
34
+ });
35
+ it('multiple subscribers all receive the event', () => {
36
+ const bus = createEventBus();
37
+ const a = vi.fn();
38
+ const b = vi.fn();
39
+ bus.on('EV', a);
40
+ bus.on('EV', b);
41
+ bus.emit('EV');
42
+ expect(a).toHaveBeenCalledOnce();
43
+ expect(b).toHaveBeenCalledOnce();
44
+ });
45
+ it('no cross-event leakage between types', () => {
46
+ const bus = createEventBus();
47
+ const handler = vi.fn();
48
+ bus.on('A', handler);
49
+ bus.emit('B');
50
+ expect(handler).not.toHaveBeenCalled();
51
+ });
52
+ it('emit with no payload calls handler with null detail', () => {
53
+ const bus = createEventBus();
54
+ const handler = vi.fn();
55
+ bus.on('EV', handler);
56
+ bus.emit('EV');
57
+ expect(handler).toHaveBeenCalledWith(null);
58
+ });
59
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vettvangur/framework",
3
- "version": "0.0.15",
3
+ "version": "0.0.20",
4
4
  "type": "module",
5
5
  "access": "public",
6
6
  "author": "Vettvangur",
@@ -24,6 +24,7 @@
24
24
  "scripts": {
25
25
  "clean": "rimraf dist || rm -rf dist",
26
26
  "bundle": "pnpm clean && tsc -p tsconfig.json",
27
- "dist": "pnpm publish"
27
+ "dist": "pnpm publish",
28
+ "test": "vitest run"
28
29
  }
29
30
  }