Skip to content

Commit c60fdba

Browse files
author
Moshe Kolodny
committed
Support set on Maps
1 parent 1f7f0cf commit c60fdba

File tree

5 files changed

+15
-3
lines changed

5 files changed

+15
-3
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
language: node_js
22
node_js:
3-
- '6'
43
- '8'
54
- '10'
5+
- '12'
66
- 'lts/*'
77
# Send coverage data to Coveralls
88
after_script: "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"

index.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ declare type MapSpec<K, V> = {
3030
$add: Array<[K, V]>;
3131
} | {
3232
$remove: K[];
33+
} | {
34+
[key: string]: {
35+
$set: V;
36+
};
3337
};
3438
declare type SetSpec<T> = {
3539
$add: T[];

index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,8 @@ type ArraySpec<T, C extends CustomCommands<object>> =
343343

344344
type MapSpec<K, V> =
345345
| { $add: Array<[K, V]> }
346-
| { $remove: K[] };
346+
| { $remove: K[] }
347+
| { [key: string]: { $set: V } };
347348

348349
type SetSpec<T> =
349350
| { $add: T[] }

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "immutability-helper",
3-
"version": "3.0.0",
3+
"version": "3.0.1",
44
"description": "mutate a copy of data without changing the original source",
55
"main": "index.js",
66
"typings": "index.d.ts",

test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,13 @@ describe('immutability-helper module', () => {
163163
expect(result).toEqual({a: 1, b: undefined});
164164
expect(Object.keys(result).length).toEqual(2);
165165
});
166+
it('works on Map (E2E)', () => {
167+
const state = new Map([['foo', 'FOO'], ['bar', 'BAR']]);
168+
const modified = update(state, {foo: {$set: 'OFO' }});
169+
expect(state).toEqual(new Map([['foo', 'FOO'], ['bar', 'BAR']]));
170+
expect(modified).toEqual(new Map([['foo', 'OFO'], ['bar', 'BAR']]));
171+
expect(state).not.toBe(modified);
172+
});
166173
});
167174

168175
describe('$toggle', () => {

0 commit comments

Comments
 (0)