@alfresco/js-api 10.2.0-30345919006 → 10.2.0-30390353749
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/esm2015/package.json +1 -1
- package/esm2015/src/authentication/contentAuth.js +2 -5
- package/esm2015/src/authentication/contentAuth.js.map +1 -1
- package/esm2015/src/fetchHttpClient.js +36 -12
- package/esm2015/src/fetchHttpClient.js.map +1 -1
- package/package.json +1 -1
- package/src/authentication/contentAuth.js +2 -5
- package/src/authentication/contentAuth.js.map +1 -1
- package/src/fetchHttpClient.js +36 -12
- package/src/fetchHttpClient.js.map +1 -1
- package/typings/package.json +1 -1
- package/typings/src/fetchHttpClient.d.ts +1 -0
package/esm2015/package.json
CHANGED
|
@@ -55,16 +55,13 @@ export class ContentAuth extends AlfrescoApiClient {
|
|
|
55
55
|
password: this.authentications.basicAuth.password
|
|
56
56
|
});
|
|
57
57
|
const promise = new Promise((resolve, reject) => {
|
|
58
|
-
this.authApi
|
|
59
|
-
.createTicket(loginRequest)
|
|
60
|
-
.then((data) => {
|
|
58
|
+
this.authApi.createTicket(loginRequest).then((data) => {
|
|
61
59
|
this.saveUsername(username);
|
|
62
60
|
this.setTicket(data.entry.id);
|
|
63
61
|
promise.emit('success');
|
|
64
62
|
this.emit('logged-in');
|
|
65
63
|
resolve(data.entry.id);
|
|
66
|
-
})
|
|
67
|
-
.catch((error) => {
|
|
64
|
+
}, (error) => {
|
|
68
65
|
this.saveUsername('');
|
|
69
66
|
if (error.status === 401) {
|
|
70
67
|
promise.emit('unauthorized');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentAuth.js","sourceRoot":"","sources":["contentAuth.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport { AuthenticationApi, TicketBody } from '../api/auth-rest-api';\nimport { AlfrescoApiClient } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { Storage } from '../storage';\nimport { AlfrescoApiType } from '../to-deprecate/alfresco-api-type';\nimport { HttpClient } from '../api-clients/http-client.interface';\n\nexport class ContentAuth extends AlfrescoApiClient {\n ticketStorageLabel: string;\n ticket: string;\n\n authApi: AuthenticationApi;\n\n constructor(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApiType, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.className = 'ContentAuth';\n this.storage = Storage.getInstance();\n this.storage.setDomainPrefix(config.domainPrefix);\n\n this.setConfig(config);\n\n this.authApi = new AuthenticationApi(alfrescoApi);\n }\n\n setConfig(config: AlfrescoApiConfig) {\n this.config = config;\n\n this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; //Auth Call\n\n this.ticketStorageLabel = 'ticket-ECM';\n\n if (this.config.ticketEcm) {\n this.setTicket(config.ticketEcm);\n } else if (this.storage.getItem(this.ticketStorageLabel)) {\n this.setTicket(this.storage.getItem(this.ticketStorageLabel));\n }\n }\n\n changeHost() {\n this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; //Auth Call\n this.ticket = undefined;\n }\n\n saveUsername(username: string) {\n if (this.storage.supportsStorage()) {\n this.storage.setItem('ACS_USERNAME', username);\n }\n }\n\n /**\n * login Alfresco API\n * @param username Username to login\n * @param password Password to login\n * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n */\n login(username: string, password: string): Promise<string> {\n this.authentications.basicAuth.username = username;\n this.authentications.basicAuth.password = password;\n\n const loginRequest = new TicketBody({\n userId: this.authentications.basicAuth.username,\n password: this.authentications.basicAuth.password\n });\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.authApi\n .createTicket(loginRequest)\n .then((data) => {\n this.saveUsername(username);\n this.setTicket(data.entry.id);\n promise.emit('success');\n this.emit('logged-in');\n resolve(data.entry.id);\n })\n .catch((error) => {\n this.saveUsername('');\n if (error.status === 401) {\n promise.emit('unauthorized');\n } else if (error.status === 403) {\n promise.emit('forbidden');\n } else {\n promise.emit('error');\n }\n reject(error);\n });\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * validate the ticket present in this.config.ticket against the server\n * @returns A promise that returns if resolved and {error} if rejected.\n */\n validateTicket(): Promise<string> {\n this.setTicket(this.config.ticketEcm);\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.authApi.validateTicket().then(\n (data) => {\n this.setTicket(data.entry.id);\n promise.emit('success');\n this.emit('logged-in');\n resolve(data.entry.id);\n },\n (error) => {\n if (error.status === 401) {\n promise.emit('unauthorized');\n }\n promise.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * logout Alfresco API\n * @returns A promise that returns { authentication ticket} if resolved and {error} if rejected.\n */\n logout(): Promise<void> {\n this.saveUsername('');\n const promise: any = new Promise<void>((resolve, reject) => {\n this.authApi.deleteTicket().then(\n () => {\n promise.emit('logout');\n this.invalidateSession();\n resolve();\n },\n (error) => {\n if (error.status === 401) {\n promise.emit('unauthorized');\n }\n promise.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * Set the current Ticket\n */\n setTicket(ticket: string) {\n this.authentications.basicAuth.username = 'ROLE_TICKET';\n this.authentications.basicAuth.password = ticket;\n this.config.ticketEcm = ticket;\n this.storage.setItem(this.ticketStorageLabel, ticket);\n this.ticket = ticket;\n }\n\n /**\n * Get the current Ticket\n * @returns ticket value\n */\n getTicket(): string {\n return this.ticket;\n }\n\n invalidateSession() {\n this.storage.removeItem(this.ticketStorageLabel);\n this.authentications.basicAuth.username = null;\n this.authentications.basicAuth.password = null;\n this.config.ticketEcm = null;\n this.ticket = null;\n }\n\n /**\n * If the client is logged in return true\n * @returns `true` if client is logged in, otherwise `false`\n */\n isLoggedIn(): boolean {\n return !!this.ticket;\n }\n\n /**\n * return the Authentication\n * @returns authentication object\n */\n getAuthentication(): Authentication {\n return this.authentications;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"contentAuth.js","sourceRoot":"","sources":["contentAuth.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport { AuthenticationApi, TicketBody } from '../api/auth-rest-api';\nimport { AlfrescoApiClient } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { Storage } from '../storage';\nimport { AlfrescoApiType } from '../to-deprecate/alfresco-api-type';\nimport { HttpClient } from '../api-clients/http-client.interface';\n\nexport class ContentAuth extends AlfrescoApiClient {\n ticketStorageLabel: string;\n ticket: string;\n\n authApi: AuthenticationApi;\n\n constructor(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApiType, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.className = 'ContentAuth';\n this.storage = Storage.getInstance();\n this.storage.setDomainPrefix(config.domainPrefix);\n\n this.setConfig(config);\n\n this.authApi = new AuthenticationApi(alfrescoApi);\n }\n\n setConfig(config: AlfrescoApiConfig) {\n this.config = config;\n\n this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; //Auth Call\n\n this.ticketStorageLabel = 'ticket-ECM';\n\n if (this.config.ticketEcm) {\n this.setTicket(config.ticketEcm);\n } else if (this.storage.getItem(this.ticketStorageLabel)) {\n this.setTicket(this.storage.getItem(this.ticketStorageLabel));\n }\n }\n\n changeHost() {\n this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; //Auth Call\n this.ticket = undefined;\n }\n\n saveUsername(username: string) {\n if (this.storage.supportsStorage()) {\n this.storage.setItem('ACS_USERNAME', username);\n }\n }\n\n /**\n * login Alfresco API\n * @param username Username to login\n * @param password Password to login\n * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n */\n login(username: string, password: string): Promise<string> {\n this.authentications.basicAuth.username = username;\n this.authentications.basicAuth.password = password;\n\n const loginRequest = new TicketBody({\n userId: this.authentications.basicAuth.username,\n password: this.authentications.basicAuth.password\n });\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.authApi.createTicket(loginRequest).then(\n (data) => {\n this.saveUsername(username);\n this.setTicket(data.entry.id);\n promise.emit('success');\n this.emit('logged-in');\n resolve(data.entry.id);\n },\n (error) => {\n this.saveUsername('');\n if (error.status === 401) {\n promise.emit('unauthorized');\n } else if (error.status === 403) {\n promise.emit('forbidden');\n } else {\n promise.emit('error');\n }\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * validate the ticket present in this.config.ticket against the server\n * @returns A promise that returns if resolved and {error} if rejected.\n */\n validateTicket(): Promise<string> {\n this.setTicket(this.config.ticketEcm);\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.authApi.validateTicket().then(\n (data) => {\n this.setTicket(data.entry.id);\n promise.emit('success');\n this.emit('logged-in');\n resolve(data.entry.id);\n },\n (error) => {\n if (error.status === 401) {\n promise.emit('unauthorized');\n }\n promise.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * logout Alfresco API\n * @returns A promise that returns { authentication ticket} if resolved and {error} if rejected.\n */\n logout(): Promise<void> {\n this.saveUsername('');\n const promise: any = new Promise<void>((resolve, reject) => {\n this.authApi.deleteTicket().then(\n () => {\n promise.emit('logout');\n this.invalidateSession();\n resolve();\n },\n (error) => {\n if (error.status === 401) {\n promise.emit('unauthorized');\n }\n promise.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * Set the current Ticket\n */\n setTicket(ticket: string) {\n this.authentications.basicAuth.username = 'ROLE_TICKET';\n this.authentications.basicAuth.password = ticket;\n this.config.ticketEcm = ticket;\n this.storage.setItem(this.ticketStorageLabel, ticket);\n this.ticket = ticket;\n }\n\n /**\n * Get the current Ticket\n * @returns ticket value\n */\n getTicket(): string {\n return this.ticket;\n }\n\n invalidateSession() {\n this.storage.removeItem(this.ticketStorageLabel);\n this.authentications.basicAuth.username = null;\n this.authentications.basicAuth.password = null;\n this.config.ticketEcm = null;\n this.ticket = null;\n }\n\n /**\n * If the client is logged in return true\n * @returns `true` if client is logged in, otherwise `false`\n */\n isLoggedIn(): boolean {\n return !!this.ticket;\n }\n\n /**\n * return the Authentication\n * @returns authentication object\n */\n getAuthentication(): Authentication {\n return this.authentications;\n }\n}\n"]}
|
|
@@ -22,14 +22,33 @@ export class FetchHttpClient {
|
|
|
22
22
|
this.customFetch = customFetch;
|
|
23
23
|
}
|
|
24
24
|
getFetch() {
|
|
25
|
-
return this.customFetch ||
|
|
25
|
+
return this.customFetch || globalThis.fetch;
|
|
26
26
|
}
|
|
27
27
|
hasNativeXhr() {
|
|
28
|
-
if (this.customFetch
|
|
28
|
+
if (this.customFetch) {
|
|
29
29
|
return false;
|
|
30
30
|
}
|
|
31
31
|
return typeof XMLHttpRequest !== 'undefined';
|
|
32
32
|
}
|
|
33
|
+
static getStatusText(status, fallback = '') {
|
|
34
|
+
const statusTexts = {
|
|
35
|
+
400: 'Bad Request',
|
|
36
|
+
401: 'Unauthorized',
|
|
37
|
+
403: 'Forbidden',
|
|
38
|
+
404: 'Not Found',
|
|
39
|
+
405: 'Method Not Allowed',
|
|
40
|
+
409: 'Conflict',
|
|
41
|
+
410: 'Gone',
|
|
42
|
+
415: 'Unsupported Media Type',
|
|
43
|
+
422: 'Unprocessable Entity',
|
|
44
|
+
429: 'Too Many Requests',
|
|
45
|
+
500: 'Internal Server Error',
|
|
46
|
+
501: 'Not Implemented',
|
|
47
|
+
502: 'Bad Gateway',
|
|
48
|
+
503: 'Service Unavailable'
|
|
49
|
+
};
|
|
50
|
+
return statusTexts[status] || fallback;
|
|
51
|
+
}
|
|
33
52
|
post(url, options, securityOptions, emitters) {
|
|
34
53
|
return this.request(url, Object.assign(Object.assign({}, options), { httpMethod: 'POST' }), securityOptions, emitters);
|
|
35
54
|
}
|
|
@@ -82,13 +101,14 @@ export class FetchHttpClient {
|
|
|
82
101
|
const execute = () => __awaiter(this, void 0, void 0, function* () {
|
|
83
102
|
const response = yield fn(url, init);
|
|
84
103
|
if (!response.ok) {
|
|
85
|
-
const
|
|
86
|
-
const
|
|
104
|
+
const responseText = yield response.text().catch(() => '');
|
|
105
|
+
const statusText = response.statusText || FetchHttpClient.getStatusText(response.status);
|
|
106
|
+
const errorMessage = responseText || statusText;
|
|
107
|
+
const error = new Error(errorMessage);
|
|
87
108
|
error.status = response.status;
|
|
88
109
|
error.response = response;
|
|
89
110
|
FetchHttpClient.emitErrorEvents(error, response.status, emitters);
|
|
90
|
-
|
|
91
|
-
return;
|
|
111
|
+
throw error;
|
|
92
112
|
}
|
|
93
113
|
if (securityOptions.isBpmRequest) {
|
|
94
114
|
const setCookie = response.headers.get('set-cookie');
|
|
@@ -98,18 +118,22 @@ export class FetchHttpClient {
|
|
|
98
118
|
}
|
|
99
119
|
const data = yield this.deserializeResponse(response, returnType, responseType);
|
|
100
120
|
eventEmitter.emit('success', data);
|
|
101
|
-
|
|
121
|
+
return data;
|
|
102
122
|
});
|
|
103
|
-
execute().
|
|
104
|
-
|
|
123
|
+
execute().then((data) => {
|
|
124
|
+
resolve(data);
|
|
125
|
+
}, (error) => {
|
|
126
|
+
if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError') {
|
|
105
127
|
eventEmitter.emit('abort');
|
|
106
128
|
reject(error);
|
|
107
129
|
return;
|
|
108
130
|
}
|
|
109
|
-
if (
|
|
110
|
-
|
|
131
|
+
if (error === null || error === void 0 ? void 0 : error.status) {
|
|
132
|
+
reject({ error, status: error.status, message: error.message });
|
|
133
|
+
return;
|
|
111
134
|
}
|
|
112
|
-
|
|
135
|
+
FetchHttpClient.emitErrorEvents(error, 0, emitters);
|
|
136
|
+
reject({ error });
|
|
113
137
|
});
|
|
114
138
|
});
|
|
115
139
|
promise.abort = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchHttpClient.js","sourceRoot":"","sources":["fetchHttpClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;AAMH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAOnD,MAAM,OAAO,eAAe;IAIxB,YAAY,WAA0B;QAHtC,YAAO,GAAsD,SAAS,CAAC;QAInE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEO,QAAQ;QAEZ,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,OAAO,KAAK,WAAW,IAAK,OAAe,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC;IACvH,CAAC;IAEO,YAAY;QAEhB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,OAAO,KAAK,WAAW,IAAK,OAAe,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1F,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,OAAO,cAAc,KAAK,WAAW,CAAC;IACjD,CAAC;IAED,IAAI,CAAU,GAAW,EAAE,OAAuB,EAAE,eAAgC,EAAE,QAAkB;QACpG,OAAO,IAAI,CAAC,OAAO,CAAI,GAAG,kCAAO,OAAO,KAAE,UAAU,EAAE,MAAM,KAAI,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC/F,CAAC;IAED,GAAG,CAAU,GAAW,EAAE,OAAuB,EAAE,eAAgC,EAAE,QAAkB;QACnG,OAAO,IAAI,CAAC,OAAO,CAAI,GAAG,kCAAO,OAAO,KAAE,UAAU,EAAE,KAAK,KAAI,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC9F,CAAC;IAED,GAAG,CAAU,GAAW,EAAE,OAAuB,EAAE,eAAgC,EAAE,QAAkB;QACnG,OAAO,IAAI,CAAC,OAAO,CAAI,GAAG,kCAAO,OAAO,KAAE,UAAU,EAAE,KAAK,KAAI,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,CAAW,GAAW,EAAE,OAAuB,EAAE,eAAgC,EAAE,QAAkB;QACvG,OAAO,IAAI,CAAC,OAAO,CAAI,GAAG,kCAAO,OAAO,KAAE,UAAU,EAAE,QAAQ,KAAI,eAAe,EAAE,QAAQ,CAAC,CAAC;IACjG,CAAC;IAED,OAAO,CAAU,GAAW,EAAE,OAAuB,EAAE,eAAgC,EAAE,QAAkB;QACvG,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAEhI,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACtF,MAAM,WAAW,GAAG,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,MAAM,CAAC;QACpF,MAAM,eAAe,GAAG,eAAe,CAAC,eAAe,IAAI,eAAe,CAAC,YAAY,CAAC;QAExF,IAAI,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,cAAc,CAAI,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC5I,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CACxB,OAAO,EACP,UAAU,EACV,OAAO,EACP,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC1B,eAAe,EACf,UAAU,EACV,YAAY,EACZ,eAAe,EACf,QAAQ,CACX,CAAC;IACN,CAAC;IAEO,gBAAgB,CACpB,GAAW,EACX,MAAc,EACd,OAA+B,EAC/B,IAAS,EACT,eAAwB,EACxB,UAAkB,EAClB,YAAoB,EACpB,eAAgC,EAChC,QAAkB;;QAElB,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,CAAC;QAE3F,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC5C,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACJ,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;YACpD,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAgB;YACtB,MAAM;YACN,OAAO;YACP,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;SAC3D,CAAC;QAEF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAQ,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,OAAO,GAAG,GAAS,EAAE;gBACvB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oBACxD,MAAM,KAAK,GAAQ,IAAI,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC/D,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAC/B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBAE1B,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAElE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;oBACtF,OAAO;gBACX,CAAC;gBAED,IAAI,eAAe,CAAC,YAAY,EAAE,CAAC;oBAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBACrD,IAAI,SAAS,EAAE,CAAC;wBACZ,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC;oBACvD,CAAC;gBACL,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;gBAChF,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAS,CAAC,CAAC;YACvB,CAAC,CAAA,CAAC;YAEF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACX,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAChB,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACxD,CAAC;gBAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE;YACjB,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;QAEF,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,cAAc,CAClB,GAAW,EACX,MAAc,EACd,OAA+B,EAC/B,IAAS,EACT,eAAwB,EACxB,UAAkB,EAClB,YAAoB,EACpB,eAAgC,EAChC,QAAkB;;QAElB,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QAClC,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,CAAC;QAC3F,IAAI,GAAQ,CAAC;QAEb,MAAM,OAAO,GAAQ,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAE5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,eAAe,EAAE,CAAC;gBAClB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;YAC/B,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACZ,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC;YAC5B,CAAC;YAED,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAClI,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC;YAC9B,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,KAAU,EAAE,EAAE;gBACnC,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;oBAC/D,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBACzF,CAAC;YACL,CAAC,CAAC;YAEF,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;gBACd,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACxC,IAAI,eAAe,CAAC,YAAY,EAAE,CAAC;wBAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;wBACtD,IAAI,SAAS,EAAE,CAAC;4BACZ,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC;wBACvD,CAAC;oBACL,CAAC;oBAED,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;oBACxE,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACnC,OAAO,CAAC,IAAS,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACJ,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC;oBACrD,MAAM,KAAK,GAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;oBACxC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;oBAC1B,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;oBAE1B,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAE7D,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC,CAAC;YAEF,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE;gBACf,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAClD,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAEpD,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACtB,CAAC,CAAC;YAEF,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE;gBACf,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM,CAAC,IAAI,YAAY,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC,CAAC;YACzE,CAAC,CAAC;YAEF,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE;gBACjB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAC7C,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAEpD,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACtB,CAAC,CAAC;YAEF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE;YACjB,IAAI,GAAG,EAAE,CAAC;gBACN,GAAG,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;YACD,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;QAEF,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,sBAAsB,CAAC,GAAQ,EAAE,UAAkB,EAAE,YAAoB;QAC7E,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClI,OAAO,GAAG,CAAC,QAAQ,CAAC;QACxB,CAAC;QAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,YAAY,CAAC;QAC5B,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAChE,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,OAAO,GAAG,CAAC,YAAY,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,EAAE,CAAC;YACd,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,IAAK,UAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACjD,OAAO,IAAK,UAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAClC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,OAA+B;QACxC,MAAM,KAAK,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;QAChD,OAAO,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;QAEhC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACf,OAAO,CAAC,QAAQ,CAAC,GAAG,aAAa,GAAG,KAAK,GAAG,SAAS,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC;YACD,QAAQ,CAAC,MAAM,GAAG,aAAa,GAAG,KAAK,GAAG,SAAS,CAAC;QACxD,CAAC;QAAC,WAAM,CAAC;QAET,CAAC;IACL,CAAC;IAEO,YAAY,CAChB,YAAiC,EACjC,eAAgC,EAChC,WAAmB,EACnB,MAAc;QAEd,MAAM,OAAO,mCACN,eAAe,CAAC,cAAc,GAC9B,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,CACnD,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;QAEhE,IAAI,eAAe,CAAC,YAAY,IAAI,eAAe,CAAC,UAAU,EAAE,CAAC;YAC7D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,eAAe,CAAC,YAAY,IAAI,eAAe,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACzF,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;gBACjC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM;gBACnE,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC;QACjD,CAAC;QAED,IAAI,WAAW,IAAI,WAAW,KAAK,qBAAqB,EAAE,CAAC;YACvD,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;QAC1C,CAAC;aAAM,IAAI,WAAW,KAAK,qBAAqB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QACjD,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAC/B,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,SAAS,CAAC,WAAmB,EAAE,UAA+B,EAAE,SAA0B;QAC9F,IAAI,WAAW,KAAK,mCAAmC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC3D,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,WAAW,KAAK,qBAAqB,EAAE,CAAC;YACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC1D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAClE,IAAI,QAAQ,EAAE,CAAC;oBACX,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACJ,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC/B,CAAC;YACL,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,KAAU,EAAE,MAAc,EAAE,QAAkB;QACzE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC;QAEpD,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAElC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,OAA+B,EAAE,eAA+B;QACrF,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,QAAQ,eAAe,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,OAAO,CAAC,CAAC,CAAC;gBACX,MAAM,SAAS,GAAc,eAAe,CAAC,SAAS,CAAC;gBACvD,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;oBAC3C,MAAM,OAAO,GACT,OAAO,IAAI,KAAK,UAAU;wBACtB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;wBACrE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACxG,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC;gBAClD,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,IAAI,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBACnC,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC;gBAChE,CAAC;gBACD,MAAM;YACV,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAW,eAAe,CAAC,MAAM,CAAC;gBAC9C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACrB,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;gBAC9D,CAAC;gBACD,MAAM;YACV,CAAC;YACD;gBACI,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;IAEa,mBAAmB,CAAC,QAAkB,EAAE,UAAkB,EAAE,YAAoB;;YAC1F,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAClI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,SAAS,EAAE,EAAE,CAAC;oBACd,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC;YAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YACrE,IAAI,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,EAAE,CAAC;YACd,CAAC;YACD,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,IAAK,UAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxE,CAAC;gBACD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;oBACjD,OAAO,IAAK,UAAkB,CAAC,IAAI,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YAAC,WAAM,CAAC;gBACL,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;KAAA;IAEO,MAAM,CAAC,eAAe;QAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC3E,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACpC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/G,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,MAA2B;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACJ,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,MAA2B;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAwB,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChB,SAAS,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/G,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,KAAU;QACjC,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,KAAK,YAAY,MAAM,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,CAAC,EAAE,CAAC;YAC3E,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,KAAU;QACrC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;YACjH,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBACtD,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,QAAQ,GAAW,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YAClD,CAAC;YAAC,WAAM,CAAC;gBACL,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC3B,CAAC;QACL,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YAC1D,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACvC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;CACJ","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Authentication } from './authentication/authentication';\nimport { RequestOptions, HttpClient, SecurityOptions, Emitters } from './api-clients/http-client.interface';\nimport { Oauth2 } from './authentication/oauth2';\nimport { BasicAuth } from './authentication/basicAuth';\nimport { isBrowser, paramToString } from './utils';\n\ndeclare const Blob: any;\ndeclare const Buffer: any;\ndeclare const process: any;\ndeclare const XMLHttpRequest: any;\n\nexport class FetchHttpClient implements HttpClient {\n timeout: number | { deadline?: number; response?: number } = undefined;\n private readonly customFetch?: typeof fetch;\n\n constructor(customFetch?: typeof fetch) {\n this.customFetch = customFetch;\n }\n\n private getFetch(): typeof fetch {\n // eslint-disable-next-line no-underscore-dangle\n return this.customFetch || (typeof process !== 'undefined' && (process as any).__test_fetch__) || globalThis.fetch;\n }\n\n private hasNativeXhr(): boolean {\n // eslint-disable-next-line no-underscore-dangle\n if (this.customFetch || (typeof process !== 'undefined' && (process as any).__test_fetch__)) {\n return false;\n }\n return typeof XMLHttpRequest !== 'undefined';\n }\n\n post<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'POST' }, securityOptions, emitters);\n }\n\n put<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'PUT' }, securityOptions, emitters);\n }\n\n get<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'GET' }, securityOptions, emitters);\n }\n\n delete<T = void>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'DELETE' }, securityOptions, emitters);\n }\n\n request<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n const { httpMethod, queryParams, headerParams, formParams, bodyParam, contentType, accept, responseType, returnType } = options;\n\n const headers = this.buildHeaders(headerParams, securityOptions, contentType, accept);\n const queryString = FetchHttpClient.buildQueryString(queryParams);\n const fullUrl = queryString ? `${url}${url.includes('?') ? '&' : '?'}${queryString}` : url;\n const body = this.buildBody(contentType, formParams, bodyParam);\n const hasBody = body !== undefined && httpMethod !== 'GET' && httpMethod !== 'HEAD';\n const withCredentials = securityOptions.withCredentials || securityOptions.isBpmRequest;\n\n if (hasBody && this.hasNativeXhr()) {\n return this.requestWithXhr<T>(fullUrl, httpMethod, headers, body, withCredentials, returnType, responseType, securityOptions, emitters);\n }\n\n return this.requestWithFetch<T>(\n fullUrl,\n httpMethod,\n headers,\n hasBody ? body : undefined,\n withCredentials,\n returnType,\n responseType,\n securityOptions,\n emitters\n );\n }\n\n private requestWithFetch<T>(\n url: string,\n method: string,\n headers: Record<string, string>,\n body: any,\n withCredentials: boolean,\n returnType: string,\n responseType: string,\n securityOptions: SecurityOptions,\n emitters: Emitters\n ): Promise<T> {\n const { eventEmitter } = emitters;\n const controller = new AbortController();\n const timeoutMs = typeof this.timeout === 'number' ? this.timeout : this.timeout?.deadline;\n\n if (timeoutMs) {\n if (typeof AbortSignal.timeout === 'function') {\n AbortSignal.timeout(timeoutMs).addEventListener('abort', () => controller.abort());\n } else {\n setTimeout(() => controller.abort(), timeoutMs);\n }\n }\n\n const init: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n credentials: withCredentials ? 'include' : 'same-origin'\n };\n\n if (body !== undefined) {\n init.body = body;\n }\n\n const fn = this.getFetch();\n\n const promise: any = new Promise<T>((resolve, reject) => {\n const execute = async () => {\n const response = await fn(url, init);\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => '');\n const error: any = new Error(errorText || response.statusText);\n error.status = response.status;\n error.response = response;\n\n FetchHttpClient.emitErrorEvents(error, response.status, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error, status: response.status, message: errorText || response.statusText });\n return;\n }\n\n if (securityOptions.isBpmRequest) {\n const setCookie = response.headers.get('set-cookie');\n if (setCookie) {\n securityOptions.authentications.cookie = setCookie;\n }\n }\n\n const data = await this.deserializeResponse(response, returnType, responseType);\n eventEmitter.emit('success', data);\n resolve(data as T);\n };\n\n execute().catch((error: any) => {\n if (error.name === 'AbortError') {\n eventEmitter.emit('abort');\n reject(error);\n return;\n }\n if (!error.status) {\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n }\n // eslint-disable-next-line prefer-promise-reject-errors\n reject(error.status ? { error, status: error.status, message: error.message } : { error });\n });\n });\n\n promise.abort = () => {\n controller.abort();\n return promise;\n };\n\n return promise;\n }\n\n private requestWithXhr<T>(\n url: string,\n method: string,\n headers: Record<string, string>,\n body: any,\n withCredentials: boolean,\n returnType: string,\n responseType: string,\n securityOptions: SecurityOptions,\n emitters: Emitters\n ): Promise<T> {\n const { eventEmitter } = emitters;\n const timeoutMs = typeof this.timeout === 'number' ? this.timeout : this.timeout?.deadline;\n let xhr: any;\n\n const promise: any = new Promise<T>((resolve, reject) => {\n xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n\n for (const [key, value] of Object.entries(headers)) {\n xhr.setRequestHeader(key, value);\n }\n\n if (withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (timeoutMs) {\n xhr.timeout = timeoutMs;\n }\n\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n xhr.responseType = 'blob';\n }\n\n xhr.upload.onprogress = (event: any) => {\n if (event.lengthComputable) {\n const percent = Math.round((event.loaded / event.total) * 100);\n eventEmitter.emit('progress', { total: event.total, loaded: event.loaded, percent });\n }\n };\n\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n if (securityOptions.isBpmRequest) {\n const setCookie = xhr.getResponseHeader('set-cookie');\n if (setCookie) {\n securityOptions.authentications.cookie = setCookie;\n }\n }\n\n const data = this.deserializeXhrResponse(xhr, returnType, responseType);\n eventEmitter.emit('success', data);\n resolve(data as T);\n } else {\n const errorText = xhr.responseText || xhr.statusText;\n const error: any = new Error(errorText);\n error.status = xhr.status;\n error.message = errorText;\n\n FetchHttpClient.emitErrorEvents(error, xhr.status, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error, status: xhr.status, message: errorText });\n }\n };\n\n xhr.onerror = () => {\n const error = new Error('Network request failed');\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n };\n\n xhr.onabort = () => {\n eventEmitter.emit('abort');\n reject(new DOMException('The operation was aborted.', 'AbortError'));\n };\n\n xhr.ontimeout = () => {\n const error = new Error('Request timed out');\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n };\n\n xhr.send(body);\n });\n\n promise.abort = () => {\n if (xhr) {\n xhr.abort();\n }\n return promise;\n };\n\n return promise;\n }\n\n private deserializeXhrResponse(xhr: any, returnType: string, responseType: string): any {\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n return xhr.response;\n }\n\n if (returnType === 'String') {\n return xhr.responseText;\n }\n\n const contentType = xhr.getResponseHeader('content-type') || '';\n if (contentType.includes('text/html')) {\n return xhr.responseText;\n }\n\n try {\n const text = xhr.responseText;\n if (!text) {\n return {};\n }\n const data = JSON.parse(text);\n if (returnType && Array.isArray(data)) {\n return data.map((element: any) => new (returnType as any)(element));\n }\n if (returnType && typeof returnType === 'function') {\n return new (returnType as any)(data);\n }\n return data;\n } catch {\n return xhr.responseText || '';\n }\n }\n\n setCsrfToken(headers: Record<string, string>): void {\n const token = FetchHttpClient.createCSRFToken();\n headers['X-CSRF-TOKEN'] = token;\n\n if (!isBrowser()) {\n headers['Cookie'] = 'CSRF-TOKEN=' + token + ';path=/';\n }\n\n try {\n document.cookie = 'CSRF-TOKEN=' + token + ';path=/';\n } catch {\n /* continue regardless of error */\n }\n }\n\n private buildHeaders(\n headerParams: Record<string, any>,\n securityOptions: SecurityOptions,\n contentType: string,\n accept: string\n ): Record<string, string> {\n const headers: Record<string, string> = {\n ...securityOptions.defaultHeaders,\n ...FetchHttpClient.normalizeParams(headerParams)\n };\n\n this.applyAuthHeaders(headers, securityOptions.authentications);\n\n if (securityOptions.isBpmRequest && securityOptions.enableCsrf) {\n this.setCsrfToken(headers);\n }\n\n if (securityOptions.isBpmRequest && securityOptions.authentications.cookie && !isBrowser()) {\n headers['Cookie'] = headers['Cookie']\n ? headers['Cookie'] + '; ' + securityOptions.authentications.cookie\n : securityOptions.authentications.cookie;\n }\n\n if (contentType && contentType !== 'multipart/form-data') {\n headers['Content-Type'] = contentType;\n } else if (contentType !== 'multipart/form-data' && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n if (accept) {\n headers['Accept'] = accept;\n }\n\n return headers;\n }\n\n private buildBody(contentType: string, formParams: Record<string, any>, bodyParam: string | object): any {\n if (contentType === 'application/x-www-form-urlencoded') {\n const params = FetchHttpClient.normalizeParams(formParams);\n return new URLSearchParams(params).toString();\n }\n\n if (contentType === 'multipart/form-data') {\n const normalizedParams = FetchHttpClient.normalizeParams(formParams);\n const formData = new FormData();\n for (const [key, value] of Object.entries(normalizedParams)) {\n const { data, filename } = FetchHttpClient.toFormDataValue(value);\n if (filename) {\n formData.append(key, data, filename);\n } else {\n formData.append(key, data);\n }\n }\n return formData;\n }\n\n if (bodyParam) {\n return typeof bodyParam === 'string' ? bodyParam : JSON.stringify(bodyParam);\n }\n\n return undefined;\n }\n\n private static emitErrorEvents(error: any, status: number, emitters: Emitters): void {\n const { eventEmitter, apiClientEmitter } = emitters;\n\n apiClientEmitter.emit('error', error);\n eventEmitter.emit('error', error);\n\n if (status === 401) {\n apiClientEmitter.emit('unauthorized');\n eventEmitter.emit('unauthorized');\n }\n\n if (status === 403) {\n apiClientEmitter.emit('forbidden');\n eventEmitter.emit('forbidden');\n }\n }\n\n private applyAuthHeaders(headers: Record<string, string>, authentications: Authentication): void {\n if (!authentications) {\n return;\n }\n\n switch (authentications.type) {\n case 'basic': {\n const basicAuth: BasicAuth = authentications.basicAuth;\n if (basicAuth.username || basicAuth.password) {\n const encoded =\n typeof btoa === 'function'\n ? btoa((basicAuth.username || '') + ':' + (basicAuth.password || ''))\n : Buffer.from((basicAuth.username || '') + ':' + (basicAuth.password || '')).toString('base64');\n headers['Authorization'] = 'Basic ' + encoded;\n }\n break;\n }\n case 'activiti': {\n if (authentications.basicAuth.ticket) {\n headers['Authorization'] = authentications.basicAuth.ticket;\n }\n break;\n }\n case 'oauth2': {\n const oauth2: Oauth2 = authentications.oauth2;\n if (oauth2.accessToken) {\n headers['Authorization'] = 'Bearer ' + oauth2.accessToken;\n }\n break;\n }\n default:\n throw new Error('Unknown authentication type: ' + authentications.type);\n }\n }\n\n private async deserializeResponse(response: Response, returnType: string, responseType: string): Promise<any> {\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n const blob = await response.blob();\n if (isBrowser()) {\n return blob;\n }\n const arrayBuffer = await blob.arrayBuffer();\n return Buffer.from(arrayBuffer);\n }\n\n if (returnType === 'String') {\n return response.text();\n }\n\n const contentTypeHeader = response.headers.get('content-type') || '';\n if (contentTypeHeader.includes('text/html')) {\n return response.text();\n }\n\n const text = await response.text();\n if (!text) {\n return {};\n }\n try {\n const data = JSON.parse(text);\n if (returnType && Array.isArray(data)) {\n return data.map((element: any) => new (returnType as any)(element));\n }\n if (returnType && typeof returnType === 'function') {\n return new (returnType as any)(data);\n }\n return data;\n } catch {\n return text;\n }\n }\n\n private static createCSRFToken(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n }\n\n private static buildQueryString(params: Record<string, any>): string {\n if (!params) {\n return '';\n }\n const normalized = FetchHttpClient.normalizeParams(params);\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(normalized)) {\n if (Array.isArray(value)) {\n value.forEach((v: any) => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n }\n return searchParams.toString();\n }\n\n private static normalizeParams(params: Record<string, any>): Record<string, any> {\n if (!params) {\n return {};\n }\n const newParams: Record<string, any> = {};\n for (const [key, value] of Object.entries(params)) {\n if (value != null) {\n newParams[key] = FetchHttpClient.isFileParam(value) || Array.isArray(value) ? value : paramToString(value);\n }\n }\n return newParams;\n }\n\n private static isFileParam(param: any): boolean {\n if (typeof Buffer === 'function' && (param instanceof Buffer || param?.path)) {\n return true;\n }\n if (typeof Blob === 'function' && param instanceof Blob) {\n return true;\n }\n if (typeof File === 'function' && param instanceof File) {\n return true;\n }\n if (typeof File === 'object' && param instanceof File) {\n return true;\n }\n return false;\n }\n\n private static toFormDataValue(value: any): { data: any; filename?: string } {\n if (value && typeof value === 'object' && value.path && typeof value.path === 'string' && !(value instanceof Blob)) {\n try {\n const nodeFs = Function('return require(\"fs\")')();\n const nodePath = Function('return require(\"path\")')();\n const buffer = nodeFs.readFileSync(value.path);\n const filename: string = nodePath.basename(value.path);\n return { data: new Blob([buffer]), filename };\n } catch {\n return { data: value };\n }\n }\n\n if (typeof Buffer === 'function' && value instanceof Buffer) {\n return { data: new Blob([value]) };\n }\n\n return { data: value };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"fetchHttpClient.js","sourceRoot":"","sources":["fetchHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Authentication } from './authentication/authentication';\nimport { RequestOptions, HttpClient, SecurityOptions, Emitters } from './api-clients/http-client.interface';\nimport { Oauth2 } from './authentication/oauth2';\nimport { BasicAuth } from './authentication/basicAuth';\nimport { isBrowser, paramToString } from './utils';\n\ndeclare const Blob: any;\ndeclare const Buffer: any;\ndeclare const XMLHttpRequest: any;\n\nexport class FetchHttpClient implements HttpClient {\n timeout: number | { deadline?: number; response?: number } = undefined;\n private readonly customFetch?: typeof fetch;\n\n constructor(customFetch?: typeof fetch) {\n this.customFetch = customFetch;\n }\n\n private getFetch(): typeof fetch {\n return this.customFetch || globalThis.fetch;\n }\n\n private hasNativeXhr(): boolean {\n if (this.customFetch) {\n return false;\n }\n return typeof XMLHttpRequest !== 'undefined';\n }\n\n private static getStatusText(status: number, fallback: string = ''): string {\n const statusTexts: { [key: number]: string } = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 409: 'Conflict',\n 410: 'Gone',\n 415: 'Unsupported Media Type',\n 422: 'Unprocessable Entity',\n 429: 'Too Many Requests',\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable'\n };\n return statusTexts[status] || fallback;\n }\n\n post<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'POST' }, securityOptions, emitters);\n }\n\n put<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'PUT' }, securityOptions, emitters);\n }\n\n get<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'GET' }, securityOptions, emitters);\n }\n\n delete<T = void>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'DELETE' }, securityOptions, emitters);\n }\n\n request<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n const { httpMethod, queryParams, headerParams, formParams, bodyParam, contentType, accept, responseType, returnType } = options;\n\n const headers = this.buildHeaders(headerParams, securityOptions, contentType, accept);\n const queryString = FetchHttpClient.buildQueryString(queryParams);\n const fullUrl = queryString ? `${url}${url.includes('?') ? '&' : '?'}${queryString}` : url;\n const body = this.buildBody(contentType, formParams, bodyParam);\n const hasBody = body !== undefined && httpMethod !== 'GET' && httpMethod !== 'HEAD';\n const withCredentials = securityOptions.withCredentials || securityOptions.isBpmRequest;\n\n if (hasBody && this.hasNativeXhr()) {\n return this.requestWithXhr<T>(fullUrl, httpMethod, headers, body, withCredentials, returnType, responseType, securityOptions, emitters);\n }\n\n return this.requestWithFetch<T>(\n fullUrl,\n httpMethod,\n headers,\n hasBody ? body : undefined,\n withCredentials,\n returnType,\n responseType,\n securityOptions,\n emitters\n );\n }\n\n private requestWithFetch<T>(\n url: string,\n method: string,\n headers: Record<string, string>,\n body: any,\n withCredentials: boolean,\n returnType: string,\n responseType: string,\n securityOptions: SecurityOptions,\n emitters: Emitters\n ): Promise<T> {\n const { eventEmitter } = emitters;\n const controller = new AbortController();\n const timeoutMs = typeof this.timeout === 'number' ? this.timeout : this.timeout?.deadline;\n\n if (timeoutMs) {\n if (typeof AbortSignal.timeout === 'function') {\n AbortSignal.timeout(timeoutMs).addEventListener('abort', () => controller.abort());\n } else {\n setTimeout(() => controller.abort(), timeoutMs);\n }\n }\n\n const init: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n credentials: withCredentials ? 'include' : 'same-origin'\n };\n\n if (body !== undefined) {\n init.body = body;\n }\n\n const fn = this.getFetch();\n\n const promise: any = new Promise<T>((resolve, reject) => {\n const execute = async () => {\n const response = await fn(url, init);\n\n if (!response.ok) {\n const responseText = await response.text().catch(() => '');\n const statusText = response.statusText || FetchHttpClient.getStatusText(response.status);\n const errorMessage = responseText || statusText;\n const error: any = new Error(errorMessage);\n error.status = response.status;\n error.response = response;\n\n FetchHttpClient.emitErrorEvents(error, response.status, emitters);\n throw error;\n }\n\n if (securityOptions.isBpmRequest) {\n const setCookie = response.headers.get('set-cookie');\n if (setCookie) {\n securityOptions.authentications.cookie = setCookie;\n }\n }\n\n const data = await this.deserializeResponse(response, returnType, responseType);\n eventEmitter.emit('success', data);\n return data as T;\n };\n\n execute().then(\n (data: T) => {\n resolve(data);\n },\n (error: any) => {\n if (error?.name === 'AbortError') {\n eventEmitter.emit('abort');\n reject(error);\n return;\n }\n // HTTP errors from execute() have a status code\n if (error?.status) {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error, status: error.status, message: error.message });\n return;\n }\n // Non-HTTP errors\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n }\n );\n });\n\n promise.abort = () => {\n controller.abort();\n return promise;\n };\n\n return promise;\n }\n\n private requestWithXhr<T>(\n url: string,\n method: string,\n headers: Record<string, string>,\n body: any,\n withCredentials: boolean,\n returnType: string,\n responseType: string,\n securityOptions: SecurityOptions,\n emitters: Emitters\n ): Promise<T> {\n const { eventEmitter } = emitters;\n const timeoutMs = typeof this.timeout === 'number' ? this.timeout : this.timeout?.deadline;\n let xhr: any;\n\n const promise: any = new Promise<T>((resolve, reject) => {\n xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n\n for (const [key, value] of Object.entries(headers)) {\n xhr.setRequestHeader(key, value);\n }\n\n if (withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (timeoutMs) {\n xhr.timeout = timeoutMs;\n }\n\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n xhr.responseType = 'blob';\n }\n\n xhr.upload.onprogress = (event: any) => {\n if (event.lengthComputable) {\n const percent = Math.round((event.loaded / event.total) * 100);\n eventEmitter.emit('progress', { total: event.total, loaded: event.loaded, percent });\n }\n };\n\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n if (securityOptions.isBpmRequest) {\n const setCookie = xhr.getResponseHeader('set-cookie');\n if (setCookie) {\n securityOptions.authentications.cookie = setCookie;\n }\n }\n\n const data = this.deserializeXhrResponse(xhr, returnType, responseType);\n eventEmitter.emit('success', data);\n resolve(data as T);\n } else {\n const errorText = xhr.responseText || xhr.statusText;\n const error: any = new Error(errorText);\n error.status = xhr.status;\n error.message = errorText;\n\n FetchHttpClient.emitErrorEvents(error, xhr.status, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error, status: xhr.status, message: errorText });\n }\n };\n\n xhr.onerror = () => {\n const error = new Error('Network request failed');\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n };\n\n xhr.onabort = () => {\n eventEmitter.emit('abort');\n reject(new DOMException('The operation was aborted.', 'AbortError'));\n };\n\n xhr.ontimeout = () => {\n const error = new Error('Request timed out');\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n };\n\n xhr.send(body);\n });\n\n promise.abort = () => {\n if (xhr) {\n xhr.abort();\n }\n return promise;\n };\n\n return promise;\n }\n\n private deserializeXhrResponse(xhr: any, returnType: string, responseType: string): any {\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n return xhr.response;\n }\n\n if (returnType === 'String') {\n return xhr.responseText;\n }\n\n const contentType = xhr.getResponseHeader('content-type') || '';\n if (contentType.includes('text/html')) {\n return xhr.responseText;\n }\n\n try {\n const text = xhr.responseText;\n if (!text) {\n return {};\n }\n const data = JSON.parse(text);\n if (returnType && Array.isArray(data)) {\n return data.map((element: any) => new (returnType as any)(element));\n }\n if (returnType && typeof returnType === 'function') {\n return new (returnType as any)(data);\n }\n return data;\n } catch {\n return xhr.responseText || '';\n }\n }\n\n setCsrfToken(headers: Record<string, string>): void {\n const token = FetchHttpClient.createCSRFToken();\n headers['X-CSRF-TOKEN'] = token;\n\n if (!isBrowser()) {\n headers['Cookie'] = 'CSRF-TOKEN=' + token + ';path=/';\n }\n\n try {\n document.cookie = 'CSRF-TOKEN=' + token + ';path=/';\n } catch {\n /* continue regardless of error */\n }\n }\n\n private buildHeaders(\n headerParams: Record<string, any>,\n securityOptions: SecurityOptions,\n contentType: string,\n accept: string\n ): Record<string, string> {\n const headers: Record<string, string> = {\n ...securityOptions.defaultHeaders,\n ...FetchHttpClient.normalizeParams(headerParams)\n };\n\n this.applyAuthHeaders(headers, securityOptions.authentications);\n\n if (securityOptions.isBpmRequest && securityOptions.enableCsrf) {\n this.setCsrfToken(headers);\n }\n\n if (securityOptions.isBpmRequest && securityOptions.authentications.cookie && !isBrowser()) {\n headers['Cookie'] = headers['Cookie']\n ? headers['Cookie'] + '; ' + securityOptions.authentications.cookie\n : securityOptions.authentications.cookie;\n }\n\n if (contentType && contentType !== 'multipart/form-data') {\n headers['Content-Type'] = contentType;\n } else if (contentType !== 'multipart/form-data' && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n if (accept) {\n headers['Accept'] = accept;\n }\n\n return headers;\n }\n\n private buildBody(contentType: string, formParams: Record<string, any>, bodyParam: string | object): any {\n if (contentType === 'application/x-www-form-urlencoded') {\n const params = FetchHttpClient.normalizeParams(formParams);\n return new URLSearchParams(params).toString();\n }\n\n if (contentType === 'multipart/form-data') {\n const normalizedParams = FetchHttpClient.normalizeParams(formParams);\n const formData = new FormData();\n for (const [key, value] of Object.entries(normalizedParams)) {\n const { data, filename } = FetchHttpClient.toFormDataValue(value);\n if (filename) {\n formData.append(key, data, filename);\n } else {\n formData.append(key, data);\n }\n }\n return formData;\n }\n\n if (bodyParam) {\n return typeof bodyParam === 'string' ? bodyParam : JSON.stringify(bodyParam);\n }\n\n return undefined;\n }\n\n private static emitErrorEvents(error: any, status: number, emitters: Emitters): void {\n const { eventEmitter, apiClientEmitter } = emitters;\n\n apiClientEmitter.emit('error', error);\n eventEmitter.emit('error', error);\n\n if (status === 401) {\n apiClientEmitter.emit('unauthorized');\n eventEmitter.emit('unauthorized');\n }\n\n if (status === 403) {\n apiClientEmitter.emit('forbidden');\n eventEmitter.emit('forbidden');\n }\n }\n\n private applyAuthHeaders(headers: Record<string, string>, authentications: Authentication): void {\n if (!authentications) {\n return;\n }\n\n switch (authentications.type) {\n case 'basic': {\n const basicAuth: BasicAuth = authentications.basicAuth;\n if (basicAuth.username || basicAuth.password) {\n const encoded =\n typeof btoa === 'function'\n ? btoa((basicAuth.username || '') + ':' + (basicAuth.password || ''))\n : Buffer.from((basicAuth.username || '') + ':' + (basicAuth.password || '')).toString('base64');\n headers['Authorization'] = 'Basic ' + encoded;\n }\n break;\n }\n case 'activiti': {\n if (authentications.basicAuth.ticket) {\n headers['Authorization'] = authentications.basicAuth.ticket;\n }\n break;\n }\n case 'oauth2': {\n const oauth2: Oauth2 = authentications.oauth2;\n if (oauth2.accessToken) {\n headers['Authorization'] = 'Bearer ' + oauth2.accessToken;\n }\n break;\n }\n default:\n throw new Error('Unknown authentication type: ' + authentications.type);\n }\n }\n\n private async deserializeResponse(response: Response, returnType: string, responseType: string): Promise<any> {\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n const blob = await response.blob();\n if (isBrowser()) {\n return blob;\n }\n const arrayBuffer = await blob.arrayBuffer();\n return Buffer.from(arrayBuffer);\n }\n\n if (returnType === 'String') {\n return response.text();\n }\n\n const contentTypeHeader = response.headers.get('content-type') || '';\n if (contentTypeHeader.includes('text/html')) {\n return response.text();\n }\n\n const text = await response.text();\n if (!text) {\n return {};\n }\n try {\n const data = JSON.parse(text);\n if (returnType && Array.isArray(data)) {\n return data.map((element: any) => new (returnType as any)(element));\n }\n if (returnType && typeof returnType === 'function') {\n return new (returnType as any)(data);\n }\n return data;\n } catch {\n return text;\n }\n }\n\n private static createCSRFToken(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n }\n\n private static buildQueryString(params: Record<string, any>): string {\n if (!params) {\n return '';\n }\n const normalized = FetchHttpClient.normalizeParams(params);\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(normalized)) {\n if (Array.isArray(value)) {\n value.forEach((v: any) => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n }\n return searchParams.toString();\n }\n\n private static normalizeParams(params: Record<string, any>): Record<string, any> {\n if (!params) {\n return {};\n }\n const newParams: Record<string, any> = {};\n for (const [key, value] of Object.entries(params)) {\n if (value != null) {\n newParams[key] = FetchHttpClient.isFileParam(value) || Array.isArray(value) ? value : paramToString(value);\n }\n }\n return newParams;\n }\n\n private static isFileParam(param: any): boolean {\n if (typeof Buffer === 'function' && (param instanceof Buffer || param?.path)) {\n return true;\n }\n if (typeof Blob === 'function' && param instanceof Blob) {\n return true;\n }\n if (typeof File === 'function' && param instanceof File) {\n return true;\n }\n if (typeof File === 'object' && param instanceof File) {\n return true;\n }\n return false;\n }\n\n private static toFormDataValue(value: any): { data: any; filename?: string } {\n if (value && typeof value === 'object' && value.path && typeof value.path === 'string' && !(value instanceof Blob)) {\n try {\n const nodeFs = Function('return require(\"fs\")')();\n const nodePath = Function('return require(\"path\")')();\n const buffer = nodeFs.readFileSync(value.path);\n const filename: string = nodePath.basename(value.path);\n return { data: new Blob([buffer]), filename };\n } catch {\n return { data: value };\n }\n }\n\n if (typeof Buffer === 'function' && value instanceof Buffer) {\n return { data: new Blob([value]) };\n }\n\n return { data: value };\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -58,16 +58,13 @@ class ContentAuth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
|
58
58
|
password: this.authentications.basicAuth.password
|
|
59
59
|
});
|
|
60
60
|
const promise = new Promise((resolve, reject) => {
|
|
61
|
-
this.authApi
|
|
62
|
-
.createTicket(loginRequest)
|
|
63
|
-
.then((data) => {
|
|
61
|
+
this.authApi.createTicket(loginRequest).then((data) => {
|
|
64
62
|
this.saveUsername(username);
|
|
65
63
|
this.setTicket(data.entry.id);
|
|
66
64
|
promise.emit('success');
|
|
67
65
|
this.emit('logged-in');
|
|
68
66
|
resolve(data.entry.id);
|
|
69
|
-
})
|
|
70
|
-
.catch((error) => {
|
|
67
|
+
}, (error) => {
|
|
71
68
|
this.saveUsername('');
|
|
72
69
|
if (error.status === 401) {
|
|
73
70
|
promise.emit('unauthorized');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentAuth.js","sourceRoot":"","sources":["contentAuth.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport { AuthenticationApi, TicketBody } from '../api/auth-rest-api';\nimport { AlfrescoApiClient } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { Storage } from '../storage';\nimport { AlfrescoApiType } from '../to-deprecate/alfresco-api-type';\nimport { HttpClient } from '../api-clients/http-client.interface';\n\nexport class ContentAuth extends AlfrescoApiClient {\n ticketStorageLabel: string;\n ticket: string;\n\n authApi: AuthenticationApi;\n\n constructor(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApiType, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.className = 'ContentAuth';\n this.storage = Storage.getInstance();\n this.storage.setDomainPrefix(config.domainPrefix);\n\n this.setConfig(config);\n\n this.authApi = new AuthenticationApi(alfrescoApi);\n }\n\n setConfig(config: AlfrescoApiConfig) {\n this.config = config;\n\n this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; //Auth Call\n\n this.ticketStorageLabel = 'ticket-ECM';\n\n if (this.config.ticketEcm) {\n this.setTicket(config.ticketEcm);\n } else if (this.storage.getItem(this.ticketStorageLabel)) {\n this.setTicket(this.storage.getItem(this.ticketStorageLabel));\n }\n }\n\n changeHost() {\n this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; //Auth Call\n this.ticket = undefined;\n }\n\n saveUsername(username: string) {\n if (this.storage.supportsStorage()) {\n this.storage.setItem('ACS_USERNAME', username);\n }\n }\n\n /**\n * login Alfresco API\n * @param username Username to login\n * @param password Password to login\n * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n */\n login(username: string, password: string): Promise<string> {\n this.authentications.basicAuth.username = username;\n this.authentications.basicAuth.password = password;\n\n const loginRequest = new TicketBody({\n userId: this.authentications.basicAuth.username,\n password: this.authentications.basicAuth.password\n });\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.authApi\n .createTicket(loginRequest)\n .then((data) => {\n this.saveUsername(username);\n this.setTicket(data.entry.id);\n promise.emit('success');\n this.emit('logged-in');\n resolve(data.entry.id);\n })\n .catch((error) => {\n this.saveUsername('');\n if (error.status === 401) {\n promise.emit('unauthorized');\n } else if (error.status === 403) {\n promise.emit('forbidden');\n } else {\n promise.emit('error');\n }\n reject(error);\n });\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * validate the ticket present in this.config.ticket against the server\n * @returns A promise that returns if resolved and {error} if rejected.\n */\n validateTicket(): Promise<string> {\n this.setTicket(this.config.ticketEcm);\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.authApi.validateTicket().then(\n (data) => {\n this.setTicket(data.entry.id);\n promise.emit('success');\n this.emit('logged-in');\n resolve(data.entry.id);\n },\n (error) => {\n if (error.status === 401) {\n promise.emit('unauthorized');\n }\n promise.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * logout Alfresco API\n * @returns A promise that returns { authentication ticket} if resolved and {error} if rejected.\n */\n logout(): Promise<void> {\n this.saveUsername('');\n const promise: any = new Promise<void>((resolve, reject) => {\n this.authApi.deleteTicket().then(\n () => {\n promise.emit('logout');\n this.invalidateSession();\n resolve();\n },\n (error) => {\n if (error.status === 401) {\n promise.emit('unauthorized');\n }\n promise.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * Set the current Ticket\n */\n setTicket(ticket: string) {\n this.authentications.basicAuth.username = 'ROLE_TICKET';\n this.authentications.basicAuth.password = ticket;\n this.config.ticketEcm = ticket;\n this.storage.setItem(this.ticketStorageLabel, ticket);\n this.ticket = ticket;\n }\n\n /**\n * Get the current Ticket\n * @returns ticket value\n */\n getTicket(): string {\n return this.ticket;\n }\n\n invalidateSession() {\n this.storage.removeItem(this.ticketStorageLabel);\n this.authentications.basicAuth.username = null;\n this.authentications.basicAuth.password = null;\n this.config.ticketEcm = null;\n this.ticket = null;\n }\n\n /**\n * If the client is logged in return true\n * @returns `true` if client is logged in, otherwise `false`\n */\n isLoggedIn(): boolean {\n return !!this.ticket;\n }\n\n /**\n * return the Authentication\n * @returns authentication object\n */\n getAuthentication(): Authentication {\n return this.authentications;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"contentAuth.js","sourceRoot":"","sources":["contentAuth.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport { AuthenticationApi, TicketBody } from '../api/auth-rest-api';\nimport { AlfrescoApiClient } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { Storage } from '../storage';\nimport { AlfrescoApiType } from '../to-deprecate/alfresco-api-type';\nimport { HttpClient } from '../api-clients/http-client.interface';\n\nexport class ContentAuth extends AlfrescoApiClient {\n ticketStorageLabel: string;\n ticket: string;\n\n authApi: AuthenticationApi;\n\n constructor(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApiType, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.className = 'ContentAuth';\n this.storage = Storage.getInstance();\n this.storage.setDomainPrefix(config.domainPrefix);\n\n this.setConfig(config);\n\n this.authApi = new AuthenticationApi(alfrescoApi);\n }\n\n setConfig(config: AlfrescoApiConfig) {\n this.config = config;\n\n this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; //Auth Call\n\n this.ticketStorageLabel = 'ticket-ECM';\n\n if (this.config.ticketEcm) {\n this.setTicket(config.ticketEcm);\n } else if (this.storage.getItem(this.ticketStorageLabel)) {\n this.setTicket(this.storage.getItem(this.ticketStorageLabel));\n }\n }\n\n changeHost() {\n this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; //Auth Call\n this.ticket = undefined;\n }\n\n saveUsername(username: string) {\n if (this.storage.supportsStorage()) {\n this.storage.setItem('ACS_USERNAME', username);\n }\n }\n\n /**\n * login Alfresco API\n * @param username Username to login\n * @param password Password to login\n * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n */\n login(username: string, password: string): Promise<string> {\n this.authentications.basicAuth.username = username;\n this.authentications.basicAuth.password = password;\n\n const loginRequest = new TicketBody({\n userId: this.authentications.basicAuth.username,\n password: this.authentications.basicAuth.password\n });\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.authApi.createTicket(loginRequest).then(\n (data) => {\n this.saveUsername(username);\n this.setTicket(data.entry.id);\n promise.emit('success');\n this.emit('logged-in');\n resolve(data.entry.id);\n },\n (error) => {\n this.saveUsername('');\n if (error.status === 401) {\n promise.emit('unauthorized');\n } else if (error.status === 403) {\n promise.emit('forbidden');\n } else {\n promise.emit('error');\n }\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * validate the ticket present in this.config.ticket against the server\n * @returns A promise that returns if resolved and {error} if rejected.\n */\n validateTicket(): Promise<string> {\n this.setTicket(this.config.ticketEcm);\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.authApi.validateTicket().then(\n (data) => {\n this.setTicket(data.entry.id);\n promise.emit('success');\n this.emit('logged-in');\n resolve(data.entry.id);\n },\n (error) => {\n if (error.status === 401) {\n promise.emit('unauthorized');\n }\n promise.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * logout Alfresco API\n * @returns A promise that returns { authentication ticket} if resolved and {error} if rejected.\n */\n logout(): Promise<void> {\n this.saveUsername('');\n const promise: any = new Promise<void>((resolve, reject) => {\n this.authApi.deleteTicket().then(\n () => {\n promise.emit('logout');\n this.invalidateSession();\n resolve();\n },\n (error) => {\n if (error.status === 401) {\n promise.emit('unauthorized');\n }\n promise.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * Set the current Ticket\n */\n setTicket(ticket: string) {\n this.authentications.basicAuth.username = 'ROLE_TICKET';\n this.authentications.basicAuth.password = ticket;\n this.config.ticketEcm = ticket;\n this.storage.setItem(this.ticketStorageLabel, ticket);\n this.ticket = ticket;\n }\n\n /**\n * Get the current Ticket\n * @returns ticket value\n */\n getTicket(): string {\n return this.ticket;\n }\n\n invalidateSession() {\n this.storage.removeItem(this.ticketStorageLabel);\n this.authentications.basicAuth.username = null;\n this.authentications.basicAuth.password = null;\n this.config.ticketEcm = null;\n this.ticket = null;\n }\n\n /**\n * If the client is logged in return true\n * @returns `true` if client is logged in, otherwise `false`\n */\n isLoggedIn(): boolean {\n return !!this.ticket;\n }\n\n /**\n * return the Authentication\n * @returns authentication object\n */\n getAuthentication(): Authentication {\n return this.authentications;\n }\n}\n"]}
|
package/src/fetchHttpClient.js
CHANGED
|
@@ -25,14 +25,33 @@ class FetchHttpClient {
|
|
|
25
25
|
this.customFetch = customFetch;
|
|
26
26
|
}
|
|
27
27
|
getFetch() {
|
|
28
|
-
return this.customFetch ||
|
|
28
|
+
return this.customFetch || globalThis.fetch;
|
|
29
29
|
}
|
|
30
30
|
hasNativeXhr() {
|
|
31
|
-
if (this.customFetch
|
|
31
|
+
if (this.customFetch) {
|
|
32
32
|
return false;
|
|
33
33
|
}
|
|
34
34
|
return typeof XMLHttpRequest !== 'undefined';
|
|
35
35
|
}
|
|
36
|
+
static getStatusText(status, fallback = '') {
|
|
37
|
+
const statusTexts = {
|
|
38
|
+
400: 'Bad Request',
|
|
39
|
+
401: 'Unauthorized',
|
|
40
|
+
403: 'Forbidden',
|
|
41
|
+
404: 'Not Found',
|
|
42
|
+
405: 'Method Not Allowed',
|
|
43
|
+
409: 'Conflict',
|
|
44
|
+
410: 'Gone',
|
|
45
|
+
415: 'Unsupported Media Type',
|
|
46
|
+
422: 'Unprocessable Entity',
|
|
47
|
+
429: 'Too Many Requests',
|
|
48
|
+
500: 'Internal Server Error',
|
|
49
|
+
501: 'Not Implemented',
|
|
50
|
+
502: 'Bad Gateway',
|
|
51
|
+
503: 'Service Unavailable'
|
|
52
|
+
};
|
|
53
|
+
return statusTexts[status] || fallback;
|
|
54
|
+
}
|
|
36
55
|
post(url, options, securityOptions, emitters) {
|
|
37
56
|
return this.request(url, Object.assign(Object.assign({}, options), { httpMethod: 'POST' }), securityOptions, emitters);
|
|
38
57
|
}
|
|
@@ -85,13 +104,14 @@ class FetchHttpClient {
|
|
|
85
104
|
const execute = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
86
105
|
const response = yield fn(url, init);
|
|
87
106
|
if (!response.ok) {
|
|
88
|
-
const
|
|
89
|
-
const
|
|
107
|
+
const responseText = yield response.text().catch(() => '');
|
|
108
|
+
const statusText = response.statusText || FetchHttpClient.getStatusText(response.status);
|
|
109
|
+
const errorMessage = responseText || statusText;
|
|
110
|
+
const error = new Error(errorMessage);
|
|
90
111
|
error.status = response.status;
|
|
91
112
|
error.response = response;
|
|
92
113
|
FetchHttpClient.emitErrorEvents(error, response.status, emitters);
|
|
93
|
-
|
|
94
|
-
return;
|
|
114
|
+
throw error;
|
|
95
115
|
}
|
|
96
116
|
if (securityOptions.isBpmRequest) {
|
|
97
117
|
const setCookie = response.headers.get('set-cookie');
|
|
@@ -101,18 +121,22 @@ class FetchHttpClient {
|
|
|
101
121
|
}
|
|
102
122
|
const data = yield this.deserializeResponse(response, returnType, responseType);
|
|
103
123
|
eventEmitter.emit('success', data);
|
|
104
|
-
|
|
124
|
+
return data;
|
|
105
125
|
});
|
|
106
|
-
execute().
|
|
107
|
-
|
|
126
|
+
execute().then((data) => {
|
|
127
|
+
resolve(data);
|
|
128
|
+
}, (error) => {
|
|
129
|
+
if ((error === null || error === void 0 ? void 0 : error.name) === 'AbortError') {
|
|
108
130
|
eventEmitter.emit('abort');
|
|
109
131
|
reject(error);
|
|
110
132
|
return;
|
|
111
133
|
}
|
|
112
|
-
if (
|
|
113
|
-
|
|
134
|
+
if (error === null || error === void 0 ? void 0 : error.status) {
|
|
135
|
+
reject({ error, status: error.status, message: error.message });
|
|
136
|
+
return;
|
|
114
137
|
}
|
|
115
|
-
|
|
138
|
+
FetchHttpClient.emitErrorEvents(error, 0, emitters);
|
|
139
|
+
reject({ error });
|
|
116
140
|
});
|
|
117
141
|
});
|
|
118
142
|
promise.abort = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchHttpClient.js","sourceRoot":"","sources":["fetchHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Authentication } from './authentication/authentication';\nimport { RequestOptions, HttpClient, SecurityOptions, Emitters } from './api-clients/http-client.interface';\nimport { Oauth2 } from './authentication/oauth2';\nimport { BasicAuth } from './authentication/basicAuth';\nimport { isBrowser, paramToString } from './utils';\n\ndeclare const Blob: any;\ndeclare const Buffer: any;\ndeclare const process: any;\ndeclare const XMLHttpRequest: any;\n\nexport class FetchHttpClient implements HttpClient {\n timeout: number | { deadline?: number; response?: number } = undefined;\n private readonly customFetch?: typeof fetch;\n\n constructor(customFetch?: typeof fetch) {\n this.customFetch = customFetch;\n }\n\n private getFetch(): typeof fetch {\n // eslint-disable-next-line no-underscore-dangle\n return this.customFetch || (typeof process !== 'undefined' && (process as any).__test_fetch__) || globalThis.fetch;\n }\n\n private hasNativeXhr(): boolean {\n // eslint-disable-next-line no-underscore-dangle\n if (this.customFetch || (typeof process !== 'undefined' && (process as any).__test_fetch__)) {\n return false;\n }\n return typeof XMLHttpRequest !== 'undefined';\n }\n\n post<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'POST' }, securityOptions, emitters);\n }\n\n put<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'PUT' }, securityOptions, emitters);\n }\n\n get<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'GET' }, securityOptions, emitters);\n }\n\n delete<T = void>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'DELETE' }, securityOptions, emitters);\n }\n\n request<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n const { httpMethod, queryParams, headerParams, formParams, bodyParam, contentType, accept, responseType, returnType } = options;\n\n const headers = this.buildHeaders(headerParams, securityOptions, contentType, accept);\n const queryString = FetchHttpClient.buildQueryString(queryParams);\n const fullUrl = queryString ? `${url}${url.includes('?') ? '&' : '?'}${queryString}` : url;\n const body = this.buildBody(contentType, formParams, bodyParam);\n const hasBody = body !== undefined && httpMethod !== 'GET' && httpMethod !== 'HEAD';\n const withCredentials = securityOptions.withCredentials || securityOptions.isBpmRequest;\n\n if (hasBody && this.hasNativeXhr()) {\n return this.requestWithXhr<T>(fullUrl, httpMethod, headers, body, withCredentials, returnType, responseType, securityOptions, emitters);\n }\n\n return this.requestWithFetch<T>(\n fullUrl,\n httpMethod,\n headers,\n hasBody ? body : undefined,\n withCredentials,\n returnType,\n responseType,\n securityOptions,\n emitters\n );\n }\n\n private requestWithFetch<T>(\n url: string,\n method: string,\n headers: Record<string, string>,\n body: any,\n withCredentials: boolean,\n returnType: string,\n responseType: string,\n securityOptions: SecurityOptions,\n emitters: Emitters\n ): Promise<T> {\n const { eventEmitter } = emitters;\n const controller = new AbortController();\n const timeoutMs = typeof this.timeout === 'number' ? this.timeout : this.timeout?.deadline;\n\n if (timeoutMs) {\n if (typeof AbortSignal.timeout === 'function') {\n AbortSignal.timeout(timeoutMs).addEventListener('abort', () => controller.abort());\n } else {\n setTimeout(() => controller.abort(), timeoutMs);\n }\n }\n\n const init: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n credentials: withCredentials ? 'include' : 'same-origin'\n };\n\n if (body !== undefined) {\n init.body = body;\n }\n\n const fn = this.getFetch();\n\n const promise: any = new Promise<T>((resolve, reject) => {\n const execute = async () => {\n const response = await fn(url, init);\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => '');\n const error: any = new Error(errorText || response.statusText);\n error.status = response.status;\n error.response = response;\n\n FetchHttpClient.emitErrorEvents(error, response.status, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error, status: response.status, message: errorText || response.statusText });\n return;\n }\n\n if (securityOptions.isBpmRequest) {\n const setCookie = response.headers.get('set-cookie');\n if (setCookie) {\n securityOptions.authentications.cookie = setCookie;\n }\n }\n\n const data = await this.deserializeResponse(response, returnType, responseType);\n eventEmitter.emit('success', data);\n resolve(data as T);\n };\n\n execute().catch((error: any) => {\n if (error.name === 'AbortError') {\n eventEmitter.emit('abort');\n reject(error);\n return;\n }\n if (!error.status) {\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n }\n // eslint-disable-next-line prefer-promise-reject-errors\n reject(error.status ? { error, status: error.status, message: error.message } : { error });\n });\n });\n\n promise.abort = () => {\n controller.abort();\n return promise;\n };\n\n return promise;\n }\n\n private requestWithXhr<T>(\n url: string,\n method: string,\n headers: Record<string, string>,\n body: any,\n withCredentials: boolean,\n returnType: string,\n responseType: string,\n securityOptions: SecurityOptions,\n emitters: Emitters\n ): Promise<T> {\n const { eventEmitter } = emitters;\n const timeoutMs = typeof this.timeout === 'number' ? this.timeout : this.timeout?.deadline;\n let xhr: any;\n\n const promise: any = new Promise<T>((resolve, reject) => {\n xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n\n for (const [key, value] of Object.entries(headers)) {\n xhr.setRequestHeader(key, value);\n }\n\n if (withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (timeoutMs) {\n xhr.timeout = timeoutMs;\n }\n\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n xhr.responseType = 'blob';\n }\n\n xhr.upload.onprogress = (event: any) => {\n if (event.lengthComputable) {\n const percent = Math.round((event.loaded / event.total) * 100);\n eventEmitter.emit('progress', { total: event.total, loaded: event.loaded, percent });\n }\n };\n\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n if (securityOptions.isBpmRequest) {\n const setCookie = xhr.getResponseHeader('set-cookie');\n if (setCookie) {\n securityOptions.authentications.cookie = setCookie;\n }\n }\n\n const data = this.deserializeXhrResponse(xhr, returnType, responseType);\n eventEmitter.emit('success', data);\n resolve(data as T);\n } else {\n const errorText = xhr.responseText || xhr.statusText;\n const error: any = new Error(errorText);\n error.status = xhr.status;\n error.message = errorText;\n\n FetchHttpClient.emitErrorEvents(error, xhr.status, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error, status: xhr.status, message: errorText });\n }\n };\n\n xhr.onerror = () => {\n const error = new Error('Network request failed');\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n };\n\n xhr.onabort = () => {\n eventEmitter.emit('abort');\n reject(new DOMException('The operation was aborted.', 'AbortError'));\n };\n\n xhr.ontimeout = () => {\n const error = new Error('Request timed out');\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n };\n\n xhr.send(body);\n });\n\n promise.abort = () => {\n if (xhr) {\n xhr.abort();\n }\n return promise;\n };\n\n return promise;\n }\n\n private deserializeXhrResponse(xhr: any, returnType: string, responseType: string): any {\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n return xhr.response;\n }\n\n if (returnType === 'String') {\n return xhr.responseText;\n }\n\n const contentType = xhr.getResponseHeader('content-type') || '';\n if (contentType.includes('text/html')) {\n return xhr.responseText;\n }\n\n try {\n const text = xhr.responseText;\n if (!text) {\n return {};\n }\n const data = JSON.parse(text);\n if (returnType && Array.isArray(data)) {\n return data.map((element: any) => new (returnType as any)(element));\n }\n if (returnType && typeof returnType === 'function') {\n return new (returnType as any)(data);\n }\n return data;\n } catch {\n return xhr.responseText || '';\n }\n }\n\n setCsrfToken(headers: Record<string, string>): void {\n const token = FetchHttpClient.createCSRFToken();\n headers['X-CSRF-TOKEN'] = token;\n\n if (!isBrowser()) {\n headers['Cookie'] = 'CSRF-TOKEN=' + token + ';path=/';\n }\n\n try {\n document.cookie = 'CSRF-TOKEN=' + token + ';path=/';\n } catch {\n /* continue regardless of error */\n }\n }\n\n private buildHeaders(\n headerParams: Record<string, any>,\n securityOptions: SecurityOptions,\n contentType: string,\n accept: string\n ): Record<string, string> {\n const headers: Record<string, string> = {\n ...securityOptions.defaultHeaders,\n ...FetchHttpClient.normalizeParams(headerParams)\n };\n\n this.applyAuthHeaders(headers, securityOptions.authentications);\n\n if (securityOptions.isBpmRequest && securityOptions.enableCsrf) {\n this.setCsrfToken(headers);\n }\n\n if (securityOptions.isBpmRequest && securityOptions.authentications.cookie && !isBrowser()) {\n headers['Cookie'] = headers['Cookie']\n ? headers['Cookie'] + '; ' + securityOptions.authentications.cookie\n : securityOptions.authentications.cookie;\n }\n\n if (contentType && contentType !== 'multipart/form-data') {\n headers['Content-Type'] = contentType;\n } else if (contentType !== 'multipart/form-data' && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n if (accept) {\n headers['Accept'] = accept;\n }\n\n return headers;\n }\n\n private buildBody(contentType: string, formParams: Record<string, any>, bodyParam: string | object): any {\n if (contentType === 'application/x-www-form-urlencoded') {\n const params = FetchHttpClient.normalizeParams(formParams);\n return new URLSearchParams(params).toString();\n }\n\n if (contentType === 'multipart/form-data') {\n const normalizedParams = FetchHttpClient.normalizeParams(formParams);\n const formData = new FormData();\n for (const [key, value] of Object.entries(normalizedParams)) {\n const { data, filename } = FetchHttpClient.toFormDataValue(value);\n if (filename) {\n formData.append(key, data, filename);\n } else {\n formData.append(key, data);\n }\n }\n return formData;\n }\n\n if (bodyParam) {\n return typeof bodyParam === 'string' ? bodyParam : JSON.stringify(bodyParam);\n }\n\n return undefined;\n }\n\n private static emitErrorEvents(error: any, status: number, emitters: Emitters): void {\n const { eventEmitter, apiClientEmitter } = emitters;\n\n apiClientEmitter.emit('error', error);\n eventEmitter.emit('error', error);\n\n if (status === 401) {\n apiClientEmitter.emit('unauthorized');\n eventEmitter.emit('unauthorized');\n }\n\n if (status === 403) {\n apiClientEmitter.emit('forbidden');\n eventEmitter.emit('forbidden');\n }\n }\n\n private applyAuthHeaders(headers: Record<string, string>, authentications: Authentication): void {\n if (!authentications) {\n return;\n }\n\n switch (authentications.type) {\n case 'basic': {\n const basicAuth: BasicAuth = authentications.basicAuth;\n if (basicAuth.username || basicAuth.password) {\n const encoded =\n typeof btoa === 'function'\n ? btoa((basicAuth.username || '') + ':' + (basicAuth.password || ''))\n : Buffer.from((basicAuth.username || '') + ':' + (basicAuth.password || '')).toString('base64');\n headers['Authorization'] = 'Basic ' + encoded;\n }\n break;\n }\n case 'activiti': {\n if (authentications.basicAuth.ticket) {\n headers['Authorization'] = authentications.basicAuth.ticket;\n }\n break;\n }\n case 'oauth2': {\n const oauth2: Oauth2 = authentications.oauth2;\n if (oauth2.accessToken) {\n headers['Authorization'] = 'Bearer ' + oauth2.accessToken;\n }\n break;\n }\n default:\n throw new Error('Unknown authentication type: ' + authentications.type);\n }\n }\n\n private async deserializeResponse(response: Response, returnType: string, responseType: string): Promise<any> {\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n const blob = await response.blob();\n if (isBrowser()) {\n return blob;\n }\n const arrayBuffer = await blob.arrayBuffer();\n return Buffer.from(arrayBuffer);\n }\n\n if (returnType === 'String') {\n return response.text();\n }\n\n const contentTypeHeader = response.headers.get('content-type') || '';\n if (contentTypeHeader.includes('text/html')) {\n return response.text();\n }\n\n const text = await response.text();\n if (!text) {\n return {};\n }\n try {\n const data = JSON.parse(text);\n if (returnType && Array.isArray(data)) {\n return data.map((element: any) => new (returnType as any)(element));\n }\n if (returnType && typeof returnType === 'function') {\n return new (returnType as any)(data);\n }\n return data;\n } catch {\n return text;\n }\n }\n\n private static createCSRFToken(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n }\n\n private static buildQueryString(params: Record<string, any>): string {\n if (!params) {\n return '';\n }\n const normalized = FetchHttpClient.normalizeParams(params);\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(normalized)) {\n if (Array.isArray(value)) {\n value.forEach((v: any) => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n }\n return searchParams.toString();\n }\n\n private static normalizeParams(params: Record<string, any>): Record<string, any> {\n if (!params) {\n return {};\n }\n const newParams: Record<string, any> = {};\n for (const [key, value] of Object.entries(params)) {\n if (value != null) {\n newParams[key] = FetchHttpClient.isFileParam(value) || Array.isArray(value) ? value : paramToString(value);\n }\n }\n return newParams;\n }\n\n private static isFileParam(param: any): boolean {\n if (typeof Buffer === 'function' && (param instanceof Buffer || param?.path)) {\n return true;\n }\n if (typeof Blob === 'function' && param instanceof Blob) {\n return true;\n }\n if (typeof File === 'function' && param instanceof File) {\n return true;\n }\n if (typeof File === 'object' && param instanceof File) {\n return true;\n }\n return false;\n }\n\n private static toFormDataValue(value: any): { data: any; filename?: string } {\n if (value && typeof value === 'object' && value.path && typeof value.path === 'string' && !(value instanceof Blob)) {\n try {\n const nodeFs = Function('return require(\"fs\")')();\n const nodePath = Function('return require(\"path\")')();\n const buffer = nodeFs.readFileSync(value.path);\n const filename: string = nodePath.basename(value.path);\n return { data: new Blob([buffer]), filename };\n } catch {\n return { data: value };\n }\n }\n\n if (typeof Buffer === 'function' && value instanceof Buffer) {\n return { data: new Blob([value]) };\n }\n\n return { data: value };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"fetchHttpClient.js","sourceRoot":"","sources":["fetchHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Authentication } from './authentication/authentication';\nimport { RequestOptions, HttpClient, SecurityOptions, Emitters } from './api-clients/http-client.interface';\nimport { Oauth2 } from './authentication/oauth2';\nimport { BasicAuth } from './authentication/basicAuth';\nimport { isBrowser, paramToString } from './utils';\n\ndeclare const Blob: any;\ndeclare const Buffer: any;\ndeclare const XMLHttpRequest: any;\n\nexport class FetchHttpClient implements HttpClient {\n timeout: number | { deadline?: number; response?: number } = undefined;\n private readonly customFetch?: typeof fetch;\n\n constructor(customFetch?: typeof fetch) {\n this.customFetch = customFetch;\n }\n\n private getFetch(): typeof fetch {\n return this.customFetch || globalThis.fetch;\n }\n\n private hasNativeXhr(): boolean {\n if (this.customFetch) {\n return false;\n }\n return typeof XMLHttpRequest !== 'undefined';\n }\n\n private static getStatusText(status: number, fallback: string = ''): string {\n const statusTexts: { [key: number]: string } = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 409: 'Conflict',\n 410: 'Gone',\n 415: 'Unsupported Media Type',\n 422: 'Unprocessable Entity',\n 429: 'Too Many Requests',\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable'\n };\n return statusTexts[status] || fallback;\n }\n\n post<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'POST' }, securityOptions, emitters);\n }\n\n put<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'PUT' }, securityOptions, emitters);\n }\n\n get<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'GET' }, securityOptions, emitters);\n }\n\n delete<T = void>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'DELETE' }, securityOptions, emitters);\n }\n\n request<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n const { httpMethod, queryParams, headerParams, formParams, bodyParam, contentType, accept, responseType, returnType } = options;\n\n const headers = this.buildHeaders(headerParams, securityOptions, contentType, accept);\n const queryString = FetchHttpClient.buildQueryString(queryParams);\n const fullUrl = queryString ? `${url}${url.includes('?') ? '&' : '?'}${queryString}` : url;\n const body = this.buildBody(contentType, formParams, bodyParam);\n const hasBody = body !== undefined && httpMethod !== 'GET' && httpMethod !== 'HEAD';\n const withCredentials = securityOptions.withCredentials || securityOptions.isBpmRequest;\n\n if (hasBody && this.hasNativeXhr()) {\n return this.requestWithXhr<T>(fullUrl, httpMethod, headers, body, withCredentials, returnType, responseType, securityOptions, emitters);\n }\n\n return this.requestWithFetch<T>(\n fullUrl,\n httpMethod,\n headers,\n hasBody ? body : undefined,\n withCredentials,\n returnType,\n responseType,\n securityOptions,\n emitters\n );\n }\n\n private requestWithFetch<T>(\n url: string,\n method: string,\n headers: Record<string, string>,\n body: any,\n withCredentials: boolean,\n returnType: string,\n responseType: string,\n securityOptions: SecurityOptions,\n emitters: Emitters\n ): Promise<T> {\n const { eventEmitter } = emitters;\n const controller = new AbortController();\n const timeoutMs = typeof this.timeout === 'number' ? this.timeout : this.timeout?.deadline;\n\n if (timeoutMs) {\n if (typeof AbortSignal.timeout === 'function') {\n AbortSignal.timeout(timeoutMs).addEventListener('abort', () => controller.abort());\n } else {\n setTimeout(() => controller.abort(), timeoutMs);\n }\n }\n\n const init: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n credentials: withCredentials ? 'include' : 'same-origin'\n };\n\n if (body !== undefined) {\n init.body = body;\n }\n\n const fn = this.getFetch();\n\n const promise: any = new Promise<T>((resolve, reject) => {\n const execute = async () => {\n const response = await fn(url, init);\n\n if (!response.ok) {\n const responseText = await response.text().catch(() => '');\n const statusText = response.statusText || FetchHttpClient.getStatusText(response.status);\n const errorMessage = responseText || statusText;\n const error: any = new Error(errorMessage);\n error.status = response.status;\n error.response = response;\n\n FetchHttpClient.emitErrorEvents(error, response.status, emitters);\n throw error;\n }\n\n if (securityOptions.isBpmRequest) {\n const setCookie = response.headers.get('set-cookie');\n if (setCookie) {\n securityOptions.authentications.cookie = setCookie;\n }\n }\n\n const data = await this.deserializeResponse(response, returnType, responseType);\n eventEmitter.emit('success', data);\n return data as T;\n };\n\n execute().then(\n (data: T) => {\n resolve(data);\n },\n (error: any) => {\n if (error?.name === 'AbortError') {\n eventEmitter.emit('abort');\n reject(error);\n return;\n }\n // HTTP errors from execute() have a status code\n if (error?.status) {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error, status: error.status, message: error.message });\n return;\n }\n // Non-HTTP errors\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n }\n );\n });\n\n promise.abort = () => {\n controller.abort();\n return promise;\n };\n\n return promise;\n }\n\n private requestWithXhr<T>(\n url: string,\n method: string,\n headers: Record<string, string>,\n body: any,\n withCredentials: boolean,\n returnType: string,\n responseType: string,\n securityOptions: SecurityOptions,\n emitters: Emitters\n ): Promise<T> {\n const { eventEmitter } = emitters;\n const timeoutMs = typeof this.timeout === 'number' ? this.timeout : this.timeout?.deadline;\n let xhr: any;\n\n const promise: any = new Promise<T>((resolve, reject) => {\n xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n\n for (const [key, value] of Object.entries(headers)) {\n xhr.setRequestHeader(key, value);\n }\n\n if (withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (timeoutMs) {\n xhr.timeout = timeoutMs;\n }\n\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n xhr.responseType = 'blob';\n }\n\n xhr.upload.onprogress = (event: any) => {\n if (event.lengthComputable) {\n const percent = Math.round((event.loaded / event.total) * 100);\n eventEmitter.emit('progress', { total: event.total, loaded: event.loaded, percent });\n }\n };\n\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n if (securityOptions.isBpmRequest) {\n const setCookie = xhr.getResponseHeader('set-cookie');\n if (setCookie) {\n securityOptions.authentications.cookie = setCookie;\n }\n }\n\n const data = this.deserializeXhrResponse(xhr, returnType, responseType);\n eventEmitter.emit('success', data);\n resolve(data as T);\n } else {\n const errorText = xhr.responseText || xhr.statusText;\n const error: any = new Error(errorText);\n error.status = xhr.status;\n error.message = errorText;\n\n FetchHttpClient.emitErrorEvents(error, xhr.status, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error, status: xhr.status, message: errorText });\n }\n };\n\n xhr.onerror = () => {\n const error = new Error('Network request failed');\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n };\n\n xhr.onabort = () => {\n eventEmitter.emit('abort');\n reject(new DOMException('The operation was aborted.', 'AbortError'));\n };\n\n xhr.ontimeout = () => {\n const error = new Error('Request timed out');\n FetchHttpClient.emitErrorEvents(error, 0, emitters);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n };\n\n xhr.send(body);\n });\n\n promise.abort = () => {\n if (xhr) {\n xhr.abort();\n }\n return promise;\n };\n\n return promise;\n }\n\n private deserializeXhrResponse(xhr: any, returnType: string, responseType: string): any {\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n return xhr.response;\n }\n\n if (returnType === 'String') {\n return xhr.responseText;\n }\n\n const contentType = xhr.getResponseHeader('content-type') || '';\n if (contentType.includes('text/html')) {\n return xhr.responseText;\n }\n\n try {\n const text = xhr.responseText;\n if (!text) {\n return {};\n }\n const data = JSON.parse(text);\n if (returnType && Array.isArray(data)) {\n return data.map((element: any) => new (returnType as any)(element));\n }\n if (returnType && typeof returnType === 'function') {\n return new (returnType as any)(data);\n }\n return data;\n } catch {\n return xhr.responseText || '';\n }\n }\n\n setCsrfToken(headers: Record<string, string>): void {\n const token = FetchHttpClient.createCSRFToken();\n headers['X-CSRF-TOKEN'] = token;\n\n if (!isBrowser()) {\n headers['Cookie'] = 'CSRF-TOKEN=' + token + ';path=/';\n }\n\n try {\n document.cookie = 'CSRF-TOKEN=' + token + ';path=/';\n } catch {\n /* continue regardless of error */\n }\n }\n\n private buildHeaders(\n headerParams: Record<string, any>,\n securityOptions: SecurityOptions,\n contentType: string,\n accept: string\n ): Record<string, string> {\n const headers: Record<string, string> = {\n ...securityOptions.defaultHeaders,\n ...FetchHttpClient.normalizeParams(headerParams)\n };\n\n this.applyAuthHeaders(headers, securityOptions.authentications);\n\n if (securityOptions.isBpmRequest && securityOptions.enableCsrf) {\n this.setCsrfToken(headers);\n }\n\n if (securityOptions.isBpmRequest && securityOptions.authentications.cookie && !isBrowser()) {\n headers['Cookie'] = headers['Cookie']\n ? headers['Cookie'] + '; ' + securityOptions.authentications.cookie\n : securityOptions.authentications.cookie;\n }\n\n if (contentType && contentType !== 'multipart/form-data') {\n headers['Content-Type'] = contentType;\n } else if (contentType !== 'multipart/form-data' && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n if (accept) {\n headers['Accept'] = accept;\n }\n\n return headers;\n }\n\n private buildBody(contentType: string, formParams: Record<string, any>, bodyParam: string | object): any {\n if (contentType === 'application/x-www-form-urlencoded') {\n const params = FetchHttpClient.normalizeParams(formParams);\n return new URLSearchParams(params).toString();\n }\n\n if (contentType === 'multipart/form-data') {\n const normalizedParams = FetchHttpClient.normalizeParams(formParams);\n const formData = new FormData();\n for (const [key, value] of Object.entries(normalizedParams)) {\n const { data, filename } = FetchHttpClient.toFormDataValue(value);\n if (filename) {\n formData.append(key, data, filename);\n } else {\n formData.append(key, data);\n }\n }\n return formData;\n }\n\n if (bodyParam) {\n return typeof bodyParam === 'string' ? bodyParam : JSON.stringify(bodyParam);\n }\n\n return undefined;\n }\n\n private static emitErrorEvents(error: any, status: number, emitters: Emitters): void {\n const { eventEmitter, apiClientEmitter } = emitters;\n\n apiClientEmitter.emit('error', error);\n eventEmitter.emit('error', error);\n\n if (status === 401) {\n apiClientEmitter.emit('unauthorized');\n eventEmitter.emit('unauthorized');\n }\n\n if (status === 403) {\n apiClientEmitter.emit('forbidden');\n eventEmitter.emit('forbidden');\n }\n }\n\n private applyAuthHeaders(headers: Record<string, string>, authentications: Authentication): void {\n if (!authentications) {\n return;\n }\n\n switch (authentications.type) {\n case 'basic': {\n const basicAuth: BasicAuth = authentications.basicAuth;\n if (basicAuth.username || basicAuth.password) {\n const encoded =\n typeof btoa === 'function'\n ? btoa((basicAuth.username || '') + ':' + (basicAuth.password || ''))\n : Buffer.from((basicAuth.username || '') + ':' + (basicAuth.password || '')).toString('base64');\n headers['Authorization'] = 'Basic ' + encoded;\n }\n break;\n }\n case 'activiti': {\n if (authentications.basicAuth.ticket) {\n headers['Authorization'] = authentications.basicAuth.ticket;\n }\n break;\n }\n case 'oauth2': {\n const oauth2: Oauth2 = authentications.oauth2;\n if (oauth2.accessToken) {\n headers['Authorization'] = 'Bearer ' + oauth2.accessToken;\n }\n break;\n }\n default:\n throw new Error('Unknown authentication type: ' + authentications.type);\n }\n }\n\n private async deserializeResponse(response: Response, returnType: string, responseType: string): Promise<any> {\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob' || returnType === 'Binary') {\n const blob = await response.blob();\n if (isBrowser()) {\n return blob;\n }\n const arrayBuffer = await blob.arrayBuffer();\n return Buffer.from(arrayBuffer);\n }\n\n if (returnType === 'String') {\n return response.text();\n }\n\n const contentTypeHeader = response.headers.get('content-type') || '';\n if (contentTypeHeader.includes('text/html')) {\n return response.text();\n }\n\n const text = await response.text();\n if (!text) {\n return {};\n }\n try {\n const data = JSON.parse(text);\n if (returnType && Array.isArray(data)) {\n return data.map((element: any) => new (returnType as any)(element));\n }\n if (returnType && typeof returnType === 'function') {\n return new (returnType as any)(data);\n }\n return data;\n } catch {\n return text;\n }\n }\n\n private static createCSRFToken(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n }\n\n private static buildQueryString(params: Record<string, any>): string {\n if (!params) {\n return '';\n }\n const normalized = FetchHttpClient.normalizeParams(params);\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(normalized)) {\n if (Array.isArray(value)) {\n value.forEach((v: any) => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n }\n return searchParams.toString();\n }\n\n private static normalizeParams(params: Record<string, any>): Record<string, any> {\n if (!params) {\n return {};\n }\n const newParams: Record<string, any> = {};\n for (const [key, value] of Object.entries(params)) {\n if (value != null) {\n newParams[key] = FetchHttpClient.isFileParam(value) || Array.isArray(value) ? value : paramToString(value);\n }\n }\n return newParams;\n }\n\n private static isFileParam(param: any): boolean {\n if (typeof Buffer === 'function' && (param instanceof Buffer || param?.path)) {\n return true;\n }\n if (typeof Blob === 'function' && param instanceof Blob) {\n return true;\n }\n if (typeof File === 'function' && param instanceof File) {\n return true;\n }\n if (typeof File === 'object' && param instanceof File) {\n return true;\n }\n return false;\n }\n\n private static toFormDataValue(value: any): { data: any; filename?: string } {\n if (value && typeof value === 'object' && value.path && typeof value.path === 'string' && !(value instanceof Blob)) {\n try {\n const nodeFs = Function('return require(\"fs\")')();\n const nodePath = Function('return require(\"path\")')();\n const buffer = nodeFs.readFileSync(value.path);\n const filename: string = nodePath.basename(value.path);\n return { data: new Blob([buffer]), filename };\n } catch {\n return { data: value };\n }\n }\n\n if (typeof Buffer === 'function' && value instanceof Buffer) {\n return { data: new Blob([value]) };\n }\n\n return { data: value };\n }\n}\n"]}
|
package/typings/package.json
CHANGED
|
@@ -24,6 +24,7 @@ export declare class FetchHttpClient implements HttpClient {
|
|
|
24
24
|
constructor(customFetch?: typeof fetch);
|
|
25
25
|
private getFetch;
|
|
26
26
|
private hasNativeXhr;
|
|
27
|
+
private static getStatusText;
|
|
27
28
|
post<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T>;
|
|
28
29
|
put<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T>;
|
|
29
30
|
get<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T>;
|