@mml-io/3d-web-user-networking 0.26.1 → 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.
@@ -6,13 +6,13 @@ export declare const COMPONENT_POSITION_X = 1;
6
6
  export declare const COMPONENT_POSITION_Y = 2;
7
7
  export declare const COMPONENT_POSITION_Z = 3;
8
8
  export declare const COMPONENT_ROTATION_Y = 4;
9
- export declare const COMPONENT_ROTATION_W = 5;
10
- export declare const COMPONENT_STATE = 6;
9
+ export declare const COMPONENT_STATE = 5;
11
10
  export declare const STATE_INTERNAL_CONNECTION_ID = 0;
12
11
  export declare const STATE_CHARACTER_DESCRIPTION = 1;
13
12
  export declare const STATE_USERNAME = 2;
14
13
  export declare const STATE_COLORS = 3;
15
- export declare const rotationMultiplier = 360;
14
+ export declare const STATE_USER_ID = 4;
15
+ export declare const rotationMultiplier = 10000;
16
16
  export declare const positionMultiplier = 100;
17
17
  export declare class DeltaNetComponentMapping {
18
18
  /**
@@ -27,6 +27,10 @@ export declare class DeltaNetComponentMapping {
27
27
  * Encode character description and username to binary states
28
28
  */
29
29
  static toStates(userIdentity: UserData): Map<number, Uint8Array>;
30
+ /**
31
+ * Decode persistent userId from binary state
32
+ */
33
+ static persistentUserIdFromBytes(bytes: Uint8Array): string | null;
30
34
  /**
31
35
  * Encode username to binary state
32
36
  */
@@ -53,7 +57,7 @@ export declare class DeltaNetComponentMapping {
53
57
  * Decode binary states back to username and character description
54
58
  */
55
59
  static fromStates(states: Map<number, Uint8Array>, logger: UserNetworkingLogger): {
56
- userId: number | null;
60
+ connectionId: number | null;
57
61
  } & UserData;
58
62
  }
59
63
  //# sourceMappingURL=DeltaNetComponentMapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeltaNetComponentMapping.d.ts","sourceRoot":"","sources":["../src/DeltaNetComponentMapping.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,eAAe,IAAI,CAAC;AAGjC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,qBAAa,wBAAwB;IACnC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,0BAA0B,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAkC5E;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,0BAA0B;IAqBlF;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAwBhE;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAOjE;;OAEG;IACH,MAAM,CAAC,2BAA2B,CAChC,oBAAoB,EAAE,oBAAoB,GACzC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAU1B;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAMtF;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAyB1E,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,UAAU;IAWxE,MAAM,CAAC,YAAY,CACjB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,oBAAoB,GAC3B,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAsBlC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,oBAAoB,GAAG,QAAQ;IAmB9F,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAQxD,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAM1D,MAAM,CAAC,6BAA6B,CAAC,KAAK,EAAE,UAAU,GAAG,oBAAoB,GAAG,IAAI;IAOpF;;OAEG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC/B,MAAM,EAAE,oBAAoB,GAC3B;QACD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,GAAG,QAAQ;CAYb"}
1
+ {"version":3,"file":"DeltaNetComponentMapping.d.ts","sourceRoot":"","sources":["../src/DeltaNetComponentMapping.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,15 @@
1
1
  import { CharacterDescription } from "./UserNetworkingMessages";
2
2
  export type UserData = {
3
+ userId: string;
4
+ username: string | null;
5
+ characterDescription: CharacterDescription | null;
6
+ colors: Array<[number, number, number]> | null;
7
+ };
8
+ /**
9
+ * The subset of user identity fields that can be updated after the initial
10
+ * connection. `userId` is assigned once during authentication and is immutable.
11
+ */
12
+ export type UserIdentityUpdate = {
3
13
  username: string | null;
4
14
  characterDescription: CharacterDescription | null;
5
15
  colors: Array<[number, number, number]> | null;
@@ -1 +1 @@
1
- {"version":3,"file":"UserData.d.ts","sourceRoot":"","sources":["../src/UserData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;CAChD,CAAC"}
1
+ {"version":3,"file":"UserData.d.ts","sourceRoot":"","sources":["../src/UserData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;CAChD,CAAC"}
@@ -7,13 +7,21 @@ export type UserNetworkingClientConfig = {
7
7
  sessionToken: string;
8
8
  websocketFactory: WebsocketFactory;
9
9
  statusUpdateCallback: (status: WebsocketStatus) => void;
10
- assignedIdentity: (clientId: number) => void;
10
+ assignedIdentity: (connectionId: number) => void;
11
11
  onServerError: (error: {
12
12
  message: string;
13
13
  errorType: string;
14
14
  }) => void;
15
15
  onCustomMessage?: (customType: number, contents: string) => void;
16
16
  onUpdate(update: NetworkUpdate): void;
17
+ /**
18
+ * Maps a WebSocket sub-protocol (negotiated at the HTTP upgrade) to the
19
+ * corresponding delta-net sub-protocol string used on the wire.
20
+ *
21
+ * If not provided the WebSocket protocol string is passed through to
22
+ * delta-net as-is.
23
+ */
24
+ resolveProtocol?: (websocketProtocol: string) => string | null;
17
25
  };
18
26
  export type AddedUser = {
19
27
  userState: UserData;
@@ -24,8 +32,8 @@ export type UpdatedUser = {
24
32
  components: UserNetworkingClientUpdate;
25
33
  };
26
34
  export type NetworkUpdate = {
27
- removedUserIds: Set<number>;
28
- addedUserIds: Map<number, AddedUser>;
35
+ removedConnectionIds: Set<number>;
36
+ addedConnectionIds: Map<number, AddedUser>;
29
37
  updatedUsers: Map<number, UpdatedUser>;
30
38
  };
31
39
  export declare class UserNetworkingClient {
@@ -33,10 +41,10 @@ export declare class UserNetworkingClient {
33
41
  private logger;
34
42
  private deltaNetClient;
35
43
  private deltaNetState;
36
- private userId;
44
+ private connectionId;
37
45
  private userIndex;
38
46
  private userState;
39
- private stableIdToUserId;
47
+ private stableIdToConnectionId;
40
48
  private userProfiles;
41
49
  private isAuthenticated;
42
50
  private pendingUpdate;
@@ -1 +1 @@
1
- {"version":3,"file":"UserNetworkingClient.d.ts","sourceRoot":"","sources":["../src/UserNetworkingClient.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAA+B,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACxD,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,aAAa,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvE,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,0BAA0B,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,UAAU,EAAE,0BAA0B,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACxC,CAAC;AAEF,qBAAa,oBAAoB;IAkB7B,OAAO,CAAC,MAAM;IAGd,OAAO,CAAC,MAAM;IApBhB,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAIf;IAEF,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAA6B;gBAGxC,MAAM,EAAE,0BAA0B,EAC1C,gBAAgB,CAAC,EAAE,QAAQ,EAC3B,aAAa,CAAC,EAAE,0BAA0B,EAClC,MAAM,GAAE,oBAAwD;IAqH1E,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,oBAAoB;IA6HrB,UAAU,CAAC,MAAM,EAAE,0BAA0B,GAAG,IAAI;IAYpD,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS7D,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAatC,0BAA0B,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI;IAa5E,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAa3D,IAAI,IAAI,IAAI;CAIpB"}
1
+ {"version":3,"file":"UserNetworkingClient.d.ts","sourceRoot":"","sources":["../src/UserNetworkingClient.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAA+B,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACxD,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,aAAa,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvE,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IACtC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,0BAA0B,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,UAAU,EAAE,0BAA0B,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACxC,CAAC;AAEF,qBAAa,oBAAoB;IAmB7B,OAAO,CAAC,MAAM;IAGd,OAAO,CAAC,MAAM;IArBhB,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAKf;IAEF,OAAO,CAAC,sBAAsB,CAAkC;IAChE,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAA6B;gBAGxC,MAAM,EAAE,0BAA0B,EAC1C,gBAAgB,CAAC,EAAE,QAAQ,EAC3B,aAAa,CAAC,EAAE,0BAA0B,EAClC,MAAM,GAAE,oBAAwD;IAuH1E,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,oBAAoB;IAgJrB,UAAU,CAAC,MAAM,EAAE,0BAA0B,GAAG,IAAI;IAYpD,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS7D,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAatC,0BAA0B,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI;IAa5E,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAa3D,IAAI,IAAI,IAAI;CAIpB"}
@@ -14,21 +14,4 @@ export type CharacterDescription = {
14
14
  };
15
15
  export declare class UserNetworkingServerError extends DeltaNetServerError {
16
16
  }
17
- export type ClientChatMessage = {
18
- message: string;
19
- };
20
- export type ServerChatMessage = {
21
- fromUserId: number;
22
- message: string;
23
- };
24
- export type ServerBroadcastMessage = {
25
- broadcastType: string;
26
- payload: any;
27
- };
28
- export declare const SERVER_BROADCAST_MESSAGE_TYPE = 1;
29
- export declare const FROM_CLIENT_CHAT_MESSAGE_TYPE = 2;
30
- export declare const FROM_SERVER_CHAT_MESSAGE_TYPE = 3;
31
- export declare function parseClientChatMessage(contents: string): ClientChatMessage | Error;
32
- export declare function parseServerChatMessage(contents: string): ServerChatMessage | Error;
33
- export declare function parseServerBroadcastMessage(contents: string): ServerBroadcastMessage | Error;
34
17
  //# sourceMappingURL=UserNetworkingMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserNetworkingMessages.d.ts","sourceRoot":"","sources":["../src/UserNetworkingMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,MAAM,oBAAoB,GAC5B;IACE,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,IAAI,CAAC;CACxB,GACD;IACE,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,IAAI,CAAC;CACxB,GACD;IACE,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,qBAAa,yBAA0B,SAAQ,mBAAmB;CAAG;AAErE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAGF,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,KAAK,CAkBlF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,KAAK,CAqBlF;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,KAAK,CAqB5F"}
1
+ {"version":3,"file":"UserNetworkingMessages.d.ts","sourceRoot":"","sources":["../src/UserNetworkingMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,MAAM,oBAAoB,GAC5B;IACE,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,IAAI,CAAC;CACxB,GACD;IACE,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,IAAI,CAAC;CACxB,GACD;IACE,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,qBAAa,yBAA0B,SAAQ,mBAAmB;CAAG"}
@@ -1,49 +1,62 @@
1
- import { DeltaNetV01Connection } from "@mml-io/delta-net-server";
2
- import { LegacyUserIdentity, LegacyCharacterDescription } from "./legacy/LegacyUserNetworkingMessages";
3
- import { UserData } from "./UserData";
1
+ import { DeltaNetConnection } from "@mml-io/delta-net-server";
2
+ import { UserData, UserIdentityUpdate } from "./UserData";
4
3
  import { UserNetworkingLogger } from "./UserNetworkingLogger";
5
4
  import { UserNetworkingServerError, CharacterDescription } from "./UserNetworkingMessages";
6
5
  export type UserNetworkingServerClient = {
7
6
  socket: WebSocket;
8
- id: number;
7
+ connectionId: number;
9
8
  lastPong: number;
10
9
  authenticatedUser: UserData | null;
11
- deltaNetConnection: DeltaNetV01Connection | null;
10
+ deltaNetConnection: DeltaNetConnection;
12
11
  };
13
12
  export type UserNetworkingServerOptions = {
14
- legacyAdapterEnabled?: boolean;
15
- onClientConnect: (clientId: number, sessionToken: string, userIdentity?: UserData) => Promise<UserData | true | Error> | UserData | true | Error;
16
- onClientUserIdentityUpdate: (clientId: number, userIdentity: UserData) => Promise<UserData | null | false | true | Error> | UserData | null | false | true | Error;
17
- onClientDisconnect: (clientId: number) => void;
13
+ onClientConnect: (connectionId: number, sessionToken: string, userIdentity?: UserData) => Promise<UserData | true | Error> | UserData | true | Error;
14
+ onClientUserIdentityUpdate: (connectionId: number, userIdentity: UserIdentityUpdate) => Promise<UserIdentityUpdate | null | false | true | Error> | UserIdentityUpdate | null | false | true | Error;
15
+ onClientDisconnect: (connectionId: number) => void;
16
+ onClientAuthenticated?: (connectionId: number) => void;
17
+ /**
18
+ * Callback invoked when a client sends a custom (non-deltanet) message.
19
+ * The higher-level server (e.g. Networked3dWebExperienceServer) should use
20
+ * this to handle application-specific message types such as chat.
21
+ */
22
+ onCustomMessage?: (connectionId: number, customType: number, contents: string) => void;
23
+ /**
24
+ * Maps a WebSocket sub-protocol (negotiated at the HTTP upgrade) to the
25
+ * corresponding delta-net sub-protocol string used on the wire.
26
+ *
27
+ * Return values:
28
+ * - `string` — accept the connection using the returned delta-net sub-protocol.
29
+ * - `null` — reject the connection (unsupported protocol).
30
+ * - `undefined` — accept the connection without specifying a delta-net sub-protocol.
31
+ *
32
+ * If this callback is not provided the WebSocket protocol string is passed
33
+ * through to delta-net as-is.
34
+ */
35
+ resolveProtocol?: (websocketProtocol: string) => string | null | undefined;
18
36
  };
19
37
  export declare class UserNetworkingServer {
20
38
  private options;
21
39
  private logger;
22
40
  private deltaNetServer;
23
41
  private authenticatedClientsById;
42
+ private connectionIdByUserId;
24
43
  private tickInterval;
25
- private legacyAdapter;
26
- private updatedUserProfilesInTick;
27
44
  constructor(options: UserNetworkingServerOptions, logger?: UserNetworkingLogger);
28
- getCharacterDescription(connectionId: number): LegacyCharacterDescription;
29
- getUsername(connectionId: number): string;
30
- getLegacyClientId(): number;
31
- hasCapacityForLegacyClient(): boolean;
32
- onLegacyClientConnect(id: number, sessionToken: string, userIdentity: LegacyUserIdentity | undefined): Promise<UserData | true | Error> | UserData | true | Error;
33
- setAuthenticatedLegacyClientConnection(clientId: number, webSocket: WebSocket, userData: UserData): void;
34
- onLegacyClientDisconnect(id: number): void;
35
45
  private handleStatesUpdate;
46
+ private applyIdentityUpdateResult;
36
47
  private handleJoiner;
37
48
  private handleLeave;
38
49
  private handleCustomMessage;
39
50
  private handleDeltaNetAuthentication;
40
51
  connectClient(socket: WebSocket): void;
41
52
  broadcastMessage(broadcastType: number, broadcastPayload: string): void;
42
- updateUserCharacter(clientId: number, userData: UserData): void;
43
- updateUserUsername(clientId: number, username: string): void;
44
- updateUserCharacterDescription(clientId: number, characterDescription: CharacterDescription): void;
45
- updateUserColors(clientId: number, colors: Array<[number, number, number]>): void;
46
- updateUserStates(clientId: number, updates: UserData): void;
53
+ sendCustomMessageToClient(connectionId: number, customType: number, payload: string): void;
54
+ getAuthenticatedUser(connectionId: number): UserData | null;
55
+ updateUserCharacter(connectionId: number, userData: UserData): void;
56
+ updateUserUsername(connectionId: number, username: string): void;
57
+ updateUserCharacterDescription(connectionId: number, characterDescription: CharacterDescription): void;
58
+ updateUserColors(connectionId: number, colors: Array<[number, number, number]>): void;
59
+ updateUserStates(connectionId: number, updates: UserIdentityUpdate): void;
47
60
  private internalUpdateUser;
48
61
  dispose(clientCloseError?: UserNetworkingServerError): void;
49
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserNetworkingServer.d.ts","sourceRoot":"","sources":["../src/UserNetworkingServer.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,qBAAqB,EAMtB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAA+B,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAKL,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,SAAS,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEnC,kBAAkB,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,QAAQ,KACpB,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC;IAChE,0BAA0B,EAAE,CAC1B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,QAAQ,KACnB,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAC9F,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IARhB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,wBAAwB,CAAsD;IACtF,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,yBAAyB,CAA0B;gBAGjD,OAAO,EAAE,2BAA2B,EACpC,MAAM,GAAE,oBAAwD;IAmC1E,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,0BAA0B;IAIzE,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAMlC,iBAAiB;IAIjB,0BAA0B;IAI1B,qBAAqB,CAC1B,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,kBAAkB,GAAG,SAAS,GAC3C,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK;IAQtD,sCAAsC,CAC3C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ;IAab,wBAAwB,CAAC,EAAE,EAAE,MAAM;IAI1C,OAAO,CAAC,kBAAkB;IAqI1B,OAAO,CAAC,YAAY;IAoDpB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,mBAAmB;YA4Bb,4BAA4B;IA2DnC,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAoBtC,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAOvE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAK/D,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkB5D,8BAA8B,CACnC,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,oBAAoB,GACzC,IAAI;IAkBA,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAkBjF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IA2DlE,OAAO,CAAC,kBAAkB;IAqBnB,OAAO,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,GAAG,IAAI;CAyBnE"}
1
+ {"version":3,"file":"UserNetworkingServer.d.ts","sourceRoot":"","sources":["../src/UserNetworkingServer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAQnB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAA+B,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAE3F,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnC,kBAAkB,EAAE,kBAAkB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,eAAe,EAAE,CACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,QAAQ,KACpB,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC;IAChE,0BAA0B,EAAE,CAC1B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,kBAAkB,KAE9B,OAAO,CAAC,kBAAkB,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,GACzD,kBAAkB,GAClB,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,CAAC;IACV,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvF;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAC5E,CAAC;AAEF,qBAAa,oBAAoB;IAO7B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,wBAAwB,CAAsD;IACtF,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,YAAY,CAAiB;gBAG3B,OAAO,EAAE,2BAA2B,EACpC,MAAM,GAAE,oBAAwD;IAoC1E,OAAO,CAAC,kBAAkB;IA4C1B,OAAO,CAAC,yBAAyB;IAiEjC,OAAO,CAAC,YAAY;IAuDpB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,mBAAmB;YAgBb,4BAA4B;IAmFnC,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IA0BtC,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAIvE,yBAAyB,CAC9B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,IAAI;IAQA,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAK3D,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAKnE,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAgBhE,8BAA8B,CACnC,YAAY,EAAE,MAAM,EACpB,oBAAoB,EAAE,oBAAoB,GACzC,IAAI;IAgBA,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAgBrF,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAqEhF,OAAO,CAAC,kBAAkB;IAmBnB,OAAO,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,GAAG,IAAI;CA2BnE"}
package/build/index.d.ts CHANGED
@@ -3,8 +3,7 @@ export * from "./UserNetworkingClient";
3
3
  export * from "./UserData";
4
4
  export * from "./types";
5
5
  export * from "./UserNetworkingMessages";
6
- export * from "./legacy/LegacyUserNetworkingMessages";
7
6
  export * from "./DeltaNetComponentMapping";
8
7
  export * from "./UserNetworkingLogger";
9
- export { DeltaNetV01ServerErrors, deltaNetProtocolSubProtocol_v0_1, } from "@mml-io/delta-net-protocol";
8
+ export { DeltaNetServerErrors } from "@mml-io/delta-net-protocol";
10
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,0BAA0B,CAAC;AACzC,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}