@semapps/semantic-data-provider 0.6.3 → 0.6.5

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.js CHANGED
@@ -1,6 +1,5 @@
1
1
  var $bkNnK$urljoin = require("url-join");
2
2
  var $bkNnK$jsonld = require("jsonld");
3
- var $bkNnK$isobject = require("isobject");
4
3
  var $bkNnK$rdfjsdatamodel = require("@rdfjs/data-model");
5
4
  var $bkNnK$sparqljs = require("sparqljs");
6
5
  var $bkNnK$cryptojsmd5 = require("crypto-js/md5");
@@ -25,9 +24,10 @@ $parcel$export(module.exports, "buildBlankNodesQuery", () => $64d4ce40c79d1509$e
25
24
  $parcel$export(module.exports, "useGetExternalLink", () => $85e9a897c6d7c14a$export$2e2bcd8739ae039);
26
25
  $parcel$export(module.exports, "useContainers", () => $3158e0dc13ffffaa$export$2e2bcd8739ae039);
27
26
  $parcel$export(module.exports, "useCreateContainer", () => $99ed32cbdb76cb50$export$2e2bcd8739ae039);
27
+ $parcel$export(module.exports, "useCreateContainerUri", () => $298b78bb7d4a3358$export$2e2bcd8739ae039);
28
28
  $parcel$export(module.exports, "useDataModel", () => $63a32f1a35c6f80e$export$2e2bcd8739ae039);
29
- $parcel$export(module.exports, "useDataModels", () => $8d622cbd05acb834$export$2e2bcd8739ae039);
30
- $parcel$export(module.exports, "useDataServers", () => $9b817943cd488c90$export$2e2bcd8739ae039);
29
+ $parcel$export(module.exports, "useDataModels", () => $20621bc841a5205a$export$2e2bcd8739ae039);
30
+ $parcel$export(module.exports, "useDataServers", () => $c9933a88e2acc4da$export$2e2bcd8739ae039);
31
31
  $parcel$export(module.exports, "FilterHandler", () => $f763906f9b20f2d8$export$2e2bcd8739ae039);
32
32
  $parcel$export(module.exports, "GroupedReferenceHandler", () => $b4703fef6d6af456$export$2e2bcd8739ae039);
33
33
  $parcel$export(module.exports, "ReificationArrayInput", () => $030f1232f6810456$export$2e2bcd8739ae039);
@@ -196,7 +196,7 @@ const $047a107b0d203793$var$findContainersWithTypes = (types, serverKeys, dataSe
196
196
  const existingContainers = [];
197
197
  const parsedServerKeys = (0, $982f4f2fb185d606$export$2e2bcd8739ae039)(serverKeys, dataServers);
198
198
  Object.keys(dataServers).filter((dataServerKey)=>dataServers[dataServerKey].containers).forEach((dataServerKey)=>{
199
- Object.keys(dataServers[dataServerKey].containers).forEach((containerKey)=>{
199
+ Object.keys(dataServers[dataServerKey].containers || {}).forEach((containerKey)=>{
200
200
  if (!parsedServerKeys || parsedServerKeys.includes(containerKey)) Object.keys(dataServers[dataServerKey].containers[containerKey]).forEach((type)=>{
201
201
  if (types.includes(type)) dataServers[dataServerKey].containers[containerKey][type].map((path)=>{
202
202
  const containerUri = (0, ($parcel$interopDefault($bkNnK$urljoin)))(dataServers[containerKey].baseUrl, path);
@@ -327,8 +327,7 @@ var $241c41c6f6021c7a$export$2e2bcd8739ae039 = $241c41c6f6021c7a$var$getDataMode
327
327
 
328
328
 
329
329
 
330
-
331
- const $4d160872c02aa8d3$var$arrayOf = (value)=>{
330
+ const $e6fbab1f303bdb93$var$arrayOf = (value)=>{
332
331
  // If the field is null-ish, we suppose there are no values.
333
332
  if (!value) return [];
334
333
  // Return as is.
@@ -338,86 +337,110 @@ const $4d160872c02aa8d3$var$arrayOf = (value)=>{
338
337
  value
339
338
  ];
340
339
  };
341
- var $4d160872c02aa8d3$export$2e2bcd8739ae039 = $4d160872c02aa8d3$var$arrayOf;
340
+ var $e6fbab1f303bdb93$export$2e2bcd8739ae039 = $e6fbab1f303bdb93$var$arrayOf;
342
341
 
343
342
 
344
- const $6e66f3a2f960b9ca$export$26b9f946b448f23e = (type, resource)=>{
345
- const resourceType = resource.type || resource["@type"];
346
- return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;
343
+ const $8c999cc29c8d6a6c$var$isValidLDPContainer = (container)=>{
344
+ const resourceType = container.type || container["@type"];
345
+ return Array.isArray(resourceType) ? resourceType.includes("ldp:Container") : resourceType === "ldp:Container";
347
346
  };
348
- const $6e66f3a2f960b9ca$var$fetchContainers = async (containers, resourceId, params, config)=>{
349
- const { httpClient: httpClient, jsonContext: jsonContext } = config;
350
- // Transform in an containerUri:serverKey object
351
- const containersServers = Object.keys(containers).reduce((acc, serverKey)=>({
352
- ...acc,
353
- ...Object.fromEntries(containers[serverKey].map((containerUri)=>[
354
- containerUri,
355
- serverKey
356
- ]))
357
- }), {});
358
- const fetchPromises = Object.keys(containersServers).map((containerUri)=>httpClient(containerUri).then(({ json: json })=>{
347
+ const $8c999cc29c8d6a6c$var$isObject = (val)=>{
348
+ return val != null && typeof val === "object" && !Array.isArray(val);
349
+ };
350
+ const $8c999cc29c8d6a6c$var$fetchContainers = async (containers, params, { httpClient: httpClient, jsonContext: jsonContext })=>{
351
+ const containersUri = Object.values(containers).flat();
352
+ const fetchPromises = containersUri.map((containerUri)=>httpClient(containerUri).then(async ({ json: json })=>{
353
+ const jsonResponse = json;
359
354
  // If container's context is different, compact it to have an uniform result
360
355
  // TODO deep compare if the context is an object
361
- if (json["@context"] !== jsonContext) return (0, ($parcel$interopDefault($bkNnK$jsonld))).compact(json, jsonContext);
362
- return json;
356
+ if (jsonResponse["@context"] !== jsonContext) return (0, ($parcel$interopDefault($bkNnK$jsonld))).compact(jsonResponse, jsonContext);
357
+ return jsonResponse;
363
358
  }).then((json)=>{
364
- if ($6e66f3a2f960b9ca$export$26b9f946b448f23e("ldp:Container", json)) return (0, $4d160872c02aa8d3$export$2e2bcd8739ae039)(json["ldp:contains"]).map((resource)=>({
359
+ if (!$8c999cc29c8d6a6c$var$isValidLDPContainer(json)) throw new Error(`${containerUri} is not a LDP container`);
360
+ return (0, $e6fbab1f303bdb93$export$2e2bcd8739ae039)(json["ldp:contains"]).map((resource)=>({
365
361
  "@context": json["@context"],
366
362
  ...resource
367
363
  }));
368
- throw new Error(`${containerUri} is not a LDP container`);
369
364
  }));
370
365
  // Fetch simultaneously all containers
371
- let results = await Promise.all(fetchPromises);
372
- if (results.length === 0) return {
373
- data: [],
374
- total: 0
375
- };
376
- // Merge all results in one array
377
- results = [].concat.apply(...results);
378
- let returnData = results.map((item)=>{
379
- item.id = item.id || item["@id"];
380
- return item;
366
+ const results = await Promise.all(fetchPromises);
367
+ let resources = results.flat();
368
+ resources = resources.map((resource)=>{
369
+ resource.id ||= resource["@id"];
370
+ return resource;
381
371
  });
382
372
  // Apply filter to results
383
- if (params.filter) {
384
- // For SPARQL queries, we use "a" to filter types, but in containers it must be "type"
385
- if (params.filter.a) {
386
- params.filter.type = params.filter.a;
387
- delete params.filter.a;
388
- }
389
- if (Object.keys(params.filter).length > 0) returnData = returnData.filter((resource)=>{
390
- return Object.entries(params.filter).every(([k, v])=>{
391
- if (k == "q") return Object.entries(resource).some(([kr, vr])=>{
392
- if (!(0, ($parcel$interopDefault($bkNnK$isobject)))(vr)) {
393
- const arrayValues = Array.isArray(vr) ? vr : [
394
- vr
395
- ];
396
- return arrayValues.some((va)=>{
397
- if (typeof va === "string" || va instanceof String) return va.toLowerCase().normalize("NFD").includes(v.toLowerCase().normalize("NFD"));
398
- });
399
- }
400
- return false;
401
- });
402
- if (resource[k]) return Array.isArray(resource[k]) ? resource[k].some((va)=>va.includes(v)) : resource[k].includes(v);
403
- return false;
373
+ const filters = params.filter;
374
+ // For SPARQL queries, we use "a" to filter types, but in containers it must be "type"
375
+ if (filters.a) {
376
+ filters.type = filters.a;
377
+ delete filters.a;
378
+ }
379
+ // Filter resources attributes according to _predicates list
380
+ if (filters._predicates && Array.isArray(filters._predicates)) {
381
+ const predicates = filters._predicates;
382
+ const mandatoryAttributes = [
383
+ "id"
384
+ ];
385
+ resources = resources.map((resource)=>{
386
+ return Object.keys(resource).filter((key)=>predicates.includes(key) || mandatoryAttributes.includes(key)).reduce((filteredResource, key)=>{
387
+ filteredResource[key] = resource[key];
388
+ return filteredResource;
389
+ }, {
390
+ "@context": []
404
391
  });
405
392
  });
406
393
  }
407
- if (params.sort) returnData = returnData.sort((a, b)=>{
394
+ if (Object.keys(filters).filter((f)=>![
395
+ "_predicates",
396
+ "_servers"
397
+ ].includes(f)).length > 0) resources = resources.filter((resource)=>{
398
+ // Full text filtering
399
+ if (filters.q) return Object.values(resource).some((attributeValue)=>{
400
+ if (!$8c999cc29c8d6a6c$var$isObject(attributeValue)) {
401
+ const arrayValues = Array.isArray(attributeValue) ? attributeValue : [
402
+ attributeValue
403
+ ];
404
+ return arrayValues.some((value)=>{
405
+ if (typeof value === "string") return value.toLowerCase().normalize("NFD").includes(filters.q.toLowerCase().normalize("NFD"));
406
+ return false;
407
+ });
408
+ }
409
+ return false;
410
+ });
411
+ // Attribute filtering
412
+ const attributesFilters = Object.keys(filters).filter((f)=>![
413
+ "_predicates",
414
+ "_servers",
415
+ "q"
416
+ ].includes(f));
417
+ return attributesFilters.every((attribute)=>{
418
+ if (resource[attribute]) {
419
+ const arrayValues = Array.isArray(resource[attribute]) ? resource[attribute] : [
420
+ resource[attribute]
421
+ ];
422
+ return arrayValues.some((value)=>typeof value === "string" && value.includes(filters[attribute]));
423
+ }
424
+ return false;
425
+ });
426
+ });
427
+ // Sorting
428
+ if (params.sort) resources = resources.sort((a, b)=>{
408
429
  if (a[params.sort.field] && b[params.sort.field]) {
409
430
  if (params.sort.order === "ASC") return a[params.sort.field].localeCompare(b[params.sort.field]);
410
431
  return b[params.sort.field].localeCompare(a[params.sort.field]);
411
432
  }
412
433
  return true;
413
434
  });
414
- if (params.pagination) returnData = returnData.slice((params.pagination.page - 1) * params.pagination.perPage, params.pagination.page * params.pagination.perPage);
435
+ // Pagination
436
+ const total = resources.length;
437
+ if (params.pagination) resources = resources.slice((params.pagination.page - 1) * params.pagination.perPage, params.pagination.page * params.pagination.perPage);
415
438
  return {
416
- data: returnData,
417
- total: results.length
439
+ data: resources,
440
+ total: total
418
441
  };
419
442
  };
420
- var $6e66f3a2f960b9ca$export$2e2bcd8739ae039 = $6e66f3a2f960b9ca$var$fetchContainers;
443
+ var $8c999cc29c8d6a6c$export$2e2bcd8739ae039 = $8c999cc29c8d6a6c$var$fetchContainers;
421
444
 
422
445
 
423
446
 
@@ -882,7 +905,7 @@ const $b6ed253f3374f5d4$var$getListMethod = (config)=>async (resourceId, params
882
905
  containers = (0, $e3a78b3d48a0a0fb$export$2e2bcd8739ae039)(dataModel.list.containers, dataServers);
883
906
  } else // Otherwise find the container URIs on the given servers (either in the filter or the data model)
884
907
  containers = (0, $047a107b0d203793$export$2e2bcd8739ae039)(dataModel.types, params.filter?._servers || dataModel.list?.servers, dataServers);
885
- if (dataModel.list?.fetchContainer) return (0, $6e66f3a2f960b9ca$export$2e2bcd8739ae039)(containers, resourceId, params, config);
908
+ if (dataModel.list?.fetchContainer) return (0, $8c999cc29c8d6a6c$export$2e2bcd8739ae039)(containers, params, config);
886
909
  return (0, $1e7a94d745f8597b$export$2e2bcd8739ae039)(containers, resourceId, params, config);
887
910
  };
888
911
  var $b6ed253f3374f5d4$export$2e2bcd8739ae039 = $b6ed253f3374f5d4$var$getListMethod;
@@ -1041,6 +1064,7 @@ var $915df908e0942746$export$2e2bcd8739ae039 = $915df908e0942746$var$fetchVoidEn
1041
1064
 
1042
1065
  // Return the first server matching with the baseUrl
1043
1066
  const $59a07b932dae8600$var$getServerKeyFromUri = (uri, dataServers)=>{
1067
+ if (!uri) throw Error(`No URI provided to getServerKeyFromUri`);
1044
1068
  return Object.keys(dataServers).find((key)=>{
1045
1069
  if (dataServers[key].pod) // The baseUrl ends with /data so remove this part to match with the webId and webId-related URLs (/inbox, /outbox...)
1046
1070
  return dataServers[key].baseUrl && uri.startsWith(dataServers[key].baseUrl.replace("/data", ""));
@@ -1111,30 +1135,44 @@ const $7f6a16d0025dc83a$var$dataProvider = (config)=>{
1111
1135
  if (!config.returnFailedResources) config.returnFailedResources = false;
1112
1136
  // Configure httpClient with data servers (this is needed for proxy calls)
1113
1137
  config.httpClient = (0, $341dff85fe619d85$export$2e2bcd8739ae039)(config.dataServers);
1114
- const fetchUserConfigPromise = (0, $3cfb23eead135e3f$export$2e2bcd8739ae039)(config);
1115
- const fetchVoidEndpointsPromise = (0, $915df908e0942746$export$2e2bcd8739ae039)(config);
1116
- const waitForVoidEndpoints = (method)=>async (...arg)=>{
1138
+ // Keep in memory for refresh
1139
+ const originalConfig = {
1140
+ ...config
1141
+ };
1142
+ let fetchUserConfigPromise = (0, $3cfb23eead135e3f$export$2e2bcd8739ae039)(config);
1143
+ let fetchVoidEndpointsPromise = (0, $915df908e0942746$export$2e2bcd8739ae039)(config);
1144
+ const waitForConfig = (method)=>async (...arg)=>{
1117
1145
  await fetchUserConfigPromise;
1118
1146
  await fetchVoidEndpointsPromise; // Return immediately if promise is fulfilled
1119
1147
  return await method(...arg);
1120
1148
  };
1121
1149
  return {
1122
- getList: waitForVoidEndpoints((0, $b6ed253f3374f5d4$export$2e2bcd8739ae039)(config)),
1123
- getMany: waitForVoidEndpoints((0, $e296494b4f6a4f89$export$2e2bcd8739ae039)(config)),
1124
- getManyReference: waitForVoidEndpoints((0, $e5e279a608b8e6b1$export$2e2bcd8739ae039)(config)),
1125
- getOne: waitForVoidEndpoints((0, $9020b8e3f4a4c1a1$export$2e2bcd8739ae039)(config)),
1126
- create: waitForVoidEndpoints((0, $907cbc087f6529e2$export$2e2bcd8739ae039)(config)),
1127
- update: waitForVoidEndpoints((0, $ceaafb56f75454f0$export$2e2bcd8739ae039)(config)),
1150
+ getList: waitForConfig((0, $b6ed253f3374f5d4$export$2e2bcd8739ae039)(config)),
1151
+ getMany: waitForConfig((0, $e296494b4f6a4f89$export$2e2bcd8739ae039)(config)),
1152
+ getManyReference: waitForConfig((0, $e5e279a608b8e6b1$export$2e2bcd8739ae039)(config)),
1153
+ getOne: waitForConfig((0, $9020b8e3f4a4c1a1$export$2e2bcd8739ae039)(config)),
1154
+ create: waitForConfig((0, $907cbc087f6529e2$export$2e2bcd8739ae039)(config)),
1155
+ update: waitForConfig((0, $ceaafb56f75454f0$export$2e2bcd8739ae039)(config)),
1128
1156
  updateMany: ()=>{
1129
1157
  throw new Error("updateMany is not implemented yet");
1130
1158
  },
1131
- delete: waitForVoidEndpoints((0, $566b5adde94810fa$export$2e2bcd8739ae039)(config)),
1132
- deleteMany: waitForVoidEndpoints((0, $f170294dd29d8bf8$export$2e2bcd8739ae039)(config)),
1159
+ delete: waitForConfig((0, $566b5adde94810fa$export$2e2bcd8739ae039)(config)),
1160
+ deleteMany: waitForConfig((0, $f170294dd29d8bf8$export$2e2bcd8739ae039)(config)),
1133
1161
  // Custom methods
1134
- getDataModels: waitForVoidEndpoints((0, $241c41c6f6021c7a$export$2e2bcd8739ae039)(config)),
1135
- getDataServers: waitForVoidEndpoints((0, $b16131432127b07b$export$2e2bcd8739ae039)(config)),
1162
+ getDataModels: waitForConfig((0, $241c41c6f6021c7a$export$2e2bcd8739ae039)(config)),
1163
+ getDataServers: waitForConfig((0, $b16131432127b07b$export$2e2bcd8739ae039)(config)),
1136
1164
  getLocalDataServers: (0, $b16131432127b07b$export$2e2bcd8739ae039)(config),
1137
- fetch: waitForVoidEndpoints(config.httpClient)
1165
+ fetch: waitForConfig(config.httpClient),
1166
+ refreshConfig: async ()=>{
1167
+ config = {
1168
+ ...originalConfig
1169
+ };
1170
+ fetchUserConfigPromise = (0, $3cfb23eead135e3f$export$2e2bcd8739ae039)(config);
1171
+ fetchVoidEndpointsPromise = (0, $915df908e0942746$export$2e2bcd8739ae039)(config);
1172
+ await fetchUserConfigPromise;
1173
+ await fetchVoidEndpointsPromise;
1174
+ return config;
1175
+ }
1138
1176
  };
1139
1177
  };
1140
1178
  var $7f6a16d0025dc83a$export$2e2bcd8739ae039 = $7f6a16d0025dc83a$var$dataProvider;
@@ -1205,25 +1243,26 @@ var $63a32f1a35c6f80e$export$2e2bcd8739ae039 = $63a32f1a35c6f80e$var$useDataMode
1205
1243
 
1206
1244
 
1207
1245
 
1208
- const $9b817943cd488c90$var$useDataServers = ()=>{
1209
- // Get the raw data provider, since useDataProvider returns a wrapper
1210
- const dataProvider = (0, $bkNnK$react.useContext)((0, $bkNnK$reactadmin.DataProviderContext));
1246
+ const $c9933a88e2acc4da$var$useDataServers = ()=>{
1247
+ const dataProvider = (0, $bkNnK$reactadmin.useDataProvider)();
1211
1248
  const [dataServers, setDataServers] = (0, $bkNnK$react.useState)();
1212
1249
  (0, $bkNnK$react.useEffect)(()=>{
1213
- dataProvider.getDataServers().then((results)=>setDataServers(results));
1250
+ dataProvider.getDataServers().then((results)=>{
1251
+ setDataServers(results);
1252
+ });
1214
1253
  }, [
1215
1254
  dataProvider,
1216
1255
  setDataServers
1217
1256
  ]);
1218
1257
  return dataServers;
1219
1258
  };
1220
- var $9b817943cd488c90$export$2e2bcd8739ae039 = $9b817943cd488c90$var$useDataServers;
1259
+ var $c9933a88e2acc4da$export$2e2bcd8739ae039 = $c9933a88e2acc4da$var$useDataServers;
1221
1260
 
1222
1261
 
1223
1262
 
1224
1263
  const $3158e0dc13ffffaa$var$useContainers = (resourceId, serverKeys = "@all")=>{
1225
1264
  const dataModel = (0, $63a32f1a35c6f80e$export$2e2bcd8739ae039)(resourceId);
1226
- const dataServers = (0, $9b817943cd488c90$export$2e2bcd8739ae039)();
1265
+ const dataServers = (0, $c9933a88e2acc4da$export$2e2bcd8739ae039)();
1227
1266
  const [containers, setContainers] = (0, $bkNnK$react.useState)();
1228
1267
  (0, $bkNnK$react.useEffect)(()=>{
1229
1268
  if (dataModel && dataServers) setContainers((0, $047a107b0d203793$export$2e2bcd8739ae039)(dataModel.types, serverKeys, dataServers));
@@ -1242,10 +1281,10 @@ var $3158e0dc13ffffaa$export$2e2bcd8739ae039 = $3158e0dc13ffffaa$var$useContaine
1242
1281
 
1243
1282
 
1244
1283
 
1245
- const $b32fd11d6aa83d1c$var$findCreateContainerWithTypes = (types, createServerKey, dataServers)=>{
1284
+ const $ff3623bf1421ebcc$var$findCreateContainerWithTypes = (types, createServerKey, dataServers)=>{
1246
1285
  const containers = [];
1247
- if (Object.keys(dataServers[createServerKey].containers[createServerKey]).length > 0) Object.keys(dataServers[createServerKey].containers[createServerKey]).forEach((type)=>{
1248
- if (types.includes(type)) dataServers[createServerKey].containers[createServerKey][type].map((path)=>{
1286
+ Object.keys(dataServers[createServerKey].containers?.[createServerKey] || {}).forEach((type)=>{
1287
+ if (types.includes(type)) dataServers[createServerKey].containers[createServerKey][type].forEach((path)=>{
1249
1288
  const containerUri = (0, ($parcel$interopDefault($bkNnK$urljoin)))(dataServers[createServerKey].baseUrl, path);
1250
1289
  if (!containers.includes(containerUri)) containers.push(containerUri);
1251
1290
  });
@@ -1254,13 +1293,13 @@ const $b32fd11d6aa83d1c$var$findCreateContainerWithTypes = (types, createServerK
1254
1293
  else if (containers.length > 1) throw new Error(`More than one container found matching with types ${JSON.stringify(types)}. You must set the create.server or create.container property for the resource.`);
1255
1294
  return containers[0];
1256
1295
  };
1257
- var $b32fd11d6aa83d1c$export$2e2bcd8739ae039 = $b32fd11d6aa83d1c$var$findCreateContainerWithTypes;
1296
+ var $ff3623bf1421ebcc$export$2e2bcd8739ae039 = $ff3623bf1421ebcc$var$findCreateContainerWithTypes;
1258
1297
 
1259
1298
 
1260
1299
 
1261
- const $99ed32cbdb76cb50$var$useCreateContainer = (resourceId)=>{
1300
+ /** @deprecated Use "useCreateContainerUri" instead */ const $99ed32cbdb76cb50$var$useCreateContainer = (resourceId)=>{
1262
1301
  const dataModel = (0, $63a32f1a35c6f80e$export$2e2bcd8739ae039)(resourceId);
1263
- const dataServers = (0, $9b817943cd488c90$export$2e2bcd8739ae039)();
1302
+ const dataServers = (0, $c9933a88e2acc4da$export$2e2bcd8739ae039)();
1264
1303
  const [createContainer, setCreateContainer] = (0, $bkNnK$react.useState)();
1265
1304
  (0, $bkNnK$react.useEffect)(()=>{
1266
1305
  if (dataModel && dataServers) {
@@ -1268,10 +1307,10 @@ const $99ed32cbdb76cb50$var$useCreateContainer = (resourceId)=>{
1268
1307
  const [serverKey, path] = Object.entries(dataModel.create.container)[0];
1269
1308
  if (!serverKey || !dataServers[serverKey]) throw new Error(`Wrong key for the dataModel.create.container config of resource ${resourceId}`);
1270
1309
  setCreateContainer((0, ($parcel$interopDefault($bkNnK$urljoin)))(dataServers[serverKey].baseUrl, path));
1271
- } else if (dataModel.create?.server) setCreateContainer((0, $b32fd11d6aa83d1c$export$2e2bcd8739ae039)(dataModel.types, dataModel.create?.server, dataServers));
1310
+ } else if (dataModel.create?.server) setCreateContainer((0, $ff3623bf1421ebcc$export$2e2bcd8739ae039)(dataModel.types, dataModel.create?.server, dataServers));
1272
1311
  else {
1273
1312
  const defaultServerKey = (0, $8f44b7c15b8b8e1d$export$2e2bcd8739ae039)("default", dataServers);
1274
- setCreateContainer((0, $b32fd11d6aa83d1c$export$2e2bcd8739ae039)(dataModel.types, defaultServerKey, dataServers));
1313
+ setCreateContainer((0, $ff3623bf1421ebcc$export$2e2bcd8739ae039)(dataModel.types, defaultServerKey, dataServers));
1275
1314
  }
1276
1315
  }
1277
1316
  }, [
@@ -1287,19 +1326,50 @@ var $99ed32cbdb76cb50$export$2e2bcd8739ae039 = $99ed32cbdb76cb50$var$useCreateCo
1287
1326
 
1288
1327
 
1289
1328
 
1290
- const $8d622cbd05acb834$var$useDataModels = ()=>{
1291
- // Get the raw data provider, since useDataProvider returns a wrapper
1292
- const dataProvider = (0, $bkNnK$react.useContext)((0, $bkNnK$reactadmin.DataProviderContext));
1329
+
1330
+
1331
+
1332
+
1333
+ const $20621bc841a5205a$var$useDataModels = ()=>{
1334
+ const dataProvider = (0, $bkNnK$reactadmin.useDataProvider)();
1293
1335
  const [dataModels, setDataModels] = (0, $bkNnK$react.useState)();
1294
1336
  (0, $bkNnK$react.useEffect)(()=>{
1295
- dataProvider.getDataModels().then((results)=>setDataModels(results));
1337
+ dataProvider.getDataModels().then((results)=>{
1338
+ setDataModels(results);
1339
+ });
1296
1340
  }, [
1297
1341
  dataProvider,
1298
1342
  setDataModels
1299
1343
  ]);
1300
1344
  return dataModels;
1301
1345
  };
1302
- var $8d622cbd05acb834$export$2e2bcd8739ae039 = $8d622cbd05acb834$var$useDataModels;
1346
+ var $20621bc841a5205a$export$2e2bcd8739ae039 = $20621bc841a5205a$var$useDataModels;
1347
+
1348
+
1349
+ const $298b78bb7d4a3358$var$useCreateContainerUri = ()=>{
1350
+ const dataModels = (0, $20621bc841a5205a$export$2e2bcd8739ae039)();
1351
+ const dataServers = (0, $c9933a88e2acc4da$export$2e2bcd8739ae039)();
1352
+ const getContainerUri = (0, $bkNnK$react.useCallback)((resourceId)=>{
1353
+ if (!dataModels || !dataServers || !dataModels[resourceId]) return undefined;
1354
+ const dataModel = dataModels[resourceId];
1355
+ if (dataModel.create?.container) {
1356
+ const [serverKey, path] = Object.entries(dataModel.create.container)[0];
1357
+ if (!serverKey || !dataServers[serverKey]) throw new Error(`Wrong key for the dataModel.create.container config of resource ${resourceId}`);
1358
+ return (0, ($parcel$interopDefault($bkNnK$urljoin)))(dataServers[serverKey].baseUrl, path);
1359
+ }
1360
+ if (dataModel.create?.server) return (0, $ff3623bf1421ebcc$export$2e2bcd8739ae039)(dataModel.types, dataModel.create?.server, dataServers);
1361
+ const defaultServerKey = (0, $8f44b7c15b8b8e1d$export$2e2bcd8739ae039)("default", dataServers);
1362
+ if (!defaultServerKey) throw new Error(`No default dataServer found. You can set explicitly one setting the "default" attribute to true`);
1363
+ return (0, $ff3623bf1421ebcc$export$2e2bcd8739ae039)(dataModel.types, defaultServerKey, dataServers);
1364
+ }, [
1365
+ dataModels,
1366
+ dataServers
1367
+ ]);
1368
+ return getContainerUri;
1369
+ };
1370
+ var $298b78bb7d4a3358$export$2e2bcd8739ae039 = $298b78bb7d4a3358$var$useCreateContainerUri;
1371
+
1372
+
1303
1373
 
1304
1374
 
1305
1375