@mml-io/delta-net-server 0.26.0 → 0.27.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/README.md CHANGED
@@ -5,6 +5,6 @@
5
5
 
6
6
  This package contains the `DeltaNetServer` class that provides a way to accept websocket connections that can each set int64 components and byte states which are then visible to every other connected user.
7
7
 
8
- The WebSocket protocol used by this package, `delta-net-v0.1`, is defined in `@mml-io/delta-net-protocol`.
8
+ The WebSocket protocols used by this package (`delta-net-v0.1` and `delta-net-v0.2`) are defined in `@mml-io/delta-net-protocol`. Protocol version negotiation is handled automatically via WebSocket subprotocols.
9
9
 
10
- A client for the `delta-net-v0.1` protocol is provided by `@mml-io/delta-net-web`.
10
+ A client for the DeltaNet protocols is provided by `@mml-io/delta-net-web`.
@@ -0,0 +1,26 @@
1
+ import { DeltaNetServerErrorType, DeltaNetServerMessage, deltaNetProtocolSubProtocol_v0_1, deltaNetProtocolSubProtocol_v0_2 } from "@mml-io/delta-net-protocol";
2
+ import { DeltaNetServer } from "./DeltaNetServer";
3
+ export declare abstract class DeltaNetConnection {
4
+ readonly webSocket: WebSocket;
5
+ protected readonly deltaNetServer: DeltaNetServer;
6
+ abstract readonly protocolVersion: typeof deltaNetProtocolSubProtocol_v0_1 | typeof deltaNetProtocolSubProtocol_v0_2;
7
+ private websocketListener;
8
+ readonly internalConnectionId: number;
9
+ isObserver: boolean;
10
+ readonly components: Map<number, bigint>;
11
+ readonly states: Map<number, Uint8Array<ArrayBufferLike>>;
12
+ private pendingStateValidations;
13
+ private nextValidationId;
14
+ private authState;
15
+ private authenticationAbortController;
16
+ constructor(webSocket: WebSocket, deltaNetServer: DeltaNetServer);
17
+ abstract sendMessage(message: DeltaNetServerMessage): boolean;
18
+ sendEncodedBytes(bytes: Uint8Array): boolean;
19
+ dispose(): void;
20
+ setAuthenticated(): void;
21
+ disconnectWithError(error: Error, errorType: DeltaNetServerErrorType, retryable?: boolean): void;
22
+ private handleConnectUser;
23
+ private handleStateUpdate;
24
+ private handleClientMessage;
25
+ }
26
+ //# sourceMappingURL=DeltaNetConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeltaNetConnection.d.ts","sourceRoot":"","sources":["../src/DeltaNetConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,uBAAuB,EAEvB,qBAAqB,EACrB,gCAAgC,EAChC,gCAAgC,EACjC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AAEvE,8BAAsB,kBAAkB;aA0BpB,SAAS,EAAE,SAAS;IACpC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc;IA1BnD,kBAAyB,eAAe,EACpC,OAAO,gCAAgC,GACvC,OAAO,gCAAgC,CAAC;IAE5C,OAAO,CAAC,iBAAiB,CAAuC;IAEhE,SAAgB,oBAAoB,EAAE,MAAM,CAAC;IACtC,UAAU,EAAE,OAAO,CAAS;IAGnC,SAAgB,UAAU,sBAA6B;IACvD,SAAgB,MAAM,2CAAiC;IAGvD,OAAO,CAAC,uBAAuB,CAG3B;IACJ,OAAO,CAAC,gBAAgB,CAAK;IAG7B,OAAO,CAAC,SAAS,CAAwE;IACzF,OAAO,CAAC,6BAA6B,CAAgC;gBAGnD,SAAS,EAAE,SAAS,EACjB,cAAc,EAAE,cAAc;aAwCnC,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO;IAE7D,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAQ5C,OAAO;IAeP,gBAAgB;IAIhB,mBAAmB,CACxB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,uBAAuB,EAClC,SAAS,GAAE,OAAc,GACxB,IAAI;YA6BO,iBAAiB;YA0HjB,iBAAiB;IA8F/B,OAAO,CAAC,mBAAmB;CAwF5B"}
@@ -1,38 +1,39 @@
1
- import { DeltaNetV01ServerErrorType } from "@mml-io/delta-net-protocol";
2
- import { DeltaNetV01Connection } from "./DeltaNetV01Connection";
1
+ import { DeltaNetServerErrorType } from "@mml-io/delta-net-protocol";
2
+ import { DeltaNetConnection } from "./DeltaNetConnection";
3
3
  export type onJoinerOptions = {
4
- deltaNetV01Connection: DeltaNetV01Connection;
4
+ connection: DeltaNetConnection;
5
5
  components: Array<[number, bigint]>;
6
6
  states: Array<[number, Uint8Array]>;
7
7
  token: string;
8
8
  internalConnectionId: number;
9
9
  };
