@magicworks/client-party-game 0.1.0-rc.4 → 0.1.0-rc.6

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 (52) hide show
  1. package/README.md +18 -3
  2. package/dist/client.d.ts +37 -39
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +160 -183
  5. package/dist/client.js.map +1 -1
  6. package/dist/connection.d.ts +158 -0
  7. package/dist/connection.d.ts.map +1 -0
  8. package/dist/connection.js +375 -0
  9. package/dist/connection.js.map +1 -0
  10. package/dist/protocol/codes.d.ts +29 -0
  11. package/dist/protocol/codes.d.ts.map +1 -0
  12. package/dist/protocol/codes.js +56 -0
  13. package/dist/protocol/codes.js.map +1 -0
  14. package/dist/protocol/events.d.ts +129 -0
  15. package/dist/protocol/events.d.ts.map +1 -0
  16. package/dist/protocol/events.js +131 -0
  17. package/dist/protocol/events.js.map +1 -0
  18. package/dist/protocol/index.d.ts +25 -0
  19. package/dist/protocol/index.d.ts.map +1 -0
  20. package/dist/protocol/index.js +41 -0
  21. package/dist/protocol/index.js.map +1 -0
  22. package/dist/protocol/limits.d.ts +40 -0
  23. package/dist/protocol/limits.d.ts.map +1 -0
  24. package/dist/protocol/limits.js +43 -0
  25. package/dist/protocol/limits.js.map +1 -0
  26. package/dist/protocol/messages.d.ts +294 -0
  27. package/dist/protocol/messages.d.ts.map +1 -0
  28. package/dist/protocol/messages.js +3 -0
  29. package/dist/protocol/messages.js.map +1 -0
  30. package/dist/protocol/placement.d.ts +63 -0
  31. package/dist/protocol/placement.d.ts.map +1 -0
  32. package/dist/protocol/placement.js +82 -0
  33. package/dist/protocol/placement.js.map +1 -0
  34. package/dist/protocol/routing.d.ts +26 -0
  35. package/dist/protocol/routing.d.ts.map +1 -0
  36. package/dist/protocol/routing.js +19 -0
  37. package/dist/protocol/routing.js.map +1 -0
  38. package/dist/protocol/scoring.d.ts +7 -0
  39. package/dist/protocol/scoring.d.ts.map +1 -0
  40. package/dist/protocol/scoring.js +13 -0
  41. package/dist/protocol/scoring.js.map +1 -0
  42. package/dist/protocol/speedtest.d.ts +9 -0
  43. package/dist/protocol/speedtest.d.ts.map +1 -0
  44. package/dist/protocol/speedtest.js +22 -0
  45. package/dist/protocol/speedtest.js.map +1 -0
  46. package/dist/socket.d.ts +4 -2
  47. package/dist/socket.d.ts.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/protocol.d.ts +0 -509
  50. package/dist/protocol.d.ts.map +0 -1
  51. package/dist/protocol.js +0 -262
  52. package/dist/protocol.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import { type PartyFetch } from './protocol';
