rest-client-vue 1.0.0-a2 → 1.0.0-a4

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.
@@ -10,7 +10,7 @@ var Q = (f, s, R) => (Te(f, s, "read from private field"), R ? R.call(f) : s.get
10
10
  s instanceof WeakSet ? s.add(f) : s.set(f, R);
11
11
  };
12
12
  import a from "lodash";
13
- import { v4 as X } from "uuid";
13
+ import { v4 as H } from "uuid";
14
14
  import { ref as I, toRef as te, computed as S, watch as C, nextTick as Le } from "vue";
15
15
  import P from "axios";
16
16
  import me from "jsog";
@@ -28,26 +28,26 @@ class ke extends Error {
28
28
  this.context = $, this.innerError = e;
29
29
  }
30
30
  }
31
- var O;
31
+ var _;
32
32
  class Ie {
33
33
  constructor() {
34
- Se(this, O, {});
34
+ Se(this, _, {});
35
35
  }
36
36
  clearAllStores() {
37
- for (const s in Q(this, O))
38
- Q(this, O)[s].clear();
37
+ for (const s in Q(this, _))
38
+ Q(this, _)[s].clear();
39
39
  }
40
40
  destroyStore(s) {
41
- Q(this, O)[s] && (Q(this, O)[s].$dispose(), delete Q(this, O)[s]);
41
+ Q(this, _)[s] && (Q(this, _)[s].$dispose(), delete Q(this, _)[s]);
42
42
  }
43
43
  getStore(s) {
44
- return Q(this, O)[s];
44
+ return Q(this, _)[s];
45
45
  }
46
46
  registerStore(s, R) {
47
- Q(this, O)[s] = R;
47
+ Q(this, _)[s] = R;
48
48
  }
49
49
  }
50
- O = new WeakMap();
50
+ _ = new WeakMap();
51
51
  function v(f, s) {
52
52
  return a.get(f, (s == null ? void 0 : s.idProperty) || "_id");
53
53
  }
