@fluid-topics/public-api 1.0.27 → 1.0.28

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 CHANGED
@@ -54,12 +54,81 @@ function getBody(response) {
54
54
  }
55
55
  class FluidTopicsApi {
56
56
  constructor(tenantBaseUrl, integrationIdentifier, overrideIdentifierIfOnTenant) {
57
- var _a, _b, _c, _d, _e;
57
+ var _a, _b, _c, _d, _e, _f;
58
58
  this.authorization = {};
59
+ this.endpoints = {
60
+ authentication: {
61
+ login: `api/authentication/login`,
62
+ logout: `api/authentication/logout`,
63
+ currentSession: `api/authentication/current-session`,
64
+ },
65
+ khub: {
66
+ maps: {
67
+ mapId: (mapId) => ({
68
+ info: `api/khub/maps/${mapId}`,
69
+ toc: `api/khub/maps/${mapId}/toc`,
70
+ pages: `api/khub/maps/${mapId}/pages`,
71
+ feedback: `api/khub/maps/${mapId}/feedback`,
72
+ rating: `api/khub/maps/${mapId}/rating`,
73
+ attachments: {
74
+ list: `api/khub/maps/${mapId}/attachments`,
75
+ attachmentId: (attachmentId) => ({
76
+ content: `api/khub/maps/${mapId}/attachments/${attachmentId}/content`,
77
+ })
78
+ },
79
+ resources: {
80
+ list: `api/khub/maps/${mapId}/resources`,
81
+ resourceId: (resourceId) => ({
82
+ content: `api/khub/maps/${mapId}/resources/${resourceId}/content`,
83
+ })
84
+ },
85
+ topics: {
86
+ contentId: (contentId) => ({
87
+ info: `api/khub/maps/${mapId}/topics/${contentId}`,
88
+ content: `api/khub/maps/${mapId}/topics/${contentId}/content`,
89
+ }),
90
+ tocId: (tocId) => ({
91
+ feedback: `api/khub/maps/${mapId}/topics/${tocId}/feedback`,
92
+ rating: `api/khub/maps/${mapId}/topics/${tocId}/rating`,
93
+ })
94
+ },
95
+ })
96
+ },
97
+ documents: {
98
+ documentId: (documentId) => ({
99
+ info: `api/khub/documents/${documentId}`,
100
+ content: `api/khub/documents/${documentId}/content`,
101
+ text: `api/khub/documents/${documentId}/content/text`,
102
+ feedback: `api/khub/documents/${documentId}/feedback`,
103
+ rating: `api/khub/documents/${documentId}/rating`,
104
+ })
105
+ },
106
+ suggest: `api/khub/suggest`,
107
+ clusteredSearch: `api/khub/clustered-search`,
108
+ locales: `api/khub/locales`,
109
+ },
110
+ users: {
111
+ userId: (userId) => ({
112
+ collections: {
113
+ collectionId: (collectionId) => ({
114
+ documents: `api/users/${userId}/collections/${collectionId}/documents`,
115
+ })
116
+ }
117
+ })
118
+ },
119
+ stylesheets: {
120
+ fonts: `api/stylesheets/fonts.css`,
121
+ theme: `api/stylesheets/theme.css`,
122
+ content: {
123
+ title: `api/stylesheets/content/title.css`,
124
+ topic: `api/stylesheets/content/topic.css`,
125
+ },
126
+ },
127
+ };
59
128
  //@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.trim().replace(/\/$/, "");
62
- if (overrideIdentifierIfOnTenant && typeof wnd.location !== "undefined" && wnd.location.href.startsWith(this.tenantBaseUrl + "/")) {
129
+ 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();
130
+ this.tenantBaseUrl = tenantBaseUrl.endsWith("/") ? tenantBaseUrl : tenantBaseUrl + "/";
131
+ if (overrideIdentifierIfOnTenant && typeof wnd.location !== "undefined" && wnd.location.href.startsWith(this.tenantBaseUrl)) {
63
132
  this.ftCallingApp = integrationIdentifier;
64
133
  }
65
134
  else {
@@ -90,99 +159,101 @@ class FluidTopicsApi {
90
159
  password: password,
91
160
  rememberMe: true
92
161
  };
93
- return this.post(`/api/authentication/login`, credentials)
162
+ return this.post(this.endpoints.authentication.login, credentials)
94
163
  .then(result => {
95
164
  this.setCredentials(login, password);
96
165
  return result;
97
166
  });
98
167
  }
99
168
  logout() {
100
- return this.post(`/api/authentication/logout`)
169
+ return this.post(this.endpoints.authentication.logout)
101
170
  .then(() => this.clearAuthentication());
102
171
  }
103
172
  getCurrentSession() {
104
- return this.get(`/api/authentication/current-session`);
173
+ return this.get(this.endpoints.authentication.currentSession);
105
174
  }
106
175
  getMap(mapId) {
107
- return this.get(`/api/khub/maps/${mapId}`);
176
+ return this.get(this.endpoints.khub.maps.mapId(mapId).info);
108
177
  }
109
178
  getTableOfContent(mapId) {
110
- return this.get(`/api/khub/maps/${mapId}/toc`);
179
+ return this.get(this.endpoints.khub.maps.mapId(mapId).toc);
111
180
  }
112
181
  getPages(mapId) {
113
- return this.get(`/api/khub/maps/${mapId}/pages`);
182
+ return this.get(this.endpoints.khub.maps.mapId(mapId).pages);
114
183
  }
115
184
  getTopic(mapId, topicContentId) {
116
- return this.get(`/api/khub/maps/${mapId}/topics/${topicContentId}`);
185
+ return this.get(this.endpoints.khub.maps.mapId(mapId).topics.contentId(topicContentId).info);
117
186
  }
118
187
  getTopicHTMLContent(mapId, topicContentId, target) {
119
- return this.get(`/api/khub/maps/${mapId}/topics/${topicContentId}/content${target ? "?target=" + target : ""}`);
188
+ return this.get(this.endpoints.khub.maps.mapId(mapId).topics.contentId(topicContentId).content + (target ? "?target=" + target : ""));
120
189
  }
121
190
  getMapAttachments(mapId) {
122
- return this.get(`/api/khub/maps/${mapId}/attachments`);
191
+ return this.get(this.endpoints.khub.maps.mapId(mapId).attachments.list);
123
192
  }
124
193
  getMapAttachmentContent(mapId, attachmentId) {
125
- return this.fetchRawData(`/api/khub/maps/${mapId}/attachments/${attachmentId}/content`);
194
+ return this.fetchRawData(this.endpoints.khub.maps.mapId(mapId).attachments.attachmentId(attachmentId).content);
126
195
  }
127
196
  getMapResources(mapId) {
128
- return this.get(`/api/khub/maps/${mapId}/resources`);
197
+ return this.get(this.endpoints.khub.maps.mapId(mapId).resources.list);
129
198
  }
130
199
  getMapResourceContent(mapId, resourceId) {
131
- return this.fetchRawData(`/api/khub/maps/${mapId}/resources/${resourceId}/content`);
200
+ return this.fetchRawData(this.endpoints.khub.maps.mapId(mapId).resources.resourceId(resourceId).content);
132
201
  }
133
202
  getUnstructuredDocument(documentId) {
134
- return this.get(`/api/khub/documents/${documentId}`);
203
+ return this.get(this.endpoints.khub.documents.documentId(documentId).info);
135
204
  }
136
205
  getUnstructuredDocumentContent(documentId) {
137
- return this.fetchRawData(`/api/khub/documents/${documentId}/content`);
206
+ return this.fetchRawData(this.endpoints.khub.documents.documentId(documentId).content);
138
207
  }
139
208
  getUnstructuredDocumentTextContent(documentId) {
140
- return this.get(`/api/khub/documents/${documentId}/content/text`);
209
+ return this.get(this.endpoints.khub.documents.documentId(documentId).text);
141
210
  }
142
211
  getCollectionDocuments(userId, collectionId) {
143
- return this.get(`/api/users/${userId}/collections/${collectionId}/documents`);
212
+ return this.get(this.endpoints.users.userId(userId).collections.collectionId(collectionId).documents);
144
213
  }
145
214
  getSuggestions(request) {
146
- return this.post("/api/khub/suggest", request);
215
+ return this.post(this.endpoints.khub.suggest, request);
147
216
  }
148
217
  search(request) {
149
- return this.post("/api/khub/clustered-search", request);
218
+ return this.post(this.endpoints.khub.clusteredSearch, request);
150
219
  }
151
220
  getAvailableSearchLocales() {
152
- return this.get("/api/khub/locales");
221
+ return this.get(this.endpoints.khub.locales);
153
222
  }
154
223
  getMapRating(mapId) {
155
- return this.get(`/api/khub/maps/${mapId}/rating`);
156
- }
157
- getDocumentRating(docId) {
158
- return this.get(`/api/khub/documents/${docId}/rating`);
224
+ return this.get(this.endpoints.khub.maps.mapId(mapId).rating);
159
225
  }
160
226
  rateMap(mapId, type, value) {
161
- return this.post(`/api/khub/maps/${mapId}/rating`, { type, value });
227
+ return this.post(this.endpoints.khub.maps.mapId(mapId).rating, { type, value });
162
228
  }
163
229
  unrateMap(mapId) {
164
- return this.delete(`/api/khub/maps/${mapId}/rating`);
230
+ return this.delete(this.endpoints.khub.maps.mapId(mapId).rating);
165
231
  }
166
232
  sendMapFeedback(mapId, message) {
167
- return this.post(`/api/khub/maps/${mapId}/feedback`, { message });
233
+ return this.post(this.endpoints.khub.maps.mapId(mapId).feedback, { message });
168
234
  }
169
235
  rateTopic(mapId, tocId, type, value) {
170
- return this.post(`/api/khub/maps/${mapId}/topics/${tocId}/rating`, { type, value });
236
+ return this.post(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).rating, {
237
+ type, value
238
+ });
171
239
  }
172
240
  unrateTopic(mapId, tocId) {
173
- return this.delete(`/api/khub/maps/${mapId}/topics/${tocId}/rating`);
241
+ return this.delete(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).rating);
174
242
  }
175
243
  sendTopicFeedback(mapId, tocId, message) {
176
- return this.post(`/api/khub/maps/${mapId}/topics/${tocId}/feedback`, { message });
244
+ return this.post(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).feedback, { message });
245
+ }
246
+ getDocumentRating(docId) {
247
+ return this.get(this.endpoints.khub.documents.documentId(docId).rating);
177
248
  }