2
+ import type { PartySocket, PartySocketFactory } from './socket';
3
+ export interface PartyLogger {
4
+ debug(...args: unknown[]): void;
5
+ warn(...args: unknown[]): void;
6
+ }
7
+ /** A placement a server answered, but refused: see PartyConnection.place. */
8
+ export declare const refused: unique symbol;
9
+ /** Servers a client tries before giving up: on their way out, or not answering. */
10
+ export declare const maxDrainingRetries = 3;
11
+ export declare function withTimeout<T>(promise: Promise<T>, ms: number, what: string): Promise<T>;
12
+ /** URLs without trailing slashes. No Object.fromEntries: the app supports Chrome 56, which lacks it, and has no polyfill. */
13
+ export declare function tidyUrls(urls: Record<string, string>): Record<string, string>;
14
+ export interface PartyConnectionOptions {
15
+ /** The party servers' global name: see PartyGameClientOptions. */
16
+ url: string;
17
+ regionUrls: Record<string, string>;
18
+ io: PartySocketFactory;
19
+ fetch: PartyFetch;
20
+ logger: PartyLogger;
21
+ ackTimeoutMs: number;
22
+ /** How long a placement request has: see PartyGameClientOptions. */
23
+ placementTimeoutMs: number;
24
+ /** When a room's server is tried again after it is lost: see PartyGameClientOptions. */
25
+ roomRetryMs: readonly number[];
26
+ }
27
+ /** What the connection asks of the client it connects for. */
28
+ export interface PartyConnectionHooks {
29
+ /** The code of the room to connect for again after a connection is lost, if any. */
30
+ roomCode(): string | null;
31
+ /** A socket has been opened: listen for the room's messages on it. */
32
+ opened(socket: PartySocket): void;
33
+ /**
34
+ * The socket has connected, to the server `prefix` is: re-attach it to the
35
+ * room, then say so with `attachedTo`, or connect elsewhere.
36
+ */
37
+ connected(socket: PartySocket, prefix: string): void;
38
+ }
39
+ /**
40
+ * The TV's connection to the party servers. Rooms live in the memory of one
41
+ * server of several, and the load balancer routes by server prefix
42
+ * (ROUTING_QUERY_KEY). Before every socket the connection asks over HTTP
43
+ * where to connect (PLACEMENT_PATH) - for the room's code, or for a new room
44
+ * - and routes the socket by the prefix of the server that answered, so long
45
+ * polling's many requests all reach it. A connection lost is placed again
46
+ * the same way, with backoff, rather than left to socket.io to reconnect to
47
+ * a server that may be gone.
48
+ *
49
+ * Host calls wait until the connection is attached to the room (see
50
+ * whenAttached): sent while a reconnect is still re-attaching, they would
51
+ * reach the server from a socket it does not know the room of.
52
+ */
53
+ export declare class PartyConnection {
54
+ private readonly hooks;
55
+ private readonly url;
56
+ /** Built in at first, then as the servers say: see PartyRouting. */
57
+ private regionUrls;
58
+ private readonly io;
59
+ private readonly fetch;
60
+ private readonly logger;
61
+ private readonly ackTimeoutMs;
62
+ private readonly placementTimeoutMs;
63
+ private readonly roomRetryMs;
64
+ private socket;
65
+ /**
66
+ * The server prefix the current connection is routed by, or is being
67
+ * connected for: null for any server.
68
+ */
69
+ private routedPrefix;
70
+ /** Whether a connection is being placed, with no socket yet. */
71
+ private connecting;
72
+ /** Bumped by every new connection, and by close: older ones stop. */
73
+ private generation;
74
+ /** Since when the room's server has been out of reach, if it is. */
75
+ private lostSince;
76
+ /** Tries of the room's server since it was lost: slots of roomRetryMs taken. */
77
+ private roomTries;
78
+ /** Whether the room's server, since it was lost, answered placement but its socket failed. */
79
+ private roomSocketFailed;
80
+ /** Tries since the connection was last attached, for the backoff. */
81
+ private retries;
82
+ /** Whether the current connection is attached to the room. */
83
+ private attached;
84
+ private attachedWaiters;
85
+ constructor(options: PartyConnectionOptions, hooks: PartyConnectionHooks);
86
+ /** The current socket, if there is one. */
87
+ current(): PartySocket | null;
88
+ isConnected(): boolean;
89
+ /** Each region's own URL, as a server has said: see PartyRouting. */
90
+ setRegionUrls(urls: Record<string, string>): void;
91
+ /**
92
+ * Connects for `code`'s room, or for a new room with null, in place of
93
+ * whatever connection there is: asks where (see place) and opens a socket
94
+ * there. Host calls wait until it is attached. `avoid` are servers this
95
+ * connection must not go to, having just failed; `delay` holds the first
96
+ * try back, for a connection that has only just dropped.
97
+ */
98
+ connectFor(code: string | null, { avoid, delay }?: {
99
+ avoid?: string[] | undefined;
100
+ delay?: boolean | undefined;
101
+ }): void;
102
+ /** Whether the connection there is, or is being made, will do for `code`'s room. */
103
+ connectedFor(code: string | null): boolean;
104
+ /** Whether the connection is routed to the server `code`'s room is on. */
105
+ routesTo(code: string): boolean;
106
+ /** A connection for the room the client is in, if there is none. */
107
+ ensure(): void;
108
+ /** The server the current connection is routed to, as a list to avoid. */
109
+ avoidingRouted(): string[];
110
+ setAttached(attached: boolean): void;
111
+ isAttached(): boolean;
112
+ /** Attached: the connection is the room's, and stays so until it drops. */
113
+ attachedTo(socket: PartySocket): void;
114
+ whenAttached(what: string): Promise<void>;
115
+ /** Resolves once `socket` connects, in the time an answer is waited for. */
116
+ whenConnected(socket: PartySocket, what: string): Promise<void>;
117
+ send<T>(socket: PartySocket, event: string, payload?: unknown): Promise<T>;
118
+ /** Where `code`'s room is: its region's servers, or for no room the nearest. */
119
+ urlFor(code: string | null): string;
120
+ /**
121
+ * Asks the servers at `serverUrl` where to connect (see PLACEMENT_PATH):
122
+ * the prefix to route the socket by and the URL to open it at, `refused`
123
+ * when a server answered but will not take it, or null when none answered.
124
+ */
125
+ place(serverUrl: string, code: string | null, avoid: string[]): Promise<{
126
+ prefix: string;
127
+ url: string;
128
+ } | typeof refused | null>;
129
+ /** A socket routed by `prefix`, the server placement handed out, at `url`. */
130
+ connectTo(prefix: string, url: string): PartySocket;
131
+ /** Lets go of the connection for good: whatever it was doing stops. */
132
+ close(): void;
133
+ /** A server was reached: the room's server is not out of reach, or no longer. */
134
+ private found;
135
+ private dropSocket;
136
+ private placeAndOpen;
137
+ /**
138
+ * How long to wait before the next try. A room's server is tried at the
139
+ * times `roomRetryMs` gives, counted from when it was lost, give or take a
140
+ * tenth so that a server's TVs do not all ask at the same moment - each try
141
+ * taking the next of them, whether its placement or its socket fails. A try
142
+ * due already, the last having taken that long, goes straight away.
143
+ * Anything else - no room, or a room's server tried that many times - backs
144
+ * off as socket.io would.
145
+ */
146
+ private nextDelay;
147
+ private placeFor;
148
+ /** The servers of `code`'s region, if the connection knows where they are. */
149
+ private regionUrlFor;
150
+ /**
151
+ * After a connection is lost, or never made: the room's own server is
152
+ * asked for again, until it is given up on (see placeFor). With no room,
153
+ * any server but the one that failed.
154
+ */
155
+ private reconnect;
156
+ private openSocket;
157
+ }
158
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAChC;AAED,6EAA6E;AAC7E,eAAO,MAAM,OAAO,eAAoB,CAAC;AAEzC,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAiB3E;AAED,6HAA6H;AAC7H,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,0BAMpD;AAED,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,EAAE,EAAE,kBAAkB,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wFAAwF;IACxF,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACnC,oFAAoF;IACpF,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;IAC1B,sEAAsE;IACtE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACtD;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;IAmCxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAlCxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,oEAAoE;IACpE,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEhD,OAAO,CAAC,MAAM,CAA4B;IAC1C;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAuB;IAC3C,gEAAgE;IAChE,OAAO,CAAC,UAAU,CAAS;IAC3B,qEAAqE;IACrE,OAAO,CAAC,UAAU,CAAK;IACvB,oEAAoE;IACpE,OAAO,CAAC,SAAS,CAAuB;IACxC,gFAAgF;IAChF,OAAO,CAAC,SAAS,CAAK;IACtB,8FAA8F;IAC9F,OAAO,CAAC,gBAAgB,CAAS;IACjC,qEAAqE;IACrE,OAAO,CAAC,OAAO,CAAK;IACpB,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,eAAe,CAAyB;IAEhD,YACE,OAAO,EAAE,sBAAsB,EACd,KAAK,EAAE,oBAAoB,EAU7C;IAED,2CAA2C;IAC3C,OAAO,uBAEN;IAED,WAAW,YAEV;IAED,qEAAqE;IACrE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAEzC;IAED;;;;;;OAMG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,EAAE,KAAsB,EAAE,KAAa,EAAE;;;KAAK,QAQ/C;IAED,oFAAoF;IACpF,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,WAK/B;IAED,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,WAEpB;IAED,oEAAoE;IACpE,MAAM,SAIL;IAED,0EAA0E;IAC1E,cAAc,IAAI,MAAM,EAAE,CAEzB;IAED,WAAW,CAAC,QAAQ,EAAE,OAAO,QAS5B;IAED,UAAU,YAET;IAED,2EAA2E;IAC3E,UAAU,CAAC,MAAM,EAAE,WAAW,QAM7B;IAED,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASxC;IAED,4EAA4E;IAC5E,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,iBAM9C;IAED,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,cAMhE;IAED,gFAAgF;IAChF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,UAEzB;IAED;;;;OAIG;IACG,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,OAAO,GAAG,IAAI,CAAC,CAyBlE;IAED,8EAA8E;IAC9E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAcpC;IAED,uEAAuE;IACvE,KAAK,SAQJ;IAED,iFAAiF;IACjF,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,UAAU;YAaJ,YAAY;IA8B1B;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;YA6BH,QAAQ;IAoCtB,8EAA8E;IAC9E,OAAO,CAAC,YAAY;IAKpB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;CAmCnB"}
@@ -0,0 +1,375 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PartyConnection = exports.maxDrainingRetries = exports.refused = void 0;
4
+ exports.withTimeout = withTimeout;
5
+ exports.tidyUrls = tidyUrls;
6
+ const protocol_1 = require("./protocol");
7
+ /** A placement a server answered, but refused: see PartyConnection.place. */
8
+ exports.refused = Symbol('refused');
9
+ /** Servers a client tries before giving up: on their way out, or not answering. */
10
+ exports.maxDrainingRetries = 3;
11
+ function withTimeout(promise, ms, what) {
12
+ return new Promise((resolve, reject) => {
13
+ const timer = setTimeout(() => reject(new Error(`party server did not answer ${what} in ${ms}ms`)), ms);
14
+ promise.then(value => {
15
+ clearTimeout(timer);
16
+ resolve(value);
17
+ }, error => {
18
+ clearTimeout(timer);
19
+ reject(error);
20
+ });
21
+ });
22
+ }
23
+ /** URLs without trailing slashes. No Object.fromEntries: the app supports Chrome 56, which lacks it, and has no polyfill. */
24
+ function tidyUrls(urls) {
25
+ const tidy = {};
26
+ for (const key of Object.keys(urls)) {
27
+ tidy[key] = urls[key].replace(/\/+$/, '');
28
+ }
29
+ return tidy;
30
+ }
31
+ /**
32
+ * The TV's connection to the party servers. Rooms live in the memory of one
33
+ * server of several, and the load balancer routes by server prefix
34
+ * (ROUTING_QUERY_KEY). Before every socket the connection asks over HTTP
35
+ * where to connect (PLACEMENT_PATH) - for the room's code, or for a new room
36
+ * - and routes the socket by the prefix of the server that answered, so long
37
+ * polling's many requests all reach it. A connection lost is placed again
38
+ * the same way, with backoff, rather than left to socket.io to reconnect to
39
+ * a server that may be gone.
40
+ *
41
+ * Host calls wait until the connection is attached to the room (see
42
+ * whenAttached): sent while a reconnect is still re-attaching, they would
43
+ * reach the server from a socket it does not know the room of.
44
+ */
45
+ class PartyConnection {
46
+ hooks;
47
+ url;
48
+ /** Built in at first, then as the servers say: see PartyRouting. */
49
+ regionUrls;
50
+ io;
51
+ fetch;
52
+ logger;
53
+ ackTimeoutMs;
54
+ placementTimeoutMs;
55
+ roomRetryMs;
56
+ socket = null;
57
+ /**
58
+ * The server prefix the current connection is routed by, or is being
59
+ * connected for: null for any server.
60
+ */
61
+ routedPrefix = null;
62
+ /** Whether a connection is being placed, with no socket yet. */
63
+ connecting = false;
64
+ /** Bumped by every new connection, and by close: older ones stop. */
65
+ generation = 0;
66
+ /** Since when the room's server has been out of reach, if it is. */
67
+ lostSince = null;
68
+ /** Tries of the room's server since it was lost: slots of roomRetryMs taken. */
69
+ roomTries = 0;
70
+ /** Whether the room's server, since it was lost, answered placement but its socket failed. */
71
+ roomSocketFailed = false;
72
+ /** Tries since the connection was last attached, for the backoff. */
73
+ retries = 0;
74
+ /** Whether the current connection is attached to the room. */
75
+ attached = true;
76
+ attachedWaiters = [];
77
+ constructor(options, hooks) {
78
+ this.hooks = hooks;
79
+ this.url = options.url;
80
+ this.regionUrls = tidyUrls(options.regionUrls);
81
+ this.io = options.io;
82
+ this.fetch = options.fetch;
83
+ this.logger = options.logger;
84
+ this.ackTimeoutMs = options.ackTimeoutMs;
85
+ this.placementTimeoutMs = options.placementTimeoutMs;
86
+ this.roomRetryMs = options.roomRetryMs;
87
+ }
88
+ /** The current socket, if there is one. */
89
+ current() {
90
+ return this.socket;
91
+ }
92
+ isConnected() {
93
+ return this.socket ? this.socket.connected : false;
94
+ }
95
+ /** Each region's own URL, as a server has said: see PartyRouting. */
96
+ setRegionUrls(urls) {
97
+ this.regionUrls = tidyUrls(urls);
98
+ }
99
+ /**
100
+ * Connects for `code`'s room, or for a new room with null, in place of
101
+ * whatever connection there is: asks where (see place) and opens a socket
102
+ * there. Host calls wait until it is attached. `avoid` are servers this
103
+ * connection must not go to, having just failed; `delay` holds the first
104
+ * try back, for a connection that has only just dropped.
105
+ */
106
+ connectFor(code, { avoid = [], delay = false } = {}) {
107
+ const generation = ++this.generation;
108
+ this.setAttached(false);
109
+ this.dropSocket();
110
+ this.connecting = true;
111
+ this.routedPrefix = code ? (0, protocol_1.codePrefixOf)(code) : null;
112
+ void this.placeAndOpen(generation, code, avoid, delay);
113
+ }
114
+ /** Whether the connection there is, or is being made, will do for `code`'s room. */
115
+ connectedFor(code) {
116
+ if (!this.socket && !this.connecting) {
117
+ return false;
118
+ }
119
+ return code === null || this.routesTo(code);
120
+ }
121
+ /** Whether the connection is routed to the server `code`'s room is on. */
122
+ routesTo(code) {
123
+ return this.routedPrefix === (0, protocol_1.codePrefixOf)(code);
124
+ }
125
+ /** A connection for the room the client is in, if there is none. */
126
+ ensure() {
127
+ if (!this.socket && !this.connecting) {
128
+ this.connectFor(this.hooks.roomCode());
129
+ }
130
+ }
131
+ /** The server the current connection is routed to, as a list to avoid. */
132
+ avoidingRouted() {
133
+ return this.routedPrefix ? [this.routedPrefix] : [];
134
+ }
135
+ setAttached(attached) {
136
+ this.attached = attached;
137
+ if (attached) {
138
+ const waiters = this.attachedWaiters;
139
+ this.attachedWaiters = [];
140
+ for (const waiter of waiters) {
141
+ waiter();
142
+ }
143
+ }
144
+ }
145
+ isAttached() {
146
+ return this.attached;
147
+ }
148
+ /** Attached: the connection is the room's, and stays so until it drops. */
149
+ attachedTo(socket) {
150
+ if (socket === this.socket) {
151
+ this.found();
152
+ this.retries = 0;
153
+ this.setAttached(true);
154
+ }
155
+ }
156
+ whenAttached(what) {
157
+ if (this.attached) {
158
+ return Promise.resolve();
159
+ }
160
+ return withTimeout(new Promise(resolve => this.attachedWaiters.push(resolve)), this.ackTimeoutMs, `${what} (reconnecting)`);
161
+ }
162
+ /** Resolves once `socket` connects, in the time an answer is waited for. */
163
+ whenConnected(socket, what) {
164
+ return withTimeout(new Promise(resolve => socket.on('connect', () => resolve())), this.ackTimeoutMs, what);
165
+ }
166
+ send(socket, event, payload = {}) {
167
+ return withTimeout(new Promise(resolve => socket.emit(event, payload, resolve)), this.ackTimeoutMs, event);
168
+ }
169
+ /** Where `code`'s room is: its region's servers, or for no room the nearest. */
170
+ urlFor(code) {
171
+ return (code && this.regionUrlFor(code)) || this.url;
172
+ }
173
+ /**
174
+ * Asks the servers at `serverUrl` where to connect (see PLACEMENT_PATH):
175
+ * the prefix to route the socket by and the URL to open it at, `refused`
176
+ * when a server answered but will not take it, or null when none answered.
177
+ */
178
+ async place(serverUrl, code, avoid) {
179
+ const result = await (0, protocol_1.requestPlacement)(this.fetch, serverUrl, code, avoid, this.placementTimeoutMs);
180
+ if ('placed' in result) {
181
+ const { prefix, regionSocketUrls } = result.placed;
182
+ if (regionSocketUrls) {
183
+ this.setRegionUrls(regionSocketUrls);
184
+ }
185
+ return { prefix, url: this.regionUrlFor(prefix) || serverUrl };
186
+ }
187
+ if ('refused' in result) {
188
+ return exports.refused;
189
+ }
190
+ this.logger.warn('PartyGames', 'placement failed at', serverUrl, result.failed);
191
+ return null;
192
+ }
193
+ /** A socket routed by `prefix`, the server placement handed out, at `url`. */
194
+ connectTo(prefix, url) {
195
+ return this.io(url, {
196
+ // polling first, then WebSocket where the network lets it through
197
+ transports: ['polling', 'websocket'],
198
+ jsonp: false,
199
+ query: { [protocol_1.ROUTING_QUERY_KEY]: prefix },
200
+ // socket.io-client 2.x polls with credentials unless told not to, and
201
+ // a browser refuses those against the servers' `*` CORS answer
202
+ withCredentials: false,
203
+ forceNew: true,
204
+ // the connection's own: a connection lost asks where to go again
205
+ reconnection: false,
206
+ timeout: this.ackTimeoutMs,
207
+ });
208
+ }
209
+ /** Lets go of the connection for good: whatever it was doing stops. */
210
+ close() {
211
+ ++this.generation;
212
+ this.connecting = false;
213
+ this.found();
214
+ this.retries = 0;
215
+ this.routedPrefix = null;
216
+ this.dropSocket();
217
+ this.setAttached(true);
218
+ }
219
+ /** A server was reached: the room's server is not out of reach, or no longer. */
220
+ found() {
221
+ this.lostSince = null;
222
+ this.roomTries = 0;
223
+ this.roomSocketFailed = false;
224
+ }
225
+ dropSocket() {
226
+ const socket = this.socket;
227
+ // first, so its disconnect is not taken for a dropped connection
228
+ this.socket = null;
229
+ socket?.close();
230
+ }
231
+ /**
232
+ * Asks where to connect until a server says, then opens the socket there.
233
+ * A refusal is asked again straight away, a few times - the load balancer
234
+ * hands the next ask to the next server - and anything else after a wait
235
+ * (see nextDelay).
236
+ */
237
+ async placeAndOpen(generation, code, avoid, delay) {
238
+ let wait = delay;
239
+ let refusals = 0;
240
+ for (;;) {
241
+ if (wait) {
242
+ await new Promise(resolve => setTimeout(resolve, this.nextDelay(code)));
243
+ }
244
+ if (generation !== this.generation) {
245
+ return;
246
+ }
247
+ const placed = await this.placeFor(code, avoid);
248
+ if (generation !== this.generation) {
249
+ return;
250
+ }
251
+ if (placed && placed !== exports.refused) {
252
+ this.openSocket(placed.prefix, placed.url);
253
+ return;
254
+ }
255
+ wait = placed !== exports.refused || ++refusals > exports.maxDrainingRetries;
256
+ if (wait) {
257
+ refusals = 0;
258
+ }
259
+ }
260
+ }
261
+ /**
262
+ * How long to wait before the next try. A room's server is tried at the
263
+ * times `roomRetryMs` gives, counted from when it was lost, give or take a
264
+ * tenth so that a server's TVs do not all ask at the same moment - each try
265
+ * taking the next of them, whether its placement or its socket fails. A try
266
+ * due already, the last having taken that long, goes straight away.
267
+ * Anything else - no room, or a room's server tried that many times - backs
268
+ * off as socket.io would.
269
+ */
270
+ nextDelay(code) {
271
+ const at = code && this.lostSince !== null
272
+ ? this.roomRetryMs[this.roomTries]
273
+ : undefined;
274
+ if (at === undefined || this.lostSince === null) {
275
+ return (0, protocol_1.reconnectDelay)(this.retries++);
276
+ }
277
+ ++this.roomTries;
278
+ const due = this.lostSince + at * (0.9 + Math.random() * 0.2);
279
+ return Math.max(0, due - Date.now());
280
+ }
281
+ /**
282
+ * Which server to connect to for `code`'s room: the room's own, while it
283
+ * answers. Once it has failed every try `roomRetryMs` allows, it is given
284
+ * up on as soon as another server answers - the room went with its server,
285
+ * or its region - but not while none does: then it is this TV that is
286
+ * offline, and the room may well still be there. A room's server that
287
+ * answers but will not take the connection (on its way out, without the
288
+ * room) is given up on at once.
289
+ *
290
+ * From the last of those tries on, another server is asked alongside the
291
+ * room's, so a room that has gone is given up on without waiting for that
292
+ * try to time out as well. Its answer is only taken if the room's server
293
+ * fails: asking where to connect opens nothing. A room's server whose
294
+ * placement answers but whose socket has failed since counts as failing
295
+ * then, as unreachable all the same.
296
+ */
297
+ async placeFor(code, avoid) {
298
+ if (!code) {
299
+ return this.place(this.url, null, avoid);
300
+ }
301
+ const others = [...avoid, (0, protocol_1.codePrefixOf)(code)];
302
+ // the last of the room's tries, or past them
303
+ const last = this.roomTries >= this.roomRetryMs.length;
304
+ const askingElsewhere = last ? this.place(this.url, null, others) : null;
305
+ const own = await this.place(this.urlFor(code), code, avoid);
306
+ const placed = own && own !== exports.refused ? own : null;
307
+ if (placed && !(last && this.roomSocketFailed)) {
308
+ return placed;
309
+ }
310
+ this.lostSince ??= Date.now();
311
+ if (!placed && own !== exports.refused && !last) {
312
+ return null;
313
+ }
314
+ const elsewhere = await (askingElsewhere ??
315
+ this.place(this.url, null, others));
316
+ if (!elsewhere || elsewhere === exports.refused) {
317
+ // nowhere else either: the room's server, if it answered, is all there is
318
+ return placed || elsewhere;
319
+ }
320
+ this.logger.warn('PartyGames', 'room', code, 'out of reach, going to', elsewhere.prefix);
321
+ return elsewhere;
322
+ }
323
+ /** The servers of `code`'s region, if the connection knows where they are. */
324
+ regionUrlFor(code) {
325
+ const region = (0, protocol_1.regionOfCode)(code);
326
+ return region ? this.regionUrls[region] : undefined;
327
+ }
328
+ /**
329
+ * After a connection is lost, or never made: the room's own server is
330
+ * asked for again, until it is given up on (see placeFor). With no room,
331
+ * any server but the one that failed.
332
+ */
333
+ reconnect(failed) {
334
+ this.lostSince ??= Date.now();
335
+ const code = this.hooks.roomCode();
336
+ this.connectFor(code, { avoid: code ? [] : [failed], delay: true });
337
+ }
338
+ openSocket(prefix, url) {
339
+ this.connecting = false;
340
+ this.routedPrefix = prefix;
341
+ const socket = this.connectTo(prefix, url);
342
+ this.socket = socket;
343
+ socket.on('connect', () => {
344
+ if (socket !== this.socket) {
345
+ return;
346
+ }
347
+ // a server was reached: whatever it says of the room - here, moved,
348
+ // gone - the tries so far do not count against the next server
349
+ this.found();
350
+ this.logger.debug('PartyGames', 'connected to', url, 'as', prefix);
351
+ this.hooks.connected(socket, prefix);
352
+ });
353
+ socket.on('disconnect', () => {
354
+ if (socket !== this.socket) {
355
+ return;
356
+ }
357
+ this.logger.debug('PartyGames', 'disconnected');
358
+ this.reconnect(prefix);
359
+ });
360
+ socket.on('connect_error', (error) => {
361
+ if (socket !== this.socket) {
362
+ return;
363
+ }
364
+ this.logger.warn('PartyGames', 'connect error', error?.message);
365
+ const code = this.hooks.roomCode();
366
+ if (code && (0, protocol_1.codePrefixOf)(code) === prefix) {
367
+ this.roomSocketFailed = true;
368
+ }
369
+ this.reconnect(prefix);
370
+ });
371
+ this.hooks.opened(socket);
372
+ }
373
+ }
374
+ exports.PartyConnection = PartyConnection;
375
+ //# sourceMappingURL=connection.js.map