@arrai-innovations/reactive-helpers 8.0.3 → 8.1.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.
Files changed (38) hide show
  1. package/{.eslintrc.js → .eslintrc.cjs} +3 -6
  2. package/.jsdoc2md.json +4 -0
  3. package/README.md +12 -1
  4. package/docs.md +350 -0
  5. package/jsdoc-to-markdown.sh +16 -0
  6. package/lint-staged.config.js +10 -0
  7. package/package.json +15 -13
  8. package/tests/unit/.eslintrc.cjs +10 -0
  9. package/tests/unit/crudPromise.js +1 -1
  10. package/tests/unit/mockOnUnmounted.js +2 -2
  11. package/tests/unit/use/cancellableIntent.spec.js +150 -0
  12. package/tests/unit/use/listCalculated.spec.js +6 -8
  13. package/tests/unit/use/listFilter.spec.js +21 -17
  14. package/tests/unit/use/listInstance.spec.js +53 -59
  15. package/tests/unit/use/listRelated.spec.js +7 -8
  16. package/tests/unit/use/listSort.spec.js +29 -19
  17. package/tests/unit/use/listSubscription.spec.js +73 -51
  18. package/tests/unit/use/objectInstance.spec.js +141 -95
  19. package/tests/unit/use/objectSubscription.spec.js +69 -56
  20. package/tests/unit/use/watches.spec.js +17 -17
  21. package/tests/unit/utils/assignReactiveObject.spec.js +1 -1
  22. package/tests/unit/utils/classes.spec.js +136 -0
  23. package/use/combineClasses.js +22 -0
  24. package/use/index.js +17 -16
  25. package/utils/assignReactiveObject.js +56 -41
  26. package/utils/classes.js +107 -0
  27. package/utils/debugMessage.js +23 -13
  28. package/utils/flattenPaths.js +7 -2
  29. package/utils/index.js +2 -0
  30. package/utils/keyDiff.js +27 -19
  31. package/utils/lifecycleDebug.js +10 -1
  32. package/utils/transformWalk.js +7 -3
  33. package/vitest.config.js +11 -0
  34. package/.lintstagedrc +0 -14
  35. package/babel.config.js +0 -15
  36. package/jest.config.mjs +0 -27
  37. package/tests/unit/.eslintrc.js +0 -10
  38. /package/{.prettierrc.js → .prettierrc.cjs} +0 -0
@@ -5,7 +5,7 @@ import { inspect } from "util";
5
5
  import { nextTick, reactive, ref } from "vue";
6
6
 
7
7
  afterAll(() => {
8
- jest.restoreAllMocks();
8
+ vi.restoreAllMocks();
9
9
  });
10
10
 
