@use-everywhere/core 0.5.0 → 0.6.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.
package/dist/index.cjs CHANGED
@@ -18,14 +18,12 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
20
  // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
23
  BroadcastChannelTransport: () => BroadcastChannelTransport,
24
24
  CID_PARAM: () => CID_PARAM,
25
25
  DEFAULT_NAME: () => DEFAULT_NAME,
26
26
  HandshakeTimeoutError: () => HandshakeTimeoutError,
27
- MemoryHub: () => MemoryHub,
28
- MemoryTransport: () => MemoryTransport,
29
27
  NoopTransport: () => NoopTransport,
30
28
  WindowClosedError: () => WindowClosedError,
31
29
  connectToOpener: () => connectToOpener,
@@ -44,7 +42,7 @@ __export(index_exports, {
44
42
  sessionStorageAdapter: () => sessionStorageAdapter,
45
43
  webStorageAdapter: () => webStorageAdapter
46
44
  });
47
- module.exports = __toCommonJS(index_exports);
45
+ module.exports = __toCommonJS(src_exports);
48
46
 
49
47
  // src/defaults.ts
50
48
  var DEFAULT_NAME = "use-everywhere";
@@ -1030,67 +1028,12 @@ function connectToOpener(options) {
1030
1028
  }
1031
1029
  };
1032
1030
  }
1033
-
1034
- // src/transport/memory-transport.ts
1035
- var MemoryTransport = class {
1036
- constructor(hub) {
1037
- this.hub = hub;
1038
- this.listeners = /* @__PURE__ */ new Set();
1039
- this.closed = false;
1040
- }
1041
- post(data) {
1042
- if (this.closed) return;
1043
- this.hub.broadcast(this, data);
1044
- }
1045
- subscribe(listener) {
1046
- this.listeners.add(listener);
1047
- return () => this.listeners.delete(listener);
1048
- }
1049
- close() {
1050
- this.closed = true;
1051
- this.listeners.clear();
1052
- this.hub.disconnect(this);
1053
- }
1054
- /** @internal */
1055
- deliver(data) {
1056
- if (this.closed) return;
1057
- for (const listener of this.listeners) listener(data);
1058
- }
1059
- };
1060
-
1061
- // src/transport/memory-hub.ts
1062
- var MemoryHub = class {
1063
- constructor() {
1064
- this.transports = /* @__PURE__ */ new Set();
1065
- }
1066
- connect() {
1067
- const transport = new MemoryTransport(this);
1068
- this.transports.add(transport);
1069
- return transport;
1070
- }
1071
- /** @internal */
1072
- broadcast(from, data) {
1073
- structuredClone(data);
1074
- for (const transport of this.transports) {
1075
- if (transport !== from) {
1076
- const copy = structuredClone(data);
1077
- queueMicrotask(() => transport.deliver(copy));
1078
- }
1079
- }
1080
- }
1081
- /** @internal */
1082
- disconnect(transport) {
1083
- this.transports.delete(transport);
1084
- }
1085
- };
1086
1031
  // Annotate the CommonJS export names for ESM import in node:
