rest-client-vue 1.0.0-a4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/rest-client-vue.js +142 -146
- package/dist/rest-client-vue.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/rest-client-vue.js
CHANGED
@@ -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
|
13
|
+
import { v4 as X } 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
|
31
|
+
var O;
|
32
32
|
class Ie {
|
33
33
|
constructor() {
|
34
|
-
Se(this,
|
34
|
+
Se(this, O, {});
|
35
35
|
}
|
36
36
|
clearAllStores() {
|
37
|
-
for (const s in Q(this,
|
38
|
-
Q(this,
|
37
|
+
for (const s in Q(this, O))
|
38
|
+
Q(this, O)[s].clear();
|
39
39
|
}
|
40
40
|
destroyStore(s) {
|
41
|
-
Q(this,
|
41
|
+
Q(this, O)[s] && (Q(this, O)[s].$dispose(), delete Q(this, O)[s]);
|
42
42
|
}
|
43
43
|
getStore(s) {
|
44
|
-
return Q(this,
|
44
|
+
return Q(this, O)[s];
|
45
45
|
}
|
46
46
|
registerStore(s, R) {
|
47
|
-
Q(this,
|
47
|
+
Q(this, O)[s] = R;
|
48
48
|
}
|
49
49
|
}
|
50
|
-
|
50
|
+
O = 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 =
|
273
|
+
const r = X();
|
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
|
298
|
+
const U = 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(
|
301
|
+
).filter((g) => g != null).join("&"), T = a.isEmpty(U) ? s.restCollectionUrl : `${s.restCollectionUrl}?${U}`;
|
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
|
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;
|
308
308
|
console.log(
|
309
|
-
`Loaded ${
|
309
|
+
`Loaded ${E.length}${l ? "" : " more"} resources from ${s.restCollectionUrl}`
|
310
310
|
), l && (this.resources = []);
|
311
|
-
const W = [...this.resources, ...
|
311
|
+
const W = [...this.resources, ...E.map((H) => Object.freeze(H))];
|
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),
|
495
|
-
d && this.recordInsertion(
|
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));
|
496
496
|
}
|
497
497
|
return l;
|
498
498
|
}
|
@@ -681,50 +681,49 @@ const De = {
|
|
681
681
|
return e.$id = R.$id, e;
|
682
682
|
})();
|
683
683
|
}, ie = new Ie(), Be = (f = {}) => {
|
684
|
-
var
|
685
|
-
console.log("hereaaaaaaa"), console.log(f);
|
684
|
+
var oe, ce, ue, de;
|
686
685
|
const {
|
687
686
|
collectionId: s,
|
688
687
|
draftBatchId: R,
|
689
688
|
enabled: $,
|
690
689
|
resourceType: e,
|
691
690
|
options: r
|
692
|
-
} = f, t = I(void 0), l = I(s), u = I(R), c = I($ ?? !0), d = I([te(e)]), y = I(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(
|
693
692
|
() => u.value == null && l.value != null && ie.getStore(l.value) != null
|
694
693
|
), B = I(z.value), g = S(() => L("status", "Uninitialized"));
|
695
694
|
function m(i) {
|
696
695
|
if (t.value)
|
697
696
|
return i(t.value);
|
698
697
|
}
|
699
|
-
async function
|
698
|
+
async function E(i) {
|
700
699
|
if (t.value)
|
701
700
|
return await i(t.value);
|
702
701
|
}
|
703
|
-
function L(i,
|
702
|
+
function L(i, o) {
|
704
703
|
if (t.value)
|
705
704
|
return t.value[i];
|
706
|
-
if (
|
707
|
-
return
|
705
|
+
if (o !== void 0)
|
706
|
+
return o;
|
708
707
|
throw "Attempted to use a REST collection store that has not been created, with no default value.";
|
709
708
|
}
|
710
709
|
const D = (i = {}) => {
|
711
710
|
var fe, ve, ge, Re;
|
712
711
|
const {
|
713
|
-
collectionId:
|
712
|
+
collectionId: o,
|
714
713
|
draftBatchId: w,
|
715
|
-
enabled:
|
714
|
+
enabled: _,
|
716
715
|
resourceType: se,
|
717
716
|
options: he
|
718
717
|
} = i;
|
719
|
-
l.value =
|
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);
|
720
719
|
}, W = async (i) => {
|
721
720
|
i != T.value && (T.value = i, i && (K(), N()));
|
722
|
-
},
|
723
|
-
q.value = i, await
|
721
|
+
}, H = async (i) => {
|
722
|
+
q.value = i, await E(async (o) => await o.setFilterResourceIds(q.value || null));
|
724
723
|
}, J = async (i) => {
|
725
724
|
if (A.value = i, g.value != "Uninitialized") {
|
726
|
-
const
|
727
|
-
await
|
725
|
+
const o = i, w = S(() => a.isFunction(o) ? p.value ? o(p.value) : null : o);
|
726
|
+
await E((_) => _.setQuery(w.value || null));
|
728
727
|
}
|
729
728
|
}, K = () => {
|
730
729
|
y.value = a.merge({}, y.value || {}, {
|
@@ -733,12 +732,12 @@ const De = {
|
|
733
732
|
}, p = S(
|
734
733
|
() => d.value[0].value || void 0
|
735
734
|
), k = function(i) {
|
736
|
-
const
|
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 || [] : [];
|
737
736
|
return {
|
738
737
|
...a.cloneDeep(i || {}),
|
739
738
|
filter: {
|
740
739
|
...a.cloneDeep((i == null ? void 0 : i.filter) || {}),
|
741
|
-
query:
|
740
|
+
query: _
|
742
741
|
},
|
743
742
|
referencePathsToExpand: se
|
744
743
|
};
|
@@ -748,8 +747,8 @@ const De = {
|
|
748
747
|
if (x.value.restCollectionUrl !== void 0)
|
749
748
|
return x.value.restCollectionUrl;
|
750
749
|
if (!B.value)
|
751
|
-
return !p.value || !p.value.collectionName ? null :
|
752
|
-
}),
|
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(() => {
|
753
752
|
var i;
|
754
753
|
if (p.value)
|
755
754
|
return a.mergeWith(
|
@@ -759,52 +758,52 @@ const De = {
|
|
759
758
|
idProperty: (i = p.value) == null ? void 0 : i.idProperty,
|
760
759
|
restCollectionUrl: M.value || ""
|
761
760
|
},
|
762
|
-
(
|
763
|
-
if (a.isArray(w) && w.length == 0 && (
|
761
|
+
(o, w) => {
|
762
|
+
if (a.isArray(w) && w.length == 0 && (o == null || a.isArray(o)))
|
764
763
|
return w;
|
765
764
|
}
|
766
765
|
);
|
767
766
|
}), h = I(0), F = S(
|
768
767
|
() => {
|
769
768
|
var i;
|
770
|
-
return h.value, l.value || p.value && ((i = p.value) == null ? void 0 : i.collectionName) && (
|
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;
|
771
770
|
}
|
772
771
|
), N = () => {
|
773
772
|
if (T.value) {
|
774
773
|
let i = !1;
|
775
|
-
return p.value && F.value && (t.value = ie.getStore(F.value), t.value ? 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;
|
776
775
|
} else
|
777
776
|
return !1;
|
778
777
|
}, G = () => {
|
779
778
|
F.value && l.value == F.value ? (t.value = void 0, N()) : (t.value = void 0, h.value = h.value + 1, N());
|
780
779
|
};
|
781
|
-
C(
|
782
|
-
a.isEqual(i,
|
783
|
-
}), C(T, (i,
|
784
|
-
i !=
|
785
|
-
}), C(p, (i,
|
786
|
-
i && !
|
787
|
-
}), C(
|
788
|
-
a.isEqual(i,
|
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();
|
789
788
|
}), C(z, () => {
|
790
789
|
z.value || (B.value = !1);
|
791
|
-
}), C(F, () => N()), C(M, (i,
|
792
|
-
a.isEqual(i,
|
790
|
+
}), C(F, () => N()), C(M, (i, o) => {
|
791
|
+
a.isEqual(i, o) || G();
|
793
792
|
});
|
794
|
-
const j = [],
|
793
|
+
const j = [], Ee = function(i) {
|
795
794
|
g.value != "Uninitialized" ? Le(i) : j.push(i);
|
796
795
|
};
|
797
|
-
return C(g, (i,
|
798
|
-
if (i != "Uninitialized" &&
|
796
|
+
return C(g, (i, o) => {
|
797
|
+
if (i != "Uninitialized" && o == "Uninitialized") {
|
799
798
|
const w = a.clone(j);
|
800
799
|
j.splice(0, j.length);
|
801
|
-
for (const
|
802
|
-
|
800
|
+
for (const _ of w)
|
801
|
+
_();
|
803
802
|
}
|
804
803
|
}), N(), {
|
805
804
|
// Configuration
|
806
805
|
collectionId: F,
|
807
|
-
draftBatchId:
|
806
|
+
draftBatchId: U,
|
808
807
|
resourceType: p,
|
809
808
|
// Status
|
810
809
|
enabled: T,
|
@@ -813,7 +812,7 @@ const De = {
|
|
813
812
|
listNavigators: S(() => L("listNavigators", !1)),
|
814
813
|
// Resources loaded from the REST API
|
815
814
|
invalidResources: S(() => L("invalidResources", [])),
|
816
|
-
resources: S(() => g.value != "Uninitialized" ? (
|
815
|
+
resources: S(() => g.value != "Uninitialized" ? (E((i) => i.ensureCollectionLoaded()), L("resources", [])) : []),
|
817
816
|
// Transient data
|
818
817
|
transientData: S(() => L("transientData", [])),
|
819
818
|
// Selection and detail selection
|
@@ -823,56 +822,56 @@ const De = {
|
|
823
822
|
// Methods: Configuration
|
824
823
|
reconfigureCollection: D,
|
825
824
|
setEditingDetailSelection: (i) => m(
|
826
|
-
(
|
825
|
+
(o) => o.setEditingDetailSelection(i)
|
827
826
|
),
|
828
827
|
setEnabled: W,
|
829
|
-
setFilterResourceIds:
|
828
|
+
setFilterResourceIds: H,
|
830
829
|
setQuery: J,
|
831
830
|
// Methods: Status
|
832
831
|
ensureStore: N,
|
833
832
|
// TODO Rename
|
834
|
-
setBatchSaveAttempted: (i) => m((
|
833
|
+
setBatchSaveAttempted: (i) => m((o) => o.setBatchSaveAttempted(i)),
|
835
834
|
// Local collection management
|
836
835
|
clear: () => m((i) => i.clear()),
|
837
|
-
ensureCollectionLoaded: async () => await
|
838
|
-
loadResources: async () => await
|
836
|
+
ensureCollectionLoaded: async () => await E(async (i) => i.ensureCollectionLoaded()),
|
837
|
+
loadResources: async () => await E(async (i) => await i.loadResources()),
|
839
838
|
// Methods: Recording changes to the collection
|
840
|
-
addResource: (i) => m((
|
841
|
-
checkForDeletedResource: async (i) => await
|
842
|
-
recordDeletion: (i) => m((
|
843
|
-
recordInsertion: (i, { insertAtBeginning:
|
844
|
-
recordUpdate: (i) => m((
|
845
|
-
refreshResource: async (i) => await
|
846
|
-
async (
|
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)
|
847
846
|
),
|
848
847
|
// Methods: Modifying the collection
|
849
|
-
deleteResource: async (i) => await
|
850
|
-
async (
|
848
|
+
deleteResource: async (i) => await E(
|
849
|
+
async (o) => await o.deleteResource(i)
|
851
850
|
),
|
852
|
-
saveResource: async (i) => await
|
853
|
-
saveResources: async (i) => await
|
851
|
+
saveResource: async (i) => await E(async (o) => await o.saveResource(i)),
|
852
|
+
saveResources: async (i) => await E(async (o) => await o.saveResources(i)),
|
854
853
|
// Methods: Transient data
|
855
854
|
clearTransientData: () => m((i) => i.clearTransientData()),
|
856
|
-
setInvalidResourceIds: (i) => m((
|
855
|
+
setInvalidResourceIds: (i) => m((o) => o.setInvalidResourceIds(i)),
|
857
856
|
setTransientDataForResources: (i) => m(
|
858
|
-
(
|
857
|
+
(o) => o.setTransientDataForResources(i)
|
859
858
|
),
|
860
859
|
// Methods: Selection and detail selection
|
861
860
|
clearSelection: () => m((i) => i.clearSelection()),
|
862
|
-
deselectResources: (i) => m((
|
863
|
-
selectResources: (i,
|
864
|
-
(w) => w.selectResources(i,
|
861
|
+
deselectResources: (i) => m((o) => o.deselectResources(i)),
|
862
|
+
selectResources: (i, o) => m(
|
863
|
+
(w) => w.selectResources(i, o)
|
865
864
|
),
|
866
865
|
// Methods: Managing the detail view
|
867
866
|
hideDetail: () => m((i) => i.hideDetail()),
|
868
867
|
// Methods: Editors
|
869
|
-
deregisterEditor: (i) => m((
|
870
|
-
registerEditor: (i) => m((
|
868
|
+
deregisterEditor: (i) => m((o) => o.deregisterEditor(i)),
|
869
|
+
registerEditor: (i) => m((o) => o.registerEditor(i)),
|
871
870
|
// Methods: List navigators
|
872
|
-
deregisterListNavigator: (i) => m((
|
873
|
-
registerListNavigator: (i) => m((
|
871
|
+
deregisterListNavigator: (i) => m((o) => o.deregisterListNavigator(i)),
|
872
|
+
registerListNavigator: (i) => m((o) => o.registerListNavigator(i)),
|
874
873
|
// Callbacks
|
875
|
-
onItemsStoreReady:
|
874
|
+
onItemsStoreReady: Ee
|
876
875
|
};
|
877
876
|
}, Qe = () => {
|
878
877
|
ie.clearAllStores();
|
@@ -880,13 +879,13 @@ const De = {
|
|
880
879
|
function ae(f, s) {
|
881
880
|
return a.get(f, (s == null ? void 0 : s.idProperty) || "_id");
|
882
881
|
}
|
883
|
-
const
|
882
|
+
const Ue = {
|
884
883
|
idProperty: "_id"
|
885
884
|
}, Z = {
|
886
885
|
resource: null,
|
887
886
|
status: "NotLoaded"
|
888
887
|
}, xe = (f, s) => {
|
889
|
-
s = a.merge({},
|
888
|
+
s = a.merge({}, Ue, s);
|
890
889
|
const R = ye(f, {
|
891
890
|
state: () => ({
|
892
891
|
idProperty: s.idProperty,
|
@@ -896,7 +895,7 @@ const Ee = {
|
|
896
895
|
...Z
|
897
896
|
}),
|
898
897
|
getters: {
|
899
|
-
currentResourceUrl: (e) =>
|
898
|
+
currentResourceUrl: (e) => e.resourceUrl || (s.restCollectionUrl && e.resourceId ? `${s.restCollectionUrl}/${e.resourceId}` : null) || s.restCollectionUrl || null,
|
900
899
|
/** Get the REST query parameters that can be determined from the options. */
|
901
900
|
fixedQueryParams: (e) => {
|
902
901
|
const r = {};
|
@@ -918,7 +917,7 @@ const Ee = {
|
|
918
917
|
},
|
919
918
|
async setResourceId(e) {
|
920
919
|
const r = this.currentResourceUrl;
|
921
|
-
this.resourceId = e,
|
920
|
+
this.resourceId = e, !a.isEqual(this.currentResourceUrl, r) && this.status != "NotLoaded" && await this.loadResource();
|
922
921
|
},
|
923
922
|
async setResourceUrl(e) {
|
924
923
|
const r = this.currentResourceUrl;
|
@@ -951,7 +950,7 @@ const Ee = {
|
|
951
950
|
*/
|
952
951
|
async loadResource() {
|
953
952
|
this.reset();
|
954
|
-
const e =
|
953
|
+
const e = X();
|
955
954
|
if (this._loadId = e, this.currentResourceUrl) {
|
956
955
|
this.status = "Loading";
|
957
956
|
const r = this.fixedQueryParams, t = a.cloneDeep(r), l = a.map(
|
@@ -1110,137 +1109,134 @@ const Ee = {
|
|
1110
1109
|
return (() => {
|
1111
1110
|
const e = (r, t) => {
|
1112
1111
|
const l = R(r, t);
|
1113
|
-
return
|
1112
|
+
return ne.registerStore(l.$id, l), l;
|
1114
1113
|
};
|
1115
1114
|
return e.$id = R.$id, e;
|
1116
1115
|
})();
|
1117
|
-
},
|
1118
|
-
console.log("HERE!!!!"), console.log(f);
|
1116
|
+
}, ne = new Ie(), Me = (f = {}) => {
|
1119
1117
|
const {
|
1120
1118
|
resourceClientId: s,
|
1121
1119
|
draftBatchId: R,
|
1122
1120
|
enabled: $,
|
1123
1121
|
resourceType: e,
|
1124
1122
|
options: r
|
1125
|
-
} = f, t = I(void 0), l = I(s), u = I(R), c = I($ ?? !0), d = I([te(e)]), y = I(r),
|
1126
|
-
() => u.value == null && l.value != null &&
|
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
|
1127
1125
|
), A = I(q.value), z = S(() => m("status", "Uninitialized"));
|
1128
|
-
function B(
|
1126
|
+
function B(n) {
|
1129
1127
|
if (t.value)
|
1130
|
-
return
|
1128
|
+
return n(t.value);
|
1131
1129
|
}
|
1132
|
-
async function g(
|
1133
|
-
if (
|
1134
|
-
return await
|
1130
|
+
async function g(n) {
|
1131
|
+
if (t.value)
|
1132
|
+
return await n(t.value);
|
1135
1133
|
}
|
1136
|
-
function m(
|
1134
|
+
function m(n, h) {
|
1137
1135
|
if (t.value)
|
1138
|
-
return t.value[
|
1136
|
+
return t.value[n];
|
1139
1137
|
if (h !== void 0)
|
1140
1138
|
return h;
|
1141
1139
|
throw "Attempted to use a REST resource store that has not been created, with no default value.";
|
1142
1140
|
}
|
1143
|
-
const
|
1141
|
+
const E = (n = {}) => {
|
1144
1142
|
const {
|
1145
1143
|
resourceClientId: h,
|
1146
1144
|
draftBatchId: F,
|
1147
1145
|
enabled: N,
|
1148
1146
|
resourceType: G,
|
1149
1147
|
options: j
|
1150
|
-
} =
|
1151
|
-
l.value = h, u.value = F, c.value = N ?? !0, d.value = [te(G)], j != null && (y.value = j), b.value =
|
1152
|
-
}, L = async (
|
1153
|
-
|
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());
|
1154
1152
|
}, D = S(
|
1155
1153
|
() => d.value[0].value || void 0
|
1156
|
-
), W = function(
|
1157
|
-
const h = a.get(
|
1154
|
+
), W = function(n) {
|
1155
|
+
const h = a.get(n, "referencePathsToExpand"), F = D.value ? a.isFunction(h) ? h(D.value) : h || [] : [];
|
1158
1156
|
return {
|
1159
|
-
...a.cloneDeep(
|
1157
|
+
...a.cloneDeep(n || {}),
|
1160
1158
|
referencePathsToExpand: F
|
1161
1159
|
};
|
1162
|
-
},
|
1160
|
+
}, H = S(() => W(y.value)), J = S(() => {
|
1163
1161
|
if (!D.value)
|
1164
1162
|
return null;
|
1165
1163
|
if (!A.value)
|
1166
|
-
return !D.value || !D.value.collectionName ? null :
|
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}`;
|
1167
1165
|
}), K = S(() => {
|
1168
1166
|
if (D.value && J.value)
|
1169
1167
|
return a.mergeWith(
|
1170
|
-
a.cloneDeep(
|
1171
|
-
|
1168
|
+
a.cloneDeep(Ue),
|
1169
|
+
H.value,
|
1172
1170
|
{
|
1173
1171
|
idProperty: D.value.idProperty,
|
1174
1172
|
restCollectionUrl: J.value
|
1175
1173
|
},
|
1176
|
-
(
|
1177
|
-
if (a.isArray(h) && h.length == 0 && (
|
1174
|
+
(n, h) => {
|
1175
|
+
if (a.isArray(h) && h.length == 0 && (n == null || a.isArray(n)))
|
1178
1176
|
return h;
|
1179
1177
|
}
|
1180
1178
|
);
|
1181
1179
|
}), p = I(0), k = S(
|
1182
1180
|
() => {
|
1183
|
-
var
|
1184
|
-
return p.value, l.value || D.value && ((
|
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;
|
1185
1183
|
}
|
1186
1184
|
), x = () => {
|
1187
1185
|
if (T.value) {
|
1188
|
-
let
|
1189
|
-
return D.value && k.value && (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;
|
1190
1188
|
} else
|
1191
1189
|
return !1;
|
1192
1190
|
}, M = () => {
|
1193
1191
|
k.value && l.value == k.value ? (t.value = void 0, x()) : (t.value = void 0, p.value = p.value + 1, x());
|
1194
1192
|
};
|
1195
|
-
return C(
|
1196
|
-
a.isEqual(
|
1197
|
-
}), C(T, (
|
1198
|
-
|
1199
|
-
}), C(D, (
|
1200
|
-
|
1201
|
-
}), C(K, (
|
1202
|
-
a.isEqual(
|
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();
|
1203
1201
|
}), C(q, () => {
|
1204
1202
|
q.value || (A.value = !1);
|
1205
|
-
}), C(k, () => x()), C(J, (
|
1206
|
-
a.isEqual(
|
1203
|
+
}), C(k, () => x()), C(J, (n, h) => {
|
1204
|
+
a.isEqual(n, h) || M();
|
1207
1205
|
}), x(), {
|
1208
1206
|
// Configuration
|
1209
1207
|
resourceClientId: k,
|
1210
|
-
draftBatchId:
|
1208
|
+
draftBatchId: U,
|
1211
1209
|
enabled: T,
|
1212
1210
|
resourceType: D,
|
1213
1211
|
// Status
|
1214
1212
|
status: z,
|
1215
1213
|
// Resources loaded from the REST API
|
1216
|
-
resource: S(() => z.value != "Uninitialized" ? (g((
|
1214
|
+
resource: S(() => z.value != "Uninitialized" ? (g((n) => n.ensureResourceLoaded()), m("resource", [])) : []),
|
1217
1215
|
resourceId: S(() => m("resourceId", null)),
|
1218
1216
|
resourceUrl: S(() => m("resourceUrl", null)),
|
1219
1217
|
// Methods: Configuration
|
1220
|
-
reconfigureClient:
|
1218
|
+
reconfigureClient: E,
|
1221
1219
|
setEnabled: L,
|
1222
|
-
setResourceId: async (
|
1223
|
-
|
1224
|
-
}),
|
1225
|
-
setResourceUrl: async (o) => await g(async (h) => await h.setResourceUrl(o)),
|
1220
|
+
setResourceId: async (n) => await g(async (h) => await h.setResourceId(n)),
|
1221
|
+
setResourceUrl: async (n) => await g(async (h) => await h.setResourceUrl(n)),
|
1226
1222
|
// Methods: Status
|
1227
1223
|
ensureStore: x,
|
1228
1224
|
// Methods: Resource management
|
1229
|
-
clear: () => B((
|
1230
|
-
ensureResourceLoaded: async () => await g(async (
|
1231
|
-
loadResource: async () => await g(async (
|
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()),
|
1232
1228
|
// Methods: Recording changes to the resource
|
1233
|
-
checkForDeletedResource: async () => await g(async (
|
1234
|
-
recordDeletion: () => g((
|
1235
|
-
recordInsertion: (
|
1236
|
-
recordUpdate: (
|
1237
|
-
refreshResource: async () => await g(async (
|
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()),
|
1238
1234
|
// Methods: Modifying the resource
|
1239
|
-
deleteResource: async () => await g(async (
|
1240
|
-
saveResource: async (
|
1235
|
+
deleteResource: async () => await g(async (n) => await n.deleteResource()),
|
1236
|
+
saveResource: async (n) => await g(async (h) => await h.saveResource(n)),
|
1241
1237
|
// Methods: Custom API endpoints
|
1242
|
-
makeCustomApiRequest: async (
|
1243
|
-
async (h) => await h.makeCustomApiRequest(
|
1238
|
+
makeCustomApiRequest: async (n) => await g(
|
1239
|
+
async (h) => await h.makeCustomApiRequest(n)
|
1244
1240
|
)
|
1245
1241
|
};
|
1246
1242
|
}, 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,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"})});
|
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"})});
|