178
249
  rateDocument(docId, type, value) {
179
- return this.post(`/api/khub/documents/${docId}/rating`, { type, value });
250
+ return this.post(this.endpoints.khub.documents.documentId(docId).rating, { type, value });
180
251
  }
181
252
  unrateDocument(docId) {
182
- return this.delete(`/api/khub/documents/${docId}/rating`);
253
+ return this.delete(this.endpoints.khub.documents.documentId(docId).rating);
183
254
  }
184
255
  sendDocumentFeedback(docId, message) {
185
- return this.post(`/api/khub/documents/${docId}/feedback`, { message });
256
+ return this.post(this.endpoints.khub.documents.documentId(docId).feedback, { message });
186
257
  }
187
258
  get(endpoint) {
188
259
  return this.makeRequest("GET", endpoint);
@@ -196,18 +267,18 @@ class FluidTopicsApi {
196
267
  delete(endpoint) {
197
268
  return this.makeRequest("DELETE", endpoint);
198
269
  }
270
+ makeAbsolute(endpoint) {
271
+ return this.tenantBaseUrl + endpoint.replace(/^\//, "");
272
+ }
199
273
  fetch(endpoint, init) {
200
274
  var _a;
201
275
  return __awaiter(this, void 0, void 0, function* () {
202
276
  const requestInit = init;
203
- if (!endpoint.startsWith("/")) {
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 : {})) }));
277
+ 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
278
  });