1087
1032
  0 && (module.exports = {
1088
1033
  BroadcastChannelTransport,
1089
1034
  CID_PARAM,
1090
1035
  DEFAULT_NAME,
1091
1036
  HandshakeTimeoutError,
1092
- MemoryHub,
1093
- MemoryTransport,
1094
1037
  NoopTransport,
1095
1038
  WindowClosedError,
1096
1039
  connectToOpener,
package/dist/index.d.cts CHANGED
@@ -1,13 +1,4 @@
1
- /**
2
- * Minimal message bus. Implementations: BroadcastChannelTransport (same-origin),
3
- * NoopTransport (SSR / local-only), MemoryTransport (tests). A transport never
4
- * echoes a client's own posts back to it.
5
- */
6
- interface Transport {
7
- post(data: unknown): void;
8
- subscribe(listener: (data: unknown) => void): () => void;
9
- close(): void;
10
- }
1
+ import { T as Transport } from './transport.types-tQ1cu6Xm.cjs';
11
2
 
12
3
  type MessageMap = Record<string, unknown>;
13
4
  type PeerKind = 'tab' | 'worker' | (string & {});
@@ -425,31 +416,4 @@ declare function isBroadcastChannelAvailable(): boolean;
425
416
  /** Default factory: real BroadcastChannel when available, otherwise a local no-op. */
426
417
  declare function defaultTransport(name: string): Transport;
427
418
 
428
- /** One simulated client on a MemoryHub. Create via hub.connect(). */
429
- declare class MemoryTransport implements Transport {
430
- private hub;
431
- private listeners;
432
- private closed;
433
- constructor(hub: MemoryHub);
434
- post(data: unknown): void;
435
- subscribe(listener: (data: unknown) => void): () => void;
436
- close(): void;
437
- /** @internal */
438
- deliver(data: unknown): void;
439
- }
440
-
441
- /**
442
- * In-memory hub for tests: N transports attached to one hub, each post is
443
- * delivered to every *other* transport on a microtask (mirrors BroadcastChannel's
444
- * async, no-self-echo delivery).
445
- */
446
- declare class MemoryHub {
447
- private transports;
448
- connect(): MemoryTransport;
449
- /** @internal */
450
- broadcast(from: MemoryTransport, data: unknown): void;
451
- /** @internal */
452
- disconnect(transport: MemoryTransport): void;
453
- }
454
-
455
- export { BroadcastChannelTransport, type BusEvent, type BusObserver, type BusWire, CID_PARAM, type Channel, type CommonOptions, type ConnectToOpenerOptions, DEFAULT_NAME, type DebugOptions, HandshakeTimeoutError, type Leader, type LeaderOptions, type LeaderSnapshot, MemoryHub, MemoryTransport, type MessageEventLike, type MessageMap, type MessageMeta, NoopTransport, type OpenWindowOptions, type OpenedWindow, type OpenerConnection, type Peer, type PeerKind, type PersistAdapter, type PersistOptions, type Persisted, type Presence, type PresenceOptions, type SharedStore, type SharedStoreOptions, type StorageLike, type Transport, type Version, type WebStorageAdapterOptions, WindowClosedError, type WindowEventTarget, type WindowLike, connectToOpener, createChannel, createLeader, createPresence, createSharedStore, defaultTransport, enableDebug, getBusNames, isBroadcastChannelAvailable, localStorageAdapter, newer, observeBus, openWindow, sessionStorageAdapter, webStorageAdapter };
419
+ export { BroadcastChannelTransport, type BusEvent, type BusObserver, type BusWire, CID_PARAM, type Channel, type CommonOptions, type ConnectToOpenerOptions, DEFAULT_NAME, type DebugOptions, HandshakeTimeoutError, type Leader, type LeaderOptions, type LeaderSnapshot, type MessageEventLike, type MessageMap, type MessageMeta, NoopTransport, type OpenWindowOptions, type OpenedWindow, type OpenerConnection, type Peer, type PeerKind, type PersistAdapter, type PersistOptions, type Persisted, type Presence, type PresenceOptions, type SharedStore, type SharedStoreOptions, type StorageLike, Transport, type Version, type WebStorageAdapterOptions, WindowClosedError, type WindowEventTarget, type WindowLike, connectToOpener, createChannel, createLeader, createPresence, createSharedStore, defaultTransport, enableDebug, getBusNames, isBroadcastChannelAvailable, localStorageAdapter, newer, observeBus, openWindow, sessionStorageAdapter, webStorageAdapter };
package/dist/index.d.ts CHANGED
@@ -1,13 +1,4 @@
1
- /**
2
- * Minimal message bus. Implementations: BroadcastChannelTransport (same-origin),
3
- * NoopTransport (SSR / local-only), MemoryTransport (tests). A transport never
4
- * echoes a client's own posts back to it.
5
- */
6
- interface Transport {
7
- post(data: unknown): void;
8
- subscribe(listener: (data: unknown) => void): () => void;
9
- close(): void;
10
- }
1
+ import { T as Transport } from './transport.types-tQ1cu6Xm.js';
11
2
 
12
3
  type MessageMap = Record<string, unknown>;
13
4
  type PeerKind = 'tab' | 'worker' | (string & {});
@@ -425,31 +416,4 @@ declare function isBroadcastChannelAvailable(): boolean;
425
416
  /** Default factory: real BroadcastChannel when available, otherwise a local no-op. */
426
417
  declare function defaultTransport(name: string): Transport;
427
418
 
428
- /** One simulated client on a MemoryHub. Create via hub.connect(). */
429
- declare class MemoryTransport implements Transport {
430
- private hub;
431
- private listeners;
432
- private closed;
433
- constructor(hub: MemoryHub);
434
- post(data: unknown): void;
435
- subscribe(listener: (data: unknown) => void): () => void;
436
- close(): void;
437
- /** @internal */
438
- deliver(data: unknown): void;
439
- }
440
-
441
- /**
442
- * In-memory hub for tests: N transports attached to one hub, each post is
443
- * delivered to every *other* transport on a microtask (mirrors BroadcastChannel's
444
- * async, no-self-echo delivery).
445
- */
446
- declare class MemoryHub {
447
- private transports;
448
- connect(): MemoryTransport;
449
- /** @internal */
450
- broadcast(from: MemoryTransport, data: unknown): void;
451
- /** @internal */
452
- disconnect(transport: MemoryTransport): void;
453
- }
454
-
455
- export { BroadcastChannelTransport, type BusEvent, type BusObserver, type BusWire, CID_PARAM, type Channel, type CommonOptions, type ConnectToOpenerOptions, DEFAULT_NAME, type DebugOptions, HandshakeTimeoutError, type Leader, type LeaderOptions, type LeaderSnapshot, MemoryHub, MemoryTransport, type MessageEventLike, type MessageMap, type MessageMeta, NoopTransport, type OpenWindowOptions, type OpenedWindow, type OpenerConnection, type Peer, type PeerKind, type PersistAdapter, type PersistOptions, type Persisted, type Presence, type PresenceOptions, type SharedStore, type SharedStoreOptions, type StorageLike, type Transport, type Version, type WebStorageAdapterOptions, WindowClosedError, type WindowEventTarget, type WindowLike, connectToOpener, createChannel, createLeader, createPresence, createSharedStore, defaultTransport, enableDebug, getBusNames, isBroadcastChannelAvailable, localStorageAdapter, newer, observeBus, openWindow, sessionStorageAdapter, webStorageAdapter };
419
+ export { BroadcastChannelTransport, type BusEvent, type BusObserver, type BusWire, CID_PARAM, type Channel, type CommonOptions, type ConnectToOpenerOptions, DEFAULT_NAME, type DebugOptions, HandshakeTimeoutError, type Leader, type LeaderOptions, type LeaderSnapshot, type MessageEventLike, type MessageMap, type MessageMeta, NoopTransport, type OpenWindowOptions, type OpenedWindow, type OpenerConnection, type Peer, type PeerKind, type PersistAdapter, type PersistOptions, type Persisted, type Presence, type PresenceOptions, type SharedStore, type SharedStoreOptions, type StorageLike, Transport, type Version, type WebStorageAdapterOptions, WindowClosedError, type WindowEventTarget, type WindowLike, connectToOpener, createChannel, createLeader, createPresence, createSharedStore, defaultTransport, enableDebug, getBusNames, isBroadcastChannelAvailable, localStorageAdapter, newer, observeBus, openWindow, sessionStorageAdapter, webStorageAdapter };
package/dist/index.js CHANGED
@@ -982,66 +982,11 @@ function connectToOpener(options) {
982
982
  }
983
983
  };
984
984
  }
