rest-client-vue 1.0.0-a4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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"})});
|
@@ -111,7 +111,7 @@ export type RestCollectionStoreReadyCallback = (() => void) | (() => Promise<voi
|
|
111
111
|
* resources from one collection endpoint of the REST API; but filters can be added when using a REST API that supports
|
112
112
|
* them.
|
113
113
|
*/
|
114
|
-
export interface RestCollection {
|
114
|
+
export interface RestCollection<T extends Resource = Resource> {
|
115
115
|
/**
|
116
116
|
* The REST collection's unique ID, which is used as the ID of its Pinia store.
|
117
117
|
*
|
@@ -139,17 +139,17 @@ export interface RestCollection {
|
|
139
139
|
* An array of resources that have failed validation. The client must manage this list by calling
|
140
140
|
* {@link setInvalidResourceIds}
|
141
141
|
**/
|
142
|
-
invalidResources: Ref<
|
142
|
+
invalidResources: Ref<T[]>;
|
143
143
|
/** The array of resources that have been loaded from the REST API into the local collection. */
|
144
|
-
resources: Ref<
|
144
|
+
resources: Ref<T[]>;
|
145
145
|
/** Transient data that a client has associated with the resources via {@link setTransientDataForResources}. */
|
146
146
|
transientData: Ref<any[]>;
|
147
147
|
/** Resources in the current detail view, a sublist of {@link resources}. */
|
148
|
-
detailSelection: Ref<
|
148
|
+
detailSelection: Ref<T[]>;
|
149
149
|
/** A flag indicating whether the detail selection is currently being edited or only displayed. */
|
150
150
|
editingDetailSelection: Ref<boolean>;
|
151
151
|
/** The current selection, a sublist of {@link resources}. */
|
152
|
-
selection: Ref<
|
152
|
+
selection: Ref<T[]>;
|
153
153
|
/**
|
154
154
|
* Apply new configuration options.
|
155
155
|
*
|
@@ -226,14 +226,14 @@ export interface RestCollection {
|
|
226
226
|
*
|
227
227
|
* @param resourceDefaults An object containing initial property values for the new resource.
|
228
228
|
*/
|
229
|
-
addResource: (resourceDefaults?:
|
229
|
+
addResource: (resourceDefaults?: T) => void;
|
230
230
|
checkForDeletedResource: (resourceId: ResourceId) => Promise<boolean>;
|
231
231
|
recordDeletion: (resourceId: ResourceId) => void;
|
232
|
-
recordInsertion: (resource:
|
232
|
+
recordInsertion: (resource: T, { insertAtBeginning, transientData }?: {
|
233
233
|
insertAtBeginning?: boolean;
|
234
234
|
transientData?: any;
|
235
235
|
}) => void;
|
236
|
-
recordUpdate: (resource:
|
236
|
+
recordUpdate: (resource: T) => void;
|
237
237
|
/**
|
238
238
|
* Refresh one resource by fetching it again from the REST API.
|
239
239
|
*
|
@@ -241,7 +241,7 @@ export interface RestCollection {
|
|
241
241
|
*
|
242
242
|
* @param resourceId The ID of the resource to refresh.
|
243
243
|
*/
|
244
|
-
refreshResource: (resourceId: ResourceId) => Promise<
|
244
|
+
refreshResource: (resourceId: ResourceId) => Promise<T | null | undefined>;
|
245
245
|
/**
|
246
246
|
* Delete one resource.
|
247
247
|
*
|
@@ -260,7 +260,7 @@ export interface RestCollection {
|
|
260
260
|
*
|
261
261
|
* @param resource The resource to create or update.
|
262
262
|
*/
|
263
|
-
saveResource: (resource:
|
263
|
+
saveResource: (resource: T) => Promise<T | null | undefined>;
|
264
264
|
/**
|
265
265
|
* Save multiple resources (new or updated).
|
266
266
|
*
|
@@ -271,7 +271,7 @@ export interface RestCollection {
|
|
271
271
|
*
|
272
272
|
* @param params TODO
|
273
273
|
*/
|
274
|
-
saveResources: (resources:
|
274
|
+
saveResources: (resources: T[]) => Promise<T[] | undefined>;
|
275
275
|
/**
|
276
276
|
* Record which resources have failed validation.
|
277
277
|
*
|
@@ -306,6 +306,6 @@ export interface RestCollection {
|
|
306
306
|
}) => void;
|
307
307
|
onItemsStoreReady: (callback: RestCollectionStoreReadyCallback) => void;
|
308
308
|
}
|
309
|
-
declare const _default: (params?: RestCollectionOptions) => RestCollection
|
309
|
+
declare const _default: <T extends object = object>(params?: RestCollectionOptions) => RestCollection<T>;
|
310
310
|
export default _default;
|
311
311
|
export declare const clearAllRestCollections: () => void;
|
@@ -56,7 +56,7 @@ export interface MakeCustomApiRequestParams {
|
|
56
56
|
* {@link RestResourceClient} is sometimes useful for consuming individual responses from APIs that are not really
|
57
57
|
* RESTful.
|
58
58
|
*/
|
59
|
-
export interface RestResourceClient {
|
59
|
+
export interface RestResourceClient<T extends Resource = Resource> {
|
60
60
|
/**
|
61
61
|
* The REST resource client's unique identifier, which is the ID of its Pinia store.
|
62
62
|
*
|
@@ -77,7 +77,7 @@ export interface RestResourceClient {
|
|
77
77
|
/** A status indicating whether resources have been loaded yet from the REST API. */
|
78
78
|
status: Ref<RestResourceStatus>;
|
79
79
|
/** The local version of the resource loaded from the REST API. */
|
80
|
-
resource: Ref<
|
80
|
+
resource: Ref<T>;
|
81
81
|
/** The ID of the REST resource. */
|
82
82
|
resourceId: Ref<ResourceId | null>;
|
83
83
|
/** The URL of the REST resource. */
|
@@ -129,12 +129,12 @@ export interface RestResourceClient {
|
|
129
129
|
*/
|
130
130
|
checkForDeletedResource: () => Promise<boolean>;
|
131
131
|
recordDeletion: () => void;
|
132
|
-
recordInsertion: (resource:
|
133
|
-
recordUpdate: (resource:
|
134
|
-
refreshResource: () => Promise<
|
132
|
+
recordInsertion: (resource: T) => void;
|
133
|
+
recordUpdate: (resource: T) => void;
|
134
|
+
refreshResource: () => Promise<T | null | undefined>;
|
135
135
|
deleteResource: () => Promise<void>;
|
136
|
-
saveResource: (resource:
|
136
|
+
saveResource: (resource: T) => Promise<T | null | undefined>;
|
137
137
|
makeCustomApiRequest: (params: MakeCustomApiRequestParams) => Promise<any>;
|
138
138
|
}
|
139
|
-
declare const _default: (params?: RestResourceOptions) => RestResourceClient
|
139
|
+
declare const _default: <T extends object = object>(params?: RestResourceOptions) => RestResourceClient<T>;
|
140
140
|
export default _default;
|
@@ -321,7 +321,7 @@ declare const makeStore: (storeId: string, options: RestCollectionStoreOptions)
|
|
321
321
|
* has an ID, an update will be attempted, while otherwise it will be added.
|
322
322
|
* @returns An array of refreshed local resources, one for each remote resource whose save operation succeeded.
|
323
323
|
*/
|
324
|
-
saveResources(resources: Resource[]): Promise<
|
324
|
+
saveResources(resources: Resource[]): Promise<Resource[]>;
|
325
325
|
/** Clear all transient data. */
|
326
326
|
clearTransientData(): void;
|
327
327
|
/**
|
@@ -670,7 +670,7 @@ export declare const storeRegistry: StoreRegistry<import("pinia").Store<string,
|
|
670
670
|
* has an ID, an update will be attempted, while otherwise it will be added.
|
671
671
|
* @returns An array of refreshed local resources, one for each remote resource whose save operation succeeded.
|
672
672
|
*/
|
673
|
-
saveResources(resources: Resource[]): Promise<
|
673
|
+
saveResources(resources: Resource[]): Promise<Resource[]>;
|
674
674
|
/** Clear all transient data. */
|
675
675
|
clearTransientData(): void;
|
676
676
|
/**
|