@principal-ai/control-tower-core 0.1.25 → 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.
- package/dist/abstractions/AuthAdapter.d.ts +1 -1
- package/dist/abstractions/AuthAdapter.d.ts.map +1 -1
- package/dist/abstractions/DefaultLockManager.d.ts +2 -2
- package/dist/abstractions/DefaultLockManager.d.ts.map +1 -1
- package/dist/abstractions/DefaultLockManager.js +7 -8
- package/dist/abstractions/DefaultPresenceManager.d.ts +4 -4
- package/dist/abstractions/DefaultPresenceManager.d.ts.map +1 -1
- package/dist/abstractions/DefaultPresenceManager.js +25 -25
- package/dist/abstractions/DefaultRoomManager.d.ts +3 -3
- package/dist/abstractions/DefaultRoomManager.d.ts.map +1 -1
- package/dist/abstractions/DefaultRoomManager.js +6 -4
- package/dist/abstractions/EventEmitter.d.ts.map +1 -1
- package/dist/abstractions/LockManager.d.ts +1 -1
- package/dist/abstractions/LockManager.d.ts.map +1 -1
- package/dist/abstractions/LockManager.js +1 -1
- package/dist/abstractions/PresenceExtension.d.ts +2 -2
- package/dist/abstractions/PresenceExtension.d.ts.map +1 -1
- package/dist/abstractions/PresenceManager.d.ts +1 -1
- package/dist/abstractions/PresenceManager.d.ts.map +1 -1
- package/dist/abstractions/PresenceManager.js +5 -5
- package/dist/abstractions/RoomManager.d.ts +2 -2
- package/dist/abstractions/RoomManager.d.ts.map +1 -1
- package/dist/abstractions/StorageAdapter.d.ts +4 -4
- package/dist/abstractions/StorageAdapter.d.ts.map +1 -1
- package/dist/abstractions/TransportAdapter.d.ts +4 -4
- package/dist/abstractions/TransportAdapter.d.ts.map +1 -1
- package/dist/abstractions/index.d.ts +11 -11
- package/dist/abstractions/index.d.ts.map +1 -1
- package/dist/abstractions/index.js +9 -9
- package/dist/adapters/mock/MockAuthAdapter.d.ts +2 -2
- package/dist/adapters/mock/MockAuthAdapter.d.ts.map +1 -1
- package/dist/adapters/mock/MockAuthAdapter.js +13 -11
- package/dist/adapters/mock/MockRTCDataChannel.d.ts +83 -0
- package/dist/adapters/mock/MockRTCDataChannel.d.ts.map +1 -0
- package/dist/adapters/mock/MockRTCDataChannel.js +146 -0
- package/dist/adapters/mock/MockRTCPeerConnection.d.ts +168 -0
- package/dist/adapters/mock/MockRTCPeerConnection.d.ts.map +1 -0
- package/dist/adapters/mock/MockRTCPeerConnection.js +449 -0
- package/dist/adapters/mock/MockStorageAdapter.d.ts +1 -1
- package/dist/adapters/mock/MockStorageAdapter.d.ts.map +1 -1
- package/dist/adapters/mock/MockStorageAdapter.js +18 -18
- package/dist/adapters/mock/MockTransportAdapter.d.ts +2 -2
- package/dist/adapters/mock/MockTransportAdapter.d.ts.map +1 -1
- package/dist/adapters/mock/MockTransportAdapter.js +38 -38
- package/dist/adapters/mock/index.d.ts +5 -3
- package/dist/adapters/mock/index.d.ts.map +1 -1
- package/dist/adapters/mock/index.js +10 -5
- package/dist/adapters/webrtc/WebRTCSignalingAdapter.d.ts +135 -0
- package/dist/adapters/webrtc/WebRTCSignalingAdapter.d.ts.map +1 -0
- package/dist/adapters/webrtc/WebRTCSignalingAdapter.js +368 -0
- package/dist/adapters/webrtc/index.d.ts +2 -0
- package/dist/adapters/webrtc/index.d.ts.map +1 -0
- package/dist/adapters/webrtc/index.js +5 -0
- package/dist/adapters/websocket/BrowserWebSocketTransportAdapter.d.ts +75 -0
- package/dist/adapters/websocket/BrowserWebSocketTransportAdapter.d.ts.map +1 -0
- package/dist/adapters/websocket/BrowserWebSocketTransportAdapter.js +231 -0
- package/dist/adapters/websocket/WebSocketClientTransportAdapter.d.ts +3 -3
- package/dist/adapters/websocket/WebSocketClientTransportAdapter.d.ts.map +1 -1
- package/dist/adapters/websocket/WebSocketClientTransportAdapter.js +38 -38
- package/dist/adapters/websocket/WebSocketServerTransportAdapter.d.ts +7 -7
- package/dist/adapters/websocket/WebSocketServerTransportAdapter.d.ts.map +1 -1
- package/dist/adapters/websocket/WebSocketServerTransportAdapter.js +94 -91
- package/dist/adapters/websocket/browser.d.ts +2 -0
- package/dist/adapters/websocket/browser.d.ts.map +1 -0
- package/dist/adapters/websocket/browser.js +6 -0
- package/dist/adapters/websocket/index.d.ts +3 -2
- package/dist/adapters/websocket/index.d.ts.map +1 -1
- package/dist/adapters/websocket/index.js +7 -3
- package/dist/adapters/websocket/node.d.ts +3 -0
- package/dist/adapters/websocket/node.d.ts.map +1 -0
- package/dist/adapters/websocket/node.js +8 -0
- package/dist/client/BaseClient.d.ts +6 -6
- package/dist/client/BaseClient.d.ts.map +1 -1
- package/dist/client/BaseClient.js +86 -72
- package/dist/client/ClientBuilder.d.ts +5 -5
- package/dist/client/ClientBuilder.d.ts.map +1 -1
- package/dist/client/ClientBuilder.js +3 -3
- package/dist/client/PresenceClient.d.ts +4 -4
- package/dist/client/PresenceClient.d.ts.map +1 -1
- package/dist/client/PresenceClient.js +30 -30
- package/dist/client/index.d.ts +3 -3
- package/dist/client/index.d.ts.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -19
- package/dist/index.js.map +27 -23
- package/dist/index.mjs +1585 -558
- package/dist/index.mjs.map +27 -23
- package/dist/server/BaseServer.d.ts +13 -13
- package/dist/server/BaseServer.d.ts.map +1 -1
- package/dist/server/BaseServer.js +218 -143
- package/dist/server/ExperimentalAPI.d.ts +7 -7
- package/dist/server/ExperimentalAPI.d.ts.map +1 -1
- package/dist/server/ExperimentalAPI.js +22 -22
- package/dist/server/ServerBuilder.d.ts +11 -11
- package/dist/server/ServerBuilder.d.ts.map +1 -1
- package/dist/server/ServerBuilder.js +10 -10
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -3
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/events.d.ts +10 -10
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/experimental.d.ts +2 -2
- package/dist/types/experimental.d.ts.map +1 -1
- package/dist/types/experimental.js +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -2
- package/dist/types/lock.d.ts +2 -2
- package/dist/types/lock.d.ts.map +1 -1
- package/dist/types/presence.d.ts +3 -3
- package/dist/types/presence.d.ts.map +1 -1
- package/dist/types/room.d.ts +4 -4
- package/dist/types/room.d.ts.map +1 -1
- package/dist/types/room.js +2 -2
- package/package.json +15 -7
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* @see docs/EXPERIMENTAL_BROADCAST.md
|
|
12
12
|
* @see docs/FEATURE_REQUEST_TEMPLATE.md
|
|
13
13
|
*/
|
|
14
|
-
import type {
|
|
15
|
-
import type {
|
|
16
|
-
import type { ConnectedClient } from
|
|
14
|
+
import type { BroadcastOptions, BroadcastResult, ClientPredicate, ExperimentalFeatureConfig, ExperimentalUsageEvent } from "../types/experimental.js";
|
|
15
|
+
import type { Message } from "../types/index.js";
|
|
16
|
+
import type { ConnectedClient } from "./BaseServer.js";
|
|
17
17
|
/**
|
|
18
18
|
* Experimental API namespace
|
|
19
19
|
*
|
|
@@ -55,7 +55,7 @@ export declare class ExperimentalAPI {
|
|
|
55
55
|
* });
|
|
56
56
|
* ```
|
|
57
57
|
*/
|
|
58
|
-
broadcast(message: Omit<Message,
|
|
58
|
+
broadcast(message: Omit<Message, "id" | "timestamp">, options?: BroadcastOptions): Promise<BroadcastResult>;
|
|
59
59
|
/**
|
|
60
60
|
* Broadcasts a message to all authenticated clients
|
|
61
61
|
*
|
|
@@ -76,7 +76,7 @@ export declare class ExperimentalAPI {
|
|
|
76
76
|
* });
|
|
77
77
|
* ```
|
|
78
78
|
*/
|
|
79
|
-
broadcastAuthenticated(message: Omit<Message,
|
|
79
|
+
broadcastAuthenticated(message: Omit<Message, "id" | "timestamp">, options?: BroadcastOptions): Promise<BroadcastResult>;
|
|
80
80
|
/**
|
|
81
81
|
* Broadcasts a message to clients matching a predicate function
|
|
82
82
|
*
|
|
@@ -102,7 +102,7 @@ export declare class ExperimentalAPI {
|
|
|
102
102
|
* );
|
|
103
103
|
* ```
|
|
104
104
|
*/
|
|
105
|
-
broadcastWhere(predicate: ClientPredicate, message: Omit<Message,
|
|
105
|
+
broadcastWhere(predicate: ClientPredicate, message: Omit<Message, "id" | "timestamp">, options?: BroadcastOptions): Promise<BroadcastResult>;
|
|
106
106
|
/**
|
|
107
107
|
* Sends a message to specific users by their user IDs
|
|
108
108
|
*
|
|
@@ -127,7 +127,7 @@ export declare class ExperimentalAPI {
|
|
|
127
127
|
* );
|
|
128
128
|
* ```
|
|
129
129
|
*/
|
|
130
|
-
sendToUsers(userIds: string[], message: Omit<Message,
|
|
130
|
+
sendToUsers(userIds: string[], message: Omit<Message, "id" | "timestamp">, options?: BroadcastOptions): Promise<BroadcastResult>;
|
|
131
131
|
private ensureEnabled;
|
|
132
132
|
private warnIfEnabled;
|
|
133
133
|
private trackUsage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExperimentalAPI.d.ts","sourceRoot":"","sources":["../../src/server/ExperimentalAPI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ExperimentalAPI.d.ts","sourceRoot":"","sources":["../../src/server/ExperimentalAPI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;;;GAKG;AACH,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAEtB;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA0C;IACtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAGV;gBAEP,OAAO,EAAE;QACpB,MAAM,EAAE,yBAAyB,CAAC;QAClC,MAAM,CAAC,EAAE;YAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;SAAE,CAAC;QACjE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;QACrD,UAAU,EAAE,MAAM,eAAe,EAAE,CAAC;QACpC,YAAY,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;KACnB;IAQD;;;;;;;;;;;;;;;;;;;OAmBG;IACG,SAAS,CACd,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,WAAW,CAAC,EAC1C,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;IAa3B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,sBAAsB,CAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,WAAW,CAAC,EAC1C,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;IAkB3B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,cAAc,CACnB,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,WAAW,CAAC,EAC1C,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;IAkB3B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,WAAW,CAChB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,WAAW,CAAC,EAC1C,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;IAuB3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,UAAU;YAuBJ,kBAAkB;IAsEhC,OAAO,CAAC,UAAU;CAGlB"}
|
|
@@ -50,11 +50,11 @@ class ExperimentalAPI {
|
|
|
50
50
|
* ```
|
|
51
51
|
*/
|
|
52
52
|
async broadcast(message, options) {
|
|
53
|
-
this.ensureEnabled(
|
|
54
|
-
this.warnIfEnabled(
|
|
53
|
+
this.ensureEnabled("broadcast", "enableBroadcast");
|
|
54
|
+
this.warnIfEnabled("broadcast()");
|
|
55
55
|
const clients = this.getClients();
|
|
56
56
|
const result = await this.broadcastToClients(clients, message, options);
|
|
57
|
-
this.trackUsage(
|
|
57
|
+
this.trackUsage("broadcast", message.type, clients.length, message.payload);
|
|
58
58
|
return result;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
@@ -78,11 +78,11 @@ class ExperimentalAPI {
|
|
|
78
78
|
* ```
|
|
79
79
|
*/
|
|
80
80
|
async broadcastAuthenticated(message, options) {
|
|
81
|
-
this.ensureEnabled(
|
|
82
|
-
this.warnIfEnabled(
|
|
83
|
-
const clients = this.getClients().filter(client => client.authenticated);
|
|
81
|
+
this.ensureEnabled("broadcastAuthenticated", "enableBroadcast");
|
|
82
|
+
this.warnIfEnabled("broadcastAuthenticated()");
|
|
83
|
+
const clients = this.getClients().filter((client) => client.authenticated);
|
|
84
84
|
const result = await this.broadcastToClients(clients, message, options);
|
|
85
|
-
this.trackUsage(
|
|
85
|
+
this.trackUsage("broadcastAuthenticated", message.type, clients.length, message.payload);
|
|
86
86
|
return result;
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
@@ -111,11 +111,11 @@ class ExperimentalAPI {
|
|
|
111
111
|
* ```
|
|
112
112
|
*/
|
|
113
113
|
async broadcastWhere(predicate, message, options) {
|
|
114
|
-
this.ensureEnabled(
|
|
115
|
-
this.warnIfEnabled(
|
|
114
|
+
this.ensureEnabled("broadcastWhere", "enableBroadcast");
|
|
115
|
+
this.warnIfEnabled("broadcastWhere()");
|
|
116
116
|
const clients = this.getClients().filter(predicate);
|
|
117
117
|
const result = await this.broadcastToClients(clients, message, options);
|
|
118
|
-
this.trackUsage(
|
|
118
|
+
this.trackUsage("broadcastWhere", message.type, clients.length, message.payload);
|
|
119
119
|
return result;
|
|
120
120
|
}
|
|
121
121
|
/**
|
|
@@ -143,12 +143,12 @@ class ExperimentalAPI {
|
|
|
143
143
|
* ```
|
|
144
144
|
*/
|
|
145
145
|
async sendToUsers(userIds, message, options) {
|
|
146
|
-
this.ensureEnabled(
|
|
147
|
-
this.warnIfEnabled(
|
|
146
|
+
this.ensureEnabled("sendToUsers", "enableBroadcast");
|
|
147
|
+
this.warnIfEnabled("sendToUsers()");
|
|
148
148
|
const userIdSet = new Set(userIds);
|
|
149
|
-
const clients = this.getClients().filter(client => userIdSet.has(client.userId));
|
|
149
|
+
const clients = this.getClients().filter((client) => userIdSet.has(client.userId));
|
|
150
150
|
const result = await this.broadcastToClients(clients, message, options);
|
|
151
|
-
this.trackUsage(
|
|
151
|
+
this.trackUsage("sendToUsers", message.type, clients.length, message.payload);
|
|
152
152
|
return result;
|
|
153
153
|
}
|
|
154
154
|
// Private helper methods
|
|
@@ -171,7 +171,7 @@ class ExperimentalAPI {
|
|
|
171
171
|
messageType,
|
|
172
172
|
recipientCount,
|
|
173
173
|
timestamp: Date.now(),
|
|
174
|
-
payloadSize
|
|
174
|
+
payloadSize,
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
177
|
}
|
|
@@ -180,13 +180,13 @@ class ExperimentalAPI {
|
|
|
180
180
|
const opts = {
|
|
181
181
|
continueOnError: options?.continueOnError ?? true,
|
|
182
182
|
sendTimeout: options?.sendTimeout ?? 5000,
|
|
183
|
-
includeErrors: options?.includeErrors ?? false
|
|
183
|
+
includeErrors: options?.includeErrors ?? false,
|
|
184
184
|
};
|
|
185
185
|
const fullMessage = {
|
|
186
186
|
id: this.generateId(),
|
|
187
187
|
timestamp: Date.now(),
|
|
188
188
|
type: message.type,
|
|
189
|
-
payload: message.payload
|
|
189
|
+
payload: message.payload,
|
|
190
190
|
};
|
|
191
191
|
let sent = 0;
|
|
192
192
|
let failed = 0;
|
|
@@ -195,19 +195,19 @@ class ExperimentalAPI {
|
|
|
195
195
|
try {
|
|
196
196
|
// Create timeout promise
|
|
197
197
|
const timeoutPromise = new Promise((_, reject) => {
|
|
198
|
-
setTimeout(() => reject(new Error(
|
|
198
|
+
setTimeout(() => reject(new Error("Send timeout")), opts.sendTimeout);
|
|
199
199
|
});
|
|
200
200
|
// Convert Message to Record<string, unknown> for sendToClient
|
|
201
201
|
const messageRecord = {
|
|
202
202
|
id: fullMessage.id,
|
|
203
203
|
type: fullMessage.type,
|
|
204
204
|
payload: fullMessage.payload,
|
|
205
|
-
timestamp: fullMessage.timestamp
|
|
205
|
+
timestamp: fullMessage.timestamp,
|
|
206
206
|
};
|
|
207
207
|
// Race between send and timeout
|
|
208
208
|
await Promise.race([
|
|
209
209
|
this.sendToClient(client.id, messageRecord),
|
|
210
|
-
timeoutPromise
|
|
210
|
+
timeoutPromise,
|
|
211
211
|
]);
|
|
212
212
|
sent++;
|
|
213
213
|
}
|
|
@@ -216,7 +216,7 @@ class ExperimentalAPI {
|
|
|
216
216
|
if (opts.includeErrors) {
|
|
217
217
|
errors.push({
|
|
218
218
|
clientId: client.id,
|
|
219
|
-
error: error
|
|
219
|
+
error: error,
|
|
220
220
|
});
|
|
221
221
|
}
|
|
222
222
|
if (!opts.continueOnError) {
|
|
@@ -229,7 +229,7 @@ class ExperimentalAPI {
|
|
|
229
229
|
sent,
|
|
230
230
|
failed,
|
|
231
231
|
errors,
|
|
232
|
-
durationMs: Date.now() - startTime
|
|
232
|
+
durationMs: Date.now() - startTime,
|
|
233
233
|
};
|
|
234
234
|
}
|
|
235
235
|
generateId() {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
import type { LockManager } from
|
|
6
|
-
import type { PresenceManager } from
|
|
7
|
-
import type {
|
|
8
|
-
import {
|
|
9
|
-
import type {
|
|
10
|
-
import type {
|
|
11
|
-
import
|
|
1
|
+
import type { Server as HttpServer } from "http";
|
|
2
|
+
import type { Server as HttpsServer } from "https";
|
|
3
|
+
import type { WebSocketServer } from "ws";
|
|
4
|
+
import type { IAuthAdapter } from "../abstractions/AuthAdapter.js";
|
|
5
|
+
import type { LockManager } from "../abstractions/LockManager.js";
|
|
6
|
+
import type { PresenceManager } from "../abstractions/PresenceManager.js";
|
|
7
|
+
import type { RoomManager } from "../abstractions/RoomManager.js";
|
|
8
|
+
import type { IStorageAdapter } from "../abstractions/StorageAdapter.js";
|
|
9
|
+
import type { ITransportAdapter } from "../abstractions/TransportAdapter.js";
|
|
10
|
+
import type { ExperimentalFeatureConfig, RoomConfig } from "../types/index.js";
|
|
11
|
+
import { BaseServer } from "./BaseServer.js";
|
|
12
12
|
export declare class ServerBuilder {
|
|
13
13
|
private transport?;
|
|
14
14
|
private auth?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerBuilder.d.ts","sourceRoot":"","sources":["../../src/server/ServerBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ServerBuilder.d.ts","sourceRoot":"","sources":["../../src/server/ServerBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAqB,MAAM,iBAAiB,CAAC;AAEhE,qBAAa,aAAa;IACzB,OAAO,CAAC,SAAS,CAAC,CAAoB;IACtC,OAAO,CAAC,IAAI,CAAC,CAAe;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAkB;IAClC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,iBAAiB,CAAC,CAAsB;IAChD,OAAO,CAAC,UAAU,CAAC,CAA2B;IAC9C,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IAEzD,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAKjD,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKlC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAK3C,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAK/C,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAK/C;;;;;;;OAOG;IACH,mBAAmB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAK3D,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAKxD,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI;IAKtD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKrC,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAK/C;;;;;;;OAOG;IACH,wBAAwB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAKnE,KAAK,IAAI,UAAU;IAkDnB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CAyClC"}
|
|
@@ -66,13 +66,13 @@ class ServerBuilder {
|
|
|
66
66
|
}
|
|
67
67
|
build() {
|
|
68
68
|
if (!this.transport) {
|
|
69
|
-
throw new Error(
|
|
69
|
+
throw new Error("Transport adapter is required");
|
|
70
70
|
}
|
|
71
71
|
if (!this.roomManager) {
|
|
72
|
-
throw new Error(
|
|
72
|
+
throw new Error("Room manager is required");
|
|
73
73
|
}
|
|
74
74
|
if (!this.lockManager) {
|
|
75
|
-
throw new Error(
|
|
75
|
+
throw new Error("Lock manager is required");
|
|
76
76
|
}
|
|
77
77
|
const config = {
|
|
78
78
|
transport: this.transport,
|
|
@@ -84,7 +84,7 @@ class ServerBuilder {
|
|
|
84
84
|
defaultRoomConfig: this.defaultRoomConfig || {
|
|
85
85
|
maxUsers: 50,
|
|
86
86
|
maxHistory: 100,
|
|
87
|
-
permissions: [
|
|
87
|
+
permissions: ["read", "write"],
|
|
88
88
|
},
|
|
89
89
|
httpServer: this.httpServer,
|
|
90
90
|
webSocketPath: this.webSocketPath,
|
|
@@ -92,8 +92,8 @@ class ServerBuilder {
|
|
|
92
92
|
experimental: this.experimentalFeatures || {
|
|
93
93
|
enableBroadcast: false,
|
|
94
94
|
warnOnExperimentalUse: true,
|
|
95
|
-
trackUsageMetrics: false
|
|
96
|
-
}
|
|
95
|
+
trackUsageMetrics: false,
|
|
96
|
+
},
|
|
97
97
|
};
|
|
98
98
|
const server = new BaseServer_js_1.BaseServer(config);
|
|
99
99
|
// Auto-link presence manager to server for broadcasting
|
|
@@ -112,11 +112,11 @@ class ServerBuilder {
|
|
|
112
112
|
*/
|
|
113
113
|
wirePresenceExtensionHooks(server, presenceManager) {
|
|
114
114
|
// Initialize extensions when server starts
|
|
115
|
-
server.on(
|
|
115
|
+
server.on("started", async () => {
|
|
116
116
|
await presenceManager.initializeExtensions();
|
|
117
117
|
});
|
|
118
118
|
// Wire room join/leave events to presence extensions
|
|
119
|
-
server.on(
|
|
119
|
+
server.on("client_joined_room", async ({ clientId, roomId }) => {
|
|
120
120
|
const userId = server.getUserIdFromClientId(clientId);
|
|
121
121
|
if (userId && presenceManager.isEnabled()) {
|
|
122
122
|
// Call onRoomJoined for all extensions
|
|
@@ -128,7 +128,7 @@ class ServerBuilder {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
});
|
|
131
|
-
server.on(
|
|
131
|
+
server.on("client_left_room", async ({ clientId, roomId }) => {
|
|
132
132
|
const userId = server.getUserIdFromClientId(clientId);
|
|
133
133
|
if (userId && presenceManager.isEnabled()) {
|
|
134
134
|
// Call onRoomLeft for all extensions
|
|
@@ -141,7 +141,7 @@ class ServerBuilder {
|
|
|
141
141
|
}
|
|
142
142
|
});
|
|
143
143
|
// Destroy extensions when server stops
|
|
144
|
-
server.on(
|
|
144
|
+
server.on("stopped", async () => {
|
|
145
145
|
await presenceManager.destroyExtensions();
|
|
146
146
|
});
|
|
147
147
|
}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { BaseServer, type
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
1
|
+
export { BaseServer, type ConnectedClient, type ServerConfig, type ServerEvents, } from "./BaseServer.js";
|
|
2
|
+
export { ExperimentalAPI } from "./ExperimentalAPI.js";
|
|
3
|
+
export { ServerBuilder } from "./ServerBuilder.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EACN,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ServerBuilder = exports.ExperimentalAPI = exports.BaseServer = void 0;
|
|
4
4
|
// Server-side implementations
|
|
5
5
|
var BaseServer_js_1 = require("./BaseServer.js");
|
|
6
6
|
Object.defineProperty(exports, "BaseServer", { enumerable: true, get: function () { return BaseServer_js_1.BaseServer; } });
|
|
7
|
-
var ServerBuilder_js_1 = require("./ServerBuilder.js");
|
|
8
|
-
Object.defineProperty(exports, "ServerBuilder", { enumerable: true, get: function () { return ServerBuilder_js_1.ServerBuilder; } });
|
|
9
7
|
var ExperimentalAPI_js_1 = require("./ExperimentalAPI.js");
|
|
10
8
|
Object.defineProperty(exports, "ExperimentalAPI", { enumerable: true, get: function () { return ExperimentalAPI_js_1.ExperimentalAPI; } });
|
|
9
|
+
var ServerBuilder_js_1 = require("./ServerBuilder.js");
|
|
10
|
+
Object.defineProperty(exports, "ServerBuilder", { enumerable: true, get: function () { return ServerBuilder_js_1.ServerBuilder; } });
|
package/dist/types/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf"}
|
package/dist/types/events.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Lock } from
|
|
2
|
-
export type EventType =
|
|
1
|
+
import type { Lock } from "./lock.js";
|
|
2
|
+
export type EventType = "file_change" | "commit" | "branch_change" | "cursor_position" | "git_status" | "lock_acquired" | "lock_released" | "lock_status" | "user_joined" | "user_left" | "heartbeat";
|
|
3
3
|
export interface BaseEvent {
|
|
4
4
|
id: string;
|
|
5
5
|
type: EventType;
|
|
@@ -8,9 +8,9 @@ export interface BaseEvent {
|
|
|
8
8
|
roomId: string;
|
|
9
9
|
metadata?: Record<string, unknown>;
|
|
10
10
|
}
|
|
11
|
-
export type FileAction =
|
|
11
|
+
export type FileAction = "create" | "update" | "delete" | "rename";
|
|
12
12
|
export interface FileChangeEvent extends BaseEvent {
|
|
13
|
-
type:
|
|
13
|
+
type: "file_change";
|
|
14
14
|
data: {
|
|
15
15
|
path: string;
|
|
16
16
|
action: FileAction;
|
|
@@ -19,7 +19,7 @@ export interface FileChangeEvent extends BaseEvent {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
export interface GitStatusEvent extends BaseEvent {
|
|
22
|
-
type:
|
|
22
|
+
type: "git_status";
|
|
23
23
|
data: {
|
|
24
24
|
branch: string;
|
|
25
25
|
ahead: number;
|
|
@@ -31,7 +31,7 @@ export interface GitStatusEvent extends BaseEvent {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
export interface CommitEvent extends BaseEvent {
|
|
34
|
-
type:
|
|
34
|
+
type: "commit";
|
|
35
35
|
data: {
|
|
36
36
|
hash: string;
|
|
37
37
|
message: string;
|
|
@@ -40,14 +40,14 @@ export interface CommitEvent extends BaseEvent {
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
export interface BranchChangeEvent extends BaseEvent {
|
|
43
|
-
type:
|
|
43
|
+
type: "branch_change";
|
|
44
44
|
data: {
|
|
45
45
|
from: string;
|
|
46
46
|
to: string;
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
export interface CursorPositionEvent extends BaseEvent {
|
|
50
|
-
type:
|
|
50
|
+
type: "cursor_position";
|
|
51
51
|
data: {
|
|
52
52
|
file: string;
|
|
53
53
|
line: number;
|
|
@@ -55,11 +55,11 @@ export interface CursorPositionEvent extends BaseEvent {
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
export interface LockStatusEvent extends BaseEvent {
|
|
58
|
-
type:
|
|
58
|
+
type: "lock_status";
|
|
59
59
|
data: {
|
|
60
60
|
lockId?: string;
|
|
61
61
|
lock?: Lock;
|
|
62
|
-
action:
|
|
62
|
+
action: "acquired" | "released" | "expired";
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
export type Event = FileChangeEvent | GitStatusEvent | CommitEvent | BranchChangeEvent | CursorPositionEvent | LockStatusEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,MAAM,SAAS,GAClB,aAAa,GACb,QAAQ,GACR,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,aAAa,GACb,aAAa,GACb,WAAW,GACX,WAAW,CAAC;AAEf,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnE,MAAM,WAAW,eAAgB,SAAQ,SAAS;IACjD,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,UAAU,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACF;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAChD,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;KACH,CAAC;CACF;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;CACF;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IACnD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACX,CAAC;CACF;AAED,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACrD,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;CACF;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IACjD,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;KAC5C,CAAC;CACF;AAED,MAAM,MAAM,KAAK,GACd,eAAe,GACf,cAAc,GACd,WAAW,GACX,iBAAiB,GACjB,mBAAmB,GACnB,eAAe,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* For production use, submit a feature request to graduate these APIs:
|
|
8
8
|
* @see docs/FEATURE_REQUEST_TEMPLATE.md
|
|
9
9
|
*/
|
|
10
|
-
import type { ConnectedClient } from
|
|
10
|
+
import type { ConnectedClient } from "../server/BaseServer.js";
|
|
11
11
|
/**
|
|
12
12
|
* Configuration for experimental features
|
|
13
13
|
*/
|
|
@@ -107,7 +107,7 @@ export interface ExperimentalUsageEvent {
|
|
|
107
107
|
/**
|
|
108
108
|
* The experimental method that was called
|
|
109
109
|
*/
|
|
110
|
-
method:
|
|
110
|
+
method: "broadcast" | "broadcastAuthenticated" | "broadcastWhere" | "sendToUsers";
|
|
111
111
|
/**
|
|
112
112
|
* Message type being broadcast
|
|
113
113
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experimental.d.ts","sourceRoot":"","sources":["../../src/types/experimental.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,yBAAyB;
|
|
1
|
+
{"version":3,"file":"experimental.d.ts","sourceRoot":"","sources":["../../src/types/experimental.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,KAAK,CAAC;KACb,CAAC,CAAC;IAEH;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,MAAM,EACH,WAAW,GACX,wBAAwB,GACxB,gBAAgB,GAChB,aAAa,CAAC;IAEjB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;aAEjC,OAAO,EAAE,MAAM;aACf,SAAS,EAAE,MAAM,yBAAyB;gBAD1C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,yBAAyB;CAe3D"}
|
|
@@ -26,7 +26,7 @@ class ExperimentalFeatureError extends Error {
|
|
|
26
26
|
`See docs/EXPERIMENTAL_BROADCAST.md for details.`);
|
|
27
27
|
this.feature = feature;
|
|
28
28
|
this.configKey = configKey;
|
|
29
|
-
this.name =
|
|
29
|
+
this.name = "ExperimentalFeatureError";
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
exports.ExperimentalFeatureError = ExperimentalFeatureError;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export type ConnectionState =
|
|
1
|
+
export { AuthenticatePayload, AuthenticateResult, AuthResult, JWTConfig, TokenPayload, } from "./auth.js";
|
|
2
|
+
export { BaseEvent, BranchChangeEvent, CommitEvent, CursorPositionEvent, Event, EventType, FileAction, FileChangeEvent, GitStatusEvent, } from "./events.js";
|
|
3
|
+
export { Lock, LockPriority, LockQueueItem, LockRequest, LockState, LockType, } from "./lock.js";
|
|
4
|
+
export { deserializeRoomState, Room, RoomConfig, RoomPermission, RoomState, RoomUser, SerializableRoomState, serializeRoomState, UserStatus, } from "./room.js";
|
|
5
|
+
export type ConnectionState = "connecting" | "connected" | "disconnecting" | "disconnected";
|
|
6
6
|
export interface ConnectionOptions {
|
|
7
7
|
url?: string;
|
|
8
8
|
reconnect?: boolean;
|
|
@@ -20,6 +20,6 @@ export interface Message {
|
|
|
20
20
|
export type MessageHandler = (message: Message) => void | Promise<void>;
|
|
21
21
|
export type ErrorHandler = (error: Error) => void;
|
|
22
22
|
export type CloseHandler = (code: number, reason: string) => void;
|
|
23
|
-
export {
|
|
24
|
-
export {
|
|
23
|
+
export { BroadcastOptions, BroadcastResult, ClientPredicate, ExperimentalFeatureConfig, ExperimentalFeatureError, ExperimentalUsageEvent, } from "./experimental.js";
|
|
24
|
+
export { ActivityUpdate, DeviceInfo, PresenceChangeEvent, PresenceConfig, PresenceStatus, UserPresence, } from "./presence.js";
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,YAAY,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,KAAK,EACL,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,QAAQ,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,cAAc,EACd,SAAS,EACT,QAAQ,EACR,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,GACV,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,eAAe,GACxB,YAAY,GACZ,WAAW,GACX,eAAe,GACf,cAAc,CAAC;AAElB,MAAM,WAAW,iBAAiB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAElE,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACN,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,YAAY,GACZ,MAAM,eAAe,CAAC"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExperimentalFeatureError = exports.
|
|
3
|
+
exports.ExperimentalFeatureError = exports.serializeRoomState = exports.deserializeRoomState = void 0;
|
|
4
4
|
var room_js_1 = require("./room.js");
|
|
5
|
-
Object.defineProperty(exports, "serializeRoomState", { enumerable: true, get: function () { return room_js_1.serializeRoomState; } });
|
|
6
5
|
Object.defineProperty(exports, "deserializeRoomState", { enumerable: true, get: function () { return room_js_1.deserializeRoomState; } });
|
|
6
|
+
Object.defineProperty(exports, "serializeRoomState", { enumerable: true, get: function () { return room_js_1.serializeRoomState; } });
|
|
7
7
|
var experimental_js_1 = require("./experimental.js");
|
|
8
8
|
Object.defineProperty(exports, "ExperimentalFeatureError", { enumerable: true, get: function () { return experimental_js_1.ExperimentalFeatureError; } });
|
package/dist/types/lock.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export type LockType =
|
|
2
|
-
export type LockPriority =
|
|
1
|
+
export type LockType = "file" | "directory" | "branch";
|
|
2
|
+
export type LockPriority = "low" | "normal" | "high";
|
|
3
3
|
export interface Lock {
|
|
4
4
|
id: string;
|
|
5
5
|
type: LockType;
|
package/dist/types/lock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/types/lock.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,IAAI;
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/types/lock.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,IAAI;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC9B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACpC"}
|
package/dist/types/presence.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Types for tracking global user presence independent of room membership.
|
|
5
5
|
* Supports multi-device connections and activity monitoring.
|
|
6
6
|
*/
|
|
7
|
-
export type PresenceStatus =
|
|
7
|
+
export type PresenceStatus = "online" | "away" | "offline";
|
|
8
8
|
/**
|
|
9
9
|
* Device information for a connected client
|
|
10
10
|
*/
|
|
@@ -133,7 +133,7 @@ export interface PresenceChangeEvent {
|
|
|
133
133
|
/**
|
|
134
134
|
* Reason for the change
|
|
135
135
|
*/
|
|
136
|
-
reason?:
|
|
136
|
+
reason?: "connected" | "disconnected" | "activity" | "heartbeat_timeout" | "grace_period_expired";
|
|
137
137
|
}
|
|
138
138
|
/**
|
|
139
139
|
* Activity update from a client
|
|
@@ -154,7 +154,7 @@ export interface ActivityUpdate {
|
|
|
154
154
|
/**
|
|
155
155
|
* Type of activity (optional)
|
|
156
156
|
*/
|
|
157
|
-
activityType?:
|
|
157
|
+
activityType?: "heartbeat" | "message" | "user_action";
|
|
158
158
|
/**
|
|
159
159
|
* Additional metadata
|
|
160
160
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/types/presence.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,UAAU;
|
|
1
|
+
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/types/presence.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEjC;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EACJ,WAAW,GACX,cAAc,GACd,UAAU,GACV,mBAAmB,GACnB,sBAAsB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,aAAa,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
|
package/dist/types/room.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Event } from
|
|
2
|
-
import type { Lock } from
|
|
3
|
-
export type RoomPermission =
|
|
1
|
+
import type { Event } from "./events.js";
|
|
2
|
+
import type { Lock } from "./lock.js";
|
|
3
|
+
export type RoomPermission = "read" | "write" | "admin";
|
|
4
4
|
export interface Room {
|
|
5
5
|
id: string;
|
|
6
6
|
name: string;
|
|
@@ -20,7 +20,7 @@ export interface RoomUser {
|
|
|
20
20
|
status: UserStatus;
|
|
21
21
|
metadata?: Record<string, unknown>;
|
|
22
22
|
}
|
|
23
|
-
export type UserStatus =
|
|
23
|
+
export type UserStatus = "online" | "away" | "offline";
|
|
24
24
|
export interface RoomState {
|
|
25
25
|
room: Room;
|
|
26
26
|
users: Map<string, RoomUser>;
|
package/dist/types/room.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../src/types/room.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,IAAI;
|
|
1
|
+
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../src/types/room.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,IAAI;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,qBAAqB,CAO1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,qBAAqB,GAC/B,SAAS,CAOX;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
|
package/dist/types/room.js
CHANGED
|
@@ -10,7 +10,7 @@ function serializeRoomState(state) {
|
|
|
10
10
|
room: state.room,
|
|
11
11
|
users: Object.fromEntries(state.users),
|
|
12
12
|
eventHistory: state.eventHistory,
|
|
13
|
-
locks: Object.fromEntries(state.locks)
|
|
13
|
+
locks: Object.fromEntries(state.locks),
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
@@ -21,6 +21,6 @@ function deserializeRoomState(serialized) {
|
|
|
21
21
|
room: serialized.room,
|
|
22
22
|
users: new Map(Object.entries(serialized.users)),
|
|
23
23
|
eventHistory: serialized.eventHistory,
|
|
24
|
-
locks: new Map(Object.entries(serialized.locks))
|
|
24
|
+
locks: new Map(Object.entries(serialized.locks)),
|
|
25
25
|
};
|
|
26
26
|
}
|