shelving 1.109.0 → 1.109.1

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.
@@ -54,9 +54,9 @@ function _getFieldValue({ key, action, value }) {
54
54
  if (action === "sum")
55
55
  return [key, increment(value)];
56
56
  if (action === "with")
57
- return [key, arrayUnion(value)];
57
+ return [key, arrayUnion(...value)];
58
58
  if (action === "omit")
59
- return [key, arrayRemove(value)];
59
+ return [key, arrayRemove(...value)];
60
60
  return action; // Never happens.
61
61
  }
62
62
  /**
@@ -51,9 +51,9 @@ function _getFieldValue({ key, action, value }) {
51
51
  if (action === "sum")
52
52
  return [key, increment(value)];
53
53
  if (action === "with")
54
- return [key, arrayUnion(value)];
54
+ return [key, arrayUnion(...value)];
55
55
  if (action === "omit")
56
- return [key, arrayRemove(value)];
56
+ return [key, arrayRemove(...value)];
57
57
  return action; // Never happens.
58
58
  }
59
59
  /**
@@ -58,9 +58,9 @@ function _getFieldValue({ key, action, value }) {
58
58
  if (action === "sum")
59
59
  return [key, FieldValue.increment(value)];
60
60
  if (action === "with")
61
- return [key, FieldValue.arrayUnion(value)];
61
+ return [key, FieldValue.arrayUnion(...value)];
62
62
  if (action === "omit")
63
- return [key, FieldValue.arrayRemove(value)];
63
+ return [key, FieldValue.arrayRemove(...value)];
64
64
  return action; // Never happens.
65
65
  }
66
66
  /**
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "state-management",
12
12
  "query-builder"
13
13
  ],
14
- "version": "1.109.0",
14
+ "version": "1.109.1",
15
15
  "repository": "https://github.com/dhoulb/shelving",
16
16
  "author": "Dave Houlbrooke <dave@shax.com>",
17
17
  "license": "0BSD",
package/util/update.d.ts CHANGED
@@ -8,7 +8,7 @@ export type Updates<T extends Data = Data> = {
8
8
  } & {
9
9
  readonly [K in LeafKey<T> as `+=${K}` | `-=${K}`]?: LeafData<T>[K] extends number ? LeafData<T>[K] | undefined : never;
10
10
  } & {
11
- readonly [K in LeafKey<T> as `+[]${K}` | `-[]${K}`]?: LeafData<T>[K] extends ImmutableArray<unknown> ? LeafData<T>[K] | undefined : never;
11
+ readonly [K in LeafKey<T> as `+[]${K}` | `-[]${K}`]?: LeafData<T>[K] extends ImmutableArray<unknown> ? LeafData<T>[K] | LeafData<T>[K][number] | undefined : never;
12
12
  };
13
13
  /** A single update to a keyed property in an object. */
14
14
  export type Update = {
@@ -18,11 +18,11 @@ export type Update = {
18
18
  } | {
19
19
  action: "with";
20
20
  key: string;
21
- value: unknown;
21
+ value: ImmutableArray<unknown>;
22
22
  } | {
23
23
  action: "omit";
24
24
  key: string;
25
- value: unknown;
25
+ value: ImmutableArray<unknown>;
26
26
  } | {
27
27
  action: "sum";
28
28
  key: string;
package/util/update.js CHANGED
@@ -16,9 +16,9 @@ function _getUpdate([key, value]) {
16
16
  if (key.startsWith("="))
17
17
  return { action: "set", key: key.slice(1), value };
18
18
  if (key.startsWith("+[]"))
19
- return { action: "with", key: key.slice(3), value };
19
+ return { action: "with", key: key.slice(3), value: isArray(value) ? value : [value] };
20
20
  if (key.startsWith("-[]"))
21
- return { action: "omit", key: key.slice(3), value };
21
+ return { action: "omit", key: key.slice(3), value: isArray(value) ? value : [value] };
22
22
  return { action: "set", key, value };
23
23
  }
24
24
  }
@@ -43,9 +43,9 @@ function _updatePropDeep(obj, update, keys, i) {
43
43
  else if (action === "set")
44
44
  newValue = value;
45
45
  else if (action === "with")
46
- newValue = isArray(oldValue) ? withArrayItems(oldValue, value) : [value];
46
+ newValue = isArray(oldValue) ? withArrayItems(oldValue, ...value) : [value];
47
47
  else if (action === "omit")
48
- newValue = isArray(oldValue) ? omitArrayItems(oldValue, value) : [];
48
+ newValue = isArray(oldValue) ? omitArrayItems(oldValue, ...value) : [];
49
49
  else
50
50
  return action; // Never happens.
51
51
  }