10
10
  export type onComponentsUpdateOptions = {
11
- deltaNetV01Connection: DeltaNetV01Connection;
11
+ connection: DeltaNetConnection;
12
12
  internalConnectionId: number;
13
13
  components: Array<[number, bigint]>;
14
14
  };
15
15
  export type onStatesUpdateOptions = {
16
- deltaNetV01Connection: DeltaNetV01Connection;
16
+ connection: DeltaNetConnection;
17
17
  internalConnectionId: number;
18
18
  states: Array<[number, Uint8Array]>;
19
+ abortSignal: AbortSignal;
19
20
  };
20
21
  export type onLeaveOptions = {
21
- deltaNetV01Connection: DeltaNetV01Connection;
22
+ connection: DeltaNetConnection;
22
23
  internalConnectionId: number;
23
24
  components: Array<[number, number]>;
24
25
  states: Array<[number, Uint8Array]>;
25
26
  };
26
27
  export type onCustomMessageOptions = {
27
- deltaNetV01Connection: DeltaNetV01Connection;
28
+ connection: DeltaNetConnection;
28
29
  internalConnectionId: number;
29
30
  customType: number;
30
31
  contents: string;
31
32
  };
32
33
  export declare class DeltaNetServerError extends Error {
33
- errorType: DeltaNetV01ServerErrorType;
34
+ errorType: DeltaNetServerErrorType;
34
35
  retryable: boolean;
35
- constructor(errorType: DeltaNetV01ServerErrorType, message: string, retryable: boolean);
36
+ constructor(errorType: DeltaNetServerErrorType, message: string, retryable: boolean);
36
37
  }
