diff --git a/src/frontend/packages/semantic-data-provider/dist/index.cjs.js b/src/frontend/packages/semantic-data-provider/dist/index.cjs.js index 278b09ed6..d584d65d4 100644 --- a/src/frontend/packages/semantic-data-provider/dist/index.cjs.js +++ b/src/frontend/packages/semantic-data-provider/dist/index.cjs.js @@ -380,6 +380,8 @@ const $8c999cc29c8d6a6c$var$isValidLDPContainer = (container)=>{ const $8c999cc29c8d6a6c$var$isObject = (val)=>{ return val != null && typeof val === 'object' && !Array.isArray(val); }; +// Remove accents and uppercase +const $8c999cc29c8d6a6c$var$normalizeString = (str)=>str.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, ''); const $8c999cc29c8d6a6c$var$fetchContainers = async (containers, params, config)=>{ const { httpClient: httpClient, jsonContext: jsonContext } = config; // Fetch simultaneously all containers @@ -435,7 +437,7 @@ const $8c999cc29c8d6a6c$var$fetchContainers = async (containers, params, config) attributeValue ]; return arrayValues.some((value)=>{ - if (typeof value === 'string') return value.toLowerCase().normalize('NFD').includes(filters.q.toLowerCase().normalize('NFD')); + if (typeof value === 'string') return $8c999cc29c8d6a6c$var$normalizeString(value).includes($8c999cc29c8d6a6c$var$normalizeString(filters.q)); return false; }); } @@ -452,7 +454,7 @@ const $8c999cc29c8d6a6c$var$fetchContainers = async (containers, params, config) const arrayValues = Array.isArray(resource[attribute]) ? resource[attribute] : [ resource[attribute] ]; - return arrayValues.some((value)=>typeof value === 'string' && value.includes(filters[attribute])); + return arrayValues.some((value)=>typeof value === 'string' && $8c999cc29c8d6a6c$var$normalizeString(value).includes($8c999cc29c8d6a6c$var$normalizeString(filters[attribute]))); } return false; }); diff --git a/src/frontend/packages/semantic-data-provider/dist/index.cjs.js.map b/src/frontend/packages/semantic-data-provider/dist/index.cjs.js.map index 9c8285a35..ead3ec5cb 100644 --- a/src/frontend/packages/semantic-data-provider/dist/index.cjs.js.map +++ b/src/frontend/packages/semantic-data-provider/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/semantic-data-provider/src/index.ts","packages/semantic-data-provider/src/dataProvider/dataProvider.ts","packages/semantic-data-provider/src/dataProvider/methods/create.ts","packages/semantic-data-provider/src/dataProvider/methods/getOne.ts","packages/semantic-data-provider/src/dataProvider/utils/fetchResource.ts","packages/semantic-data-provider/src/dataProvider/utils/handleFiles.ts","packages/semantic-data-provider/src/dataProvider/utils/getUploadsContainerUri.ts","packages/semantic-data-provider/src/dataProvider/utils/findContainersWithTypes.ts","packages/semantic-data-provider/src/dataProvider/utils/parseServerKeys.ts","packages/semantic-data-provider/src/dataProvider/utils/getServerKeyFromType.ts","packages/semantic-data-provider/src/dataProvider/utils/findContainersWithURIs.ts","packages/semantic-data-provider/src/dataProvider/methods/delete.ts","packages/semantic-data-provider/src/dataProvider/methods/deleteMany.ts","packages/semantic-data-provider/src/dataProvider/methods/getDataServers.ts","packages/semantic-data-provider/src/dataProvider/methods/getDataModels.ts","packages/semantic-data-provider/src/dataProvider/methods/getList.ts","packages/semantic-data-provider/src/dataProvider/utils/fetchContainers.ts","packages/semantic-data-provider/src/dataProvider/utils/arrayOf.ts","packages/semantic-data-provider/src/dataProvider/utils/fetchSelectedResources.js","packages/semantic-data-provider/src/dataProvider/utils/fetchSparqlEndpoints.ts","packages/semantic-data-provider/src/dataProvider/utils/getEmbedFrame.ts","packages/semantic-data-provider/src/dataProvider/utils/buildSparqlQuery.ts","packages/semantic-data-provider/src/dataProvider/utils/buildBaseQuery.ts","packages/semantic-data-provider/src/dataProvider/utils/getUriFromPrefix.ts","packages/semantic-data-provider/src/dataProvider/utils/buildBlankNodesQuery.ts","packages/semantic-data-provider/src/dataProvider/utils/buildAutoDetectBlankNodesQuery.ts","packages/semantic-data-provider/src/dataProvider/utils/findContainersWithShapeTree.ts","packages/semantic-data-provider/src/dataProvider/methods/getMany.ts","packages/semantic-data-provider/src/dataProvider/methods/getManyReference.ts","packages/semantic-data-provider/src/dataProvider/methods/patch.ts","packages/semantic-data-provider/src/dataProvider/methods/update.ts","packages/semantic-data-provider/src/dataProvider/utils/getServerKeyFromUri.ts","packages/semantic-data-provider/src/dataProvider/fetchUtil.ts","packages/semantic-data-provider/src/dataProvider/utils/normalizeConfig.ts","packages/semantic-data-provider/src/dataProvider/utils/expandTypes.ts","packages/semantic-data-provider/src/dataProvider/utils/getTypesFromShapeTree.ts","packages/semantic-data-provider/src/dataProvider/utils/getOntologiesFromContext.ts","packages/semantic-data-provider/src/dataProvider/utils/getPrefixFromUri.ts","packages/semantic-data-provider/src/dataProvider/plugins/configureUserStorage.ts","packages/semantic-data-provider/src/dataProvider/plugins/fetchAppRegistration.ts","packages/semantic-data-provider/src/dataProvider/utils/getContainerFromDataRegistration.ts","packages/semantic-data-provider/src/dataProvider/plugins/fetchDataRegistry.ts","packages/semantic-data-provider/src/dataProvider/plugins/fetchTypeIndexes.ts","packages/semantic-data-provider/src/dataProvider/plugins/fetchVoidEndpoints.ts","packages/semantic-data-provider/src/hooks/useCompactPredicate.ts","packages/semantic-data-provider/src/hooks/useDataProviderConfig.ts","packages/semantic-data-provider/src/dataProvider/utils/compactPredicate.ts","packages/semantic-data-provider/src/hooks/useContainers.ts","packages/semantic-data-provider/src/hooks/useDataModels.ts","packages/semantic-data-provider/src/hooks/useDataServers.ts","packages/semantic-data-provider/src/hooks/useContainersByTypes.ts","packages/semantic-data-provider/src/hooks/useContainerByUri.ts","packages/semantic-data-provider/src/hooks/useCreateContainerUri.ts","packages/semantic-data-provider/src/hooks/useGetCreateContainerUri.ts","packages/semantic-data-provider/src/dataProvider/utils/findCreateContainerWithTypes.ts","packages/semantic-data-provider/src/hooks/useDataModel.ts","packages/semantic-data-provider/src/hooks/useGetExternalLink.ts","packages/semantic-data-provider/src/hooks/useGetPrefixFromUri.ts","packages/semantic-data-provider/src/reification/FilterHandler.tsx","packages/semantic-data-provider/src/reification/GroupedReferenceHandler.tsx","packages/semantic-data-provider/src/reification/ReificationArrayInput.tsx","packages/semantic-data-provider/src/notificationChannels/subscribeToUpdates.ts","packages/semantic-data-provider/src/dataProvider/types.ts"],"sourcesContent":["export { default as dataProvider } from './dataProvider/dataProvider';\n\nexport { default as buildSparqlQuery } from './dataProvider/utils/buildSparqlQuery';\nexport { default as buildBlankNodesQuery } from './dataProvider/utils/buildBlankNodesQuery';\nexport { default as getUriFromPrefix } from './dataProvider/utils/getUriFromPrefix';\nexport { default as getPrefixFromUri } from './dataProvider/utils/getPrefixFromUri';\n\nexport { default as configureUserStorage } from './dataProvider/plugins/configureUserStorage';\nexport { default as fetchAppRegistration } from './dataProvider/plugins/fetchAppRegistration';\nexport { default as fetchDataRegistry } from './dataProvider/plugins/fetchDataRegistry';\nexport { default as fetchTypeIndexes } from './dataProvider/plugins/fetchTypeIndexes';\nexport { default as fetchVoidEndpoints } from './dataProvider/plugins/fetchVoidEndpoints';\n\nexport { default as useCompactPredicate } from './hooks/useCompactPredicate';\nexport { default as useContainers } from './hooks/useContainers';\nexport { default as useContainersByTypes } from './hooks/useContainersByTypes';\nexport { default as useContainerByUri } from './hooks/useContainerByUri';\nexport { default as useCreateContainerUri } from './hooks/useCreateContainerUri';\nexport { default as useDataModel } from './hooks/useDataModel';\nexport { default as useDataModels } from './hooks/useDataModels';\nexport { default as useDataProviderConfig } from './hooks/useDataProviderConfig';\nexport { default as useDataServers } from './hooks/useDataServers';\nexport { default as useGetCreateContainerUri } from './hooks/useGetCreateContainerUri';\nexport { default as useGetExternalLink } from './hooks/useGetExternalLink';\nexport { default as useGetPrefixFromUri } from './hooks/useGetPrefixFromUri';\n\nexport { default as FilterHandler } from './reification/FilterHandler';\nexport { default as GroupedReferenceHandler } from './reification/GroupedReferenceHandler';\nexport { default as ReificationArrayInput } from './reification/ReificationArrayInput';\n\nexport {\n createWsChannel,\n getOrCreateWsChannel,\n createSolidNotificationChannel\n} from './notificationChannels/subscribeToUpdates';\n\nexport * from './dataProvider/types';\n","import { createConnectedLdoDataset } from '@ldo/connected';\nimport { solidConnectedPlugin } from '@ldo/connected-solid';\nimport createMethod from './methods/create';\nimport deleteMethod from './methods/delete';\nimport deleteManyMethod from './methods/deleteMany';\nimport getDataServersMethod from './methods/getDataServers';\nimport getDataModelsMethod from './methods/getDataModels';\nimport getListMethod from './methods/getList';\nimport getManyMethod from './methods/getMany';\nimport getManyReferenceMethod from './methods/getManyReference';\nimport getOneMethod from './methods/getOne';\nimport patchMethod from './methods/patch';\nimport updateMethod from './methods/update';\nimport { createHttpClient, createAuthFetch } from './fetchUtil';\nimport { uploadFile } from './utils/handleFiles';\nimport normalizeConfig from './utils/normalizeConfig';\nimport expandTypes from './utils/expandTypes';\nimport getOntologiesFromContext from './utils/getOntologiesFromContext';\nimport { Configuration, RuntimeConfiguration, SemanticDataProvider } from './types';\n\nconst dataProvider = (originalConfig: Configuration): SemanticDataProvider => {\n // Keep in memory for refresh\n let config: RuntimeConfiguration;\n\n const prepareConfig = async () => {\n const fetchJson = createHttpClient(originalConfig.dataServers);\n const authFetchFn = createAuthFetch(originalConfig.dataServers);\n\n const dataset = createConnectedLdoDataset([solidConnectedPlugin]);\n dataset.setContext('solid', { fetch: authFetchFn });\n\n config = {\n ...originalConfig,\n httpClient: fetchJson,\n authFetch: authFetchFn,\n dataset\n };\n\n config.dataServers ??= {};\n\n // Load plugins.\n for (const plugin of config.plugins) {\n if (plugin.transformConfig) {\n try {\n config = await plugin.transformConfig(config);\n } catch (error) {\n console.error('Error setting up data provider plugin', plugin.name, error);\n }\n }\n }\n\n // Configure httpClient & authFetch again with possibly updated data servers\n config.httpClient = createHttpClient(config.dataServers);\n config.authFetch = createAuthFetch(config.dataServers);\n dataset.setContext('solid', { fetch: config.authFetch });\n\n // Create the LDO dataset with the solidConnectedPlugin. It will be used to manage the RDF data.\n config.dataset = dataset;\n\n // Useful for debugging: Attach httpClient & authFetch to global document.\n // @ts-expect-error TS(2339)\n document.httpClient = config.httpClient;\n // @ts-expect-error TS(2339)\n document.authFetch = authFetchFn;\n\n if (!config.ontologies && config.jsonContext) {\n config.ontologies = await getOntologiesFromContext(config.jsonContext);\n } else if (!config.jsonContext && config.ontologies) {\n config.jsonContext = config.ontologies;\n } else if (!config.jsonContext && !config.ontologies) {\n throw new Error(`Either the JSON context or the ontologies must be set`);\n }\n\n if (!config.returnFailedResources) config.returnFailedResources = false;\n\n config = await normalizeConfig(config);\n\n console.debug('Config after plugins', config);\n };\n\n // Immediately call the preload plugins\n const prepareConfigPromise = prepareConfig();\n\n const waitForPrepareConfig =\n any>(method: (c: RuntimeConfiguration) => T) =>\n async (...args: Parameters): Promise>> => {\n await prepareConfigPromise; // Return immediately if plugins have already been loaded\n return method(config)(...args);\n };\n\n return {\n getList: waitForPrepareConfig(getListMethod),\n getMany: waitForPrepareConfig(getManyMethod),\n getManyReference: waitForPrepareConfig(getManyReferenceMethod),\n getOne: waitForPrepareConfig(getOneMethod),\n create: waitForPrepareConfig(createMethod),\n update: waitForPrepareConfig(updateMethod),\n updateMany: () => {\n throw new Error('updateMany is not implemented yet');\n },\n delete: waitForPrepareConfig(deleteMethod),\n deleteMany: waitForPrepareConfig(deleteManyMethod),\n // Custom methods\n patch: waitForPrepareConfig(patchMethod),\n getDataModels: waitForPrepareConfig(getDataModelsMethod),\n getDataServers: waitForPrepareConfig(getDataServersMethod),\n getLocalDataServers: getDataServersMethod(originalConfig),\n fetch: waitForPrepareConfig(c => createHttpClient(c.dataServers)),\n authFetch: waitForPrepareConfig(c => createAuthFetch(c.dataServers)),\n getDataset: waitForPrepareConfig(c => () => c.dataset),\n uploadFile: waitForPrepareConfig(c => (rawFile: any) => uploadFile(rawFile, c)),\n expandTypes: waitForPrepareConfig(c => (types: any) => expandTypes(types, c.jsonContext)),\n getConfig: waitForPrepareConfig(c => () => c),\n refreshConfig: async () => {\n await prepareConfig();\n return config;\n }\n };\n};\n\nexport default dataProvider;\n","import createSlug from 'speakingurl';\nimport getOne from './getOne';\nimport handleFiles from '../utils/handleFiles';\nimport findContainersWithTypes from '../utils/findContainersWithTypes';\nimport findContainersWithURIs from '../utils/findContainersWithURIs';\nimport { RuntimeConfiguration } from '../types';\nimport { CreateParams, RaRecord } from 'react-admin';\n\nconst createMethod = (config: RuntimeConfiguration) => async (resourceId: string, params: CreateParams) => {\n const { dataServers, resources, httpClient, jsonContext } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const headers = new Headers();\n\n let containerUri;\n let serverKey;\n if (dataModel.create?.container) {\n const [container] = findContainersWithURIs([dataModel.create?.container], dataServers);\n serverKey = container.server;\n containerUri = container.uri;\n } else {\n serverKey = dataModel.create?.server || Object.keys(dataServers).find(key => dataServers[key].default === true);\n if (!serverKey) throw new Error('You must define a server for the creation, or a container, or a default server');\n\n const containers = findContainersWithTypes(dataModel.types, [serverKey], dataServers);\n\n if (!containers || containers.length === 0)\n throw new Error(`No container with types ${JSON.stringify(dataModel.types)} found on server ${serverKey}`);\n if (containers.length > 1)\n throw new Error(\n `More than one container detected with types ${JSON.stringify(dataModel.types)} on server ${serverKey}`\n );\n\n containerUri = containers[0].uri;\n }\n\n if (params.data) {\n if (dataModel.fieldsMapping?.title) {\n const slug = Array.isArray(dataModel.fieldsMapping.title)\n ? dataModel.fieldsMapping.title.map((f: any) => params.data[f]).join(' ')\n : params.data[dataModel.fieldsMapping.title];\n\n // Generate slug here, otherwise we may get errors with special characters\n headers.set('Slug', createSlug(slug));\n }\n\n // Upload files, if there are any\n const { updatedRecord } = await handleFiles.upload(params.data, config, serverKey);\n params.data = updatedRecord;\n\n const { headers: responseHeaders } = await httpClient(containerUri, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n '@context': jsonContext,\n '@type': dataModel.types,\n ...params.data\n })\n });\n\n // Retrieve newly-created resource\n const resourceUri = responseHeaders.get('Location');\n return await getOne(config)(resourceId, { id: resourceUri });\n }\n if (params.id) {\n headers.set('Content-Type', 'application/sparql-update');\n\n await httpClient(containerUri, {\n method: 'PATCH',\n headers,\n body: `\n PREFIX ldp: \n INSERT DATA { <${containerUri}> ldp:contains <${params.id}>. };\n `\n });\n\n // Create must return the new data, so get them from the remote URI\n return await getOne(config)(resourceId, { id: params.id });\n }\n};\n\nexport default createMethod;\n","import { GetOneParams, RaRecord } from 'react-admin';\nimport { RuntimeConfiguration } from '../types';\nimport fetchResource from '../utils/fetchResource';\n\nconst getOneMethod = (config: RuntimeConfiguration) => async (resourceId: string, params: GetOneParams) => {\n const { resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const data = await fetchResource(params.id, config);\n\n // Transform single value into array if forceArray is set\n if (dataModel.list?.forceArray) {\n for (const forceArrayItem of dataModel.list?.forceArray || []) {\n if (data[forceArrayItem] && !Array.isArray(data[forceArrayItem])) {\n data[forceArrayItem] = [data[forceArrayItem]];\n }\n }\n }\n\n // TODO activate defaultFetchPlan option\n // if (dataModel.list?.defaultFetchPlan) {\n // for (const node of dataModel.list?.defaultFetchPlan) {\n // if (\n // data[node] &&\n // typeof data[node] === 'string' &&\n // data[node].startsWith('http')\n // ) {\n // try {\n // const dataToEmbed = await fetchResource(data[node], config);\n // delete dataToEmbed['@context'];\n // data[node] = dataToEmbed;\n // } catch (e) {\n // // Ignore errors (this may happen if user does not have rights to see the resource)\n // }\n // }\n // }\n // }\n\n return { data };\n};\n\nexport default getOneMethod;\n","import jsonld from 'jsonld';\n\nconst fetchResource = async (resourceUri: any, config: any) => {\n const { httpClient, jsonContext } = config;\n\n let { json: data } = await httpClient(resourceUri);\n\n if (!data) throw new Error(`Not a valid JSON: ${resourceUri}`);\n\n data.id = data.id || data['@id'];\n\n // We compact only if the context is different between the frontend and the middleware\n // TODO deep compare if the context is an object\n if (data['@context'] !== jsonContext) {\n data = await jsonld.compact(data, jsonContext);\n }\n\n return data;\n};\n\nexport default fetchResource;\n","import { RaRecord } from 'react-admin';\nimport { Configuration } from '../types';\nimport getUploadsContainerUri from './getUploadsContainerUri';\n\nconst isFile = (o: any): o is { rawFile: File } => o?.rawFile && o.rawFile instanceof File;\n\nexport const uploadFile = async (rawFile: File, config: Configuration, serverKey?: string) => {\n const uploadsContainerUri = getUploadsContainerUri(config, serverKey);\n if (!uploadsContainerUri)\n throw new Error(\"You must define an container with binaryResources in one of the server's configuration\");\n\n const response = await config.httpClient(uploadsContainerUri, {\n method: 'POST',\n body: rawFile,\n headers: new Headers({\n 'Content-Type': rawFile.type\n })\n });\n\n if (response.status === 201) {\n return response.headers.get('Location');\n }\n return null;\n};\n\n/*\n * Look for raw files in the record data.\n * If there are any, upload them and replace the file by its URL.\n */\nconst uploadAllFiles = async (record: Partial, config: Configuration, serverKey?: string) => {\n const updatedRecord = { ...record };\n\n for (const property of Object.keys(record)) {\n const value = record[property];\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const itemValue = value[i];\n if (isFile(itemValue)) {\n updatedRecord[property][i] = await uploadFile(itemValue.rawFile, config, serverKey);\n }\n }\n } else if (isFile(value)) {\n updatedRecord[property] = await uploadFile(value.rawFile, config, serverKey);\n }\n }\n\n return {\n updatedRecord\n };\n};\n\nexport default {\n upload: uploadAllFiles\n};\n","import { Configuration } from '../types';\n\nconst getUploadsContainerUri = (config: Configuration, serverKey?: string) => {\n // If no server key is defined or if the server has no uploads container, find any server with a uploads container\n if (\n !serverKey ||\n !config.dataServers[serverKey].containers ||\n !config.dataServers[serverKey].containers?.find(c => c.binaryResources)\n ) {\n serverKey = Object.keys(config.dataServers).find(\n key => config.dataServers[key].containers?.find(c => c.binaryResources)\n );\n }\n\n if (serverKey) {\n return config.dataServers[serverKey].containers?.find(c => c.binaryResources)?.uri;\n } else {\n // No server has an uploads container\n return null;\n }\n};\n\nexport default getUploadsContainerUri;\n","import { DataServersConfig, Container } from '../types';\nimport parseServerKeys from './parseServerKeys';\n\n/**\n * Return all containers matching the given types\n */\nconst findContainersWithTypes = (\n types: string[],\n serverKeys: string | string[] | undefined,\n dataServers: DataServersConfig\n) => {\n const matchingContainers: Container[] = [];\n\n const parsedServerKeys = parseServerKeys(serverKeys || '@all', dataServers);\n\n Object.keys(dataServers).forEach(dataServerKey => {\n if (parsedServerKeys.includes(dataServerKey)) {\n dataServers[dataServerKey].containers?.forEach(container => {\n if (container.types?.some(t => types.includes(t))) {\n matchingContainers.push(container);\n }\n });\n }\n });\n\n return matchingContainers;\n};\n\nexport default findContainersWithTypes;\n","import getServerKeyFromType from './getServerKeyFromType';\nimport { DataServersConfig } from '../types';\n\nconst parseServerKey = (serverKey: string, dataServers: DataServersConfig) => {\n switch (serverKey) {\n case '@default':\n return getServerKeyFromType('default', dataServers);\n case '@pod':\n return getServerKeyFromType('pod', dataServers);\n case '@authServer':\n return getServerKeyFromType('authServer', dataServers);\n default:\n return serverKey;\n }\n};\n\n// Return the list of servers keys in an array\n// parsing keywords like @all, @default, @pod and @authServer\nconst parseServerKeys = (serverKeys: string | string[], dataServers: DataServersConfig) => {\n if (Array.isArray(serverKeys)) {\n if (serverKeys.includes('@all')) {\n return Object.keys(dataServers);\n } else {\n return serverKeys.map(serverKey => parseServerKey(serverKey, dataServers));\n }\n } else if (typeof serverKeys === 'string') {\n if (serverKeys === '@all') {\n return Object.keys(dataServers);\n } else if (serverKeys === '@remote') {\n const defaultServerKey = getServerKeyFromType('default', dataServers);\n return Object.keys(dataServers).filter(serverKey => serverKey !== defaultServerKey);\n } else {\n return [parseServerKey(serverKeys, dataServers)];\n }\n } else {\n throw new Error(`The parseServerKeys expect a list of server keys, or keywords`);\n }\n};\n\nexport default parseServerKeys;\n","import { DataServersConfig } from '../types';\n\nconst getServerKeyFromType = (type: string, dataServers: DataServersConfig) => {\n return (\n dataServers &&\n Object.keys(dataServers).find(key => {\n return dataServers[key][type];\n })\n );\n};\n\nexport default getServerKeyFromType;\n","import { DataServersConfig, Container } from '../types';\n\nconst findContainersWithURIs = (containersUris: string[], dataServers: DataServersConfig) => {\n const matchingContainers: Container[] = [];\n\n Object.keys(dataServers).forEach(serverKey => {\n dataServers[serverKey].containers?.forEach(container => {\n if (container.uri && containersUris.includes(container.uri)) {\n matchingContainers.push(container);\n }\n });\n });\n\n return matchingContainers;\n};\n\nexport default findContainersWithURIs;\n","import { DeleteParams, RaRecord } from 'react-admin';\nimport { RuntimeConfiguration } from '../types';\n\nconst deleteMethod = (config: RuntimeConfiguration) => async (resourceId: string, params: DeleteParams) => {\n const { httpClient } = config;\n\n await httpClient(`${params.id}`, {\n method: 'DELETE'\n });\n\n return { data: { id: params.id } };\n};\n\nexport default deleteMethod;\n","import { DeleteManyParams, RaRecord } from 'react-admin';\nimport { RuntimeConfiguration } from '../types';\n\nconst deleteManyMethod =\n (config: RuntimeConfiguration) => async (resourceId: string, params: DeleteManyParams) => {\n const { httpClient } = config;\n const ids = [];\n\n for (const id of params.ids) {\n try {\n await httpClient(id, {\n method: 'DELETE'\n });\n ids.push(id);\n } catch (e) {\n // Do nothing if we fail to delete a resource\n }\n }\n\n return { data: ids };\n };\n\nexport default deleteManyMethod;\n","import { Configuration } from '../types';\n\nconst getDataServers = (config: Configuration) => () => {\n return config.dataServers;\n};\n\nexport default getDataServers;\n","import { RuntimeConfiguration } from '../types';\n\nconst getDataModels = (config: RuntimeConfiguration) => () => {\n return config.resources;\n};\n\nexport default getDataModels;\n","import { GetListParams } from 'react-admin';\nimport findContainersWithTypes from '../utils/findContainersWithTypes';\nimport fetchContainers from '../utils/fetchContainers';\nimport fetchSparqlEndpoints from '../utils/fetchSparqlEndpoints';\nimport findContainersWithURIs from '../utils/findContainersWithURIs';\nimport findContainersWithShapeTree from '../utils/findContainersWithShapeTree';\nimport { Configuration, Container } from '../types';\nimport arrayOf from '../utils/arrayOf';\n\nconst getListMethod = (config: Configuration) => async (resourceId: string, params: GetListParams) => {\n const { dataServers, resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n let containers: Container[] = [];\n if (!params.filter?._servers && dataModel.list?.containers) {\n if (!Array.isArray(dataModel.list?.containers))\n throw new Error(`The list.containers property of ${resourceId} dataModel must be of type array`);\n // If containers are set explicitly, use them\n containers = findContainersWithURIs(dataModel.list.containers, dataServers);\n } else if (dataModel.shapeTreeUri) {\n containers = findContainersWithShapeTree(\n dataModel.shapeTreeUri,\n params?.filter?._servers || dataModel.list?.servers,\n dataServers\n );\n } else {\n // Otherwise find the container URIs on the given servers (either in the filter or the data model)\n containers = findContainersWithTypes(\n arrayOf(dataModel.types),\n params?.filter?._servers || dataModel.list?.servers,\n dataServers\n );\n }\n\n if (dataModel.list?.fetchContainer) {\n return fetchContainers(containers, params, config);\n } else {\n return fetchSparqlEndpoints(containers, resourceId, params, config);\n }\n};\n\nexport default getListMethod;\n","import jsonld, { ContextDefinition } from 'jsonld';\nimport { GetListParams } from 'react-admin';\nimport arrayOf from './arrayOf';\nimport { Configuration, Container, DataServerKey, RuntimeConfiguration } from '../types';\nimport fetchSelectedResources from './fetchSelectedResources';\n\ntype LDPContainerType = 'ldp:Container' | 'ldp:BasicContainer';\n\ninterface LDPContainerBase {\n '@context': Configuration['jsonContext'];\n id: string;\n 'ldp:contains': Record[];\n}\n\ninterface LDPContainerWithType extends LDPContainerBase {\n type: LDPContainerType | LDPContainerType[];\n}\n\ninterface LDPContainerWithAtType extends LDPContainerBase {\n '@type': LDPContainerType | LDPContainerType[];\n}\n\ntype LDPContainer = LDPContainerWithType | LDPContainerWithAtType;\n\ntype LDPResource = {\n '@context': Configuration['jsonContext'];\n [key: string]: any;\n};\n\ntype ListFilters = Partial<{\n q: string;\n type: string;\n _predicates: string[];\n _servers: DataServerKey[];\n [attribute: string]: any;\n}>;\n\nconst isValidLDPContainer = (container: LDPContainer) => {\n const resourceType = (container as LDPContainerWithType).type || (container as LDPContainerWithAtType)['@type'];\n return Array.isArray(resourceType) ? resourceType.includes('ldp:Container') : resourceType === 'ldp:Container';\n};\n\nconst isObject = (val: any) => {\n return val != null && typeof val === 'object' && !Array.isArray(val);\n};\n\nconst fetchContainers = async (containers: Container[], params: GetListParams, config: RuntimeConfiguration) => {\n const { httpClient, jsonContext } = config;\n\n // Fetch simultaneously all containers\n const results = await Promise.all(\n containers\n .filter(c => !c.selectedResources)\n .map(async container => {\n let { json }: { json: LDPContainer } = await httpClient(container.uri);\n\n // If container's context is different, compact it to have an uniform result\n // TODO deep compare if the context is an object\n if (json['@context'] !== jsonContext) {\n json = (await jsonld.compact(json, jsonContext as ContextDefinition)) as unknown as LDPContainer;\n }\n\n if (!isValidLDPContainer(json)) {\n throw new Error(`${container.uri} is not a LDP container`);\n }\n\n return arrayOf(json['ldp:contains']).map(resource => ({\n '@context': json['@context'], // TODO: Can it be that resources have a @context set already or is this prohibited by the ldp spec?\n ...resource\n }));\n })\n );\n\n let resources = results.flat();\n\n // Append selected resources (if any)\n const selectedResources = await fetchSelectedResources(\n containers,\n resources.map(r => r.id),\n config\n );\n resources = resources.concat(selectedResources);\n\n resources = resources.map(resource => {\n resource.id = resource.id || resource['@id'];\n return resource;\n });\n\n // Apply filter to results\n const filters: ListFilters = params.filter;\n\n // For SPARQL queries, we use \"a\" to filter types, but in containers it must be \"type\"\n if (filters.a) {\n filters.type = filters.a;\n delete filters.a;\n }\n\n // Filter resources attributes according to _predicates list\n if (filters._predicates && Array.isArray(filters._predicates)) {\n const predicates = filters._predicates;\n const mandatoryAttributes = ['id'];\n\n resources = resources.map(resource => {\n return Object.keys(resource)\n .filter(key => predicates.includes(key) || mandatoryAttributes.includes(key))\n .reduce(\n (filteredResource, key) => {\n filteredResource[key] = resource[key];\n return filteredResource;\n },\n { '@context': [] }\n );\n });\n }\n\n if (Object.keys(filters).filter(f => !['_predicates', '_servers'].includes(f)).length > 0) {\n resources = resources.filter(resource => {\n // Full text filtering\n if (filters.q) {\n return Object.values(resource).some(attributeValue => {\n if (!isObject(attributeValue)) {\n const arrayValues = Array.isArray(attributeValue) ? attributeValue : [attributeValue];\n return arrayValues.some(value => {\n if (typeof value === 'string') {\n return value.toLowerCase().normalize('NFD').includes(filters.q!.toLowerCase().normalize('NFD'));\n }\n return false;\n });\n }\n return false;\n });\n }\n\n // Attribute filtering\n const attributesFilters = Object.keys(filters).filter(f => !['_predicates', '_servers', 'q'].includes(f));\n\n return attributesFilters.every(attribute => {\n if (resource[attribute]) {\n const arrayValues: any[] = Array.isArray(resource[attribute]) ? resource[attribute] : [resource[attribute]];\n return arrayValues.some(\n (value: any) => typeof value === 'string' && value.includes(filters[attribute] as string)\n );\n }\n\n return false;\n });\n });\n }\n\n // Sorting\n if (params.sort) {\n resources = resources.sort((a, b) => {\n // @ts-expect-error TS(2532): Object is possibly 'undefined'.\n if (params.sort.order === 'ASC') {\n // @ts-expect-error TS(2532): Object is possibly 'undefined'.\n return (a[params.sort.field] ?? '').localeCompare(b[params.sort.field] ?? '');\n }\n // @ts-expect-error TS(2532): Object is possibly 'undefined'.\n return (b[params.sort.field] ?? '').localeCompare(a[params.sort.field] ?? '');\n });\n }\n\n // Pagination\n const total = resources.length;\n\n if (params.pagination) {\n resources = resources.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: resources, total };\n};\n\nexport default fetchContainers;\n","const arrayOf = (value: T | T[]): T[] => {\n // If the field is null-ish, we suppose there are no values.\n if (!value) {\n return [];\n }\n // Return as is.\n if (Array.isArray(value)) {\n return value;\n }\n // Single value is made an array.\n return [value];\n};\n\nexport default arrayOf;\n","import fetchResource from './fetchResource';\n\n// Fetch the selected resources of the provided containers\n// Filter out resources that are provided (can avoid loading a resource twice)\nconst fetchSelectedResources = async (containers, excludedResourcesUris, config) => {\n let selectedResourcesUris = containers\n .filter(c => c.selectedResources)\n .map(c => c.selectedResources)\n .flat();\n\n // Filter out resources which are already included in the SPARQL query results\n selectedResourcesUris = selectedResourcesUris.filter(uri => !excludedResourcesUris.includes(uri));\n\n const selectedResources = await Promise.all(\n selectedResourcesUris.map(resourceUri => fetchResource(resourceUri, config))\n );\n\n return selectedResources;\n};\n\nexport default fetchSelectedResources;\n","import jsonld from 'jsonld';\nimport getEmbedFrame from './getEmbedFrame';\nimport buildSparqlQuery from './buildSparqlQuery';\nimport fetchSelectedResources from './fetchSelectedResources';\n\nconst compare = (a, b) => {\n switch (typeof a) {\n case 'string':\n return a.localeCompare(b);\n case 'number':\n return a - b;\n default:\n return 0;\n }\n};\n\nconst fetchSparqlEndpoints = async (containers, resourceId, params, config) => {\n const { dataServers, httpClient, jsonContext, ontologies } = config;\n const dataModel = config.resources[resourceId];\n\n // Find servers to query with SPARQL\n // (Ignore containers with selected resources, they will be fetched below)\n const serversToQuery = containers\n .filter(c => !c.selectedResources)\n .reduce((acc, cur) => {\n if (!acc.includes(cur.server)) acc.push(cur.server);\n return acc;\n }, []);\n\n // Run simultaneous SPARQL queries\n const results = await Promise.all(\n serversToQuery.map(\n serverKey =>\n new Promise((resolve, reject) => {\n const blankNodes = params.filter?.blankNodes || dataModel.list?.blankNodes;\n\n const sparqlQuery = buildSparqlQuery({\n containersUris: containers.filter(c => c.server === serverKey && !c.selectedResources).map(c => c.uri),\n params,\n dataModel,\n ontologies\n });\n\n httpClient(dataServers[serverKey].sparqlEndpoint, {\n method: 'POST',\n body: sparqlQuery\n })\n .then(({ json }) => {\n // If we declared the blank nodes to dereference, embed only those blank nodes\n // This solve problems which can occur when same-type resources are embedded in other resources\n // To increase performances, you can set explicitEmbedOnFraming to false (make sure the result is still OK)\n const frame =\n blankNodes && dataModel.list?.explicitEmbedOnFraming !== false\n ? {\n '@context': jsonContext,\n '@type': dataModel.types,\n '@embed': '@never',\n ...getEmbedFrame(blankNodes)\n }\n : {\n '@context': jsonContext,\n '@type': dataModel.types\n };\n\n // omitGraph option force results to be in a @graph, even if we have a single result\n return jsonld.frame(json, frame, { omitGraph: false });\n })\n .then(compactJson => {\n if (compactJson['@id']) {\n const { '@context': context, ...rest } = compactJson;\n compactJson = {\n '@context': context,\n '@graph': [rest]\n };\n }\n resolve(\n compactJson['@graph']?.map(resource => ({ '@context': compactJson['@context'], ...resource })) || []\n );\n })\n .catch(e => reject(e));\n })\n )\n );\n\n // Merge results from all SPARQL servers\n let resources = results.flat();\n\n // Append selected resources to SPARQL query results\n const selectedResources = await fetchSelectedResources(\n containers,\n resources.map(r => r.id),\n config\n );\n resources = resources.concat(selectedResources);\n\n if (resources.length === 0) {\n return { data: [], total: 0 };\n }\n\n // Add id in addition to @id, as this is what React-Admin expects\n let returnData = resources.map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // TODO sort and paginate the results in the SPARQL query to improve performances\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (a[params.sort.field] !== undefined && b[params.sort.field] !== undefined) {\n if (params.sort.order === 'ASC') {\n return compare(a[params.sort.field], b[params.sort.field]);\n }\n return compare(b[params.sort.field], a[params.sort.field]);\n }\n return 0;\n });\n }\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: results.length };\n};\n\nexport default fetchSparqlEndpoints;\n","const getEmbedFrame = (blankNodes: any) => {\n let embedFrame = {};\n let predicates;\n if (blankNodes) {\n for (const blankNode of blankNodes) {\n if (blankNode.includes('/')) {\n predicates = blankNode.split('/').reverse();\n } else {\n predicates = [blankNode];\n }\n embedFrame = {\n ...embedFrame,\n ...predicates.reduce(\n // @ts-expect-error TS(7006): Parameter 'accumulator' implicitly has an 'any' ty... Remove this comment to see the full error message\n (accumulator, predicate) => ({\n [predicate]: {\n '@embed': '@last',\n ...accumulator\n }\n }),\n {}\n )\n };\n }\n return embedFrame;\n }\n};\n\nexport default getEmbedFrame;\n","import rdf from '@rdfjs/data-model';\nimport buildBaseQuery from './buildBaseQuery';\nimport buildBlankNodesQuery from './buildBlankNodesQuery';\nimport buildAutoDetectBlankNodesQuery from './buildAutoDetectBlankNodesQuery';\nimport getUriFromPrefix from './getUriFromPrefix';\n\nconst SparqlGenerator = require('sparqljs').Generator;\n\nconst generator = new SparqlGenerator({\n /* prefixes, baseIRI, factory, sparqlStar */\n});\n\nconst reservedFilterKeys = ['q', 'sparqlWhere', 'blankNodes', 'blankNodesDepth', '_servers', '_predicates'];\n\nconst buildSparqlQuery = ({ containersUris, params, dataModel, ontologies }: any) => {\n const blankNodes = params.filter?.blankNodes || dataModel.list?.blankNodes;\n const predicates = params.filter?._predicates || dataModel.list?.predicates;\n const blankNodesDepth = params.filter?.blankNodesDepth ?? dataModel.list?.blankNodesDepth ?? 2;\n const filter = { ...dataModel.list?.filter, ...params.filter };\n const baseQuery = buildBaseQuery(predicates, ontologies);\n\n const sparqlJsParams = {\n queryType: 'CONSTRUCT',\n template: baseQuery.construct,\n where: [],\n type: 'query',\n prefixes: ontologies\n };\n\n const containerWhere = [\n {\n type: 'values',\n values: containersUris.map((containerUri: any) => ({\n '?containerUri': rdf.namedNode(containerUri)\n }))\n },\n rdf.quad(rdf.variable('containerUri'), rdf.namedNode('http://www.w3.org/ns/ldp#contains'), rdf.variable('s1')),\n {\n type: 'filter',\n expression: {\n type: 'operation',\n operator: 'isiri',\n args: [rdf.variable('s1')]\n }\n }\n ];\n\n let resourceWhere = [];\n\n if (filter && Object.keys(filter).length > 0) {\n /*\n Example of usage :\n {\n \"sparqlWhere\": {\n \"type\": \"bgp\",\n \"rdf.quads\": [{\n \"subject\": {\"termType\": \"rdf.variable\", \"value\": \"s1\"},\n \"predicate\": {\"termType\": \"NameNode\", \"value\": \"http://virtual-assembly.org/ontologies/pair#label\"},\n \"object\": {\"termType\": \"rdf.literal\", \"value\": \"My Organization\"}\n }]\n }\n }\n */\n if (filter.sparqlWhere) {\n // When the SPARQL request comes from the browser's URL, it is a JSON string that must be parsed\n const sparqlWhere =\n filter.sparqlWhere && (typeof filter.sparqlWhere === 'string' || filter.sparqlWhere instanceof String)\n ? JSON.parse(decodeURIComponent(filter.sparqlWhere))\n : filter.sparqlWhere;\n\n if (Object.keys(sparqlWhere).length > 0) {\n [].concat(sparqlWhere).forEach(sw => {\n resourceWhere.push(sw);\n });\n }\n }\n\n if (filter.q && filter.q.length > 0) {\n resourceWhere.push({\n type: 'group',\n patterns: [\n {\n queryType: 'SELECT',\n variables: [rdf.variable('s1')],\n where: [\n rdf.quad(rdf.variable('s1'), rdf.variable('p1'), rdf.variable('o1')),\n {\n type: 'filter',\n expression: {\n type: 'operation',\n operator: 'isliteral',\n args: [rdf.variable('o1')]\n }\n },\n {\n type: 'filter',\n expression: {\n type: 'operation',\n operator: 'regex',\n args: [\n {\n type: 'operation',\n operator: 'lcase',\n args: [\n {\n type: 'operation',\n operator: 'str',\n args: [rdf.variable('o1')]\n }\n ]\n },\n // @ts-expect-error TS(2554): Expected 1-2 arguments, but got 3.\n rdf.literal(filter.q.toLowerCase(), '', rdf.namedNode('http://www.w3.org/2001/XMLSchema#string'))\n ]\n }\n }\n ],\n type: 'query'\n }\n ]\n });\n }\n\n // Other filters\n // SPARQL keyword a = filter based on the class of a resource (example => 'a': 'pair:OrganizationType')\n // Other filters are based on a value (example => 'petr:hasAudience': 'http://localhost:3000/audiences/tout-public')\n Object.entries(filter).forEach(([predicate, object]) => {\n if (!reservedFilterKeys.includes(predicate)) {\n resourceWhere.unshift(\n rdf.quad(\n rdf.variable('s1'),\n rdf.namedNode(getUriFromPrefix(predicate, ontologies)),\n // @ts-expect-error TS(2345): Argument of type 'unknown' is not assignable to pa... Remove this comment to see the full error message\n rdf.namedNode(getUriFromPrefix(object, ontologies))\n )\n );\n }\n });\n }\n\n // Blank nodes\n const blankNodesQuery = blankNodes\n ? buildBlankNodesQuery(blankNodes, baseQuery, ontologies)\n : buildAutoDetectBlankNodesQuery(blankNodesDepth, baseQuery);\n\n if (blankNodesQuery && blankNodesQuery.construct) {\n // @ts-expect-error TS(2769): No overload matches this call.\n resourceWhere = resourceWhere.concat(blankNodesQuery.where);\n // @ts-expect-error TS(2769): No overload matches this call.\n sparqlJsParams.template = sparqlJsParams.template.concat(blankNodesQuery.construct);\n } else {\n resourceWhere.push(baseQuery.where);\n }\n\n // @ts-expect-error TS(2345): Argument of type '(uad | { type: string; values: ... Remove this comment to see the full error message\n sparqlJsParams.where.push(containerWhere, resourceWhere);\n\n return generator.stringify(sparqlJsParams);\n};\n\nexport default buildSparqlQuery;\n","import rdf from '@rdfjs/data-model';\nimport getUriFromPrefix from './getUriFromPrefix';\n\nconst defaultToArray = (value: any) => (!value ? [] : Array.isArray(value) ? value : [value]);\n\n// We need to always include the type or React-Admin will not work properly\nconst typeQuery = rdf.quad(\n rdf.variable('s1'),\n rdf.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),\n rdf.variable('type')\n);\n\nconst buildBaseQuery = (predicates: any, ontologies: any) => {\n let baseTriples;\n if (predicates) {\n baseTriples = defaultToArray(predicates).map((predicate, i) =>\n rdf.quad(rdf.variable('s1'), rdf.namedNode(getUriFromPrefix(predicate, ontologies)), rdf.variable(`o${i + 1}`))\n );\n return {\n construct: [typeQuery, ...baseTriples],\n where: [typeQuery, ...baseTriples.map(triple => ({ type: 'optional', patterns: [triple] }))]\n };\n }\n baseTriples = [rdf.quad(rdf.variable('s1'), rdf.variable('p1'), rdf.variable('o1'))];\n return {\n construct: baseTriples,\n where: baseTriples\n };\n};\n\nexport default buildBaseQuery;\n","const getUriFromPrefix = (item: string, ontologies: Record) => {\n if (item.startsWith('http://') || item.startsWith('https://')) {\n // Already resolved, return the URI\n return item;\n } else if (item === 'a') {\n // Special case\n return 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';\n } else {\n const [prefix, value] = item.split(':');\n if (value) {\n if (ontologies[prefix]) {\n return ontologies[prefix] + value;\n } else {\n throw new Error(`No ontology found with prefix ${prefix}`);\n }\n } else {\n throw new Error(`The value \"${item}\" is not correct. It must include a prefix or be a full URI.`);\n }\n }\n};\n\nexport default getUriFromPrefix;\n","// @ts-expect-error TS(7016): Could not find a declaration file for module 'cryp... Remove this comment to see the full error message\nimport md5 from 'crypto-js/md5';\nimport rdf from '@rdfjs/data-model';\nimport getUriFromPrefix from './getUriFromPrefix';\n\n// Transform ['ont:predicate1/ont:predicate2'] to ['ont:predicate1', 'ont:predicate1/ont:predicate2']\nconst extractNodes = (blankNodes: any) => {\n const nodes = [];\n if (blankNodes) {\n for (const predicate of blankNodes) {\n if (predicate.includes('/')) {\n const nodeNames = predicate.split('/');\n for (let i = 1; i <= nodeNames.length; i++) {\n nodes.push(nodeNames.slice(0, i).join('/'));\n }\n } else {\n nodes.push(predicate);\n }\n }\n }\n return nodes;\n};\n\nconst generateSparqlVarName = (node: any) => md5(node);\n\nconst getParentNode = (node: any) => node.includes('/') && node.split('/')[0];\n\nconst getPredicate = (node: any) => (node.includes('/') ? node.split('/')[1] : node);\n\nconst buildUnionQuery = (queries: any) =>\n queries.map((q: any) => {\n let triples = q.query;\n const firstTriple = queries.find((q2: any) => q.parentNode === q2.node);\n if (firstTriple !== undefined) {\n triples = triples.concat(firstTriple.query[0]);\n }\n return {\n type: 'bgp',\n triples\n };\n });\n\nconst buildBlankNodesQuery = (blankNodes: any, baseQuery: any, ontologies: any) => {\n const queries = [];\n const nodes = extractNodes(blankNodes);\n\n if (nodes && ontologies && ontologies.length > 0) {\n for (const node of nodes) {\n const parentNode = getParentNode(node);\n const predicate = getPredicate(node);\n const varName = generateSparqlVarName(node);\n const parentVarName = parentNode ? generateSparqlVarName(parentNode) : '1';\n\n const query = [\n rdf.quad(\n rdf.variable(`s${parentVarName}`),\n rdf.namedNode(getUriFromPrefix(predicate, ontologies)),\n rdf.variable(`s${varName}`)\n ),\n rdf.quad(rdf.variable(`s${varName}`), rdf.variable(`p${varName}`), rdf.variable(`o${varName}`))\n ];\n\n queries.push({\n node,\n parentNode,\n query,\n filter: '' // `FILTER(isBLANK(?s${varName})) .`\n });\n }\n\n return {\n construct: queries.length > 0 ? queries.map(q => q.query).reduce((pre, cur) => pre.concat(cur)) : null,\n where: {\n type: 'union',\n patterns: [baseQuery.where, ...buildUnionQuery(queries)]\n }\n };\n }\n return {\n construct: '',\n where: ''\n };\n};\n\nexport default buildBlankNodesQuery;\n","import rdf from '@rdfjs/data-model';\n\nconst buildAutoDetectBlankNodesQuery = (depth: any, baseQuery: any) => {\n const construct = [...baseQuery.construct];\n let where = {};\n if (depth > 0) {\n const whereQueries = [];\n whereQueries.push([baseQuery.where]);\n for (let i = 1; i <= depth; i++) {\n construct.push(rdf.quad(rdf.variable(`o${i}`), rdf.variable(`p${i + 1}`), rdf.variable(`o${i + 1}`)));\n whereQueries.push([\n ...whereQueries[whereQueries.length - 1],\n {\n type: 'filter',\n expression: {\n type: 'operation',\n operator: 'isblank',\n args: [rdf.variable(`o${i}`)]\n }\n },\n rdf.quad(rdf.variable(`o${i}`), rdf.variable(`p${i + 1}`), rdf.variable(`o${i + 1}`))\n ]);\n }\n where = {\n type: 'union',\n patterns: whereQueries\n };\n } else if (depth === 0) {\n where = baseQuery.where;\n } else {\n throw new Error('The depth of buildAutoDetectBlankNodesQuery should be 0 or more');\n }\n\n return { construct, where };\n};\n\nexport default buildAutoDetectBlankNodesQuery;\n","import { DataServersConfig, Container } from '../types';\nimport parseServerKeys from './parseServerKeys';\n\n/**\n * Return all containers matching the given shape tree\n */\nconst findContainersWithShapeTree = (\n shapeTreeUri: string,\n serverKeys: string | string[] | undefined,\n dataServers: DataServersConfig\n) => {\n const matchingContainers: Container[] = [];\n\n const parsedServerKeys = parseServerKeys(serverKeys || '@all', dataServers);\n\n Object.keys(dataServers).forEach(dataServerKey => {\n if (parsedServerKeys.includes(dataServerKey)) {\n dataServers[dataServerKey].containers?.forEach(container => {\n if (container.shapeTreeUri === shapeTreeUri) {\n matchingContainers.push(container);\n }\n });\n }\n });\n\n return matchingContainers;\n};\n\nexport default findContainersWithShapeTree;\n","import { GetManyParams, RaRecord } from 'react-admin';\nimport { RuntimeConfiguration } from '../types';\nimport getOne from './getOne';\n\nconst getManyMethod = (config: RuntimeConfiguration) => async (resourceId: string, params: GetManyParams) => {\n const { returnFailedResources } = config;\n\n let returnData = await Promise.all(\n params.ids.map(id =>\n getOne(config)(resourceId, { id: typeof id === 'object' ? id['@id'] : id })\n .then(({ data }) => data)\n .catch(() => {\n // Catch if one resource fails to load\n // Otherwise no references will be show if only one is missing\n // See https://github.com/marmelab/react-admin/issues/5190\n if (returnFailedResources) {\n return { id, _error: true };\n }\n // Returning nothing\n })\n )\n );\n\n // We don't want undefined results to appear in the results as it will break with react-admin\n returnData = returnData.filter(e => e);\n\n return { data: returnData };\n};\n\nexport default getManyMethod;\n","import { GetManyReferenceParams, RaRecord } from 'react-admin';\nimport { RuntimeConfiguration } from '../types';\nimport getList from './getList';\n\nconst getManyReferenceMethod =\n (config: RuntimeConfiguration) => async (resourceId: string, params: GetManyReferenceParams) => {\n params.filter = { ...params.filter, [params.target]: params.id };\n // @ts-expect-error ts(2790): The operand of a 'delete' operator must be optional.\n delete params.target;\n return await getList(config)(resourceId, params);\n };\n\nexport default getManyReferenceMethod;\n","import { RaRecord } from 'react-admin';\nimport { Generator as SparqlGenerator, Update } from 'sparqljs';\nimport { PatchParams, RuntimeConfiguration } from '../types';\n\nconst generator = new SparqlGenerator();\n\nconst patchMethod = (config: RuntimeConfiguration) => async (resourceId: string, params: PatchParams) => {\n const { httpClient } = config;\n\n const sparqlUpdate = {\n type: 'update',\n prefixes: {},\n updates: []\n } as Update;\n\n if (params.triplesToAdd) {\n sparqlUpdate.updates.push({\n updateType: 'insert',\n insert: [{ type: 'bgp', triples: params.triplesToAdd }]\n });\n }\n\n if (params.triplesToRemove) {\n sparqlUpdate.updates.push({\n updateType: 'delete',\n delete: [{ type: 'bgp', triples: params.triplesToRemove }]\n });\n }\n\n await httpClient(`${params.id}`, {\n method: 'PATCH',\n headers: new Headers({\n 'Content-Type': 'application/sparql-update'\n }),\n body: generator.stringify(sparqlUpdate)\n });\n};\n\nexport default patchMethod;\n","import { RaRecord, UpdateParams } from 'react-admin';\nimport { RuntimeConfiguration } from '../types';\nimport handleFiles from '../utils/handleFiles';\nimport getServerKeyFromUri from '../utils/getServerKeyFromUri';\n\nconst updateMethod = (config: RuntimeConfiguration) => async (resourceId: string, params: UpdateParams) => {\n const { httpClient, jsonContext, dataServers } = config;\n\n const serverKey = getServerKeyFromUri(params.id, dataServers);\n\n // Upload files, if there are any\n const { updatedRecord } = await handleFiles.upload(params.data, config, serverKey);\n params.data = updatedRecord;\n\n await httpClient(`${params.id}`, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': jsonContext,\n ...params.data\n })\n });\n\n return { data: params.data };\n};\n\nexport default updateMethod;\n","// Return the first server matching with the baseUrl\nconst getServerKeyFromUri = (uri: any, dataServers: any) => {\n if (!uri) throw Error(`No URI provided to getServerKeyFromUri`);\n return (\n dataServers &&\n Object.keys(dataServers).find(key => {\n if (dataServers[key].pod) {\n // The baseUrl ends with /data so remove this part to match with the webId and webId-related URLs (/inbox, /outbox...)\n return dataServers[key].baseUrl && uri.startsWith(dataServers[key].baseUrl.replace('/data', ''));\n }\n return uri.startsWith(dataServers[key].baseUrl);\n })\n );\n};\n\nexport default getServerKeyFromUri;\n","import { fetchUtils } from 'react-admin';\nimport getServerKeyFromUri from './utils/getServerKeyFromUri';\nimport getServerKeyFromType from './utils/getServerKeyFromType';\nimport { DataServersConfig } from './types';\n\n/**\n *\n * @param dataServers Data servers configuration\n * @param fetchFn The fetch function to use for the actual fetch call, e.g. `fetchUtils.fetchJson` or `fetch`\n * @returns\n */\nconst fetchBase =\n ReturnType>(\n dataServers: DataServersConfig,\n fetchFn: FetchFn\n ) =>\n (url: string, options: fetchUtils.Options = {}): ReturnType => {\n if (!url) throw new Error(`No URL provided on httpClient call`);\n\n const authServerKey = getServerKeyFromType('authServer', dataServers);\n const serverKey = getServerKeyFromUri(url, dataServers);\n\n const useProxy =\n serverKey !== authServerKey && // The server is different from the auth server.\n !!dataServers[authServerKey!]?.proxyUrl && // A proxy URL is configured on the auth server.\n dataServers[serverKey]?.noProxy !== true; // The server does not explicitly disable the proxy.\n\n const headers = new Headers(options.headers);\n\n switch (options.method) {\n case 'POST':\n case 'PATCH':\n case 'PUT':\n if (!headers.has('Accept')) headers.set('Accept', 'application/ld+json');\n if (!headers.has('Content-Type')) headers.set('Content-Type', 'application/ld+json');\n break;\n\n case 'DELETE':\n break;\n\n case 'GET':\n default:\n if (!headers.has('Accept')) headers.set('Accept', 'application/ld+json');\n break;\n }\n\n if (useProxy) {\n // To the proxy endpoint, we post the URL, method, headers and body (if any) as multipart/form-data.\n const formData = new FormData();\n\n formData.append('id', url);\n formData.append('method', options.method || 'GET');\n formData.append('headers', JSON.stringify(Object.fromEntries(headers.entries())));\n\n if (options.body instanceof File) {\n formData.append('body', options.body, options.body.name);\n } else if (options.body instanceof Blob || typeof options.body === 'string') {\n formData.append('body', options.body);\n }\n\n // POST request to proxy endpoint.\n return fetchFn(dataServers[authServerKey!].proxyUrl!, {\n method: 'POST',\n headers: new Headers({\n Authorization: `Bearer ${localStorage.getItem('token')}`\n }),\n body: formData\n });\n }\n\n // Add token if the server is the same as the auth server.\n if (serverKey === authServerKey) {\n const token = localStorage.getItem('token');\n if (token) headers.set('Authorization', `Bearer ${token}`);\n }\n options.headers = headers;\n return fetchFn(url, options);\n };\n\n/**\n * Creates a fetch function that can be used to make calls to the data servers and which returns data formatted as JSON.\n * It will use the proxy endpoint if available and if the server is different from the auth server.\n * It will also set the Accept and Content-Type headers to `application/ld+json` for `POST`, `PATCH`, `PUT` and `GET` requests.\n * @param dataServers Data servers configuration\n * @returns A function with react-admin's fetchJson signature that can be used to make calls to the data servers.\n *\n */\nconst createHttpClient = (dataServers: DataServersConfig) => {\n const fetchBaseFn = fetchBase(dataServers, fetchUtils.fetchJson);\n\n return (url: string, options: fetchUtils.Options) => {\n return fetchBaseFn(url, options);\n };\n};\n\n/**\n * Creates an authenticated fetch function that can be used to make calls to the data servers.\n * It will use the proxy endpoint if available and if the server is different from the auth server.\n * @param dataServers Data servers configuration\n * @returns A function that can be used to make authenticated fetch calls.\n */\nconst createAuthFetch = (dataServers: DataServersConfig) => {\n const fetchBaseFn = fetchBase(dataServers, fetch);\n\n const fetchFunction: typeof fetch = (url: string, options) => {\n return fetchBaseFn(url, options);\n };\n\n return fetchFunction;\n};\n\nexport { createHttpClient, createAuthFetch };\n","import urlJoin from 'url-join';\nimport { Configuration, RuntimeConfiguration } from '../types';\nimport arrayOf from './arrayOf';\nimport expandTypes from './expandTypes';\nimport getTypesFromShapeTree from './getTypesFromShapeTree';\n\n/**\n * For data server containers, expands types and adds `uri` and `server` properties.\n * For resources, expands types (if applicable from shape tree information).\n */\nconst normalizeConfig = async (config: RuntimeConfiguration) => {\n const newConfig: RuntimeConfiguration = { ...config };\n\n // Add server and uri key to servers' containers\n for (const serverKey of Object.keys(newConfig.dataServers)) {\n if (newConfig.dataServers[serverKey].containers) {\n newConfig.dataServers[serverKey].containers = await Promise.all(\n newConfig.dataServers[serverKey].containers?.map(async container => {\n return {\n ...container,\n types: container.types && (await expandTypes(container.types, config.jsonContext)),\n server: serverKey,\n uri: urlJoin(config.dataServers[serverKey].baseUrl, container.path)\n };\n })\n );\n }\n }\n\n // Expand types in data models\n for (const resourceId of Object.keys(newConfig.resources)) {\n if (!newConfig.resources[resourceId].types && newConfig.resources[resourceId].shapeTreeUri) {\n newConfig.resources[resourceId].types = await getTypesFromShapeTree(\n newConfig.resources[resourceId].shapeTreeUri!\n );\n }\n\n newConfig.resources[resourceId].types = await expandTypes(\n arrayOf(newConfig.resources[resourceId].types),\n config.jsonContext\n );\n }\n\n return newConfig;\n};\n\nexport default normalizeConfig;\n","import jsonld from 'jsonld';\nimport arrayOf from './arrayOf';\n\nconst isURI = (value: any) =>\n (typeof value === 'string' || value instanceof String) && (value.startsWith('http') || value.startsWith('urn:'));\n\nconst expandTypes = async (types: string[], context: any): Promise => {\n // If types are already full URIs, return them immediately\n if (types.every(type => isURI(type))) return types;\n\n const result = await jsonld.expand({ '@context': context, '@type': types });\n\n const expandedTypes = arrayOf(result[0]['@type']!);\n\n if (!expandedTypes.every(type => isURI(type))) {\n throw new Error(`\n Could not expand all types (${expandedTypes.join(', ')}).\n Is an ontology missing or not registered yet on the local context ?\n `);\n }\n\n return expandedTypes;\n};\n\nexport default expandTypes;\n","import jsonld from 'jsonld';\nimport { fetchUtils } from 'react-admin';\n\nconst getTypesFromShapeTree = async (shapeTreeUri: string) => {\n let { json: shapeTree } = await fetchUtils.fetchJson(shapeTreeUri, {\n headers: new Headers({ Accept: 'application/ld+json' })\n });\n\n shapeTree = await jsonld.compact(shapeTree, {\n st: 'http://www.w3.org/ns/shapetrees#',\n skos: 'http://www.w3.org/2004/02/skos/core#',\n expectsType: { '@id': 'st:expectsType', '@type': '@id' },\n shape: { '@id': 'st:shape', '@type': '@id' },\n describesInstance: { '@id': 'st:describesInstance', '@type': '@id' },\n label: { '@id': 'skos:prefLabel', '@container': '@language' }\n });\n\n if (shapeTree.shape) {\n const { json: shape } = await fetchUtils.fetchJson(shapeTree.shape, {\n headers: new Headers({ Accept: 'application/ld+json' })\n });\n\n return shape?.[0]?.['http://www.w3.org/ns/shacl#targetClass']?.map((node: any) => node?.['@id']) || [];\n } else {\n return [];\n }\n};\n\nexport default getTypesFromShapeTree;\n","import { fetchUtils } from 'react-admin';\n\nconst isURL = (value: any) => (typeof value === 'string' || value instanceof String) && value.startsWith('http');\n\nconst getOntologiesFromContextJson = (contextJson: any) => {\n const ontologies: Record = {};\n\n for (const [key, value] of Object.entries(contextJson)) {\n if (isURL(value)) {\n ontologies[key] = value as string;\n }\n }\n\n return ontologies;\n};\n\nconst getOntologiesFromContextUrl = async (contextUrl: string) => {\n const { json } = await fetchUtils.fetchJson(contextUrl, {\n headers: new Headers({ Accept: 'application/ld+json' })\n });\n\n return getOntologiesFromContextJson(json['@context']);\n};\n\nconst getOntologiesFromContext = async (context: string | string[] | Record) => {\n let ontologies: Record = {};\n\n if (Array.isArray(context)) {\n for (const contextUrl of context) {\n ontologies = { ...ontologies, ...(await getOntologiesFromContextUrl(contextUrl)) };\n }\n } else if (typeof context === 'string') {\n ontologies = await getOntologiesFromContextUrl(context);\n } else {\n ontologies = getOntologiesFromContextJson(context);\n }\n\n return ontologies;\n};\n\nexport default getOntologiesFromContext;\n","const getPrefixFromUri = (uri: string, ontologies: Record) => {\n for (const [prefix, namespace] of Object.entries(ontologies)) {\n if (uri.startsWith(namespace)) return uri.replace(namespace, `${prefix}:`);\n }\n return uri;\n};\n\nexport default getPrefixFromUri;\n","import jwtDecode from 'jwt-decode';\nimport urlJoin from 'url-join';\nimport { Configuration, Plugin } from '../types';\n\n/**\n * Adds `dataServers.user` properties to configuration (baseUrl, sparqlEndpoint, proxyUrl, ...).\n */\nconst configureUserStorage = (): Plugin => ({\n name: 'configureUserStorage',\n transformConfig: async config => {\n const token = localStorage.getItem('token');\n\n // If the user is logged in\n if (token) {\n const payload: { [k: string]: string | number } = jwtDecode(token);\n const webId = (payload.webId as string) || (payload.webid as string); // Currently we must deal with both formats\n const { json: user } = await config.httpClient(webId);\n\n if (user) {\n const newConfig = { ...config };\n\n newConfig.dataServers[webId] = {\n pod: true,\n default: true,\n authServer: true,\n baseUrl: user['pim:storage'] || urlJoin(webId, 'data'),\n sparqlEndpoint: user.endpoints?.['void:sparqlEndpoint'] || urlJoin(webId, 'sparql'),\n proxyUrl: user.endpoints?.proxyUrl,\n containers: []\n };\n\n if (!newConfig.jsonContext) {\n newConfig.jsonContext = [\n 'https://www.w3.org/ns/activitystreams',\n urlJoin(new URL(webId).origin, '/.well-known/context.jsonld')\n ];\n }\n\n return newConfig;\n }\n }\n\n // Nothing to change\n return config;\n }\n});\n\nexport default configureUserStorage;\n","import jwtDecode from 'jwt-decode';\nimport LinkHeader from 'http-link-header';\nimport { Configuration, Plugin } from '../types';\nimport arrayOf from '../utils/arrayOf';\nimport getContainerFromDataRegistration from '../utils/getContainerFromDataRegistration';\n\ntype PluginConfiguration = {\n includeSelectedResources: boolean;\n};\n\n/**\n * Return a function that look if an app (clientId) is registered with an user (webId)\n * If not, it redirects to the endpoint provided by the user's authorization agent\n * See https://solid.github.io/data-interoperability-panel/specification/#authorization-agent\n */\nconst fetchAppRegistration = (pluginConfig = {} as PluginConfiguration): Plugin => {\n const { includeSelectedResources = true } = pluginConfig;\n return {\n name: 'fetchAppRegistration',\n transformConfig: async config => {\n const token = localStorage.getItem('token');\n\n // If the user is logged in\n if (token) {\n const payload: { [k: string]: string | number } = jwtDecode(token);\n const webId = (payload.webId as string) || (payload.webid as string); // Currently we must deal with both formats\n\n const { json: user } = await config.httpClient(webId);\n const authAgentUri = user['interop:hasAuthorizationAgent'];\n\n if (authAgentUri) {\n // Find if an application registration is linked to this user\n // See https://solid.github.io/data-interoperability-panel/specification/#agent-registration-discovery\n const { headers } = await config.httpClient(authAgentUri);\n if (headers.has('Link')) {\n const linkHeader = LinkHeader.parse(headers.get('Link')!);\n const registeredAgentLinkHeader = linkHeader.rel('http://www.w3.org/ns/solid/interop#registeredAgent');\n\n if (registeredAgentLinkHeader.length > 0) {\n const appRegistrationUri = registeredAgentLinkHeader[0].anchor;\n const { json: appRegistration } = await config.httpClient(appRegistrationUri);\n\n const newConfig = { ...config };\n\n // Load access grants concurrently to improve performances\n const results = await Promise.all(\n arrayOf(appRegistration['interop:hasAccessGrant']).map(async accessGrantUri => {\n const { json: accessGrant } = await config.httpClient(accessGrantUri);\n const container = await getContainerFromDataRegistration(\n accessGrant['interop:hasDataRegistration'],\n config\n );\n container.server = accessGrant['interop:dataOwner'];\n\n if (accessGrant['interop:scopeOfGrant'] === 'interop:AllFromRegistry') {\n return container;\n } else if (accessGrant['interop:scopeOfGrant'] === 'interop:SelectedFromRegistry') {\n if (!includeSelectedResources) return undefined;\n container.selectedResources = arrayOf(accessGrant['interop:hasDataInstance']);\n return container;\n }\n })\n );\n\n // Put data shared by other users in other servers (storages)\n for (const container of results.flat().filter(i => i !== undefined)) {\n if (!newConfig.dataServers[container.server!]) {\n newConfig.dataServers[container.server!] = {\n pod: true,\n baseUrl: `${container.server!}/data`,\n containers: [container]\n };\n } else {\n newConfig.dataServers[container.server!].containers.push(container);\n }\n }\n\n return newConfig;\n }\n }\n }\n }\n\n return config;\n }\n };\n};\n\nexport default fetchAppRegistration;\n","import jsonld from 'jsonld';\nimport { fetchUtils } from 'react-admin';\nimport { Configuration, Container } from '../types';\nimport getServerKeyFromType from './getServerKeyFromType';\n\nconst getContainerFromDataRegistration = async (dataRegistrationUri: string, config: Configuration) => {\n const { json: dataRegistration } = await config.httpClient(dataRegistrationUri, {\n headers: new Headers({\n Accept: 'application/ld+json',\n Prefer: 'return=representation; include=\"http://www.w3.org/ns/ldp#PreferMinimalContainer\"'\n })\n });\n\n const shapeTreeUri = dataRegistration['interop:registeredShapeTree'];\n\n let { json: shapeTree } = await fetchUtils.fetchJson(shapeTreeUri, {\n headers: new Headers({ Accept: 'application/ld+json' })\n });\n\n shapeTree = await jsonld.compact(shapeTree, {\n st: 'http://www.w3.org/ns/shapetrees#',\n skos: 'http://www.w3.org/2004/02/skos/core#',\n expectsType: { '@id': 'st:expectsType', '@type': '@id' },\n shape: { '@id': 'st:shape', '@type': '@id' },\n describesInstance: { '@id': 'st:describesInstance', '@type': '@id' },\n label: { '@id': 'skos:prefLabel', '@container': '@language' }\n });\n\n const userStorage = getServerKeyFromType('default', config.dataServers);\n const { baseUrl } = config.dataServers[userStorage];\n const containerPath = dataRegistration.id.replace(baseUrl, '');\n\n const container = {\n path: containerPath,\n shapeTreeUri,\n label: shapeTree.label,\n labelPredicate: shapeTree.describesInstance,\n binaryResources: shapeTree.expectsType === 'st:NonRDFResource'\n } as Container;\n\n if (shapeTree.shape) {\n const { json: shape } = await fetchUtils.fetchJson(shapeTree.shape, {\n headers: new Headers({ Accept: 'application/ld+json' })\n });\n\n container.types = shape?.[0]?.['http://www.w3.org/ns/shacl#targetClass']?.map((node: any) => node?.['@id']);\n }\n\n return container;\n};\n\nexport default getContainerFromDataRegistration;\n","import jwtDecode from 'jwt-decode';\nimport { Configuration, Plugin } from '../types';\nimport getContainerFromDataRegistration from '../utils/getContainerFromDataRegistration';\n\n/**\n * Plugin to add data registrations to the user containers, by fetching the registry set.\n *\n * Requires the `configureUserStorage` plugin.\n *\n * @returns {Configuration} The configuration with the data registrations added to `dataServers.user.containers`\n */\nconst fetchDataRegistry = (): Plugin => ({\n name: 'fetchDataRegistry',\n transformConfig: async config => {\n const token = localStorage.getItem('token');\n\n // If the user is logged in\n if (token) {\n const payload: { [k: string]: string | number } = jwtDecode(token);\n const webId = (payload.webId as string) || (payload.webid as string); // Currently we must deal with both formats\n\n if (!config.dataServers[webId])\n throw new Error(`You must configure the user storage first with the configureUserStorage plugin`);\n\n const { json: user } = await config.httpClient(webId);\n\n if (!user['interop:hasRegistrySet']) throw new Error(`User ${webId} is missing interop:hasRegistrySet`);\n const { json: registrySet } = await config.httpClient(user['interop:hasRegistrySet']);\n\n if (!registrySet['interop:hasDataRegistry']) throw new Error(`User ${webId} is missing interop:hasDataRegistry`);\n const { json: dataRegistry } = await config.httpClient(registrySet['interop:hasDataRegistry']);\n\n if (dataRegistry['interop:hasDataRegistration']) {\n const results = await Promise.all(\n dataRegistry['interop:hasDataRegistration'].map((dataRegistrationUri: string) => {\n return getContainerFromDataRegistration(dataRegistrationUri, config);\n })\n );\n\n const newConfig = { ...config };\n\n newConfig.dataServers[webId].containers?.push(...results.flat());\n\n return newConfig;\n }\n }\n\n // Nothing to change\n return config;\n }\n});\n\nexport default fetchDataRegistry;\n","import jwtDecode from 'jwt-decode';\nimport { capitalCase } from 'change-case';\nimport { Configuration, Plugin, TypeRegistration } from '../types';\nimport arrayOf from '../utils/arrayOf';\nimport expandTypes from '../utils/expandTypes';\n\n/**\n * Plugin to add type indexes to the user containers, by fetching the them.\n *\n * Requires the `configureUserStorage` plugin.\n *\n * @returns {Configuration} The configuration with the data registrations added to `dataServers.user.containers`\n */\nconst fetchTypeIndexes = (): Plugin => ({\n name: 'fetchTypeIndexes',\n transformConfig: async config => {\n const token = localStorage.getItem('token');\n\n // If the user is logged in\n if (token) {\n const payload: { [k: string]: string | number } = jwtDecode(token);\n const webId = (payload.webId as string) || (payload.webid as string); // Currently we must deal with both formats\n\n if (!config.dataServers[webId])\n throw new Error(`You must configure the user storage first with the configureUserStorage plugin`);\n\n const { json: user } = await config.httpClient(webId);\n\n const typeRegistrations: { public: TypeRegistration[]; private: TypeRegistration[] } = {\n public: [],\n private: []\n };\n\n if (user['solid:publicTypeIndex']) {\n const { json: publicTypeIndex } = await config.httpClient(user['solid:publicTypeIndex']);\n if (publicTypeIndex) {\n typeRegistrations.public = arrayOf(publicTypeIndex['solid:hasTypeRegistration']);\n }\n }\n\n if (user['pim:preferencesFile']) {\n const { json: preferencesFile } = await config.httpClient(user['pim:preferencesFile']);\n if (preferencesFile?.['solid:privateTypeIndex']) {\n const { json: privateTypeIndex } = await config.httpClient(preferencesFile['solid:privateTypeIndex']);\n typeRegistrations.private = arrayOf(privateTypeIndex['solid:hasTypeRegistration']);\n }\n }\n\n if (typeRegistrations.public.length > 0 || typeRegistrations.private.length > 0) {\n const newConfig = { ...config };\n\n for (const mode of Object.keys(typeRegistrations)) {\n for (const typeRegistration of typeRegistrations[mode as keyof typeof typeRegistrations]) {\n const types = arrayOf(typeRegistration['solid:forClass']);\n const container = {\n label: { en: capitalCase(types[0].split(':')[1], { separateNumbers: true }) },\n path: typeRegistration['solid:instanceContainer'].replace(newConfig.dataServers[webId].baseUrl, ''),\n types: await expandTypes(types, user['@context']),\n private: mode === 'private'\n };\n\n const containerIndex = newConfig.dataServers[webId].containers.findIndex(c => c.path === container.path);\n\n if (containerIndex !== -1) {\n // If a container with this URI already exist, add type registration information if they are not set\n newConfig.dataServers[webId].containers[containerIndex] = {\n ...container,\n ...newConfig.dataServers[webId].containers[containerIndex]\n };\n } else {\n newConfig.dataServers[webId].containers.push(container);\n }\n }\n }\n\n return newConfig;\n }\n }\n\n return config;\n }\n});\n\nexport default fetchTypeIndexes;\n","import { Configuration, VoidResults, VoidDataset, ResponseError, Plugin } from '../types';\nimport arrayOf from '../utils/arrayOf';\nimport expandTypes from '../utils/expandTypes';\n\nconst fetchVoidEndpoints = (): Plugin => ({\n name: 'fetchVoidEndpoints',\n transformConfig: async config => {\n let results = [] as VoidResults[];\n\n try {\n results = await Promise.all(\n Object.entries(config.dataServers)\n .filter(([_, server]) => server.pod !== true && server.void !== false)\n .map(async ([key, server]) =>\n config\n .httpClient(new URL('/.well-known/void', server.baseUrl).toString())\n .then(result => ({\n key,\n context: result.json?.['@context'],\n datasets: result.json?.['@graph'] as VoidDataset[]\n }))\n .catch((e: ResponseError) => {\n if (e.status === 404 || e.status === 401 || e.status === 500) {\n return { key, error: e.message };\n }\n throw e;\n })\n )\n );\n } catch (e) {\n // Do not throw error if no endpoint found\n }\n\n results = results.filter(result => result.datasets);\n\n if (results.length > 0) {\n const newConfig = { ...config };\n\n for (const result of results) {\n // Ignore unfetchable endpoints\n if (result.datasets) {\n for (const dataset of result.datasets) {\n newConfig.dataServers[result.key].name ??= dataset['dc:title'];\n newConfig.dataServers[result.key].description ??= dataset['dc:description'];\n newConfig.dataServers[result.key].sparqlEndpoint ??= dataset['void:sparqlEndpoint'];\n newConfig.dataServers[result.key].containers ??= [];\n\n for (const partition of arrayOf(dataset['void:classPartition'])) {\n for (const type of arrayOf(partition['void:class'])) {\n const path = partition['void:uriSpace'].replace(dataset['void:uriSpace'], '/');\n const expandedTypes = await expandTypes([type], result.context);\n\n const containerIndex = newConfig.dataServers[result.key].containers.findIndex(c => c.path === path);\n\n if (containerIndex !== -1) {\n // If a container with this path already exist, merge types\n const mergedTypes = [\n ...newConfig.dataServers[result.key].containers[containerIndex].types!,\n ...expandedTypes\n ].filter((v, i, a) => a.indexOf(v) === i);\n newConfig.dataServers[result.key].containers[containerIndex] = {\n ...newConfig.dataServers[result.key].containers[containerIndex],\n types: mergedTypes,\n binaryResources: mergedTypes.includes('http://semapps.org/ns/core#File')\n };\n } else {\n newConfig.dataServers[result.key].containers.push({\n path,\n types: expandedTypes,\n binaryResources: expandedTypes.includes('http://semapps.org/ns/core#File')\n });\n }\n }\n }\n }\n }\n }\n\n return newConfig;\n } else {\n return config;\n }\n }\n});\n\nexport default fetchVoidEndpoints;\n","import { useEffect, useState } from 'react';\nimport useDataProviderConfig from './useDataProviderConfig';\nimport compactPredicate from '../dataProvider/utils/compactPredicate';\n\nconst useCompactPredicate = (\n predicate: string,\n context?: string | string[] | Record\n): string | undefined => {\n const config = useDataProviderConfig();\n const [result, setResult] = useState();\n\n useEffect(() => {\n if (config && predicate) {\n compactPredicate(predicate, context || config.jsonContext).then(r => {\n setResult(r);\n });\n }\n }, [predicate, setResult, config, context]);\n\n return result;\n};\n\nexport default useCompactPredicate;\n","import { useState, useEffect } from 'react';\nimport { useDataProvider } from 'react-admin';\nimport { Configuration, SemanticDataProvider } from '../dataProvider/types';\n\nconst useDataProviderConfig = (): Configuration | undefined => {\n const dataProvider = useDataProvider();\n const [config, setConfig] = useState();\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (!isLoading && !config) {\n setIsLoading(true);\n dataProvider.getConfig().then(c => {\n setConfig(c);\n setIsLoading(false);\n });\n }\n }, [dataProvider, setConfig, config, setIsLoading, isLoading]);\n\n return config;\n};\n\nexport default useDataProviderConfig;\n","import jsonld, { ContextDefinition } from 'jsonld';\n\nconst compactPredicate = async (\n predicate: string,\n context: string | string[] | Record\n): Promise => {\n const result = await jsonld.compact({ [predicate]: '' }, context as ContextDefinition);\n\n return Object.keys(result).find(key => key !== '@context')!;\n};\n\nexport default compactPredicate;\n","import { useEffect, useState } from 'react';\nimport useDataModels from './useDataModels';\nimport useDataServers from './useDataServers';\nimport findContainersWithTypes from '../dataProvider/utils/findContainersWithTypes';\nimport parseServerKeys from '../dataProvider/utils/parseServerKeys';\nimport { Container } from '../dataProvider/types';\nimport arrayOf from '../dataProvider/utils/arrayOf';\n\nconst useContainers = (resourceId?: string, serverKeys?: string | string[]) => {\n const dataModels = useDataModels();\n const dataServers = useDataServers();\n const [containers, setContainers] = useState([]);\n\n // Warning: if serverKeys change, the containers list will not be updated (otherwise we have an infinite re-render loop)\n useEffect(() => {\n if (dataServers && dataModels) {\n if (resourceId) {\n const dataModel = dataModels[resourceId];\n setContainers(findContainersWithTypes(arrayOf(dataModel.types), serverKeys, dataServers));\n } else {\n const parsedServerKeys = parseServerKeys(serverKeys || '@all', dataServers) as string[];\n setContainers(parsedServerKeys.map(serverKey => dataServers[serverKey].containers).flat());\n }\n }\n }, [dataModels, dataServers, setContainers, resourceId]);\n\n return containers;\n};\n\nexport default useContainers;\n","import useDataProviderConfig from './useDataProviderConfig';\n\nconst useDataModels = () => {\n const config = useDataProviderConfig();\n return config?.resources;\n};\n\nexport default useDataModels;\n","import useDataProviderConfig from './useDataProviderConfig';\n\nconst useDataServers = () => {\n const config = useDataProviderConfig();\n return config?.dataServers;\n};\n\nexport default useDataServers;\n","import { useEffect, useState } from 'react';\nimport { useDataProvider } from 'react-admin';\nimport useDataServers from './useDataServers';\nimport findContainersWithTypes from '../dataProvider/utils/findContainersWithTypes';\nimport { Container, SemanticDataProvider } from '../dataProvider/types';\nimport arrayOf from '../dataProvider/utils/arrayOf';\n\nconst useContainersByTypes = (types?: string | string[]) => {\n const dataServers = useDataServers();\n const dataProvider = useDataProvider();\n const [containers, setContainers] = useState([]);\n\n useEffect(() => {\n if (dataServers && types) {\n dataProvider\n .expandTypes(arrayOf(types))\n .then(expandedTypes => {\n setContainers(findContainersWithTypes(expandedTypes, '@all', dataServers));\n })\n .catch(() => {\n // Ignore errors\n });\n }\n }, [dataServers, dataProvider, setContainers, types]);\n\n return containers;\n};\n\nexport default useContainersByTypes;\n","import { useEffect, useState } from 'react';\nimport useDataServers from './useDataServers';\nimport { Container } from '../dataProvider/types';\n\nconst useContainerByUri = (containerUri: string) => {\n const dataServers = useDataServers();\n const [container, setContainer] = useState();\n\n useEffect(() => {\n if (dataServers && containerUri) {\n Object.keys(dataServers).forEach(serverKey => {\n dataServers[serverKey].containers?.forEach(c => {\n if (c.uri === containerUri) {\n setContainer(c);\n }\n });\n });\n }\n }, [dataServers, setContainer, containerUri]);\n\n return container;\n};\n\nexport default useContainerByUri;\n","import { useMemo } from 'react';\nimport useGetCreateContainerUri from './useGetCreateContainerUri';\n\nconst useCreateContainerUri = (resourceId: string | undefined) => {\n const getCreateContainerUri = useGetCreateContainerUri();\n\n const createContainerUri = useMemo(() => getCreateContainerUri(resourceId), [getCreateContainerUri, resourceId]);\n\n return createContainerUri;\n};\n\nexport default useCreateContainerUri;\n","import { useCallback } from 'react';\nimport useDataServers from './useDataServers';\nimport findCreateContainerWithTypes from '../dataProvider/utils/findCreateContainerWithTypes';\nimport getServerKeyFromType from '../dataProvider/utils/getServerKeyFromType';\nimport useDataModels from './useDataModels';\n\nconst useGetCreateContainerUri = () => {\n const dataModels = useDataModels();\n const dataServers = useDataServers();\n\n const getCreateContainerUri = useCallback(\n (resourceId: string | undefined) => {\n if (!resourceId || !dataModels || !dataServers || !dataModels[resourceId]) {\n return undefined;\n }\n\n const dataModel = dataModels[resourceId];\n\n if (dataModel.create?.container) {\n return dataModel.create.container;\n } else if (dataModel.create?.server) {\n return findCreateContainerWithTypes(dataModel.types, dataModel.create.server, dataServers);\n } else {\n const defaultServerKey = getServerKeyFromType('default', dataServers);\n\n if (!defaultServerKey) {\n throw new Error(\n `No default dataServer found. You can set explicitly one setting the \"default\" attribute to true`\n );\n }\n\n return findCreateContainerWithTypes(dataModel.types, defaultServerKey, dataServers);\n }\n },\n [dataModels, dataServers]\n );\n\n return getCreateContainerUri;\n};\n\nexport default useGetCreateContainerUri;\n","import { DataModel, DataServerKey, DataServersConfig } from '../types';\n\nconst findCreateContainerWithTypes = (\n types: DataModel['types'],\n createServerKey: DataServerKey,\n dataServers: DataServersConfig\n) => {\n if (!dataServers[createServerKey].containers)\n throw new Error(`Data server ${createServerKey} has no declared containers`);\n\n const matchingContainers = dataServers[createServerKey].containers.filter(\n container => container.types?.some(t => types.includes(t))\n );\n\n if (matchingContainers.length === 0) {\n throw new Error(\n `No container found matching with types ${JSON.stringify(\n types\n )}. You can set explicitly the create.container property of the resource.`\n );\n } else if (matchingContainers.length > 1) {\n throw new Error(\n `More than one container found matching with types ${JSON.stringify(\n types\n )}. You must set the create.server or create.container property for the resource.`\n );\n }\n\n return matchingContainers[0].uri;\n};\n\nexport default findCreateContainerWithTypes;\n","import useDataProviderConfig from './useDataProviderConfig';\n\nconst useDataModel = (resourceId: string) => {\n const config = useDataProviderConfig();\n return config?.resources[resourceId];\n};\n\nexport default useDataModel;\n","import { useCallback, useMemo, useContext } from 'react';\nimport { DataProviderContext } from 'react-admin';\n\nconst compute = (externalLinks: any, record: any) =>\n typeof externalLinks === 'function' ? externalLinks(record) : externalLinks;\nconst isURL = (url: any) => typeof url === 'string' && url.startsWith('http');\n\nconst useGetExternalLink = (componentExternalLinks: any) => {\n // Since the externalLinks config is defined only locally, we don't need to wait for VOID endpoints fetching\n const dataProvider = useContext(DataProviderContext);\n // @ts-expect-error TS(2531): Object is possibly 'null'.\n const dataServers = dataProvider.getLocalDataServers();\n\n const serversExternalLinks = useMemo(() => {\n if (dataServers) {\n return Object.fromEntries(\n Object.values(dataServers).map(server => {\n // If externalLinks is not defined in the data server, use external links for non-default servers\n // @ts-expect-error TS(2571): Object is of type 'unknown'.\n const externalLinks = server.externalLinks !== undefined ? server.externalLinks : !server.default;\n // @ts-expect-error TS(2571): Object is of type 'unknown'.\n return [server.baseUrl, externalLinks];\n })\n );\n }\n }, [dataServers]);\n\n return useCallback(\n (record: any) => {\n const computedComponentExternalLinks = compute(componentExternalLinks, record);\n // If the component explicitly asks not to display as external links, use an internal link\n if (computedComponentExternalLinks === false) return false;\n\n if (!record?.id) return false;\n\n const serverBaseUrl = Object.keys(serversExternalLinks).find(baseUrl => record?.id.startsWith(baseUrl));\n // If no matching data servers could be found, assume we have an internal link\n if (!serverBaseUrl) return false;\n\n const computedServerExternalLinks = compute(serversExternalLinks[serverBaseUrl], record);\n // If the data server explicitly asks not to display as external links, use an internal link\n if (computedServerExternalLinks === false) return false;\n\n if (isURL(computedComponentExternalLinks)) {\n return computedComponentExternalLinks;\n }\n if (isURL(computedServerExternalLinks)) {\n return computedServerExternalLinks;\n }\n return record.id;\n },\n [serversExternalLinks, componentExternalLinks]\n );\n};\n\nexport default useGetExternalLink;\n","import { useCallback } from 'react';\nimport useDataProviderConfig from './useDataProviderConfig';\nimport getPrefixFromUri from '../dataProvider/utils/getPrefixFromUri';\n\nconst useGetPrefixFromUri = () => {\n const config = useDataProviderConfig();\n\n return useCallback((uri: string) => getPrefixFromUri(uri, config!.ontologies), [config?.ontologies]);\n};\n\nexport default useGetPrefixFromUri;\n","import React, { useState, useEffect } from 'react';\n\n/**\n * @example\n * \n * \n * \n * \n * \n * \n */\n\nconst FilterHandler = ({\n children,\n record,\n filter,\n source,\n ...otherProps\n}: any) => {\n const [filtered, setFiltered] = useState();\n useEffect(() => {\n if (record && source && Array.isArray(record?.[source])) {\n const filteredData = record?.[source].filter((r: any) => {\n let eq = true;\n for (const key in filter) {\n const value = r[key];\n if (Array.isArray(value)) {\n if (!value.includes(filter[key])) {\n eq = false;\n }\n } else if (value !== filter[key]) {\n eq = false;\n }\n }\n return eq;\n });\n const newRecord = {\n ...record\n };\n // undefined setted if no data to obtain no render in RightLabel or equivalent\n newRecord[source] = filteredData.length > 0 ? filteredData : undefined;\n setFiltered(newRecord);\n }\n }, [record, source, filter]);\n\n return (\n <>\n {React.Children.map(children, (child, i) => {\n return React.cloneElement(child, {\n ...otherProps,\n record: filtered,\n source\n });\n })}\n \n );\n};\nexport default FilterHandler;\n","import React from 'react';\nimport { useGetList, useRecordContext } from 'react-admin';\nimport { default as FilterHandler } from './FilterHandler';\n\n/*\n * @example Label used in examples\n * const Label = ({label, ...otherProps})=>{\n * return

{label}

\n * }\n *\n * @example show header for each group with group property thanks to groupHeader\n * }\n * filterProperty=\"property of source filtered by groupReference\"\n * >\n * // same props as GroupedArrayField source\n * \n * \n * \n * \n *\n * @example call chhildren with label thanks to groupLabel\n * \n *