@@ -270,7 +270,7 @@ const De = {
270
270
  */
271
271
  async loadResources(e = {}) {
272
272
  this.resetRetainingTransientData();
273
- const r = X();
273
+ const r = H();
274
274
  this._loadId = r, await this._loadResources(0, r, e);
275
275
  },
276
276
  /**
@@ -295,20 +295,20 @@ const De = {
295
295
  }
296
296
  const u = this.fixedQueryParams, c = a.cloneDeep(u), d = l ? (q = this.filter) != null && q.resourceIds && !this.order ? null : t.firstPageSize || ((A = s.loading) == null ? void 0 : A.firstPageSize) || t.pageSize || ((z = s.loading) == null ? void 0 : z.pageSize) || null : t.pageSize || ((B = s.loading) == null ? void 0 : B.pageSize) || null, y = d != null || s.limit != null ? a.min(a.filter([d, s.limit], (g) => g != null)) : void 0;
297
297
  y != null ? (c.offset = e, c.limit = y) : e != 0 && (c.offset = e);
298
- const U = a.map(
298
+ const E = a.map(
299
299
  c,
300
300
  (g, m) => g != null ? `${encodeURIComponent(m)}=${encodeURIComponent(g)}` : null
301
- ).filter((g) => g != null).join("&"), T = a.isEmpty(U) ? s.restCollectionUrl : `${s.restCollectionUrl}?${U}`;
301
+ ).filter((g) => g != null).join("&"), T = a.isEmpty(E) ? s.restCollectionUrl : `${s.restCollectionUrl}?${E}`;
302
302
  try {
303
303
  const g = await P.get(T), m = this.fixedQueryParams;
304
304
  if (r != this._loadId || e != this._loadOffset || !a.isEqual(u, m))
305
305
  console.log(`Discarding resources fetched by obsolete query from ${s.restCollectionUrl}.`);
306
306
  else {
307
- const E = me.decode(a.get(g, "data.data", [])), L = (l ? 0 : this.resources.length) + E.length, D = y == null || E.length < y || s.limit && L >= s.limit;
307
+ const U = me.decode(a.get(g, "data.data", [])), L = (l ? 0 : this.resources.length) + U.length, D = y == null || U.length < y || s.limit && L >= s.limit;
308
308
  console.log(
309
- `Loaded ${E.length}${l ? "" : " more"} resources from ${s.restCollectionUrl}`
309
+ `Loaded ${U.length}${l ? "" : " more"} resources from ${s.restCollectionUrl}`
310
310
  ), l && (this.resources = []);
311
- const W = [...this.resources, ...E.map((H) => Object.freeze(H))];
311
+ const W = [...this.resources, ...U.map((X) => Object.freeze(X))];
312
312
  this.resources = $e(W, this), this.status = D ? "Loaded" : "LoadingMore", D || this._loadResources(this.resources.length, r, t);
313
313
  }
314
314
  } catch (g) {
@@ -491,8 +491,8 @@ const De = {
491
491
  if (r.status == 200) {
492
492
  const t = r.data || [], l = [];
493
493
  for (const [u, c] of t.entries()) {
494
- const d = v(e[u], this) == null, y = v(c, this), U = y ? await this.refreshResource(y) : null;
495
- d && this.recordInsertion(U || c), l.push(U || Object.freeze(c));
494
+ const d = v(e[u], this) == null, y = v(c, this), E = y ? await this.refreshResource(y) : null;
495
+ d && this.recordInsertion(E || c), l.push(E || Object.freeze(c));
496
496
  }
497
497
  return l;
498
498
  }
@@ -681,49 +681,50 @@ const De = {
681
681
  return e.$id = R.$id, e;
682
682
  })();
683
683
  }, ie = new Ie(), Be = (f = {}) => {
684
- var oe, ce, ue, de;
684
+ var ne, ce, ue, de;
685
+ console.log("hereaaaaaaa"), console.log(f);
685
686
  const {
686
687
  collectionId: s,
687
688
  draftBatchId: R,
688
689
  enabled: $,
689
690
  resourceType: e,
690
691
  options: r
691
- } = f, t = I(void 0), l = I(s), u = I(R), c = I($ ?? !0), d = I([te(e)]), y = I(r), U = S(() => u.value), T = I(c.value), b = I(X()), q = I((ce = (oe = y.value) == null ? void 0 : oe.filter) == null ? void 0 : ce.resourceIds), A = I((de = (ue = y.value) == null ? void 0 : ue.filter) == null ? void 0 : de.query), z = S(
692
+ } = f, t = I(void 0), l = I(s), u = I(R), c = I($ ?? !0), d = I([te(e)]), y = I(r), E = S(() => u.value), T = I(c.value), b = I(H()), q = I((ce = (ne = y.value) == null ? void 0 : ne.filter) == null ? void 0 : ce.resourceIds), A = I((de = (ue = y.value) == null ? void 0 : ue.filter) == null ? void 0 : de.query), z = S(
692
693
  () => u.value == null && l.value != null && ie.getStore(l.value) != null
693
694
  ), B = I(z.value), g = S(() => L("status", "Uninitialized"));
694
695
  function m(i) {
695
696
  if (t.value)
696
697
  return i(t.value);
697
698
  }
698
- async function E(i) {
699
+ async function U(i) {
699
700
  if (t.value)
700
701
  return await i(t.value);
701
702
  }
702
- function L(i, o) {
703
+ function L(i, n) {
703
704
  if (t.value)
704
705
  return t.value[i];
705
- if (o !== void 0)
706
- return o;
706
+ if (n !== void 0)
707
+ return n;
707
708
  throw "Attempted to use a REST collection store that has not been created, with no default value.";
708
709
  }
709
710
  const D = (i = {}) => {
710
711
  var fe, ve, ge, Re;
711
712
  const {
712
- collectionId: o,
713
+ collectionId: n,
713
714
  draftBatchId: w,
714
- enabled: _,
715
+ enabled: O,
715
716
  resourceType: se,
716
717
  options: he
717
718
  } = i;
718
- l.value = o, u.value = w, c.value = _ ?? !0, d.value = [te(se)], he != null && (y.value = he, q.value = (ve = (fe = y.value) == null ? void 0 : fe.filter) == null ? void 0 : ve.resourceIds, A.value = (Re = (ge = y.value) == null ? void 0 : ge.filter) == null ? void 0 : Re.query), b.value = X(), W(c.value);
719
+ l.value = n, u.value = w, c.value = O ?? !0, d.value = [te(se)], he != null && (y.value = he, q.value = (ve = (fe = y.value) == null ? void 0 : fe.filter) == null ? void 0 : ve.resourceIds, A.value = (Re = (ge = y.value) == null ? void 0 : ge.filter) == null ? void 0 : Re.query), b.value = H(), W(c.value);
719
720
  }, W = async (i) => {
720
721
  i != T.value && (T.value = i, i && (K(), N()));
721
- }, H = async (i) => {
722
- q.value = i, await E(async (o) => await o.setFilterResourceIds(q.value || null));
722
+ }, X = async (i) => {
723
+ q.value = i, await U(async (n) => await n.setFilterResourceIds(q.value || null));
723
724
  }, J = async (i) => {
724
725
  if (A.value = i, g.value != "Uninitialized") {
725
- const o = i, w = S(() => a.isFunction(o) ? p.value ? o(p.value) : null : o);
726
- await E((_) => _.setQuery(w.value || null));
726
+ const n = i, w = S(() => a.isFunction(n) ? p.value ? n(p.value) : null : n);
727
+ await U((O) => O.setQuery(w.value || null));
727
728
  }
728
729
  }, K = () => {
729
730
  y.value = a.merge({}, y.value || {}, {
@@ -732,12 +733,12 @@ const De = {
732
733
  }, p = S(
733
734
  () => d.value[0].value || void 0
734
735
  ), k = function(i) {
735
- const o = a.get(i, "filter.query"), w = a.get(i, "referencePathsToExpand"), _ = a.isFunction(o) ? o(p.value) : o, se = p.value ? a.isFunction(w) ? w(p.value) : w || [] : [];
736
+ const n = a.get(i, "filter.query"), w = a.get(i, "referencePathsToExpand"), O = a.isFunction(n) ? n(p.value) : n, se = p.value ? a.isFunction(w) ? w(p.value) : w || [] : [];
736
737
  return {
737
738
  ...a.cloneDeep(i || {}),
738
739
  filter: {
739
740
  ...a.cloneDeep((i == null ? void 0 : i.filter) || {}),
740
- query: _
741
+ query: O
741
742
  },
742
743
  referencePathsToExpand: se
743
744
  };
@@ -747,8 +748,8 @@ const De = {
747
748
  if (x.value.restCollectionUrl !== void 0)
748
749
  return x.value.restCollectionUrl;
749
750
  if (!B.value)
750
- return !p.value || !p.value.collectionName ? null : U.value ? `${ee.config.apiBaseUrl}/draft-batches/${U.value}/${p.value.collectionName}` : `${ee.config.apiBaseUrl}/${p.value.collectionName}`;
751
- }), n = S(() => {
751
+ return !p.value || !p.value.collectionName ? null : E.value ? `${ee.config.apiBaseUrl}/draft-batches/${E.value}/${p.value.collectionName}` : `${ee.config.apiBaseUrl}/${p.value.collectionName}`;
752
+ }), o = S(() => {
752
753
  var i;
753
754
  if (p.value)
754
755
  return a.mergeWith(
@@ -758,52 +759,52 @@ const De = {
758
759
  idProperty: (i = p.value) == null ? void 0 : i.idProperty,
759
760
  restCollectionUrl: M.value || ""
760
761
  },
761
- (o, w) => {
762
- if (a.isArray(w) && w.length == 0 && (o == null || a.isArray(o)))
762
+ (n, w) => {
763
+ if (a.isArray(w) && w.length == 0 && (n == null || a.isArray(n)))
763
764
  return w;
764
765
  }
765
766
  );
766
767
  }), h = I(0), F = S(
767
768
  () => {
768
769
  var i;
769
- return h.value, l.value || p.value && ((i = p.value) == null ? void 0 : i.collectionName) && (U.value ? `draftBatches/${U.value}/${p.value.collectionName}/${b.value}` : `${p.value.collectionName}/${b.value}`) || null;
770
+ return h.value, l.value || p.value && ((i = p.value) == null ? void 0 : i.collectionName) && (E.value ? `draftBatches/${E.value}/${p.value.collectionName}/${b.value}` : `${p.value.collectionName}/${b.value}`) || null;
770
771
  }
771
772
  ), N = () => {
772
773
  if (T.value) {
773
774
  let i = !1;
774
- return p.value && F.value && (t.value = ie.getStore(F.value), t.value ? i = !1 : n.value && (B.value = !1, t.value = Pe(F.value, n.value)(), i = !0)), i;
775
+ return p.value && F.value && (t.value = ie.getStore(F.value), t.value ? i = !1 : o.value && (B.value = !1, t.value = Pe(F.value, o.value)(), i = !0)), i;
775
776
  } else
776
777
  return !1;
777
778
  }, G = () => {
778
779
  F.value && l.value == F.value ? (t.value = void 0, N()) : (t.value = void 0, h.value = h.value + 1, N());
779
780
  };
780
- C(U, (i, o) => {
781
- a.isEqual(i, o) || G();
782
- }), C(T, (i, o) => {
783
- i != o && (i ? N() : t.value = void 0);
784
- }), C(p, (i, o) => {
785
- i && !o ? N() : !i && o || a.isEqual(i, o) || G();
786
- }), C(n, (i, o) => {
787
- a.isEqual(i, o) || G();
781
+ C(E, (i, n) => {
782
+ a.isEqual(i, n) || G();
783
+ }), C(T, (i, n) => {
784
+ i != n && (i ? N() : t.value = void 0);
785
+ }), C(p, (i, n) => {
786
+ i && !n ? N() : !i && n || a.isEqual(i, n) || G();
787
+ }), C(o, (i, n) => {
788
+ a.isEqual(i, n) || G();
788
789
  }), C(z, () => {
789
790
  z.value || (B.value = !1);
790
- }), C(F, () => N()), C(M, (i, o) => {
791
- a.isEqual(i, o) || G();
791
+ }), C(F, () => N()), C(M, (i, n) => {
792
+ a.isEqual(i, n) || G();
792
793
  });
793
- const j = [], Ee = function(i) {
794
+ const j = [], Ue = function(i) {
794
795
  g.value != "Uninitialized" ? Le(i) : j.push(i);
795
796
  };
796
- return C(g, (i, o) => {
797
- if (i != "Uninitialized" && o == "Uninitialized") {
797
+ return C(g, (i, n) => {
798
+ if (i != "Uninitialized" && n == "Uninitialized") {
798
799
  const w = a.clone(j);
799
800
  j.splice(0, j.length);
800
- for (const _ of w)
801
- _();
801
+ for (const O of w)
802
+ O();
802
803
  }
803
804
  }), N(), {
804
805
  // Configuration
805
806
  collectionId: F,
806
- draftBatchId: U,
807
+ draftBatchId: E,
807
808
  resourceType: p,
808
809
  // Status
809
810
  enabled: T,
@@ -812,7 +813,7 @@ const De = {
812
813
  listNavigators: S(() => L("listNavigators", !1)),
813
814
  // Resources loaded from the REST API
814
815
  invalidResources: S(() => L("invalidResources", [])),
815
- resources: S(() => g.value != "Uninitialized" ? (E((i) => i.ensureCollectionLoaded()), L("resources", [])) : []),
816
+ resources: S(() => g.value != "Uninitialized" ? (U((i) => i.ensureCollectionLoaded()), L("resources", [])) : []),
816
817
  // Transient data
817
818
  transientData: S(() => L("transientData", [])),
818
819
  // Selection and detail selection
@@ -822,56 +823,56 @@ const De = {
822
823
  // Methods: Configuration
823
824
  reconfigureCollection: D,
824
825
  setEditingDetailSelection: (i) => m(
825
- (o) => o.setEditingDetailSelection(i)
826
+ (n) => n.setEditingDetailSelection(i)
826
827
  ),
827
828
  setEnabled: W,
828
- setFilterResourceIds: H,
829
+ setFilterResourceIds: X,
829
830
  setQuery: J,
830
831
  // Methods: Status
831
832
  ensureStore: N,
832
833
  // TODO Rename
833
- setBatchSaveAttempted: (i) => m((o) => o.setBatchSaveAttempted(i)),
834
+ setBatchSaveAttempted: (i) => m((n) => n.setBatchSaveAttempted(i)),
834
835
  // Local collection management
835
836
  clear: () => m((i) => i.clear()),
836
- ensureCollectionLoaded: async () => await E(async (i) => i.ensureCollectionLoaded()),
837
- loadResources: async () => await E(async (i) => await i.loadResources()),
837
+ ensureCollectionLoaded: async () => await U(async (i) => i.ensureCollectionLoaded()),
838
+ loadResources: async () => await U(async (i) => await i.loadResources()),
838
839
  // Methods: Recording changes to the collection
839
- addResource: (i) => m((o) => o.addResource(i)),
840
- checkForDeletedResource: async (i) => await E(async (o) => await o.checkForDeletedResource(i)) == !0,
841
- recordDeletion: (i) => m((o) => o.recordDeletion(i)),
842
- recordInsertion: (i, { insertAtBeginning: o = !1, transientData: w = void 0 } = {}) => m((_) => _.recordInsertion(i, { insertAtBeginning: o, transientData: w })),
843
- recordUpdate: (i) => m((o) => o.recordUpdate(i)),
844
- refreshResource: async (i) => await E(
845
- async (o) => await o.refreshResource(i)
840
+ addResource: (i) => m((n) => n.addResource(i)),
841
+ checkForDeletedResource: async (i) => await U(async (n) => await n.checkForDeletedResource(i)) == !0,
842
+ recordDeletion: (i) => m((n) => n.recordDeletion(i)),
843
+ recordInsertion: (i, { insertAtBeginning: n = !1, transientData: w = void 0 } = {}) => m((O) => O.recordInsertion(i, { insertAtBeginning: n, transientData: w })),
844
+ recordUpdate: (i) => m((n) => n.recordUpdate(i)),
845
+ refreshResource: async (i) => await U(
846
+ async (n) => await n.refreshResource(i)
846
847
  ),
847
848
  // Methods: Modifying the collection
848
- deleteResource: async (i) => await E(
849
- async (o) => await o.deleteResource(i)
849
+ deleteResource: async (i) => await U(
850
+ async (n) => await n.deleteResource(i)
850
851
  ),
851
- saveResource: async (i) => await E(async (o) => await o.saveResource(i)),
852
- saveResources: async (i) => await E(async (o) => await o.saveResources(i)),
852
+ saveResource: async (i) => await U(async (n) => await n.saveResource(i)),
853
+ saveResources: async (i) => await U(async (n) => await n.saveResources(i)),
853
854
  // Methods: Transient data
854
855
  clearTransientData: () => m((i) => i.clearTransientData()),
855
- setInvalidResourceIds: (i) => m((o) => o.setInvalidResourceIds(i)),
856
+ setInvalidResourceIds: (i) => m((n) => n.setInvalidResourceIds(i)),
856
857
  setTransientDataForResources: (i) => m(
857
- (o) => o.setTransientDataForResources(i)
858
+ (n) => n.setTransientDataForResources(i)
858
859
  ),
859
860
  // Methods: Selection and detail selection
860
861
  clearSelection: () => m((i) => i.clearSelection()),
861
- deselectResources: (i) => m((o) => o.deselectResources(i)),
862
- selectResources: (i, o) => m(
863
- (w) => w.selectResources(i, o)
862
+ deselectResources: (i) => m((n) => n.deselectResources(i)),
863
+ selectResources: (i, n) => m(
864
+ (w) => w.selectResources(i, n)
864
865
  ),
865
866
  // Methods: Managing the detail view
866
867
  hideDetail: () => m((i) => i.hideDetail()),
867
868
  // Methods: Editors
868
- deregisterEditor: (i) => m((o) => o.deregisterEditor(i)),
869
- registerEditor: (i) => m((o) => o.registerEditor(i)),
869
+ deregisterEditor: (i) => m((n) => n.deregisterEditor(i)),
870
+ registerEditor: (i) => m((n) => n.registerEditor(i)),
870
871
  // Methods: List navigators
871
- deregisterListNavigator: (i) => m((o) => o.deregisterListNavigator(i)),
872
- registerListNavigator: (i) => m((o) => o.registerListNavigator(i)),
872
+ deregisterListNavigator: (i) => m((n) => n.deregisterListNavigator(i)),
873
+ registerListNavigator: (i) => m((n) => n.registerListNavigator(i)),
873
874
  // Callbacks
874
- onItemsStoreReady: Ee
875
+ onItemsStoreReady: Ue
875
876
  };
876
877
  }, Qe = () => {
877
878
  ie.clearAllStores();
@@ -879,13 +880,13 @@ const De = {
879
880
  function ae(f, s) {
880
881
  return a.get(f, (s == null ? void 0 : s.idProperty) || "_id");
881
882
  }
882
- const Ue = {
883
+ const Ee = {
883
884
  idProperty: "_id"
884
885
  }, Z = {
885
886
  resource: null,
886
887
  status: "NotLoaded"
887
888
  }, xe = (f, s) => {
888
- s = a.merge({}, Ue, s);
889
+ s = a.merge({}, Ee, s), console.log(f), console.log(s);
889
890
  const R = ye(f, {
890
891
  state: () => ({
891
892
  idProperty: s.idProperty,
@@ -895,7 +896,7 @@ const Ue = {
895
896
  ...Z
896
897
  }),
897
898
  getters: {
898
- currentResourceUrl: (e) => e.resourceUrl || (s.restCollectionUrl && e.resourceId ? `${s.restCollectionUrl}/${e.resourceId}` : null) || s.restCollectionUrl || null,
899
+ currentResourceUrl: (e) => (console.log(e), console.log(s), e.resourceUrl || (s.restCollectionUrl && e.resourceId ? `${s.restCollectionUrl}/${e.resourceId}` : null) || s.restCollectionUrl || null),
899
900
  /** Get the REST query parameters that can be determined from the options. */
900
901
  fixedQueryParams: (e) => {
901
902
  const r = {};
@@ -917,7 +918,7 @@ const Ue = {
917
918
  },
918
919
  async setResourceId(e) {
919
920
  const r = this.currentResourceUrl;
920
- this.resourceId = e, !a.isEqual(this.currentResourceUrl, r) && this.status != "NotLoaded" && await this.loadResource();
921
+ this.resourceId = e, console.log(e), !a.isEqual(this.currentResourceUrl, r) && this.status != "NotLoaded" && (console.log("here"), await this.loadResource());
921
922
  },
922
923
  async setResourceUrl(e) {
923
924
  const r = this.currentResourceUrl;
@@ -950,7 +951,7 @@ const Ue = {
950
951
  */
951
952
  async loadResource() {
952
953
  this.reset();
953
- const e = X();
954
+ const e = H();
954
955
  if (this._loadId = e, this.currentResourceUrl) {
955
956
  this.status = "Loading";
956
957
  const r = this.fixedQueryParams, t = a.cloneDeep(r), l = a.map(
@@ -1109,134 +1110,137 @@ const Ue = {
1109
1110
  return (() => {
1110
1111
  const e = (r, t) => {
1111
1112
  const l = R(r, t);
1112
- return ne.registerStore(l.$id, l), l;
1113
+ return oe.registerStore(l.$id, l), l;
1113
1114
  };
1114
1115
  return e.$id = R.$id, e;
1115
1116
  })();
1116
- }, ne = new Ie(), Me = (f = {}) => {
1117
+ }, oe = new Ie(), Me = (f = {}) => {
1118
+ console.log("HERE!!!!"), console.log(f);
1117
1119
  const {
1118
1120
  resourceClientId: s,
1119
1121
  draftBatchId: R,
1120
1122
  enabled: $,
1121
1123
  resourceType: e,
1122
1124
  options: r
1123
- } = f, t = I(void 0), l = I(s), u = I(R), c = I($ ?? !0), d = I([te(e)]), y = I(r), U = S(() => u.value), T = I(c.value), b = I(X()), q = S(
1124
- () => u.value == null && l.value != null && ne.getStore(l.value) != null
1125
+ } = f, t = I(void 0), l = I(s), u = I(R), c = I($ ?? !0), d = I([te(e)]), y = I(r), E = S(() => u.value), T = I(c.value), b = I(H()), q = S(
1126
+ () => u.value == null && l.value != null && oe.getStore(l.value) != null
1125
1127
  ), A = I(q.value), z = S(() => m("status", "Uninitialized"));
1126
- function B(n) {
1128
+ function B(o) {
1127
1129
  if (t.value)
1128
- return n(t.value);
1130
+ return o(t.value);
1129
1131
  }
1130
- async function g(n) {
1131
- if (t.value)
1132
- return await n(t.value);
1132
+ async function g(o) {
1133
+ if (console.log("dispatchAsync"), console.log("STORE:"), console.log(t.value), t.value)
1134
+ return await o(t.value);
1133
1135
  }
1134
- function m(n, h) {
1136
+ function m(o, h) {
1135
1137
  if (t.value)
1136
- return t.value[n];
1138
+ return t.value[o];
1137
1139
  if (h !== void 0)
1138
1140
  return h;
1139
1141
  throw "Attempted to use a REST resource store that has not been created, with no default value.";
1140
1142
  }
1141
- const E = (n = {}) => {
1143
+ const U = (o = {}) => {
1142
1144
  const {
1143
1145
  resourceClientId: h,
1144
1146
  draftBatchId: F,
1145
1147
  enabled: N,
1146
1148
  resourceType: G,
1147
1149
  options: j
1148
- } = n;
1149
- l.value = h, u.value = F, c.value = N ?? !0, d.value = [te(G)], j != null && (y.value = j), b.value = X(), L(c.value);
1150
- }, L = async (n) => {
1151
- n != T.value && (T.value = n, n && x());
1150
+ } = o;
1151
+ l.value = h, u.value = F, c.value = N ?? !0, d.value = [te(G)], j != null && (y.value = j), b.value = H(), L(c.value);
1152
+ }, L = async (o) => {
1153
+ o != T.value && (T.value = o, o && x());
1152
1154
  }, D = S(
1153
1155
  () => d.value[0].value || void 0
1154
- ), W = function(n) {
1155
- const h = a.get(n, "referencePathsToExpand"), F = D.value ? a.isFunction(h) ? h(D.value) : h || [] : [];
1156
+ ), W = function(o) {
1157
+ const h = a.get(o, "referencePathsToExpand"), F = D.value ? a.isFunction(h) ? h(D.value) : h || [] : [];
1156
1158
  return {
1157
- ...a.cloneDeep(n || {}),
1159
+ ...a.cloneDeep(o || {}),
1158
1160
  referencePathsToExpand: F
1159
1161
  };
1160
- }, H = S(() => W(y.value)), J = S(() => {
1162
+ }, X = S(() => W(y.value)), J = S(() => {
1161
1163
  if (!D.value)
1162
1164
  return null;
1163
1165
  if (!A.value)
1164
- return !D.value || !D.value.collectionName ? null : U.value ? `${ee.config.apiBaseUrl}/draft-batches/${U.value}/${D.value.collectionName}` : `${ee.config.apiBaseUrl}/${D.value.collectionName}`;
1166
+ return !D.value || !D.value.collectionName ? null : E.value ? `${ee.config.apiBaseUrl}/draft-batches/${E.value}/${D.value.collectionName}` : `${ee.config.apiBaseUrl}/${D.value.collectionName}`;
1165
1167
  }), K = S(() => {
1166
1168
  if (D.value && J.value)
1167
1169
  return a.mergeWith(
1168
- a.cloneDeep(Ue),
1169
- H.value,
1170
+ a.cloneDeep(Ee),
1171
+ X.value,
1170
1172
  {
1171
1173
  idProperty: D.value.idProperty,
1172
1174
  restCollectionUrl: J.value
1173
1175
  },
1174
- (n, h) => {
1175
- if (a.isArray(h) && h.length == 0 && (n == null || a.isArray(n)))
1176
+ (o, h) => {
1177
+ if (a.isArray(h) && h.length == 0 && (o == null || a.isArray(o)))
1176
1178
  return h;
1177
1179
  }
1178
1180
  );
1179
1181
  }), p = I(0), k = S(
1180
1182
  () => {
1181
- var n;
1182
- return p.value, l.value || D.value && ((n = D.value) == null ? void 0 : n.collectionName) && (U.value ? `draftBatches/${U.value}/${D.value.collectionName}/${b.value}` : `${D.value.collectionName}/${b.value}`) || null;
1183
+ var o;
1184
+ return p.value, l.value || D.value && ((o = D.value) == null ? void 0 : o.collectionName) && (E.value ? `draftBatches/${E.value}/${D.value.collectionName}/${b.value}` : `${D.value.collectionName}/${b.value}`) || null;
1183
1185
  }
1184
1186
  ), x = () => {
1185
1187
  if (T.value) {
1186
- let n = !1;
1187
- return D.value && k.value && (t.value = ne.getStore(k.value), t.value ? n = !1 : K.value && (A.value = !1, t.value = xe(k.value, K.value)(), n = !0)), n;
1188
+ let o = !1;
1189
+ return D.value && k.value && (t.value = oe.getStore(k.value), t.value ? o = !1 : K.value && (A.value = !1, t.value = xe(k.value, K.value)(), o = !0)), o;
1188
1190
  } else
1189
1191
  return !1;
1190
1192
  }, M = () => {
1191
1193
  k.value && l.value == k.value ? (t.value = void 0, x()) : (t.value = void 0, p.value = p.value + 1, x());
1192
1194
  };
1193
- return C(U, (n, h) => {
1194
- a.isEqual(n, h) || M();
1195
- }), C(T, (n, h) => {
1196
- n != h && (n ? x() : t.value = void 0);
1197
- }), C(D, (n, h) => {
1198
- n && !h ? x() : !n && h || a.isEqual(n, h) || M();
1199
- }), C(K, (n, h) => {
1200
- a.isEqual(n, h) || M();
1195
+ return C(E, (o, h) => {
1196
+ a.isEqual(o, h) || M();
1197
+ }), C(T, (o, h) => {
1198
+ o != h && (o ? x() : t.value = void 0);
1199
+ }), C(D, (o, h) => {
1200
+ o && !h ? x() : !o && h || a.isEqual(o, h) || M();
1201
+ }), C(K, (o, h) => {
1202
+ a.isEqual(o, h) || M();
1201
1203
  }), C(q, () => {
1202
1204
  q.value || (A.value = !1);
1203
- }), C(k, () => x()), C(J, (n, h) => {
1204
- a.isEqual(n, h) || M();
1205
+ }), C(k, () => x()), C(J, (o, h) => {
1206
+ a.isEqual(o, h) || M();
1205
1207
  }), x(), {
1206
1208
  // Configuration
1207
1209
  resourceClientId: k,
1208
- draftBatchId: U,
1210
+ draftBatchId: E,
1209
1211
  enabled: T,
1210
1212
  resourceType: D,
1211
1213
  // Status
1212
1214
  status: z,
1213
1215
  // Resources loaded from the REST API
1214
- resource: S(() => z.value != "Uninitialized" ? (g((n) => n.ensureResourceLoaded()), m("resource", [])) : []),
1216
+ resource: S(() => z.value != "Uninitialized" ? (g((o) => o.ensureResourceLoaded()), m("resource", [])) : []),
1215
1217
  resourceId: S(() => m("resourceId", null)),
1216
1218
  resourceUrl: S(() => m("resourceUrl", null)),
1217
1219
  // Methods: Configuration
1218
- reconfigureClient: E,
1220
+ reconfigureClient: U,
1219
1221
  setEnabled: L,
1220
- setResourceId: async (n) => await g(async (h) => await h.setResourceId(n)),
1221
- setResourceUrl: async (n) => await g(async (h) => await h.setResourceUrl(n)),
1222
+ setResourceId: async (o) => await g(async (h) => {
1223
+ console.log(h), console.log(h.setResourceId), console.log(o), await h.setResourceId(o);
1224
+ }),
1225
+ setResourceUrl: async (o) => await g(async (h) => await h.setResourceUrl(o)),
1222
1226
  // Methods: Status
1223
1227
  ensureStore: x,
1224
1228
  // Methods: Resource management
1225
- clear: () => B((n) => n.clear()),
1226
- ensureResourceLoaded: async () => await g(async (n) => n.ensureResourceLoaded()),
1227
- loadResource: async () => await g(async (n) => await n.loadResource()),
1229
+ clear: () => B((o) => o.clear()),
1230
+ ensureResourceLoaded: async () => await g(async (o) => o.ensureResourceLoaded()),
1231
+ loadResource: async () => await g(async (o) => await o.loadResource()),
1228
1232
  // Methods: Recording changes to the resource
1229
- checkForDeletedResource: async () => await g(async (n) => await n.checkForDeletedResource()) == !0,
1230
- recordDeletion: () => g((n) => n.recordDeletion()),
1231
- recordInsertion: (n) => g((h) => h.recordInsertion(n)),
1232
- recordUpdate: (n) => g((h) => h.recordUpdate(n)),
1233
- refreshResource: async () => await g(async (n) => await n.refreshResource()),
1233
+ checkForDeletedResource: async () => await g(async (o) => await o.checkForDeletedResource()) == !0,
1234
+ recordDeletion: () => g((o) => o.recordDeletion()),
1235
+ recordInsertion: (o) => g((h) => h.recordInsertion(o)),
1236
+ recordUpdate: (o) => g((h) => h.recordUpdate(o)),
1237
+ refreshResource: async () => await g(async (o) => await o.refreshResource()),
1234
1238
  // Methods: Modifying the resource
1235
- deleteResource: async () => await g(async (n) => await n.deleteResource()),
1236
- saveResource: async (n) => await g(async (h) => await h.saveResource(n)),
1239
+ deleteResource: async () => await g(async (o) => await o.deleteResource()),
1240
+ saveResource: async (o) => await g(async (h) => await h.saveResource(o)),
1237
1241
  // Methods: Custom API endpoints
1238
- makeCustomApiRequest: async (n) => await g(
1239
- async (h) => await h.makeCustomApiRequest(n)
1242
+ makeCustomApiRequest: async (o) => await g(
1243
+ async (h) => await h.makeCustomApiRequest(o)
1240
1244
  )
1241
1245
  };
1242
1246
  }, ee = {
@@ -1 +1 @@
1
- (function(v,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("lodash"),require("uuid"),require("vue"),require("axios"),require("jsog"),require("json-stringify-deterministic"),require("pinia")):typeof define=="function"&&define.amd?define(["exports","lodash","uuid","vue","axios","jsog","json-stringify-deterministic","pinia"],r):(v=typeof globalThis<"u"?globalThis:v||self,r(v["rest-client-vue"]={},v._,v.uuid,v.Vue,v.axios,v.jsog,v.stringify,v.pinia))})(this,function(v,r,I,a,$,ne,J,ae){"use strict";var Pe=Object.defineProperty;var Fe=(v,r,I)=>r in v?Pe(v,r,{enumerable:!0,configurable:!0,writable:!0,value:I}):v[r]=I;var le=(v,r,I)=>(Fe(v,typeof r!="symbol"?r+"":r,I),I),Ne=(v,r,I)=>{if(!r.has(v))throw TypeError("Cannot "+I)};var j=(v,r,I)=>(Ne(v,r,"read from private field"),I?I.call(v):r.get(v)),Ie=(v,r,I)=>{if(r.has(v))throw TypeError("Cannot add the same private member more than once");r instanceof WeakSet?r.add(v):r.set(v,I)};var A;const oe={apiBaseUrl:"",useVueLogger:!1};class we extends Error{constructor(C,q=void 0,e=void 0){super(C);le(this,"context");le(this,"innerError");this.context=q,this.innerError=e}}class ce{constructor(){Ie(this,A,{})}clearAllStores(){for(const n in j(this,A))j(this,A)[n].clear()}destroyStore(n){j(this,A)[n]&&(j(this,A)[n].$dispose(),delete j(this,A)[n])}getStore(n){return j(this,A)[n]}registerStore(n,C){j(this,A)[n]=C}}A=new WeakMap;function g(w,n){return r.get(w,(n==null?void 0:n.idProperty)||"_id")}function De(w,n){var C;return w&&((C=n.filter)!=null&&C.resourceIds)&&!n.order?n.filter.resourceIds.map(q=>w.find(e=>g(e,n)==q)).filter(q=>q!=null):w}const ue={detail:{allowMultiple:!0,autoEdit:!1,autoFromMultipleSelection:!0,autoFromSingleInsertion:!0,autoFromSingleSelection:!0,constrainToSelection:!0},filter:{namedFilter:null,query:null,resourceIds:null},idProperty:"_id",limit:5e3,limitTransientDataToLocalCollection:!0,loading:{firstPageSize:500,pageSize:5e3},order:[[{path:"history.creation.timestamp"},"desc"],[{path:"history.creation.orderInBatch"},"desc"]]},K={resources:[],status:"NotLoaded",selection:[],detailSelection:[],invalidResources:[],transientData:{}},te={editingDetailSelection:!1,batchSaveAttempted:!1,editors:[],listNavigators:{}},Ee=(w,n)=>{n=r.merge({},ue,n);const C=ae.defineStore(w,{state:()=>({idProperty:n.idProperty,filter:n.filter,order:n.order||null,referencePathsToExpand:n.referencePathsToExpand||null,...K,...te}),getters:{fixedQueryParams:e=>{var l,d,u,h;const s={};(l=e.filter)!=null&&l.namedFilter&&(s.namedFilter=e.filter.namedFilter);const t=[];if((d=e.filter)!=null&&d.resourceIds&&t.push({l:{path:e.idProperty},r:{constant:e.filter.resourceIds},operator:"in"}),(u=e.filter)!=null&&u.query&&t.push((h=e.filter)==null?void 0:h.query),t.length>0){const p=t.length==1?t[0]:{and:t};s.q=J(p)}return e.order&&(s.o=J(e.order)),e.referencePathsToExpand&&(s.r=J(e.referencePathsToExpand)),s}},actions:{reset(){for(const e in K)this[e]=K[e];for(const e in te)this[e]=te[e]},resetRetainingTransientData(){if(n.limitTransientDataToLocalCollection)this.reset();else{const e=this.transientData;this.reset(),this.transientData=e}},setEditingDetailSelection(e){this.editingDetailSelection=e},setFilter(e){r.isEqual(e,this.filter)||(this.filter=e,this.status="NotLoaded",this.resources=[],this.selection=[],this.detailSelection=[],this.invalidResources=[],this.editingDetailSelection=!1)},async setQuery(e){var s,t;if(!r.isEqual(e,(s=this.filter)==null?void 0:s.query)&&(e!=null||((t=this.filter)==null?void 0:t.query)!=null)){const l=r.cloneDeep(this.filter)||{};e!==null?l.query=e:r.unset(l,"query");const d=this.status;this.setFilter(l),d!="NotLoaded"&&await this.loadResources()}},async setFilterResourceIds(e){if(!r.isEqual(e,r.get(this.filter,"resourceIds"))){const s=r.cloneDeep(this.filter)||{};e!=null?s.resourceIds=e:r.unset(s,"resourceIds");const t=this.status;this.setFilter(s),t!="NotLoaded"&&await this.loadResources()}},setBatchSaveAttempted(e){e!=this.batchSaveAttempted&&(this.batchSaveAttempted=e)},clear(){for(const e in K)this[e]=K[e]},clearRetainingTransientData(){if(n.limitTransientDataToLocalCollection)this.reset();else{const e=this.transientData;this.reset(),this.transientData=e}},async ensureCollectionLoaded(){["Loaded","Loading","LoadingMore","Failed"].includes(this.status)||await this.loadResources()},async loadResources(e={}){this.resetRetainingTransientData();const s=I.v4();this._loadId=s,await this._loadResources(0,s,e)},async _loadResources(e,s,t){var b,F,O,k,Q;const l=e==0;if(this.status=l?"Loading":"LoadingMore",this._loadOffset=e,((b=this.filter)==null?void 0:b.query)===!1){this.resources=[];return}const d=this.fixedQueryParams,u=r.cloneDeep(d),h=l?(F=this.filter)!=null&&F.resourceIds&&!this.order?null:t.firstPageSize||((O=n.loading)==null?void 0:O.firstPageSize)||t.pageSize||((k=n.loading)==null?void 0:k.pageSize)||null:t.pageSize||((Q=n.loading)==null?void 0:Q.pageSize)||null,p=h!=null||n.limit!=null?r.min(r.filter([h,n.limit],R=>R!=null)):void 0;p!=null?(u.offset=e,u.limit=p):e!=0&&(u.offset=e);const D=r.map(u,(R,m)=>R!=null?`${encodeURIComponent(m)}=${encodeURIComponent(R)}`:null).filter(R=>R!=null).join("&"),T=r.isEmpty(D)?n.restCollectionUrl:`${n.restCollectionUrl}?${D}`;try{const R=await $.get(T),m=this.fixedQueryParams;if(s!=this._loadId||e!=this._loadOffset||!r.isEqual(d,m))console.log(`Discarding resources fetched by obsolete query from ${n.restCollectionUrl}.`);else{const E=ne.decode(r.get(R,"data.data",[])),L=(l?0:this.resources.length)+E.length,y=p==null||E.length<p||n.limit&&L>=n.limit;console.log(`Loaded ${E.length}${l?"":" more"} resources from ${n.restCollectionUrl}`),l&&(this.resources=[]);const X=[...this.resources,...E.map(Z=>Object.freeze(Z))];this.resources=De(X,this),this.status=y?"Loaded":"LoadingMore",y||this._loadResources(this.resources.length,s,t)}}catch(R){console.log(`Error while loading resources (URL="${T}"):`,R),this.clearRetainingTransientData(),this.status="Failed"}},async checkForDeletedResource(e){let s;try{s=await $.get(`${n.restCollectionUrl}/${e}`)}catch(t){$.isAxiosError(t)&&(s=t.response)}return s&&s.status==404?(this.recordDeletion(e),!0):!1},recordDeletion(e){var s;if(["Loaded","LoadingMore"].includes(this.status)){let t=this.resources.findIndex(l=>g(l,this)==e);t>=0&&this.resources.splice(t,1),t=this.selection.findIndex(l=>g(l,this)==e),t>=0&&this.selection.splice(t,1),t=this.detailSelection.findIndex(l=>g(l,this)==e),t>=0&&(this.detailSelection.splice(t,1),this.detailSelection.length==0&&(this.editingDetailSelection=((s=n.detail)==null?void 0:s.autoEdit)||!1)),n.limitTransientDataToLocalCollection&&delete this.transientData[e]}},recordInsertion(e,{insertAtBeginning:s,transientData:t}={}){var l;if(["Loaded","LoadingMore"].includes(this.status)){const d=Object.freeze(e);s?this.resources.unshift(d):this.resources.push(d),(l=n.detail)!=null&&l.autoFromSingleInsertion&&(this.detailSelection.length==0||this.detailSelection.length==1&&g(this.detailSelection[0],this)==null)&&(this.detailSelection=[d],this.editingDetailSelection=n.detail.autoEdit);const u=g(e,this);u&&(t===void 0?delete this.transientData[u]:this.transientData[u]=t)}},recordUpdate(e){const s=g(e,this);if(s&&["Loaded","LoadingMore"].includes(this.status)){const t=Object.freeze(e);let l=this.resources.findIndex(d=>g(d,this)==s);l>=0&&(this.resources[l]=t),l=this.selection.findIndex(d=>g(d,this)==s),l>=0&&(this.selection[l]=t),l=this.detailSelection.findIndex(d=>g(d,this)==s),l>=0&&(this.detailSelection[l]=t)}},async refreshResource(e){if(e){const s={};this.referencePathsToExpand&&(s.r=J(this.referencePathsToExpand));const t=r.map(s,(u,h)=>u!=null?`${encodeURIComponent(h)}=${encodeURIComponent(u)}`:null).filter(u=>u!=null).join("&"),l=r.isEmpty(t)?`${n.restCollectionUrl}/${e}`:`${n.restCollectionUrl}/${e}?${t}`,d=await $.get(l);if(d.status==200){const u=d.data;return this.recordUpdate(u),u}}return null},addResource(e={}){this.detailSelection=[r.omit(r.merge({},e),this.idProperty)],this.editingDetailSelection=!0},async deleteResource(e){if((await $.delete(`${n.restCollectionUrl}/${e}`)).status==200&&["Loaded","LoadingMore"].includes(this.status)){let t=this.resources.findIndex(l=>g(l,this)==e);t>=0&&this.resources.splice(t,1),t=this.selection.findIndex(l=>g(l,this)==e),t>=0&&this.selection.splice(t,1),t=this.detailSelection.findIndex(l=>g(l,this)==e),t>=0&&(this.detailSelection.splice(t,1),this.detailSelection.length==0&&(this.editingDetailSelection=n.detail.autoEdit)),n.limitTransientDataToLocalCollection&&delete this.transientData[e]}},async saveResource(e){const s=g(e,this),t=s==null,l=await $({method:t?"post":"put",url:t?n.restCollectionUrl:`${n.restCollectionUrl}/${s}`,data:e});if(l.status==200){const d=l.data,u=g(d,this),h=u?await this.refreshResource(u):null;return t&&this.recordInsertion(h||Object.freeze(d)),h||d}return null},async saveResources(e){const s=await $({method:"put",url:n.restCollectionUrl,data:e});if(s.status==200){const t=s.data||[],l=[];for(const[d,u]of t.entries()){const h=g(e[d],this)==null,p=g(u,this),D=p?await this.refreshResource(p):null;h&&this.recordInsertion(D||u),l.push(D||Object.freeze(u))}return l}return[]},clearTransientData(){this.transientData={}},setInvalidResourceIds(e){r.isEqual(e,this.invalidResources.map(s=>g(s,this)))||(this.invalidResources=e.map(s=>this.resources.find(t=>g(t,this)==s)).filter(s=>s!=null))},setTransientDataForResources(e){const{transientData:s,merge:t=!0}=e;t?r.merge(this.transientData,s):r.assign(this.transientData,s)},clearSelection(){this.setSelection([])},deselectResources(e){const s=this.selection.map(t=>g(t,this)).filter(t=>t!=null&&!e.includes(t));this.setSelection(s)},selectResources(e,s){const{addToSelection:t,edit:l}=s||{},d=this.selection.map(h=>g(h,this));let u=e;if(t){const h=r.difference(e,d);h.length>0&&(u=d.concat(h).filter(p=>p!=null))}r.isEqual(d,u)||this.setSelection(u,l)},setSelection(e,s){if(!r.isEqual(e,this.selection.map(t=>g(t,this)))){let t=!0;if(this.editors.length>0){if(n.detail.autoFromSingleSelection&&this.selection.length==1)t=!1;else if(n.detail.autoFromMultipleSelection&&n.detail.allowMultiple&&this.selection.length>1)t=!1;else if(n.detail.constrainToSelection){const l=this.selection.map(h=>g(h,this)),u=this.detailSelection.map(h=>g(h,this)).filter(h=>l.includes(h));this.detailSelection.filter(h=>!u.includes(g(h,this))).length>0&&(t=!1)}}if(!t)return;if(this.selection=e.map(l=>this.resources.find(d=>g(d,this)==l)).filter(l=>l!=null),n.detail.autoFromSingleSelection&&this.selection.length==1){const l=this.selection[0];(this.detailSelection.length!=1||g(this.detailSelection[0],this)!=g(l,this))&&(this.detailSelection=[l])}else if(n.detail.autoFromMultipleSelection&&n.detail.allowMultiple&&this.selection.length>1)r.isEqual(this.selection.map(l=>g(l,this)),this.detailSelection.map(l=>g(l,this)))||(this.detailSelection=r.clone(this.selection));else if(n.detail.constrainToSelection){const l=this.selection.map(h=>g(h,this)),d=this.detailSelection.map(h=>g(h,this)),u=d.filter(h=>l.includes(h));r.isEqual(u,d)||(this.detailSelection=this.detailSelection.filter(h=>u.includes(g(h,this))))}this.detailSelection.length==0?this.editingDetailSelection=!1:this.editingDetailSelection=s!==void 0?s:this.editingDetailSelection||n.detail.autoEdit}},hideDetail(){this.detailSelection.length>0&&(this.detailSelection=[],this.editingDetailSelection=!1)},showSelectionAsDetail(e){if(this.selection.length<=1||n.detail.allowMultiple){const s=this.selection.map(l=>g(l,this)),t=this.detailSelection.map(l=>g(l,this));r.isEqual(s,t)||(this.detailSelection=r.clone(this.selection)),this.detailSelection.length==0?this.editingDetailSelection=!1:this.editingDetailSelection=e!==void 0?e:this.editingDetailSelection||n.detail.autoEdit}},deregisterEditor(e){r.remove(this.editors,s=>s==e)},registerEditor(e){this.editors.includes(e)||this.editors.push(e)},deregisterListNavigator({name:e,listNavigator:s}){(s==null||this.listNavigators[e]==s)&&delete this.listNavigators[e]},registerListNavigator({name:e,listNavigator:s}){this.listNavigators[e]!=s&&(this.listNavigators[e]=s)}}});return(()=>{const e=(s,t)=>{const l=C(s,t);return ee.registerStore(l.$id,l),l};return e.$id=C.$id,e})()},ee=new ce,Ue=(w={})=>{var he,fe,ge,ve;const{collectionId:n,draftBatchId:C,enabled:q,resourceType:e,options:s}=w,t=a.ref(void 0),l=a.ref(n),d=a.ref(C),u=a.ref(q??!0),h=a.ref([a.toRef(e)]),p=a.ref(s),D=a.computed(()=>d.value),T=a.ref(u.value),b=a.ref(I.v4()),F=a.ref((fe=(he=p.value)==null?void 0:he.filter)==null?void 0:fe.resourceIds),O=a.ref((ve=(ge=p.value)==null?void 0:ge.filter)==null?void 0:ve.query),k=a.computed(()=>d.value==null&&l.value!=null&&ee.getStore(l.value)!=null),Q=a.ref(k.value),R=a.computed(()=>L("status","Uninitialized"));function m(i){if(t.value)return i(t.value)}async function E(i){if(t.value)return await i(t.value)}function L(i,c){if(t.value)return t.value[i];if(c!==void 0)return c;throw"Attempted to use a REST collection store that has not been created, with no default value."}const y=(i={})=>{var me,pe,Se,ye;const{collectionId:c,draftBatchId:U,enabled:z,resourceType:re,options:Re}=i;l.value=c,d.value=U,u.value=z??!0,h.value=[a.toRef(re)],Re!=null&&(p.value=Re,F.value=(pe=(me=p.value)==null?void 0:me.filter)==null?void 0:pe.resourceIds,O.value=(ye=(Se=p.value)==null?void 0:Se.filter)==null?void 0:ye.query),b.value=I.v4(),X(u.value)},X=async i=>{i!=T.value&&(T.value=i,i&&(_(),x()))},Z=async i=>{F.value=i,await E(async c=>await c.setFilterResourceIds(F.value||null))},V=async i=>{if(O.value=i,R.value!="Uninitialized"){const c=i,U=a.computed(()=>r.isFunction(c)?S.value?c(S.value):null:c);await E(z=>z.setQuery(U.value||null))}},_=()=>{p.value=r.merge({},p.value||{},{filter:{resourceIds:F.value,query:O.value}})},S=a.computed(()=>h.value[0].value||void 0),B=function(i){const c=r.get(i,"filter.query"),U=r.get(i,"referencePathsToExpand"),z=r.isFunction(c)?c(S.value):c,re=S.value?r.isFunction(U)?U(S.value):U||[]:[];return{...r.cloneDeep(i||{}),filter:{...r.cloneDeep((i==null?void 0:i.filter)||{}),query:z},referencePathsToExpand:re}},P=a.computed(()=>B(p.value)),M=a.computed(()=>{if(!S.value)return null;if(P.value.restCollectionUrl!==void 0)return P.value.restCollectionUrl;if(!Q.value)return!S.value||!S.value.collectionName?null:D.value?`${G.config.apiBaseUrl}/draft-batches/${D.value}/${S.value.collectionName}`:`${G.config.apiBaseUrl}/${S.value.collectionName}`}),o=a.computed(()=>{var i;if(S.value)return r.mergeWith(r.cloneDeep(ue),P.value,{idProperty:(i=S.value)==null?void 0:i.idProperty,restCollectionUrl:M.value||""},(c,U)=>{if(r.isArray(U)&&U.length==0&&(c==null||r.isArray(c)))return U})}),f=a.ref(0),N=a.computed(()=>{var i;return f.value,l.value||S.value&&((i=S.value)==null?void 0:i.collectionName)&&(D.value?`draftBatches/${D.value}/${S.value.collectionName}/${b.value}`:`${S.value.collectionName}/${b.value}`)||null}),x=()=>{if(T.value){let i=!1;return S.value&&N.value&&(t.value=ee.getStore(N.value),t.value?i=!1:o.value&&(Q.value=!1,t.value=Ee(N.value,o.value)(),i=!0)),i}else return!1},H=()=>{N.value&&l.value==N.value?(t.value=void 0,x()):(t.value=void 0,f.value=f.value+1,x())};a.watch(D,(i,c)=>{r.isEqual(i,c)||H()}),a.watch(T,(i,c)=>{i!=c&&(i?x():t.value=void 0)}),a.watch(S,(i,c)=>{i&&!c?x():!i&&c||r.isEqual(i,c)||H()}),a.watch(o,(i,c)=>{r.isEqual(i,c)||H()}),a.watch(k,()=>{k.value||(Q.value=!1)}),a.watch(N,()=>x()),a.watch(M,(i,c)=>{r.isEqual(i,c)||H()});const W=[],qe=function(i){R.value!="Uninitialized"?a.nextTick(i):W.push(i)};return a.watch(R,(i,c)=>{if(i!="Uninitialized"&&c=="Uninitialized"){const U=r.clone(W);W.splice(0,W.length);for(const z of U)z()}}),x(),{collectionId:N,draftBatchId:D,resourceType:S,enabled:T,status:R,batchSaveAttempted:a.computed(()=>L("batchSaveAttempted",!1)),listNavigators:a.computed(()=>L("listNavigators",!1)),invalidResources:a.computed(()=>L("invalidResources",[])),resources:a.computed(()=>R.value!="Uninitialized"?(E(i=>i.ensureCollectionLoaded()),L("resources",[])):[]),transientData:a.computed(()=>L("transientData",[])),detailSelection:a.computed(()=>L("detailSelection",[])),editingDetailSelection:a.computed(()=>L("editingDetailSelection",!1)),selection:a.computed(()=>L("selection",[])),reconfigureCollection:y,setEditingDetailSelection:i=>m(c=>c.setEditingDetailSelection(i)),setEnabled:X,setFilterResourceIds:Z,setQuery:V,ensureStore:x,setBatchSaveAttempted:i=>m(c=>c.setBatchSaveAttempted(i)),clear:()=>m(i=>i.clear()),ensureCollectionLoaded:async()=>await E(async i=>i.ensureCollectionLoaded()),loadResources:async()=>await E(async i=>await i.loadResources()),addResource:i=>m(c=>c.addResource(i)),checkForDeletedResource:async i=>await E(async c=>await c.checkForDeletedResource(i))==!0,recordDeletion:i=>m(c=>c.recordDeletion(i)),recordInsertion:(i,{insertAtBeginning:c=!1,transientData:U=void 0}={})=>m(z=>z.recordInsertion(i,{insertAtBeginning:c,transientData:U})),recordUpdate:i=>m(c=>c.recordUpdate(i)),refreshResource:async i=>await E(async c=>await c.refreshResource(i)),deleteResource:async i=>await E(async c=>await c.deleteResource(i)),saveResource:async i=>await E(async c=>await c.saveResource(i)),saveResources:async i=>await E(async c=>await c.saveResources(i)),clearTransientData:()=>m(i=>i.clearTransientData()),setInvalidResourceIds:i=>m(c=>c.setInvalidResourceIds(i)),setTransientDataForResources:i=>m(c=>c.setTransientDataForResources(i)),clearSelection:()=>m(i=>i.clearSelection()),deselectResources:i=>m(c=>c.deselectResources(i)),selectResources:(i,c)=>m(U=>U.selectResources(i,c)),hideDetail:()=>m(i=>i.hideDetail()),deregisterEditor:i=>m(c=>c.deregisterEditor(i)),registerEditor:i=>m(c=>c.registerEditor(i)),deregisterListNavigator:i=>m(c=>c.deregisterListNavigator(i)),registerListNavigator:i=>m(c=>c.registerListNavigator(i)),onItemsStoreReady:qe}},Ce=()=>{ee.clearAllStores()};function ie(w,n){return r.get(w,(n==null?void 0:n.idProperty)||"_id")}const de={idProperty:"_id"},Y={resource:null,status:"NotLoaded"},Te=(w,n)=>{n=r.merge({},de,n);const C=ae.defineStore(w,{state:()=>({idProperty:n.idProperty,resourceId:n.resourceId||null,resourceUrl:n.resourceUrl||null,referencePathsToExpand:n.referencePathsToExpand||null,...Y}),getters:{currentResourceUrl:e=>e.resourceUrl||(n.restCollectionUrl&&e.resourceId?`${n.restCollectionUrl}/${e.resourceId}`:null)||n.restCollectionUrl||null,fixedQueryParams:e=>{const s={};return e.referencePathsToExpand&&(s.r=J(e.referencePathsToExpand)),s}},actions:{reset(){for(const e in Y)this[e]=Y[e]},async setResourceId(e){const s=this.currentResourceUrl;this.resourceId=e,!r.isEqual(this.currentResourceUrl,s)&&this.status!="NotLoaded"&&await this.loadResource()},async setResourceUrl(e){const s=this.currentResourceUrl;this.resourceUrl=e,!r.isEqual(this.currentResourceUrl,s)&&this.status!="NotLoaded"&&await this.loadResource()},clear(){for(const e in Y)this[e]=Y[e]},async ensureResourceLoaded(){["Loaded","Loading","Failed"].includes(this.status)||await this.loadResource()},async loadResource(){this.reset();const e=I.v4();if(this._loadId=e,this.currentResourceUrl){this.status="Loading";const s=this.fixedQueryParams,t=r.cloneDeep(s),l=r.map(t,(u,h)=>u!=null?`${encodeURIComponent(h)}=${encodeURIComponent(u)}`:null).filter(u=>u!=null).join("&"),d=r.isEmpty(l)?this.currentResourceUrl:`${this.currentResourceUrl}?${l}`;try{const u=await $.get(d),h=this.fixedQueryParams;e!=this._loadId||!r.isEqual(s,h)?console.log(`Discarding resource fetched by obsolete query from ${d}.`):(this.resource=ne.decode(r.get(u,"data",{})),this.status="Loaded")}catch(u){console.log(`Error while loading resource (URL="${d}")`,u),this.reset(),this.status="Failed"}}else throw"Cannot load a resource because its URL, or its ID and collection URL, are unknown."},async checkForDeletedResource(){if(this.currentResourceUrl){let e;try{e=await $.get(this.currentResourceUrl)}catch(s){$.isAxiosError(s)&&(e=s.response)}return e&&e.status==404?(this.recordDeletion(),!0):!1}else throw"Cannot check for a deleted resource because its URL, or its ID and collection URL, are unknown."},recordDeletion(){this.resource=null,this.status="Loaded"},recordInsertion(e){this.resourceId=ie(e,this)||null,this.status=="Loaded"&&(this.resource=Object.freeze(e))},recordUpdate(e){this.resourceId=ie(e,this)||null,this.status=="Loaded"&&(this.resource=Object.freeze(e))},async refreshResource(){return await this.loadResource(),this.resource},async deleteResource(){if(this.currentResourceUrl)(await $.delete(this.currentResourceUrl)).status==200&&this.recordDeletion();else throw"Cannot delete a resource because its URL, or its ID and collection URL, are unknown."},async saveResource(e){const s=ie(e,this),t=s==null;if(!s)throw"The REST resource store cannot create new resources on the server.";if(!this.currentResourceUrl)throw"Cannot save a resource because its URL, or its ID and collection URL, are unknown.";const l=await $({method:t?"post":"put",url:this.currentResourceUrl,data:e});if(l.status==200){const d=l.data,u=await this.refreshResource();return t&&this.recordInsertion(u||d),u||Object.freeze(d)}return null},async makeCustomApiRequest(e){const{method:s,subpath:t,url:l,data:d}=e;let u=l;if(!u)if(this.currentResourceUrl)u=`${this.currentResourceUrl}/${t}`;else throw"Cannot make a custom API request for a resource because its URL, or its ID and collection URL, are unknown.";const h=await $({method:s||"get",url:u,data:d});return h.status>=200&&h.status<300?h.data:null}}});return(()=>{const e=(s,t)=>{const l=C(s,t);return se.registerStore(l.$id,l),l};return e.$id=C.$id,e})()},se=new ce,Le=(w={})=>{const{resourceClientId:n,draftBatchId:C,enabled:q,resourceType:e,options:s}=w,t=a.ref(void 0),l=a.ref(n),d=a.ref(C),u=a.ref(q??!0),h=a.ref([a.toRef(e)]),p=a.ref(s),D=a.computed(()=>d.value),T=a.ref(u.value),b=a.ref(I.v4()),F=a.computed(()=>d.value==null&&l.value!=null&&se.getStore(l.value)!=null),O=a.ref(F.value),k=a.computed(()=>m("status","Uninitialized"));function Q(o){if(t.value)return o(t.value)}async function R(o){if(t.value)return await o(t.value)}function m(o,f){if(t.value)return t.value[o];if(f!==void 0)return f;throw"Attempted to use a REST resource store that has not been created, with no default value."}const E=(o={})=>{const{resourceClientId:f,draftBatchId:N,enabled:x,resourceType:H,options:W}=o;l.value=f,d.value=N,u.value=x??!0,h.value=[a.toRef(H)],W!=null&&(p.value=W),b.value=I.v4(),L(u.value)},L=async o=>{o!=T.value&&(T.value=o,o&&P())},y=a.computed(()=>h.value[0].value||void 0),X=function(o){const f=r.get(o,"referencePathsToExpand"),N=y.value?r.isFunction(f)?f(y.value):f||[]:[];return{...r.cloneDeep(o||{}),referencePathsToExpand:N}},Z=a.computed(()=>X(p.value)),V=a.computed(()=>{if(!y.value)return null;if(!O.value)return!y.value||!y.value.collectionName?null:D.value?`${G.config.apiBaseUrl}/draft-batches/${D.value}/${y.value.collectionName}`:`${G.config.apiBaseUrl}/${y.value.collectionName}`}),_=a.computed(()=>{if(y.value&&V.value)return r.mergeWith(r.cloneDeep(de),Z.value,{idProperty:y.value.idProperty,restCollectionUrl:V.value},(o,f)=>{if(r.isArray(f)&&f.length==0&&(o==null||r.isArray(o)))return f})}),S=a.ref(0),B=a.computed(()=>{var o;return S.value,l.value||y.value&&((o=y.value)==null?void 0:o.collectionName)&&(D.value?`draftBatches/${D.value}/${y.value.collectionName}/${b.value}`:`${y.value.collectionName}/${b.value}`)||null}),P=()=>{if(T.value){let o=!1;return y.value&&B.value&&(t.value=se.getStore(B.value),t.value?o=!1:_.value&&(O.value=!1,t.value=Te(B.value,_.value)(),o=!0)),o}else return!1},M=()=>{B.value&&l.value==B.value?(t.value=void 0,P()):(t.value=void 0,S.value=S.value+1,P())};return a.watch(D,(o,f)=>{r.isEqual(o,f)||M()}),a.watch(T,(o,f)=>{o!=f&&(o?P():t.value=void 0)}),a.watch(y,(o,f)=>{o&&!f?P():!o&&f||r.isEqual(o,f)||M()}),a.watch(_,(o,f)=>{r.isEqual(o,f)||M()}),a.watch(F,()=>{F.value||(O.value=!1)}),a.watch(B,()=>P()),a.watch(V,(o,f)=>{r.isEqual(o,f)||M()}),P(),{resourceClientId:B,draftBatchId:D,enabled:T,resourceType:y,status:k,resource:a.computed(()=>k.value!="Uninitialized"?(R(o=>o.ensureResourceLoaded()),m("resource",[])):[]),resourceId:a.computed(()=>m("resourceId",null)),resourceUrl:a.computed(()=>m("resourceUrl",null)),reconfigureClient:E,setEnabled:L,setResourceId:async o=>await R(async f=>await f.setResourceId(o)),setResourceUrl:async o=>await R(async f=>await f.setResourceUrl(o)),ensureStore:P,clear:()=>Q(o=>o.clear()),ensureResourceLoaded:async()=>await R(async o=>o.ensureResourceLoaded()),loadResource:async()=>await R(async o=>await o.loadResource()),checkForDeletedResource:async()=>await R(async o=>await o.checkForDeletedResource())==!0,recordDeletion:()=>R(o=>o.recordDeletion()),recordInsertion:o=>R(f=>f.recordInsertion(o)),recordUpdate:o=>R(f=>f.recordUpdate(o)),refreshResource:async()=>await R(async o=>await o.refreshResource()),deleteResource:async()=>await R(async o=>await o.deleteResource()),saveResource:async o=>await R(async f=>await f.saveResource(o)),makeCustomApiRequest:async o=>await R(async f=>await f.makeCustomApiRequest(o))}},G={config:{...oe}};function $e(w){G.config=r.merge({},oe,w)}v.ApiClientError=we,v.clearAllRestCollections=Ce,v.initRestClient=$e,v.restClient=G,v.useRestCollection=Ue,v.useRestResource=Le,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})});
1
+ (function(v,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("lodash"),require("uuid"),require("vue"),require("axios"),require("jsog"),require("json-stringify-deterministic"),require("pinia")):typeof define=="function"&&define.amd?define(["exports","lodash","uuid","vue","axios","jsog","json-stringify-deterministic","pinia"],r):(v=typeof globalThis<"u"?globalThis:v||self,r(v["rest-client-vue"]={},v._,v.uuid,v.Vue,v.axios,v.jsog,v.stringify,v.pinia))})(this,function(v,r,w,o,$,ne,J,oe){"use strict";var Pe=Object.defineProperty;var Fe=(v,r,w)=>r in v?Pe(v,r,{enumerable:!0,configurable:!0,writable:!0,value:w}):v[r]=w;var le=(v,r,w)=>(Fe(v,typeof r!="symbol"?r+"":r,w),w),Ne=(v,r,w)=>{if(!r.has(v))throw TypeError("Cannot "+w)};var j=(v,r,w)=>(Ne(v,r,"read from private field"),w?w.call(v):r.get(v)),Ie=(v,r,w)=>{if(r.has(v))throw TypeError("Cannot add the same private member more than once");r instanceof WeakSet?r.add(v):r.set(v,w)};var A;const ae={apiBaseUrl:"",useVueLogger:!1};class we extends Error{constructor(C,q=void 0,e=void 0){super(C);le(this,"context");le(this,"innerError");this.context=q,this.innerError=e}}class ce{constructor(){Ie(this,A,{})}clearAllStores(){for(const n in j(this,A))j(this,A)[n].clear()}destroyStore(n){j(this,A)[n]&&(j(this,A)[n].$dispose(),delete j(this,A)[n])}getStore(n){return j(this,A)[n]}registerStore(n,C){j(this,A)[n]=C}}A=new WeakMap;function g(y,n){return r.get(y,(n==null?void 0:n.idProperty)||"_id")}function De(y,n){var C;return y&&((C=n.filter)!=null&&C.resourceIds)&&!n.order?n.filter.resourceIds.map(q=>y.find(e=>g(e,n)==q)).filter(q=>q!=null):y}const ue={detail:{allowMultiple:!0,autoEdit:!1,autoFromMultipleSelection:!0,autoFromSingleInsertion:!0,autoFromSingleSelection:!0,constrainToSelection:!0},filter:{namedFilter:null,query:null,resourceIds:null},idProperty:"_id",limit:5e3,limitTransientDataToLocalCollection:!0,loading:{firstPageSize:500,pageSize:5e3},order:[[{path:"history.creation.timestamp"},"desc"],[{path:"history.creation.orderInBatch"},"desc"]]},K={resources:[],status:"NotLoaded",selection:[],detailSelection:[],invalidResources:[],transientData:{}},te={editingDetailSelection:!1,batchSaveAttempted:!1,editors:[],listNavigators:{}},Ee=(y,n)=>{n=r.merge({},ue,n);const C=oe.defineStore(y,{state:()=>({idProperty:n.idProperty,filter:n.filter,order:n.order||null,referencePathsToExpand:n.referencePathsToExpand||null,...K,...te}),getters:{fixedQueryParams:e=>{var l,d,u,h;const s={};(l=e.filter)!=null&&l.namedFilter&&(s.namedFilter=e.filter.namedFilter);const t=[];if((d=e.filter)!=null&&d.resourceIds&&t.push({l:{path:e.idProperty},r:{constant:e.filter.resourceIds},operator:"in"}),(u=e.filter)!=null&&u.query&&t.push((h=e.filter)==null?void 0:h.query),t.length>0){const p=t.length==1?t[0]:{and:t};s.q=J(p)}return e.order&&(s.o=J(e.order)),e.referencePathsToExpand&&(s.r=J(e.referencePathsToExpand)),s}},actions:{reset(){for(const e in K)this[e]=K[e];for(const e in te)this[e]=te[e]},resetRetainingTransientData(){if(n.limitTransientDataToLocalCollection)this.reset();else{const e=this.transientData;this.reset(),this.transientData=e}},setEditingDetailSelection(e){this.editingDetailSelection=e},setFilter(e){r.isEqual(e,this.filter)||(this.filter=e,this.status="NotLoaded",this.resources=[],this.selection=[],this.detailSelection=[],this.invalidResources=[],this.editingDetailSelection=!1)},async setQuery(e){var s,t;if(!r.isEqual(e,(s=this.filter)==null?void 0:s.query)&&(e!=null||((t=this.filter)==null?void 0:t.query)!=null)){const l=r.cloneDeep(this.filter)||{};e!==null?l.query=e:r.unset(l,"query");const d=this.status;this.setFilter(l),d!="NotLoaded"&&await this.loadResources()}},async setFilterResourceIds(e){if(!r.isEqual(e,r.get(this.filter,"resourceIds"))){const s=r.cloneDeep(this.filter)||{};e!=null?s.resourceIds=e:r.unset(s,"resourceIds");const t=this.status;this.setFilter(s),t!="NotLoaded"&&await this.loadResources()}},setBatchSaveAttempted(e){e!=this.batchSaveAttempted&&(this.batchSaveAttempted=e)},clear(){for(const e in K)this[e]=K[e]},clearRetainingTransientData(){if(n.limitTransientDataToLocalCollection)this.reset();else{const e=this.transientData;this.reset(),this.transientData=e}},async ensureCollectionLoaded(){["Loaded","Loading","LoadingMore","Failed"].includes(this.status)||await this.loadResources()},async loadResources(e={}){this.resetRetainingTransientData();const s=w.v4();this._loadId=s,await this._loadResources(0,s,e)},async _loadResources(e,s,t){var b,F,O,k,Q;const l=e==0;if(this.status=l?"Loading":"LoadingMore",this._loadOffset=e,((b=this.filter)==null?void 0:b.query)===!1){this.resources=[];return}const d=this.fixedQueryParams,u=r.cloneDeep(d),h=l?(F=this.filter)!=null&&F.resourceIds&&!this.order?null:t.firstPageSize||((O=n.loading)==null?void 0:O.firstPageSize)||t.pageSize||((k=n.loading)==null?void 0:k.pageSize)||null:t.pageSize||((Q=n.loading)==null?void 0:Q.pageSize)||null,p=h!=null||n.limit!=null?r.min(r.filter([h,n.limit],R=>R!=null)):void 0;p!=null?(u.offset=e,u.limit=p):e!=0&&(u.offset=e);const D=r.map(u,(R,m)=>R!=null?`${encodeURIComponent(m)}=${encodeURIComponent(R)}`:null).filter(R=>R!=null).join("&"),T=r.isEmpty(D)?n.restCollectionUrl:`${n.restCollectionUrl}?${D}`;try{const R=await $.get(T),m=this.fixedQueryParams;if(s!=this._loadId||e!=this._loadOffset||!r.isEqual(d,m))console.log(`Discarding resources fetched by obsolete query from ${n.restCollectionUrl}.`);else{const E=ne.decode(r.get(R,"data.data",[])),L=(l?0:this.resources.length)+E.length,I=p==null||E.length<p||n.limit&&L>=n.limit;console.log(`Loaded ${E.length}${l?"":" more"} resources from ${n.restCollectionUrl}`),l&&(this.resources=[]);const H=[...this.resources,...E.map(Z=>Object.freeze(Z))];this.resources=De(H,this),this.status=I?"Loaded":"LoadingMore",I||this._loadResources(this.resources.length,s,t)}}catch(R){console.log(`Error while loading resources (URL="${T}"):`,R),this.clearRetainingTransientData(),this.status="Failed"}},async checkForDeletedResource(e){let s;try{s=await $.get(`${n.restCollectionUrl}/${e}`)}catch(t){$.isAxiosError(t)&&(s=t.response)}return s&&s.status==404?(this.recordDeletion(e),!0):!1},recordDeletion(e){var s;if(["Loaded","LoadingMore"].includes(this.status)){let t=this.resources.findIndex(l=>g(l,this)==e);t>=0&&this.resources.splice(t,1),t=this.selection.findIndex(l=>g(l,this)==e),t>=0&&this.selection.splice(t,1),t=this.detailSelection.findIndex(l=>g(l,this)==e),t>=0&&(this.detailSelection.splice(t,1),this.detailSelection.length==0&&(this.editingDetailSelection=((s=n.detail)==null?void 0:s.autoEdit)||!1)),n.limitTransientDataToLocalCollection&&delete this.transientData[e]}},recordInsertion(e,{insertAtBeginning:s,transientData:t}={}){var l;if(["Loaded","LoadingMore"].includes(this.status)){const d=Object.freeze(e);s?this.resources.unshift(d):this.resources.push(d),(l=n.detail)!=null&&l.autoFromSingleInsertion&&(this.detailSelection.length==0||this.detailSelection.length==1&&g(this.detailSelection[0],this)==null)&&(this.detailSelection=[d],this.editingDetailSelection=n.detail.autoEdit);const u=g(e,this);u&&(t===void 0?delete this.transientData[u]:this.transientData[u]=t)}},recordUpdate(e){const s=g(e,this);if(s&&["Loaded","LoadingMore"].includes(this.status)){const t=Object.freeze(e);let l=this.resources.findIndex(d=>g(d,this)==s);l>=0&&(this.resources[l]=t),l=this.selection.findIndex(d=>g(d,this)==s),l>=0&&(this.selection[l]=t),l=this.detailSelection.findIndex(d=>g(d,this)==s),l>=0&&(this.detailSelection[l]=t)}},async refreshResource(e){if(e){const s={};this.referencePathsToExpand&&(s.r=J(this.referencePathsToExpand));const t=r.map(s,(u,h)=>u!=null?`${encodeURIComponent(h)}=${encodeURIComponent(u)}`:null).filter(u=>u!=null).join("&"),l=r.isEmpty(t)?`${n.restCollectionUrl}/${e}`:`${n.restCollectionUrl}/${e}?${t}`,d=await $.get(l);if(d.status==200){const u=d.data;return this.recordUpdate(u),u}}return null},addResource(e={}){this.detailSelection=[r.omit(r.merge({},e),this.idProperty)],this.editingDetailSelection=!0},async deleteResource(e){if((await $.delete(`${n.restCollectionUrl}/${e}`)).status==200&&["Loaded","LoadingMore"].includes(this.status)){let t=this.resources.findIndex(l=>g(l,this)==e);t>=0&&this.resources.splice(t,1),t=this.selection.findIndex(l=>g(l,this)==e),t>=0&&this.selection.splice(t,1),t=this.detailSelection.findIndex(l=>g(l,this)==e),t>=0&&(this.detailSelection.splice(t,1),this.detailSelection.length==0&&(this.editingDetailSelection=n.detail.autoEdit)),n.limitTransientDataToLocalCollection&&delete this.transientData[e]}},async saveResource(e){const s=g(e,this),t=s==null,l=await $({method:t?"post":"put",url:t?n.restCollectionUrl:`${n.restCollectionUrl}/${s}`,data:e});if(l.status==200){const d=l.data,u=g(d,this),h=u?await this.refreshResource(u):null;return t&&this.recordInsertion(h||Object.freeze(d)),h||d}return null},async saveResources(e){const s=await $({method:"put",url:n.restCollectionUrl,data:e});if(s.status==200){const t=s.data||[],l=[];for(const[d,u]of t.entries()){const h=g(e[d],this)==null,p=g(u,this),D=p?await this.refreshResource(p):null;h&&this.recordInsertion(D||u),l.push(D||Object.freeze(u))}return l}return[]},clearTransientData(){this.transientData={}},setInvalidResourceIds(e){r.isEqual(e,this.invalidResources.map(s=>g(s,this)))||(this.invalidResources=e.map(s=>this.resources.find(t=>g(t,this)==s)).filter(s=>s!=null))},setTransientDataForResources(e){const{transientData:s,merge:t=!0}=e;t?r.merge(this.transientData,s):r.assign(this.transientData,s)},clearSelection(){this.setSelection([])},deselectResources(e){const s=this.selection.map(t=>g(t,this)).filter(t=>t!=null&&!e.includes(t));this.setSelection(s)},selectResources(e,s){const{addToSelection:t,edit:l}=s||{},d=this.selection.map(h=>g(h,this));let u=e;if(t){const h=r.difference(e,d);h.length>0&&(u=d.concat(h).filter(p=>p!=null))}r.isEqual(d,u)||this.setSelection(u,l)},setSelection(e,s){if(!r.isEqual(e,this.selection.map(t=>g(t,this)))){let t=!0;if(this.editors.length>0){if(n.detail.autoFromSingleSelection&&this.selection.length==1)t=!1;else if(n.detail.autoFromMultipleSelection&&n.detail.allowMultiple&&this.selection.length>1)t=!1;else if(n.detail.constrainToSelection){const l=this.selection.map(h=>g(h,this)),u=this.detailSelection.map(h=>g(h,this)).filter(h=>l.includes(h));this.detailSelection.filter(h=>!u.includes(g(h,this))).length>0&&(t=!1)}}if(!t)return;if(this.selection=e.map(l=>this.resources.find(d=>g(d,this)==l)).filter(l=>l!=null),n.detail.autoFromSingleSelection&&this.selection.length==1){const l=this.selection[0];(this.detailSelection.length!=1||g(this.detailSelection[0],this)!=g(l,this))&&(this.detailSelection=[l])}else if(n.detail.autoFromMultipleSelection&&n.detail.allowMultiple&&this.selection.length>1)r.isEqual(this.selection.map(l=>g(l,this)),this.detailSelection.map(l=>g(l,this)))||(this.detailSelection=r.clone(this.selection));else if(n.detail.constrainToSelection){const l=this.selection.map(h=>g(h,this)),d=this.detailSelection.map(h=>g(h,this)),u=d.filter(h=>l.includes(h));r.isEqual(u,d)||(this.detailSelection=this.detailSelection.filter(h=>u.includes(g(h,this))))}this.detailSelection.length==0?this.editingDetailSelection=!1:this.editingDetailSelection=s!==void 0?s:this.editingDetailSelection||n.detail.autoEdit}},hideDetail(){this.detailSelection.length>0&&(this.detailSelection=[],this.editingDetailSelection=!1)},showSelectionAsDetail(e){if(this.selection.length<=1||n.detail.allowMultiple){const s=this.selection.map(l=>g(l,this)),t=this.detailSelection.map(l=>g(l,this));r.isEqual(s,t)||(this.detailSelection=r.clone(this.selection)),this.detailSelection.length==0?this.editingDetailSelection=!1:this.editingDetailSelection=e!==void 0?e:this.editingDetailSelection||n.detail.autoEdit}},deregisterEditor(e){r.remove(this.editors,s=>s==e)},registerEditor(e){this.editors.includes(e)||this.editors.push(e)},deregisterListNavigator({name:e,listNavigator:s}){(s==null||this.listNavigators[e]==s)&&delete this.listNavigators[e]},registerListNavigator({name:e,listNavigator:s}){this.listNavigators[e]!=s&&(this.listNavigators[e]=s)}}});return(()=>{const e=(s,t)=>{const l=C(s,t);return ee.registerStore(l.$id,l),l};return e.$id=C.$id,e})()},ee=new ce,Ue=(y={})=>{var he,fe,ge,ve;console.log("hereaaaaaaa"),console.log(y);const{collectionId:n,draftBatchId:C,enabled:q,resourceType:e,options:s}=y,t=o.ref(void 0),l=o.ref(n),d=o.ref(C),u=o.ref(q??!0),h=o.ref([o.toRef(e)]),p=o.ref(s),D=o.computed(()=>d.value),T=o.ref(u.value),b=o.ref(w.v4()),F=o.ref((fe=(he=p.value)==null?void 0:he.filter)==null?void 0:fe.resourceIds),O=o.ref((ve=(ge=p.value)==null?void 0:ge.filter)==null?void 0:ve.query),k=o.computed(()=>d.value==null&&l.value!=null&&ee.getStore(l.value)!=null),Q=o.ref(k.value),R=o.computed(()=>L("status","Uninitialized"));function m(i){if(t.value)return i(t.value)}async function E(i){if(t.value)return await i(t.value)}function L(i,c){if(t.value)return t.value[i];if(c!==void 0)return c;throw"Attempted to use a REST collection store that has not been created, with no default value."}const I=(i={})=>{var me,pe,Se,ye;const{collectionId:c,draftBatchId:U,enabled:z,resourceType:re,options:Re}=i;l.value=c,d.value=U,u.value=z??!0,h.value=[o.toRef(re)],Re!=null&&(p.value=Re,F.value=(pe=(me=p.value)==null?void 0:me.filter)==null?void 0:pe.resourceIds,O.value=(ye=(Se=p.value)==null?void 0:Se.filter)==null?void 0:ye.query),b.value=w.v4(),H(u.value)},H=async i=>{i!=T.value&&(T.value=i,i&&(_(),x()))},Z=async i=>{F.value=i,await E(async c=>await c.setFilterResourceIds(F.value||null))},V=async i=>{if(O.value=i,R.value!="Uninitialized"){const c=i,U=o.computed(()=>r.isFunction(c)?S.value?c(S.value):null:c);await E(z=>z.setQuery(U.value||null))}},_=()=>{p.value=r.merge({},p.value||{},{filter:{resourceIds:F.value,query:O.value}})},S=o.computed(()=>h.value[0].value||void 0),B=function(i){const c=r.get(i,"filter.query"),U=r.get(i,"referencePathsToExpand"),z=r.isFunction(c)?c(S.value):c,re=S.value?r.isFunction(U)?U(S.value):U||[]:[];return{...r.cloneDeep(i||{}),filter:{...r.cloneDeep((i==null?void 0:i.filter)||{}),query:z},referencePathsToExpand:re}},P=o.computed(()=>B(p.value)),M=o.computed(()=>{if(!S.value)return null;if(P.value.restCollectionUrl!==void 0)return P.value.restCollectionUrl;if(!Q.value)return!S.value||!S.value.collectionName?null:D.value?`${G.config.apiBaseUrl}/draft-batches/${D.value}/${S.value.collectionName}`:`${G.config.apiBaseUrl}/${S.value.collectionName}`}),a=o.computed(()=>{var i;if(S.value)return r.mergeWith(r.cloneDeep(ue),P.value,{idProperty:(i=S.value)==null?void 0:i.idProperty,restCollectionUrl:M.value||""},(c,U)=>{if(r.isArray(U)&&U.length==0&&(c==null||r.isArray(c)))return U})}),f=o.ref(0),N=o.computed(()=>{var i;return f.value,l.value||S.value&&((i=S.value)==null?void 0:i.collectionName)&&(D.value?`draftBatches/${D.value}/${S.value.collectionName}/${b.value}`:`${S.value.collectionName}/${b.value}`)||null}),x=()=>{if(T.value){let i=!1;return S.value&&N.value&&(t.value=ee.getStore(N.value),t.value?i=!1:a.value&&(Q.value=!1,t.value=Ee(N.value,a.value)(),i=!0)),i}else return!1},X=()=>{N.value&&l.value==N.value?(t.value=void 0,x()):(t.value=void 0,f.value=f.value+1,x())};o.watch(D,(i,c)=>{r.isEqual(i,c)||X()}),o.watch(T,(i,c)=>{i!=c&&(i?x():t.value=void 0)}),o.watch(S,(i,c)=>{i&&!c?x():!i&&c||r.isEqual(i,c)||X()}),o.watch(a,(i,c)=>{r.isEqual(i,c)||X()}),o.watch(k,()=>{k.value||(Q.value=!1)}),o.watch(N,()=>x()),o.watch(M,(i,c)=>{r.isEqual(i,c)||X()});const W=[],qe=function(i){R.value!="Uninitialized"?o.nextTick(i):W.push(i)};return o.watch(R,(i,c)=>{if(i!="Uninitialized"&&c=="Uninitialized"){const U=r.clone(W);W.splice(0,W.length);for(const z of U)z()}}),x(),{collectionId:N,draftBatchId:D,resourceType:S,enabled:T,status:R,batchSaveAttempted:o.computed(()=>L("batchSaveAttempted",!1)),listNavigators:o.computed(()=>L("listNavigators",!1)),invalidResources:o.computed(()=>L("invalidResources",[])),resources:o.computed(()=>R.value!="Uninitialized"?(E(i=>i.ensureCollectionLoaded()),L("resources",[])):[]),transientData:o.computed(()=>L("transientData",[])),detailSelection:o.computed(()=>L("detailSelection",[])),editingDetailSelection:o.computed(()=>L("editingDetailSelection",!1)),selection:o.computed(()=>L("selection",[])),reconfigureCollection:I,setEditingDetailSelection:i=>m(c=>c.setEditingDetailSelection(i)),setEnabled:H,setFilterResourceIds:Z,setQuery:V,ensureStore:x,setBatchSaveAttempted:i=>m(c=>c.setBatchSaveAttempted(i)),clear:()=>m(i=>i.clear()),ensureCollectionLoaded:async()=>await E(async i=>i.ensureCollectionLoaded()),loadResources:async()=>await E(async i=>await i.loadResources()),addResource:i=>m(c=>c.addResource(i)),checkForDeletedResource:async i=>await E(async c=>await c.checkForDeletedResource(i))==!0,recordDeletion:i=>m(c=>c.recordDeletion(i)),recordInsertion:(i,{insertAtBeginning:c=!1,transientData:U=void 0}={})=>m(z=>z.recordInsertion(i,{insertAtBeginning:c,transientData:U})),recordUpdate:i=>m(c=>c.recordUpdate(i)),refreshResource:async i=>await E(async c=>await c.refreshResource(i)),deleteResource:async i=>await E(async c=>await c.deleteResource(i)),saveResource:async i=>await E(async c=>await c.saveResource(i)),saveResources:async i=>await E(async c=>await c.saveResources(i)),clearTransientData:()=>m(i=>i.clearTransientData()),setInvalidResourceIds:i=>m(c=>c.setInvalidResourceIds(i)),setTransientDataForResources:i=>m(c=>c.setTransientDataForResources(i)),clearSelection:()=>m(i=>i.clearSelection()),deselectResources:i=>m(c=>c.deselectResources(i)),selectResources:(i,c)=>m(U=>U.selectResources(i,c)),hideDetail:()=>m(i=>i.hideDetail()),deregisterEditor:i=>m(c=>c.deregisterEditor(i)),registerEditor:i=>m(c=>c.registerEditor(i)),deregisterListNavigator:i=>m(c=>c.deregisterListNavigator(i)),registerListNavigator:i=>m(c=>c.registerListNavigator(i)),onItemsStoreReady:qe}},Ce=()=>{ee.clearAllStores()};function ie(y,n){return r.get(y,(n==null?void 0:n.idProperty)||"_id")}const de={idProperty:"_id"},Y={resource:null,status:"NotLoaded"},Te=(y,n)=>{n=r.merge({},de,n),console.log(y),console.log(n);const C=oe.defineStore(y,{state:()=>({idProperty:n.idProperty,resourceId:n.resourceId||null,resourceUrl:n.resourceUrl||null,referencePathsToExpand:n.referencePathsToExpand||null,...Y}),getters:{currentResourceUrl:e=>(console.log(e),console.log(n),e.resourceUrl||(n.restCollectionUrl&&e.resourceId?`${n.restCollectionUrl}/${e.resourceId}`:null)||n.restCollectionUrl||null),fixedQueryParams:e=>{const s={};return e.referencePathsToExpand&&(s.r=J(e.referencePathsToExpand)),s}},actions:{reset(){for(const e in Y)this[e]=Y[e]},async setResourceId(e){const s=this.currentResourceUrl;this.resourceId=e,console.log(e),!r.isEqual(this.currentResourceUrl,s)&&this.status!="NotLoaded"&&(console.log("here"),await this.loadResource())},async setResourceUrl(e){const s=this.currentResourceUrl;this.resourceUrl=e,!r.isEqual(this.currentResourceUrl,s)&&this.status!="NotLoaded"&&await this.loadResource()},clear(){for(const e in Y)this[e]=Y[e]},async ensureResourceLoaded(){["Loaded","Loading","Failed"].includes(this.status)||await this.loadResource()},async loadResource(){this.reset();const e=w.v4();if(this._loadId=e,this.currentResourceUrl){this.status="Loading";const s=this.fixedQueryParams,t=r.cloneDeep(s),l=r.map(t,(u,h)=>u!=null?`${encodeURIComponent(h)}=${encodeURIComponent(u)}`:null).filter(u=>u!=null).join("&"),d=r.isEmpty(l)?this.currentResourceUrl:`${this.currentResourceUrl}?${l}`;try{const u=await $.get(d),h=this.fixedQueryParams;e!=this._loadId||!r.isEqual(s,h)?console.log(`Discarding resource fetched by obsolete query from ${d}.`):(this.resource=ne.decode(r.get(u,"data",{})),this.status="Loaded")}catch(u){console.log(`Error while loading resource (URL="${d}")`,u),this.reset(),this.status="Failed"}}else throw"Cannot load a resource because its URL, or its ID and collection URL, are unknown."},async checkForDeletedResource(){if(this.currentResourceUrl){let e;try{e=await $.get(this.currentResourceUrl)}catch(s){$.isAxiosError(s)&&(e=s.response)}return e&&e.status==404?(this.recordDeletion(),!0):!1}else throw"Cannot check for a deleted resource because its URL, or its ID and collection URL, are unknown."},recordDeletion(){this.resource=null,this.status="Loaded"},recordInsertion(e){this.resourceId=ie(e,this)||null,this.status=="Loaded"&&(this.resource=Object.freeze(e))},recordUpdate(e){this.resourceId=ie(e,this)||null,this.status=="Loaded"&&(this.resource=Object.freeze(e))},async refreshResource(){return await this.loadResource(),this.resource},async deleteResource(){if(this.currentResourceUrl)(await $.delete(this.currentResourceUrl)).status==200&&this.recordDeletion();else throw"Cannot delete a resource because its URL, or its ID and collection URL, are unknown."},async saveResource(e){const s=ie(e,this),t=s==null;if(!s)throw"The REST resource store cannot create new resources on the server.";if(!this.currentResourceUrl)throw"Cannot save a resource because its URL, or its ID and collection URL, are unknown.";const l=await $({method:t?"post":"put",url:this.currentResourceUrl,data:e});if(l.status==200){const d=l.data,u=await this.refreshResource();return t&&this.recordInsertion(u||d),u||Object.freeze(d)}return null},async makeCustomApiRequest(e){const{method:s,subpath:t,url:l,data:d}=e;let u=l;if(!u)if(this.currentResourceUrl)u=`${this.currentResourceUrl}/${t}`;else throw"Cannot make a custom API request for a resource because its URL, or its ID and collection URL, are unknown.";const h=await $({method:s||"get",url:u,data:d});return h.status>=200&&h.status<300?h.data:null}}});return(()=>{const e=(s,t)=>{const l=C(s,t);return se.registerStore(l.$id,l),l};return e.$id=C.$id,e})()},se=new ce,Le=(y={})=>{console.log("HERE!!!!"),console.log(y);const{resourceClientId:n,draftBatchId:C,enabled:q,resourceType:e,options:s}=y,t=o.ref(void 0),l=o.ref(n),d=o.ref(C),u=o.ref(q??!0),h=o.ref([o.toRef(e)]),p=o.ref(s),D=o.computed(()=>d.value),T=o.ref(u.value),b=o.ref(w.v4()),F=o.computed(()=>d.value==null&&l.value!=null&&se.getStore(l.value)!=null),O=o.ref(F.value),k=o.computed(()=>m("status","Uninitialized"));function Q(a){if(t.value)return a(t.value)}async function R(a){if(console.log("dispatchAsync"),console.log("STORE:"),console.log(t.value),t.value)return await a(t.value)}function m(a,f){if(t.value)return t.value[a];if(f!==void 0)return f;throw"Attempted to use a REST resource store that has not been created, with no default value."}const E=(a={})=>{const{resourceClientId:f,draftBatchId:N,enabled:x,resourceType:X,options:W}=a;l.value=f,d.value=N,u.value=x??!0,h.value=[o.toRef(X)],W!=null&&(p.value=W),b.value=w.v4(),L(u.value)},L=async a=>{a!=T.value&&(T.value=a,a&&P())},I=o.computed(()=>h.value[0].value||void 0),H=function(a){const f=r.get(a,"referencePathsToExpand"),N=I.value?r.isFunction(f)?f(I.value):f||[]:[];return{...r.cloneDeep(a||{}),referencePathsToExpand:N}},Z=o.computed(()=>H(p.value)),V=o.computed(()=>{if(!I.value)return null;if(!O.value)return!I.value||!I.value.collectionName?null:D.value?`${G.config.apiBaseUrl}/draft-batches/${D.value}/${I.value.collectionName}`:`${G.config.apiBaseUrl}/${I.value.collectionName}`}),_=o.computed(()=>{if(I.value&&V.value)return r.mergeWith(r.cloneDeep(de),Z.value,{idProperty:I.value.idProperty,restCollectionUrl:V.value},(a,f)=>{if(r.isArray(f)&&f.length==0&&(a==null||r.isArray(a)))return f})}),S=o.ref(0),B=o.computed(()=>{var a;return S.value,l.value||I.value&&((a=I.value)==null?void 0:a.collectionName)&&(D.value?`draftBatches/${D.value}/${I.value.collectionName}/${b.value}`:`${I.value.collectionName}/${b.value}`)||null}),P=()=>{if(T.value){let a=!1;return I.value&&B.value&&(t.value=se.getStore(B.value),t.value?a=!1:_.value&&(O.value=!1,t.value=Te(B.value,_.value)(),a=!0)),a}else return!1},M=()=>{B.value&&l.value==B.value?(t.value=void 0,P()):(t.value=void 0,S.value=S.value+1,P())};return o.watch(D,(a,f)=>{r.isEqual(a,f)||M()}),o.watch(T,(a,f)=>{a!=f&&(a?P():t.value=void 0)}),o.watch(I,(a,f)=>{a&&!f?P():!a&&f||r.isEqual(a,f)||M()}),o.watch(_,(a,f)=>{r.isEqual(a,f)||M()}),o.watch(F,()=>{F.value||(O.value=!1)}),o.watch(B,()=>P()),o.watch(V,(a,f)=>{r.isEqual(a,f)||M()}),P(),{resourceClientId:B,draftBatchId:D,enabled:T,resourceType:I,status:k,resource:o.computed(()=>k.value!="Uninitialized"?(R(a=>a.ensureResourceLoaded()),m("resource",[])):[]),resourceId:o.computed(()=>m("resourceId",null)),resourceUrl:o.computed(()=>m("resourceUrl",null)),reconfigureClient:E,setEnabled:L,setResourceId:async a=>await R(async f=>{console.log(f),console.log(f.setResourceId),console.log(a),await f.setResourceId(a)}),setResourceUrl:async a=>await R(async f=>await f.setResourceUrl(a)),ensureStore:P,clear:()=>Q(a=>a.clear()),ensureResourceLoaded:async()=>await R(async a=>a.ensureResourceLoaded()),loadResource:async()=>await R(async a=>await a.loadResource()),checkForDeletedResource:async()=>await R(async a=>await a.checkForDeletedResource())==!0,recordDeletion:()=>R(a=>a.recordDeletion()),recordInsertion:a=>R(f=>f.recordInsertion(a)),recordUpdate:a=>R(f=>f.recordUpdate(a)),refreshResource:async()=>await R(async a=>await a.refreshResource()),deleteResource:async()=>await R(async a=>await a.deleteResource()),saveResource:async a=>await R(async f=>await f.saveResource(a)),makeCustomApiRequest:async a=>await R(async f=>await f.makeCustomApiRequest(a))}},G={config:{...ae}};function $e(y){G.config=r.merge({},ae,y)}v.ApiClientError=we,v.clearAllRestCollections=Ce,v.initRestClient=$e,v.restClient=G,v.useRestCollection=Ue,v.useRestResource=Le,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rest-client-vue",
3
- "version": "1.0.0-a2",
3
+ "version": "1.0.0-a4",
4
4
  "author": {
5
5
  "name": "Jeremy Stone",
6
6
  "email": "stoneje@msn.com"