@semapps/semantic-data-provider 0.6.5 → 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +134 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +150 -94
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +132 -2
- package/dist/index.es.js.map +1 -1
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,92 +1,105 @@
|
|
|
1
|
+
import { fetchUtils } from 'react-admin';
|
|
1
2
|
type DataServerKey = string & {
|
|
2
|
-
|
|
3
|
+
readonly _type?: 'DataServerKey';
|
|
3
4
|
};
|
|
4
5
|
type DataServerConfig = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
6
|
+
/** Server base url */
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
/** Default server (used for the creation of resources) */
|
|
9
|
+
default?: boolean;
|
|
10
|
+
/** True if this is the server where users are autenticated */
|
|
11
|
+
authServer?: boolean;
|
|
12
|
+
/** True if we should fetch void endpoint */
|
|
13
|
+
void?: boolean;
|
|
14
|
+
/** True if the server is a pod */
|
|
15
|
+
pod?: boolean;
|
|
16
|
+
/** Container used for uploaded files */
|
|
17
|
+
uploadsContainer?: string;
|
|
18
|
+
proxyUrl?: string;
|
|
19
|
+
noProxy?: boolean;
|
|
20
|
+
externalLinks?: boolean;
|
|
21
|
+
name: string;
|
|
22
|
+
description: string;
|
|
23
|
+
sparqlEndpoint: string;
|
|
24
|
+
containers?: Record<DataServerKey, Record<string, string[]>>;
|
|
25
|
+
blankNodes: any;
|
|
25
26
|
};
|
|
26
27
|
type DataServersConfig = Record<DataServerKey, DataServerConfig>;
|
|
27
28
|
type DataModel = {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
29
|
+
/** Type(s) of resources to fetch or create (example: [pair:Organization]) */
|
|
30
|
+
types: string | string[];
|
|
31
|
+
list?: {
|
|
32
|
+
/** The servers where to fetch the resource. Default to @all */
|
|
33
|
+
servers?: DataServerKey[] | DataServerKey | '@all' | '@remote' | '@default' | '@auth' | '@pod';
|
|
34
|
+
/** URL(s) of the container(s) to fetch. If specified, will bypass the list.servers config */
|
|
35
|
+
containers?: Record<DataServerKey, string[]>;
|
|
36
|
+
/** Predicates listed are blank nodes and will be dereferenced in SPARQL queries. Automatically set if Void endpoints are found */
|
|
37
|
+
blankNodes?: string[];
|
|
38
|
+
/** @deprecated Predicates listed will be turned to arrays if they are simple strings. Used by for reified relationship */
|
|
39
|
+
forceArray?: [];
|
|
40
|
+
/** Will only fetch the given predicates (and the @type) */
|
|
41
|
+
predicates?: string[];
|
|
42
|
+
/** React-Admin permanent filter applied to all requests */
|
|
43
|
+
filter?: Record<string, unknown>;
|
|
44
|
+
/** If true, the data provider will fetch the LDP containers instead of doing a SPARQL request */
|
|
45
|
+
fetchContainer?: boolean;
|
|
46
|
+
/** If false, improve performances by not including the @embed rule in post-request JSON-LD framing */
|
|
47
|
+
explicitEmbedOnFraming?: boolean;
|
|
48
|
+
};
|
|
49
|
+
create?: {
|
|
50
|
+
/** The server where to create new resources. Default to @default */
|
|
51
|
+
server?: '@default' | '@auth' | '@pod' | DataServerKey;
|
|
52
|
+
/** URL of the container where to create new resources. If specified, will bypass the create.server config */
|
|
53
|
+
container?: Record<DataServerKey, string>;
|
|
54
|
+
};
|
|
55
|
+
fieldsMapping?: {
|
|
56
|
+
/** The predicate of the title */
|
|
57
|
+
title: string;
|
|
58
|
+
};
|
|
58
59
|
};
|
|
59
|
-
export function buildBlankNodesQuery(
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
export function buildBlankNodesQuery(
|
|
61
|
+
blankNodes: any,
|
|
62
|
+
baseQuery: any,
|
|
63
|
+
ontologies: any
|
|
64
|
+
):
|
|
65
|
+
| {
|
|
66
|
+
construct: import('@rdfjs/types').Quad[] | null;
|
|
67
|
+
where: {
|
|
62
68
|
type: string;
|
|
63
69
|
patterns: any[];
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
| {
|
|
73
|
+
construct: string;
|
|
74
|
+
where: string;
|
|
64
75
|
};
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
76
|
+
export function buildSparqlQuery({
|
|
77
|
+
containers,
|
|
78
|
+
params,
|
|
79
|
+
dataModel,
|
|
80
|
+
ontologies
|
|
81
|
+
}: {
|
|
82
|
+
containers: any;
|
|
83
|
+
params: any;
|
|
84
|
+
dataModel: any;
|
|
85
|
+
ontologies: any;
|
|
86
|
+
}): string;
|
|
75
87
|
export function dataProvider(config: any): {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
getList: (...arg: any[]) => Promise<any>;
|
|
89
|
+
getMany: (...arg: any[]) => Promise<any>;
|
|
90
|
+
getManyReference: (...arg: any[]) => Promise<any>;
|
|
91
|
+
getOne: (...arg: any[]) => Promise<any>;
|
|
92
|
+
create: (...arg: any[]) => Promise<any>;
|
|
93
|
+
update: (...arg: any[]) => Promise<any>;
|
|
94
|
+
updateMany: () => never;
|
|
95
|
+
delete: (...arg: any[]) => Promise<any>;
|
|
96
|
+
deleteMany: (...arg: any[]) => Promise<any>;
|
|
97
|
+
patch: (...arg: any[]) => Promise<any>;
|
|
98
|
+
getDataModels: (...arg: any[]) => Promise<any>;
|
|
99
|
+
getDataServers: (...arg: any[]) => Promise<any>;
|
|
100
|
+
getLocalDataServers: () => any;
|
|
101
|
+
fetch: (...arg: any[]) => Promise<any>;
|
|
102
|
+
refreshConfig: () => Promise<any>;
|
|
90
103
|
};
|
|
91
104
|
export function useGetExternalLink(componentExternalLinks: any): (record: any) => any;
|
|
92
105
|
export const useDataModel: (resourceId: string) => any;
|
|
@@ -110,21 +123,64 @@ export const useCreateContainerUri: () => (resourceId: string) => string | undef
|
|
|
110
123
|
* </FilterHandler>
|
|
111
124
|
* </Show>
|
|
112
125
|
*/
|
|
113
|
-
export function FilterHandler({
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
export function FilterHandler({
|
|
127
|
+
children,
|
|
128
|
+
record,
|
|
129
|
+
filter,
|
|
130
|
+
source,
|
|
131
|
+
...otherProps
|
|
132
|
+
}: {
|
|
133
|
+
[x: string]: any;
|
|
134
|
+
children: any;
|
|
135
|
+
record: any;
|
|
136
|
+
filter: any;
|
|
137
|
+
source: any;
|
|
138
|
+
}): import('react/jsx-runtime').JSX.Element;
|
|
139
|
+
export function GroupedReferenceHandler({
|
|
140
|
+
children,
|
|
141
|
+
groupReference,
|
|
142
|
+
groupLabel,
|
|
143
|
+
groupHeader,
|
|
144
|
+
filterProperty,
|
|
145
|
+
...otherProps
|
|
146
|
+
}: {
|
|
147
|
+
[x: string]: any;
|
|
148
|
+
children: any;
|
|
149
|
+
groupReference: any;
|
|
150
|
+
groupLabel: any;
|
|
151
|
+
groupHeader: any;
|
|
152
|
+
filterProperty: any;
|
|
153
|
+
}): import('react/jsx-runtime').JSX.Element;
|
|
154
|
+
export function ReificationArrayInput(props: any): import('react/jsx-runtime').JSX.Element;
|
|
155
|
+
type fetchFn = typeof fetchUtils.fetchJson;
|
|
156
|
+
interface CreateSolidChannelOptions {
|
|
157
|
+
type: string;
|
|
158
|
+
closeAfter?: number;
|
|
159
|
+
startIn?: number;
|
|
160
|
+
startAt?: string;
|
|
161
|
+
endAt?: string;
|
|
162
|
+
rate?: number;
|
|
163
|
+
}
|
|
164
|
+
export const createSolidNotificationChannel: (
|
|
165
|
+
fetch: fetchFn,
|
|
166
|
+
resourceUri: string,
|
|
167
|
+
options?: CreateSolidChannelOptions
|
|
168
|
+
) => Promise<any>;
|
|
169
|
+
export const createWsChannel: (
|
|
170
|
+
fetch: fetchFn,
|
|
171
|
+
resourceUri: string,
|
|
172
|
+
options: CreateSolidChannelOptions
|
|
173
|
+
) => Promise<WebSocket>;
|
|
174
|
+
/**
|
|
175
|
+
* @param fetch A react admin fetch function.
|
|
176
|
+
* @param resourceUri The resource to subscribe to
|
|
177
|
+
* @param options Options to pass to @see createSolidNotificationChannel, if the channel does not exist yet.
|
|
178
|
+
* @returns {WebSocket} A new or existing web socket that subscribed to the given resource.
|
|
179
|
+
*/
|
|
180
|
+
export const getOrCreateWsChannel: (
|
|
181
|
+
fetch: fetchFn,
|
|
182
|
+
resourceUri: string,
|
|
183
|
+
options?: CreateSolidChannelOptions
|
|
184
|
+
) => Promise<WebSocket>;
|
|
129
185
|
|
|
130
186
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"
|
|
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"],"names":[],"version":3,"file":"index.d.ts.map"}
|
package/dist/index.es.js
CHANGED
|
@@ -344,7 +344,7 @@ const $aba124ea15ea8bc6$var$fetchContainers = async (containers, params, { httpC
|
|
|
344
344
|
const results = await Promise.all(fetchPromises);
|
|
345
345
|
let resources = results.flat();
|
|
346
346
|
resources = resources.map((resource)=>{
|
|
347
|
-
resource.id
|
|
347
|
+
resource.id = resource.id || resource["@id"];
|
|
348
348
|
return resource;
|
|
349
349
|
});
|
|
350
350
|
// Apply filter to results
|
|
@@ -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,97 @@ 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
|
+
|
|
1546
1676
|
|
|
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};
|
|
1677
|
+
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
1678
|
//# sourceMappingURL=index.es.js.map
|