985
-
986
- // src/transport/memory-transport.ts
987
- var MemoryTransport = class {
988
- constructor(hub) {
989
- this.hub = hub;
990
- this.listeners = /* @__PURE__ */ new Set();
991
- this.closed = false;
992
- }
993
- post(data) {
994
- if (this.closed) return;
995
- this.hub.broadcast(this, data);
996
- }
997
- subscribe(listener) {
998
- this.listeners.add(listener);
999
- return () => this.listeners.delete(listener);
1000
- }
1001
- close() {
1002
- this.closed = true;
1003
- this.listeners.clear();
1004
- this.hub.disconnect(this);
1005
- }
1006
- /** @internal */
1007
- deliver(data) {
1008
- if (this.closed) return;
1009
- for (const listener of this.listeners) listener(data);
1010
- }
1011
- };
1012
-
1013
- // src/transport/memory-hub.ts
1014
- var MemoryHub = class {
1015
- constructor() {
1016
- this.transports = /* @__PURE__ */ new Set();
1017
- }
1018
- connect() {
1019
- const transport = new MemoryTransport(this);
1020
- this.transports.add(transport);
1021
- return transport;
1022
- }
1023
- /** @internal */
1024
- broadcast(from, data) {
1025
- structuredClone(data);
1026
- for (const transport of this.transports) {
1027
- if (transport !== from) {
1028
- const copy = structuredClone(data);
1029
- queueMicrotask(() => transport.deliver(copy));
1030
- }
1031
- }
1032
- }
1033
- /** @internal */
1034
- disconnect(transport) {
1035
- this.transports.delete(transport);
1036
- }
1037
- };
1038
985
  export {
1039
986
  BroadcastChannelTransport,
1040
987
  CID_PARAM,
1041
988
  DEFAULT_NAME,
1042
989
  HandshakeTimeoutError,
1043
- MemoryHub,
1044
- MemoryTransport,
1045
990
  NoopTransport,
1046
991
  WindowClosedError,
1047
992
  connectToOpener,
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/testing.ts
21
+ var testing_exports = {};
22
+ __export(testing_exports, {
23
+ MemoryHub: () => MemoryHub,
24
+ MemoryTransport: () => MemoryTransport
25
+ });
26
+ module.exports = __toCommonJS(testing_exports);
27
+
28
+ // src/transport/memory-transport.ts
29
+ var MemoryTransport = class {
30
+ constructor(hub) {
31
+ this.hub = hub;
32
+ this.listeners = /* @__PURE__ */ new Set();
33
+ this.closed = false;
34
+ }
35
+ post(data) {
36
+ if (this.closed) return;
37
+ this.hub.broadcast(this, data);
38
+ }
39
+ subscribe(listener) {
40
+ this.listeners.add(listener);
41
+ return () => this.listeners.delete(listener);
42
+ }
43
+ close() {
44
+ this.closed = true;
45
+ this.listeners.clear();
46
+ this.hub.disconnect(this);
47
+ }
48
+ /** @internal */
49
+ deliver(data) {
50
+ if (this.closed) return;
51
+ for (const listener of this.listeners) listener(data);
52
+ }
53
+ };
54
+
55
+ // src/transport/memory-hub.ts
56
+ var MemoryHub = class {
57
+ constructor() {
58
+ this.transports = /* @__PURE__ */ new Set();
59
+ }
60
+ connect() {
61
+ const transport = new MemoryTransport(this);
62
+ this.transports.add(transport);
63
+ return transport;
64
+ }
65
+ /** @internal */
66
+ broadcast(from, data) {
67
+ structuredClone(data);
68
+ for (const transport of this.transports) {
69
+ if (transport !== from) {
70
+ const copy = structuredClone(data);
71
+ queueMicrotask(() => transport.deliver(copy));
72
+ }
73
+ }
74
+ }
75
+ /** @internal */
76
+ disconnect(transport) {
77
+ this.transports.delete(transport);
78
+ }
79
+ };
80
+ // Annotate the CommonJS export names for ESM import in node:
81
+ 0 && (module.exports = {
82
+ MemoryHub,
83
+ MemoryTransport
84
+ });
@@ -0,0 +1,30 @@
1
+ import { T as Transport } from './transport.types-tQ1cu6Xm.cjs';
2
+
3
+ /** One simulated client on a MemoryHub. Create via hub.connect(). */
4
+ declare class MemoryTransport implements Transport {
5
+ private hub;
6
+ private listeners;
7
+ private closed;
8
+ constructor(hub: MemoryHub);
9
+ post(data: unknown): void;
10
+ subscribe(listener: (data: unknown) => void): () => void;
11
+ close(): void;
12
+ /** @internal */
13
+ deliver(data: unknown): void;
14
+ }
15
+
16
+ /**
17
+ * In-memory hub for tests: N transports attached to one hub, each post is
18
+ * delivered to every *other* transport on a microtask (mirrors BroadcastChannel's
19
+ * async, no-self-echo delivery).
20
+ */
21
+ declare class MemoryHub {
22
+ private transports;
23
+ connect(): MemoryTransport;
24
+ /** @internal */
25
+ broadcast(from: MemoryTransport, data: unknown): void;
26
+ /** @internal */
27
+ disconnect(transport: MemoryTransport): void;
28
+ }
29
+
30
+ export { MemoryHub, MemoryTransport };
@@ -0,0 +1,30 @@
1
+ import { T as Transport } from './transport.types-tQ1cu6Xm.js';
2
+
3
+ /** One simulated client on a MemoryHub. Create via hub.connect(). */
4
+ declare class MemoryTransport implements Transport {
5
+ private hub;
6
+ private listeners;
7
+ private closed;
8
+ constructor(hub: MemoryHub);
9
+ post(data: unknown): void;
10
+ subscribe(listener: (data: unknown) => void): () => void;
11
+ close(): void;
12
+ /** @internal */
13
+ deliver(data: unknown): void;
14
+ }
15
+
16
+ /**
17
+ * In-memory hub for tests: N transports attached to one hub, each post is
18
+ * delivered to every *other* transport on a microtask (mirrors BroadcastChannel's
19
+ * async, no-self-echo delivery).
20
+ */
21
+ declare class MemoryHub {
22
+ private transports;
23
+ connect(): MemoryTransport;
24
+ /** @internal */
25
+ broadcast(from: MemoryTransport, data: unknown): void;
26
+ /** @internal */
27
+ disconnect(transport: MemoryTransport): void;
28
+ }
29
+
30
+ export { MemoryHub, MemoryTransport };
@@ -0,0 +1,56 @@
1
+ // src/transport/memory-transport.ts
2
+ var MemoryTransport = class {
3
+ constructor(hub) {
4
+ this.hub = hub;
5
+ this.listeners = /* @__PURE__ */ new Set();
6
+ this.closed = false;
7
+ }
8
+ post(data) {
9
+ if (this.closed) return;
10
+ this.hub.broadcast(this, data);
11
+ }
12
+ subscribe(listener) {
13
+ this.listeners.add(listener);
14
+ return () => this.listeners.delete(listener);
15
+ }
16
+ close() {
17
+ this.closed = true;
18
+ this.listeners.clear();
19
+ this.hub.disconnect(this);
20
+ }
21
+ /** @internal */
22
+ deliver(data) {
23
+ if (this.closed) return;
24
+ for (const listener of this.listeners) listener(data);
25
+ }
26
+ };
27
+
28
+ // src/transport/memory-hub.ts
29
+ var MemoryHub = class {
30
+ constructor() {
31
+ this.transports = /* @__PURE__ */ new Set();
32
+ }
33
+ connect() {
34
+ const transport = new MemoryTransport(this);
35
+ this.transports.add(transport);
36
+ return transport;
37
+ }
38
+ /** @internal */
39
+ broadcast(from, data) {
40
+ structuredClone(data);
41
+ for (const transport of this.transports) {
42
+ if (transport !== from) {
43
+ const copy = structuredClone(data);
44
+ queueMicrotask(() => transport.deliver(copy));
45
+ }
46
+ }
47
+ }
48
+ /** @internal */
49
+ disconnect(transport) {
50
+ this.transports.delete(transport);
51
+ }
52
+ };
53
+ export {
54
+ MemoryHub,
55
+ MemoryTransport
56
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Minimal message bus. Implementations: BroadcastChannelTransport (same-origin),
3
+ * NoopTransport (SSR / local-only), MemoryTransport (tests). A transport never
4
+ * echoes a client's own posts back to it.
5
+ */
6
+ interface Transport {
7
+ post(data: unknown): void;
8
+ subscribe(listener: (data: unknown) => void): () => void;
9
+ close(): void;
10
+ }
11
+
12
+ export type { Transport as T };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Minimal message bus. Implementations: BroadcastChannelTransport (same-origin),
3
+ * NoopTransport (SSR / local-only), MemoryTransport (tests). A transport never
4
+ * echoes a client's own posts back to it.
5
+ */
6
+ interface Transport {
7
+ post(data: unknown): void;
8
+ subscribe(listener: (data: unknown) => void): () => void;
9
+ close(): void;
10
+ }
11
+
12
+ export type { Transport as T };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@use-everywhere/core",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Cross-tab shared state, events, presence, and cross-origin window channels",
5
5
  "license": "MIT",
6
6
  "author": "Jonatan Kruszewski <jonakrusze@gmail.com>",
@@ -38,6 +38,16 @@
38
38
  "types": "./dist/index.d.cts",
39
39
  "default": "./dist/index.cjs"
40
40
  }
41
+ },
42
+ "./testing": {
43
+ "import": {
44
+ "types": "./dist/testing.d.ts",
45
+ "default": "./dist/testing.js"
46
+ },
47
+ "require": {
48
+ "types": "./dist/testing.d.cts",
49
+ "default": "./dist/testing.cjs"
50
+ }
41
51
  }
