@tailuge/messaging 1.38.0 → 1.39.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/table.d.ts +5 -0
- package/dist/table.js +13 -0
- package/dist/table.js.map +1 -1
- package/package.json +3 -3
package/dist/table.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare class Table<T = any> {
|
|
|
16
16
|
private messageListeners;
|
|
17
17
|
private spectatorListeners;
|
|
18
18
|
private opponentLeftListeners;
|
|
19
|
+
private opponentRejoinedListeners;
|
|
19
20
|
opponentLeft: boolean;
|
|
20
21
|
readonly bothJoined: Promise<void>;
|
|
21
22
|
private resolveBothJoined;
|
|
@@ -36,6 +37,10 @@ export declare class Table<T = any> {
|
|
|
36
37
|
* Subscribe to opponent departure (explicit leave or timeout).
|
|
37
38
|
*/
|
|
38
39
|
onOpponentLeft(callback: () => void): void;
|
|
40
|
+
/**
|
|
41
|
+
* Subscribe to opponent rejoin.
|
|
42
|
+
*/
|
|
43
|
+
onOpponentRejoined(callback: () => void): void;
|
|
39
44
|
/**
|
|
40
45
|
* Subscribe to changes in the spectator list.
|
|
41
46
|
* Note: In a real implementation, this would track presence messages on the table channel.
|
package/dist/table.js
CHANGED
|
@@ -15,6 +15,7 @@ export class Table {
|
|
|
15
15
|
this.messageListeners = [];
|
|
16
16
|
this.spectatorListeners = [];
|
|
17
17
|
this.opponentLeftListeners = [];
|
|
18
|
+
this.opponentRejoinedListeners = [];
|
|
18
19
|
this.opponentLeft = false;
|
|
19
20
|
this.bothJoinedListeners = [];
|
|
20
21
|
this.bothJoinedResolved = false;
|
|
@@ -71,6 +72,12 @@ export class Table {
|
|
|
71
72
|
callback();
|
|
72
73
|
}
|
|
73
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Subscribe to opponent rejoin.
|
|
77
|
+
*/
|
|
78
|
+
onOpponentRejoined(callback) {
|
|
79
|
+
this.opponentRejoinedListeners.push(callback);
|
|
80
|
+
}
|
|
74
81
|
/**
|
|
75
82
|
* Subscribe to changes in the spectator list.
|
|
76
83
|
* Note: In a real implementation, this would track presence messages on the table channel.
|
|
@@ -104,6 +111,7 @@ export class Table {
|
|
|
104
111
|
this.messageListeners = [];
|
|
105
112
|
this.spectatorListeners = [];
|
|
106
113
|
this.opponentLeftListeners = [];
|
|
114
|
+
this.opponentRejoinedListeners = [];
|
|
107
115
|
this.isJoined = false;
|
|
108
116
|
}
|
|
109
117
|
handleIncomingMessage(data) {
|
|
@@ -122,6 +130,11 @@ export class Table {
|
|
|
122
130
|
if (this.seenIds.size >= 2) {
|
|
123
131
|
this.resolveBothJoined();
|
|
124
132
|
}
|
|
133
|
+
// Detect rejoin if it is the opponent, bothJoined has resolved, and opponentLeft is currently true
|
|
134
|
+
if (this.bothJoinedResolved && joinedId !== this.userId && this.opponentLeft) {
|
|
135
|
+
this.opponentLeft = false;
|
|
136
|
+
this.opponentRejoinedListeners.forEach((cb) => cb());
|
|
137
|
+
}
|
|
125
138
|
}
|
|
126
139
|
return; // Filter out internal "joined" messages from generic onMessage listeners
|
|
127
140
|
}
|
package/dist/table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,qBAAqB,EAAE,YAAY,EAAmB,MAAM,SAAS,CAAC;AAG7G;;;GAGG;AACH,MAAM,OAAO,KAAK;
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailuge/messaging",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.39.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A stateful messaging library for Nchan-powered real-time applications.",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
"author": "tailuge",
|
|
51
51
|
"license": "GPL-3.0",
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@playwright/test": "^1.62.
|
|
53
|
+
"@playwright/test": "^1.62.1",
|
|
54
54
|
"@types/jest": "^30.0.0",
|
|
55
55
|
"@types/ws": "^8.18.1",
|
|
56
56
|
"esbuild": "^0.28.1",
|
|
57
57
|
"jest": "^30.4.2",
|
|
58
|
-
"oxlint": "^1.
|
|
58
|
+
"oxlint": "^1.76.0",
|
|
59
59
|
"testcontainers": "9.12.0",
|
|
60
60
|
"ts-jest": "^29.4.12",
|
|
61
61
|
"ts-node": "^10.9.2",
|