37
38
  export type DeltaNetServerOptions = {
38
39
  onJoiner?: (opts: onJoinerOptions) => true | void | Error | DeltaNetServerError | {
@@ -63,53 +64,64 @@ export declare class DeltaNetServer {
63
64
  private preTickData;
64
65
  private connectionIdToComponentIndex;
65
66
  private componentIndexToConnectionId;
66
- private connectionIdToDeltaNetServerConnection;
67
- private allDeltaNetV01Connections;
68
- private authenticatedDeltaNetV01Connections;
67
+ private connectionIdToConnection;
68
+ private allConnections;
69
+ private authenticatedConnections;
70
+ private authenticatedV01Connections;
71
+ private authenticatedV02Connections;
69
72
  private observerConnections;
70
- private webSocketToDeltaNetServerConnection;
73
+ private webSocketToConnection;
71
74
  private components;
72
75
  private states;
73
76
  private documentEffectiveStartTime;
74
- private pingCounter;
75
77
  private disposed;
76
78
  private maxStateValueSize;
77
79
  private maxMessageSize;
78
80
  constructor(opts?: DeltaNetServerOptions);
79
81
  static handleWebsocketSubprotocol(protocols: Set<string> | Array<string>): string | false;
80
- addWebSocket(webSocket: WebSocket): void;
82
+ /**
83
+ * @param webSocket The upgraded WebSocket.
84
+ * @param deltaNetSubProtocol Optional explicit delta-net sub-protocol
85
+ * version. When provided, `webSocket.protocol` is ignored for version
86
+ * selection. This allows a higher-level protocol to be negotiated at the
87
+ * WebSocket level while the delta-net version is supplied by the caller.
88
+ */
89
+ addWebSocket(webSocket: WebSocket, deltaNetSubProtocol?: string): void;
81
90
  removeWebSocket(webSocket: WebSocket): void;
82
91
  hasWebSocket(webSocket: WebSocket): boolean;
92
+ private addToAuthenticatedSets;
93
+ private removeFromAuthenticatedSets;
83
94
  dangerouslyGetConnectionsToComponentIndex(): Map<number, number>;
84
95
  dangerouslyAddNewJoinerCallback(callback: (index: number) => {
85
96
  id: number;
86
97
  afterAddCallback?: () => void;
87
98
  } | null): void;
88
- private disconnectWithError;
89
99
  getComponentValue(componentId: number, componentIndex: number): number | null;
90
100
  getNextConnectionId(): number;
91
101
  getMaxMessageSize(): number;
92
- validateJoiner(deltaNetV01Connection: DeltaNetV01Connection, token: string, components: Array<[number, bigint]>, states: Array<[number, Uint8Array]>): Promise<{
102
+ validateJoiner(connection: DeltaNetConnection, token: string, components: Array<[number, bigint]>, states: Array<[number, Uint8Array]>): Promise<{
93
103
  success: true;
104
+ stateOverrides?: Array<[number, Uint8Array]>;
94
105
  } | {
95
106
  success: false;
96
107
  error: string;
97
108
  }> | {
98
109
  success: true;
110
+ stateOverrides?: Array<[number, Uint8Array]>;
99
111
  } | {
100
112
  success: false;
101
113
  error: string;
102
114
  };
103
- addAuthenticatedConnection(deltaNetV01Connection: DeltaNetV01Connection): void;
104
- validateAndApplyStateUpdate(deltaNetV01Connection: DeltaNetV01Connection, internalConnectionId: number, stateId: number, stateValue: Uint8Array): Promise<true | void | Error | DeltaNetServerError> | true | void | Error | DeltaNetServerError;
115
+ addAuthenticatedConnection(connection: DeltaNetConnection): void;
116
+ validateAndApplyStateUpdate(connection: DeltaNetConnection, internalConnectionId: number, stateId: number, stateValue: Uint8Array, abortSignal: AbortSignal): Promise<true | void | Error | DeltaNetServerError> | true | void | Error | DeltaNetServerError;
105
117
  clearInternalConnectionId(internalConnectionId: number): void;
106
- private sendPings;
107
118
  tick(): {
108
119
  removedIds: Set<number>;
109
120
  addedIds: Set<number>;
121
+ addedObserverIds: Set<number>;
110
122
  };
111
123
  getServerTime(): number;
112
- setUserComponents(deltaNetV01Connection: DeltaNetV01Connection, internalConnectionId: number, components: Array<[number, bigint]>): {
124
+ setUserComponents(connection: DeltaNetConnection, internalConnectionId: number, components: Array<[number, bigint]>): {
113
125
  success: true;
114
126
  } | {
115
127
  success: false;
@@ -117,10 +129,11 @@ export declare class DeltaNetServer {
117
129
  };
118
130
  setComponentValue(componentId: number, index: number, value: bigint): void;
119
131
  private applyComponentUpdates;
120
- overrideUserStates(deltaNetV01Connection: DeltaNetV01Connection | null, internalConnectionId: number, states: Array<[number, Uint8Array]>): void;
132
+ overrideUserStates(connection: DeltaNetConnection | null, internalConnectionId: number, states: Array<[number, Uint8Array]>): void;
121
133
  setUserState(index: number, stateId: number, stateValue: Uint8Array): void;
122
134
  private applyStateUpdates;
123
- handleCustomMessage(deltaNetV01Connection: DeltaNetV01Connection, internalConnectionId: number, customType: number, contents: string): void;
135
+ handleCustomMessage(connection: DeltaNetConnection, internalConnectionId: number, customType: number, contents: string): void;
136
+ sendCustomMessageToConnection(connectionId: number, customType: number, contents: string): void;
124
137
  broadcastCustomMessage(customType: number, contents: string): void;
125
138
  dispose(): void;
126
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeltaNetServer.d.ts","sourceRoot":"","sources":["../src/DeltaNetServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DeltaNetServer.d.ts","sourceRoot":"","sources":["../src/DeltaNetServer.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,7 @@
1
- import { DeltaNetV01ServerMessage } from "@mml-io/delta-net-protocol";
2
- import { DeltaNetServer } from "./DeltaNetServer";
3
- export declare class DeltaNetV01Connection {
4
- readonly webSocket: WebSocket;
5
- readonly deltaNetServer: DeltaNetServer;
6
- private websocketListener;
7
- readonly internalConnectionId: number;
8
- isObserver: boolean;
9
- components: Map<number, bigint>;
10
- states: Map<number, Uint8Array<ArrayBufferLike>>;
11
- private pendingStateValidations;
12
- private nextValidationId;
13
- private isAuthenticated;
14
- private isAuthenticating;
15
- private authenticationAbortController;
16
- constructor(webSocket: WebSocket, deltaNetServer: DeltaNetServer);
17
- sendMessage(message: DeltaNetV01ServerMessage): void;
18
- sendEncodedBytes(bytes: Uint8Array): void;
19
- dispose(): void;
20
- setAuthenticated(): void;
21
- private disconnectWithError;
22
- private handleConnectUser;
23
- handleStateUpdate(stateId: number, stateValue: Uint8Array): Promise<void>;
24
- private handleClientMessage;
1
+ import { DeltaNetServerMessage } from "@mml-io/delta-net-protocol";
2
+ import { DeltaNetConnection } from "./DeltaNetConnection";
3
+ export declare class DeltaNetV01Connection extends DeltaNetConnection {
4
+ readonly protocolVersion = "delta-net-v0.1";
5
+ sendMessage(message: DeltaNetServerMessage): boolean;
25
6
  }
26
7
  //# sourceMappingURL=DeltaNetV01Connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeltaNetV01Connection.d.ts","sourceRoot":"","sources":["../src/DeltaNetV01Connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AAEvE,qBAAa,qBAAqB;aAuBd,SAAS,EAAE,SAAS;aACpB,cAAc,EAAE,cAAc;IAvBhD,OAAO,CAAC,iBAAiB,CAAuC;IAEhE,SAAgB,oBAAoB,EAAE,MAAM,CAAC;IACtC,UAAU,EAAE,OAAO,CAAS;IAG5B,UAAU,sBAA6B;IACvC,MAAM,2CAAiC;IAG9C,OAAO,CAAC,uBAAuB,CAG3B;IACJ,OAAO,CAAC,gBAAgB,CAAK;IAG7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,6BAA6B,CAAgC;gBAGnD,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc;IAyCzC,WAAW,CAAC,OAAO,EAAE,wBAAwB;IAI7C,gBAAgB,CAAC,KAAK,EAAE,UAAU;IAIlC,OAAO;IAeP,gBAAgB;IAIvB,OAAO,CAAC,mBAAmB;YAuBb,iBAAiB;IAwGlB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6FtF,OAAO,CAAC,mBAAmB;CAkF5B"}
1
+ {"version":3,"file":"DeltaNetV01Connection.d.ts","sourceRoot":"","sources":["../src/DeltaNetV01Connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D,SAAgB,eAAe,oBAAoC;IAEnD,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO;CAGrE"}
@@ -0,0 +1,7 @@
1
+ import { DeltaNetServerMessage } from "@mml-io/delta-net-protocol";
2
+ import { DeltaNetConnection } from "./DeltaNetConnection";
3
+ export declare class DeltaNetV02Connection extends DeltaNetConnection {
4
+ readonly protocolVersion = "delta-net-v0.2";
5
+ sendMessage(message: DeltaNetServerMessage): boolean;
6
+ }
7
+ //# sourceMappingURL=DeltaNetV02Connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeltaNetV02Connection.d.ts","sourceRoot":"","sources":["../src/DeltaNetV02Connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D,SAAgB,eAAe,oBAAoC;IAEnD,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO;CAGrE"}
@@ -1,5 +1,15 @@
1
+ import { DeltaNetConnection } from "./DeltaNetConnection";
1
2
  import { DeltaNetServer } from "./DeltaNetServer";
2
- import { DeltaNetV01Connection } from "./DeltaNetV01Connection";
3
- export declare const SupportedWebsocketSubProtocolsPreferenceOrder: readonly ["delta-net-v0.1"];
4
- export declare function createDeltaNetServerConnectionForWebsocket(webSocket: WebSocket, deltaNetServer: DeltaNetServer): DeltaNetV01Connection | null;
3
+ /**
4
+ * Create a DeltaNetConnection for an incoming WebSocket.
5
+ *
6
+ * @param webSocket The upgraded WebSocket.
7
+ * @param deltaNetServer The server instance that will own the connection.
8
+ * @param deltaNetSubProtocol Optional explicit delta-net sub-protocol version
9
+ * to use. When provided, the value of `webSocket.protocol` is ignored. This
10
+ * allows a higher-level protocol (e.g. `3d-web-experience-v0.1`) to be
11
+ * negotiated at the WebSocket level while the delta-net version is determined
12
+ * by the caller.
13
+ */
14
+ export declare function createDeltaNetServerConnectionForWebsocket(webSocket: WebSocket, deltaNetServer: DeltaNetServer, deltaNetSubProtocol?: string): DeltaNetConnection | null;
5
15
  //# sourceMappingURL=createDeltaNetServerConnectionForWebsocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createDeltaNetServerConnectionForWebsocket.d.ts","sourceRoot":"","sources":["../src/createDeltaNetServerConnectionForWebsocket.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,eAAO,MAAM,6CAA6C,6BAEhD,CAAC;AAQX,wBAAgB,0CAA0C,CACxD,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,GAC7B,qBAAqB,GAAG,IAAI,CAiB9B"}
1
+ {"version":3,"file":"createDeltaNetServerConnectionForWebsocket.d.ts","sourceRoot":"","sources":["../src/createDeltaNetServerConnectionForWebsocket.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAUlD;;;;;;;;;;GAUG;AACH,wBAAgB,0CAA0C,CACxD,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,mBAAmB,CAAC,EAAE,MAAM,GAC3B,kBAAkB,GAAG,IAAI,CA2B3B"}
package/build/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
1
  export * from "./DeltaNetServer";
2
+ export { DeltaNetConnection } from "./DeltaNetConnection";
2
3
  export { DeltaNetV01Connection } from "./DeltaNetV01Connection";
4
+ export { DeltaNetV02Connection } from "./DeltaNetV02Connection";
5
+ export { createDeltaNetServerConnectionForWebsocket } from "./createDeltaNetServerConnectionForWebsocket";
3
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,0CAA0C,EAAE,MAAM,8CAA8C,CAAC"}