@mgarlik/datastore 0.1.22 → 0.1.24
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 +63 -110
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +98 -61
- package/dist/index.d.ts +98 -61
- package/dist/index.js +63 -110
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -1869,78 +1869,66 @@ var DataStoreProvider_default = DataStoreProvider;
|
|
|
1869
1869
|
|
|
1870
1870
|
// src/useDataProvider.tsx
|
|
1871
1871
|
import { useCallback as useCallback2, useContext as useContext2, useEffect as useEffect2, useMemo as useMemo2, useState as useState2, useSyncExternalStore } from "react";
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
configs.push({
|
|
1879
|
-
fieldKey,
|
|
1880
|
-
dataProvider: schemaItem.options.dataProvider,
|
|
1881
|
-
optionKeys: schemaItem.options.optionKeys,
|
|
1882
|
-
filter: schemaItem.options.filter
|
|
1883
|
-
});
|
|
1884
|
-
return;
|
|
1885
|
-
}
|
|
1886
|
-
if (schemaItem.dataSource?.dataProvider) {
|
|
1887
|
-
configs.push({
|
|
1888
|
-
fieldKey,
|
|
1889
|
-
dataProvider: schemaItem.dataSource.dataProvider,
|
|
1890
|
-
optionKeys: schemaItem.optionKeys,
|
|
1891
|
-
filter: schemaItem.filter
|
|
1892
|
-
});
|
|
1893
|
-
}
|
|
1894
|
-
});
|
|
1895
|
-
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);
|
|
1896
1878
|
};
|
|
1897
1879
|
var resolveProviderRef = (providerId, providers, presetProviders, params) => {
|
|
1898
1880
|
if (providers[providerId]) {
|
|
1899
|
-
return {
|
|
1900
|
-
templateId: providerId,
|
|
1901
|
-
runtimeId: providerId
|
|
1902
|
-
};
|
|
1881
|
+
return { templateId: providerId, runtimeId: providerId };
|
|
1903
1882
|
}
|
|
1904
1883
|
if (presetProviders[providerId]) {
|
|
1905
1884
|
const renderedProvider = renderJSONTemplate(presetProviders[providerId], params ?? void 0);
|
|
1906
|
-
return {
|
|
1907
|
-
templateId: providerId,
|
|
1908
|
-
runtimeId: renderedProvider.id
|
|
1909
|
-
};
|
|
1885
|
+
return { templateId: providerId, runtimeId: renderedProvider.id };
|
|
1910
1886
|
}
|
|
1911
|
-
return {
|
|
1912
|
-
templateId: providerId,
|
|
1913
|
-
runtimeId: providerId
|
|
1914
|
-
};
|
|
1887
|
+
return { templateId: providerId, runtimeId: providerId };
|
|
1915
1888
|
};
|
|
1916
|
-
var createOptionFromDocument = (doc,
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
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;
|
|
1929
1915
|
}
|
|
1930
|
-
|
|
1931
|
-
|
|
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));
|
|
1932
1925
|
}
|
|
1933
|
-
if (
|
|
1934
|
-
return
|
|
1935
|
-
value: optionValue,
|
|
1936
|
-
label: optionLabel,
|
|
1937
|
-
icon: optionIcon
|
|
1938
|
-
};
|
|
1926
|
+
if (Array.isArray(obj)) {
|
|
1927
|
+
return obj.map((item) => resolveDataSourcesDeep(item, providers, documents, presetProviders, params, logLabel));
|
|
1939
1928
|
}
|
|
1940
|
-
return
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
};
|
|
1929
|
+
return Object.fromEntries(
|
|
1930
|
+
Object.entries(obj).map(([key, val]) => [key, resolveDataSourcesDeep(val, providers, documents, presetProviders, params, logLabel)])
|
|
1931
|
+
);
|
|
1944
1932
|
};
|
|
1945
1933
|
var useDataProvider = (id, params, dataFilter, settings) => {
|
|
1946
1934
|
const [providerId, setProviderId] = useState2(null);
|
|
@@ -1971,12 +1959,13 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
1971
1959
|
);
|
|
1972
1960
|
const dependentProviders = useMemo2(() => {
|
|
1973
1961
|
const providers = getExternalProviders();
|
|
1974
|
-
if (!providerId || !providers[providerId]
|
|
1962
|
+
if (!providerId || !providers[providerId]) return [];
|
|
1975
1963
|
const schema = providers[providerId]?.schema;
|
|
1976
|
-
const
|
|
1964
|
+
const layout = providers[providerId]?.layout;
|
|
1965
|
+
const allProviderIds = [...findAllDataProviders(schema), ...findAllDataProviders(layout)];
|
|
1977
1966
|
const uniqueProviders = {};
|
|
1978
|
-
|
|
1979
|
-
const resolved = resolveProviderRef(
|
|
1967
|
+
allProviderIds.forEach((dataProvider) => {
|
|
1968
|
+
const resolved = resolveProviderRef(dataProvider, providers, presetProviders, params);
|
|
1980
1969
|
if (resolved.runtimeId === providerId) return;
|
|
1981
1970
|
uniqueProviders[resolved.runtimeId] = resolved;
|
|
1982
1971
|
});
|
|
@@ -2091,7 +2080,7 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
2091
2080
|
dispatch("deleteProviderItem", { providerId, data, params: params2 }, callback);
|
|
2092
2081
|
};
|
|
2093
2082
|
const createItem = (data, callback) => {
|
|
2094
|
-
return new Promise((resolve
|
|
2083
|
+
return new Promise((resolve) => {
|
|
2095
2084
|
const wrappedCallback = (result) => {
|
|
2096
2085
|
callback?.(result);
|
|
2097
2086
|
resolve(result);
|
|
@@ -2104,10 +2093,7 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
2104
2093
|
const providers = getExternalProviders();
|
|
2105
2094
|
const documents = getExternalDocuments();
|
|
2106
2095
|
if (!providerId || !providers[providerId]) {
|
|
2107
|
-
return {
|
|
2108
|
-
data: [],
|
|
2109
|
-
schema: void 0
|
|
2110
|
-
};
|
|
2096
|
+
return { data: [], schema: void 0, layout: void 0 };
|
|
2111
2097
|
}
|
|
2112
2098
|
let docs = [];
|
|
2113
2099
|
providers[providerId]?.data.forEach((docId) => {
|
|
@@ -2119,54 +2105,23 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
2119
2105
|
} else if (settings?.document) {
|
|
2120
2106
|
dData = recalculateObjectWithDocument(documents[docId], settings.document);
|
|
2121
2107
|
}
|
|
2122
|
-
docs.push({
|
|
2123
|
-
id: docId,
|
|
2124
|
-
...dData
|
|
2125
|
-
});
|
|
2108
|
+
docs.push({ id: docId, ...dData });
|
|
2126
2109
|
});
|
|
2127
2110
|
systemLog("usedp", "KonecVytvoreni dat: ", providerId);
|
|
2128
2111
|
if (filter) {
|
|
2129
2112
|
systemLog("usedp", "Jdu filterovat: ", JSON.stringify(filter));
|
|
2130
|
-
docs =
|
|
2113
|
+
docs = filterDocuments2(docs, filter);
|
|
2131
2114
|
systemLog("usedp", "Konec filteru: ");
|
|
2132
2115
|
}
|
|
2133
2116
|
const schema = providers[providerId].schema;
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
if (optionConfigs.length > 0) {
|
|
2138
|
-
resolvedSchema = { ...schema };
|
|
2139
|
-
optionConfigs.forEach((cfg) => {
|
|
2140
|
-
const providerRef = resolveProviderRef(cfg.dataProvider, providers, presetProviders, params);
|
|
2141
|
-
const optionProvider = providers[providerRef.runtimeId];
|
|
2142
|
-
if (!optionProvider) {
|
|
2143
|
-
systemLog("usedp", "Nenalezen provider pro schema.options", cfg.dataProvider);
|
|
2144
|
-
return;
|
|
2145
|
-
}
|
|
2146
|
-
let optionDocuments = (optionProvider.data || []).map((docId) => {
|
|
2147
|
-
const docData = documents[docId];
|
|
2148
|
-
if (!docData) return null;
|
|
2149
|
-
return {
|
|
2150
|
-
id: docId,
|
|
2151
|
-
...docData
|
|
2152
|
-
};
|
|
2153
|
-
}).filter((item) => !!item);
|
|
2154
|
-
if (cfg.filter) {
|
|
2155
|
-
optionDocuments = filterDocuments(optionDocuments, cfg.filter);
|
|
2156
|
-
}
|
|
2157
|
-
const computedOptions = optionDocuments.map((item) => createOptionFromDocument(item, cfg.optionKeys));
|
|
2158
|
-
const nextItem = {
|
|
2159
|
-
...resolvedSchema[cfg.fieldKey],
|
|
2160
|
-
options: computedOptions
|
|
2161
|
-
};
|
|
2162
|
-
resolvedSchema[cfg.fieldKey] = nextItem;
|
|
2163
|
-
});
|
|
2164
|
-
}
|
|
2165
|
-
}
|
|
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");
|
|
2166
2120
|
return {
|
|
2167
2121
|
...providers[providerId],
|
|
2168
2122
|
data: docs,
|
|
2169
|
-
schema: resolvedSchema
|
|
2123
|
+
schema: resolvedSchema,
|
|
2124
|
+
layout: resolvedLayout
|
|
2170
2125
|
};
|
|
2171
2126
|
}, [
|
|
2172
2127
|
providerId,
|
|
@@ -2181,11 +2136,9 @@ var useDataProvider = (id, params, dataFilter, settings) => {
|
|
|
2181
2136
|
]);
|
|
2182
2137
|
systemLog("usedp", `${providerId} END`);
|
|
2183
2138
|
return {
|
|
2184
|
-
// provider,
|
|
2185
2139
|
documents: provider.data,
|
|
2186
2140
|
schema: provider.schema,
|
|
2187
2141
|
layout: provider.layout,
|
|
2188
|
-
// dispatch,
|
|
2189
2142
|
update,
|
|
2190
2143
|
updateItem,
|
|
2191
2144
|
deleteItem,
|