phaser-hooks 0.2.1 → 0.3.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/hooks/type.d.ts +16 -0
- package/dist/hooks/type.d.ts.map +1 -1
- package/dist/hooks/with-computed-state.d.ts.map +1 -1
- package/dist/hooks/with-computed-state.js +5 -1
- package/dist/hooks/with-computed-state.js.map +1 -1
- package/dist/hooks/with-debounced-state.d.ts.map +1 -1
- package/dist/hooks/with-debounced-state.js +3 -0
- package/dist/hooks/with-debounced-state.js.map +1 -1
- package/dist/hooks/with-global-state.spec.d.ts +2 -0
- package/dist/hooks/with-global-state.spec.d.ts.map +1 -0
- package/dist/hooks/with-global-state.spec.js +158 -0
- package/dist/hooks/with-global-state.spec.js.map +1 -0
- package/dist/hooks/with-local-state.spec.d.ts +2 -0
- package/dist/hooks/with-local-state.spec.d.ts.map +1 -0
- package/dist/hooks/with-local-state.spec.js +155 -0
- package/dist/hooks/with-local-state.spec.js.map +1 -0
- package/dist/hooks/with-state-def.d.ts +32 -5
- package/dist/hooks/with-state-def.d.ts.map +1 -1
- package/dist/hooks/with-state-def.js +288 -104
- package/dist/hooks/with-state-def.js.map +1 -1
- package/dist/hooks/with-undoable-state.d.ts.map +1 -1
- package/dist/hooks/with-undoable-state.js +3 -0
- package/dist/hooks/with-undoable-state.js.map +1 -1
- package/dist/hooks/with-undoable-state.spec.d.ts +2 -0
- package/dist/hooks/with-undoable-state.spec.d.ts.map +1 -0
- package/dist/hooks/with-undoable-state.spec.js +262 -0
- package/dist/hooks/with-undoable-state.spec.js.map +1 -0
- package/dist/test/scene-mock.d.ts +3 -0
- package/dist/test/scene-mock.d.ts.map +1 -0
- package/dist/test/scene-mock.js +13 -0
- package/dist/test/scene-mock.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/* eslint-disable max-lines-per-function */
|
|
2
|
+
/* eslint-disable no-magic-numbers */
|
|
3
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
4
|
+
import { buildSceneMock } from "../test/scene-mock";
|
|
5
|
+
import { withUndoableState } from "./with-undoable-state";
|
|
6
|
+
describe('withUndoableState', () => {
|
|
7
|
+
const baseState = {
|
|
8
|
+
life: 100,
|
|
9
|
+
};
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
vi.clearAllMocks();
|
|
12
|
+
});
|
|
13
|
+
describe('validation', () => {
|
|
14
|
+
it('should throw an error if the scene is not provided', () => {
|
|
15
|
+
// @ts-expect-error - we want to test the error case
|
|
16
|
+
expect(() => withUndoableState(null, 'test-state', baseState, 10)).toThrow('[withLocalState] Scene parameter is required');
|
|
17
|
+
});
|
|
18
|
+
it('should throw an error if the data manager is not provided', () => {
|
|
19
|
+
const scene = buildSceneMock();
|
|
20
|
+
// @ts-expect-error - we want to test the error case
|
|
21
|
+
scene.data = null;
|
|
22
|
+
expect(() => withUndoableState(scene, 'test-state', baseState, 10)).toThrow('[withStateDef] Scene data is not available. Ensure the scene is properly initialized.');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
it('should be defined', () => {
|
|
26
|
+
expect(withUndoableState).toBeDefined();
|
|
27
|
+
});
|
|
28
|
+
describe('initial state definition', () => {
|
|
29
|
+
it('should set initial state value if not provided in first call', () => {
|
|
30
|
+
const scene = buildSceneMock();
|
|
31
|
+
const key = `test-state-${Date.now()}`;
|
|
32
|
+
const initialState = { ...baseState, life: 90 };
|
|
33
|
+
const setSpy = vi.spyOn(scene.data, 'set');
|
|
34
|
+
withUndoableState(scene, key, initialState, 10);
|
|
35
|
+
// withUndoableState uses scene.data for current state, history, and historyIndex
|
|
36
|
+
expect(setSpy).toHaveBeenCalledWith(`phaser-hooks:local:test-scene:${key}`, initialState);
|
|
37
|
+
expect(setSpy).toHaveBeenCalledWith(`phaser-hooks:local:test-scene:${key}:history`, [initialState]);
|
|
38
|
+
expect(setSpy).toHaveBeenCalledWith(`phaser-hooks:local:test-scene:${key}:historyIndex`, 0);
|
|
39
|
+
setSpy.mockRestore();
|
|
40
|
+
});
|
|
41
|
+
it('should not set state in second call', () => {
|
|
42
|
+
const scene = buildSceneMock();
|
|
43
|
+
const key = `test-state-${Date.now()}`;
|
|
44
|
+
const initialState = { ...baseState, life: 75 };
|
|
45
|
+
const setSpy = vi.spyOn(scene.data, 'set');
|
|
46
|
+
withUndoableState(scene, key, initialState, 10);
|
|
47
|
+
expect(setSpy).toHaveBeenCalledWith(`phaser-hooks:local:test-scene:${key}`, initialState);
|
|
48
|
+
expect(setSpy).toHaveBeenCalledWith(`phaser-hooks:local:test-scene:${key}:history`, [initialState]);
|
|
49
|
+
expect(setSpy).toHaveBeenCalledWith(`phaser-hooks:local:test-scene:${key}:historyIndex`, 0);
|
|
50
|
+
// second call should not set state
|
|
51
|
+
const hook = withUndoableState(scene, key, { ...baseState, life: 100 }, 10);
|
|
52
|
+
expect(setSpy).toHaveBeenCalledTimes(3); // Only the initial 3 calls
|
|
53
|
+
expect(hook.get()).toEqual(initialState);
|
|
54
|
+
setSpy.mockRestore();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('get/set', () => {
|
|
58
|
+
it('should return the initial state', () => {
|
|
59
|
+
const scene = buildSceneMock();
|
|
60
|
+
const key = `test-state-${Date.now()}`;
|
|
61
|
+
const initialState = { ...baseState, life: 100 };
|
|
62
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
63
|
+
expect(hook.get()).toEqual(initialState);
|
|
64
|
+
});
|
|
65
|
+
it('should return the updated state', () => {
|
|
66
|
+
const scene = buildSceneMock();
|
|
67
|
+
const key = `test-state-${Date.now()}`;
|
|
68
|
+
const initialState = { ...baseState, life: 100 };
|
|
69
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
70
|
+
hook.set({ ...baseState, life: 90 });
|
|
71
|
+
expect(hook.get()).toEqual({ ...baseState, life: 90 });
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe('undo/redo functionality', () => {
|
|
75
|
+
it('should undo to previous state', () => {
|
|
76
|
+
const scene = buildSceneMock();
|
|
77
|
+
const key = `test-state-${Date.now()}`;
|
|
78
|
+
const initialState = { ...baseState, life: 100 };
|
|
79
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
80
|
+
hook.set({ ...baseState, life: 90 });
|
|
81
|
+
hook.set({ ...baseState, life: 80 });
|
|
82
|
+
expect(hook.get()).toEqual({ ...baseState, life: 80 });
|
|
83
|
+
expect(hook.canUndo()).toBe(true);
|
|
84
|
+
const undoResult = hook.undo();
|
|
85
|
+
expect(undoResult).toBe(true);
|
|
86
|
+
expect(hook.get()).toEqual({ ...baseState, life: 90 });
|
|
87
|
+
});
|
|
88
|
+
it('should redo to next state', () => {
|
|
89
|
+
const scene = buildSceneMock();
|
|
90
|
+
const key = `test-state-${Date.now()}`;
|
|
91
|
+
const initialState = { ...baseState, life: 100 };
|
|
92
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
93
|
+
hook.set({ ...baseState, life: 90 });
|
|
94
|
+
hook.set({ ...baseState, life: 80 });
|
|
95
|
+
hook.undo(); // Back to 90
|
|
96
|
+
expect(hook.get()).toEqual({ ...baseState, life: 90 });
|
|
97
|
+
expect(hook.canRedo()).toBe(true);
|
|
98
|
+
const redoResult = hook.redo();
|
|
99
|
+
expect(redoResult).toBe(true);
|
|
100
|
+
expect(hook.get()).toEqual({ ...baseState, life: 80 });
|
|
101
|
+
});
|
|
102
|
+
it('should return false when undo is not possible', () => {
|
|
103
|
+
const scene = buildSceneMock();
|
|
104
|
+
const key = `test-state-${Date.now()}`;
|
|
105
|
+
const initialState = { ...baseState, life: 100 };
|
|
106
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
107
|
+
expect(hook.canUndo()).toBe(false);
|
|
108
|
+
const undoResult = hook.undo();
|
|
109
|
+
expect(undoResult).toBe(false);
|
|
110
|
+
expect(hook.get()).toEqual(initialState);
|
|
111
|
+
});
|
|
112
|
+
it('should return false when redo is not possible', () => {
|
|
113
|
+
const scene = buildSceneMock();
|
|
114
|
+
const key = `test-state-${Date.now()}`;
|
|
115
|
+
const initialState = { ...baseState, life: 100 };
|
|
116
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
117
|
+
hook.set({ ...baseState, life: 90 });
|
|
118
|
+
expect(hook.canRedo()).toBe(false);
|
|
119
|
+
const redoResult = hook.redo();
|
|
120
|
+
expect(redoResult).toBe(false);
|
|
121
|
+
expect(hook.get()).toEqual({ ...baseState, life: 90 });
|
|
122
|
+
});
|
|
123
|
+
it('should clear history and reset to current state', () => {
|
|
124
|
+
const scene = buildSceneMock();
|
|
125
|
+
const key = `test-state-${Date.now()}`;
|
|
126
|
+
const initialState = { ...baseState, life: 100 };
|
|
127
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
128
|
+
hook.set({ ...baseState, life: 90 });
|
|
129
|
+
hook.set({ ...baseState, life: 80 });
|
|
130
|
+
expect(hook.canUndo()).toBe(true);
|
|
131
|
+
hook.clearHistory();
|
|
132
|
+
expect(hook.canUndo()).toBe(false);
|
|
133
|
+
expect(hook.canRedo()).toBe(false);
|
|
134
|
+
expect(hook.get()).toEqual({ ...baseState, life: 80 });
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
describe('history management', () => {
|
|
138
|
+
it('should limit history size when maxHistorySize is exceeded', () => {
|
|
139
|
+
const scene = buildSceneMock();
|
|
140
|
+
const key = `test-state-${Date.now()}`;
|
|
141
|
+
const initialState = { ...baseState, life: 100 };
|
|
142
|
+
const hook = withUndoableState(scene, key, initialState, 3);
|
|
143
|
+
// Add more states than maxHistorySize
|
|
144
|
+
hook.set({ ...baseState, life: 90 });
|
|
145
|
+
hook.set({ ...baseState, life: 80 });
|
|
146
|
+
hook.set({ ...baseState, life: 70 });
|
|
147
|
+
hook.set({ ...baseState, life: 60 }); // This should remove the first state (100)
|
|
148
|
+
// Should be able to undo 2 times (maxHistorySize - 1)
|
|
149
|
+
expect(hook.canUndo()).toBe(true);
|
|
150
|
+
hook.undo(); // Should go to 70
|
|
151
|
+
expect(hook.get()).toEqual({ ...baseState, life: 70 });
|
|
152
|
+
hook.undo(); // Should go to 80
|
|
153
|
+
expect(hook.get()).toEqual({ ...baseState, life: 80 });
|
|
154
|
+
// Should not be able to undo further (initial state was removed)
|
|
155
|
+
expect(hook.canUndo()).toBe(false);
|
|
156
|
+
});
|
|
157
|
+
it('should remove future history when setting new state after undo', () => {
|
|
158
|
+
const scene = buildSceneMock();
|
|
159
|
+
const key = `test-state-${Date.now()}`;
|
|
160
|
+
const initialState = { ...baseState, life: 100 };
|
|
161
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
162
|
+
hook.set({ ...baseState, life: 90 });
|
|
163
|
+
hook.set({ ...baseState, life: 80 });
|
|
164
|
+
hook.set({ ...baseState, life: 70 });
|
|
165
|
+
hook.undo(); // Back to 80
|
|
166
|
+
hook.undo(); // Back to 90
|
|
167
|
+
// Now set a new state - this should remove the future history (70)
|
|
168
|
+
hook.set({ ...baseState, life: 95 });
|
|
169
|
+
expect(hook.get()).toEqual({ ...baseState, life: 95 });
|
|
170
|
+
expect(hook.canRedo()).toBe(false); // No future history
|
|
171
|
+
expect(hook.canUndo()).toBe(true);
|
|
172
|
+
hook.undo(); // Should go back to 90
|
|
173
|
+
expect(hook.get()).toEqual({ ...baseState, life: 90 });
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
describe('events', () => {
|
|
177
|
+
describe('on', () => {
|
|
178
|
+
it('should register a change listener', () => {
|
|
179
|
+
const scene = buildSceneMock();
|
|
180
|
+
const key = `test-state-${Date.now()}`;
|
|
181
|
+
const initialState = { ...baseState, life: 100 };
|
|
182
|
+
const callback = vi.fn();
|
|
183
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
184
|
+
hook.on('change', callback);
|
|
185
|
+
hook.set({ ...baseState, life: 90 });
|
|
186
|
+
expect(callback).toHaveBeenCalled();
|
|
187
|
+
});
|
|
188
|
+
it('should call multiple listeners', () => {
|
|
189
|
+
const scene = buildSceneMock();
|
|
190
|
+
const key = `test-state-${Date.now()}`;
|
|
191
|
+
const initialState = { ...baseState, life: 100 };
|
|
192
|
+
const callback1 = vi.fn();
|
|
193
|
+
const callback2 = vi.fn();
|
|
194
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
195
|
+
hook.on('change', callback1);
|
|
196
|
+
hook.on('change', callback2);
|
|
197
|
+
hook.set({ ...baseState, life: 90 });
|
|
198
|
+
expect(callback1).toHaveBeenCalled();
|
|
199
|
+
expect(callback2).toHaveBeenCalled();
|
|
200
|
+
});
|
|
201
|
+
it('should not call listener when call unsubscribe returned by .on function', () => {
|
|
202
|
+
const scene = buildSceneMock();
|
|
203
|
+
const key = `test-state-${Date.now()}`;
|
|
204
|
+
const initialState = { ...baseState, life: 100 };
|
|
205
|
+
const callback = vi.fn();
|
|
206
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
207
|
+
const unsubscribe = hook.on('change', callback);
|
|
208
|
+
hook.set({ ...baseState, life: 90 });
|
|
209
|
+
expect(callback).toHaveBeenCalled();
|
|
210
|
+
unsubscribe();
|
|
211
|
+
hook.set({ ...baseState, life: 100 });
|
|
212
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
213
|
+
});
|
|
214
|
+
it('should not call listener when add .off method to remove listener', () => {
|
|
215
|
+
const scene = buildSceneMock();
|
|
216
|
+
const key = `test-state-${Date.now()}`;
|
|
217
|
+
const initialState = { ...baseState, life: 100 };
|
|
218
|
+
const callback = vi.fn();
|
|
219
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
220
|
+
hook.on('change', callback);
|
|
221
|
+
hook.off('change', callback);
|
|
222
|
+
hook.set({ ...baseState, life: 90 });
|
|
223
|
+
expect(callback).not.toHaveBeenCalled();
|
|
224
|
+
});
|
|
225
|
+
it('should call listener when call .once method', () => {
|
|
226
|
+
const scene = buildSceneMock();
|
|
227
|
+
const key = `test-state-${Date.now()}`;
|
|
228
|
+
const initialState = { ...baseState, life: 100 };
|
|
229
|
+
const callback = vi.fn();
|
|
230
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
231
|
+
hook.once('change', callback);
|
|
232
|
+
hook.set({ ...baseState, life: 90 });
|
|
233
|
+
expect(callback).toHaveBeenCalled();
|
|
234
|
+
});
|
|
235
|
+
it('should call listener once when call .once method', () => {
|
|
236
|
+
const scene = buildSceneMock();
|
|
237
|
+
const key = `test-state-${Date.now()}`;
|
|
238
|
+
const initialState = { ...baseState, life: 100 };
|
|
239
|
+
const callback = vi.fn();
|
|
240
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
241
|
+
hook.once('change', callback);
|
|
242
|
+
hook.set({ ...baseState, life: 90 });
|
|
243
|
+
expect(callback).toHaveBeenCalled();
|
|
244
|
+
hook.set({ ...baseState, life: 100 });
|
|
245
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
246
|
+
});
|
|
247
|
+
it('should not call listener when call unsubscribe returned by .once function', () => {
|
|
248
|
+
const scene = buildSceneMock();
|
|
249
|
+
const key = `test-state-${Date.now()}`;
|
|
250
|
+
const initialState = { ...baseState, life: 100 };
|
|
251
|
+
const callback = vi.fn();
|
|
252
|
+
const hook = withUndoableState(scene, key, initialState, 10);
|
|
253
|
+
const unsubscribe = hook.once('change', callback);
|
|
254
|
+
unsubscribe();
|
|
255
|
+
hook.set({ ...baseState, life: 90 });
|
|
256
|
+
hook.set({ ...baseState, life: 100 });
|
|
257
|
+
expect(callback).not.toHaveBeenCalled();
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
//# sourceMappingURL=with-undoable-state.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-undoable-state.spec.js","sourceRoot":"","sources":["../../src/hooks/with-undoable-state.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-mock.d.ts","sourceRoot":"","sources":["../../src/test/scene-mock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAIpC,eAAO,MAAM,cAAc,QAAO,KAQjC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import EventEmitter from "node:events";
|
|
2
|
+
// @ts-expect-error: No type declarations for DataManager, but we only use it for test mocks
|
|
3
|
+
import DataManager from 'phaser/src/data/DataManager.js';
|
|
4
|
+
export const buildSceneMock = () => {
|
|
5
|
+
return {
|
|
6
|
+
scene: {
|
|
7
|
+
key: 'test-scene',
|
|
8
|
+
},
|
|
9
|
+
registry: new DataManager({}, new EventEmitter()),
|
|
10
|
+
data: new DataManager({}, new EventEmitter()),
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=scene-mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-mock.js","sourceRoot":"","sources":["../../src/test/scene-mock.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AAGvC,4FAA4F;AAC5F,OAAO,WAAW,MAAM,gCAAgC,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAU,EAAE;IACxC,OAAO;QACL,KAAK,EAAE;YACL,GAAG,EAAE,YAAY;SAClB;QACD,QAAQ,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,YAAY,EAAE,CAAC;QACjD,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,YAAY,EAAE,CAAC;KAC1B,CAAC;AACxB,CAAC,CAAC"}
|