42
52
  },
43
53
  "files": [
@@ -86,12 +96,6 @@
86
96
  "import": "{ connectToOpener }",
87
97
  "limit": "1.15 kB"
88
98
  },
89
- {
90
- "name": "MemoryHub (test transport)",
91
- "path": "dist/index.js",
92
- "import": "{ MemoryHub }",
93
- "limit": "300 B"
94
- },
95
99
  {
96
100
  "name": "observeBus + enableDebug",
97
101
  "path": "dist/index.js",
@@ -103,6 +107,12 @@
103
107
  "path": "dist/index.js",
104
108
  "import": "{ localStorageAdapter }",
105
109
  "limit": "500 B"
110
+ },
111
+ {
112
+ "name": "MemoryHub (testing subpath)",
113
+ "path": "dist/testing.js",
114
+ "import": "{ MemoryHub }",
115
+ "limit": "350 B"
106
116
  }
107
117
  ],
108
118
  "devDependencies": {
@@ -116,6 +126,13 @@
116
126
  "typescript": "^6.0.3",
117
127
  "vitest": "^4.1.10"
118
128
  },
129
+ "typesVersions": {
130
+ "*": {
131
+ "testing": [
132
+ "./dist/testing.d.ts"
133
+ ]
134
+ }
135
+ },
119
136
  "scripts": {
120
137
  "build": "tsup",
121
138
  "test": "vitest run --coverage",