@mgarlik/datastore 0.1.21 → 0.1.23
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/index.cjs +64 -126
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +76 -59
- package/dist/index.d.ts +76 -59
- package/dist/index.js +64 -126
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -632,8 +632,6 @@ var buildUri = ({
|
|
|
632
632
|
return dataSource.uri || `${dataSource.model || ""}/`;
|
|
633
633
|
};
|
|
634
634
|
var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime }) => {
|
|
635
|
-
if (dataSource) console.error("[axios] GET Data Source: ", buildUri({ dataSource, method: "read" }));
|
|
636
|
-
else console.error("axios No DataSource for ", id);
|
|
637
635
|
let persistedData = [];
|
|
638
636
|
var params = { ...dataSource?.params };
|
|
639
637
|
if (dataSource?.filter) params.filter = dataSource.filter;
|
|
@@ -649,7 +647,6 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
|
|
|
649
647
|
if (changeTime) {
|
|
650
648
|
params.changeTime = changeTime;
|
|
651
649
|
} else if (isPersisting && SQLite) {
|
|
652
|
-
console.error("[axios] Nacitani dat z SQLite pro ", id, " s parametrem changeTimeFrom: ", params.changeTimeFrom);
|
|
653
650
|
const qDatum = await SQLite.read(`SELECT * FROM documents WHERE model = '${id}' ORDER BY lastUpdate DESC`);
|
|
654
651
|
console.warn("[axios] SQLite.read Posledni datum update: ", qDatum[0]?.lastUpdate);
|
|
655
652
|
if (qDatum[0]?.lastUpdate) params.changeTimeFrom = qDatum[0].lastUpdate;
|
|
@@ -668,7 +665,6 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
|
|
|
668
665
|
}).filter((item) => item !== null);
|
|
669
666
|
}
|
|
670
667
|
if (dataSource) {
|
|
671
|
-
console.error("[axios] Stahuji data z ", buildUri({ dataSource, method: "read" }), " s parametry ", params);
|
|
672
668
|
const axiosResponse = await axios.get(buildUri({ dataSource, method: "read" }), { params: serializeParams(params) });
|
|
673
669
|
if (schema && !dataSource.readAllFields) {
|
|
674
670
|
const mapBySchema = (element) => {
|
|
@@ -705,14 +701,6 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
|
|
|
705
701
|
} else {
|
|
706
702
|
newData = axiosResponse.data.data;
|
|
707
703
|
}
|
|
708
|
-
const dataCount = Array.isArray(newData) ? newData.length : "single";
|
|
709
|
-
console.error(
|
|
710
|
-
`[axios](SERVER TIME: ${axiosResponse.data.queryTime}) Data:`,
|
|
711
|
-
dataCount,
|
|
712
|
-
"items, Size:",
|
|
713
|
-
JSON.stringify(newData).length,
|
|
714
|
-
"Bytes"
|
|
715
|
-
);
|
|
716
704
|
if (isPersisting && SQLite) {
|
|
717
705
|
await saveData({ providerId: id, newData, SQLite, dateUpdate: axiosResponse.data.queryAt || (/* @__PURE__ */ new Date()).toISOString() });
|
|
718
706
|
}
|
|
@@ -723,7 +711,6 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
|
|
|
723
711
|
persistedData.forEach((item) => map.set(item.id, item));
|
|
724
712
|
newData.forEach((item) => map.set(item.id, item));
|
|
725
713
|
const updatedArray = Array.from(map.values());
|
|
726
|
-
console.error("[axios] NEW DATA: ", updatedArray);
|
|
727
714
|
return updatedArray;
|
|
728
715
|
} else {
|
|
729
716
|
return newData || [];
|
|
@@ -750,6 +737,7 @@ var patchData = async ({ dataSource, variant, data }) => {
|
|
|
750
737
|
return response.data.data;
|
|
751
738
|
} catch (e) {
|
|
752
739
|
console.error(`[AXIOS] PATCH DATA: ${e}`);
|
|
740
|
+
return e;
|
|
753
741
|
}
|
|
754
742
|
};
|
|
755
743
|
var deleteData = async ({ dataSource, data }) => {
|
|
@@ -1021,7 +1009,6 @@ var DataStoreProvider = forwardRef(
|
|
|
1021
1009
|
...rest,
|
|
1022
1010
|
changeTime: lastUpdate.time
|
|
1023
1011
|
});
|
|
1024
|
-
console.error("[DSP] synchronizeDataStore response:", key, response);
|
|
1025
1012
|
if (response.length > 0) {
|
|
1026
1013
|
const updateData = {};
|
|
1027
1014
|
response.forEach((item) => {
|
|
@@ -1309,7 +1296,6 @@ var DataStoreProvider = forwardRef(
|
|
|
1309
1296
|
schema: dP.schema,
|
|
1310
1297
|
SQLite: persistenceStorage || void 0
|
|
1311
1298
|
});
|
|
1312
|
-
console.error("[DSP] updateDocument dataFromSource:", model, documentId, dataFromSource);
|
|
1313
1299
|
data = dataFromSource;
|
|
1314
1300
|
}
|
|
1315
1301
|
}
|
|
@@ -1714,7 +1700,6 @@ var DataStoreProvider = forwardRef(
|
|
|
1714
1700
|
isPersisting: !!newItem.isPersisting && !!persistenceStorage,
|
|
1715
1701
|
SQLite: persistenceStorage || void 0
|
|
1716
1702
|
});
|
|
1717
|
-
console.error("[DSP] registerProvider dataFromSource:", id, dataFromSource);
|
|
1718
1703
|
var dataList = [];
|
|
1719
1704
|
var items = {};
|
|
1720
1705
|
const dataS = Array.isArray(dataFromSource) ? dataFromSource : [dataFromSource];
|
|
@@ -1884,78 +1869,66 @@ var DataStoreProvider_default = DataStoreProvider;
|
|
|
1884
1869
|
|
|
1885
1870
|
// src/useDataProvider.tsx
|
|
1886
1871
|
import { useCallback as useCallback2, useContext as useContext2, useEffect as useEffect2, useMemo as useMemo2, useState as useState2, useSyncExternalStore } from "react";
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
configs.push({
|
|
1894
|
-
fieldKey,
|
|
1895
|
-
dataProvider: schemaItem.options.dataProvider,
|
|
1896
|
-
optionKeys: schemaItem.options.optionKeys,
|
|
1897
|
-
filter: schemaItem.options.filter
|
|
1898
|
-
});
|
|
1899
|
-
return;
|
|
1900
|
-
}
|
|
1901
|
-
if (schemaItem.dataSource?.dataProvider) {
|
|
1902
|
-
configs.push({
|
|
1903
|
-
fieldKey,
|
|
1904
|
-
dataProvider: schemaItem.dataSource.dataProvider,
|
|
1905
|
-
optionKeys: schemaItem.optionKeys,
|
|
1906
|
-
filter: schemaItem.filter
|
|
1907
|
-
});
|
|
1908
|
-
}
|
|
1909
|
-
});
|
|
1910
|
-
return configs;
|
|
1872
|
+
import { filterJsonDocuments as filterDocuments2 } from "@mgarlik/json-filter";
|
|
1873
|
+
var findAllDataProviders = (obj) => {
|
|
1874
|
+
if (!obj || typeof obj !== "object") return [];
|
|
1875
|
+
if (obj.dataSource?.dataProvider) return [obj.dataSource.dataProvider];
|
|
1876
|
+
if (Array.isArray(obj)) return obj.flatMap(findAllDataProviders);
|
|
1877
|
+
return Object.values(obj).flatMap(findAllDataProviders);
|
|
1911
1878
|
};
|
|
1912
1879
|
var resolveProviderRef = (providerId, providers, presetProviders, params) => {
|
|
1913
1880
|
if (providers[providerId]) {
|
|
1914
|
-
return {
|
|
1915
|
-
templateId: providerId,
|
|
1916
|
-
runtimeId: providerId
|
|
1917
|
-
};
|
|
1881
|
+
return { templateId: providerId, runtimeId: providerId };
|
|
1918
1882
|
}
|
|
1919
1883
|
if (presetProviders[providerId]) {
|
|
1920
1884
|
const renderedProvider = renderJSONTemplate(presetProviders[providerId], params ?? void 0);
|
|
1921
|
-
return {
|
|
1922
|
-
templateId: providerId,
|
|
1923
|
-
runtimeId: renderedProvider.id
|
|
1924
|
-
};
|
|
1885
|
+
return { templateId: providerId, runtimeId: renderedProvider.id };
|
|
1925
1886
|
}
|
|
1926
|
-
return {
|
|
1927
|
-
templateId: providerId,
|
|
1928
|
-
runtimeId: providerId
|
|
1929
|
-
};
|
|
1887
|
+
return { templateId: providerId, runtimeId: providerId };
|
|
1930
1888
|
};
|
|
1931
|
-
var createOptionFromDocument = (doc,
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1889
|
+
var createOptionFromDocument = (doc, map) => {
|
|
1890
|
+
if (!map) {
|
|
1891
|
+
return { ...doc };
|
|
1892
|
+
}
|
|
1893
|
+
return Object.entries(map).reduce(
|
|
1894
|
+
(acc, [targetKey, sourcePath]) => {
|
|
1895
|
+
if (typeof sourcePath === "string") {
|
|
1896
|
+
acc[targetKey] = getValueByDotPath(doc, sourcePath);
|
|
1897
|
+
} else if (sourcePath && typeof sourcePath === "object") {
|
|
1898
|
+
const titlePath = sourcePath.title || sourcePath.name;
|
|
1899
|
+
if (titlePath) acc[targetKey] = getValueByDotPath(doc, titlePath);
|
|
1900
|
+
if (sourcePath.icon) acc[`${targetKey}Icon`] = getValueByDotPath(doc, sourcePath.icon);
|
|
1901
|
+
}
|
|
1902
|
+
return acc;
|
|
1903
|
+
},
|
|
1904
|
+
{}
|
|
1905
|
+
);
|
|
1906
|
+
};
|
|
1907
|
+
var resolveDataSourcesDeep = (obj, providers, documents, presetProviders, params, logLabel = "options") => {
|
|
1908
|
+
if (!obj || typeof obj !== "object") return obj;
|
|
1909
|
+
if (obj.dataSource?.dataProvider) {
|
|
1910
|
+
const providerRef = resolveProviderRef(obj.dataSource.dataProvider, providers, presetProviders, params);
|
|
1911
|
+
const optionProvider = providers[providerRef.runtimeId];
|
|
1912
|
+
if (!optionProvider) {
|
|
1913
|
+
systemLog("usedp", `Nenalezen provider pro ${logLabel}`, obj.dataSource.dataProvider);
|
|
1914
|
+
return obj;
|
|
1944
1915
|
}
|
|
1945
|
-
|
|
1946
|
-
|
|
1916
|
+
let optionDocuments = (optionProvider.data || []).map((docId) => {
|
|
1917
|
+
const docData = documents[docId];
|
|
1918
|
+
if (!docData) return null;
|
|
1919
|
+
return { id: docId, ...docData };
|
|
1920
|
+
}).filter((item) => !!item);
|
|
1921
|
+
if (obj.dataSource.filter) {
|
|
1922
|
+
optionDocuments = filterDocuments2(optionDocuments, obj.dataSource.filter);
|
|
1923
|
+
}
|
|
1924
|
+
return optionDocuments.map((item) => createOptionFromDocument(item, obj.dataSource.map));
|
|
1947
1925
|
}
|
|
1948
|
-
if (
|
|
1949
|
-
return
|
|
1950
|
-
value: optionValue,
|
|
1951
|
-
label: optionLabel,
|
|
1952
|
-
icon: optionIcon
|
|
1953
|
-
};
|
|
1926
|
+
if (Array.isArray(obj)) {
|
|
1927
|
+
return obj.map((item) => resolveDataSourcesDeep(item, providers, documents, presetProviders, params, logLabel));
|
|
1954
1928
|
}
|
|
1955
|
-
return
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
};
|
|
1929
|
+
return Object.fromEntries(
|
|
1930
|
+
Object.entries(obj).map(([key, val]) => [key, resolveDataSourcesDeep(val, providers, documents, presetProviders, params, logLabel)])
|
|
1931
|
+
);
|
|
1959
1932
|
};
|
|
1960
1933
|
var useDataProvider = (id, params, dataFilter, settings) => {
|
|
1961
1934
|
const [providerId, setProviderId] = useState2(null);
|
|
@@ -1986,12 +1959,13 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
1986
1959
|
);
|
|
1987
1960
|
const dependentProviders = useMemo2(() => {
|
|
1988
1961
|
const providers = getExternalProviders();
|
|
1989
|
-
if (!providerId || !providers[providerId]
|
|
1962
|
+
if (!providerId || !providers[providerId]) return [];
|
|
1990
1963
|
const schema = providers[providerId]?.schema;
|
|
1991
|
-
const
|
|
1964
|
+
const layout = providers[providerId]?.layout;
|
|
1965
|
+
const allProviderIds = [...findAllDataProviders(schema), ...findAllDataProviders(layout)];
|
|
1992
1966
|
const uniqueProviders = {};
|
|
1993
|
-
|
|
1994
|
-
const resolved = resolveProviderRef(
|
|
1967
|
+
allProviderIds.forEach((dataProvider) => {
|
|
1968
|
+
const resolved = resolveProviderRef(dataProvider, providers, presetProviders, params);
|
|
1995
1969
|
if (resolved.runtimeId === providerId) return;
|
|
1996
1970
|
uniqueProviders[resolved.runtimeId] = resolved;
|
|
1997
1971
|
});
|
|
@@ -2106,7 +2080,7 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
2106
2080
|
dispatch("deleteProviderItem", { providerId, data, params: params2 }, callback);
|
|
2107
2081
|
};
|
|
2108
2082
|
const createItem = (data, callback) => {
|
|
2109
|
-
return new Promise((resolve
|
|
2083
|
+
return new Promise((resolve) => {
|
|
2110
2084
|
const wrappedCallback = (result) => {
|
|
2111
2085
|
callback?.(result);
|
|
2112
2086
|
resolve(result);
|
|
@@ -2119,10 +2093,7 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
2119
2093
|
const providers = getExternalProviders();
|
|
2120
2094
|
const documents = getExternalDocuments();
|
|
2121
2095
|
if (!providerId || !providers[providerId]) {
|
|
2122
|
-
return {
|
|
2123
|
-
data: [],
|
|
2124
|
-
schema: void 0
|
|
2125
|
-
};
|
|
2096
|
+
return { data: [], schema: void 0, layout: void 0 };
|
|
2126
2097
|
}
|
|
2127
2098
|
let docs = [];
|
|
2128
2099
|
providers[providerId]?.data.forEach((docId) => {
|
|
@@ -2134,54 +2105,23 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
2134
2105
|
} else if (settings?.document) {
|
|
2135
2106
|
dData = recalculateObjectWithDocument(documents[docId], settings.document);
|
|
2136
2107
|
}
|
|
2137
|
-
docs.push({
|
|
2138
|
-
id: docId,
|
|
2139
|
-
...dData
|
|
2140
|
-
});
|
|
2108
|
+
docs.push({ id: docId, ...dData });
|
|
2141
2109
|
});
|
|
2142
2110
|
systemLog("usedp", "KonecVytvoreni dat: ", providerId);
|
|
2143
2111
|
if (filter) {
|
|
2144
2112
|
systemLog("usedp", "Jdu filterovat: ", JSON.stringify(filter));
|
|
2145
|
-
docs =
|
|
2113
|
+
docs = filterDocuments2(docs, filter);
|
|
2146
2114
|
systemLog("usedp", "Konec filteru: ");
|
|
2147
2115
|
}
|
|
2148
2116
|
const schema = providers[providerId].schema;
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
if (optionConfigs.length > 0) {
|
|
2153
|
-
resolvedSchema = { ...schema };
|
|
2154
|
-
optionConfigs.forEach((cfg) => {
|
|
2155
|
-
const providerRef = resolveProviderRef(cfg.dataProvider, providers, presetProviders, params);
|
|
2156
|
-
const optionProvider = providers[providerRef.runtimeId];
|
|
2157
|
-
if (!optionProvider) {
|
|
2158
|
-
systemLog("usedp", "Nenalezen provider pro schema.options", cfg.dataProvider);
|
|
2159
|
-
return;
|
|
2160
|
-
}
|
|
2161
|
-
let optionDocuments = (optionProvider.data || []).map((docId) => {
|
|
2162
|
-
const docData = documents[docId];
|
|
2163
|
-
if (!docData) return null;
|
|
2164
|
-
return {
|
|
2165
|
-
id: docId,
|
|
2166
|
-
...docData
|
|
2167
|
-
};
|
|
2168
|
-
}).filter((item) => !!item);
|
|
2169
|
-
if (cfg.filter) {
|
|
2170
|
-
optionDocuments = filterDocuments(optionDocuments, cfg.filter);
|
|
2171
|
-
}
|
|
2172
|
-
const computedOptions = optionDocuments.map((item) => createOptionFromDocument(item, cfg.optionKeys));
|
|
2173
|
-
const nextItem = {
|
|
2174
|
-
...resolvedSchema[cfg.fieldKey],
|
|
2175
|
-
options: computedOptions
|
|
2176
|
-
};
|
|
2177
|
-
resolvedSchema[cfg.fieldKey] = nextItem;
|
|
2178
|
-
});
|
|
2179
|
-
}
|
|
2180
|
-
}
|
|
2117
|
+
const layout = providers[providerId].layout;
|
|
2118
|
+
const resolvedSchema = resolveDataSourcesDeep(schema, providers, documents, presetProviders, params, "schema");
|
|
2119
|
+
const resolvedLayout = resolveDataSourcesDeep(layout, providers, documents, presetProviders, params, "layout");
|
|
2181
2120
|
return {
|
|
2182
2121
|
...providers[providerId],
|
|
2183
2122
|
data: docs,
|
|
2184
|
-
schema: resolvedSchema
|
|
2123
|
+
schema: resolvedSchema,
|
|
2124
|
+
layout: resolvedLayout
|
|
2185
2125
|
};
|
|
2186
2126
|
}, [
|
|
2187
2127
|
providerId,
|
|
@@ -2196,11 +2136,9 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
2196
2136
|
]);
|
|
2197
2137
|
systemLog("usedp", `${providerId} END`);
|
|
2198
2138
|
return {
|
|
2199
|
-
// provider,
|
|
2200
2139
|
documents: provider.data,
|
|
2201
2140
|
schema: provider.schema,
|
|
2202
2141
|
layout: provider.layout,
|
|
2203
|
-
// dispatch,
|
|
2204
2142
|
update,
|
|
2205
2143
|
updateItem,
|
|
2206
2144
|
deleteItem,
|