@couch-kit/core 0.10.2 → 0.10.3

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @couch-kit/core
2
2
 
3
+ ## 0.10.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#227](https://github.com/faluciano/react-native-couch-kit/pull/227) [`8ef31ad`](https://github.com/faluciano/react-native-couch-kit/commit/8ef31adc53dc7342f1d81f8ba2e4acb6c8c1433e) Thanks [@faluciano](https://github.com/faluciano)! - A player who rejoins under a new name or avatar is renamed. `__PLAYER_RECONNECTED__` now carries the rejoining JOIN's `name` and `avatar`, and the reducer applies them. Before, a reconnect kept the old name, so "change name" in a controller did nothing. Recordings without them replay as before.
8
+
3
9
  ## 0.10.2
4
10
 
5
11
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -195,7 +195,7 @@ function createGameReducer(reducer, options) {
195
195
  };
196
196
  }
197
197
  case InternalActionTypes.PLAYER_RECONNECTED: {
198
- const { playerId } = action.payload;
198
+ const { playerId, name, avatar } = action.payload;
199
199
  const player = state.players[playerId];
200
200
  if (!player)
201
201
  return state;
@@ -203,7 +203,12 @@ function createGameReducer(reducer, options) {
203
203
  ...state,
204
204
  players: {
205
205
  ...state.players,
206
- [playerId]: { ...player, connected: true }
206
+ [playerId]: {
207
+ ...player,
208
+ connected: true,
209
+ ...name !== undefined ? { name } : {},
210
+ ...avatar !== undefined ? { avatar } : {}
211
+ }
207
212
  }
208
213
  };
209
214
  }
package/dist/index.js CHANGED
@@ -124,7 +124,7 @@ function createGameReducer(reducer, options) {
124
124
  };
125
125
  }
