@signe/room 2.9.4 → 3.0.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 (81) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/chunk-EUXUH3YW.js +15 -0
  3. package/dist/chunk-EUXUH3YW.js.map +1 -0
  4. package/dist/cloudflare/index.d.ts +71 -0
  5. package/dist/cloudflare/index.js +320 -0
  6. package/dist/cloudflare/index.js.map +1 -0
  7. package/dist/index.d.ts +65 -188
  8. package/dist/index.js +742 -146
  9. package/dist/index.js.map +1 -1
  10. package/dist/node/index.d.ts +164 -0
  11. package/dist/node/index.js +786 -0
  12. package/dist/node/index.js.map +1 -0
  13. package/dist/party-dNs-hqkq.d.ts +175 -0
  14. package/examples/cloudflare/README.md +62 -0
  15. package/examples/cloudflare/node_modules/.bin/tsc +17 -0
  16. package/examples/cloudflare/node_modules/.bin/tsserver +17 -0
  17. package/examples/cloudflare/node_modules/.bin/wrangler +17 -0
  18. package/examples/cloudflare/node_modules/.bin/wrangler2 +17 -0
  19. package/examples/cloudflare/package.json +24 -0
  20. package/examples/cloudflare/public/index.html +443 -0
  21. package/examples/cloudflare/src/index.ts +28 -0
  22. package/examples/cloudflare/src/room.ts +44 -0
  23. package/examples/cloudflare/tsconfig.json +10 -0
  24. package/examples/cloudflare/wrangler.jsonc +25 -0
  25. package/examples/node/README.md +57 -0
  26. package/examples/node/node_modules/.bin/tsc +17 -0
  27. package/examples/node/node_modules/.bin/tsserver +17 -0
  28. package/examples/node/node_modules/.bin/tsx +17 -0
  29. package/examples/node/package.json +23 -0
  30. package/examples/node/public/index.html +443 -0
  31. package/examples/node/room.ts +44 -0
  32. package/examples/node/server.sqlite.ts +52 -0
  33. package/examples/node/server.ts +51 -0
  34. package/examples/node/tsconfig.json +10 -0
  35. package/examples/node-game/README.md +66 -0
  36. package/examples/node-game/package.json +23 -0
  37. package/examples/node-game/public/index.html +705 -0
  38. package/examples/node-game/room.ts +145 -0
  39. package/examples/node-game/server.sqlite.ts +54 -0
  40. package/examples/node-game/server.ts +53 -0
  41. package/examples/node-game/tsconfig.json +10 -0
  42. package/examples/node-shard/README.md +32 -0
  43. package/examples/node-shard/dev.ts +39 -0
  44. package/examples/node-shard/package.json +24 -0
  45. package/examples/node-shard/public/index.html +777 -0
  46. package/examples/node-shard/room-server.ts +68 -0
  47. package/examples/node-shard/room.ts +105 -0
  48. package/examples/node-shard/shared.ts +6 -0
  49. package/examples/node-shard/tsconfig.json +14 -0
  50. package/examples/node-shard/world-server.ts +169 -0
  51. package/package.json +14 -5
  52. package/readme.md +377 -11
  53. package/src/cloudflare/index.ts +474 -0
  54. package/src/mock.ts +29 -7
  55. package/src/node/index.ts +1112 -0
  56. package/src/server.ts +626 -90
  57. package/src/session.guard.ts +6 -2
  58. package/src/shard.ts +91 -23
  59. package/src/storage.ts +29 -5
  60. package/src/testing.ts +4 -3
  61. package/src/types/party.ts +4 -1
  62. package/src/world.guard.ts +23 -4
  63. package/src/world.ts +170 -79
  64. package/examples/game/.vscode/launch.json +0 -11
  65. package/examples/game/.vscode/settings.json +0 -11
  66. package/examples/game/README.md +0 -40
  67. package/examples/game/app/client.tsx +0 -15
  68. package/examples/game/app/components/Admin.tsx +0 -1089
  69. package/examples/game/app/components/Room.tsx +0 -162
  70. package/examples/game/app/styles.css +0 -31
  71. package/examples/game/package-lock.json +0 -225
  72. package/examples/game/package.json +0 -20
  73. package/examples/game/party/game.room.ts +0 -32
  74. package/examples/game/party/server.ts +0 -10
  75. package/examples/game/party/shard.ts +0 -5
  76. package/examples/game/partykit.json +0 -14
  77. package/examples/game/public/favicon.ico +0 -0
  78. package/examples/game/public/index.html +0 -27
  79. package/examples/game/public/normalize.css +0 -351
  80. package/examples/game/shared/room.schema.ts +0 -14
  81. package/examples/game/tsconfig.json +0 -109
