@semapps/semantic-data-provider 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,92 +1,131 @@
1
- type DataServerKey = string & {
2
- readonly _type?: 'DataServerKey';
1
+ import { DataProvider, RaRecord, fetchUtils } from 'react-admin';
2
+ import { Quad } from '@rdfjs/types';
3
+ export type DataServerKey = string & {
4
+ readonly _type?: 'DataServerKey';
5
+ };
6
+ export type ContainerURI = string & {
7
+ readonly _type?: 'ContainerURI';
3
8
  };
4
9
  type DataServerConfig = {
5
- /** Server base url */
6
- baseUrl: string;
7
- /** Default server (used for the creation of resources) */
8
- default?: boolean;
9
- /** True if this is the server where users are autenticated */
10
- authServer?: boolean;
11
- /** True if we should fetch void endpoint */
12
- void?: boolean;
13
- /** True if the server is a pod */
14
- pod?: boolean;
15
- /** Container used for uploaded files */
16
- uploadsContainer?: string;
17
- proxyUrl?: string;
18
- noProxy?: boolean;
19
- externalLinks?: boolean;
20
- name: string;
21
- description: string;
22
- sparqlEndpoint: string;
23
- containers?: Record<DataServerKey, Record<string, string[]>>;
24
- blankNodes: any;
10
+ /** Server base url */
11
+ baseUrl: string;
12
+ /** Default server (used for the creation of resources) */
13
+ default?: boolean;
14
+ /** True if this is the server where users are autenticated */
15
+ authServer?: boolean;
16
+ /** True if we should fetch void endpoint */
17
+ void?: boolean;
18
+ /** True if the server is a pod */
19
+ pod?: boolean;
20
+ /** Container used for uploaded files */
21
+ uploadsContainer?: string;
22
+ proxyUrl?: string;
23
+ noProxy?: boolean;
24
+ externalLinks?: boolean;
25
+ name: string;
26
+ description: string;
27
+ sparqlEndpoint: string;
28
+ containers?: Record<DataServerKey, Record<string, string[]>>;
29
+ blankNodes: any;
25
30
  };
26
- type DataServersConfig = Record<DataServerKey, DataServerConfig>;
27
- type DataModel = {
28
- /** Type(s) of resources to fetch or create (example: [pair:Organization]) */
29
- types: string | string[];
30
- list?: {
31
- /** The servers where to fetch the resource. Default to @all */
32
- servers?: DataServerKey[] | DataServerKey | '@all' | '@remote' | '@default' | '@auth' | '@pod';
33
- /** URL(s) of the container(s) to fetch. If specified, will bypass the list.servers config */
34
- containers?: Record<DataServerKey, string[]>;
35
- /** Predicates listed are blank nodes and will be dereferenced in SPARQL queries. Automatically set if Void endpoints are found */
36
- blankNodes?: string[];
37
- /** @deprecated Predicates listed will be turned to arrays if they are simple strings. Used by for reified relationship */
38
- forceArray?: [];
39
- /** Will only fetch the given predicates (and the @type) */
40
- predicates?: string[];
41
- /** React-Admin permanent filter applied to all requests */
42
- filter?: Record<string, unknown>;
43
- /** If true, the data provider will fetch the LDP containers instead of doing a SPARQL request */
44
- fetchContainer?: boolean;
45
- /** If false, improve performances by not including the @embed rule in post-request JSON-LD framing */
46
- explicitEmbedOnFraming?: boolean;
47
- };
48
- create?: {
49
- /** The server where to create new resources. Default to @default */
50
- server?: '@default' | '@auth' | '@pod' | DataServerKey;
51
- /** URL of the container where to create new resources. If specified, will bypass the create.server config */
52
- container?: Record<DataServerKey, string>;
53
- };
54
- fieldsMapping?: {
55
- /** The predicate of the title */
56
- title: string;
57
- };
31
+ export type DataServersConfig = Record<DataServerKey, DataServerConfig>;
32
+ type HttpClientOptions = {
33
+ headers?: Headers;
34
+ method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
35
+ body?: string | File;
36
+ };
37
+ export type DataModel = {
38
+ /** Type(s) of resources to fetch or create (example: [pair:Organization]) */
39
+ types: string | string[];
40
+ list?: {
41
+ /** The servers where to fetch the resource. Default to @all */
42
+ servers?: DataServerKey[] | DataServerKey | '@all' | '@remote' | '@default' | '@auth' | '@pod';
43
+ /** URL(s) of the container(s) to fetch. If specified, will bypass the list.servers config */
44
+ containers?: Record<DataServerKey, string[]>;
45
+ /** Predicates listed are blank nodes and will be dereferenced in SPARQL queries. Automatically set if Void endpoints are found */
46
+ blankNodes?: string[];
47
+ /** @deprecated Predicates listed will be turned to arrays if they are simple strings. Used by for reified relationship */
48
+ forceArray?: [];
49
+ /** Will only fetch the given predicates (and the @type) */
50
+ predicates?: string[];
51
+ /** React-Admin permanent filter applied to all requests */
52
+ filter?: Record<string, unknown>;
53
+ /** If true, the data provider will fetch the LDP containers instead of doing a SPARQL request */
54
+ fetchContainer?: boolean;
55
+ /** If false, improve performances by not including the @embed rule in post-request JSON-LD framing */
56
+ explicitEmbedOnFraming?: boolean;
57
+ };
58
+ create?: {
59
+ /** The server where to create new resources. Default to @default */
60
+ server?: '@default' | '@auth' | '@pod' | DataServerKey;
61
+ /** URL of the container where to create new resources. If specified, will bypass the create.server config */
62
+ container?: Record<DataServerKey, string>;
63
+ };
64
+ fieldsMapping?: {
65
+ /** The predicate of the title */
66
+ title: string;
67
+ };
58
68
  };
59
- export function buildBlankNodesQuery(blankNodes: any, baseQuery: any, ontologies: any): {
60
- construct: import("@rdfjs/types").Quad[] | null;
61
- where: {
69
+ export type Configuration = {
70
+ dataServers: DataServersConfig;
71
+ httpClient: (url: string, options?: HttpClientOptions) => ReturnType<typeof fetchUtils.fetchJson>;
72
+ /** Context from ontologies { prefix: IRI } or IRI, or array of IRI */
73
+ jsonContext: string | string[] | Record<string, string>;
74
+ resources: Record<string, DataModel>;
75
+ };
76
+ export type SemanticDataProvider = DataProvider & {
77
+ getDataModels: () => Promise<Record<string, DataModel>>;
78
+ getDataServers: () => Promise<DataServersConfig>;
79
+ fetch: (url: string, options?: HttpClientOptions) => ReturnType<typeof fetchUtils.fetchJson>;
80
+ };
81
+ export interface PatchParams<RecordType extends RaRecord = any> {
82
+ id: RecordType['id'];
83
+ triplesToAdd?: Quad[];
84
+ triplesToRemove?: Quad[];
85
+ }
86
+ export function buildBlankNodesQuery(
87
+ blankNodes: any,
88
+ baseQuery: any,
89
+ ontologies: any
90
+ ):
91
+ | {
92
+ construct: import('@rdfjs/types').Quad[] | null;
93
+ where: {
62
94
  type: string;
63
95
  patterns: any[];
96
+ };
97
+ }
98
+ | {
99
+ construct: string;
100
+ where: string;
64
101
  };
65
- } | {
66
- construct: string;
67
- where: string;
68
- };
69
- export function buildSparqlQuery({ containers, params, dataModel, ontologies }: {
70
- containers: any;
71
- params: any;
72
- dataModel: any;
73
- ontologies: any;
74
- }): any;
102
+ export function buildSparqlQuery({
103
+ containers,
104
+ params,
105
+ dataModel,
106
+ ontologies
107
+ }: {
108
+ containers: any;
109
+ params: any;
110
+ dataModel: any;
111
+ ontologies: any;
112
+ }): string;
75
113
  export function dataProvider(config: any): {
76
- getList: (...arg: any[]) => Promise<any>;
77
- getMany: (...arg: any[]) => Promise<any>;
78
- getManyReference: (...arg: any[]) => Promise<any>;
79
- getOne: (...arg: any[]) => Promise<any>;
80
- create: (...arg: any[]) => Promise<any>;
81
- update: (...arg: any[]) => Promise<any>;
82
- updateMany: () => never;
83
- delete: (...arg: any[]) => Promise<any>;
84
- deleteMany: (...arg: any[]) => Promise<any>;
85
- getDataModels: (...arg: any[]) => Promise<any>;
86
- getDataServers: (...arg: any[]) => Promise<any>;
87
- getLocalDataServers: () => any;
88
- fetch: (...arg: any[]) => Promise<any>;
89
- refreshConfig: () => Promise<any>;
114
+ getList: (...arg: any[]) => Promise<any>;
115
+ getMany: (...arg: any[]) => Promise<any>;
116
+ getManyReference: (...arg: any[]) => Promise<any>;
117
+ getOne: (...arg: any[]) => Promise<any>;
118
+ create: (...arg: any[]) => Promise<any>;
119
+ update: (...arg: any[]) => Promise<any>;
120
+ updateMany: () => never;
121
+ delete: (...arg: any[]) => Promise<any>;
122
+ deleteMany: (...arg: any[]) => Promise<any>;
123
+ patch: (...arg: any[]) => Promise<any>;
124
+ getDataModels: (...arg: any[]) => Promise<any>;
125
+ getDataServers: (...arg: any[]) => Promise<any>;
126
+ getLocalDataServers: () => any;
127
+ fetch: (...arg: any[]) => Promise<any>;
128
+ refreshConfig: () => Promise<any>;
90
129
  };
91
130
  export function useGetExternalLink(componentExternalLinks: any): (record: any) => any;
92
131
  export const useDataModel: (resourceId: string) => any;
@@ -110,21 +149,64 @@ export const useCreateContainerUri: () => (resourceId: string) => string | undef
110
149
  * </FilterHandler>
111
150
  * </Show>
112
151
  */
113
- export function FilterHandler({ children, record, filter, source, ...otherProps }: {
114
- [x: string]: any;
115
- children: any;
116
- record: any;
117
- filter: any;
118
- source: any;
119
- }): import("react/jsx-runtime").JSX.Element;
120
- export function GroupedReferenceHandler({ children, groupReference, groupLabel, groupHeader, filterProperty, ...otherProps }: {
121
- [x: string]: any;
122
- children: any;
123
- groupReference: any;
124
- groupLabel: any;
125
- groupHeader: any;
126
- filterProperty: any;
127
- }): import("react/jsx-runtime").JSX.Element;
128
- export function ReificationArrayInput(props: any): import("react/jsx-runtime").JSX.Element;
152
+ export function FilterHandler({
153
+ children,
154
+ record,
155
+ filter,
156
+ source,
157
+ ...otherProps
158
+ }: {
159
+ [x: string]: any;
160
+ children: any;
161
+ record: any;
162
+ filter: any;
163
+ source: any;
164
+ }): import('react/jsx-runtime').JSX.Element;
165
+ export function GroupedReferenceHandler({
166
+ children,
167
+ groupReference,
168
+ groupLabel,
169
+ groupHeader,
170
+ filterProperty,
171
+ ...otherProps
172
+ }: {
173
+ [x: string]: any;
174
+ children: any;
175
+ groupReference: any;
176
+ groupLabel: any;
177
+ groupHeader: any;
178
+ filterProperty: any;
179
+ }): import('react/jsx-runtime').JSX.Element;
180
+ export function ReificationArrayInput(props: any): import('react/jsx-runtime').JSX.Element;
181
+ type fetchFn = typeof fetchUtils.fetchJson;
182
+ interface CreateSolidChannelOptions {
183
+ type: string;
184
+ closeAfter?: number;
185
+ startIn?: number;
186
+ startAt?: string;
187
+ endAt?: string;
188
+ rate?: number;
189
+ }
190
+ export const createSolidNotificationChannel: (
191
+ fetch: fetchFn,
192
+ resourceUri: string,
193
+ options?: CreateSolidChannelOptions
194
+ ) => Promise<any>;
195
+ export const createWsChannel: (
196
+ fetch: fetchFn,
197
+ resourceUri: string,
198
+ options: CreateSolidChannelOptions
199
+ ) => Promise<WebSocket>;
200
+ /**
201
+ * @param fetch A react admin fetch function.
202
+ * @param resourceUri The resource to subscribe to
203
+ * @param options Options to pass to @see createSolidNotificationChannel, if the channel does not exist yet.
204
+ * @returns {WebSocket} A new or existing web socket that subscribed to the given resource.
205
+ */
206
+ export const getOrCreateWsChannel: (
207
+ fetch: fetchFn,
208
+ resourceUri: string,
209
+ options?: CreateSolidChannelOptions
210
+ ) => Promise<WebSocket>;
129
211
 
130
212
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"mappings":"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","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/patch.ts","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/notificationChannels/subscribeToUpdates.ts","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,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\nexport {\n createWsChannel,\n getOrCreateWsChannel,\n createSolidNotificationChannel\n} from './notificationChannels/subscribeToUpdates';\n\nexport * from './dataProvider/types';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
package/dist/index.es.js CHANGED
@@ -927,6 +927,44 @@ var $b5979a9678f57756$export$2e2bcd8739ae039 = $b5979a9678f57756$var$getManyRefe
927
927
 
928
928
 
929
929
 
930
+ const $cdfdce6efa87baab$var$generator = new (0, $fj9kP$Generator)();
931
+ const $cdfdce6efa87baab$var$patchMethod = (config)=>async (resourceId, params)=>{
932
+ const { httpClient: httpClient } = config;
933
+ const sparqlUpdate = {
934
+ type: "update",
935
+ prefixes: {},
936
+ updates: []
937
+ };
938
+ if (params.triplesToAdd) sparqlUpdate.updates.push({
939
+ updateType: "insert",
940
+ insert: [
941
+ {
942
+ type: "bgp",
943
+ triples: params.triplesToAdd
944
+ }
945
+ ]
946
+ });
947
+ if (params.triplesToRemove) sparqlUpdate.updates.push({
948
+ updateType: "delete",
949
+ delete: [
950
+ {
951
+ type: "bgp",
952
+ triples: params.triplesToRemove
953
+ }
954
+ ]
955
+ });
956
+ await httpClient(`${params.id}`, {
957
+ method: "PATCH",
958
+ headers: new Headers({
959
+ "Content-Type": "application/sparql-update"
960
+ }),
961
+ body: $cdfdce6efa87baab$var$generator.stringify(sparqlUpdate)
962
+ });
963
+ };
964
+ var $cdfdce6efa87baab$export$2e2bcd8739ae039 = $cdfdce6efa87baab$var$patchMethod;
965
+
966
+
967
+
930
968
  const $c5031381f4dfc62d$var$updateMethod = (config)=>async (resourceId, params)=>{
931
969
  const { httpClient: httpClient, jsonContext: jsonContext } = config;
932
970
  // Upload files, if there are any
@@ -1137,6 +1175,7 @@ const $243bf28fbb1b868f$var$dataProvider = (config)=>{
1137
1175
  delete: waitForConfig((0, $9510970b8e7eb9e2$export$2e2bcd8739ae039)(config)),
1138
1176
  deleteMany: waitForConfig((0, $298dd1ae21173ea0$export$2e2bcd8739ae039)(config)),
1139
1177
  // Custom methods
1178
+ patch: waitForConfig((0, $cdfdce6efa87baab$export$2e2bcd8739ae039)(config)),
1140
1179
  getDataModels: waitForConfig((0, $54a3fa40eed06111$export$2e2bcd8739ae039)(config)),
1141
1180
  getDataServers: waitForConfig((0, $7dd5bf9323d2d9c1$export$2e2bcd8739ae039)(config)),
1142
1181
  getLocalDataServers: (0, $7dd5bf9323d2d9c1$export$2e2bcd8739ae039)(config),
@@ -1543,6 +1582,100 @@ var $6844bbce0ad66151$export$2e2bcd8739ae039 = $6844bbce0ad66151$var$Reification
1543
1582
 
1544
1583
 
1545
1584
 
1585
+ /**
1586
+ * Find the solid notification description resource for a given resource URI.
1587
+ */ const $03d52e691e8dc945$var$findDescriptionResource = async (fetch, resourceUri)=>{
1588
+ const { headers: headers } = await fetch(resourceUri, {
1589
+ method: "HEAD"
1590
+ });
1591
+ const linkHeader = headers.get("Link");
1592
+ const matches = linkHeader?.match(/<([^>]+)>;\s*rel="(?:describedby|http:\/\/www\.w3\.org\/ns\/solid\/terms#storageDescription)"/);
1593
+ if (!matches?.[1]) return undefined;
1594
+ const { json: descriptionResource } = await fetch(matches[1]);
1595
+ return descriptionResource;
1596
+ };
1597
+ const $03d52e691e8dc945$export$3edfe18db119b920 = async (fetch, resourceUri, options = {
1598
+ type: "WebSocketChannel2023"
1599
+ })=>{
1600
+ const { type: type, closeAfter: closeAfter, startIn: startIn, rate: rate } = options;
1601
+ let { startAt: startAt, endAt: endAt } = options;
1602
+ if (startIn && !startAt) startAt = new Date(Date.now() + startIn).toISOString();
1603
+ if (closeAfter && !endAt) endAt = new Date(Date.now() + closeAfter).toISOString();
1604
+ const descriptionResource = await $03d52e691e8dc945$var$findDescriptionResource(fetch, resourceUri);
1605
+ // TODO: use a json-ld parser / ldo in the future for this...
1606
+ // Get solid notification subscription service for the given type.
1607
+ const subscriptionService = (await Promise.all(// Get the subscription service resources (that describe a channel type).
1608
+ (0, $cc8adac4b83414eb$export$2e2bcd8739ae039)(descriptionResource.subscription || descriptionResource["notify:subscription"]).map(async (subscriptionServiceOrUri)=>{
1609
+ // They might not be resolved...
1610
+ if (typeof subscriptionServiceOrUri === "string") {
1611
+ const { json: json } = await fetch(subscriptionServiceOrUri);
1612
+ return json;
1613
+ }
1614
+ return subscriptionServiceOrUri;
1615
+ }))).find((service)=>{
1616
+ // Find for the correct channel type (e.g. web socket).
1617
+ const channelType = service.channelType ?? service["notify:channelType"];
1618
+ return channelType === type || channelType === `notify:${type}`;
1619
+ });
1620
+ if (!subscriptionService) throw new Error(`No solid notification subscription service found for type ${type}`);
1621
+ // Create a new channel.
1622
+ const { json: channel } = await fetch(subscriptionService.id || subscriptionService["@id"], {
1623
+ method: "POST",
1624
+ body: JSON.stringify({
1625
+ "@context": "https://www.w3.org/ns/solid/notification/v1",
1626
+ type: "WebSocketChannel2023",
1627
+ topic: resourceUri,
1628
+ startAt: startAt,
1629
+ endAt: endAt,
1630
+ rate: rate
1631
+ })
1632
+ });
1633
+ return channel;
1634
+ };
1635
+ const $03d52e691e8dc945$export$28772ab4c256e709 = async (fetch, resourceUri, options)=>{
1636
+ const channel = await $03d52e691e8dc945$export$3edfe18db119b920(fetch, resourceUri, options);
1637
+ const receiveFrom = channel.receiveFrom || channel["notify:receiveFrom"];
1638
+ return new WebSocket(receiveFrom);
1639
+ };
1640
+ const $03d52e691e8dc945$var$registeredWebSockets = new Map();
1641
+ /**
1642
+ * @param fetch A react admin fetch function.
1643
+ * @param resourceUri The resource to subscribe to
1644
+ * @param options Options to pass to @see createSolidNotificationChannel, if the channel does not exist yet.
1645
+ * @returns {WebSocket} A new or existing web socket that subscribed to the given resource.
1646
+ */ const $03d52e691e8dc945$export$8d60734939c59ced = async (fetch, resourceUri, options = {
1647
+ type: "WebSocketChannel2023",
1648
+ closeAfter: 3600000
1649
+ })=>{
1650
+ const socket = $03d52e691e8dc945$var$registeredWebSockets.get(resourceUri);
1651
+ if (socket) // Will resolve or is resolved already.
1652
+ return socket;
1653
+ // Create a promise, to return immediately and set the sockets cache.
1654
+ // This prevents racing conditions that create multiple channels.
1655
+ const wsPromise = $03d52e691e8dc945$export$28772ab4c256e709(fetch, resourceUri, {
1656
+ ...options,
1657
+ type: "WebSocketChannel2023"
1658
+ }).then((ws)=>{
1659
+ // Remove the promise from the cache, if it closes.
1660
+ ws.addEventListener("close", (e)=>{
1661
+ $03d52e691e8dc945$var$registeredWebSockets.delete(resourceUri);
1662
+ });
1663
+ // Close the socket, if the endAt / closeAfter time is reached.
1664
+ const closeIn = options.closeAfter ?? (options.endAt && new Date(options.endAt).getTime() - Date.now());
1665
+ if (closeIn) setTimeout(()=>{
1666
+ ws.close();
1667
+ }, closeIn);
1668
+ return ws;
1669
+ });
1670
+ $03d52e691e8dc945$var$registeredWebSockets.set(resourceUri, wsPromise);
1671
+ return wsPromise;
1672
+ };
1673
+
1674
+
1675
+ var $11242e90250f263e$exports = {};
1676
+ /* eslint-disable @typescript-eslint/no-redundant-type-constituents */
1677
+
1678
+
1546
1679
 
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};
1680
+ 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, $03d52e691e8dc945$export$28772ab4c256e709 as createWsChannel, $03d52e691e8dc945$export$8d60734939c59ced as getOrCreateWsChannel, $03d52e691e8dc945$export$3edfe18db119b920 as createSolidNotificationChannel};
1548
1681
  //# sourceMappingURL=index.es.js.map