126
126
  case InternalActionTypes.PLAYER_RECONNECTED: {
127
- const { playerId } = action.payload;
127
+ const { playerId, name, avatar } = action.payload;
128
128
  const player = state.players[playerId];
129
129
  if (!player)
130
130
  return state;
@@ -132,7 +132,12 @@ function createGameReducer(reducer, options) {
132
132
  ...state,
133
133
  players: {
134
134
  ...state.players,
135
- [playerId]: { ...player, connected: true }
135
+ [playerId]: {
136
+ ...player,
137
+ connected: true,
138
+ ...name !== undefined ? { name } : {},
139
+ ...avatar !== undefined ? { avatar } : {}
140
+ }
136
141
  }
137
142
  };
138
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,uCAAuC;AACvC,MAAM,WAAW,wBAAwB,CACvC,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,OAAO;IAEjB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,OAAO,EACvE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GACvC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAgFvC"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,uCAAuC;AACvC,MAAM,WAAW,wBAAwB,CACvC,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,OAAO;IAEjB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,OAAO,EACvE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GACvC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAwFvC"}
package/lib/types.d.ts CHANGED
@@ -40,7 +40,7 @@ export interface IAction {
40
40
  * - `__HYDRATE__` -- Replaces state wholesale (server-to-client sync).
41
41
  * - `__PLAYER_JOINED__` -- Adds a player to `state.players`.
42
42
  * - `__PLAYER_LEFT__` -- Marks a player as disconnected (`connected: false`).
43
- * - `__PLAYER_RECONNECTED__` -- Restores a returning player (`connected: true`), preserving existing data.
43
+ * - `__PLAYER_RECONNECTED__` -- Restores a returning player (`connected: true`), preserving existing data. A `name` or `avatar` in the payload replaces the stored one, so a player who rejoins under a new name is renamed.
44
44
  * - `__PLAYER_REMOVED__` -- Permanently removes a timed-out disconnected player from `state.players`.
45
45
  */
46
46
  export type InternalAction<S extends IGameState = IGameState> = {
@@ -62,6 +62,8 @@ export type InternalAction<S extends IGameState = IGameState> = {
62
62
  type: "__PLAYER_RECONNECTED__";
63
63
  payload: {
64
64
  playerId: string;
65
+ name?: string;
66
+ avatar?: string;
65
67
  };
66
68
  } | {
67
69
  type: "__PLAYER_REMOVED__";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IACxD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,GACnC;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD,GACD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAElE,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB;aAC9B,OAAO,EAAE,aAAa;aACtB,aAAa,EAAE,mBAAmB;aAClC,WAAW,EAAE,iBAAiB;aAC9B,kBAAkB,EAAE,wBAAwB;aAC5C,cAAc,EAAE,oBAAoB;CAC5B,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,OAAO,IAAI,CACjE,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,KACN,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IACxD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,GACnC;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD,GACD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC1D;IACE,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D,GACD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAElE,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB;aAC9B,OAAO,EAAE,aAAa;aACtB,aAAa,EAAE,mBAAmB;aAClC,WAAW,EAAE,iBAAiB;aAC9B,kBAAkB,EAAE,wBAAwB;aAC5C,cAAc,EAAE,oBAAoB;CAC5B,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,OAAO,IAAI,CACjE,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,KACN,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@couch-kit/core",
3
- "version": "0.10.2",
3
+ "version": "0.10.3",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
package/src/reducer.ts CHANGED
@@ -87,16 +87,24 @@ export function createGameReducer<S extends IGameState, A extends IAction>(
87
87
  }
88
88
 
89
89
  case InternalActionTypes.PLAYER_RECONNECTED: {
90
- const { playerId } = (
90
+ const { playerId, name, avatar } = (
91
91
  action as InternalAction<S> & { type: "__PLAYER_RECONNECTED__" }
92
92
  ).payload;
93
93
  const player = state.players[playerId];
94
94
  if (!player) return state;
95
+ // Name and avatar come from the rejoining JOIN, so a player who changed
96
+ // their name and rejoined is renamed. Absent (older recordings), the
97
+ // stored values stand.
95
98
  return {
96
99
  ...state,
97
100
  players: {
98
101
  ...state.players,
99
- [playerId]: { ...player, connected: true },
102
+ [playerId]: {
103
+ ...player,
104
+ connected: true,
105
+ ...(name !== undefined ? { name } : {}),
106
+ ...(avatar !== undefined ? { avatar } : {}),
107
+ },
100
108
  },
101
109
  };
102
110
  }
package/src/types.ts CHANGED
@@ -43,7 +43,7 @@ export interface IAction {
43
43
  * - `__HYDRATE__` -- Replaces state wholesale (server-to-client sync).
44
44
  * - `__PLAYER_JOINED__` -- Adds a player to `state.players`.
45
45
  * - `__PLAYER_LEFT__` -- Marks a player as disconnected (`connected: false`).
46
- * - `__PLAYER_RECONNECTED__` -- Restores a returning player (`connected: true`), preserving existing data.
46
+ * - `__PLAYER_RECONNECTED__` -- Restores a returning player (`connected: true`), preserving existing data. A `name` or `avatar` in the payload replaces the stored one, so a player who rejoins under a new name is renamed.
47
47
  * - `__PLAYER_REMOVED__` -- Permanently removes a timed-out disconnected player from `state.players`.
48
48
  */
49
49
  export type InternalAction<S extends IGameState = IGameState> =
@@ -53,7 +53,10 @@ export type InternalAction<S extends IGameState = IGameState> =
53
53
  payload: { id: string; name: string; avatar?: string };
54
54
  }
55
55
  | { type: "__PLAYER_LEFT__"; payload: { playerId: string } }
56
- | { type: "__PLAYER_RECONNECTED__"; payload: { playerId: string } }
56
+ | {
57
+ type: "__PLAYER_RECONNECTED__";
58
+ payload: { playerId: string; name?: string; avatar?: string };
59
+ }
57
60
  | { type: "__PLAYER_REMOVED__"; payload: { playerId: string } };
58
61
 
59
62
  /** Well-known internal action type strings. */