208
279
  }
209
280
  upload(method, endpoint, body, onProgress = () => undefined) {
210
- return __awaiter(this, void 0, void 0, function* () {
281
+ if (typeof XMLHttpRequest !== "undefined") {
211
282
  return new Promise((resolve, reject) => {
212
283
  let xhr = new XMLHttpRequest();
213
284
  xhr.onload = () => {
@@ -220,10 +291,13 @@ class FluidTopicsApi {
220
291
  }
221
292
  };
222
293
  xhr.upload.onprogress = (e) => onProgress(e);
223
- xhr.open(method, this.tenantBaseUrl + endpoint, true);
294
+ xhr.open(method, this.makeAbsolute(endpoint), true);
224
295
  xhr.send(body);
225
296
  });
226
- });
297
+ }
298
+ else {
299
+ return this.fetch(endpoint, { method, body }).then(handleError).then(getBody);
300
+ }
227
301
  }
228
302
  makeRequest(method, endpoint, data) {
229
303
  return this.fetch(endpoint, {
@@ -235,7 +309,7 @@ class FluidTopicsApi {
235
309
  .then(getBody);
236
310
  }
237
311
  fetchRawData(endpoint) {
238
- return fetch(this.tenantBaseUrl + endpoint, { headers: this.defaultHeaders })
312
+ return fetch(this.makeAbsolute(endpoint), { headers: this.defaultHeaders })
239
313
  .then(handleError)
240
314
  .then(response => response.arrayBuffer());
241
315
  }
@@ -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:{},n={exports:{}},a={exports:{}};!function(e,t){var n=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n)return n;throw new Error("unable to locate global object")}();e.exports=t=n.fetch,n.fetch&&(t.default=n.fetch.bind(n)),t.Headers=n.Headers,t.Request=n.Request,t.Response=n.Response}(a,a.exports),function(e,t){const n=a.exports,i=n.default||n,s=function(e,t){return/^\/\//.test(e)&&(e="https:"+e),i.call(this,e,t)};s.ponyfill=!0,e.exports=t=s,t.fetch=s,t.Headers=n.Headers,t.Request=n.Request,t.Response=n.Response,t.default=s}(n,n.exports);const i=n.exports,s=i.fetch.bind({});s.polyfill=!0,t.fetch||(t.fetch=s,t.Response=i.Response,t.Headers=i.Headers,t.Request=i.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))),p=e=>r(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=>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 m;e.FtRatingType=void 0,(m=e.FtRatingType||(e.FtRatingType={})).STARS="STARS",m.LIKE="LIKE",m.DICHOTOMOUS="DICHOTOMOUS",m.NO_RATING="NO_RATING";const g=e=>["STARS","LIKE","DICHOTOMOUS","NO_RATING"].includes(e),f=e=>r(e)&&u(e.date)&&g(e.type)&&l(e.value),A=e=>r(e)&&(null==e.rating||f(e.rating))&&g(e.type),b=e=>r(e)&&u(e.date)&&u(e.tocId)&&g(e.type)&&l(e.value),T=e=>r(e)&&Array.isArray(e.ratings)&&e.ratings.every((e=>b(e)))&&g(e.type),I=e=>r(e)&&Array.isArray(e.filter)&&e.filter.every((e=>u(e)))&&Array.isArray(e.prior)&&e.prior.every((e=>u(e))),F=e=>r(e)&&o(e.negative)&&Array.isArray(e.values)&&e.values.every((e=>u(e)))&&u(e.key),R=e=>r(e)&&l(e.totalResultsCount)&&o(e.lastPage)&&l(e.currentPage)&&l(e.totalClustersCount);var S;e.FtEditorialType=void 0,(S=e.FtEditorialType||(e.FtEditorialType={})).ARTICLE="ARTICLE",S.BOOK="BOOK";const k=e=>["ARTICLE","BOOK"].includes(e);var v;e.FtOpenMode=void 0,(v=e.FtOpenMode||(e.FtOpenMode={})).FLUIDTOPICS="FLUIDTOPICS",v.EXTERNAL="EXTERNAL";const C=e=>["FLUIDTOPICS","EXTERNAL"].includes(e),E=e=>r(e)&&(null==e.perPage||l(e.perPage))&&l(e.page);var U;e.FtCollectionDocumentType=void 0,(U=e.FtCollectionDocumentType||(e.FtCollectionDocumentType={})).MAP="MAP",U.DOCUMENT="DOCUMENT",U.TOPIC="TOPIC",U.PERSONAL_BOOK="PERSONAL_BOOK",U.SHARED_BOOK="SHARED_BOOK";const O=e=>["MAP","DOCUMENT","TOPIC","PERSONAL_BOOK","SHARED_BOOK"].includes(e),P=e=>r(e)&&l(e.weight)&&u(e.value)&&u(e.key),D=e=>r(e)&&Array.isArray(e.entries)&&e.entries.every((e=>M(e)))&&(null==e.metadataVariableAxis||u(e.metadataVariableAxis)),M=e=>r(e)&&(null==e.document||w(e.document))&&(null==e.topic||N(e.topic))&&$(e.type)&&(null==e.map||L(e.map)),w=e=>r(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&C(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||C(e.openMode))&&k(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),N=e=>r(e)&&Array.isArray(e.metadata)&&e.metadata.every((e=>y(e)))&&C(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 x;e.FtSearchResultType=void 0,(x=e.FtSearchResultType||(e.FtSearchResultType={})).MAP="MAP",x.DOCUMENT="DOCUMENT",x.TOPIC="TOPIC";const $=e=>["MAP","DOCUMENT","TOPIC"].includes(e),_=e=>r(e)&&o(e.hierarchical)&&u(e.label)&&o(e.multiSelectionable)&&u(e.key)&&Array.isArray(e.rootNodes)&&e.rootNodes.every((e=>B(e))),H=e=>r(e)&&(null==e.maxDepth||l(e.maxDepth))&&u(e.id),B=e=>r(e)&&l(e.totalResultsCount)&&o(e.descendantSelected)&&Array.isArray(e.childNodes)&&e.childNodes.every((e=>B(e)))&&u(e.label)&&u(e.value)&&o(e.selected),q=e=>r(e)&&u(e.key),G=e=>r(e)&&u(e.suggestedQuery)&&u(e.htmlSuggestedQuery),K=e=>r(e)&&u(e.filename)&&u(e.resourceUrl)&&u(e.id)&&u(e.mimeType)&&u(e.resourceContentUrl)&&u(e.viewerUrl),V=e=>r(e)&&(null==e.filenameExtension||u(e.filenameExtension))&&(null==e.editorialType||k(e.editorialType))&&(null==e.mimeType||u(e.mimeType))&&$(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 n in e){let a=e[n];("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[n]=a}return t}function ne(e){return`${e}-FluidTopicsUnauthenticatedUserSearchPreferences`}const ae="undefined"==typeof window?globalThis:window;class ie extends Error{status;statusText;body;constructor(e,t,n){super(`${e} - ${t}: ${n}`),this.status=e,this.statusText=t,this.body=n}}async function se(e){if(!e.ok)throw new ie(e.status,e.statusText,await e.text());return e}function re(e){return"application/json"===e.headers.get("Content-Type")?e.json():e.text()}class oe{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"}}};get defaultHeaders(){return{...this.authorization,...this.searchLabel,"Ft-Calling-App":this.ftCallingApp}}constructor(e,t,n){e=(e??ae.__gwt_ft_moduleBase??ae.fluidtopicsclient?.__moduleBase??ae.__gwt_activeModules?.fluidtopicsclient?.moduleBase??"").trim(),this.tenantBaseUrl=e.endsWith("/")?e:e+"/",n&&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 n;this.authorization={Authorization:"Basic "+(n=`${e}:${t}`,"undefined"!=typeof Buffer?Buffer.from(n).toString("base64"):btoa(n))}}clearAuthentication(){this.authorization=void 0}setSearchLabel(e){this.searchLabel={"FT-search-label":e}}clearSearchLabel(){this.searchLabel=void 0}login(e,t){let n={login:e,password:t,rememberMe:!0};return this.post(this.endpoints.authentication.login,n).then((n=>(this.setCredentials(e,t),n)))}logout(){return this.post(this.endpoints.authentication.logout).then((()=>this.clearAuthentication()))}getCurrentSession(){return this.get(this.endpoints.authentication.currentSession)}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,n){return this.get(this.endpoints.khub.maps.mapId(e).topics.contentId(t).content+(n?"?target="+n:""))}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,n){return this.post(this.endpoints.khub.maps.mapId(e).rating,{type:t,value:n})}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,n,a){return this.post(this.endpoints.khub.maps.mapId(e).topics.tocId(t).rating,{type:n,value:a})}unrateTopic(e,t){return this.delete(this.endpoints.khub.maps.mapId(e).topics.tocId(t).rating)}sendTopicFeedback(e,t,n){return this.post(this.endpoints.khub.maps.mapId(e).topics.tocId(t).feedback,{message:n})}getDocumentRating(e){return this.get(this.endpoints.khub.documents.documentId(e).rating)}rateDocument(e,t,n){return this.post(this.endpoints.khub.documents.documentId(e).rating,{type:t,value:n})}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 n=t;return await fetch(this.makeAbsolute(e),{...n??{},headers:{...this.defaultHeaders,...n?.headers??{}}})}upload(e,t,n,a=(()=>{})){return"undefined"!=typeof XMLHttpRequest?new Promise(((i,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;i(e)}else s(new ie(r.status,r.statusText,r.responseText))},r.upload.onprogress=e=>a(e),r.open(e,this.makeAbsolute(t),!0),r.send(n)})):this.fetch(t,{method:e,body:n}).then(se).then(re)}makeRequest(e,t,n){return this.fetch(t,{method:e,headers:{...null!=n?{"Content-Type":"application/json"}:{}},body:null!=n?JSON.stringify(n):void 0}).then(se).then(re)}fetchRawData(e){return fetch(this.makeAbsolute(e),{headers:this.defaultHeaders}).then(se).then((e=>e.arrayBuffer()))}}e.FluidTopicsApi=oe,e.HttpError=ie,e.addUnauthenticatedUserSearchPreferencesChangeHandler=function(e,t){if(ee.localStorage){const n=ne(e),a=e=>{e.storageArea===ee.localStorage&&e.key===n&&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=oe,e.getUnauthenticatedUserSearchPreferences=function(e){if(ee.localStorage)return JSON.parse(ee.localStorage.getItem(ne(e))??"{}");console.error("Cannot get unauthenticated preferences: local storage is unavailable.")},e.isFtAuthenticatedSession=e=>j(e)&&Y(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)&&O(e.type),e.isFtCollectionDocumentType=O,e.isFtCredentials=e=>r(e)&&u(e.password)&&(null==e.newPassword||u(e.newPassword))&&o(e.rememberMe)&&u(e.login),e.isFtEditorialType=k,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)))&&C(e.openMode)&&u(e.topicsApiEndpoint)&&(null==e.description||u(e.description))&&u(e.attachmentsApiEndpoint)&&k(e.editorialType)&&u(e.baseId)&&u(e.clusterId)&&(null==e.shouldSplitCurrentPageToc||o(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=>r(e)&&u(e.contentUrl)&&u(e.filename)&&u(e.id)&&u(e.mimeType),e.isFtMapStyles=c,e.isFtMetadata=y,e.isFtMetadataPreferenceConfiguration=I,e.isFtOpenMode=C,e.isFtPageConfiguration=Q,e.isFtPageRequest=E,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=f,e.isFtPublicationRatingSummary=A,e.isFtRatingCreation=e=>r(e)&&g(e.type)&&l(e.value),e.isFtRatingSummary=e=>r(e)&&(null==e.topics||T(e.topics))&&A(e.publication),e.isFtRatingType=g,e.isFtSearchFacet=_,e.isFtSearchFacetConf=H,e.isFtSearchFacetEntry=B,e.isFtSearchFilter=F,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=>I(e))),e.isFtSearchPreset=e=>r(e)&&u(e.name)&&Array.isArray(e.filters)&&e.filters.every((e=>F(e)))&&l(e.priority)&&(null==e.contentLocale||u(e.contentLocale)),e.isFtSearchPrior=P,e.isFtSearchRequest=e=>r(e)&&u(e.query)&&E(e.paging)&&Array.isArray(e.filters)&&e.filters.every((e=>F(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=>P(e))))&&Array.isArray(e.facets)&&e.facets.every((e=>H(e))),e.isFtSearchResultCluster=D,e.isFtSearchResultClusterEntry=M,e.isFtSearchResultMap=L,e.isFtSearchResultTopic=N,e.isFtSearchResultType=$,e.isFtSearchResultUnstructuredDocument=w,e.isFtSearchResults=e=>r(e)&&(null==e.spellcheck||G(e.spellcheck))&&R(e.paging)&&Array.isArray(e.results)&&e.results.every((e=>D(e)))&&Array.isArray(e.facets)&&e.facets.every((e=>_(e))),e.isFtSearchResultsPageInfo=R,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=>r(e)&&u(e.input)&&Array.isArray(e.filters)&&e.filters.every((e=>F(e)))&&Array.isArray(e.sort)&&e.sort.every((e=>q(e)))&&(null==e.maxCount||l(e.maxCount))&&(null==e.contentLocale||u(e.contentLocale)),e.isFtSuggestResult=V,e.isFtSuggestResults=e=>r(e)&&Array.isArray(e.suggestions)&&e.suggestions.every((e=>V(e))),e.isFtTocNode=p,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=b,e.isFtTopicResource=K,e.isFtTopicsRatingSummary=T,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=Y,e.setUnauthenticatedUserSearchPreferences=function(e,t){if(ee.localStorage){let n={...t,metadata:te(t.metadata??{})};const a=ne(e),i=JSON.stringify(n);return ee.localStorage.setItem(a,i),ee.dispatchEvent(new StorageEvent("storage",{key:a,newValue:i,storageArea:ee.localStorage,url:ee.location.href})),n}console.error("Cannot set unauthenticated preferences: local storage is unavailable.")}}));
@@ -15,6 +15,75 @@ export declare class FluidTopicsApi {
15
15
  private readonly ftCallingApp;
16
16
  private authorization;
17
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
+ };
18
87
  private get defaultHeaders();
19
88
  constructor(tenantBaseUrl: string, integrationIdentifier: string, overrideIdentifierIfOnTenant?: boolean);
20
89
  setApiKey(apiKey: string): void;
@@ -42,13 +111,13 @@ export declare class FluidTopicsApi {
42
111
  search(request: FtSearchRequest): Promise<FtSearchResults>;
43
112
  getAvailableSearchLocales(): Promise<FtSearchLocales>;
44
113
  getMapRating(mapId: string): Promise<FtRatingSummary>;
45
- getDocumentRating(docId: string): Promise<FtRatingSummary>;
46
114
  rateMap(mapId: string, type: FtRatingType, value: number): Promise<void>;
47
115
  unrateMap(mapId: string): Promise<void>;
48
116
  sendMapFeedback(mapId: string, message: string): Promise<void>;
49
117
  rateTopic(mapId: string, tocId: string, type: FtRatingType, value: number): Promise<void>;
50
118
  unrateTopic(mapId: string, tocId: string): Promise<void>;
51
119
  sendTopicFeedback(mapId: string, tocId: string, message: string): Promise<void>;
120
+ getDocumentRating(docId: string): Promise<FtRatingSummary>;
52
121
  rateDocument(docId: string, type: FtRatingType, value: number): Promise<void>;
53
122
  unrateDocument(docId: string): Promise<void>;
54
123
  sendDocumentFeedback(docId: string, message: string): Promise<void>;
@@ -56,8 +125,9 @@ export declare class FluidTopicsApi {
56
125
  post<T>(endpoint: string, data?: any): Promise<T>;
57
126
  put<T>(endpoint: string, data?: any): Promise<T>;
58
127
  delete<T>(endpoint: string): Promise<T>;
128
+ makeAbsolute(endpoint: string): string;
59
129
  fetch<FetchRequestInit, FetchResponse>(endpoint: string, init?: FetchRequestInit): Promise<FetchResponse>;
60
- upload<T>(method: string, endpoint: string, body: Document | XMLHttpRequestBodyInit, onProgress?: (e: ProgressEvent) => void): Promise<T>;
130
+ upload<T>(method: string, endpoint: string, body: any, onProgress?: (e: any) => void): Promise<T>;
61
131
  private makeRequest;
62
132
  private fetchRawData;
63
133
  }
package/dist/mjs/index.js CHANGED
@@ -31,6 +31,75 @@ export class FluidTopicsApi {
31
31
  ftCallingApp;
32
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
+ };
34
103
  get defaultHeaders() {
35
104
  return {
36
105
  ...this.authorization,
@@ -40,9 +109,9 @@ export class FluidTopicsApi {
40
109
  }
41
110
  constructor(tenantBaseUrl, integrationIdentifier, overrideIdentifierIfOnTenant) {
42
111
  //@ts-ignore
43
- tenantBaseUrl = tenantBaseUrl ?? wnd.__gwt_ft_moduleBase ?? wnd.fluidtopicsclient?.__moduleBase ?? wnd.__gwt_activeModules?.fluidtopicsclient?.moduleBase;
44
- this.tenantBaseUrl = tenantBaseUrl.trim().replace(/\/$/, "");
45
- if (overrideIdentifierIfOnTenant && typeof wnd.location !== "undefined" && wnd.location.href.startsWith(this.tenantBaseUrl + "/")) {
112
+ tenantBaseUrl = (tenantBaseUrl ?? wnd.__gwt_ft_moduleBase ?? wnd.fluidtopicsclient?.__moduleBase ?? wnd.__gwt_activeModules?.fluidtopicsclient?.moduleBase ?? "").trim();
113
+ this.tenantBaseUrl = tenantBaseUrl.endsWith("/") ? tenantBaseUrl : tenantBaseUrl + "/";
114
+ if (overrideIdentifierIfOnTenant && typeof wnd.location !== "undefined" && wnd.location.href.startsWith(this.tenantBaseUrl)) {
46
115
  this.ftCallingApp = integrationIdentifier;
47
116
  }
48
117
  else {
@@ -70,99 +139,101 @@ export class FluidTopicsApi {
70
139
  password: password,
71
140
  rememberMe: true
72
141
  };
73
- return this.post(`/api/authentication/login`, credentials)
142
+ return this.post(this.endpoints.authentication.login, credentials)
74
143
  .then(result => {
75
144
  this.setCredentials(login, password);
76
145
  return result;
77
146
  });
78
147
  }
79
148
  logout() {
80
- return this.post(`/api/authentication/logout`)
149
+ return this.post(this.endpoints.authentication.logout)
81
150
  .then(() => this.clearAuthentication());
82
151
  }
83
152
  getCurrentSession() {
84
- return this.get(`/api/authentication/current-session`);
153
+ return this.get(this.endpoints.authentication.currentSession);
85
154
  }
86
155
  getMap(mapId) {
87
- return this.get(`/api/khub/maps/${mapId}`);
156
+ return this.get(this.endpoints.khub.maps.mapId(mapId).info);
88
157
  }
89
158
  getTableOfContent(mapId) {
90
- return this.get(`/api/khub/maps/${mapId}/toc`);
159
+ return this.get(this.endpoints.khub.maps.mapId(mapId).toc);
91
160
  }
92
161
  getPages(mapId) {
93
- return this.get(`/api/khub/maps/${mapId}/pages`);
162
+ return this.get(this.endpoints.khub.maps.mapId(mapId).pages);
94
163
  }
95
164
  getTopic(mapId, topicContentId) {
96
- return this.get(`/api/khub/maps/${mapId}/topics/${topicContentId}`);
165
+ return this.get(this.endpoints.khub.maps.mapId(mapId).topics.contentId(topicContentId).info);
97
166
  }
98
167
  getTopicHTMLContent(mapId, topicContentId, target) {
99
- return this.get(`/api/khub/maps/${mapId}/topics/${topicContentId}/content${target ? "?target=" + target : ""}`);
168
+ return this.get(this.endpoints.khub.maps.mapId(mapId).topics.contentId(topicContentId).content + (target ? "?target=" + target : ""));
100
169
  }
101
170
  getMapAttachments(mapId) {
102
- return this.get(`/api/khub/maps/${mapId}/attachments`);
171
+ return this.get(this.endpoints.khub.maps.mapId(mapId).attachments.list);
103
172
  }
104
173
  getMapAttachmentContent(mapId, attachmentId) {
105
- return this.fetchRawData(`/api/khub/maps/${mapId}/attachments/${attachmentId}/content`);
174
+ return this.fetchRawData(this.endpoints.khub.maps.mapId(mapId).attachments.attachmentId(attachmentId).content);
106
175
  }
107
176
  getMapResources(mapId) {
108
- return this.get(`/api/khub/maps/${mapId}/resources`);
177
+ return this.get(this.endpoints.khub.maps.mapId(mapId).resources.list);
109
178
  }
110
179
  getMapResourceContent(mapId, resourceId) {
111
- return this.fetchRawData(`/api/khub/maps/${mapId}/resources/${resourceId}/content`);
180
+ return this.fetchRawData(this.endpoints.khub.maps.mapId(mapId).resources.resourceId(resourceId).content);
112
181
  }
113
182
  getUnstructuredDocument(documentId) {
114
- return this.get(`/api/khub/documents/${documentId}`);
183
+ return this.get(this.endpoints.khub.documents.documentId(documentId).info);
115
184
  }
116
185
  getUnstructuredDocumentContent(documentId) {
117
- return this.fetchRawData(`/api/khub/documents/${documentId}/content`);
186
+ return this.fetchRawData(this.endpoints.khub.documents.documentId(documentId).content);
118
187
  }
119
188
  getUnstructuredDocumentTextContent(documentId) {
120
- return this.get(`/api/khub/documents/${documentId}/content/text`);
189
+ return this.get(this.endpoints.khub.documents.documentId(documentId).text);
121
190
  }
122
191
  getCollectionDocuments(userId, collectionId) {
123
- return this.get(`/api/users/${userId}/collections/${collectionId}/documents`);
192
+ return this.get(this.endpoints.users.userId(userId).collections.collectionId(collectionId).documents);
124
193
  }
125
194
  getSuggestions(request) {
126
- return this.post("/api/khub/suggest", request);
195
+ return this.post(this.endpoints.khub.suggest, request);
127
196
  }
128
197
  search(request) {
129
- return this.post("/api/khub/clustered-search", request);
198
+ return this.post(this.endpoints.khub.clusteredSearch, request);
130
199
  }
131
200
  getAvailableSearchLocales() {
132
- return this.get("/api/khub/locales");
201
+ return this.get(this.endpoints.khub.locales);
133
202
  }
134
203
  getMapRating(mapId) {
135
- return this.get(`/api/khub/maps/${mapId}/rating`);
136
- }
137
- getDocumentRating(docId) {
138
- return this.get(`/api/khub/documents/${docId}/rating`);
204
+ return this.get(this.endpoints.khub.maps.mapId(mapId).rating);
139
205
  }
140
206
  rateMap(mapId, type, value) {
141
- return this.post(`/api/khub/maps/${mapId}/rating`, { type, value });
207
+ return this.post(this.endpoints.khub.maps.mapId(mapId).rating, { type, value });
142
208
  }
143
209
  unrateMap(mapId) {
144
- return this.delete(`/api/khub/maps/${mapId}/rating`);
210
+ return this.delete(this.endpoints.khub.maps.mapId(mapId).rating);
145
211
  }
146
212
  sendMapFeedback(mapId, message) {
147
- return this.post(`/api/khub/maps/${mapId}/feedback`, { message });
213
+ return this.post(this.endpoints.khub.maps.mapId(mapId).feedback, { message });
148
214
  }
149
215
  rateTopic(mapId, tocId, type, value) {
150
- return this.post(`/api/khub/maps/${mapId}/topics/${tocId}/rating`, { type, value });
216
+ return this.post(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).rating, {
217
+ type, value
218
+ });
151
219
  }
152
220
  unrateTopic(mapId, tocId) {
153
- return this.delete(`/api/khub/maps/${mapId}/topics/${tocId}/rating`);
221
+ return this.delete(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).rating);
154
222
  }
155
223
  sendTopicFeedback(mapId, tocId, message) {
156
- return this.post(`/api/khub/maps/${mapId}/topics/${tocId}/feedback`, { message });
224
+ return this.post(this.endpoints.khub.maps.mapId(mapId).topics.tocId(tocId).feedback, { message });
225
+ }
226
+ getDocumentRating(docId) {
227
+ return this.get(this.endpoints.khub.documents.documentId(docId).rating);
157
228
  }
158
229
  rateDocument(docId, type, value) {
159
- return this.post(`/api/khub/documents/${docId}/rating`, { type, value });
230
+ return this.post(this.endpoints.khub.documents.documentId(docId).rating, { type, value });
160
231
  }
161
232
  unrateDocument(docId) {
162
- return this.delete(`/api/khub/documents/${docId}/rating`);
233
+ return this.delete(this.endpoints.khub.documents.documentId(docId).rating);
163
234
  }
164
235
  sendDocumentFeedback(docId, message) {
165
- return this.post(`/api/khub/documents/${docId}/feedback`, { message });
236
+ return this.post(this.endpoints.khub.documents.documentId(docId).feedback, { message });
166
237
  }
167
238
  get(endpoint) {
168
239
  return this.makeRequest("GET", endpoint);
@@ -176,12 +247,12 @@ export class FluidTopicsApi {
176
247
  delete(endpoint) {
177
248
  return this.makeRequest("DELETE", endpoint);
178
249
  }
250
+ makeAbsolute(endpoint) {
251
+ return this.tenantBaseUrl + endpoint.replace(/^\//, "");
252
+ }
179
253
  async fetch(endpoint, init) {
180
254
  const requestInit = init;
181
- if (!endpoint.startsWith("/")) {
182
- endpoint = "/" + endpoint;
183
- }
184
- return await fetch(this.tenantBaseUrl + endpoint, {
255
+ return await fetch(this.makeAbsolute(endpoint), {
185
256
  ...(requestInit ?? {}),
186
257
  headers: {
187
258
  ...this.defaultHeaders,
@@ -189,22 +260,27 @@ export class FluidTopicsApi {
189
260
  }
190
261
  });
191
262
  }
192
- async upload(method, endpoint, body, onProgress = () => undefined) {
193
- return new Promise((resolve, reject) => {
194
- let xhr = new XMLHttpRequest();
195
- xhr.onload = () => {
196
- if (xhr.status >= 200 && xhr.status < 300) {
197
- let data = xhr.getResponseHeader("Content-Type") === "application/json" ? JSON.parse(xhr.responseText) : xhr.responseText;
198
- resolve(data);
199
- }
200
- else {
201
- reject(new HttpError(xhr.status, xhr.statusText, xhr.responseText));
202
- }
203
- };
204
- xhr.upload.onprogress = (e) => onProgress(e);
205
- xhr.open(method, this.tenantBaseUrl + endpoint, true);
206
- xhr.send(body);
207
- });
263
+ upload(method, endpoint, body, onProgress = () => undefined) {
264
+ if (typeof XMLHttpRequest !== "undefined") {
265
+ return new Promise((resolve, reject) => {
266
+ let xhr = new XMLHttpRequest();
267
+ xhr.onload = () => {
268
+ if (xhr.status >= 200 && xhr.status < 300) {
269
+ let data = xhr.getResponseHeader("Content-Type") === "application/json" ? JSON.parse(xhr.responseText) : xhr.responseText;
270
+ resolve(data);
271
+ }
272
+ else {
273
+ reject(new HttpError(xhr.status, xhr.statusText, xhr.responseText));
274
+ }
275
+ };
276
+ xhr.upload.onprogress = (e) => onProgress(e);
277
+ xhr.open(method, this.makeAbsolute(endpoint), true);
278
+ xhr.send(body);
279
+ });
280
+ }
281
+ else {
282
+ return this.fetch(endpoint, { method, body }).then(handleError).then(getBody);
283
+ }
208
284
  }
209
285
  makeRequest(method, endpoint, data) {
210
286
  return this.fetch(endpoint, {
@@ -218,7 +294,7 @@ export class FluidTopicsApi {
218
294
  .then(getBody);
219
295
  }
220
296
  fetchRawData(endpoint) {
221
- return fetch(this.tenantBaseUrl + endpoint, { headers: this.defaultHeaders })
297
+ return fetch(this.makeAbsolute(endpoint), { headers: this.defaultHeaders })
222
298
  .then(handleError)
223
299
  .then(response => response.arrayBuffer());
224
300
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-topics/public-api",
3
- "version": "1.0.27",
3
+ "version": "1.0.28",
4
4
  "description": "Fluid Topics Public API",
5
5
  "author": "Fluid Topics dev team <opensource@antidot.net>",
6
6
  "license": "LGPL-3.0-only",