@arrai-innovations/reactive-helpers 8.3.2 → 8.4.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/README.md CHANGED
@@ -447,7 +447,14 @@ We make use of the basic set operations provided as example on mdn:
447
447
  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#implementing_basic_set_operations
448
448
 
449
449
  ```js
450
- import { isSuperset, union, intersection, symmetricDifference, difference } from "@arrai-innovations/reactive-helpers";
450
+ import {
451
+ isSuperset,
452
+ union,
453
+ intersection,
454
+ symmetricDifference,
455
+ difference,
456
+ equals,
457
+ } from "@arrai-innovations/reactive-helpers";
451
458
 
452
459
  isSuperset(new Set([1, 2, 3, 4]), new Set([1, 2, 3])); // true
453
460
  union(new Set([1, 2, 3, 4]), new Set([1, 2, 3])); // Set { 1, 2, 3, 4 }
@@ -455,6 +462,7 @@ intersection(new Set([1, 2, 3, 4]), new Set([1, 2, 3])); // Set { 1, 2, 3 }
455
462
  symmetricDifference(new Set([1, 2, 3, 4]), new Set([1, 2, 3, 5])); // Set { 4, 5 }
456
463
  difference(new Set([1, 2, 3, 4]), new Set([1, 2, 3, 5])); // Set { 4 }
457
464
  difference(new Set([1, 2, 3, 5]), new Set([1, 2, 3, 4])); // Set { 5 }
465
+ equals(new Set([1, 2, 3, 4]), new Set([1, 2, 3, 5])); // false
458
466
  ```
459
467
 
460
468
  #### watches
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arrai-innovations/reactive-helpers",
3
- "version": "8.3.2",
3
+ "version": "8.4.0",
4
4
  "description": "VueJS 3 utility composition functions to help manipulate objects and lists.",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -1,4 +1,4 @@
1
- import { difference, intersection, isSuperset, symmetricDifference, union } from "../../../utils/set.js";
1
+ import { difference, intersection, isSuperset, symmetricDifference, union, equals } from "../../../utils/set.js";
2
2
 
3
3
  describe("utils/set", function () {
4
4
  describe("isSuperset", function () {
@@ -57,6 +57,18 @@ describe("utils/set", function () {
57
57
  expect(difference(set2, set1)).toEqual(new Set([5, 6]));
58
58
  });
59
59
  });
60
+ describe("equals", function () {
61
+ it("should return true if the two sets are equal", function () {
62
+ const set1 = new Set([1, 2, 3, 4]);
63
+ const set2 = new Set([1, 2, 3, 4]);
64
+ expect(equals(set1, set2)).toBe(true);
65
+ });
66
+ it("should return false if the two sets are not equal", function () {
67
+ const set1 = new Set([1, 2, 3, 4]);
68
+ const set2 = new Set([1, 2, 3, 5]);
69
+ expect(equals(set1, set2)).toBe(false);
70
+ });
71
+ });
60
72
  it("should work as in the example for the readme", function () {
61
73
  expect(isSuperset(new Set([1, 2, 3, 4]), new Set([1, 2, 3]))).toBe(true);
62
74
  expect(union(new Set([1, 2, 3, 4]), new Set([1, 2, 3]))).toEqual(new Set([1, 2, 3, 4]));
@@ -64,5 +76,6 @@ describe("utils/set", function () {
64
76
  expect(symmetricDifference(new Set([1, 2, 3, 4]), new Set([1, 2, 3, 5]))).toEqual(new Set([4, 5]));
65
77
  expect(difference(new Set([1, 2, 3, 4]), new Set([1, 2, 3, 5]))).toEqual(new Set([4]));
66
78
  expect(difference(new Set([1, 2, 3, 5]), new Set([1, 2, 3, 4]))).toEqual(new Set([5]));
79
+ expect(equals(new Set([1, 2, 3, 4]), new Set([1, 2, 3, 5]))).toBe(false);
67
80
  });
68
81
  });
@@ -175,7 +175,7 @@ export function useObjectSubscription({
175
175
  awaitableWithCancel: subscribe,
176
176
  watchArguments: reactive({
177
177
  intendToSubscribe: toRef(state, "intendToSubscribe"),
178
- listArgs: toRef(parentState, "id"),
178
+ id: toRef(parentState, "id"),
179
179
  retrieveArgs: toRef(parentState, "retrieveArgs"),
180
180
  }),
181
181
  clearActiveOnResolved: false,
@@ -184,10 +184,15 @@ export function useObjectSubscription({
184
184
  retrieveIntent = useCancellableIntent({
185
185
  awaitableWithCancel: objectInstance.retrieve,
186
186
  watchArguments: reactive({
187
- intendToSubscribe: toRef(state, "intendToRetrieve"),
188
- listArgs: toRef(parentState, "id"),
187
+ intendToRetrieve: toRef(state, "intendToRetrieve"),
188
+ id: toRef(parentState, "id"),
189
189
  retrieveArgs: toRef(parentState, "retrieveArgs"),
190
190
  }),
191
+ // delay triggering a retrieve until the last retrieve has finished/cancelled
192
+ // cancel can still be triggered
193
+ guardArguments: reactive({
194
+ loading: toRef(state, "loading"),
195
+ }),
191
196
  });
192
197
  });
193
198
 
package/utils/set.js CHANGED
@@ -46,3 +46,7 @@ export const difference = (setA, setB) => {
46
46
  }
47
47
  return _difference;
48
48
  };
49
+
50
+ export const equals = (setA, setB) => {
51
+ return setA.size === setB.size && isSuperset(setA, setB);
52
+ };