@@ -0,0 +1,164 @@
1
+ import * as _cloudflare_workers_types from '@cloudflare/workers-types';
2
+ import { IncomingMessage, ServerResponse } from 'node:http';
3
+ import { Duplex } from 'node:stream';
4
+ import { S as Server, a as Room, d as Stub, c as Storage, e as Context, C as Connection, f as ConnectionState, g as ConnectionSetStateFn } from '../party-dNs-hqkq.js';
5
+
6
+ type NodeRoomStorage = {
7
+ get<T = unknown>(key: string): Promise<T | undefined>;
8
+ put<T = unknown>(key: string, value: T): Promise<void>;
9
+ put<T = unknown>(entries: Record<string, T>): Promise<void>;
10
+ delete(key: string | string[]): Promise<void | boolean | number>;
11
+ list<T = unknown>(options?: NodeRoomStorageListOptions): Promise<Map<string, T>>;
12
+ };
13
+ type NodeRoomStorageListOptions = {
14
+ prefix?: string;
15
+ start?: string;
16
+ startAfter?: string;
17
+ end?: string;
18
+ reverse?: boolean;
19
+ limit?: number;
20
+ };
21
+ type NodeRoomStorageFactory = (namespace: string, roomId: string) => NodeRoomStorage | Promise<NodeRoomStorage>;
22
+ type NodeRoomStorageProvider = {
23
+ getStorage(namespace: string, roomId: string): NodeRoomStorage | Promise<NodeRoomStorage>;
24
+ };
25
+ type NodeMemoryStorageSnapshot = Record<string, [string, unknown][]>;
26
+ type NodeSqliteDatabase = {
27
+ exec(sql: string): unknown;
28
+ prepare(sql: string): {
29
+ get(...params: unknown[]): unknown;
30
+ run(...params: unknown[]): {
31
+ changes: number | bigint;
32
+ };
33
+ all(...params: unknown[]): unknown[];
34
+ };
35
+ };
36
+ type NodeSqliteStorageOptions = {
37
+ database?: NodeSqliteDatabase;
38
+ databasePath?: string;
39
+ tableName?: string;
40
+ busyTimeoutMs?: number;
41
+ journalMode?: NodeSqliteJournalMode;
42
+ busyRetries?: number;
43
+ };
44
+ type NodeSqliteJournalMode = "DELETE" | "TRUNCATE" | "PERSIST" | "MEMORY" | "WAL" | "OFF" | "delete" | "truncate" | "persist" | "memory" | "wal" | "off";
45
+ type NodeServerConstructor<TServer extends Server = Server> = {
46
+ new (room: Room): TServer;
47
+ };
48
+ type NodeRoomTransportOptions = {
49
+ partiesPath?: string;
50
+ env?: Record<string, unknown>;
51
+ storage?: NodeRoomStorageFactory | NodeRoomStorageProvider;
52
+ rooms?: Record<string, NodeServerConstructor>;
53
+ externalParties?: Record<string, {
54
+ get(id: string): Partial<Stub>;
55
+ }>;
56
+ };
57
+ type NodeRequestNext = (error?: unknown) => void;
58
+ type NodeWebSocketLike = {
59
+ readyState?: number;
60
+ send(data: string | ArrayBuffer | ArrayBufferView, cb?: (error?: Error) => void): void;
61
+ close(code?: number, reason?: string | Buffer): void;
62
+ on(event: string, listener: (...args: any[]) => void): unknown;
63
+ off?(event: string, listener: (...args: any[]) => void): unknown;
64
+ removeListener?(event: string, listener: (...args: any[]) => void): unknown;
65
+ };
66
+ type NodeWebSocketServerLike = {
67
+ handleUpgrade(request: IncomingMessage, socket: Duplex, head: Buffer, cb: (webSocket: NodeWebSocketLike) => void): void;
68
+ emit?(event: "connection", webSocket: NodeWebSocketLike, request: IncomingMessage): boolean;
69
+ };
70
+ type ParsedPartyPath = {
71
+ namespace: string;
72
+ roomId: string;
73
+ restPath: string;
74
+ };
75
+ declare function createMemoryNodeRoomStorage(options?: {
76
+ snapshot?: NodeMemoryStorageSnapshot;
77
+ }): MemoryNodeRoomStorage;
78
+ declare function createSqliteNodeRoomStorage(options: NodeSqliteStorageOptions): SqliteNodeRoomStorage;
79
+ declare function createNodeRoomTransport<TServer extends Server>(ServerClass: NodeServerConstructor<TServer>, options?: NodeRoomTransportOptions): NodeRoomTransport<TServer>;
80
+ declare class MemoryNodeRoomStorage implements NodeRoomStorageProvider {
81
+ private readonly rooms;
82
+ constructor(options?: {
83
+ snapshot?: NodeMemoryStorageSnapshot;
84
+ });
85
+ getStorage(namespace: string, roomId: string): NodeRoomStorage;
86
+ snapshot(): NodeMemoryStorageSnapshot;
87
+ restore(snapshot: NodeMemoryStorageSnapshot): void;
88
+ clear(): void;
89
+ }
90
+ declare class SqliteNodeRoomStorage implements NodeRoomStorageProvider {
91
+ private readonly options;
92
+ private readonly tableName;
93
+ private databasePromise?;
94
+ private configured;
95
+ constructor(options: NodeSqliteStorageOptions);
96
+ getStorage(namespace: string, roomId: string): Promise<NodeRoomStorage>;
97
+ private getDatabase;
98
+ private createDatabase;
99
+ private ensureConfigured;
100
+ }
101
+ declare class NodeRoomTransport<TServer extends Server = Server> {
102
+ private readonly ServerClass;
103
+ readonly partiesPath: string;
104
+ readonly env: Record<string, unknown>;
105
+ readonly externalParties: Record<string, {
106
+ get(id: string): Partial<Stub>;
107
+ }>;
108
+ private readonly rooms;
109
+ private readonly storage;
110
+ private readonly records;
111
+ constructor(ServerClass: NodeServerConstructor<TServer>, options?: NodeRoomTransportOptions);
112
+ fetch(pathOrRequest: string | Request, init?: RequestInit): Promise<Response>;
113
+ handleNodeRequest(req: IncomingMessage, res: ServerResponse, next?: NodeRequestNext): Promise<void>;
114
+ handleUpgrade(wsServer: NodeWebSocketServerLike, request: IncomingMessage, socket: Duplex, head: Buffer): void;
115
+ acceptWebSocket(webSocket: NodeWebSocketLike, request: IncomingMessage | Request, parsedPath?: ParsedPartyPath): Promise<NodeConnection>;
116
+ getRoom(namespace: string, roomId: string): Promise<NodeRoom>;
117
+ getNamespacePath(namespace: string, roomId: string): string;
118
+ private getRecord;
119
+ private createRecord;
120
+ private resolveStorage;
121
+ private parsePartyRequest;
122
+ private getPartiesBase;
123
+ }
124
+ declare class NodeRoom implements Room {
125
+ readonly id: string;
126
+ readonly internalID: string;
127
+ readonly name: string;
128
+ readonly env: Record<string, unknown>;
129
+ readonly storage: Storage;
130
+ readonly context: Context;
131
+ readonly connections: Map<string, Connection<unknown>>;
132
+ readonly parties: Context["parties"];
133
+ readonly analytics: _cloudflare_workers_types.AnalyticsEngineDataset;
134
+ constructor(options: {
135
+ id: string;
136
+ name: string;
137
+ env: Record<string, unknown>;
138
+ storage: NodeRoomStorage;
139
+ transport: NodeRoomTransport;
140
+ });
141
+ blockConcurrencyWhile<T>(callback: () => Promise<T>): Promise<T>;
142
+ broadcast(msg: string | ArrayBuffer | ArrayBufferView, without?: string[]): void;
143
+ getConnection<TState = unknown>(id: string): Connection<TState> | undefined;
144
+ getConnections<TState = unknown>(): Iterable<Connection<TState>>;
145
+ addConnection(connection: NodeConnection): void;
146
+ deleteConnection(id: string, connection?: NodeConnection): void;
147
+ }
148
+ declare class NodeConnection<TState = unknown> {
149
+ private readonly webSocket;
150
+ readonly id: string;
151
+ readonly sessionId: string;
152
+ readonly socket: this;
153
+ readonly uri: string;
154
+ state: ConnectionState<TState> | TState | null;
155
+ private attachment;
156
+ constructor(webSocket: NodeWebSocketLike, uri: string, sessionId?: string);
157
+ send(data: string | ArrayBuffer | ArrayBufferView): void;
158
+ close(code?: number, reason?: string): void;
159
+ setState(state: TState | ConnectionSetStateFn<TState> | null): { readonly [K in keyof TState]: TState[K] extends infer T ? T extends TState[K] ? T extends string | number | boolean ? T : T extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T extends Set<infer M> ? ReadonlySet<any> : { readonly [K_3 in keyof T]: T[K_3] extends infer T_1 ? T_1 extends T[K_3] ? T_1 extends string | number | boolean ? T_1 : T_1 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_1 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_1 extends Set<infer M> ? ReadonlySet<any> : { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string | number | boolean ? T_2 : T_2 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_2 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_2 extends Set<infer M> ? ReadonlySet<any> : { readonly [K_5 in keyof T_2]: T_2[K_5] extends infer T_3 ? T_3 extends T_2[K_5] ? T_3 extends string | number | boolean ? T_3 : T_3 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_3 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_3 extends Set<infer M> ? ReadonlySet<any> : { readonly [K_6 in keyof T_3]: T_3[K_6] extends infer T_4 ? T_4 extends T_3[K_6] ? T_4 extends string | number | boolean ? T_4 : T_4 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_4 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_4 extends Set<infer M> ? ReadonlySet<any> : { readonly [K_7 in keyof T_4]: T_4[K_7] extends infer T_5 ? T_5 extends T_4[K_7] ? T_5 extends string | number | boolean ? T_5 : T_5 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_5 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_5 extends Set<infer M> ? ReadonlySet<any> : { readonly [K_8 in keyof T_5]: T_5[K_8] extends infer T_6 ? T_6 extends T_5[K_8] ? T_6 extends string | number | boolean ? T_6 : T_6 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_6 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_6 extends Set<infer M> ? ReadonlySet<any> : { readonly [K_9 in keyof T_6]: T_6[K_9] extends infer T_7 ? T_7 extends T_6[K_9] ? T_7 extends string | number | boolean ? T_7 : T_7 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_7 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_7 extends Set<infer M> ? ReadonlySet<any> : { readonly [K_10 in keyof T_7]: T_7[K_10] extends infer T_8 ? T_8 extends T_7[K_10] ? T_8 extends string | number | boolean ? T_8 : T_8 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_8 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_8 extends Set<infer M> ? ReadonlySet<any> : { readonly [K_11 in keyof T_8]: T_8[K_11] extends infer T_9 ? T_9 extends T_8[K_11] ? T_9 extends string | number | boolean ? T_9 : T_9 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_9 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_9 extends Set<infer M> ? ReadonlySet<any> : { readonly [K_12 in keyof T_9]: T_9[K_12] extends infer T_10 ? T_10 extends T_9[K_12] ? T_10 extends string | number | boolean ? T_10 : T_10 extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly (U extends string | number | boolean ? U : U extends (infer U)[] ? readonly any[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : U extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : U extends Set<infer M> ? ReadonlySet<any> : { readonly [K_2 in keyof U]: any; })[] : T_10 extends Map<infer K_1, infer V> ? ReadonlyMap<any, any> : T_10 extends Set<infer M> ? ReadonlySet<any> : any : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; };
160
+ serializeAttachment<T = unknown>(attachment: T): void;
161
+ deserializeAttachment<T = unknown>(): T | null;
162
+ }
163
+
164
+ export { MemoryNodeRoomStorage, NodeConnection, type NodeMemoryStorageSnapshot, type NodeRequestNext, NodeRoom, type NodeRoomStorage, type NodeRoomStorageFactory, type NodeRoomStorageListOptions, type NodeRoomStorageProvider, NodeRoomTransport, type NodeRoomTransportOptions, type NodeServerConstructor, type NodeSqliteDatabase, type NodeSqliteJournalMode, type NodeSqliteStorageOptions, type NodeWebSocketLike, type NodeWebSocketServerLike, SqliteNodeRoomStorage, createMemoryNodeRoomStorage, createNodeRoomTransport, createSqliteNodeRoomStorage };