@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.
@@ -1 +1 @@
1
- {"mappings":"AgByCA;;;;;;;;;EAoCC;AE7DD;;;;;QA4JC;AW7JD;;;;;;;;;;;;;;EAwCC;AChDD,sFA2CC;AC/CD,OAAA,MAAM,2BAA4B,MAAM,QAUvC,CAAC;ACVF,4CAUC;ACPD,OAAA,MAAM,4BAA6B,MAAM,8DAYxC,CAAC;AEXF,+DAuBC;AC3BD,2CAUC;ACXD;;;;;;;;;;;;;GAaG;AAEH;;;;;;4CAsCC;ACUD;;;;;;;4CA2BC;ACzED,2FAiBC","sources":["packages/semantic-data-provider/src/src/dataProvider/utils/fetchResource.js","packages/semantic-data-provider/src/src/dataProvider/methods/getOne.js","packages/semantic-data-provider/src/src/dataProvider/types.ts","packages/semantic-data-provider/src/src/dataProvider/utils/handleFiles.ts","packages/semantic-data-provider/src/src/dataProvider/utils/getServerKeyFromType.js","packages/semantic-data-provider/src/src/dataProvider/utils/parseServerKeys.js","packages/semantic-data-provider/src/src/dataProvider/utils/findContainersWithTypes.ts","packages/semantic-data-provider/src/src/dataProvider/methods/create.js","packages/semantic-data-provider/src/src/dataProvider/methods/delete.ts","packages/semantic-data-provider/src/src/dataProvider/methods/deleteMany.js","packages/semantic-data-provider/src/src/dataProvider/methods/getDataServers.js","packages/semantic-data-provider/src/src/dataProvider/methods/getDataModels.js","packages/semantic-data-provider/src/src/dataProvider/utils/fetchContainers.js","packages/semantic-data-provider/src/src/dataProvider/utils/getEmbedFrame.js","packages/semantic-data-provider/src/src/dataProvider/utils/resolvePrefix.js","packages/semantic-data-provider/src/src/dataProvider/utils/buildBaseQuery.js","packages/semantic-data-provider/src/src/dataProvider/utils/buildBlankNodesQuery.js","packages/semantic-data-provider/src/src/dataProvider/utils/buildAutoDetectBlankNodesQuery.js","packages/semantic-data-provider/src/src/dataProvider/utils/buildSparqlQuery.js","packages/semantic-data-provider/src/src/dataProvider/utils/fetchSparqlEndpoints.js","packages/semantic-data-provider/src/src/dataProvider/utils/findContainersWithPath.js","packages/semantic-data-provider/src/src/dataProvider/methods/getList.js","packages/semantic-data-provider/src/src/dataProvider/methods/getMany.js","packages/semantic-data-provider/src/src/dataProvider/methods/getManyReference.js","packages/semantic-data-provider/src/src/dataProvider/methods/update.ts","packages/semantic-data-provider/src/src/dataProvider/utils/fetchUserConfig.js","packages/semantic-data-provider/src/src/dataProvider/utils/fetchVoidEndpoints.js","packages/semantic-data-provider/src/src/dataProvider/utils/getServerKeyFromUri.js","packages/semantic-data-provider/src/src/dataProvider/httpClient.js","packages/semantic-data-provider/src/src/dataProvider/dataProvider.js","packages/semantic-data-provider/src/src/hooks/useGetExternalLink.js","packages/semantic-data-provider/src/src/hooks/useDataModel.ts","packages/semantic-data-provider/src/src/hooks/useDataServers.js","packages/semantic-data-provider/src/src/hooks/useContainers.ts","packages/semantic-data-provider/src/src/dataProvider/utils/findCreateContainerWithTypes.js","packages/semantic-data-provider/src/src/hooks/useCreateContainer.js","packages/semantic-data-provider/src/src/hooks/useDataModels.js","packages/semantic-data-provider/src/src/reification/FilterHandler.js","packages/semantic-data-provider/src/src/reification/GroupedReferenceHandler.js","packages/semantic-data-provider/src/src/reification/ReificationArrayInput.js","packages/semantic-data-provider/src/src/index.ts","packages/semantic-data-provider/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"export { default as dataProvider } from './dataProvider/dataProvider';\n\nexport { default as buildSparqlQuery } from './dataProvider/utils/buildSparqlQuery';\nexport { default as buildBlankNodesQuery } from './dataProvider/utils/buildBlankNodesQuery';\n\nexport { default as useGetExternalLink } from './hooks/useGetExternalLink';\nexport { default as useContainers } from './hooks/useContainers';\nexport { default as useCreateContainer } from './hooks/useCreateContainer';\nexport { default as useDataModel } from './hooks/useDataModel';\nexport { default as useDataModels } from './hooks/useDataModels';\nexport { default as useDataServers } from './hooks/useDataServers';\n\nexport { default as FilterHandler } from './reification/FilterHandler';\nexport { default as GroupedReferenceHandler } from './reification/GroupedReferenceHandler';\nexport { default as ReificationArrayInput } from './reification/ReificationArrayInput';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
1
+ {"mappings":"AEGA,qBAA4B,MAAM,GAAG;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC;AAG1E,wBAAwB;IACtB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAEhB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,kCAAkC;IAClC,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7D,UAAU,EAAE,GAAG,CAAC;CACjB,CAAC;AAEF,yBAAgC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAQxE,iBAAwB;IACtB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE;QACL,+DAA+D;QAC/D,OAAO,CAAC,EAAE,aAAa,EAAE,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;QAE/F,6FAA6F;QAC7F,UAAU,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7C,kIAAkI;QAClI,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QAEtB,0HAA0H;QAC1H,UAAU,CAAC,EAAE,EAAE,CAAC;QAEhB,2DAA2D;QAC3D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QAEtB,2DAA2D;QAC3D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEjC,iGAAiG;QACjG,cAAc,CAAC,EAAE,OAAO,CAAC;QAEzB,sGAAsG;QACtG,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;IACF,MAAM,CAAC,EAAE;QACP,oEAAoE;QACpE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;QAEvD,6GAA6G;QAC7G,SAAS,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;KAC3C,CAAC;IACF,aAAa,CAAC,EAAE;QACd,iCAAiC;QACjC,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;Ae5CF;;;;;;;;;EAoCC;AE7DD;;;;;QA4JC;AW7JD;;;;;;;;;;;;;;;EAmDC;AC3DD,sFA2CC;AC/CD,OAAA,MAAM,2BAA4B,MAAM,QAUvC,CAAC;ACTF,OAAA,MAAM,mDAWL,CAAC;ACTF,OAAA,MAAM,4BAA6B,MAAM,qEAYxC,CAAC;AEXF,sDAAsD;AACtD,+DAuBC;AC3BD,OAAA,MAAM,0DAWL,CAAC;ACRF,OAAA,MAAM,0CAKW,MAAM,uBAiCtB,CAAC;AC3CF;;;;;;;;;;;;;GAaG;AAEH;;;;;;4CAsCC;ACUD;;;;;;;4CA2BC;ACzED,2FAiBC","sources":["packages/semantic-data-provider/src/src/dataProvider/utils/fetchResource.js","packages/semantic-data-provider/src/src/dataProvider/methods/getOne.js","packages/semantic-data-provider/src/src/dataProvider/types.ts","packages/semantic-data-provider/src/src/dataProvider/utils/handleFiles.ts","packages/semantic-data-provider/src/src/dataProvider/utils/getServerKeyFromType.js","packages/semantic-data-provider/src/src/dataProvider/utils/parseServerKeys.js","packages/semantic-data-provider/src/src/dataProvider/utils/findContainersWithTypes.ts","packages/semantic-data-provider/src/src/dataProvider/methods/create.js","packages/semantic-data-provider/src/src/dataProvider/methods/delete.ts","packages/semantic-data-provider/src/src/dataProvider/methods/deleteMany.js","packages/semantic-data-provider/src/src/dataProvider/methods/getDataServers.js","packages/semantic-data-provider/src/src/dataProvider/methods/getDataModels.js","packages/semantic-data-provider/src/src/dataProvider/utils/arrayOf.ts","packages/semantic-data-provider/src/src/dataProvider/utils/fetchContainers.ts","packages/semantic-data-provider/src/src/dataProvider/utils/getEmbedFrame.js","packages/semantic-data-provider/src/src/dataProvider/utils/resolvePrefix.js","packages/semantic-data-provider/src/src/dataProvider/utils/buildBaseQuery.js","packages/semantic-data-provider/src/src/dataProvider/utils/buildBlankNodesQuery.js","packages/semantic-data-provider/src/src/dataProvider/utils/buildAutoDetectBlankNodesQuery.js","packages/semantic-data-provider/src/src/dataProvider/utils/buildSparqlQuery.js","packages/semantic-data-provider/src/src/dataProvider/utils/fetchSparqlEndpoints.js","packages/semantic-data-provider/src/src/dataProvider/utils/findContainersWithPath.js","packages/semantic-data-provider/src/src/dataProvider/methods/getList.js","packages/semantic-data-provider/src/src/dataProvider/methods/getMany.js","packages/semantic-data-provider/src/src/dataProvider/methods/getManyReference.js","packages/semantic-data-provider/src/src/dataProvider/methods/update.ts","packages/semantic-data-provider/src/src/dataProvider/utils/fetchUserConfig.js","packages/semantic-data-provider/src/src/dataProvider/utils/fetchVoidEndpoints.js","packages/semantic-data-provider/src/src/dataProvider/utils/getServerKeyFromUri.js","packages/semantic-data-provider/src/src/dataProvider/httpClient.js","packages/semantic-data-provider/src/src/dataProvider/dataProvider.js","packages/semantic-data-provider/src/src/hooks/useGetExternalLink.js","packages/semantic-data-provider/src/src/hooks/useDataModel.ts","packages/semantic-data-provider/src/src/hooks/useDataServers.ts","packages/semantic-data-provider/src/src/hooks/useContainers.ts","packages/semantic-data-provider/src/src/dataProvider/utils/findCreateContainerWithTypes.ts","packages/semantic-data-provider/src/src/hooks/useCreateContainer.js","packages/semantic-data-provider/src/src/hooks/useDataModels.ts","packages/semantic-data-provider/src/src/hooks/useCreateContainerUri.ts","packages/semantic-data-provider/src/src/reification/FilterHandler.js","packages/semantic-data-provider/src/src/reification/GroupedReferenceHandler.js","packages/semantic-data-provider/src/src/reification/ReificationArrayInput.js","packages/semantic-data-provider/src/src/index.ts","packages/semantic-data-provider/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"export { default as dataProvider } from './dataProvider/dataProvider';\n\nexport { default as buildSparqlQuery } from './dataProvider/utils/buildSparqlQuery';\nexport { default as buildBlankNodesQuery } from './dataProvider/utils/buildBlankNodesQuery';\n\nexport { default as useGetExternalLink } from './hooks/useGetExternalLink';\nexport { default as useContainers } from './hooks/useContainers';\nexport { default as useCreateContainer } from './hooks/useCreateContainer';\nexport { default as useCreateContainerUri } from './hooks/useCreateContainerUri';\nexport { default as useDataModel } from './hooks/useDataModel';\nexport { default as useDataModels } from './hooks/useDataModels';\nexport { default as useDataServers } from './hooks/useDataServers';\n\nexport { default as FilterHandler } from './reification/FilterHandler';\nexport { default as GroupedReferenceHandler } from './reification/GroupedReferenceHandler';\nexport { default as ReificationArrayInput } from './reification/ReificationArrayInput';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
package/dist/index.es.js CHANGED
@@ -1,11 +1,10 @@
1
1
  import $fj9kP$urljoin from "url-join";
2
2
  import $fj9kP$jsonld from "jsonld";
3
- import $fj9kP$isobject from "isobject";
4
3
  import $fj9kP$rdfjsdatamodel, {triple as $fj9kP$triple, variable as $fj9kP$variable, namedNode as $fj9kP$namedNode} from "@rdfjs/data-model";
5
4
  import {Generator as $fj9kP$Generator} from "sparqljs";
6
5
  import $fj9kP$cryptojsmd5 from "crypto-js/md5";
7
6
  import $fj9kP$jwtdecode from "jwt-decode";
8
- import {fetchUtils as $fj9kP$fetchUtils, DataProviderContext as $fj9kP$DataProviderContext, useRecordContext as $fj9kP$useRecordContext, useGetList as $fj9kP$useGetList, ArrayInput as $fj9kP$ArrayInput, SimpleFormIterator as $fj9kP$SimpleFormIterator, TextInput as $fj9kP$TextInput} from "react-admin";
7
+ import {fetchUtils as $fj9kP$fetchUtils, DataProviderContext as $fj9kP$DataProviderContext, useDataProvider as $fj9kP$useDataProvider, useRecordContext as $fj9kP$useRecordContext, useGetList as $fj9kP$useGetList, ArrayInput as $fj9kP$ArrayInput, SimpleFormIterator as $fj9kP$SimpleFormIterator, TextInput as $fj9kP$TextInput} from "react-admin";
9
8
  import $fj9kP$react, {useContext as $fj9kP$useContext, useMemo as $fj9kP$useMemo, useCallback as $fj9kP$useCallback, useState as $fj9kP$useState, useEffect as $fj9kP$useEffect} from "react";
10
9
  import {jsx as $fj9kP$jsx, Fragment as $fj9kP$Fragment, jsxs as $fj9kP$jsxs} from "react/jsx-runtime";
11
10
  import $fj9kP$muistylesmakeStyles from "@mui/styles/makeStyles";
@@ -175,7 +174,7 @@ const $15b841e67a1ba752$var$findContainersWithTypes = (types, serverKeys, dataSe
175
174
  const existingContainers = [];
176
175
  const parsedServerKeys = (0, $64441f6e76bd15b6$export$2e2bcd8739ae039)(serverKeys, dataServers);
177
176
  Object.keys(dataServers).filter((dataServerKey)=>dataServers[dataServerKey].containers).forEach((dataServerKey)=>{
178
- Object.keys(dataServers[dataServerKey].containers).forEach((containerKey)=>{
177
+ Object.keys(dataServers[dataServerKey].containers || {}).forEach((containerKey)=>{
179
178
  if (!parsedServerKeys || parsedServerKeys.includes(containerKey)) Object.keys(dataServers[dataServerKey].containers[containerKey]).forEach((type)=>{
180
179
  if (types.includes(type)) dataServers[dataServerKey].containers[containerKey][type].map((path)=>{
181
180
  const containerUri = (0, $fj9kP$urljoin)(dataServers[containerKey].baseUrl, path);
@@ -306,8 +305,7 @@ var $54a3fa40eed06111$export$2e2bcd8739ae039 = $54a3fa40eed06111$var$getDataMode
306
305
 
307
306
 
308
307
 
309
-
310
- const $db0064b52a991847$var$arrayOf = (value)=>{
308
+ const $cc8adac4b83414eb$var$arrayOf = (value)=>{
311
309
  // If the field is null-ish, we suppose there are no values.
312
310
  if (!value) return [];
313
311
  // Return as is.
@@ -317,86 +315,110 @@ const $db0064b52a991847$var$arrayOf = (value)=>{
317
315
  value
318
316
  ];
319
317
  };
320
- var $db0064b52a991847$export$2e2bcd8739ae039 = $db0064b52a991847$var$arrayOf;
318
+ var $cc8adac4b83414eb$export$2e2bcd8739ae039 = $cc8adac4b83414eb$var$arrayOf;
321
319
 
322
320
 
323
- const $3aeefa4731ce9a96$export$26b9f946b448f23e = (type, resource)=>{
324
- const resourceType = resource.type || resource["@type"];
325
- return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;
321
+ const $aba124ea15ea8bc6$var$isValidLDPContainer = (container)=>{
322
+ const resourceType = container.type || container["@type"];
323
+ return Array.isArray(resourceType) ? resourceType.includes("ldp:Container") : resourceType === "ldp:Container";
326
324
  };
327
- const $3aeefa4731ce9a96$var$fetchContainers = async (containers, resourceId, params, config)=>{
328
- const { httpClient: httpClient, jsonContext: jsonContext } = config;
329
- // Transform in an containerUri:serverKey object
330
- const containersServers = Object.keys(containers).reduce((acc, serverKey)=>({
331
- ...acc,
332
- ...Object.fromEntries(containers[serverKey].map((containerUri)=>[
333
- containerUri,
334
- serverKey
335
- ]))
336
- }), {});
337
- const fetchPromises = Object.keys(containersServers).map((containerUri)=>httpClient(containerUri).then(({ json: json })=>{
325
+ const $aba124ea15ea8bc6$var$isObject = (val)=>{
326
+ return val != null && typeof val === "object" && !Array.isArray(val);
327
+ };
328
+ const $aba124ea15ea8bc6$var$fetchContainers = async (containers, params, { httpClient: httpClient, jsonContext: jsonContext })=>{
329
+ const containersUri = Object.values(containers).flat();
330
+ const fetchPromises = containersUri.map((containerUri)=>httpClient(containerUri).then(async ({ json: json })=>{
331
+ const jsonResponse = json;
338
332
  // If container's context is different, compact it to have an uniform result
339
333
  // TODO deep compare if the context is an object
340
- if (json["@context"] !== jsonContext) return (0, $fj9kP$jsonld).compact(json, jsonContext);
341
- return json;
334
+ if (jsonResponse["@context"] !== jsonContext) return (0, $fj9kP$jsonld).compact(jsonResponse, jsonContext);
335
+ return jsonResponse;
342
336
  }).then((json)=>{
343
- if ($3aeefa4731ce9a96$export$26b9f946b448f23e("ldp:Container", json)) return (0, $db0064b52a991847$export$2e2bcd8739ae039)(json["ldp:contains"]).map((resource)=>({
337
+ if (!$aba124ea15ea8bc6$var$isValidLDPContainer(json)) throw new Error(`${containerUri} is not a LDP container`);
338
+ return (0, $cc8adac4b83414eb$export$2e2bcd8739ae039)(json["ldp:contains"]).map((resource)=>({
344
339
  "@context": json["@context"],
345
340
  ...resource
346
341
  }));
347
- throw new Error(`${containerUri} is not a LDP container`);
348
342
  }));
349
343
  // Fetch simultaneously all containers
350
- let results = await Promise.all(fetchPromises);
351
- if (results.length === 0) return {
352
- data: [],
353
- total: 0
354
- };
355
- // Merge all results in one array
356
- results = [].concat.apply(...results);
357
- let returnData = results.map((item)=>{
358
- item.id = item.id || item["@id"];
359
- return item;
344
+ const results = await Promise.all(fetchPromises);
345
+ let resources = results.flat();
346
+ resources = resources.map((resource)=>{
347
+ resource.id ||= resource["@id"];
348
+ return resource;
360
349
  });
361
350
  // Apply filter to results
362
- if (params.filter) {
363
- // For SPARQL queries, we use "a" to filter types, but in containers it must be "type"
364
- if (params.filter.a) {
365
- params.filter.type = params.filter.a;
366
- delete params.filter.a;
367
- }
368
- if (Object.keys(params.filter).length > 0) returnData = returnData.filter((resource)=>{
369
- return Object.entries(params.filter).every(([k, v])=>{
370
- if (k == "q") return Object.entries(resource).some(([kr, vr])=>{
371
- if (!(0, $fj9kP$isobject)(vr)) {
372
- const arrayValues = Array.isArray(vr) ? vr : [
373
- vr
374
- ];
375
- return arrayValues.some((va)=>{
376
- if (typeof va === "string" || va instanceof String) return va.toLowerCase().normalize("NFD").includes(v.toLowerCase().normalize("NFD"));
377
- });
378
- }
379
- return false;
380
- });
381
- if (resource[k]) return Array.isArray(resource[k]) ? resource[k].some((va)=>va.includes(v)) : resource[k].includes(v);
382
- return false;
351
+ const filters = params.filter;
352
+ // For SPARQL queries, we use "a" to filter types, but in containers it must be "type"
353
+ if (filters.a) {
354
+ filters.type = filters.a;
355
+ delete filters.a;
356
+ }
357
+ // Filter resources attributes according to _predicates list
358
+ if (filters._predicates && Array.isArray(filters._predicates)) {
359
+ const predicates = filters._predicates;
360
+ const mandatoryAttributes = [
361
+ "id"
362
+ ];
363
+ resources = resources.map((resource)=>{
364
+ return Object.keys(resource).filter((key)=>predicates.includes(key) || mandatoryAttributes.includes(key)).reduce((filteredResource, key)=>{
365
+ filteredResource[key] = resource[key];
366
+ return filteredResource;
367
+ }, {
368
+ "@context": []
383
369
  });
384
370
  });
385
371
  }
386
- if (params.sort) returnData = returnData.sort((a, b)=>{
372
+ if (Object.keys(filters).filter((f)=>![
373
+ "_predicates",
374
+ "_servers"
375
+ ].includes(f)).length > 0) resources = resources.filter((resource)=>{
376
+ // Full text filtering
377
+ if (filters.q) return Object.values(resource).some((attributeValue)=>{
378
+ if (!$aba124ea15ea8bc6$var$isObject(attributeValue)) {
379
+ const arrayValues = Array.isArray(attributeValue) ? attributeValue : [
380
+ attributeValue
381
+ ];
382
+ return arrayValues.some((value)=>{
383
+ if (typeof value === "string") return value.toLowerCase().normalize("NFD").includes(filters.q.toLowerCase().normalize("NFD"));
384
+ return false;
385
+ });
386
+ }
387
+ return false;
388
+ });
389
+ // Attribute filtering
390
+ const attributesFilters = Object.keys(filters).filter((f)=>![
391
+ "_predicates",
392
+ "_servers",
393
+ "q"
394
+ ].includes(f));
395
+ return attributesFilters.every((attribute)=>{
396
+ if (resource[attribute]) {
397
+ const arrayValues = Array.isArray(resource[attribute]) ? resource[attribute] : [
398
+ resource[attribute]
399
+ ];
400
+ return arrayValues.some((value)=>typeof value === "string" && value.includes(filters[attribute]));
401
+ }
402
+ return false;
403
+ });
404
+ });
405
+ // Sorting
406
+ if (params.sort) resources = resources.sort((a, b)=>{
387
407
  if (a[params.sort.field] && b[params.sort.field]) {
388
408
  if (params.sort.order === "ASC") return a[params.sort.field].localeCompare(b[params.sort.field]);
389
409
  return b[params.sort.field].localeCompare(a[params.sort.field]);
390
410
  }
391
411
  return true;
392
412
  });
393
- if (params.pagination) returnData = returnData.slice((params.pagination.page - 1) * params.pagination.perPage, params.pagination.page * params.pagination.perPage);
413
+ // Pagination
414
+ const total = resources.length;
415
+ if (params.pagination) resources = resources.slice((params.pagination.page - 1) * params.pagination.perPage, params.pagination.page * params.pagination.perPage);
394
416
  return {
395
- data: returnData,
396
- total: results.length
417
+ data: resources,
418
+ total: total
397
419
  };
398
420
  };
399
- var $3aeefa4731ce9a96$export$2e2bcd8739ae039 = $3aeefa4731ce9a96$var$fetchContainers;
421
+ var $aba124ea15ea8bc6$export$2e2bcd8739ae039 = $aba124ea15ea8bc6$var$fetchContainers;
400
422
 
401
423
 
402
424
 
@@ -861,7 +883,7 @@ const $7add415f7ebb1122$var$getListMethod = (config)=>async (resourceId, params
861
883
  containers = (0, $4a0be4f601906b75$export$2e2bcd8739ae039)(dataModel.list.containers, dataServers);
862
884
  } else // Otherwise find the container URIs on the given servers (either in the filter or the data model)
863
885
  containers = (0, $15b841e67a1ba752$export$2e2bcd8739ae039)(dataModel.types, params.filter?._servers || dataModel.list?.servers, dataServers);
864
- if (dataModel.list?.fetchContainer) return (0, $3aeefa4731ce9a96$export$2e2bcd8739ae039)(containers, resourceId, params, config);
886
+ if (dataModel.list?.fetchContainer) return (0, $aba124ea15ea8bc6$export$2e2bcd8739ae039)(containers, params, config);
865
887
  return (0, $05a1b4063d50f1b7$export$2e2bcd8739ae039)(containers, resourceId, params, config);
866
888
  };
867
889
  var $7add415f7ebb1122$export$2e2bcd8739ae039 = $7add415f7ebb1122$var$getListMethod;
@@ -1020,6 +1042,7 @@ var $31a4627920feab4a$export$2e2bcd8739ae039 = $31a4627920feab4a$var$fetchVoidEn
1020
1042
 
1021
1043
  // Return the first server matching with the baseUrl
1022
1044
  const $47e21ee81eed09a6$var$getServerKeyFromUri = (uri, dataServers)=>{
1045
+ if (!uri) throw Error(`No URI provided to getServerKeyFromUri`);
1023
1046
  return Object.keys(dataServers).find((key)=>{
1024
1047
  if (dataServers[key].pod) // The baseUrl ends with /data so remove this part to match with the webId and webId-related URLs (/inbox, /outbox...)
1025
1048
  return dataServers[key].baseUrl && uri.startsWith(dataServers[key].baseUrl.replace("/data", ""));
@@ -1090,30 +1113,44 @@ const $243bf28fbb1b868f$var$dataProvider = (config)=>{
1090
1113
  if (!config.returnFailedResources) config.returnFailedResources = false;
1091
1114
  // Configure httpClient with data servers (this is needed for proxy calls)
1092
1115
  config.httpClient = (0, $22b4895a4ca7d626$export$2e2bcd8739ae039)(config.dataServers);
1093
- const fetchUserConfigPromise = (0, $81a8da127161495a$export$2e2bcd8739ae039)(config);
1094
- const fetchVoidEndpointsPromise = (0, $31a4627920feab4a$export$2e2bcd8739ae039)(config);
1095
- const waitForVoidEndpoints = (method)=>async (...arg)=>{
1116
+ // Keep in memory for refresh
1117
+ const originalConfig = {
1118
+ ...config
1119
+ };
1120
+ let fetchUserConfigPromise = (0, $81a8da127161495a$export$2e2bcd8739ae039)(config);
1121
+ let fetchVoidEndpointsPromise = (0, $31a4627920feab4a$export$2e2bcd8739ae039)(config);
1122
+ const waitForConfig = (method)=>async (...arg)=>{
1096
1123
  await fetchUserConfigPromise;
1097
1124
  await fetchVoidEndpointsPromise; // Return immediately if promise is fulfilled
1098
1125
  return await method(...arg);
1099
1126
  };
1100
1127
  return {
1101
- getList: waitForVoidEndpoints((0, $7add415f7ebb1122$export$2e2bcd8739ae039)(config)),
1102
- getMany: waitForVoidEndpoints((0, $f1e05270f9a21255$export$2e2bcd8739ae039)(config)),
1103
- getManyReference: waitForVoidEndpoints((0, $b5979a9678f57756$export$2e2bcd8739ae039)(config)),
1104
- getOne: waitForVoidEndpoints((0, $ed447224dd38ce82$export$2e2bcd8739ae039)(config)),
1105
- create: waitForVoidEndpoints((0, $5a7a2f7583392866$export$2e2bcd8739ae039)(config)),
1106
- update: waitForVoidEndpoints((0, $c5031381f4dfc62d$export$2e2bcd8739ae039)(config)),
1128
+ getList: waitForConfig((0, $7add415f7ebb1122$export$2e2bcd8739ae039)(config)),
1129
+ getMany: waitForConfig((0, $f1e05270f9a21255$export$2e2bcd8739ae039)(config)),
1130
+ getManyReference: waitForConfig((0, $b5979a9678f57756$export$2e2bcd8739ae039)(config)),
1131
+ getOne: waitForConfig((0, $ed447224dd38ce82$export$2e2bcd8739ae039)(config)),
1132
+ create: waitForConfig((0, $5a7a2f7583392866$export$2e2bcd8739ae039)(config)),
1133
+ update: waitForConfig((0, $c5031381f4dfc62d$export$2e2bcd8739ae039)(config)),
1107
1134
  updateMany: ()=>{
1108
1135
  throw new Error("updateMany is not implemented yet");
1109
1136
  },
1110
- delete: waitForVoidEndpoints((0, $9510970b8e7eb9e2$export$2e2bcd8739ae039)(config)),
1111
- deleteMany: waitForVoidEndpoints((0, $298dd1ae21173ea0$export$2e2bcd8739ae039)(config)),
1137
+ delete: waitForConfig((0, $9510970b8e7eb9e2$export$2e2bcd8739ae039)(config)),
1138
+ deleteMany: waitForConfig((0, $298dd1ae21173ea0$export$2e2bcd8739ae039)(config)),
1112
1139
  // Custom methods
1113
- getDataModels: waitForVoidEndpoints((0, $54a3fa40eed06111$export$2e2bcd8739ae039)(config)),
1114
- getDataServers: waitForVoidEndpoints((0, $7dd5bf9323d2d9c1$export$2e2bcd8739ae039)(config)),
1140
+ getDataModels: waitForConfig((0, $54a3fa40eed06111$export$2e2bcd8739ae039)(config)),
1141
+ getDataServers: waitForConfig((0, $7dd5bf9323d2d9c1$export$2e2bcd8739ae039)(config)),
1115
1142
  getLocalDataServers: (0, $7dd5bf9323d2d9c1$export$2e2bcd8739ae039)(config),
1116
- fetch: waitForVoidEndpoints(config.httpClient)
1143
+ fetch: waitForConfig(config.httpClient),
1144
+ refreshConfig: async ()=>{
1145
+ config = {
1146
+ ...originalConfig
1147
+ };
1148
+ fetchUserConfigPromise = (0, $81a8da127161495a$export$2e2bcd8739ae039)(config);
1149
+ fetchVoidEndpointsPromise = (0, $31a4627920feab4a$export$2e2bcd8739ae039)(config);
1150
+ await fetchUserConfigPromise;
1151
+ await fetchVoidEndpointsPromise;
1152
+ return config;
1153
+ }
1117
1154
  };
1118
1155
  };
1119
1156
  var $243bf28fbb1b868f$export$2e2bcd8739ae039 = $243bf28fbb1b868f$var$dataProvider;
@@ -1184,25 +1221,26 @@ var $e5a0eacd756fd1d5$export$2e2bcd8739ae039 = $e5a0eacd756fd1d5$var$useDataMode
1184
1221
 
1185
1222
 
1186
1223
 
1187
- const $11b469d0a927fb46$var$useDataServers = ()=>{
1188
- // Get the raw data provider, since useDataProvider returns a wrapper
1189
- const dataProvider = (0, $fj9kP$useContext)((0, $fj9kP$DataProviderContext));
1224
+ const $4daf4cf698ee4eed$var$useDataServers = ()=>{
1225
+ const dataProvider = (0, $fj9kP$useDataProvider)();
1190
1226
  const [dataServers, setDataServers] = (0, $fj9kP$useState)();
1191
1227
  (0, $fj9kP$useEffect)(()=>{
1192
- dataProvider.getDataServers().then((results)=>setDataServers(results));
1228
+ dataProvider.getDataServers().then((results)=>{
1229
+ setDataServers(results);
1230
+ });
1193
1231
  }, [
1194
1232
  dataProvider,
1195
1233
  setDataServers
1196
1234
  ]);
1197
1235
  return dataServers;
1198
1236
  };
1199
- var $11b469d0a927fb46$export$2e2bcd8739ae039 = $11b469d0a927fb46$var$useDataServers;
1237
+ var $4daf4cf698ee4eed$export$2e2bcd8739ae039 = $4daf4cf698ee4eed$var$useDataServers;
1200
1238
 
1201
1239
 
1202
1240
 
1203
1241
  const $586fa0ea9d02fa12$var$useContainers = (resourceId, serverKeys = "@all")=>{
1204
1242
  const dataModel = (0, $e5a0eacd756fd1d5$export$2e2bcd8739ae039)(resourceId);
1205
- const dataServers = (0, $11b469d0a927fb46$export$2e2bcd8739ae039)();
1243
+ const dataServers = (0, $4daf4cf698ee4eed$export$2e2bcd8739ae039)();
1206
1244
  const [containers, setContainers] = (0, $fj9kP$useState)();
1207
1245
  (0, $fj9kP$useEffect)(()=>{
1208
1246
  if (dataModel && dataServers) setContainers((0, $15b841e67a1ba752$export$2e2bcd8739ae039)(dataModel.types, serverKeys, dataServers));
@@ -1221,10 +1259,10 @@ var $586fa0ea9d02fa12$export$2e2bcd8739ae039 = $586fa0ea9d02fa12$var$useContaine
1221
1259
 
1222
1260
 
1223
1261
 
1224
- const $a6f9067f89a63589$var$findCreateContainerWithTypes = (types, createServerKey, dataServers)=>{
1262
+ const $7d9911a250866af6$var$findCreateContainerWithTypes = (types, createServerKey, dataServers)=>{
1225
1263
  const containers = [];
1226
- if (Object.keys(dataServers[createServerKey].containers[createServerKey]).length > 0) Object.keys(dataServers[createServerKey].containers[createServerKey]).forEach((type)=>{
1227
- if (types.includes(type)) dataServers[createServerKey].containers[createServerKey][type].map((path)=>{
1264
+ Object.keys(dataServers[createServerKey].containers?.[createServerKey] || {}).forEach((type)=>{
1265
+ if (types.includes(type)) dataServers[createServerKey].containers[createServerKey][type].forEach((path)=>{
1228
1266
  const containerUri = (0, $fj9kP$urljoin)(dataServers[createServerKey].baseUrl, path);
1229
1267
  if (!containers.includes(containerUri)) containers.push(containerUri);
1230
1268
  });
@@ -1233,13 +1271,13 @@ const $a6f9067f89a63589$var$findCreateContainerWithTypes = (types, createServerK
1233
1271
  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.`);
1234
1272
  return containers[0];
1235
1273
  };
1236
- var $a6f9067f89a63589$export$2e2bcd8739ae039 = $a6f9067f89a63589$var$findCreateContainerWithTypes;
1274
+ var $7d9911a250866af6$export$2e2bcd8739ae039 = $7d9911a250866af6$var$findCreateContainerWithTypes;
1237
1275
 
1238
1276
 
1239
1277
 
1240
- const $7bd037d7ec9d51f8$var$useCreateContainer = (resourceId)=>{
1278
+ /** @deprecated Use "useCreateContainerUri" instead */ const $7bd037d7ec9d51f8$var$useCreateContainer = (resourceId)=>{
1241
1279
  const dataModel = (0, $e5a0eacd756fd1d5$export$2e2bcd8739ae039)(resourceId);
1242
- const dataServers = (0, $11b469d0a927fb46$export$2e2bcd8739ae039)();
1280
+ const dataServers = (0, $4daf4cf698ee4eed$export$2e2bcd8739ae039)();
1243
1281
  const [createContainer, setCreateContainer] = (0, $fj9kP$useState)();
1244
1282
  (0, $fj9kP$useEffect)(()=>{
1245
1283
  if (dataModel && dataServers) {
@@ -1247,10 +1285,10 @@ const $7bd037d7ec9d51f8$var$useCreateContainer = (resourceId)=>{
1247
1285
  const [serverKey, path] = Object.entries(dataModel.create.container)[0];
1248
1286
  if (!serverKey || !dataServers[serverKey]) throw new Error(`Wrong key for the dataModel.create.container config of resource ${resourceId}`);
1249
1287
  setCreateContainer((0, $fj9kP$urljoin)(dataServers[serverKey].baseUrl, path));
1250
- } else if (dataModel.create?.server) setCreateContainer((0, $a6f9067f89a63589$export$2e2bcd8739ae039)(dataModel.types, dataModel.create?.server, dataServers));
1288
+ } else if (dataModel.create?.server) setCreateContainer((0, $7d9911a250866af6$export$2e2bcd8739ae039)(dataModel.types, dataModel.create?.server, dataServers));
1251
1289
  else {
1252
1290
  const defaultServerKey = (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("default", dataServers);
1253
- setCreateContainer((0, $a6f9067f89a63589$export$2e2bcd8739ae039)(dataModel.types, defaultServerKey, dataServers));
1291
+ setCreateContainer((0, $7d9911a250866af6$export$2e2bcd8739ae039)(dataModel.types, defaultServerKey, dataServers));
1254
1292
  }
1255
1293
  }
1256
1294
  }, [
@@ -1266,19 +1304,50 @@ var $7bd037d7ec9d51f8$export$2e2bcd8739ae039 = $7bd037d7ec9d51f8$var$useCreateCo
1266
1304
 
1267
1305
 
1268
1306
 
1269
- const $349fed82907088e5$var$useDataModels = ()=>{
1270
- // Get the raw data provider, since useDataProvider returns a wrapper
1271
- const dataProvider = (0, $fj9kP$useContext)((0, $fj9kP$DataProviderContext));
1307
+
1308
+
1309
+
1310
+
1311
+ const $3a9656756670cb78$var$useDataModels = ()=>{
1312
+ const dataProvider = (0, $fj9kP$useDataProvider)();
1272
1313
  const [dataModels, setDataModels] = (0, $fj9kP$useState)();
1273
1314
  (0, $fj9kP$useEffect)(()=>{
1274
- dataProvider.getDataModels().then((results)=>setDataModels(results));
1315
+ dataProvider.getDataModels().then((results)=>{
1316
+ setDataModels(results);
1317
+ });
1275
1318
  }, [
1276
1319
  dataProvider,
1277
1320
  setDataModels
1278
1321
  ]);
1279
1322
  return dataModels;
1280
1323
  };
1281
- var $349fed82907088e5$export$2e2bcd8739ae039 = $349fed82907088e5$var$useDataModels;
1324
+ var $3a9656756670cb78$export$2e2bcd8739ae039 = $3a9656756670cb78$var$useDataModels;
1325
+
1326
+
1327
+ const $35f3e75c86e51f35$var$useCreateContainerUri = ()=>{
1328
+ const dataModels = (0, $3a9656756670cb78$export$2e2bcd8739ae039)();
1329
+ const dataServers = (0, $4daf4cf698ee4eed$export$2e2bcd8739ae039)();
1330
+ const getContainerUri = (0, $fj9kP$useCallback)((resourceId)=>{
1331
+ if (!dataModels || !dataServers || !dataModels[resourceId]) return undefined;
1332
+ const dataModel = dataModels[resourceId];
1333
+ if (dataModel.create?.container) {
1334
+ const [serverKey, path] = Object.entries(dataModel.create.container)[0];
1335
+ if (!serverKey || !dataServers[serverKey]) throw new Error(`Wrong key for the dataModel.create.container config of resource ${resourceId}`);
1336
+ return (0, $fj9kP$urljoin)(dataServers[serverKey].baseUrl, path);
1337
+ }
1338
+ if (dataModel.create?.server) return (0, $7d9911a250866af6$export$2e2bcd8739ae039)(dataModel.types, dataModel.create?.server, dataServers);
1339
+ const defaultServerKey = (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("default", dataServers);
1340
+ if (!defaultServerKey) throw new Error(`No default dataServer found. You can set explicitly one setting the "default" attribute to true`);
1341
+ return (0, $7d9911a250866af6$export$2e2bcd8739ae039)(dataModel.types, defaultServerKey, dataServers);
1342
+ }, [
1343
+ dataModels,
1344
+ dataServers
1345
+ ]);
1346
+ return getContainerUri;
1347
+ };
1348
+ var $35f3e75c86e51f35$export$2e2bcd8739ae039 = $35f3e75c86e51f35$var$useCreateContainerUri;
1349
+
1350
+
1282
1351
 
1283
1352
 
1284
1353
 
@@ -1475,5 +1544,5 @@ var $6844bbce0ad66151$export$2e2bcd8739ae039 = $6844bbce0ad66151$var$Reification
1475
1544
 
1476
1545
 
1477
1546
 
1478
- export {$243bf28fbb1b868f$export$2e2bcd8739ae039 as dataProvider, $6cde9a8fbbde3ffb$export$2e2bcd8739ae039 as buildSparqlQuery, $865f630cc944e818$export$2e2bcd8739ae039 as buildBlankNodesQuery, $87656edf926c0f1f$export$2e2bcd8739ae039 as useGetExternalLink, $586fa0ea9d02fa12$export$2e2bcd8739ae039 as useContainers, $7bd037d7ec9d51f8$export$2e2bcd8739ae039 as useCreateContainer, $e5a0eacd756fd1d5$export$2e2bcd8739ae039 as useDataModel, $349fed82907088e5$export$2e2bcd8739ae039 as useDataModels, $11b469d0a927fb46$export$2e2bcd8739ae039 as useDataServers, $406574efa35ec6f1$export$2e2bcd8739ae039 as FilterHandler, $1d8c1cbe606a94ae$export$2e2bcd8739ae039 as GroupedReferenceHandler, $6844bbce0ad66151$export$2e2bcd8739ae039 as ReificationArrayInput};
1547
+ export {$243bf28fbb1b868f$export$2e2bcd8739ae039 as dataProvider, $6cde9a8fbbde3ffb$export$2e2bcd8739ae039 as buildSparqlQuery, $865f630cc944e818$export$2e2bcd8739ae039 as buildBlankNodesQuery, $87656edf926c0f1f$export$2e2bcd8739ae039 as useGetExternalLink, $586fa0ea9d02fa12$export$2e2bcd8739ae039 as useContainers, $7bd037d7ec9d51f8$export$2e2bcd8739ae039 as useCreateContainer, $35f3e75c86e51f35$export$2e2bcd8739ae039 as useCreateContainerUri, $e5a0eacd756fd1d5$export$2e2bcd8739ae039 as useDataModel, $3a9656756670cb78$export$2e2bcd8739ae039 as useDataModels, $4daf4cf698ee4eed$export$2e2bcd8739ae039 as useDataServers, $406574efa35ec6f1$export$2e2bcd8739ae039 as FilterHandler, $1d8c1cbe606a94ae$export$2e2bcd8739ae039 as GroupedReferenceHandler, $6844bbce0ad66151$export$2e2bcd8739ae039 as ReificationArrayInput};
1479
1548
  //# sourceMappingURL=index.es.js.map