@fluid-topics/public-api 1.0.27 → 1.0.29
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/cjs/index.js +129 -46
- package/dist/cjs/types/ft-common/public.js +29 -2
- package/dist/cjs/types/ft-server/public.js +11 -3
- package/dist/fluidtopics.min.js +1 -1
- package/dist/mjs/index.d.ts +79 -5
- package/dist/mjs/index.js +144 -58
- package/dist/mjs/types/ft-common/public.d.ts +26 -3
- package/dist/mjs/types/ft-common/public.js +27 -1
- package/dist/mjs/types/ft-server/public.d.ts +9 -2
- package/dist/mjs/types/ft-server/public.js +9 -2
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -54,12 +54,83 @@ function getBody(response) {
|
|
|
54
54
|
}
|
|
55
55
|
class FluidTopicsApi {
|
|
56
56
|
constructor(tenantBaseUrl, integrationIdentifier, overrideIdentifierIfOnTenant) {
|
|
57
|
-
var _a, _b, _c, _d, _e;
|
|
58
|
-
this.
|
|
57
|
+
var _a, _b, _c, _d, _e, _f;
|
|
58
|
+
this.endpoints = {
|
|
59
|
+
authentication: {
|
|
60
|
+
login: `api/authentication/login`,
|
|
61
|
+
logout: `api/authentication/logout`,
|
|
62
|
+
currentSession: `api/authentication/current-session`,
|
|
63
|
+
},
|
|
64
|
+
khub: {
|
|
65
|
+
maps: {
|
|
66
|
+
mapId: (mapId) => ({
|
|
67
|
+
info: `api/khub/maps/${mapId}`,
|
|
68
|
+
toc: `api/khub/maps/${mapId}/toc`,
|
|
69
|
+
pages: `api/khub/maps/${mapId}/pages`,
|
|
70
|
+
feedback: `api/khub/maps/${mapId}/feedback`,
|
|
71
|
+
rating: `api/khub/maps/${mapId}/rating`,
|
|
72
|
+
attachments: {
|
|
73
|
+
list: `api/khub/maps/${mapId}/attachments`,
|
|
74
|
+
attachmentId: (attachmentId) => ({
|
|
75
|
+
content: `api/khub/maps/${mapId}/attachments/${attachmentId}/content`,
|
|
76
|
+
})
|
|
77
|
+
},
|
|
78
|
+
resources: {
|
|
79
|
+
list: `api/khub/maps/${mapId}/resources`,
|
|
80
|
+
resourceId: (resourceId) => ({
|
|
81
|
+
content: `api/khub/maps/${mapId}/resources/${resourceId}/content`,
|
|
82
|
+
})
|
|
83
|
+
},
|
|
84
|
+
topics: {
|
|
85
|
+
contentId: (contentId) => ({
|
|
86
|
+
info: `api/khub/maps/${mapId}/topics/${contentId}`,
|
|
87
|
+
content: `api/khub/maps/${mapId}/topics/${contentId}/content`,
|
|
88
|
+
}),
|
|
89
|
+
tocId: (tocId) => ({
|
|
90
|
+
feedback: `api/khub/maps/${mapId}/topics/${tocId}/feedback`,
|
|
91
|
+
rating: `api/khub/maps/${mapId}/topics/${tocId}/rating`,
|
|
92
|
+
})
|
|
93
|
+
},
|
|
94
|
+
})
|
|
95
|
+
},
|
|
96
|
+
documents: {
|
|
97
|
+
documentId: (documentId) => ({
|
|
98
|
+
info: `api/khub/documents/${documentId}`,
|
|
99
|
+
content: `api/khub/documents/${documentId}/content`,
|
|
100
|
+
text: `api/khub/documents/${documentId}/content/text`,
|
|
101
|
+
feedback: `api/khub/documents/${documentId}/feedback`,
|
|
102
|
+
rating: `api/khub/documents/${documentId}/rating`,
|
|
103
|
+
})
|
|
104
|
+
},
|
|
105
|
+
suggest: `api/khub/suggest`,
|
|
106
|
+
clusteredSearch: `api/khub/clustered-search`,
|
|
107
|
+
locales: `api/khub/locales`,
|
|
108
|
+
},
|
|
109
|
+
users: {
|
|
110
|
+
userId: (userId) => ({
|
|
111
|
+
collections: {
|
|
112
|
+
collectionId: (collectionId) => ({
|
|
113
|
+
documents: `api/users/${userId}/collections/${collectionId}/documents`,
|
|
114
|
+
})
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
},
|
|
118
|
+
stylesheets: {
|
|
119
|
+
fonts: `api/stylesheets/fonts.css`,
|
|
120
|
+
theme: `api/stylesheets/theme.css`,
|
|
121
|
+
content: {
|
|
122
|
+
title: `api/stylesheets/content/title.css`,
|
|
123
|
+
topic: `api/stylesheets/content/topic.css`,
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
configuration: {
|
|
127
|
+
reader: `api/configuration/reader`
|
|
128
|
+
},
|
|
129
|
+
};
|
|
59
130
|
//@ts-ignore
|
|
60
|
-
tenantBaseUrl = (_c = (_a = tenantBaseUrl !== null && tenantBaseUrl !== void 0 ? tenantBaseUrl : wnd.__gwt_ft_moduleBase) !== null && _a !== void 0 ? _a : (_b = wnd.fluidtopicsclient) === null || _b === void 0 ? void 0 : _b.__moduleBase) !== null && _c !== void 0 ? _c : (_e = (_d = wnd.__gwt_activeModules) === null || _d === void 0 ? void 0 : _d.fluidtopicsclient) === null || _e === void 0 ? void 0 : _e.moduleBase;
|
|
61
|
-
this.tenantBaseUrl = tenantBaseUrl.
|
|
62
|
-
if (overrideIdentifierIfOnTenant && typeof wnd.location !== "undefined" && wnd.location.href.startsWith(this.tenantBaseUrl
|
|
131
|
+
tenantBaseUrl = ((_f = (_c = (_a = tenantBaseUrl !== null && tenantBaseUrl !== void 0 ? tenantBaseUrl : wnd.__gwt_ft_moduleBase) !== null && _a !== void 0 ? _a : (_b = wnd.fluidtopicsclient) === null || _b === void 0 ? void 0 : _b.__moduleBase) !== null && _c !== void 0 ? _c : (_e = (_d = wnd.__gwt_activeModules) === null || _d === void 0 ? void 0 : _d.fluidtopicsclient) === null || _e === void 0 ? void 0 : _e.moduleBase) !== null && _f !== void 0 ? _f : "").trim();
|
|
132
|
+
this.tenantBaseUrl = tenantBaseUrl.endsWith("/") ? tenantBaseUrl : tenantBaseUrl + "/";
|
|
133
|
+
if (overrideIdentifierIfOnTenant && typeof wnd.location !== "undefined" && wnd.location.href.startsWith(this.tenantBaseUrl)) {
|
|
63
134
|
this.ftCallingApp = integrationIdentifier;
|
|
64
135
|
}
|
|
65
136
|
else {
|
|
@@ -90,99 +161,104 @@ class FluidTopicsApi {
|
|
|
90
161
|
password: password,
|
|
91
162
|
rememberMe: true
|
|
92
163
|
};
|
|
93
|
-
return this.post(
|
|
164
|
+
return this.post(this.endpoints.authentication.login, credentials)
|
|
94
165
|
.then(result => {
|
|
95
166
|
this.setCredentials(login, password);
|
|
96
167
|
return result;
|
|
97
168
|
});
|
|
98
169
|
}
|
|
99
170
|
logout() {
|
|
100
|
-
return this.post(
|
|
171
|
+
return this.post(this.endpoints.authentication.logout)
|
|
101
172
|
.then(() => this.clearAuthentication());
|
|
102
173
|
}
|
|
103
174
|
getCurrentSession() {
|
|
104
|
-
return this.get(
|
|
175
|
+
return this.get(this.endpoints.authentication.currentSession);
|
|
176
|
+
}
|
|
177
|
+
getReaderConfiguration() {
|
|
178
|
+
return this.get(this.endpoints.configuration.reader);
|
|
105
179
|
}
|
|
106
180
|
getMap(mapId) {
|
|
107
|
-
return this.get(
|
|
181
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).info);
|
|
108
182
|
}
|
|
109
183
|
getTableOfContent(mapId) {
|
|
110
|
-
return this.get(
|
|
184
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).toc);
|
|
111
185
|
}
|
|
112
186
|
getPages(mapId) {
|
|
113
|
-
return this.get(
|
|
187
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).pages);
|
|
114
188
|
}
|
|
115
189
|
getTopic(mapId, topicContentId) {
|
|
116
|
-
return this.get(
|
|
190
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).topics.contentId(topicContentId).info);
|
|
117
191
|
}
|
|
118
192
|
getTopicHTMLContent(mapId, topicContentId, target) {
|
|
119
|
-
return this.get(
|
|
193
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).topics.contentId(topicContentId).content + (target ? "?target=" + target : ""));
|
|
120
194
|
}
|
|
121
195
|
getMapAttachments(mapId) {
|
|
122
|
-
return this.get(
|
|
196
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).attachments.list);
|
|
123
197
|
}
|
|
124
198
|
getMapAttachmentContent(mapId, attachmentId) {
|
|
125
|
-
return this.fetchRawData(
|
|
199
|
+
return this.fetchRawData(this.endpoints.khub.maps.mapId(mapId).attachments.attachmentId(attachmentId).content);
|
|
126
200
|
}
|
|
127
201
|
getMapResources(mapId) {
|
|
128
|
-
return this.get(
|
|
202
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).resources.list);
|
|
129
203
|
}
|
|
130
204
|
getMapResourceContent(mapId, resourceId) {
|
|
131
|
-
return this.fetchRawData(
|
|
205
|
+
return this.fetchRawData(this.endpoints.khub.maps.mapId(mapId).resources.resourceId(resourceId).content);
|
|
132
206
|
}
|
|
133
207
|
getUnstructuredDocument(documentId) {
|
|
134
|
-
return this.get(
|
|
208
|
+
return this.get(this.endpoints.khub.documents.documentId(documentId).info);
|
|
135
209
|
}
|
|
136
210
|
getUnstructuredDocumentContent(documentId) {
|
|
137
|
-
return this.fetchRawData(
|
|
211
|
+
return this.fetchRawData(this.endpoints.khub.documents.documentId(documentId).content);
|
|
138
212
|
}
|
|
139
213
|
getUnstructuredDocumentTextContent(documentId) {
|
|
140
|
-
return this.get(
|
|
214
|
+
return this.get(this.endpoints.khub.documents.documentId(documentId).text);
|
|
141
215
|
}
|
|
142
216
|
getCollectionDocuments(userId, collectionId) {
|
|
143
|
-
return this.get(
|
|
217
|
+
return this.get(this.endpoints.users.userId(userId).collections.collectionId(collectionId).documents);
|
|
144
218
|
}
|
|
145
219
|
getSuggestions(request) {
|
|
146
|
-
return this.post(
|
|
220
|
+
return this.post(this.endpoints.khub.suggest, request);
|
|
147
221
|
}
|
|
148
222
|
search(request) {
|
|
149
|
-
return this.post(
|
|
223
|
+
return this.post(this.endpoints.khub.clusteredSearch, request);
|
|
150
224
|
}
|
|
151
225
|
getAvailableSearchLocales() {
|
|
152
|
-
return this.get(
|
|
226
|
+
return this.get(this.endpoints.khub.locales);
|
|
153
227
|
}
|
|
154
228
|
getMapRating(mapId) {
|
|
155
|
-
return this.get(
|
|
156
|
-
}
|
|
157
|
-
getDocumentRating(docId) {
|
|
158
|
-
return this.get(`/api/khub/documents/${docId}/rating`);
|
|
229
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).rating);
|
|
159
230
|
}
|
|
160
231
|
rateMap(mapId, type, value) {
|
|
161
|
-
return this.post(
|
|
232
|
+
return this.post(this.endpoints.khub.maps.mapId(mapId).rating, { type, value });
|
|
162
233
|
}
|
|
163
234
|
unrateMap(mapId) {
|
|
164
|
-
return this.delete(
|
|
235
|
+
return this.delete(this.endpoints.khub.maps.mapId(mapId).rating);
|
|
165
236
|
}
|
|
166
237
|
sendMapFeedback(mapId, message) {
|
|
167
|
-
return this.post(
|
|
238
|
+
return this.post(this.endpoints.khub.maps.mapId(mapId).feedback, { message });
|
|
168
239
|
}
|
|
169
240
|
rateTopic(mapId, tocId, type, value) {
|
|
170
|
-
return this.post(
|
|
241
|
+
return this.post(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).rating, {
|
|
242
|
+
type, value
|
|
243
|
+
});
|
|
171
244
|
}
|
|
172
245
|
unrateTopic(mapId, tocId) {
|
|
173
|
-
return this.delete(
|
|
246
|
+
return this.delete(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).rating);
|
|
174
247
|
}
|
|
175
248
|
sendTopicFeedback(mapId, tocId, message) {
|
|
176
|
-
return this.post(
|
|
249
|
+
return this.post(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).feedback, { message });
|
|
250
|
+
}
|
|
251
|
+
getDocumentRating(docId) {
|
|
252
|
+
return this.get(this.endpoints.khub.documents.documentId(docId).rating);
|
|
177
253
|
}
|
|
178
254
|
rateDocument(docId, type, value) {
|
|
179
|
-
return this.post(
|
|
255
|
+
return this.post(this.endpoints.khub.documents.documentId(docId).rating, { type, value });
|
|
180
256
|
}
|
|
181
257
|
unrateDocument(docId) {
|
|
182
|
-
return this.delete(
|
|
258
|
+
return this.delete(this.endpoints.khub.documents.documentId(docId).rating);
|
|
183
259
|
}
|
|
184
260
|
sendDocumentFeedback(docId, message) {
|
|
185
|
-
return this.post(
|
|
261
|
+
return this.post(this.endpoints.khub.documents.documentId(docId).feedback, { message });
|
|
186
262
|
}
|
|
187
263
|
get(endpoint) {
|
|
188
264
|
return this.makeRequest("GET", endpoint);
|
|
@@ -196,18 +272,18 @@ class FluidTopicsApi {
|
|
|
196
272
|
delete(endpoint) {
|
|
197
273
|
return this.makeRequest("DELETE", endpoint);
|
|
198
274
|
}
|
|
275
|
+
makeAbsolute(endpoint) {
|
|
276
|
+
return this.tenantBaseUrl + endpoint.replace(/^\//, "");
|
|
277
|
+
}
|
|
199
278
|
fetch(endpoint, init) {
|
|
200
279
|
var _a;
|
|
201
280
|
return __awaiter(this, void 0, void 0, function* () {
|
|
202
281
|
const requestInit = init;
|
|
203
|
-
|
|
204
|
-
endpoint = "/" + endpoint;
|
|
205
|
-
}
|
|
206
|
-
return yield fetch(this.tenantBaseUrl + endpoint, Object.assign(Object.assign({}, (requestInit !== null && requestInit !== void 0 ? requestInit : {})), { headers: Object.assign(Object.assign({}, this.defaultHeaders), ((_a = requestInit === null || requestInit === void 0 ? void 0 : requestInit.headers) !== null && _a !== void 0 ? _a : {})) }));
|
|
282
|
+
return yield fetch(this.makeAbsolute(endpoint), Object.assign(Object.assign({}, (requestInit !== null && requestInit !== void 0 ? requestInit : {})), { headers: Object.assign(Object.assign({}, this.defaultHeaders), ((_a = requestInit === null || requestInit === void 0 ? void 0 : requestInit.headers) !== null && _a !== void 0 ? _a : {})) }));
|
|
207
283
|
});
|
|
208
284
|
}
|
|
209
285
|
upload(method, endpoint, body, onProgress = () => undefined) {
|
|
210
|
-
|
|
286
|
+
if (typeof XMLHttpRequest !== "undefined") {
|
|
211
287
|
return new Promise((resolve, reject) => {
|
|
212
288
|
let xhr = new XMLHttpRequest();
|
|
213
289
|
xhr.onload = () => {
|
|
@@ -220,22 +296,29 @@ class FluidTopicsApi {
|
|
|
220
296
|
}
|
|
221
297
|
};
|
|
222
298
|
xhr.upload.onprogress = (e) => onProgress(e);
|
|
223
|
-
xhr.open(method, this.
|
|
299
|
+
xhr.open(method, this.makeAbsolute(endpoint), true);
|
|
224
300
|
xhr.send(body);
|
|
225
301
|
});
|
|
226
|
-
}
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
return this.fetch(endpoint, { method, body }).then(handleError).then(getBody);
|
|
305
|
+
}
|
|
227
306
|
}
|
|
228
307
|
makeRequest(method, endpoint, data) {
|
|
229
308
|
return this.fetch(endpoint, {
|
|
230
309
|
method: method,
|
|
231
310
|
headers: Object.assign({}, (data != null ? { "Content-Type": "application/json" } : {})),
|
|
232
|
-
body: data != null ? JSON.stringify(data) : undefined
|
|
311
|
+
body: data != null ? JSON.stringify(data) : undefined,
|
|
312
|
+
credentials: this.authorization == null ? "include" : undefined
|
|
233
313
|
})
|
|
234
314
|
.then(handleError)
|
|
235
315
|
.then(getBody);
|
|
236
316
|
}
|
|
237
317
|
fetchRawData(endpoint) {
|
|
238
|
-
return fetch(this.
|
|
318
|
+
return fetch(this.makeAbsolute(endpoint), {
|
|
319
|
+
headers: this.defaultHeaders,
|
|
320
|
+
credentials: this.authorization == null ? "include" : undefined
|
|
321
|
+
})
|
|
239
322
|
.then(handleError)
|
|
240
323
|
.then(response => response.arrayBuffer());
|
|
241
324
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isFtTopicResource = exports.isFtSpellcheck = exports.isFtSearchSortCriterion = exports.isFtSearchFacetEntry = exports.isFtSearchFacetConf = exports.isFtSearchFacet = exports.isFtSearchResultType = exports.FtSearchResultType = exports.isFtSearchResultTopic = exports.isFtSearchResultMap = exports.isFtSearchResultUnstructuredDocument = exports.isFtSearchResultClusterEntry = exports.isFtSearchResultCluster = exports.isFtSearchRequest = exports.isFtSearchPrior = exports.isFtSearchResults = exports.isFtCollectionDocumentType = exports.FtCollectionDocumentType = exports.isFtPageRequest = exports.isFtOpenMode = exports.FtOpenMode = exports.isFtEditorialType = exports.FtEditorialType = exports.isFtSearchResultsPageInfo = exports.isFtSearchPreset = exports.isFtSearchFilter = exports.isFtSearchPreferencesConfiguration = exports.isFtMetadataPreferenceConfiguration = exports.isFtMapResource = exports.isFtTopicsRatingSummary = exports.isFtTopicRating = exports.isFtRatingSummary = exports.isFtRatingCreation = exports.isFtPublicationRatingSummary = exports.isFtPublicationRating = exports.isFtRatingType = exports.FtRatingType = exports.isFtMetadata = exports.isFtSearchLocales = exports.isFtSearchLocale = exports.isFtFeedbackCreation = exports.isFtTopicContentTarget = exports.FtTopicContentTarget = exports.isFtUnstructuredDocument = exports.isFtTopic = exports.isFtTocNode = exports.isFtMapStyles = exports.isFtMap = exports.isFtCollectionDocument = exports.isFtCredentials = void 0;
|
|
4
|
-
exports.isFtAuthenticationIdentifier = exports.isFtSuggestResults = exports.isFtSuggestResult = exports.isFtSuggestRequest = void 0;
|
|
4
|
+
exports.isFtAuthenticationIdentifier = exports.isFtUserRole = exports.FtUserRole = exports.isFtSuggestResults = exports.isFtSuggestResult = exports.isFtSuggestRequest = void 0;
|
|
5
5
|
const isObject = (o) => typeof o === "object" && o != null;
|
|
6
6
|
const isBoolean = (o) => typeof o === "boolean";
|
|
7
7
|
const isNumber = (o) => typeof o === "number";
|
|
@@ -36,7 +36,6 @@ const isFtMap = (o) => {
|
|
|
36
36
|
&& ((0, exports.isFtEditorialType)(o.editorialType))
|
|
37
37
|
&& (isString(o.baseId))
|
|
38
38
|
&& (isString(o.clusterId))
|
|
39
|
-
&& (o.shouldSplitCurrentPageToc == null || isBoolean(o.shouldSplitCurrentPageToc))
|
|
40
39
|
&& (isString(o.title))
|
|
41
40
|
&& (isString(o.lastPublication))
|
|
42
41
|
&& (isString(o.lastEdition))
|
|
@@ -61,6 +60,7 @@ exports.isFtMapStyles = isFtMapStyles;
|
|
|
61
60
|
const isFtTocNode = (o) => {
|
|
62
61
|
return isObject(o)
|
|
63
62
|
&& (o.prettyUrl == null || isString(o.prettyUrl))
|
|
63
|
+
&& (o.hasRating == null || isBoolean(o.hasRating))
|
|
64
64
|
&& (isString(o.tocId))
|
|
65
65
|
&& ((Array.isArray(o.children)
|
|
66
66
|
&& o.children.every((v) => (0, exports.isFtTocNode)(v))))
|
|
@@ -474,6 +474,33 @@ const isFtSuggestResults = (o) => {
|
|
|
474
474
|
&& o.suggestions.every((v) => (0, exports.isFtSuggestResult)(v))));
|
|
475
475
|
};
|
|
476
476
|
exports.isFtSuggestResults = isFtSuggestResults;
|
|
477
|
+
// From: Role
|
|
478
|
+
var FtUserRole;
|
|
479
|
+
(function (FtUserRole) {
|
|
480
|
+
FtUserRole["PERSONAL_BOOK_USER"] = "PERSONAL_BOOK_USER";
|
|
481
|
+
FtUserRole["PERSONAL_BOOK_SHARE_USER"] = "PERSONAL_BOOK_SHARE_USER";
|
|
482
|
+
FtUserRole["HTML_EXPORT_USER"] = "HTML_EXPORT_USER";
|
|
483
|
+
FtUserRole["PDF_EXPORT_USER"] = "PDF_EXPORT_USER";
|
|
484
|
+
FtUserRole["SAVED_SEARCH_USER"] = "SAVED_SEARCH_USER";
|
|
485
|
+
FtUserRole["COLLECTION_USER"] = "COLLECTION_USER";
|
|
486
|
+
FtUserRole["OFFLINE_USER"] = "OFFLINE_USER";
|
|
487
|
+
FtUserRole["ANALYTICS_USER"] = "ANALYTICS_USER";
|
|
488
|
+
FtUserRole["BETA_USER"] = "BETA_USER";
|
|
489
|
+
FtUserRole["DEBUG_USER"] = "DEBUG_USER";
|
|
490
|
+
FtUserRole["PRINT_USER"] = "PRINT_USER";
|
|
491
|
+
FtUserRole["RATING_USER"] = "RATING_USER";
|
|
492
|
+
FtUserRole["FEEDBACK_USER"] = "FEEDBACK_USER";
|
|
493
|
+
FtUserRole["CONTENT_PUBLISHER"] = "CONTENT_PUBLISHER";
|
|
494
|
+
FtUserRole["KHUB_ADMIN"] = "KHUB_ADMIN";
|
|
495
|
+
FtUserRole["USERS_ADMIN"] = "USERS_ADMIN";
|
|
496
|
+
FtUserRole["PORTAL_ADMIN"] = "PORTAL_ADMIN";
|
|
497
|
+
FtUserRole["ADMIN"] = "ADMIN";
|
|
498
|
+
FtUserRole["DEVELOPER"] = "DEVELOPER";
|
|
499
|
+
})(FtUserRole = exports.FtUserRole || (exports.FtUserRole = {}));
|
|
500
|
+
const isFtUserRole = (o) => {
|
|
501
|
+
return ["PERSONAL_BOOK_USER", "PERSONAL_BOOK_SHARE_USER", "HTML_EXPORT_USER", "PDF_EXPORT_USER", "SAVED_SEARCH_USER", "COLLECTION_USER", "OFFLINE_USER", "ANALYTICS_USER", "BETA_USER", "DEBUG_USER", "PRINT_USER", "RATING_USER", "FEEDBACK_USER", "CONTENT_PUBLISHER", "KHUB_ADMIN", "USERS_ADMIN", "PORTAL_ADMIN", "ADMIN", "DEVELOPER"].includes(o);
|
|
502
|
+
};
|
|
503
|
+
exports.isFtUserRole = isFtUserRole;
|
|
477
504
|
const isFtAuthenticationIdentifier = (o) => {
|
|
478
505
|
return isObject(o)
|
|
479
506
|
&& (isString(o.identifier))
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isFtPaginationConfiguration = exports.isFtPaginatedTocNode = exports.isFtPaginatedToc = exports.isFtPageConfiguration = exports.isFtMapAttachment = exports.isFtUserProfile = exports.isFtSession = exports.isFtAuthenticatedSession = void 0;
|
|
3
|
+
exports.isFtPaginationConfiguration = exports.isFtPaginatedTocNode = exports.isFtPaginatedToc = exports.isFtPageConfiguration = exports.isFtMapAttachment = exports.isFtUserProfile = exports.isFtSession = exports.isFtAuthenticatedSession = exports.isFtReaderConfiguration = void 0;
|
|
4
4
|
const isObject = (o) => typeof o === "object" && o != null;
|
|
5
5
|
const isBoolean = (o) => typeof o === "boolean";
|
|
6
6
|
const isNumber = (o) => typeof o === "number";
|
|
7
7
|
const isString = (o) => typeof o === "string";
|
|
8
|
+
const isFtReaderConfiguration = (o) => {
|
|
9
|
+
return isObject(o)
|
|
10
|
+
&& (isNumber(o.loadAfterLastVisibleTopic))
|
|
11
|
+
&& (isBoolean(o.feedbackMailsSentByFluidTopics))
|
|
12
|
+
&& (isNumber(o.loadBeforeFirstVisibleTopic));
|
|
13
|
+
};
|
|
14
|
+
exports.isFtReaderConfiguration = isFtReaderConfiguration;
|
|
8
15
|
const isFtAuthenticatedSession = (o) => {
|
|
9
16
|
return isObject(o)
|
|
10
17
|
&& ((0, exports.isFtUserProfile)(o.profile));
|
|
@@ -13,7 +20,7 @@ exports.isFtAuthenticatedSession = isFtAuthenticatedSession;
|
|
|
13
20
|
const isFtSession = (o) => {
|
|
14
21
|
return isObject(o)
|
|
15
22
|
&& (isNumber(o.idleTimeoutInMillis))
|
|
16
|
-
&& (
|
|
23
|
+
&& ((0, exports.isFtUserProfile)(o.profile))
|
|
17
24
|
&& (isBoolean(o.sessionAuthenticated));
|
|
18
25
|
};
|
|
19
26
|
exports.isFtSession = isFtSession;
|
|
@@ -22,7 +29,7 @@ const isFtUserProfile = (o) => {
|
|
|
22
29
|
&& (o.emailAddress == null || isString(o.emailAddress))
|
|
23
30
|
&& (o.displayName == null || isString(o.displayName))
|
|
24
31
|
&& ((Array.isArray(o.roles)))
|
|
25
|
-
&& (isString(o.userId));
|
|
32
|
+
&& (o.userId == null || isString(o.userId));
|
|
26
33
|
};
|
|
27
34
|
exports.isFtUserProfile = isFtUserProfile;
|
|
28
35
|
const isFtMapAttachment = (o) => {
|
|
@@ -53,6 +60,7 @@ exports.isFtPaginatedToc = isFtPaginatedToc;
|
|
|
53
60
|
const isFtPaginatedTocNode = (o) => {
|
|
54
61
|
return isObject(o)
|
|
55
62
|
&& (o.prettyUrl == null || isString(o.prettyUrl))
|
|
63
|
+
&& (o.hasRating == null || isBoolean(o.hasRating))
|
|
56
64
|
&& (o.pageToc == null || (Array.isArray(o.pageToc)))
|
|
57
65
|
&& (o.tocId == null || isString(o.tocId))
|
|
58
66
|
&& ((Array.isArray(o.children)
|
package/dist/fluidtopics.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).fluidtopics={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},r={exports:{}},a={exports:{}};!function(e,t){var r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r)return r;throw new Error("unable to locate global object")}();e.exports=t=r.fetch,r.fetch&&(t.default=r.fetch.bind(r)),t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response}(a,a.exports),function(e,t){const r=a.exports,i=r.default||r,n=function(e,t){return/^\/\//.test(e)&&(e="https:"+e),i.call(this,e,t)};n.ponyfill=!0,e.exports=t=n,t.fetch=n,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,t.default=n}(r,r.exports);const i=r.exports,n=i.fetch.bind({});n.polyfill=!0,t.fetch||(t.fetch=n,t.Response=i.Response,t.Headers=i.Headers,t.Request=i.Request);const s=e=>"object"==typeof e&&null!=e,l=e=>"boolean"==typeof e,o=e=>"number"==typeof e,u=e=>"string"==typeof e,c=e=>s(e)&&u(e.topicStylesheetUrl)&&u(e.titleStylesheetUrl)&&Array.isArray(e.customCssClasses)&&e.customCssClasses.every((e=>u(e))),p=e=>s(e)&&(null==e.prettyUrl||u(e.prettyUrl))&&u(e.tocId)&&Array.isArray(e.children)&&e.children.every((e=>p(e)))&&u(e.contentId)&&u(e.title);var d;e.FtTopicContentTarget=void 0,(d=e.FtTopicContentTarget||(e.FtTopicContentTarget={})).THIRD_PARTY="THIRD_PARTY",d.OFF_THE_GRID="OFF_THE_GRID",d.CONTENT_PACKAGER="CONTENT_PACKAGER",d.PAGES="PAGES",d.DESIGNED_READER="DESIGNED_READER";const h=e=>s(e)&&o(e.count)&&u(e.label)&&(null==e.lang||u(e.lang)),y=e=>s(e)&&Array.isArray(e.values)&&e.values.every((e=>u(e)))&&(null==e.hierarchicalValues||Array.isArray(e.hierarchicalValues)&&e.hierarchicalValues.every((e=>Array.isArray(e)&&e.every((e=>u(e))))))&&u(e.label)&&u(e.key);var g;e.FtRatingType=void 0,(g=e.FtRatingType||(e.FtRatingType={})).STARS="STARS",g.LIKE="LIKE",g.DICHOTOMOUS="DICHOTOMOUS",g.NO_RATING="NO_RATING";const f=e=>["STARS","LIKE","DICHOTOMOUS","NO_RATING"].includes(e),m=e=>s(e)&&u(e.date)&&f(e.type)&&o(e.value),A=e=>s(e)&&(null==e.rating||m(e.rating))&&f(e.type),T=e=>s(e)&&u(e.date)&&u(e.tocId)&&f(e.type)&&o(e.value),b=e=>s(e)&&Array.isArray(e.ratings)&&e.ratings.every((e=>T(e)))&&f(e.type),F=e=>s(e)&&Array.isArray(e.filter)&&e.filter.every((e=>u(e)))&&Array.isArray(e.prior)&&e.prior.every((e=>u(e))),R=e=>s(e)&&l(e.negative)&&Array.isArray(e.values)&&e.values.every((e=>u(e)))&&u(e.key),S=e=>s(e)&&o(e.totalResultsCount)&&l(e.lastPage)&&o(e.currentPage)&&o(e.totalClustersCount);var v;e.FtEditorialType=void 0,(v=e.FtEditorialType||(e.FtEditorialType={})).ARTICLE="ARTICLE",v.BOOK="BOOK";const C=e=>["ARTICLE","BOOK"].includes(e);var E;e.FtOpenMode=void 0,(E=e.FtOpenMode||(e.FtOpenMode={})).FLUIDTOPICS="FLUIDTOPICS",E.EXTERNAL="EXTERNAL";const U=e=>["FLUIDTOPICS","EXTERNAL"].includes(e),O=e=>s(e)&&(null==e.perPage||o(e.perPage))&&o(e.page);var P;e.FtCollectionDocumentType=void 0,(P=e.FtCollectionDocumentType||(e.FtCollectionDocumentType={})).MAP="MAP",P.DOCUMENT="DOCUMENT",P.TOPIC="TOPIC",P.PERSONAL_BOOK="PERSONAL_BOOK",P.SHARED_BOOK="SHARED_BOOK";const D=e=>["MAP","DOCUMENT","TOPIC","PERSONAL_BOOK","SHARED_BOOK"].includes(e),I=e=>s(e)&&o(e.weight)&&u(e.value)&&u(e.key),k=e=>s(e)&&Array.isArray(e.entries)&&e.entries.every((e=>M(e)))&&(null==e.metadataVariableAxis||u(e.metadataVariableAxis)),M=e=>s(e)&&(null==e.document||w(e.document))&&(null==e.topic||L(e.topic))&&x(e.type)&&(null==e.map||$(e.map)),w=e=>s(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&U(e.openMode)&&u(e.documentUrl)&&u(e.mimeType)&&u(e.title)&&(null==e.lastPublicationDate||u(e.lastPublicationDate))&&u(e.viewerUrl)&&u(e.contentUrl)&&u(e.filename)&&u(e.htmlTitle)&&(null==e.originUrl||u(e.originUrl))&&u(e.documentId)&&u(e.lastEditionDate)&&u(e.htmlExcerpt),$=e=>s(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&(null==e.openMode||U(e.openMode))&&C(e.editorialType)&&u(e.title)&&(null==e.lastPublicationDate||u(e.lastPublicationDate))&&u(e.htmlTitle)&&(null==e.originUrl||u(e.originUrl))&&u(e.mapUrl)&&u(e.readerUrl)&&u(e.mapId)&&(null==e.lastEditionDate||u(e.lastEditionDate))&&u(e.htmlExcerpt),L=e=>s(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&U(e.openMode)&&u(e.contentId)&&Array.isArray(e.resources)&&e.resources.every((e=>K(e)))&&u(e.title)&&u(e.mapTitle)&&u(e.topicUrl)&&u(e.contentUrl)&&u(e.htmlTitle)&&Array.isArray(e.breadcrumb)&&e.breadcrumb.every((e=>u(e)))&&u(e.tocId)&&(null==e.originUrl||u(e.originUrl))&&u(e.readerUrl)&&u(e.mapId)&&(null==e.lastEditionDate||u(e.lastEditionDate))&&u(e.htmlExcerpt);var N;e.FtSearchResultType=void 0,(N=e.FtSearchResultType||(e.FtSearchResultType={})).MAP="MAP",N.DOCUMENT="DOCUMENT",N.TOPIC="TOPIC";const x=e=>["MAP","DOCUMENT","TOPIC"].includes(e),_=e=>s(e)&&l(e.hierarchical)&&u(e.label)&&l(e.multiSelectionable)&&u(e.key)&&Array.isArray(e.rootNodes)&&e.rootNodes.every((e=>B(e))),H=e=>s(e)&&(null==e.maxDepth||o(e.maxDepth))&&u(e.id),B=e=>s(e)&&o(e.totalResultsCount)&&l(e.descendantSelected)&&Array.isArray(e.childNodes)&&e.childNodes.every((e=>B(e)))&&u(e.label)&&u(e.value)&&l(e.selected),q=e=>s(e)&&u(e.key),G=e=>s(e)&&u(e.suggestedQuery)&&u(e.htmlSuggestedQuery),K=e=>s(e)&&u(e.filename)&&u(e.resourceUrl)&&u(e.id)&&u(e.mimeType)&&u(e.resourceContentUrl)&&u(e.viewerUrl),V=e=>s(e)&&(null==e.filenameExtension||u(e.filenameExtension))&&(null==e.editorialType||C(e.editorialType))&&(null==e.mimeType||u(e.mimeType))&&x(e.type)&&u(e.value),j=e=>"object"==typeof e&&null!=e,z=e=>"boolean"==typeof e,J=e=>"number"==typeof e,X=e=>"string"==typeof e,Y=e=>j(e)&&(null==e.emailAddress||X(e.emailAddress))&&(null==e.displayName||X(e.displayName))&&Array.isArray(e.roles)&&X(e.userId),Q=e=>j(e)&&(null==e.parentsVisibility||Array.isArray(e.parentsVisibility)&&e.parentsVisibility.every((e=>z(e))))&&z(e.isVisible),W=e=>j(e)&&(null==e.prettyUrl||X(e.prettyUrl))&&(null==e.pageToc||Array.isArray(e.pageToc))&&(null==e.tocId||X(e.tocId))&&Array.isArray(e.children)&&e.children.every((e=>W(e)))&&(null==e.pageConfiguration||Q(e.pageConfiguration))&&(null==e.contentId||X(e.contentId))&&(null==e.title||X(e.title)),Z=e=>j(e)&&z(e.splitCurrentPageToc),ee="undefined"==typeof window?globalThis:window;function te(e){let t={};for(let r in e){let a=e[r];("object"!=typeof a||Array.isArray(a))&&(a={prior:a});for(let e of["prior","filter"])a[e]=Array.isArray(a[e])?a[e]:[a[e]],a[e]=a[e].map((e=>null!=e?""+e:"")).filter((e=>""!==e));t[r]=a}return t}function re(e){return`${e}-FluidTopicsUnauthenticatedUserSearchPreferences`}const ae="undefined"==typeof window?globalThis:window;class ie extends Error{status;statusText;body;constructor(e,t,r){super(`${e} - ${t}: ${r}`),this.status=e,this.statusText=t,this.body=r}}async function ne(e){if(!e.ok)throw new ie(e.status,e.statusText,await e.text());return e}function se(e){return"application/json"===e.headers.get("Content-Type")?e.json():e.text()}class le{tenantBaseUrl;ftCallingApp;authorization={};searchLabel;get defaultHeaders(){return{...this.authorization,...this.searchLabel,"Ft-Calling-App":this.ftCallingApp}}constructor(e,t,r){e=e??ae.__gwt_ft_moduleBase??ae.fluidtopicsclient?.__moduleBase??ae.__gwt_activeModules?.fluidtopicsclient?.moduleBase,this.tenantBaseUrl=e.trim().replace(/\/$/,""),r&&void 0!==ae.location&&ae.location.href.startsWith(this.tenantBaseUrl+"/")?this.ftCallingApp=t:this.ftCallingApp=`ft-public-api/${t}`}setApiKey(e){this.authorization={Authorization:"Bearer "+e}}setCredentials(e,t){var r;this.authorization={Authorization:"Basic "+(r=`${e}:${t}`,"undefined"!=typeof Buffer?Buffer.from(r).toString("base64"):btoa(r))}}clearAuthentication(){this.authorization=void 0}setSearchLabel(e){this.searchLabel={"FT-search-label":e}}clearSearchLabel(){this.searchLabel=void 0}login(e,t){let r={login:e,password:t,rememberMe:!0};return this.post("/api/authentication/login",r).then((r=>(this.setCredentials(e,t),r)))}logout(){return this.post("/api/authentication/logout").then((()=>this.clearAuthentication()))}getCurrentSession(){return this.get("/api/authentication/current-session")}getMap(e){return this.get(`/api/khub/maps/${e}`)}getTableOfContent(e){return this.get(`/api/khub/maps/${e}/toc`)}getPages(e){return this.get(`/api/khub/maps/${e}/pages`)}getTopic(e,t){return this.get(`/api/khub/maps/${e}/topics/${t}`)}getTopicHTMLContent(e,t,r){return this.get(`/api/khub/maps/${e}/topics/${t}/content${r?"?target="+r:""}`)}getMapAttachments(e){return this.get(`/api/khub/maps/${e}/attachments`)}getMapAttachmentContent(e,t){return this.fetchRawData(`/api/khub/maps/${e}/attachments/${t}/content`)}getMapResources(e){return this.get(`/api/khub/maps/${e}/resources`)}getMapResourceContent(e,t){return this.fetchRawData(`/api/khub/maps/${e}/resources/${t}/content`)}getUnstructuredDocument(e){return this.get(`/api/khub/documents/${e}`)}getUnstructuredDocumentContent(e){return this.fetchRawData(`/api/khub/documents/${e}/content`)}getUnstructuredDocumentTextContent(e){return this.get(`/api/khub/documents/${e}/content/text`)}getCollectionDocuments(e,t){return this.get(`/api/users/${e}/collections/${t}/documents`)}getSuggestions(e){return this.post("/api/khub/suggest",e)}search(e){return this.post("/api/khub/clustered-search",e)}getAvailableSearchLocales(){return this.get("/api/khub/locales")}getMapRating(e){return this.get(`/api/khub/maps/${e}/rating`)}getDocumentRating(e){return this.get(`/api/khub/documents/${e}/rating`)}rateMap(e,t,r){return this.post(`/api/khub/maps/${e}/rating`,{type:t,value:r})}unrateMap(e){return this.delete(`/api/khub/maps/${e}/rating`)}sendMapFeedback(e,t){return this.post(`/api/khub/maps/${e}/feedback`,{message:t})}rateTopic(e,t,r,a){return this.post(`/api/khub/maps/${e}/topics/${t}/rating`,{type:r,value:a})}unrateTopic(e,t){return this.delete(`/api/khub/maps/${e}/topics/${t}/rating`)}sendTopicFeedback(e,t,r){return this.post(`/api/khub/maps/${e}/topics/${t}/feedback`,{message:r})}rateDocument(e,t,r){return this.post(`/api/khub/documents/${e}/rating`,{type:t,value:r})}unrateDocument(e){return this.delete(`/api/khub/documents/${e}/rating`)}sendDocumentFeedback(e,t){return this.post(`/api/khub/documents/${e}/feedback`,{message:t})}get(e){return this.makeRequest("GET",e)}post(e,t){return this.makeRequest("POST",e,t)}put(e,t){return this.makeRequest("PUT",e,t)}delete(e){return this.makeRequest("DELETE",e)}async fetch(e,t){const r=t;return e.startsWith("/")||(e="/"+e),await fetch(this.tenantBaseUrl+e,{...r??{},headers:{...this.defaultHeaders,...r?.headers??{}}})}async upload(e,t,r,a=(()=>{})){return new Promise(((i,n)=>{let s=new XMLHttpRequest;s.onload=()=>{if(s.status>=200&&s.status<300){let e="application/json"===s.getResponseHeader("Content-Type")?JSON.parse(s.responseText):s.responseText;i(e)}else n(new ie(s.status,s.statusText,s.responseText))},s.upload.onprogress=e=>a(e),s.open(e,this.tenantBaseUrl+t,!0),s.send(r)}))}makeRequest(e,t,r){return this.fetch(t,{method:e,headers:{...null!=r?{"Content-Type":"application/json"}:{}},body:null!=r?JSON.stringify(r):void 0}).then(ne).then(se)}fetchRawData(e){return fetch(this.tenantBaseUrl+e,{headers:this.defaultHeaders}).then(ne).then((e=>e.arrayBuffer()))}}e.FluidTopicsApi=le,e.HttpError=ie,e.addUnauthenticatedUserSearchPreferencesChangeHandler=function(e,t){if(ee.localStorage){const r=re(e),a=e=>{e.storageArea===ee.localStorage&&e.key===r&&t(JSON.parse(e.newValue??"{}"))};return ee.addEventListener("storage",a),{removeHandler:()=>ee.removeEventListener("storage",a)}}console.error("Cannot handle unauthenticated preferences: local storage is unavailable.")},e.default=le,e.getUnauthenticatedUserSearchPreferences=function(e){if(ee.localStorage)return JSON.parse(ee.localStorage.getItem(re(e))??"{}");console.error("Cannot get unauthenticated preferences: local storage is unavailable.")},e.isFtAuthenticatedSession=e=>j(e)&&Y(e.profile),e.isFtAuthenticationIdentifier=e=>s(e)&&u(e.identifier)&&u(e.realm),e.isFtCollectionDocument=e=>s(e)&&l(e.deleted)&&(null==e.apiUrl||u(e.apiUrl))&&(null==e.portalUrl||u(e.portalUrl))&&u(e.id)&&u(e.title)&&D(e.type),e.isFtCollectionDocumentType=D,e.isFtCredentials=e=>s(e)&&u(e.password)&&(null==e.newPassword||u(e.newPassword))&&l(e.rememberMe)&&u(e.login),e.isFtEditorialType=C,e.isFtFeedbackCreation=e=>s(e)&&u(e.message),e.isFtMap=e=>s(e)&&(null==e.prettyUrl||u(e.prettyUrl))&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&U(e.openMode)&&u(e.topicsApiEndpoint)&&(null==e.description||u(e.description))&&u(e.attachmentsApiEndpoint)&&C(e.editorialType)&&u(e.baseId)&&u(e.clusterId)&&(null==e.shouldSplitCurrentPageToc||l(e.shouldSplitCurrentPageToc))&&u(e.title)&&u(e.lastPublication)&&u(e.lastEdition)&&u(e.originId)&&u(e.rightsApiEndpoint)&&c(e.contentStyles)&&(null==e.originUrl||u(e.originUrl))&&u(e.readerUrl)&&(null==e.khubVersion||u(e.khubVersion))&&u(e.id)&&(null==e.lang||u(e.lang)),e.isFtMapAttachment=e=>j(e)&&X(e.file)&&(null==e.size||J(e.size))&&z(e.externalLink)&&X(e.name)&&X(e.id)&&(null==e.mimeType||X(e.mimeType))&&(null==e.viewerUrl||X(e.viewerUrl)),e.isFtMapResource=e=>s(e)&&u(e.contentUrl)&&u(e.filename)&&u(e.id)&&u(e.mimeType),e.isFtMapStyles=c,e.isFtMetadata=y,e.isFtMetadataPreferenceConfiguration=F,e.isFtOpenMode=U,e.isFtPageConfiguration=Q,e.isFtPageRequest=O,e.isFtPaginatedToc=e=>j(e)&&Z(e.configuration)&&Array.isArray(e.paginatedToc)&&e.paginatedToc.every((e=>W(e))),e.isFtPaginatedTocNode=W,e.isFtPaginationConfiguration=Z,e.isFtPublicationRating=m,e.isFtPublicationRatingSummary=A,e.isFtRatingCreation=e=>s(e)&&f(e.type)&&o(e.value),e.isFtRatingSummary=e=>s(e)&&(null==e.topics||b(e.topics))&&A(e.publication),e.isFtRatingType=f,e.isFtSearchFacet=_,e.isFtSearchFacetConf=H,e.isFtSearchFacetEntry=B,e.isFtSearchFilter=R,e.isFtSearchLocale=h,e.isFtSearchLocales=e=>s(e)&&Array.isArray(e.contentLocales)&&e.contentLocales.every((e=>h(e))),e.isFtSearchPreferencesConfiguration=e=>s(e)&&s(e.metadata)&&Object.keys(e.metadata).every((e=>u(e)))&&Object.values(e.metadata).every((e=>F(e))),e.isFtSearchPreset=e=>s(e)&&u(e.name)&&Array.isArray(e.filters)&&e.filters.every((e=>R(e)))&&o(e.priority)&&(null==e.contentLocale||u(e.contentLocale)),e.isFtSearchPrior=I,e.isFtSearchRequest=e=>s(e)&&u(e.query)&&O(e.paging)&&Array.isArray(e.filters)&&e.filters.every((e=>R(e)))&&Array.isArray(e.sort)&&e.sort.every((e=>q(e)))&&(null==e.uiLocale||u(e.uiLocale))&&(null==e.contentLocale||u(e.contentLocale))&&(null==e.priors||Array.isArray(e.priors)&&e.priors.every((e=>I(e))))&&Array.isArray(e.facets)&&e.facets.every((e=>H(e))),e.isFtSearchResultCluster=k,e.isFtSearchResultClusterEntry=M,e.isFtSearchResultMap=$,e.isFtSearchResultTopic=L,e.isFtSearchResultType=x,e.isFtSearchResultUnstructuredDocument=w,e.isFtSearchResults=e=>s(e)&&(null==e.spellcheck||G(e.spellcheck))&&S(e.paging)&&Array.isArray(e.results)&&e.results.every((e=>k(e)))&&Array.isArray(e.facets)&&e.facets.every((e=>_(e))),e.isFtSearchResultsPageInfo=S,e.isFtSearchSortCriterion=q,e.isFtSession=e=>j(e)&&J(e.idleTimeoutInMillis)&&(null==e.profile||Y(e.profile))&&z(e.sessionAuthenticated),e.isFtSpellcheck=G,e.isFtSuggestRequest=e=>s(e)&&u(e.input)&&Array.isArray(e.filters)&&e.filters.every((e=>R(e)))&&Array.isArray(e.sort)&&e.sort.every((e=>q(e)))&&(null==e.maxCount||o(e.maxCount))&&(null==e.contentLocale||u(e.contentLocale)),e.isFtSuggestResult=V,e.isFtSuggestResults=e=>s(e)&&Array.isArray(e.suggestions)&&e.suggestions.every((e=>V(e))),e.isFtTocNode=p,e.isFtTopic=e=>s(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&u(e.id)&&u(e.contentApiEndpoint)&&u(e.title),e.isFtTopicContentTarget=e=>["THIRD_PARTY","OFF_THE_GRID","CONTENT_PACKAGER","PAGES","DESIGNED_READER"].includes(e),e.isFtTopicRating=T,e.isFtTopicResource=K,e.isFtTopicsRatingSummary=b,e.isFtUnstructuredDocument=e=>s(e)&&(null==e.prettyUrl||u(e.prettyUrl))&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&u(e.openMode)&&(null==e.description||u(e.description))&&u(e.mimeType)&&(null==e.baseId||u(e.baseId))&&(null==e.clusterId||u(e.clusterId))&&u(e.contentApiEndpoint)&&u(e.title)&&(null==e.lastPublication||u(e.lastPublication))&&u(e.viewerUrl)&&u(e.lastEdition)&&u(e.filename)&&(null==e.originId||u(e.originId))&&u(e.rightsApiEndpoint)&&(null==e.originUrl||u(e.originUrl))&&(null==e.khubVersion||u(e.khubVersion))&&u(e.id)&&(null==e.lang||u(e.lang)),e.isFtUserProfile=Y,e.setUnauthenticatedUserSearchPreferences=function(e,t){if(ee.localStorage){let r={...t,metadata:te(t.metadata??{})};const a=re(e),i=JSON.stringify(r);return ee.localStorage.setItem(a,i),ee.dispatchEvent(new StorageEvent("storage",{key:a,newValue:i,storageArea:ee.localStorage,url:ee.location.href})),r}console.error("Cannot set unauthenticated preferences: local storage is unavailable.")}}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).fluidtopics={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},i={exports:{}},n={exports:{}};!function(e,t){var i=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==i)return i;throw new Error("unable to locate global object")}();e.exports=t=i.fetch,i.fetch&&(t.default=i.fetch.bind(i)),t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response}(n,n.exports),function(e,t){const i=n.exports,a=i.default||i,s=function(e,t){return/^\/\//.test(e)&&(e="https:"+e),a.call(this,e,t)};s.ponyfill=!0,e.exports=t=s,t.fetch=s,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,t.default=s}(i,i.exports);const a=i.exports,s=a.fetch.bind({});s.polyfill=!0,t.fetch||(t.fetch=s,t.Response=a.Response,t.Headers=a.Headers,t.Request=a.Request);const r=e=>"object"==typeof e&&null!=e,o=e=>"boolean"==typeof e,l=e=>"number"==typeof e,u=e=>"string"==typeof e,c=e=>r(e)&&u(e.topicStylesheetUrl)&&u(e.titleStylesheetUrl)&&Array.isArray(e.customCssClasses)&&e.customCssClasses.every((e=>u(e))),d=e=>r(e)&&(null==e.prettyUrl||u(e.prettyUrl))&&(null==e.hasRating||o(e.hasRating))&&u(e.tocId)&&Array.isArray(e.children)&&e.children.every((e=>d(e)))&&u(e.contentId)&&u(e.title);var p;e.FtTopicContentTarget=void 0,(p=e.FtTopicContentTarget||(e.FtTopicContentTarget={})).THIRD_PARTY="THIRD_PARTY",p.OFF_THE_GRID="OFF_THE_GRID",p.CONTENT_PACKAGER="CONTENT_PACKAGER",p.PAGES="PAGES",p.DESIGNED_READER="DESIGNED_READER";const h=e=>r(e)&&l(e.count)&&u(e.label)&&(null==e.lang||u(e.lang)),y=e=>r(e)&&Array.isArray(e.values)&&e.values.every((e=>u(e)))&&(null==e.hierarchicalValues||Array.isArray(e.hierarchicalValues)&&e.hierarchicalValues.every((e=>Array.isArray(e)&&e.every((e=>u(e))))))&&u(e.label)&&u(e.key);var g;e.FtRatingType=void 0,(g=e.FtRatingType||(e.FtRatingType={})).STARS="STARS",g.LIKE="LIKE",g.DICHOTOMOUS="DICHOTOMOUS",g.NO_RATING="NO_RATING";const m=e=>["STARS","LIKE","DICHOTOMOUS","NO_RATING"].includes(e),A=e=>r(e)&&u(e.date)&&m(e.type)&&l(e.value),f=e=>r(e)&&(null==e.rating||A(e.rating))&&m(e.type),E=e=>r(e)&&u(e.date)&&u(e.tocId)&&m(e.type)&&l(e.value),R=e=>r(e)&&Array.isArray(e.ratings)&&e.ratings.every((e=>E(e)))&&m(e.type),T=e=>r(e)&&Array.isArray(e.filter)&&e.filter.every((e=>u(e)))&&Array.isArray(e.prior)&&e.prior.every((e=>u(e))),S=e=>r(e)&&o(e.negative)&&Array.isArray(e.values)&&e.values.every((e=>u(e)))&&u(e.key),b=e=>r(e)&&l(e.totalResultsCount)&&o(e.lastPage)&&l(e.currentPage)&&l(e.totalClustersCount);var I;e.FtEditorialType=void 0,(I=e.FtEditorialType||(e.FtEditorialType={})).ARTICLE="ARTICLE",I.BOOK="BOOK";const U=e=>["ARTICLE","BOOK"].includes(e);var F;e.FtOpenMode=void 0,(F=e.FtOpenMode||(e.FtOpenMode={})).FLUIDTOPICS="FLUIDTOPICS",F.EXTERNAL="EXTERNAL";const O=e=>["FLUIDTOPICS","EXTERNAL"].includes(e),C=e=>r(e)&&(null==e.perPage||l(e.perPage))&&l(e.page);var _;e.FtCollectionDocumentType=void 0,(_=e.FtCollectionDocumentType||(e.FtCollectionDocumentType={})).MAP="MAP",_.DOCUMENT="DOCUMENT",_.TOPIC="TOPIC",_.PERSONAL_BOOK="PERSONAL_BOOK",_.SHARED_BOOK="SHARED_BOOK";const v=e=>["MAP","DOCUMENT","TOPIC","PERSONAL_BOOK","SHARED_BOOK"].includes(e),P=e=>r(e)&&l(e.weight)&&u(e.value)&&u(e.key),k=e=>r(e)&&Array.isArray(e.entries)&&e.entries.every((e=>D(e)))&&(null==e.metadataVariableAxis||u(e.metadataVariableAxis)),D=e=>r(e)&&(null==e.document||N(e.document))&&(null==e.topic||M(e.topic))&&B(e.type)&&(null==e.map||L(e.map)),N=e=>r(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&O(e.openMode)&&u(e.documentUrl)&&u(e.mimeType)&&u(e.title)&&(null==e.lastPublicationDate||u(e.lastPublicationDate))&&u(e.viewerUrl)&&u(e.contentUrl)&&u(e.filename)&&u(e.htmlTitle)&&(null==e.originUrl||u(e.originUrl))&&u(e.documentId)&&u(e.lastEditionDate)&&u(e.htmlExcerpt),L=e=>r(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&(null==e.openMode||O(e.openMode))&&U(e.editorialType)&&u(e.title)&&(null==e.lastPublicationDate||u(e.lastPublicationDate))&&u(e.htmlTitle)&&(null==e.originUrl||u(e.originUrl))&&u(e.mapUrl)&&u(e.readerUrl)&&u(e.mapId)&&(null==e.lastEditionDate||u(e.lastEditionDate))&&u(e.htmlExcerpt),M=e=>r(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&O(e.openMode)&&u(e.contentId)&&Array.isArray(e.resources)&&e.resources.every((e=>G(e)))&&u(e.title)&&u(e.mapTitle)&&u(e.topicUrl)&&u(e.contentUrl)&&u(e.htmlTitle)&&Array.isArray(e.breadcrumb)&&e.breadcrumb.every((e=>u(e)))&&u(e.tocId)&&(null==e.originUrl||u(e.originUrl))&&u(e.readerUrl)&&u(e.mapId)&&(null==e.lastEditionDate||u(e.lastEditionDate))&&u(e.htmlExcerpt);var w;e.FtSearchResultType=void 0,(w=e.FtSearchResultType||(e.FtSearchResultType={})).MAP="MAP",w.DOCUMENT="DOCUMENT",w.TOPIC="TOPIC";const B=e=>["MAP","DOCUMENT","TOPIC"].includes(e),H=e=>r(e)&&o(e.hierarchical)&&u(e.label)&&o(e.multiSelectionable)&&u(e.key)&&Array.isArray(e.rootNodes)&&e.rootNodes.every((e=>$(e))),x=e=>r(e)&&(null==e.maxDepth||l(e.maxDepth))&&u(e.id),$=e=>r(e)&&l(e.totalResultsCount)&&o(e.descendantSelected)&&Array.isArray(e.childNodes)&&e.childNodes.every((e=>$(e)))&&u(e.label)&&u(e.value)&&o(e.selected),K=e=>r(e)&&u(e.key),V=e=>r(e)&&u(e.suggestedQuery)&&u(e.htmlSuggestedQuery),G=e=>r(e)&&u(e.filename)&&u(e.resourceUrl)&&u(e.id)&&u(e.mimeType)&&u(e.resourceContentUrl)&&u(e.viewerUrl),q=e=>r(e)&&(null==e.filenameExtension||u(e.filenameExtension))&&(null==e.editorialType||U(e.editorialType))&&(null==e.mimeType||u(e.mimeType))&&B(e.type)&&u(e.value);var j;e.FtUserRole=void 0,(j=e.FtUserRole||(e.FtUserRole={})).PERSONAL_BOOK_USER="PERSONAL_BOOK_USER",j.PERSONAL_BOOK_SHARE_USER="PERSONAL_BOOK_SHARE_USER",j.HTML_EXPORT_USER="HTML_EXPORT_USER",j.PDF_EXPORT_USER="PDF_EXPORT_USER",j.SAVED_SEARCH_USER="SAVED_SEARCH_USER",j.COLLECTION_USER="COLLECTION_USER",j.OFFLINE_USER="OFFLINE_USER",j.ANALYTICS_USER="ANALYTICS_USER",j.BETA_USER="BETA_USER",j.DEBUG_USER="DEBUG_USER",j.PRINT_USER="PRINT_USER",j.RATING_USER="RATING_USER",j.FEEDBACK_USER="FEEDBACK_USER",j.CONTENT_PUBLISHER="CONTENT_PUBLISHER",j.KHUB_ADMIN="KHUB_ADMIN",j.USERS_ADMIN="USERS_ADMIN",j.PORTAL_ADMIN="PORTAL_ADMIN",j.ADMIN="ADMIN",j.DEVELOPER="DEVELOPER";const z=e=>"object"==typeof e&&null!=e,X=e=>"boolean"==typeof e,Y=e=>"number"==typeof e,J=e=>"string"==typeof e,Q=e=>z(e)&&(null==e.emailAddress||J(e.emailAddress))&&(null==e.displayName||J(e.displayName))&&Array.isArray(e.roles)&&(null==e.userId||J(e.userId)),W=e=>z(e)&&(null==e.parentsVisibility||Array.isArray(e.parentsVisibility)&&e.parentsVisibility.every((e=>X(e))))&&X(e.isVisible),Z=e=>z(e)&&(null==e.prettyUrl||J(e.prettyUrl))&&(null==e.hasRating||X(e.hasRating))&&(null==e.pageToc||Array.isArray(e.pageToc))&&(null==e.tocId||J(e.tocId))&&Array.isArray(e.children)&&e.children.every((e=>Z(e)))&&(null==e.pageConfiguration||W(e.pageConfiguration))&&(null==e.contentId||J(e.contentId))&&(null==e.title||J(e.title)),ee=e=>z(e)&&X(e.splitCurrentPageToc),te="undefined"==typeof window?globalThis:window;function ie(e){let t={};for(let i in e){let n=e[i];("object"!=typeof n||Array.isArray(n))&&(n={prior:n});for(let e of["prior","filter"])n[e]=Array.isArray(n[e])?n[e]:[n[e]],n[e]=n[e].map((e=>null!=e?""+e:"")).filter((e=>""!==e));t[i]=n}return t}function ne(e){return`${e}-FluidTopicsUnauthenticatedUserSearchPreferences`}const ae="undefined"==typeof window?globalThis:window;class se extends Error{status;statusText;body;constructor(e,t,i){super(`${e} - ${t}: ${i}`),this.status=e,this.statusText=t,this.body=i}}async function re(e){if(!e.ok)throw new se(e.status,e.statusText,await e.text());return e}function oe(e){return"application/json"===e.headers.get("Content-Type")?e.json():e.text()}class le{tenantBaseUrl;ftCallingApp;authorization;searchLabel;endpoints={authentication:{login:"api/authentication/login",logout:"api/authentication/logout",currentSession:"api/authentication/current-session"},khub:{maps:{mapId:e=>({info:`api/khub/maps/${e}`,toc:`api/khub/maps/${e}/toc`,pages:`api/khub/maps/${e}/pages`,feedback:`api/khub/maps/${e}/feedback`,rating:`api/khub/maps/${e}/rating`,attachments:{list:`api/khub/maps/${e}/attachments`,attachmentId:t=>({content:`api/khub/maps/${e}/attachments/${t}/content`})},resources:{list:`api/khub/maps/${e}/resources`,resourceId:t=>({content:`api/khub/maps/${e}/resources/${t}/content`})},topics:{contentId:t=>({info:`api/khub/maps/${e}/topics/${t}`,content:`api/khub/maps/${e}/topics/${t}/content`}),tocId:t=>({feedback:`api/khub/maps/${e}/topics/${t}/feedback`,rating:`api/khub/maps/${e}/topics/${t}/rating`})}})},documents:{documentId:e=>({info:`api/khub/documents/${e}`,content:`api/khub/documents/${e}/content`,text:`api/khub/documents/${e}/content/text`,feedback:`api/khub/documents/${e}/feedback`,rating:`api/khub/documents/${e}/rating`})},suggest:"api/khub/suggest",clusteredSearch:"api/khub/clustered-search",locales:"api/khub/locales"},users:{userId:e=>({collections:{collectionId:t=>({documents:`api/users/${e}/collections/${t}/documents`})}})},stylesheets:{fonts:"api/stylesheets/fonts.css",theme:"api/stylesheets/theme.css",content:{title:"api/stylesheets/content/title.css",topic:"api/stylesheets/content/topic.css"}},configuration:{reader:"api/configuration/reader"}};get defaultHeaders(){return{...this.authorization,...this.searchLabel,"Ft-Calling-App":this.ftCallingApp}}constructor(e,t,i){e=(e??ae.__gwt_ft_moduleBase??ae.fluidtopicsclient?.__moduleBase??ae.__gwt_activeModules?.fluidtopicsclient?.moduleBase??"").trim(),this.tenantBaseUrl=e.endsWith("/")?e:e+"/",i&&void 0!==ae.location&&ae.location.href.startsWith(this.tenantBaseUrl)?this.ftCallingApp=t:this.ftCallingApp=`ft-public-api/${t}`}setApiKey(e){this.authorization={Authorization:"Bearer "+e}}setCredentials(e,t){var i;this.authorization={Authorization:"Basic "+(i=`${e}:${t}`,"undefined"!=typeof Buffer?Buffer.from(i).toString("base64"):btoa(i))}}clearAuthentication(){this.authorization=void 0}setSearchLabel(e){this.searchLabel={"FT-search-label":e}}clearSearchLabel(){this.searchLabel=void 0}login(e,t){let i={login:e,password:t,rememberMe:!0};return this.post(this.endpoints.authentication.login,i).then((i=>(this.setCredentials(e,t),i)))}logout(){return this.post(this.endpoints.authentication.logout).then((()=>this.clearAuthentication()))}getCurrentSession(){return this.get(this.endpoints.authentication.currentSession)}getReaderConfiguration(){return this.get(this.endpoints.configuration.reader)}getMap(e){return this.get(this.endpoints.khub.maps.mapId(e).info)}getTableOfContent(e){return this.get(this.endpoints.khub.maps.mapId(e).toc)}getPages(e){return this.get(this.endpoints.khub.maps.mapId(e).pages)}getTopic(e,t){return this.get(this.endpoints.khub.maps.mapId(e).topics.contentId(t).info)}getTopicHTMLContent(e,t,i){return this.get(this.endpoints.khub.maps.mapId(e).topics.contentId(t).content+(i?"?target="+i:""))}getMapAttachments(e){return this.get(this.endpoints.khub.maps.mapId(e).attachments.list)}getMapAttachmentContent(e,t){return this.fetchRawData(this.endpoints.khub.maps.mapId(e).attachments.attachmentId(t).content)}getMapResources(e){return this.get(this.endpoints.khub.maps.mapId(e).resources.list)}getMapResourceContent(e,t){return this.fetchRawData(this.endpoints.khub.maps.mapId(e).resources.resourceId(t).content)}getUnstructuredDocument(e){return this.get(this.endpoints.khub.documents.documentId(e).info)}getUnstructuredDocumentContent(e){return this.fetchRawData(this.endpoints.khub.documents.documentId(e).content)}getUnstructuredDocumentTextContent(e){return this.get(this.endpoints.khub.documents.documentId(e).text)}getCollectionDocuments(e,t){return this.get(this.endpoints.users.userId(e).collections.collectionId(t).documents)}getSuggestions(e){return this.post(this.endpoints.khub.suggest,e)}search(e){return this.post(this.endpoints.khub.clusteredSearch,e)}getAvailableSearchLocales(){return this.get(this.endpoints.khub.locales)}getMapRating(e){return this.get(this.endpoints.khub.maps.mapId(e).rating)}rateMap(e,t,i){return this.post(this.endpoints.khub.maps.mapId(e).rating,{type:t,value:i})}unrateMap(e){return this.delete(this.endpoints.khub.maps.mapId(e).rating)}sendMapFeedback(e,t){return this.post(this.endpoints.khub.maps.mapId(e).feedback,{message:t})}rateTopic(e,t,i,n){return this.post(this.endpoints.khub.maps.mapId(e).topics.tocId(t).rating,{type:i,value:n})}unrateTopic(e,t){return this.delete(this.endpoints.khub.maps.mapId(e).topics.tocId(t).rating)}sendTopicFeedback(e,t,i){return this.post(this.endpoints.khub.maps.mapId(e).topics.tocId(t).feedback,{message:i})}getDocumentRating(e){return this.get(this.endpoints.khub.documents.documentId(e).rating)}rateDocument(e,t,i){return this.post(this.endpoints.khub.documents.documentId(e).rating,{type:t,value:i})}unrateDocument(e){return this.delete(this.endpoints.khub.documents.documentId(e).rating)}sendDocumentFeedback(e,t){return this.post(this.endpoints.khub.documents.documentId(e).feedback,{message:t})}get(e){return this.makeRequest("GET",e)}post(e,t){return this.makeRequest("POST",e,t)}put(e,t){return this.makeRequest("PUT",e,t)}delete(e){return this.makeRequest("DELETE",e)}makeAbsolute(e){return this.tenantBaseUrl+e.replace(/^\//,"")}async fetch(e,t){const i=t;return await fetch(this.makeAbsolute(e),{...i??{},headers:{...this.defaultHeaders,...i?.headers??{}}})}upload(e,t,i,n=(()=>{})){return"undefined"!=typeof XMLHttpRequest?new Promise(((a,s)=>{let r=new XMLHttpRequest;r.onload=()=>{if(r.status>=200&&r.status<300){let e="application/json"===r.getResponseHeader("Content-Type")?JSON.parse(r.responseText):r.responseText;a(e)}else s(new se(r.status,r.statusText,r.responseText))},r.upload.onprogress=e=>n(e),r.open(e,this.makeAbsolute(t),!0),r.send(i)})):this.fetch(t,{method:e,body:i}).then(re).then(oe)}makeRequest(e,t,i){return this.fetch(t,{method:e,headers:{...null!=i?{"Content-Type":"application/json"}:{}},body:null!=i?JSON.stringify(i):void 0,credentials:null==this.authorization?"include":void 0}).then(re).then(oe)}fetchRawData(e){return fetch(this.makeAbsolute(e),{headers:this.defaultHeaders,credentials:null==this.authorization?"include":void 0}).then(re).then((e=>e.arrayBuffer()))}}e.FluidTopicsApi=le,e.HttpError=se,e.addUnauthenticatedUserSearchPreferencesChangeHandler=function(e,t){if(te.localStorage){const i=ne(e),n=e=>{e.storageArea===te.localStorage&&e.key===i&&t(JSON.parse(e.newValue??"{}"))};return te.addEventListener("storage",n),{removeHandler:()=>te.removeEventListener("storage",n)}}console.error("Cannot handle unauthenticated preferences: local storage is unavailable.")},e.default=le,e.getUnauthenticatedUserSearchPreferences=function(e){if(te.localStorage)return JSON.parse(te.localStorage.getItem(ne(e))??"{}");console.error("Cannot get unauthenticated preferences: local storage is unavailable.")},e.isFtAuthenticatedSession=e=>z(e)&&Q(e.profile),e.isFtAuthenticationIdentifier=e=>r(e)&&u(e.identifier)&&u(e.realm),e.isFtCollectionDocument=e=>r(e)&&o(e.deleted)&&(null==e.apiUrl||u(e.apiUrl))&&(null==e.portalUrl||u(e.portalUrl))&&u(e.id)&&u(e.title)&&v(e.type),e.isFtCollectionDocumentType=v,e.isFtCredentials=e=>r(e)&&u(e.password)&&(null==e.newPassword||u(e.newPassword))&&o(e.rememberMe)&&u(e.login),e.isFtEditorialType=U,e.isFtFeedbackCreation=e=>r(e)&&u(e.message),e.isFtMap=e=>r(e)&&(null==e.prettyUrl||u(e.prettyUrl))&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&O(e.openMode)&&u(e.topicsApiEndpoint)&&(null==e.description||u(e.description))&&u(e.attachmentsApiEndpoint)&&U(e.editorialType)&&u(e.baseId)&&u(e.clusterId)&&u(e.title)&&u(e.lastPublication)&&u(e.lastEdition)&&u(e.originId)&&u(e.rightsApiEndpoint)&&c(e.contentStyles)&&(null==e.originUrl||u(e.originUrl))&&u(e.readerUrl)&&(null==e.khubVersion||u(e.khubVersion))&&u(e.id)&&(null==e.lang||u(e.lang)),e.isFtMapAttachment=e=>z(e)&&J(e.file)&&(null==e.size||Y(e.size))&&X(e.externalLink)&&J(e.name)&&J(e.id)&&(null==e.mimeType||J(e.mimeType))&&(null==e.viewerUrl||J(e.viewerUrl)),e.isFtMapResource=e=>r(e)&&u(e.contentUrl)&&u(e.filename)&&u(e.id)&&u(e.mimeType),e.isFtMapStyles=c,e.isFtMetadata=y,e.isFtMetadataPreferenceConfiguration=T,e.isFtOpenMode=O,e.isFtPageConfiguration=W,e.isFtPageRequest=C,e.isFtPaginatedToc=e=>z(e)&&ee(e.configuration)&&Array.isArray(e.paginatedToc)&&e.paginatedToc.every((e=>Z(e))),e.isFtPaginatedTocNode=Z,e.isFtPaginationConfiguration=ee,e.isFtPublicationRating=A,e.isFtPublicationRatingSummary=f,e.isFtRatingCreation=e=>r(e)&&m(e.type)&&l(e.value),e.isFtRatingSummary=e=>r(e)&&(null==e.topics||R(e.topics))&&f(e.publication),e.isFtRatingType=m,e.isFtReaderConfiguration=e=>z(e)&&Y(e.loadAfterLastVisibleTopic)&&X(e.feedbackMailsSentByFluidTopics)&&Y(e.loadBeforeFirstVisibleTopic),e.isFtSearchFacet=H,e.isFtSearchFacetConf=x,e.isFtSearchFacetEntry=$,e.isFtSearchFilter=S,e.isFtSearchLocale=h,e.isFtSearchLocales=e=>r(e)&&Array.isArray(e.contentLocales)&&e.contentLocales.every((e=>h(e))),e.isFtSearchPreferencesConfiguration=e=>r(e)&&r(e.metadata)&&Object.keys(e.metadata).every((e=>u(e)))&&Object.values(e.metadata).every((e=>T(e))),e.isFtSearchPreset=e=>r(e)&&u(e.name)&&Array.isArray(e.filters)&&e.filters.every((e=>S(e)))&&l(e.priority)&&(null==e.contentLocale||u(e.contentLocale)),e.isFtSearchPrior=P,e.isFtSearchRequest=e=>r(e)&&u(e.query)&&C(e.paging)&&Array.isArray(e.filters)&&e.filters.every((e=>S(e)))&&Array.isArray(e.sort)&&e.sort.every((e=>K(e)))&&(null==e.uiLocale||u(e.uiLocale))&&(null==e.contentLocale||u(e.contentLocale))&&(null==e.priors||Array.isArray(e.priors)&&e.priors.every((e=>P(e))))&&Array.isArray(e.facets)&&e.facets.every((e=>x(e))),e.isFtSearchResultCluster=k,e.isFtSearchResultClusterEntry=D,e.isFtSearchResultMap=L,e.isFtSearchResultTopic=M,e.isFtSearchResultType=B,e.isFtSearchResultUnstructuredDocument=N,e.isFtSearchResults=e=>r(e)&&(null==e.spellcheck||V(e.spellcheck))&&b(e.paging)&&Array.isArray(e.results)&&e.results.every((e=>k(e)))&&Array.isArray(e.facets)&&e.facets.every((e=>H(e))),e.isFtSearchResultsPageInfo=b,e.isFtSearchSortCriterion=K,e.isFtSession=e=>z(e)&&Y(e.idleTimeoutInMillis)&&Q(e.profile)&&X(e.sessionAuthenticated),e.isFtSpellcheck=V,e.isFtSuggestRequest=e=>r(e)&&u(e.input)&&Array.isArray(e.filters)&&e.filters.every((e=>S(e)))&&Array.isArray(e.sort)&&e.sort.every((e=>K(e)))&&(null==e.maxCount||l(e.maxCount))&&(null==e.contentLocale||u(e.contentLocale)),e.isFtSuggestResult=q,e.isFtSuggestResults=e=>r(e)&&Array.isArray(e.suggestions)&&e.suggestions.every((e=>q(e))),e.isFtTocNode=d,e.isFtTopic=e=>r(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&u(e.id)&&u(e.contentApiEndpoint)&&u(e.title),e.isFtTopicContentTarget=e=>["THIRD_PARTY","OFF_THE_GRID","CONTENT_PACKAGER","PAGES","DESIGNED_READER"].includes(e),e.isFtTopicRating=E,e.isFtTopicResource=G,e.isFtTopicsRatingSummary=R,e.isFtUnstructuredDocument=e=>r(e)&&(null==e.prettyUrl||u(e.prettyUrl))&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&u(e.openMode)&&(null==e.description||u(e.description))&&u(e.mimeType)&&(null==e.baseId||u(e.baseId))&&(null==e.clusterId||u(e.clusterId))&&u(e.contentApiEndpoint)&&u(e.title)&&(null==e.lastPublication||u(e.lastPublication))&&u(e.viewerUrl)&&u(e.lastEdition)&&u(e.filename)&&(null==e.originId||u(e.originId))&&u(e.rightsApiEndpoint)&&(null==e.originUrl||u(e.originUrl))&&(null==e.khubVersion||u(e.khubVersion))&&u(e.id)&&(null==e.lang||u(e.lang)),e.isFtUserProfile=Q,e.isFtUserRole=e=>["PERSONAL_BOOK_USER","PERSONAL_BOOK_SHARE_USER","HTML_EXPORT_USER","PDF_EXPORT_USER","SAVED_SEARCH_USER","COLLECTION_USER","OFFLINE_USER","ANALYTICS_USER","BETA_USER","DEBUG_USER","PRINT_USER","RATING_USER","FEEDBACK_USER","CONTENT_PUBLISHER","KHUB_ADMIN","USERS_ADMIN","PORTAL_ADMIN","ADMIN","DEVELOPER"].includes(e),e.setUnauthenticatedUserSearchPreferences=function(e,t){if(te.localStorage){let i={...t,metadata:ie(t.metadata??{})};const n=ne(e),a=JSON.stringify(i);return te.localStorage.setItem(n,a),te.dispatchEvent(new StorageEvent("storage",{key:n,newValue:a,storageArea:te.localStorage,url:te.location.href})),i}console.error("Cannot set unauthenticated preferences: local storage is unavailable.")}}));
|
package/dist/mjs/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "cross-fetch/polyfill";
|
|
2
2
|
import { FtCollectionDocument, FtMap, FtMapResource, FtRatingSummary, FtRatingType, FtSearchLocales, FtSearchRequest, FtSearchResults, FtSuggestRequest, FtSuggestResults, FtTocNode, FtTopic, FtTopicContentTarget, FtTopicContentTargetKeys, FtUnstructuredDocument } from "./types/ft-common/public";
|
|
3
|
-
import { FtAuthenticatedSession, FtMapAttachment, FtPaginatedToc, FtSession } from "./types/ft-server/public";
|
|
3
|
+
import { FtAuthenticatedSession, FtMapAttachment, FtPaginatedToc, FtReaderConfiguration, FtSession } from "./types/ft-server/public";
|
|
4
4
|
export * from "./types/ft-common/public";
|
|
5
5
|
export * from "./types/ft-server/public";
|
|
6
6
|
export * from "./preferences/unauthenticated-preferences";
|
|
@@ -13,8 +13,80 @@ export declare class HttpError extends Error {
|
|
|
13
13
|
export declare class FluidTopicsApi {
|
|
14
14
|
readonly tenantBaseUrl: string;
|
|
15
15
|
private readonly ftCallingApp;
|
|
16
|
-
private authorization
|
|
17
|
-
private searchLabel
|
|
16
|
+
private authorization?;
|
|
17
|
+
private searchLabel?;
|
|
18
|
+
readonly endpoints: {
|
|
19
|
+
authentication: {
|
|
20
|
+
login: string;
|
|
21
|
+
logout: string;
|
|
22
|
+
currentSession: string;
|
|
23
|
+
};
|
|
24
|
+
khub: {
|
|
25
|
+
maps: {
|
|
26
|
+
mapId: (mapId: string) => {
|
|
27
|
+
info: string;
|
|
28
|
+
toc: string;
|
|
29
|
+
pages: string;
|
|
30
|
+
feedback: string;
|
|
31
|
+
rating: string;
|
|
32
|
+
attachments: {
|
|
33
|
+
list: string;
|
|
34
|
+
attachmentId: (attachmentId: string) => {
|
|
35
|
+
content: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
resources: {
|
|
39
|
+
list: string;
|
|
40
|
+
resourceId: (resourceId: string) => {
|
|
41
|
+
content: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
topics: {
|
|
45
|
+
contentId: (contentId: string) => {
|
|
46
|
+
info: string;
|
|
47
|
+
content: string;
|
|
48
|
+
};
|
|
49
|
+
tocId: (tocId: string) => {
|
|
50
|
+
feedback: string;
|
|
51
|
+
rating: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
documents: {
|
|
57
|
+
documentId: (documentId: string) => {
|
|
58
|
+
info: string;
|
|
59
|
+
content: string;
|
|
60
|
+
text: string;
|
|
61
|
+
feedback: string;
|
|
62
|
+
rating: string;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
suggest: string;
|
|
66
|
+
clusteredSearch: string;
|
|
67
|
+
locales: string;
|
|
68
|
+
};
|
|
69
|
+
users: {
|
|
70
|
+
userId: (userId: string) => {
|
|
71
|
+
collections: {
|
|
72
|
+
collectionId: (collectionId: string) => {
|
|
73
|
+
documents: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
stylesheets: {
|
|
79
|
+
fonts: string;
|
|
80
|
+
theme: string;
|
|
81
|
+
content: {
|
|
82
|
+
title: string;
|
|
83
|
+
topic: string;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
configuration: {
|
|
87
|
+
reader: string;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
18
90
|
private get defaultHeaders();
|
|
19
91
|
constructor(tenantBaseUrl: string, integrationIdentifier: string, overrideIdentifierIfOnTenant?: boolean);
|
|
20
92
|
setApiKey(apiKey: string): void;
|
|
@@ -25,6 +97,7 @@ export declare class FluidTopicsApi {
|
|
|
25
97
|
login(login: string, password: string): Promise<FtAuthenticatedSession>;
|
|
26
98
|
logout(): Promise<void>;
|
|
27
99
|
getCurrentSession(): Promise<FtSession>;
|
|
100
|
+
getReaderConfiguration(): Promise<FtReaderConfiguration>;
|
|
28
101
|
getMap(mapId: string): Promise<FtMap>;
|
|
29
102
|
getTableOfContent(mapId: string): Promise<Array<FtTocNode>>;
|
|
30
103
|
getPages(mapId: string): Promise<FtPaginatedToc>;
|
|
@@ -42,13 +115,13 @@ export declare class FluidTopicsApi {
|
|
|
42
115
|
search(request: FtSearchRequest): Promise<FtSearchResults>;
|
|
43
116
|
getAvailableSearchLocales(): Promise<FtSearchLocales>;
|
|
44
117
|
getMapRating(mapId: string): Promise<FtRatingSummary>;
|
|
45
|
-
getDocumentRating(docId: string): Promise<FtRatingSummary>;
|
|
46
118
|
rateMap(mapId: string, type: FtRatingType, value: number): Promise<void>;
|
|
47
119
|
unrateMap(mapId: string): Promise<void>;
|
|
48
120
|
sendMapFeedback(mapId: string, message: string): Promise<void>;
|
|
49
121
|
rateTopic(mapId: string, tocId: string, type: FtRatingType, value: number): Promise<void>;
|
|
50
122
|
unrateTopic(mapId: string, tocId: string): Promise<void>;
|
|
51
123
|
sendTopicFeedback(mapId: string, tocId: string, message: string): Promise<void>;
|
|
124
|
+
getDocumentRating(docId: string): Promise<FtRatingSummary>;
|
|
52
125
|
rateDocument(docId: string, type: FtRatingType, value: number): Promise<void>;
|
|
53
126
|
unrateDocument(docId: string): Promise<void>;
|
|
54
127
|
sendDocumentFeedback(docId: string, message: string): Promise<void>;
|
|
@@ -56,8 +129,9 @@ export declare class FluidTopicsApi {
|
|
|
56
129
|
post<T>(endpoint: string, data?: any): Promise<T>;
|
|
57
130
|
put<T>(endpoint: string, data?: any): Promise<T>;
|
|
58
131
|
delete<T>(endpoint: string): Promise<T>;
|
|
132
|
+
makeAbsolute(endpoint: string): string;
|
|
59
133
|
fetch<FetchRequestInit, FetchResponse>(endpoint: string, init?: FetchRequestInit): Promise<FetchResponse>;
|
|
60
|
-
upload<T>(method: string, endpoint: string, body:
|
|
134
|
+
upload<T>(method: string, endpoint: string, body: any, onProgress?: (e: any) => void): Promise<T>;
|
|
61
135
|
private makeRequest;
|
|
62
136
|
private fetchRawData;
|
|
63
137
|
}
|
package/dist/mjs/index.js
CHANGED
|
@@ -29,8 +29,80 @@ function getBody(response) {
|
|
|
29
29
|
export class FluidTopicsApi {
|
|
30
30
|
tenantBaseUrl;
|
|
31
31
|
ftCallingApp;
|
|
32
|
-
authorization
|
|
32
|
+
authorization;
|
|
33
33
|
searchLabel;
|
|
34
|
+
endpoints = {
|
|
35
|
+
authentication: {
|
|
36
|
+
login: `api/authentication/login`,
|
|
37
|
+
logout: `api/authentication/logout`,
|
|
38
|
+
currentSession: `api/authentication/current-session`,
|
|
39
|
+
},
|
|
40
|
+
khub: {
|
|
41
|
+
maps: {
|
|
42
|
+
mapId: (mapId) => ({
|
|
43
|
+
info: `api/khub/maps/${mapId}`,
|
|
44
|
+
toc: `api/khub/maps/${mapId}/toc`,
|
|
45
|
+
pages: `api/khub/maps/${mapId}/pages`,
|
|
46
|
+
feedback: `api/khub/maps/${mapId}/feedback`,
|
|
47
|
+
rating: `api/khub/maps/${mapId}/rating`,
|
|
48
|
+
attachments: {
|
|
49
|
+
list: `api/khub/maps/${mapId}/attachments`,
|
|
50
|
+
attachmentId: (attachmentId) => ({
|
|
51
|
+
content: `api/khub/maps/${mapId}/attachments/${attachmentId}/content`,
|
|
52
|
+
})
|
|
53
|
+
},
|
|
54
|
+
resources: {
|
|
55
|
+
list: `api/khub/maps/${mapId}/resources`,
|
|
56
|
+
resourceId: (resourceId) => ({
|
|
57
|
+
content: `api/khub/maps/${mapId}/resources/${resourceId}/content`,
|
|
58
|
+
})
|
|
59
|
+
},
|
|
60
|
+
topics: {
|
|
61
|
+
contentId: (contentId) => ({
|
|
62
|
+
info: `api/khub/maps/${mapId}/topics/${contentId}`,
|
|
63
|
+
content: `api/khub/maps/${mapId}/topics/${contentId}/content`,
|
|
64
|
+
}),
|
|
65
|
+
tocId: (tocId) => ({
|
|
66
|
+
feedback: `api/khub/maps/${mapId}/topics/${tocId}/feedback`,
|
|
67
|
+
rating: `api/khub/maps/${mapId}/topics/${tocId}/rating`,
|
|
68
|
+
})
|
|
69
|
+
},
|
|
70
|
+
})
|
|
71
|
+
},
|
|
72
|
+
documents: {
|
|
73
|
+
documentId: (documentId) => ({
|
|
74
|
+
info: `api/khub/documents/${documentId}`,
|
|
75
|
+
content: `api/khub/documents/${documentId}/content`,
|
|
76
|
+
text: `api/khub/documents/${documentId}/content/text`,
|
|
77
|
+
feedback: `api/khub/documents/${documentId}/feedback`,
|
|
78
|
+
rating: `api/khub/documents/${documentId}/rating`,
|
|
79
|
+
})
|
|
80
|
+
},
|
|
81
|
+
suggest: `api/khub/suggest`,
|
|
82
|
+
clusteredSearch: `api/khub/clustered-search`,
|
|
83
|
+
locales: `api/khub/locales`,
|
|
84
|
+
},
|
|
85
|
+
users: {
|
|
86
|
+
userId: (userId) => ({
|
|
87
|
+
collections: {
|
|
88
|
+
collectionId: (collectionId) => ({
|
|
89
|
+
documents: `api/users/${userId}/collections/${collectionId}/documents`,
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
})
|
|
93
|
+
},
|
|
94
|
+
stylesheets: {
|
|
95
|
+
fonts: `api/stylesheets/fonts.css`,
|
|
96
|
+
theme: `api/stylesheets/theme.css`,
|
|
97
|
+
content: {
|
|
98
|
+
title: `api/stylesheets/content/title.css`,
|
|
99
|
+
topic: `api/stylesheets/content/topic.css`,
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
configuration: {
|
|
103
|
+
reader: `api/configuration/reader`
|
|
104
|
+
},
|
|
105
|
+
};
|
|
34
106
|
get defaultHeaders() {
|
|
35
107
|
return {
|
|
36
108
|
...this.authorization,
|
|
@@ -40,9 +112,9 @@ export class FluidTopicsApi {
|
|
|
40
112
|
}
|
|
41
113
|
constructor(tenantBaseUrl, integrationIdentifier, overrideIdentifierIfOnTenant) {
|
|
42
114
|
//@ts-ignore
|
|
43
|
-
tenantBaseUrl = tenantBaseUrl ?? wnd.__gwt_ft_moduleBase ?? wnd.fluidtopicsclient?.__moduleBase ?? wnd.__gwt_activeModules?.fluidtopicsclient?.moduleBase;
|
|
44
|
-
this.tenantBaseUrl = tenantBaseUrl.
|
|
45
|
-
if (overrideIdentifierIfOnTenant && typeof wnd.location !== "undefined" && wnd.location.href.startsWith(this.tenantBaseUrl
|
|
115
|
+
tenantBaseUrl = (tenantBaseUrl ?? wnd.__gwt_ft_moduleBase ?? wnd.fluidtopicsclient?.__moduleBase ?? wnd.__gwt_activeModules?.fluidtopicsclient?.moduleBase ?? "").trim();
|
|
116
|
+
this.tenantBaseUrl = tenantBaseUrl.endsWith("/") ? tenantBaseUrl : tenantBaseUrl + "/";
|
|
117
|
+
if (overrideIdentifierIfOnTenant && typeof wnd.location !== "undefined" && wnd.location.href.startsWith(this.tenantBaseUrl)) {
|
|
46
118
|
this.ftCallingApp = integrationIdentifier;
|
|
47
119
|
}
|
|
48
120
|
else {
|
|
@@ -70,99 +142,104 @@ export class FluidTopicsApi {
|
|
|
70
142
|
password: password,
|
|
71
143
|
rememberMe: true
|
|
72
144
|
};
|
|
73
|
-
return this.post(
|
|
145
|
+
return this.post(this.endpoints.authentication.login, credentials)
|
|
74
146
|
.then(result => {
|
|
75
147
|
this.setCredentials(login, password);
|
|
76
148
|
return result;
|
|
77
149
|
});
|
|
78
150
|
}
|
|
79
151
|
logout() {
|
|
80
|
-
return this.post(
|
|
152
|
+
return this.post(this.endpoints.authentication.logout)
|
|
81
153
|
.then(() => this.clearAuthentication());
|
|
82
154
|
}
|
|
83
155
|
getCurrentSession() {
|
|
84
|
-
return this.get(
|
|
156
|
+
return this.get(this.endpoints.authentication.currentSession);
|
|
157
|
+
}
|
|
158
|
+
getReaderConfiguration() {
|
|
159
|
+
return this.get(this.endpoints.configuration.reader);
|
|
85
160
|
}
|
|
86
161
|
getMap(mapId) {
|
|
87
|
-
return this.get(
|
|
162
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).info);
|
|
88
163
|
}
|
|
89
164
|
getTableOfContent(mapId) {
|
|
90
|
-
return this.get(
|
|
165
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).toc);
|
|
91
166
|
}
|
|
92
167
|
getPages(mapId) {
|
|
93
|
-
return this.get(
|
|
168
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).pages);
|
|
94
169
|
}
|
|
95
170
|
getTopic(mapId, topicContentId) {
|
|
96
|
-
return this.get(
|
|
171
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).topics.contentId(topicContentId).info);
|
|
97
172
|
}
|
|
98
173
|
getTopicHTMLContent(mapId, topicContentId, target) {
|
|
99
|
-
return this.get(
|
|
174
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).topics.contentId(topicContentId).content + (target ? "?target=" + target : ""));
|
|
100
175
|
}
|
|
101
176
|
getMapAttachments(mapId) {
|
|
102
|
-
return this.get(
|
|
177
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).attachments.list);
|
|
103
178
|
}
|
|
104
179
|
getMapAttachmentContent(mapId, attachmentId) {
|
|
105
|
-
return this.fetchRawData(
|
|
180
|
+
return this.fetchRawData(this.endpoints.khub.maps.mapId(mapId).attachments.attachmentId(attachmentId).content);
|
|
106
181
|
}
|
|
107
182
|
getMapResources(mapId) {
|
|
108
|
-
return this.get(
|
|
183
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).resources.list);
|
|
109
184
|
}
|
|
110
185
|
getMapResourceContent(mapId, resourceId) {
|
|
111
|
-
return this.fetchRawData(
|
|
186
|
+
return this.fetchRawData(this.endpoints.khub.maps.mapId(mapId).resources.resourceId(resourceId).content);
|
|
112
187
|
}
|
|
113
188
|
getUnstructuredDocument(documentId) {
|
|
114
|
-
return this.get(
|
|
189
|
+
return this.get(this.endpoints.khub.documents.documentId(documentId).info);
|
|
115
190
|
}
|
|
116
191
|
getUnstructuredDocumentContent(documentId) {
|
|
117
|
-
return this.fetchRawData(
|
|
192
|
+
return this.fetchRawData(this.endpoints.khub.documents.documentId(documentId).content);
|
|
118
193
|
}
|
|
119
194
|
getUnstructuredDocumentTextContent(documentId) {
|
|
120
|
-
return this.get(
|
|
195
|
+
return this.get(this.endpoints.khub.documents.documentId(documentId).text);
|
|
121
196
|
}
|
|
122
197
|
getCollectionDocuments(userId, collectionId) {
|
|
123
|
-
return this.get(
|
|
198
|
+
return this.get(this.endpoints.users.userId(userId).collections.collectionId(collectionId).documents);
|
|
124
199
|
}
|
|
125
200
|
getSuggestions(request) {
|
|
126
|
-
return this.post(
|
|
201
|
+
return this.post(this.endpoints.khub.suggest, request);
|
|
127
202
|
}
|
|
128
203
|
search(request) {
|
|
129
|
-
return this.post(
|
|
204
|
+
return this.post(this.endpoints.khub.clusteredSearch, request);
|
|
130
205
|
}
|
|
131
206
|
getAvailableSearchLocales() {
|
|
132
|
-
return this.get(
|
|
207
|
+
return this.get(this.endpoints.khub.locales);
|
|
133
208
|
}
|
|
134
209
|
getMapRating(mapId) {
|
|
135
|
-
return this.get(
|
|
136
|
-
}
|
|
137
|
-
getDocumentRating(docId) {
|
|
138
|
-
return this.get(`/api/khub/documents/${docId}/rating`);
|
|
210
|
+
return this.get(this.endpoints.khub.maps.mapId(mapId).rating);
|
|
139
211
|
}
|
|
140
212
|
rateMap(mapId, type, value) {
|
|
141
|
-
return this.post(
|
|
213
|
+
return this.post(this.endpoints.khub.maps.mapId(mapId).rating, { type, value });
|
|
142
214
|
}
|
|
143
215
|
unrateMap(mapId) {
|
|
144
|
-
return this.delete(
|
|
216
|
+
return this.delete(this.endpoints.khub.maps.mapId(mapId).rating);
|
|
145
217
|
}
|
|
146
218
|
sendMapFeedback(mapId, message) {
|
|
147
|
-
return this.post(
|
|
219
|
+
return this.post(this.endpoints.khub.maps.mapId(mapId).feedback, { message });
|
|
148
220
|
}
|
|
149
221
|
rateTopic(mapId, tocId, type, value) {
|
|
150
|
-
return this.post(
|
|
222
|
+
return this.post(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).rating, {
|
|
223
|
+
type, value
|
|
224
|
+
});
|
|
151
225
|
}
|
|
152
226
|
unrateTopic(mapId, tocId) {
|
|
153
|
-
return this.delete(
|
|
227
|
+
return this.delete(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).rating);
|
|
154
228
|
}
|
|
155
229
|
sendTopicFeedback(mapId, tocId, message) {
|
|
156
|
-
return this.post(
|
|
230
|
+
return this.post(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).feedback, { message });
|
|
231
|
+
}
|
|
232
|
+
getDocumentRating(docId) {
|
|
233
|
+
return this.get(this.endpoints.khub.documents.documentId(docId).rating);
|
|
157
234
|
}
|
|
158
235
|
rateDocument(docId, type, value) {
|
|
159
|
-
return this.post(
|
|
236
|
+
return this.post(this.endpoints.khub.documents.documentId(docId).rating, { type, value });
|
|
160
237
|
}
|
|
161
238
|
unrateDocument(docId) {
|
|
162
|
-
return this.delete(
|
|
239
|
+
return this.delete(this.endpoints.khub.documents.documentId(docId).rating);
|
|
163
240
|
}
|
|
164
241
|
sendDocumentFeedback(docId, message) {
|
|
165
|
-
return this.post(
|
|
242
|
+
return this.post(this.endpoints.khub.documents.documentId(docId).feedback, { message });
|
|
166
243
|
}
|
|
167
244
|
get(endpoint) {
|
|
168
245
|
return this.makeRequest("GET", endpoint);
|
|
@@ -176,12 +253,12 @@ export class FluidTopicsApi {
|
|
|
176
253
|
delete(endpoint) {
|
|
177
254
|
return this.makeRequest("DELETE", endpoint);
|
|
178
255
|
}
|
|
256
|
+
makeAbsolute(endpoint) {
|
|
257
|
+
return this.tenantBaseUrl + endpoint.replace(/^\//, "");
|
|
258
|
+
}
|
|
179
259
|
async fetch(endpoint, init) {
|
|
180
260
|
const requestInit = init;
|
|
181
|
-
|
|
182
|
-
endpoint = "/" + endpoint;
|
|
183
|
-
}
|
|
184
|
-
return await fetch(this.tenantBaseUrl + endpoint, {
|
|
261
|
+
return await fetch(this.makeAbsolute(endpoint), {
|
|
185
262
|
...(requestInit ?? {}),
|
|
186
263
|
headers: {
|
|
187
264
|
...this.defaultHeaders,
|
|
@@ -189,22 +266,27 @@ export class FluidTopicsApi {
|
|
|
189
266
|
}
|
|
190
267
|
});
|
|
191
268
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
269
|
+
upload(method, endpoint, body, onProgress = () => undefined) {
|
|
270
|
+
if (typeof XMLHttpRequest !== "undefined") {
|
|
271
|
+
return new Promise((resolve, reject) => {
|
|
272
|
+
let xhr = new XMLHttpRequest();
|
|
273
|
+
xhr.onload = () => {
|
|
274
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
275
|
+
let data = xhr.getResponseHeader("Content-Type") === "application/json" ? JSON.parse(xhr.responseText) : xhr.responseText;
|
|
276
|
+
resolve(data);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
reject(new HttpError(xhr.status, xhr.statusText, xhr.responseText));
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
xhr.upload.onprogress = (e) => onProgress(e);
|
|
283
|
+
xhr.open(method, this.makeAbsolute(endpoint), true);
|
|
284
|
+
xhr.send(body);
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
return this.fetch(endpoint, { method, body }).then(handleError).then(getBody);
|
|
289
|
+
}
|
|
208
290
|
}
|
|
209
291
|
makeRequest(method, endpoint, data) {
|
|
210
292
|
return this.fetch(endpoint, {
|
|
@@ -212,13 +294,17 @@ export class FluidTopicsApi {
|
|
|
212
294
|
headers: {
|
|
213
295
|
...(data != null ? { "Content-Type": "application/json" } : {})
|
|
214
296
|
},
|
|
215
|
-
body: data != null ? JSON.stringify(data) : undefined
|
|
297
|
+
body: data != null ? JSON.stringify(data) : undefined,
|
|
298
|
+
credentials: this.authorization == null ? "include" : undefined
|
|
216
299
|
})
|
|
217
300
|
.then(handleError)
|
|
218
301
|
.then(getBody);
|
|
219
302
|
}
|
|
220
303
|
fetchRawData(endpoint) {
|
|
221
|
-
return fetch(this.
|
|
304
|
+
return fetch(this.makeAbsolute(endpoint), {
|
|
305
|
+
headers: this.defaultHeaders,
|
|
306
|
+
credentials: this.authorization == null ? "include" : undefined
|
|
307
|
+
})
|
|
222
308
|
.then(handleError)
|
|
223
309
|
.then(response => response.arrayBuffer());
|
|
224
310
|
}
|
|
@@ -24,7 +24,6 @@ export interface FtMap {
|
|
|
24
24
|
editorialType: FtEditorialType;
|
|
25
25
|
baseId: string;
|
|
26
26
|
clusterId: string;
|
|
27
|
-
shouldSplitCurrentPageToc?: boolean;
|
|
28
27
|
title: string;
|
|
29
28
|
lastPublication: string;
|
|
30
29
|
lastEdition: string;
|
|
@@ -46,6 +45,7 @@ export interface FtMapStyles {
|
|
|
46
45
|
export declare const isFtMapStyles: (o: any) => o is FtMapStyles;
|
|
47
46
|
export interface FtTocNode {
|
|
48
47
|
prettyUrl?: string;
|
|
48
|
+
hasRating?: boolean;
|
|
49
49
|
tocId: string;
|
|
50
50
|
children: Array<FtTocNode>;
|
|
51
51
|
contentId: string;
|
|
@@ -120,7 +120,7 @@ export declare enum FtRatingType {
|
|
|
120
120
|
export declare type FtRatingTypeKeys = keyof typeof FtRatingType;
|
|
121
121
|
export declare const isFtRatingType: (o: any) => o is FtRatingType;
|
|
122
122
|
export interface FtPublicationRating {
|
|
123
|
-
date: Date;
|
|
123
|
+
date: Date | string;
|
|
124
124
|
type: FtRatingType;
|
|
125
125
|
value: number;
|
|
126
126
|
}
|
|
@@ -141,7 +141,7 @@ export interface FtRatingSummary {
|
|
|
141
141
|
}
|
|
142
142
|
export declare const isFtRatingSummary: (o: any) => o is FtRatingSummary;
|
|
143
143
|
export interface FtTopicRating {
|
|
144
|
-
date: Date;
|
|
144
|
+
date: Date | string;
|
|
145
145
|
tocId: string;
|
|
146
146
|
type: FtRatingType;
|
|
147
147
|
value: number;
|
|
@@ -374,6 +374,29 @@ export interface FtSuggestResults {
|
|
|
374
374
|
suggestions: Array<FtSuggestResult>;
|
|
375
375
|
}
|
|
376
376
|
export declare const isFtSuggestResults: (o: any) => o is FtSuggestResults;
|
|
377
|
+
export declare enum FtUserRole {
|
|
378
|
+
PERSONAL_BOOK_USER = "PERSONAL_BOOK_USER",
|
|
379
|
+
PERSONAL_BOOK_SHARE_USER = "PERSONAL_BOOK_SHARE_USER",
|
|
380
|
+
HTML_EXPORT_USER = "HTML_EXPORT_USER",
|
|
381
|
+
PDF_EXPORT_USER = "PDF_EXPORT_USER",
|
|
382
|
+
SAVED_SEARCH_USER = "SAVED_SEARCH_USER",
|
|
383
|
+
COLLECTION_USER = "COLLECTION_USER",
|
|
384
|
+
OFFLINE_USER = "OFFLINE_USER",
|
|
385
|
+
ANALYTICS_USER = "ANALYTICS_USER",
|
|
386
|
+
BETA_USER = "BETA_USER",
|
|
387
|
+
DEBUG_USER = "DEBUG_USER",
|
|
388
|
+
PRINT_USER = "PRINT_USER",
|
|
389
|
+
RATING_USER = "RATING_USER",
|
|
390
|
+
FEEDBACK_USER = "FEEDBACK_USER",
|
|
391
|
+
CONTENT_PUBLISHER = "CONTENT_PUBLISHER",
|
|
392
|
+
KHUB_ADMIN = "KHUB_ADMIN",
|
|
393
|
+
USERS_ADMIN = "USERS_ADMIN",
|
|
394
|
+
PORTAL_ADMIN = "PORTAL_ADMIN",
|
|
395
|
+
ADMIN = "ADMIN",
|
|
396
|
+
DEVELOPER = "DEVELOPER"
|
|
397
|
+
}
|
|
398
|
+
export declare type FtUserRoleKeys = keyof typeof FtUserRole;
|
|
399
|
+
export declare const isFtUserRole: (o: any) => o is FtUserRole;
|
|
377
400
|
export interface FtAuthenticationIdentifier {
|
|
378
401
|
identifier: string;
|
|
379
402
|
realm: string;
|
|
@@ -30,7 +30,6 @@ export const isFtMap = (o) => {
|
|
|
30
30
|
&& (isFtEditorialType(o.editorialType))
|
|
31
31
|
&& (isString(o.baseId))
|
|
32
32
|
&& (isString(o.clusterId))
|
|
33
|
-
&& (o.shouldSplitCurrentPageToc == null || isBoolean(o.shouldSplitCurrentPageToc))
|
|
34
33
|
&& (isString(o.title))
|
|
35
34
|
&& (isString(o.lastPublication))
|
|
36
35
|
&& (isString(o.lastEdition))
|
|
@@ -53,6 +52,7 @@ export const isFtMapStyles = (o) => {
|
|
|
53
52
|
export const isFtTocNode = (o) => {
|
|
54
53
|
return isObject(o)
|
|
55
54
|
&& (o.prettyUrl == null || isString(o.prettyUrl))
|
|
55
|
+
&& (o.hasRating == null || isBoolean(o.hasRating))
|
|
56
56
|
&& (isString(o.tocId))
|
|
57
57
|
&& ((Array.isArray(o.children)
|
|
58
58
|
&& o.children.every((v) => isFtTocNode(v))))
|
|
@@ -423,6 +423,32 @@ export const isFtSuggestResults = (o) => {
|
|
|
423
423
|
&& ((Array.isArray(o.suggestions)
|
|
424
424
|
&& o.suggestions.every((v) => isFtSuggestResult(v))));
|
|
425
425
|
};
|
|
426
|
+
// From: Role
|
|
427
|
+
export var FtUserRole;
|
|
428
|
+
(function (FtUserRole) {
|
|
429
|
+
FtUserRole["PERSONAL_BOOK_USER"] = "PERSONAL_BOOK_USER";
|
|
430
|
+
FtUserRole["PERSONAL_BOOK_SHARE_USER"] = "PERSONAL_BOOK_SHARE_USER";
|
|
431
|
+
FtUserRole["HTML_EXPORT_USER"] = "HTML_EXPORT_USER";
|
|
432
|
+
FtUserRole["PDF_EXPORT_USER"] = "PDF_EXPORT_USER";
|
|
433
|
+
FtUserRole["SAVED_SEARCH_USER"] = "SAVED_SEARCH_USER";
|
|
434
|
+
FtUserRole["COLLECTION_USER"] = "COLLECTION_USER";
|
|
435
|
+
FtUserRole["OFFLINE_USER"] = "OFFLINE_USER";
|
|
436
|
+
FtUserRole["ANALYTICS_USER"] = "ANALYTICS_USER";
|
|
437
|
+
FtUserRole["BETA_USER"] = "BETA_USER";
|
|
438
|
+
FtUserRole["DEBUG_USER"] = "DEBUG_USER";
|
|
439
|
+
FtUserRole["PRINT_USER"] = "PRINT_USER";
|
|
440
|
+
FtUserRole["RATING_USER"] = "RATING_USER";
|
|
441
|
+
FtUserRole["FEEDBACK_USER"] = "FEEDBACK_USER";
|
|
442
|
+
FtUserRole["CONTENT_PUBLISHER"] = "CONTENT_PUBLISHER";
|
|
443
|
+
FtUserRole["KHUB_ADMIN"] = "KHUB_ADMIN";
|
|
444
|
+
FtUserRole["USERS_ADMIN"] = "USERS_ADMIN";
|
|
445
|
+
FtUserRole["PORTAL_ADMIN"] = "PORTAL_ADMIN";
|
|
446
|
+
FtUserRole["ADMIN"] = "ADMIN";
|
|
447
|
+
FtUserRole["DEVELOPER"] = "DEVELOPER";
|
|
448
|
+
})(FtUserRole || (FtUserRole = {}));
|
|
449
|
+
export const isFtUserRole = (o) => {
|
|
450
|
+
return ["PERSONAL_BOOK_USER", "PERSONAL_BOOK_SHARE_USER", "HTML_EXPORT_USER", "PDF_EXPORT_USER", "SAVED_SEARCH_USER", "COLLECTION_USER", "OFFLINE_USER", "ANALYTICS_USER", "BETA_USER", "DEBUG_USER", "PRINT_USER", "RATING_USER", "FEEDBACK_USER", "CONTENT_PUBLISHER", "KHUB_ADMIN", "USERS_ADMIN", "PORTAL_ADMIN", "ADMIN", "DEVELOPER"].includes(o);
|
|
451
|
+
};
|
|
426
452
|
export const isFtAuthenticationIdentifier = (o) => {
|
|
427
453
|
return isObject(o)
|
|
428
454
|
&& (isString(o.identifier))
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
export interface FtReaderConfiguration {
|
|
2
|
+
loadAfterLastVisibleTopic: number;
|
|
3
|
+
feedbackMailsSentByFluidTopics: boolean;
|
|
4
|
+
loadBeforeFirstVisibleTopic: number;
|
|
5
|
+
}
|
|
6
|
+
export declare const isFtReaderConfiguration: (o: any) => o is FtReaderConfiguration;
|
|
1
7
|
export interface FtAuthenticatedSession {
|
|
2
8
|
authenticationIdentifier: any;
|
|
3
9
|
profile: FtUserProfile;
|
|
@@ -6,7 +12,7 @@ export declare const isFtAuthenticatedSession: (o: any) => o is FtAuthenticatedS
|
|
|
6
12
|
export interface FtSession {
|
|
7
13
|
authenticationIdentifier?: any;
|
|
8
14
|
idleTimeoutInMillis: number;
|
|
9
|
-
profile
|
|
15
|
+
profile: FtUserProfile;
|
|
10
16
|
sessionAuthenticated: boolean;
|
|
11
17
|
}
|
|
12
18
|
export declare const isFtSession: (o: any) => o is FtSession;
|
|
@@ -14,7 +20,7 @@ export interface FtUserProfile {
|
|
|
14
20
|
emailAddress?: string;
|
|
15
21
|
displayName?: string;
|
|
16
22
|
roles: Array<any>;
|
|
17
|
-
userId
|
|
23
|
+
userId?: string;
|
|
18
24
|
}
|
|
19
25
|
export declare const isFtUserProfile: (o: any) => o is FtUserProfile;
|
|
20
26
|
export interface FtMapAttachment {
|
|
@@ -39,6 +45,7 @@ export interface FtPaginatedToc {
|
|
|
39
45
|
export declare const isFtPaginatedToc: (o: any) => o is FtPaginatedToc;
|
|
40
46
|
export interface FtPaginatedTocNode {
|
|
41
47
|
prettyUrl?: string;
|
|
48
|
+
hasRating?: boolean;
|
|
42
49
|
pageToc?: Array<any>;
|
|
43
50
|
tocId?: string;
|
|
44
51
|
children: Array<FtPaginatedTocNode>;
|
|
@@ -2,6 +2,12 @@ const isObject = (o) => typeof o === "object" && o != null;
|
|
|
2
2
|
const isBoolean = (o) => typeof o === "boolean";
|
|
3
3
|
const isNumber = (o) => typeof o === "number";
|
|
4
4
|
const isString = (o) => typeof o === "string";
|
|
5
|
+
export const isFtReaderConfiguration = (o) => {
|
|
6
|
+
return isObject(o)
|
|
7
|
+
&& (isNumber(o.loadAfterLastVisibleTopic))
|
|
8
|
+
&& (isBoolean(o.feedbackMailsSentByFluidTopics))
|
|
9
|
+
&& (isNumber(o.loadBeforeFirstVisibleTopic));
|
|
10
|
+
};
|
|
5
11
|
export const isFtAuthenticatedSession = (o) => {
|
|
6
12
|
return isObject(o)
|
|
7
13
|
&& (isFtUserProfile(o.profile));
|
|
@@ -9,7 +15,7 @@ export const isFtAuthenticatedSession = (o) => {
|
|
|
9
15
|
export const isFtSession = (o) => {
|
|
10
16
|
return isObject(o)
|
|
11
17
|
&& (isNumber(o.idleTimeoutInMillis))
|
|
12
|
-
&& (
|
|
18
|
+
&& (isFtUserProfile(o.profile))
|
|
13
19
|
&& (isBoolean(o.sessionAuthenticated));
|
|
14
20
|
};
|
|
15
21
|
export const isFtUserProfile = (o) => {
|
|
@@ -17,7 +23,7 @@ export const isFtUserProfile = (o) => {
|
|
|
17
23
|
&& (o.emailAddress == null || isString(o.emailAddress))
|
|
18
24
|
&& (o.displayName == null || isString(o.displayName))
|
|
19
25
|
&& ((Array.isArray(o.roles)))
|
|
20
|
-
&& (isString(o.userId));
|
|
26
|
+
&& (o.userId == null || isString(o.userId));
|
|
21
27
|
};
|
|
22
28
|
export const isFtMapAttachment = (o) => {
|
|
23
29
|
return isObject(o)
|
|
@@ -44,6 +50,7 @@ export const isFtPaginatedToc = (o) => {
|
|
|
44
50
|
export const isFtPaginatedTocNode = (o) => {
|
|
45
51
|
return isObject(o)
|
|
46
52
|
&& (o.prettyUrl == null || isString(o.prettyUrl))
|
|
53
|
+
&& (o.hasRating == null || isBoolean(o.hasRating))
|
|
47
54
|
&& (o.pageToc == null || (Array.isArray(o.pageToc)))
|
|
48
55
|
&& (o.tocId == null || isString(o.tocId))
|
|
49
56
|
&& ((Array.isArray(o.children)
|