11
11
  describe("use/objectInstance.js", function () {
@@ -17,7 +17,7 @@ describe("use/objectInstance.js", function () {
17
17
  useObjectInstances = imported.useObjectInstances;
18
18
  });
19
19
  afterEach(function () {
20
- jest.resetAllMocks();
20
+ vi.resetAllMocks();
21
21
  });
22
22
  const crudRetrieveResolved = {
23
23
  id: 1,
@@ -99,11 +99,13 @@ describe("use/objectInstance.js", function () {
99
99
  const id = ref(1);
100
100
  const retrieveArgs = reactive({ fields });
101
101
  const objectInstance = useObjectInstance({
102
- crudArgs: { stream: "test_stream" },
103
- id,
104
- retrieveArgs,
102
+ props: {
103
+ crudArgs: { stream: "test_stream" },
104
+ id,
105
+ retrieveArgs,
106
+ },
105
107
  });
106
- objectInstance.state.crud.retrieve = jest.fn();
108
+ objectInstance.state.crud.retrieve = vi.fn();
107
109
  let crudRetrieveResolve;
108
110
  const crudRetrievePromise = new Promise((resolve) => {
109
111
  crudRetrieveResolve = resolve;
@@ -139,11 +141,13 @@ describe("use/objectInstance.js", function () {
139
141
  const id = ref(1);
140
142
  const retrieveArgs = reactive({ fields });
141
143
  const objectInstance = useObjectInstance({
142
- crudArgs: { stream: "test_stream" },
143
- id,
144
- retrieveArgs,
144
+ props: {
145
+ crudArgs: { stream: "test_stream" },
146
+ id,
147
+ retrieveArgs,
148
+ },
145
149
  });
146
- objectInstance.state.crud.retrieve = jest.fn();
150
+ objectInstance.state.crud.retrieve = vi.fn();
147
151
  let crudRetrieveResolve;
148
152
  const crudRetrievePromise = new Promise((resolve) => {
149
153
  crudRetrieveResolve = resolve;
@@ -177,11 +181,13 @@ describe("use/objectInstance.js", function () {
177
181
  const id = ref(1);
178
182
  const retrieveArgs = reactive({ fields });
179
183
  const objectInstance = useObjectInstance({
180
- crudArgs: { stream: "test_stream" },
181
- id,
182
- retrieveArgs,
184
+ props: {
185
+ crudArgs: { stream: "test_stream" },
186
+ id,
187
+ retrieveArgs,
188
+ },
183
189
  });
184
- objectInstance.state.crud.retrieve = jest.fn();
190
+ objectInstance.state.crud.retrieve = vi.fn();
185
191
  let crudRetrieveReject;
186
192
  const crudRetrievePromise = new Promise((resolve, reject) => {
187
193
  crudRetrieveReject = reject;
@@ -215,13 +221,15 @@ describe("use/objectInstance.js", function () {
215
221
  const id = ref(1);
216
222
  const retrieveArgs = reactive({ fields });
217
223
  const objectInstance = useObjectInstance({
218
- crudArgs: { stream: "test_stream" },
219
- id,
220
- retrieveArgs,
224
+ props: {
225
+ crudArgs: { stream: "test_stream" },
226
+ id,
227
+ retrieveArgs,
228
+ },
221
229
  });
222
- objectInstance.state.crud.create = jest.fn();
230
+ objectInstance.state.crud.create = vi.fn();
223
231
  objectInstance.state.crud.create.mockImplementation(() => new Promise(() => {}));
224
- objectInstance.state.crud.retrieve = jest.fn();
232
+ objectInstance.state.crud.retrieve = vi.fn();
225
233
  objectInstance.state.crud.retrieve.mockImplementation(() => new Promise(() => {}));
226
234
  expectErrorToBeNull(objectInstance.state.error);
227
235
  expect(objectInstance.state.errored).toBe(false);
@@ -244,11 +252,13 @@ describe("use/objectInstance.js", function () {
244
252
  const id = ref(1);
245
253
  const retrieveArgs = reactive({ fields });
246
254
  const objectInstance = useObjectInstance({
247
- crudArgs: { stream: "test_stream" },
248
- id,
249
- retrieveArgs,
255
+ props: {
256
+ crudArgs: { stream: "test_stream" },
257
+ id,
258
+ retrieveArgs,
259
+ },
250
260
  });
251
- objectInstance.state.crud.retrieve = jest.fn();
261
+ objectInstance.state.crud.retrieve = vi.fn();
252
262
  objectInstance.state.crud.retrieve.mockImplementation(() => new Promise(() => {}));
253
263
  expectErrorToBeNull(objectInstance.state.error);
254
264
  expect(objectInstance.state.errored).toBe(false);
@@ -275,11 +285,13 @@ describe("use/objectInstance.js", function () {
275
285
  const id = ref(1);
276
286
  const retrieveArgs = reactive({ fields });
277
287
  const objectInstance = useObjectInstance({
278
- crudArgs: { stream: "test_stream" },
279
- id,
280
- retrieveArgs,
288
+ props: {
289
+ crudArgs: { stream: "test_stream" },
290
+ id,
291
+ retrieveArgs,
292
+ },
281
293
  });
282
- objectInstance.state.crud.create = jest.fn();
294
+ objectInstance.state.crud.create = vi.fn();
283
295
  let crudCreateResolve;
284
296
  const crudCreatePromise = new Promise((resolve) => {
285
297
  crudCreateResolve = resolve;
@@ -323,11 +335,13 @@ describe("use/objectInstance.js", function () {
323
335
  const id = ref(undefined);
324
336
  const retrieveArgs = reactive({ fields });
325
337
  const objectInstance = useObjectInstance({
326
- crudArgs: { stream: "test_stream" },
327
- id,
328
- retrieveArgs,
338
+ props: {
339
+ crudArgs: { stream: "test_stream" },
340
+ id,
341
+ retrieveArgs,
342
+ },
329
343
  });
330
- objectInstance.state.crud.create = jest.fn();
344
+ objectInstance.state.crud.create = vi.fn();
331
345
  let crudCreateResolve;
332
346
  const crudCreatePromise = new Promise((resolve) => {
333
347
  crudCreateResolve = resolve;
@@ -369,11 +383,13 @@ describe("use/objectInstance.js", function () {
369
383
  const id = ref(undefined);
370
384
  const retrieveArgs = reactive({ fields });
371
385
  const objectInstance = useObjectInstance({
372
- crudArgs: { stream: "test_stream" },
373
- id,
374
- retrieveArgs,
386
+ props: {
387
+ crudArgs: { stream: "test_stream" },
388
+ id,
389
+ retrieveArgs,
390
+ },
375
391
  });
376
- objectInstance.state.crud.create = jest.fn();
392
+ objectInstance.state.crud.create = vi.fn();
377
393
  let crudCreateReject;
378
394
  const crudCreatePromise = new Promise((resolve, reject) => {
379
395
  crudCreateReject = reject;
@@ -416,11 +432,13 @@ describe("use/objectInstance.js", function () {
416
432
  const id = ref(1);
417
433
  const retrieveArgs = reactive({ fields });
418
434
  const objectInstance = useObjectInstance({
419
- crudArgs: { stream: "test_stream" },
420
- id,
421
- retrieveArgs,
435
+ props: {
436
+ crudArgs: { stream: "test_stream" },
437
+ id,
438
+ retrieveArgs,
439
+ },
422
440
  });
423
- objectInstance.state.crud.create = jest.fn();
441
+ objectInstance.state.crud.create = vi.fn();
424
442
  const crudCreatePromise = new Promise(() => {});
425
443
  objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
426
444
  expectErrorToBeNull(objectInstance.state.error);
@@ -460,15 +478,17 @@ describe("use/objectInstance.js", function () {
460
478
  const id = ref(1);
461
479
  const retrieveArgs = reactive({ fields });
462
480
  const objectInstance = useObjectInstance({
463
- crudArgs: { stream: "test_stream" },
464
- id,
465
- retrieveArgs,
481
+ props: {
482
+ crudArgs: { stream: "test_stream" },
483
+ id,
484
+ retrieveArgs,
485
+ },
466
486
  });
467
487
  let crudUpdateResolve;
468
488
  const crudUpdatePromise = new Promise((resolve) => {
469
489
  crudUpdateResolve = resolve;
470
490
  });
471
- objectInstance.state.crud.update = jest.fn();
491
+ objectInstance.state.crud.update = vi.fn();
472
492
  objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
473
493
  expectErrorToBeNull(objectInstance.state.error);
474
494
  expect(objectInstance.state.errored).toBe(false);
@@ -509,15 +529,17 @@ describe("use/objectInstance.js", function () {
509
529
  const id = ref(1);
510
530
  const retrieveArgs = reactive({ fields });
511
531
  const objectInstance = useObjectInstance({
512
- crudArgs: { stream: "test_stream" },
513
- id,
514
- retrieveArgs,
532
+ props: {
533
+ crudArgs: { stream: "test_stream" },
534
+ id,
535
+ retrieveArgs,
536
+ },
515
537
  });
516
538
  let crudUpdateResolve;
517
539
  const crudUpdatePromise = new Promise((resolve) => {
518
540
  crudUpdateResolve = resolve;
519
541
  });
520
- objectInstance.state.crud.update = jest.fn();
542
+ objectInstance.state.crud.update = vi.fn();
521
543
  objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
522
544
  expectErrorToBeNull(objectInstance.state.error);
523
545
  expect(objectInstance.state.errored).toBe(false);
@@ -556,15 +578,17 @@ describe("use/objectInstance.js", function () {
556
578
  const id = ref(1);
557
579
  const retrieveArgs = reactive({ fields });
558
580
  const objectInstance = useObjectInstance({
559
- crudArgs: { stream: "test_stream" },
560
- id,
561
- retrieveArgs,
581
+ props: {
582
+ crudArgs: { stream: "test_stream" },
583
+ id,
584
+ retrieveArgs,
585
+ },
562
586
  });
563
587
  let crudUpdateReject;
564
588
  const crudUpdatePromise = new Promise((resolve, reject) => {
565
589
  crudUpdateReject = reject;
566
590
  });
567
- objectInstance.state.crud.update = jest.fn();
591
+ objectInstance.state.crud.update = vi.fn();
568
592
  objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
569
593
  expectErrorToBeNull(objectInstance.state.error);
570
594
  expect(objectInstance.state.errored).toBe(false);
@@ -603,12 +627,14 @@ describe("use/objectInstance.js", function () {
603
627
  const id = ref(1);
604
628
  const retrieveArgs = reactive({ fields });
605
629
  const objectInstance = useObjectInstance({
606
- crudArgs: { stream: "test_stream" },
607
- id,
608
- retrieveArgs,
630
+ props: {
631
+ crudArgs: { stream: "test_stream" },
632
+ id,
633
+ retrieveArgs,
634
+ },
609
635
  });
610
636
  const crudUpdatePromise = new Promise(() => {});
611
- objectInstance.state.crud.update = jest.fn();
637
+ objectInstance.state.crud.update = vi.fn();
612
638
  objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
613
639
  expectErrorToBeNull(objectInstance.state.error);
614
640
  expect(objectInstance.state.errored).toBe(false);
@@ -650,15 +676,17 @@ describe("use/objectInstance.js", function () {
650
676
  const id = ref(1);
651
677
  const retrieveArgs = reactive({ fields });
652
678
  const objectInstance = useObjectInstance({
653
- crudArgs: { stream: "test_stream" },
654
- id,
655
- retrieveArgs,
679
+ props: {
680
+ crudArgs: { stream: "test_stream" },
681
+ id,
682
+ retrieveArgs,
683
+ },
656
684
  });
657
685
  let crudPatchResolve;
658
686
  const crudPatchPromise = new Promise((resolve) => {
659
687
  crudPatchResolve = resolve;
660
688
  });
661
- objectInstance.state.crud.patch = jest.fn();
689
+ objectInstance.state.crud.patch = vi.fn();
662
690
  objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
663
691
  expectErrorToBeNull(objectInstance.state.error);
664
692
  expect(objectInstance.state.errored).toBe(false);
@@ -700,15 +728,17 @@ describe("use/objectInstance.js", function () {
700
728
  const id = ref(1);
701
729
  const retrieveArgs = reactive({ fields });
702
730
  const objectInstance = useObjectInstance({
703
- crudArgs: { stream: "test_stream" },
704
- id,
705
- retrieveArgs,
731
+ props: {
732
+ crudArgs: { stream: "test_stream" },
733
+ id,
734
+ retrieveArgs,
735
+ },
706
736
  });
707
737
  let crudPatchReject;
708
738
  const crudPatchPromise = new Promise((resolve, reject) => {
709
739
  crudPatchReject = reject;
710
740
  });
711
- objectInstance.state.crud.patch = jest.fn();
741
+ objectInstance.state.crud.patch = vi.fn();
712
742
  objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
713
743
  expectErrorToBeNull(objectInstance.state.error);
714
744
  expect(objectInstance.state.errored).toBe(false);
@@ -748,12 +778,14 @@ describe("use/objectInstance.js", function () {
748
778
  const id = ref(1);
749
779
  const retrieveArgs = reactive({ fields });
750
780
  const objectInstance = useObjectInstance({
751
- crudArgs: { stream: "test_stream" },
752
- id,
753
- retrieveArgs,
781
+ props: {
782
+ crudArgs: { stream: "test_stream" },
783
+ id,
784
+ retrieveArgs,
785
+ },
754
786
  });
755
787
  const crudPatchPromise = new Promise(() => {});
756
- objectInstance.state.crud.patch = jest.fn();
788
+ objectInstance.state.crud.patch = vi.fn();
757
789
  objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
758
790
  objectInstance.patch({
759
791
  partialObject: {
@@ -788,16 +820,18 @@ describe("use/objectInstance.js", function () {
788
820
  const id = ref(1);
789
821
  const retrieveArgs = reactive({ fields });
790
822
  const objectInstance = useObjectInstance({
791
- crudArgs: { stream: "test_stream" },
792
- id,
793
- retrieveArgs,
823
+ props: {
824
+ crudArgs: { stream: "test_stream" },
825
+ id,
826
+ retrieveArgs,
827
+ },
794
828
  });
795
829
  assignReactiveObject(objectInstance.state.object, crudRetrieveResolved);
796
830
  let deleteResolve;
797
831
  const deletePromise = new Promise((resolve) => {
798
832
  deleteResolve = resolve;
799
833
  });
800
- objectInstance.state.crud.delete = jest.fn();
834
+ objectInstance.state.crud.delete = vi.fn();
801
835
  objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
802
836
 
803
837
  expectErrorToBeNull(objectInstance.state.error);
@@ -836,16 +870,18 @@ describe("use/objectInstance.js", function () {
836
870
  const id = ref(1);
837
871
  const retrieveArgs = reactive({ fields });
838
872
  const objectInstance = useObjectInstance({
839
- crudArgs: { stream: "test_stream" },
840
- id,
841
- retrieveArgs,
873
+ props: {
874
+ crudArgs: { stream: "test_stream" },
875
+ id,
876
+ retrieveArgs,
877
+ },
842
878
  });
843
879
  assignReactiveObject(objectInstance.state.object, crudRetrieveResolved);
844
880
  let deleteReject;
845
881
  const deletePromise = new Promise((resolve, reject) => {
846
882
  deleteReject = reject;
847
883
  });
848
- objectInstance.state.crud.delete = jest.fn();
884
+ objectInstance.state.crud.delete = vi.fn();
849
885
  objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
850
886
 
851
887
  expectErrorToBeNull(objectInstance.state.error);
@@ -884,12 +920,14 @@ describe("use/objectInstance.js", function () {
884
920
  const id = ref(1);
885
921
  const retrieveArgs = reactive({ fields });
886
922
  const objectInstance = useObjectInstance({
887
- crudArgs: { stream: "test_stream" },
888
- id,
889
- retrieveArgs,
923
+ props: {
924
+ crudArgs: { stream: "test_stream" },
925
+ id,
926
+ retrieveArgs,
927
+ },
890
928
  });
891
929
  const deletePromise = new Promise(() => {});
892
- objectInstance.state.crud.delete = jest.fn();
930
+ objectInstance.state.crud.delete = vi.fn();
893
931
  objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
894
932
  objectInstance.delete(1);
895
933
  await expect(() => objectInstance.delete()).rejects.toThrow(ObjectError);
@@ -902,28 +940,16 @@ describe("use/objectInstance.js", function () {
902
940
  });
903
941
  it("useObjectSubscriptions", async function () {
904
942
  const objectInstanceA = useObjectInstance({
905
- crudArgs: { stream: "test_streamA" },
906
- id: 1,
907
- retrieveArgs: {
908
- fields,
909
- },
910
- });
911
- const objectInstanceB = useObjectInstance({
912
- crudArgs: { stream: "test_streamB" },
913
- id: 2,
914
- retrieveArgs: {
915
- fields,
916
- },
917
- });
918
- const objInstances = useObjectInstances({
919
- A: {
943
+ props: {
920
944
  crudArgs: { stream: "test_streamA" },
921
945
  id: 1,
922
946
  retrieveArgs: {
923
947
  fields,
924
948
  },
925
949
  },
926
- B: {
950
+ });
951
+ const objectInstanceB = useObjectInstance({
952
+ props: {
927
953
  crudArgs: { stream: "test_streamB" },
928
954
  id: 2,
929
955
  retrieveArgs: {
@@ -931,6 +957,26 @@ describe("use/objectInstance.js", function () {
931
957
  },
932
958
  },
933
959
  });
960
+ const objInstances = useObjectInstances({
961
+ A: {
962
+ props: {
963
+ crudArgs: { stream: "test_streamA" },
964
+ id: 1,
965
+ retrieveArgs: {
966
+ fields,
967
+ },
968
+ },
969
+ },
970
+ B: {
971
+ props: {
972
+ crudArgs: { stream: "test_streamB" },
973
+ id: 2,
974
+ retrieveArgs: {
975
+ fields,
976
+ },
977
+ },
978
+ },
979
+ });
934
980
  expect(inspect(objInstances.A)).toEqual(inspect(objectInstanceA));
935
981
  expect(inspect(objInstances.B)).toEqual(inspect(objectInstanceB));
936
982
  });