@alfresco/js-api 9.4.0-17617861152 → 9.4.0-17644123790

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.
Files changed (60) hide show
  1. package/esm2015/package.json +2 -2
  2. package/esm2015/src/alfrescoApi.js +14 -14
  3. package/esm2015/src/alfrescoApi.js.map +1 -1
  4. package/esm2015/src/alfrescoApiClient.js +28 -14
  5. package/esm2015/src/alfrescoApiClient.js.map +1 -1
  6. package/esm2015/src/api/content-custom-api/api/upload.api.js +52 -1
  7. package/esm2015/src/api/content-custom-api/api/upload.api.js.map +1 -1
  8. package/esm2015/src/api-clients/http-client.interface.js.map +1 -1
  9. package/esm2015/src/authentication/contentAuth.js +4 -7
  10. package/esm2015/src/authentication/contentAuth.js.map +1 -1
  11. package/esm2015/src/authentication/oauth2Auth.js +3 -4
  12. package/esm2015/src/authentication/oauth2Auth.js.map +1 -1
  13. package/esm2015/src/authentication/processAuth.js +3 -5
  14. package/esm2015/src/authentication/processAuth.js.map +1 -1
  15. package/esm2015/src/axiosHttpClient.js +283 -0
  16. package/esm2015/src/axiosHttpClient.js.map +1 -0
  17. package/esm5/package.json +2 -2
  18. package/esm5/src/alfrescoApi.js +14 -14
  19. package/esm5/src/alfrescoApi.js.map +1 -1
  20. package/esm5/src/alfrescoApiClient.js +28 -14
  21. package/esm5/src/alfrescoApiClient.js.map +1 -1
  22. package/esm5/src/api/content-custom-api/api/upload.api.js +52 -1
  23. package/esm5/src/api/content-custom-api/api/upload.api.js.map +1 -1
  24. package/esm5/src/api-clients/http-client.interface.js.map +1 -1
  25. package/esm5/src/authentication/contentAuth.js +4 -7
  26. package/esm5/src/authentication/contentAuth.js.map +1 -1
  27. package/esm5/src/authentication/oauth2Auth.js +3 -4
  28. package/esm5/src/authentication/oauth2Auth.js.map +1 -1
  29. package/esm5/src/authentication/processAuth.js +3 -5
  30. package/esm5/src/authentication/processAuth.js.map +1 -1
  31. package/esm5/src/axiosHttpClient.js +283 -0
  32. package/esm5/src/axiosHttpClient.js.map +1 -0
  33. package/package.json +2 -2
  34. package/src/alfrescoApi.js +14 -15
  35. package/src/alfrescoApi.js.map +1 -1
  36. package/src/alfrescoApiClient.js +28 -15
  37. package/src/alfrescoApiClient.js.map +1 -1
  38. package/src/api/content-custom-api/api/upload.api.js +52 -1
  39. package/src/api/content-custom-api/api/upload.api.js.map +1 -1
  40. package/src/api-clients/http-client.interface.js.map +1 -1
  41. package/src/authentication/contentAuth.js +4 -8
  42. package/src/authentication/contentAuth.js.map +1 -1
  43. package/src/authentication/oauth2Auth.js +3 -4
  44. package/src/authentication/oauth2Auth.js.map +1 -1
  45. package/src/authentication/processAuth.js +3 -6
  46. package/src/authentication/processAuth.js.map +1 -1
  47. package/src/axiosHttpClient.js +287 -0
  48. package/src/axiosHttpClient.js.map +1 -0
  49. package/typings/package.json +2 -2
  50. package/typings/src/alfrescoApi.d.ts +2 -10
  51. package/typings/src/alfrescoApiClient.d.ts +14 -11
  52. package/typings/src/api-clients/http-client.interface.d.ts +10 -3
  53. package/typings/src/authentication/oauth2Auth.d.ts +1 -1
  54. package/typings/src/{superagentHttpClient.d.ts → axiosHttpClient.d.ts} +5 -5
  55. package/esm2015/src/superagentHttpClient.js +0 -264
  56. package/esm2015/src/superagentHttpClient.js.map +0 -1
  57. package/esm5/src/superagentHttpClient.js +0 -264
  58. package/esm5/src/superagentHttpClient.js.map +0 -1
  59. package/src/superagentHttpClient.js +0 -269
  60. package/src/superagentHttpClient.js.map +0 -1
@@ -0,0 +1,283 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { __awaiter } from "tslib";
18
+ import axios from 'axios';
19
+ import { isBrowser, paramToString } from './utils';
20
+ const isProgressEvent = (event) => event === null || event === void 0 ? void 0 : event.lengthComputable;
21
+ export class AxiosHttpClient {
22
+ constructor() {
23
+ this.timeout = undefined;
24
+ }
25
+ post(url, options, securityOptions, emitters) {
26
+ return this.request(url, Object.assign(Object.assign({}, options), { httpMethod: 'POST' }), securityOptions, emitters);
27
+ }
28
+ put(url, options, securityOptions, emitters) {
29
+ return this.request(url, Object.assign(Object.assign({}, options), { httpMethod: 'PUT' }), securityOptions, emitters);
30
+ }
31
+ get(url, options, securityOptions, emitters) {
32
+ return this.request(url, Object.assign(Object.assign({}, options), { httpMethod: 'GET' }), securityOptions, emitters);
33
+ }
34
+ delete(url, options, securityOptions, emitters) {
35
+ return this.request(url, Object.assign(Object.assign({}, options), { httpMethod: 'DELETE' }), securityOptions, emitters);
36
+ }
37
+ request(url, options, securityOptions, emitters) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const { httpMethod, queryParams, headerParams, formParams, bodyParam, contentType, accept, responseType, returnType } = options;
40
+ const { eventEmitter, apiClientEmitter } = emitters;
41
+ const config = this.buildRequest(httpMethod, url, queryParams, headerParams, formParams, bodyParam, contentType, accept, responseType, eventEmitter, returnType, securityOptions);
42
+ const source = axios.CancelToken.source();
43
+ config.cancelToken = source.token;
44
+ if (returnType === 'Binary') {
45
+ config.responseType = 'arraybuffer';
46
+ }
47
+ const promise = axios(config)
48
+ .then((response) => {
49
+ var _a;
50
+ if (securityOptions.isBpmRequest) {
51
+ const hasSetCookie = response.headers['set-cookie'];
52
+ if (response.headers && hasSetCookie) {
53
+ securityOptions.authentications.cookie = hasSetCookie[0];
54
+ }
55
+ }
56
+ let data = {};
57
+ if ((_a = response.headers['content-type']) === null || _a === void 0 ? void 0 : _a.includes('text/html')) {
58
+ data = AxiosHttpClient.deserialize(response);
59
+ }
60
+ else {
61
+ data = AxiosHttpClient.deserialize(response, returnType);
62
+ }
63
+ eventEmitter.emit('success', data);
64
+ return data;
65
+ })
66
+ .catch((error) => {
67
+ var _a, _b;
68
+ apiClientEmitter.emit('error', error);
69
+ eventEmitter.emit('error', error);
70
+ if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
71
+ apiClientEmitter.emit('unauthorized');
72
+ eventEmitter.emit('unauthorized');
73
+ }
74
+ if ((_b = error.response) === null || _b === void 0 ? void 0 : _b.data) {
75
+ const responseError = error.response.data;
76
+ const enrichedError = Object.assign(error, {
77
+ message: typeof responseError === 'string' ? responseError : JSON.stringify(responseError)
78
+ });
79
+ throw enrichedError;
80
+ }
81
+ else {
82
+ throw { error };
83
+ }
84
+ });
85
+ promise.abort = function () {
86
+ eventEmitter.emit('abort');
87
+ source.cancel('Request aborted');
88
+ return this;
89
+ };
90
+ return promise;
91
+ });
92
+ }
93
+ buildRequest(httpMethod, url, queryParams, headerParams, formParams, bodyParam, contentType, accept, responseType, eventEmitter, returnType, securityOptions) {
94
+ var _a, _b;
95
+ const { isBpmRequest, authentications, defaultHeaders = {}, enableCsrf, withCredentials = false } = securityOptions;
96
+ const config = {
97
+ method: httpMethod,
98
+ url,
99
+ params: AxiosHttpClient.normalizeParams(queryParams),
100
+ headers: Object.assign(Object.assign({}, defaultHeaders), AxiosHttpClient.normalizeParams(headerParams)),
101
+ timeout: typeof this.timeout === 'number' ? this.timeout : (_a = this.timeout) === null || _a === void 0 ? void 0 : _a.response,
102
+ withCredentials
103
+ };
104
+ this.applyAuthToRequest(config, authentications);
105
+ if (isBpmRequest && enableCsrf) {
106
+ this.setCsrfToken(config);
107
+ }
108
+ if (isBpmRequest) {
109
+ config.withCredentials = true;
110
+ if (securityOptions.authentications.cookie) {
111
+ if (!isBrowser()) {
112
+ config.headers = Object.assign(Object.assign({}, config.headers), { Cookie: securityOptions.authentications.cookie });
113
+ }
114
+ }
115
+ }
116
+ if (contentType && contentType !== 'multipart/form-data') {
117
+ config.headers = Object.assign(Object.assign({}, config.headers), { 'Content-Type': contentType });
118
+ }
119
+ else if (!((_b = config.headers) === null || _b === void 0 ? void 0 : _b['Content-Type']) && contentType !== 'multipart/form-data') {
120
+ config.headers = Object.assign(Object.assign({}, config.headers), { 'Content-Type': 'application/json' });
121
+ }
122
+ if (contentType === 'application/x-www-form-urlencoded') {
123
+ const params = new URLSearchParams();
124
+ const normalizedParams = AxiosHttpClient.normalizeParams(formParams);
125
+ Object.keys(normalizedParams).forEach((key) => {
126
+ params.append(key, normalizedParams[key]);
127
+ });
128
+ config.data = params;
129
+ config.onUploadProgress = (progressEvent) => {
130
+ this.progress(progressEvent, eventEmitter);
131
+ };
132
+ }
133
+ else if (contentType === 'multipart/form-data') {
134
+ const formData = new FormData();
135
+ const _formParams = AxiosHttpClient.normalizeParams(formParams);
136
+ for (const key in _formParams) {
137
+ if (Object.prototype.hasOwnProperty.call(_formParams, key)) {
138
+ if (AxiosHttpClient.isFileParam(_formParams[key])) {
139
+ formData.append(key, _formParams[key]);
140
+ }
141
+ else {
142
+ formData.append(key, _formParams[key]);
143
+ }
144
+ }
145
+ }
146
+ config.data = formData;
147
+ delete config.headers['Content-Type'];
148
+ config.onUploadProgress = (progressEvent) => {
149
+ this.progress(progressEvent, eventEmitter);
150
+ };
151
+ }
152
+ else if (bodyParam) {
153
+ config.data = bodyParam;
154
+ config.onUploadProgress = (progressEvent) => {
155
+ this.progress(progressEvent, eventEmitter);
156
+ };
157
+ }
158
+ if (accept) {
159
+ config.headers = Object.assign(Object.assign({}, config.headers), { Accept: accept });
160
+ }
161
+ if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob') {
162
+ config.responseType = 'blob';
163
+ }
164
+ else if (returnType === 'String') {
165
+ config.responseType = 'text';
166
+ }
167
+ return config;
168
+ }
169
+ setCsrfToken(config) {
170
+ const token = AxiosHttpClient.createCSRFToken();
171
+ config.headers = Object.assign(Object.assign({}, config.headers), { 'X-CSRF-TOKEN': token });
172
+ if (!isBrowser()) {
173
+ config.headers = Object.assign(Object.assign({}, config.headers), { Cookie: `CSRF-TOKEN=${token};path=/` });
174
+ }
175
+ try {
176
+ document.cookie = `CSRF-TOKEN=${token};path=/`;
177
+ }
178
+ catch (_a) {
179
+ }
180
+ }
181
+ applyAuthToRequest(config, authentications) {
182
+ if (authentications) {
183
+ switch (authentications.type) {
184
+ case 'basic': {
185
+ const basicAuth = authentications.basicAuth;
186
+ if (basicAuth.username || basicAuth.password) {
187
+ config.auth = {
188
+ username: basicAuth.username || '',
189
+ password: basicAuth.password || ''
190
+ };
191
+ }
192
+ break;
193
+ }
194
+ case 'activiti': {
195
+ if (authentications.basicAuth.ticket) {
196
+ config.headers = Object.assign(Object.assign({}, config.headers), { Authorization: authentications.basicAuth.ticket });
197
+ }
198
+ break;
199
+ }
200
+ case 'oauth2': {
201
+ const oauth2 = authentications.oauth2;
202
+ if (oauth2.accessToken) {
203
+ config.headers = Object.assign(Object.assign({}, config.headers), { Authorization: `Bearer ${oauth2.accessToken}` });
204
+ }
205
+ break;
206
+ }
207
+ default:
208
+ throw new Error('Unknown authentication type: ' + authentications.type);
209
+ }
210
+ }
211
+ }
212
+ progress(event, eventEmitter) {
213
+ if (isProgressEvent(event)) {
214
+ const percent = Math.round((event.loaded / event.total) * 100);
215
+ const progress = {
216
+ total: event.total,
217
+ loaded: event.loaded,
218
+ percent
219
+ };
220
+ eventEmitter.emit('progress', progress);
221
+ }
222
+ }
223
+ static createCSRFToken(a) {
224
+ return a
225
+ ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)
226
+ : ([1e16] + (1e16).toString()).replace(/[01]/g, AxiosHttpClient.createCSRFToken);
227
+ }
228
+ static deserialize(response, returnType) {
229
+ if (response === null) {
230
+ return null;
231
+ }
232
+ let data = response.data;
233
+ if (data === null) {
234
+ data = response.statusText;
235
+ }
236
+ if (returnType) {
237
+ if (returnType === 'blob' && isBrowser()) {
238
+ data = new Blob([data], { type: response.headers['content-type'] });
239
+ }
240
+ else if (returnType === 'blob' && !isBrowser()) {
241
+ data = Buffer.from(data, 'binary');
242
+ }
243
+ else if (Array.isArray(data)) {
244
+ data = data.map((element) => new returnType(element));
245
+ }
246
+ else {
247
+ data = new returnType(data);
248
+ }
249
+ }
250
+ return data;
251
+ }
252
+ static normalizeParams(params) {
253
+ const newParams = {};
254
+ for (const key in params) {
255
+ if (Object.prototype.hasOwnProperty.call(params, key) && params[key] !== undefined && params[key] !== null) {
256
+ const value = params[key];
257
+ if (AxiosHttpClient.isFileParam(value) || Array.isArray(value)) {
258
+ newParams[key] = value;
259
+ }
260
+ else {
261
+ newParams[key] = paramToString(value);
262
+ }
263
+ }
264
+ }
265
+ return newParams;
266
+ }
267
+ static isFileParam(param) {
268
+ if (typeof Buffer === 'function' && (param instanceof Buffer || param.path)) {
269
+ return true;
270
+ }
271
+ if (typeof Blob === 'function' && param instanceof Blob) {
272
+ return true;
273
+ }
274
+ if (typeof File === 'function' && param instanceof File) {
275
+ return true;
276
+ }
277
+ if (typeof File === 'object' && param instanceof File) {
278
+ return true;
279
+ }
280
+ return false;
281
+ }
282
+ }
283
+ //# sourceMappingURL=../../../../../lib/js-api/src/axiosHttpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axiosHttpClient.js","sourceRoot":"","sources":["axiosHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 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 axios, { AxiosResponse, AxiosRequestConfig, AxiosError } from 'axios';\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;\n\ntype EventEmitterInstance = InstanceType<typeof EventEmitter>;\n\nconst isProgressEvent = (event: ProgressEvent | unknown): event is ProgressEvent => (event as ProgressEvent)?.lengthComputable;\n\nexport class AxiosHttpClient implements HttpClient {\n /**\n * The default HTTP timeout for all API calls.\n */\n timeout: number | { deadline?: number; response?: number } = undefined;\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 async 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 const { eventEmitter, apiClientEmitter } = emitters;\n\n const config = this.buildRequest(\n httpMethod,\n url,\n queryParams,\n headerParams,\n formParams,\n bodyParam,\n contentType,\n accept,\n responseType,\n eventEmitter,\n returnType,\n securityOptions\n );\n\n const source = axios.CancelToken.source();\n config.cancelToken = source.token;\n\n if (returnType === 'Binary') {\n config.responseType = 'arraybuffer';\n }\n\n const promise: any = axios(config)\n .then((response: AxiosResponse<T>) => {\n if (securityOptions.isBpmRequest) {\n const hasSetCookie = response.headers['set-cookie'];\n if (response.headers && hasSetCookie) {\n // mutate the passed value from AlfrescoApiClient class for backward compatibility\n securityOptions.authentications.cookie = hasSetCookie[0];\n }\n }\n let data = {};\n if (response.headers['content-type']?.includes('text/html')) {\n data = AxiosHttpClient.deserialize(response);\n } else {\n data = AxiosHttpClient.deserialize(response, returnType);\n }\n\n eventEmitter.emit('success', data);\n return data;\n })\n .catch((error: AxiosError) => {\n apiClientEmitter.emit('error', error);\n eventEmitter.emit('error', error);\n\n if (error.response?.status === 401) {\n apiClientEmitter.emit('unauthorized');\n eventEmitter.emit('unauthorized');\n }\n\n if (error.response?.data) {\n const responseError = error.response.data;\n const enrichedError = Object.assign(error, {\n message: typeof responseError === 'string' ? responseError : JSON.stringify(responseError)\n });\n throw enrichedError;\n } else {\n throw { error };\n }\n });\n\n promise.abort = function () {\n eventEmitter.emit('abort');\n source.cancel('Request aborted');\n return this;\n };\n\n return promise;\n }\n\n private buildRequest(\n httpMethod: string,\n url: string,\n queryParams: { [key: string]: any },\n headerParams: { [key: string]: any },\n formParams: { [key: string]: any },\n // eslint-disable-next-line @typescript-eslint/ban-types\n bodyParam: string | Object,\n contentType: string,\n accept: string,\n responseType: string,\n eventEmitter: EventEmitterInstance,\n returnType: string,\n securityOptions: SecurityOptions\n ): AxiosRequestConfig {\n const { isBpmRequest, authentications, defaultHeaders = {}, enableCsrf, withCredentials = false } = securityOptions;\n\n const config: AxiosRequestConfig = {\n method: httpMethod as any,\n url,\n params: AxiosHttpClient.normalizeParams(queryParams),\n headers: {\n ...defaultHeaders,\n ...AxiosHttpClient.normalizeParams(headerParams)\n },\n timeout: typeof this.timeout === 'number' ? this.timeout : this.timeout?.response,\n withCredentials\n };\n\n // apply authentications\n this.applyAuthToRequest(config, authentications);\n\n if (isBpmRequest && enableCsrf) {\n this.setCsrfToken(config);\n }\n\n // add cookie for activiti\n if (isBpmRequest) {\n config.withCredentials = true;\n if (securityOptions.authentications.cookie) {\n if (!isBrowser()) {\n config.headers = {\n ...config.headers,\n Cookie: securityOptions.authentications.cookie\n };\n }\n }\n }\n\n if (contentType && contentType !== 'multipart/form-data') {\n config.headers = {\n ...config.headers,\n 'Content-Type': contentType\n };\n } else if (!config.headers?.['Content-Type'] && contentType !== 'multipart/form-data') {\n config.headers = {\n ...config.headers,\n 'Content-Type': 'application/json'\n };\n }\n\n if (contentType === 'application/x-www-form-urlencoded') {\n const params = new URLSearchParams();\n const normalizedParams = AxiosHttpClient.normalizeParams(formParams);\n Object.keys(normalizedParams).forEach((key) => {\n params.append(key, normalizedParams[key]);\n });\n config.data = params;\n\n config.onUploadProgress = (progressEvent) => {\n this.progress(progressEvent, eventEmitter);\n };\n } else if (contentType === 'multipart/form-data') {\n const formData = new FormData();\n const _formParams = AxiosHttpClient.normalizeParams(formParams);\n for (const key in _formParams) {\n if (Object.prototype.hasOwnProperty.call(_formParams, key)) {\n if (AxiosHttpClient.isFileParam(_formParams[key])) {\n // file field\n formData.append(key, _formParams[key]);\n } else {\n formData.append(key, _formParams[key]);\n }\n }\n }\n config.data = formData;\n // Remove Content-Type header for multipart/form-data to let axios set the boundary\n delete config.headers['Content-Type'];\n\n config.onUploadProgress = (progressEvent) => {\n this.progress(progressEvent, eventEmitter);\n };\n } else if (bodyParam) {\n config.data = bodyParam;\n\n config.onUploadProgress = (progressEvent) => {\n this.progress(progressEvent, eventEmitter);\n };\n }\n\n if (accept) {\n config.headers = {\n ...config.headers,\n Accept: accept\n };\n }\n\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob') {\n config.responseType = 'blob';\n } else if (returnType === 'String') {\n config.responseType = 'text';\n }\n\n return config;\n }\n\n setCsrfToken(config: AxiosRequestConfig): void {\n const token = AxiosHttpClient.createCSRFToken();\n config.headers = {\n ...config.headers,\n 'X-CSRF-TOKEN': token\n };\n\n if (!isBrowser()) {\n config.headers = {\n ...config.headers,\n Cookie: `CSRF-TOKEN=${token};path=/`\n };\n }\n\n try {\n document.cookie = `CSRF-TOKEN=${token};path=/`;\n } catch {\n /* continue regardless of error */\n }\n }\n\n /**\n * Applies authentication headers to the request.\n * @param config The axios request config object.\n * @param authentications authentications\n */\n private applyAuthToRequest(config: AxiosRequestConfig, authentications: Authentication) {\n if (authentications) {\n switch (authentications.type) {\n case 'basic': {\n const basicAuth: BasicAuth = authentications.basicAuth;\n if (basicAuth.username || basicAuth.password) {\n config.auth = {\n username: basicAuth.username || '',\n password: basicAuth.password || ''\n };\n }\n break;\n }\n case 'activiti': {\n if (authentications.basicAuth.ticket) {\n config.headers = {\n ...config.headers,\n Authorization: authentications.basicAuth.ticket\n };\n }\n break;\n }\n case 'oauth2': {\n const oauth2: Oauth2 = authentications.oauth2;\n if (oauth2.accessToken) {\n config.headers = {\n ...config.headers,\n Authorization: `Bearer ${oauth2.accessToken}`\n };\n }\n break;\n }\n default:\n throw new Error('Unknown authentication type: ' + authentications.type);\n }\n }\n }\n\n private progress(event: ProgressEvent | unknown, eventEmitter: EventEmitterInstance): void {\n if (isProgressEvent(event)) {\n const percent = Math.round((event.loaded / event.total) * 100);\n\n const progress = {\n total: event.total,\n loaded: event.loaded,\n percent\n };\n\n eventEmitter.emit('progress', progress);\n }\n }\n\n private static createCSRFToken(a?: any): string {\n return a\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n : ([1e16] + (1e16).toString()).replace(/[01]/g, AxiosHttpClient.createCSRFToken);\n }\n\n /**\n * Deserializes an HTTP response body into a value of the specified type.\n * @param response An Axios response object.\n * @param returnType The type to return. Pass a string for simple types\n * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To\n * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:\n * all properties on <code>data<code> will be converted to this type.\n * @returns A value of the specified type.\n */\n private static deserialize(response: AxiosResponse, returnType?: any): any {\n if (response === null) {\n return null;\n }\n\n let data = response.data;\n\n if (data === null) {\n data = response.statusText;\n }\n\n if (returnType) {\n if (returnType === 'blob' && isBrowser()) {\n data = new Blob([data], { type: response.headers['content-type'] });\n } else if (returnType === 'blob' && !isBrowser()) {\n data = Buffer.from(data, 'binary');\n } else if (Array.isArray(data)) {\n data = data.map((element) => new returnType(element));\n } else {\n data = new returnType(data);\n }\n }\n\n return data;\n }\n\n /**\n * Normalizes parameter values:\n * <ul>\n * <li>remove nils</li>\n * <li>keep files and arrays</li>\n * <li>format to string with `paramToString` for other cases</li>\n * </ul>\n * @param params The parameters as object properties.\n * @returns normalized parameters.\n */\n private static normalizeParams(params: { [key: string]: any }): { [key: string]: any } {\n const newParams: { [key: string]: any } = {};\n\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key) && params[key] !== undefined && params[key] !== null) {\n const value = params[key];\n if (AxiosHttpClient.isFileParam(value) || Array.isArray(value)) {\n newParams[key] = value;\n } else {\n newParams[key] = paramToString(value);\n }\n }\n }\n return newParams;\n }\n\n /**\n * Checks whether the given parameter value represents file-like content.\n * @param param The parameter to check.\n * @returns <code>true</code> if <code>param</code> represents a file.\n */\n private static isFileParam(param: any): boolean {\n // Buffer in Node.js\n if (typeof Buffer === 'function' && (param instanceof Buffer || param.path)) {\n return true;\n }\n // Blob in browser\n if (typeof Blob === 'function' && param instanceof Blob) {\n return true;\n }\n // File in browser (it seems File object is also instance of Blob, but keep this for safe)\n if (typeof File === 'function' && param instanceof File) {\n return true;\n }\n // Safari fix\n if (typeof File === 'object' && param instanceof File) {\n return true;\n }\n\n return false;\n }\n}\n"]}
package/esm5/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfresco/js-api",
3
- "version": "9.4.0-17617861152",
3
+ "version": "9.4.0-17644123790",
4
4
  "license": "Apache-2.0",
5
5
  "description": "JavaScript client library for the Alfresco REST API",
6
6
  "author": "Hyland Software, Inc. and its affiliates",
@@ -15,7 +15,7 @@
15
15
  "url": "https://github.com/Alfresco/alfresco-ng2-components/issues"
16
16
  },
17
17
  "dependencies": {
18
- "event-emitter": "^0.3.5",
18
+ "eventemitter3": "^5.0.1",
19
19
  "superagent": "^9.0.1",
20
20
  "tslib": "^2.6.1"
21
21
  },
@@ -14,7 +14,7 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import ee from 'event-emitter';
17
+ import { EventEmitter } from 'eventemitter3';
18
18
  import { ContentAuth } from './authentication/contentAuth';
19
19
  import { ProcessAuth } from './authentication/processAuth';
20
20
  import { Oauth2Auth } from './authentication/oauth2Auth';
@@ -22,12 +22,12 @@ import { ContentClient } from './contentClient';
22
22
  import { ProcessClient } from './processClient';
23
23
  import { Storage } from './storage';
24
24
  import { AlfrescoApiConfig } from './alfrescoApiConfig';
25
- export class AlfrescoApi {
25
+ import { AlfrescoApiClient } from './alfrescoApiClient';
26
+ export class AlfrescoApi extends AlfrescoApiClient {
26
27
  constructor(config, httpClient) {
27
- this.httpClient = httpClient;
28
+ super(undefined, httpClient);
28
29
  this.__type = 'legacy-client';
29
30
  this.bufferEvents = [];
30
- ee(this);
31
31
  if (config) {
32
32
  this.setConfig(config);
33
33
  }
@@ -314,22 +314,22 @@ export class AlfrescoApi {
314
314
  loginBPMECM(username, password) {
315
315
  const contentPromise = this.contentAuth.login(username, password);
316
316
  const processPromise = this.processAuth.login(username, password);
317
+ const eventEmitter = new EventEmitter();
317
318
  const promise = new Promise((resolve, reject) => {
318
319
  Promise.all([contentPromise, processPromise]).then((data) => {
319
- promise.emit('success');
320
+ eventEmitter.emit('success');
320
321
  resolve(data);
321
322
  }, (error) => {
322
323
  this.contentAuth.invalidateSession();
323
324
  this.processAuth.invalidateSession();
324
325
  if (error.status === 401) {
325
- promise.emit('unauthorized');
326
+ eventEmitter.emit('unauthorized');
326
327
  }
327
- promise.emit('error');
328
+ eventEmitter.emit('error');
328
329
  reject(error);
329
330
  });
330
331
  });
331
- ee(promise);
332
- return promise;
332
+ return this.addPromiseListeners(promise, eventEmitter);
333
333
  }
334
334
  logout() {
335
335
  this.username = null;
@@ -352,21 +352,21 @@ export class AlfrescoApi {
352
352
  _logoutBPMECM() {
353
353
  const contentPromise = this.contentAuth.logout();
354
354
  const processPromise = this.processAuth.logout();
355
+ const eventEmitter = new EventEmitter();
355
356
  const promise = new Promise((resolve, reject) => {
356
357
  Promise.all([contentPromise, processPromise]).then(() => {
357
358
  this.config.ticket = undefined;
358
- promise.emit('logout');
359
+ eventEmitter.emit('logout');
359
360
  resolve();
360
361
  }, (error) => {
361
362
  if (error.status === 401) {
362
- promise.emit('unauthorized');
363
+ eventEmitter.emit('unauthorized');
363
364
  }
364
- promise.emit('error');
365
+ eventEmitter.emit('error');
365
366
  reject(error);
366
367
  });
367
368
  });
368
- ee(promise);
369
- return promise;
369
+ return this.addPromiseListeners(promise, eventEmitter);
370
370
  }
371
371
  isLoggedIn() {
372
372
  if (this.isOauthConfiguration()) {
@@ -1 +1 @@
1
- {"version":3,"file":"alfrescoApi.js","sourceRoot":"","sources":["alfrescoApi.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 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 ee, { EmitterMethod, Emitter } from 'event-emitter';\nimport { ContentAuth } from './authentication/contentAuth';\nimport { ProcessAuth } from './authentication/processAuth';\nimport { Oauth2Auth } from './authentication/oauth2Auth';\nimport { ContentClient } from './contentClient';\nimport { ProcessClient } from './processClient';\nimport { Storage } from './storage';\nimport { AlfrescoApiConfig } from './alfrescoApiConfig';\nimport { Authentication } from './authentication/authentication';\nimport { AlfrescoApiType } from './to-deprecate/alfresco-api-type';\nimport { HttpClient } from './api-clients/http-client.interface';\n\nexport class AlfrescoApi implements Emitter, AlfrescoApiType {\n __type = 'legacy-client';\n storage: Storage;\n config: AlfrescoApiConfig;\n contentClient: ContentClient;\n contentPrivateClient: ContentClient;\n processClient: ProcessClient;\n searchClient: ContentClient;\n discoveryClient: ContentClient;\n gsClient: ContentClient;\n authClient: ContentClient;\n hxiConnectorClient: ContentClient;\n oauth2Auth: Oauth2Auth;\n processAuth: ProcessAuth;\n contentAuth: ContentAuth;\n\n on: EmitterMethod;\n off: EmitterMethod;\n once: EmitterMethod;\n\n bufferEvents: string[] = [];\n\n emit: (type: string, ...args: any[]) => void;\n\n username: string;\n\n constructor(\n config?: AlfrescoApiConfig,\n public httpClient?: HttpClient\n ) {\n ee(this);\n\n if (config) {\n this.setConfig(config);\n }\n }\n\n setConfig(config: AlfrescoApiConfig) {\n if (!config) {\n config = {};\n }\n\n this.storage = Storage.getInstance();\n this.storage.setDomainPrefix(config.domainPrefix);\n\n this.initConfig(config);\n this.validateTicket(config);\n }\n\n private initConfig(config: AlfrescoApiConfig) {\n this.config = new AlfrescoApiConfig(config);\n\n this.clientsFactory();\n\n this.errorListeners();\n this.ticketMismatchListeners();\n if (this.config.oauthInit) {\n this.initAuth(config);\n\n if (this.isLoggedIn()) {\n this.emitBuffer('logged-in');\n }\n }\n }\n\n private validateTicket(config: AlfrescoApiConfig) {\n if (config.ticketEcm && !this.isOauthConfiguration()) {\n if (!this.contentAuth) {\n this.contentAuth = new ContentAuth(this.config, this, this.httpClient);\n }\n this.contentAuth\n .validateTicket()\n .then((ticket) => {\n config.ticketEcm = ticket;\n })\n .catch((error) => {\n if (error.status === 401) {\n config.ticketEcm = null;\n this.initConfig(config);\n this.emitBuffer('ticket_invalidated');\n }\n });\n }\n }\n\n private initAuth(config: AlfrescoApiConfig): void {\n if (this.isOauthConfiguration()) {\n if (!this.oauth2Auth) {\n this.oauth2Auth = new Oauth2Auth(this.config, this, this.httpClient);\n } else {\n this.oauth2Auth.setConfig(this.config, this);\n }\n\n this.oauth2Auth?.on('logged-in', () => {\n this.emitBuffer('logged-in');\n });\n\n this.setAuthenticationClientECMBPM(this.oauth2Auth.getAuthentication(), this.oauth2Auth.getAuthentication());\n } else {\n if (!this.processAuth) {\n this.processAuth = new ProcessAuth(this.config, this.httpClient);\n } else {\n this.processAuth.setConfig(this.config);\n }\n\n this.processAuth?.on('logged-in', () => {\n this.emitBuffer('logged-in');\n });\n\n this.processAuth?.on('ticket_mismatch', (error: any) => {\n this.ticketMismatchHandler(error);\n });\n\n if (!this.contentAuth) {\n this.contentAuth = new ContentAuth(this.config, this, this.httpClient);\n } else {\n this.contentAuth.setConfig(config);\n }\n\n this.contentAuth?.on('logged-in', () => {\n this.emitBuffer('logged-in');\n });\n\n this.contentAuth?.on('ticket_mismatch', (error: any) => {\n this.ticketMismatchHandler(error);\n });\n\n this.setAuthenticationClientECMBPM(this.contentAuth.getAuthentication(), this.processAuth.getAuthentication());\n }\n }\n\n private clientsFactory() {\n if (!this.contentPrivateClient) {\n this.contentPrivateClient = new ContentClient(this.config, `/api/${this.config.tenant}/private/alfresco/versions/1`, this.httpClient);\n } else {\n this.contentPrivateClient.setConfig(this.config, `/api/${this.config.tenant}/private/alfresco/versions/1`);\n }\n\n if (!this.contentClient) {\n this.contentClient = new ContentClient(this.config, `/api/${this.config.tenant}/public/alfresco/versions/1`, this.httpClient);\n } else {\n this.contentClient.setConfig(this.config, `/api/${this.config.tenant}/public/alfresco/versions/1`);\n }\n\n if (!this.authClient) {\n this.authClient = new ContentClient(this.config, `/api/${this.config.tenant}/public/authentication/versions/1`, this.httpClient);\n } else {\n this.authClient.setConfig(this.config, `/api/${this.config.tenant}/public/authentication/versions/1`);\n }\n\n if (!this.searchClient) {\n this.searchClient = new ContentClient(this.config, `/api/${this.config.tenant}/public/search/versions/1`, this.httpClient);\n } else {\n this.searchClient.setConfig(this.config, `/api/${this.config.tenant}/public/search/versions/1`);\n }\n\n if (!this.discoveryClient) {\n this.discoveryClient = new ContentClient(this.config, `/api`, this.httpClient);\n } else {\n this.discoveryClient.setConfig(this.config, `/api`);\n }\n\n if (!this.gsClient) {\n this.gsClient = new ContentClient(this.config, `/api/${this.config.tenant}/public/gs/versions/1`, this.httpClient);\n } else {\n this.gsClient.setConfig(this.config, `/api/${this.config.tenant}/public/gs/versions/1`);\n }\n\n if (!this.processClient) {\n this.processClient = new ProcessClient(this.config, this.httpClient);\n } else {\n this.processClient.setConfig(this.config);\n }\n\n if (!this.hxiConnectorClient) {\n this.hxiConnectorClient = new ContentClient(this.config, `/api/${this.config.tenant}/private/hxi/versions/1`, this.httpClient);\n } else {\n this.hxiConnectorClient.setConfig(this.config, `/api/${this.config.tenant}/private/hxi/versions/1`);\n }\n }\n\n /**@private? */\n errorListeners() {\n this.contentClient.off('error', () => {});\n this.authClient.off('error', () => {});\n this.contentPrivateClient.off('error', () => {});\n this.processClient.off('error', () => {});\n this.searchClient.off('error', () => {});\n this.discoveryClient.off('error', () => {});\n this.gsClient.off('error', () => {});\n this.hxiConnectorClient.off('error', () => {});\n\n this.contentClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.authClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.contentPrivateClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.processClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.searchClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.discoveryClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.gsClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.hxiConnectorClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n }\n\n ticketMismatchListeners() {\n this.contentClient?.off('ticket_mismatch', () => {});\n this.processClient?.off('ticket_mismatch', () => {});\n\n this.contentClient?.on('ticket_mismatch', (error: any) => {\n this.ticketMismatchHandler(error);\n });\n\n this.processClient?.on('ticket_mismatch', (error: any) => {\n this.ticketMismatchHandler(error);\n });\n }\n\n /**@private? */\n errorHandler(error: { status?: number }) {\n if (this.config.oauthInit && error.status === 401) {\n this.invalidateSession();\n }\n\n this.emitBuffer('error', error);\n }\n\n ticketMismatchHandler(error: { newTicket?: string }) {\n if (error.newTicket) {\n this.config.ticketEcm = error.newTicket;\n this.initConfig(this.config);\n }\n\n this.emitBuffer('ticket_mismatch', error);\n }\n\n changeWithCredentialsConfig(withCredentials: boolean) {\n this.config.withCredentials = withCredentials;\n }\n\n changeCsrfConfig(disableCsrf: boolean) {\n this.config.disableCsrf = disableCsrf;\n this.processAuth.changeCsrfConfig(disableCsrf);\n }\n\n changeEcmHost(hostEcm: string) {\n this.config.hostEcm = hostEcm;\n this.contentAuth.changeHost();\n this.contentClient.changeHost();\n this.authClient.changeHost();\n }\n\n changeBpmHost(hostBpm: string) {\n this.config.hostBpm = hostBpm;\n this.processAuth.changeHost();\n this.processClient.changeHost();\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<any> {\n if (!this.isCredentialValid(username) || !this.isCredentialValid(password)) {\n return Promise.reject(new Error('missing username or password'));\n }\n\n if (username) {\n username = username.trim();\n }\n\n this.username = username;\n\n if (this.isOauthConfiguration()) {\n const promise = this.oauth2Auth.login(username, password);\n promise.then((accessToken) => {\n this.config.accessToken = accessToken;\n });\n return promise;\n } else {\n if (this.isBpmConfiguration()) {\n const promise = this.processAuth.login(username, password);\n promise.then((ticketBpm) => {\n this.config.ticketBpm = ticketBpm;\n });\n return promise;\n } else if (this.isEcmConfiguration()) {\n const promise = this.contentAuth.login(username, password);\n promise.then((ticketEcm) => {\n this.setAuthenticationClientECMBPM(this.contentAuth.getAuthentication(), null);\n this.config.ticketEcm = ticketEcm;\n });\n return promise;\n } else if (this.isEcmBpmConfiguration()) {\n const contentProcessPromise = this.loginBPMECM(username, password);\n\n contentProcessPromise.then((data) => {\n this.config.ticketEcm = data[0];\n this.config.ticketBpm = data[1];\n });\n\n return contentProcessPromise;\n } else {\n return Promise.reject(new Error('Unknown configuration'));\n }\n }\n }\n\n isCredentialValid(credential: string): boolean {\n return credential !== undefined && credential !== null && credential !== '';\n }\n\n implicitLogin(): Promise<any> {\n if (!this.isOauthConfiguration()) {\n return Promise.reject(new Error('Missing the required oauth2 configuration'));\n }\n\n return new Promise(() => {\n this.oauth2Auth.implicitLogin();\n });\n }\n\n setAuthenticationClientECMBPM(authECM: Authentication, authBPM: Authentication) {\n this.contentClient.setAuthentications(authECM);\n this.authClient.setAuthentications(authECM);\n this.searchClient.setAuthentications(authECM);\n this.contentPrivateClient.setAuthentications(authECM);\n this.processClient.setAuthentications(authBPM);\n this.searchClient.setAuthentications(authECM);\n this.discoveryClient.setAuthentications(authECM);\n this.gsClient.setAuthentications(authECM);\n this.hxiConnectorClient.setAuthentications(authECM);\n }\n\n /**\n * login Tickets\n * @param ticketEcm alfresco ticket\n * @param ticketBpm alfresco ticket\n */\n loginTicket(ticketEcm: string, ticketBpm: string): Promise<string> {\n this.config.ticketEcm = ticketEcm;\n this.config.ticketBpm = ticketBpm;\n\n return this.contentAuth.validateTicket();\n }\n\n private loginBPMECM(username: string, password: string): Promise<[string, string]> {\n const contentPromise = this.contentAuth.login(username, password);\n const processPromise = this.processAuth.login(username, password);\n\n const promise: any = new Promise<[string, string]>((resolve, reject) => {\n Promise.all([contentPromise, processPromise]).then(\n (data) => {\n promise.emit('success');\n resolve(data);\n },\n (error) => {\n this.contentAuth.invalidateSession();\n this.processAuth.invalidateSession();\n\n if (error.status === 401) {\n promise.emit('unauthorized');\n }\n promise.emit('error');\n reject(error);\n }\n );\n });\n\n ee(promise); // jshint ignore:line\n return promise;\n }\n\n /**\n * logout Alfresco API\n */\n logout(): Promise<void> {\n this.username = null;\n\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.logOut();\n }\n\n if (this.isBpmConfiguration()) {\n return this.processAuth.logout();\n }\n\n if (this.isEcmConfiguration()) {\n const contentPromise = this.contentAuth.logout();\n contentPromise.then(\n (): void => (this.config.ticket = undefined),\n (): void => {}\n );\n return contentPromise;\n }\n\n if (this.isEcmBpmConfiguration()) {\n return this._logoutBPMECM();\n }\n\n return Promise.resolve();\n }\n\n private _logoutBPMECM(): Promise<void> {\n const contentPromise = this.contentAuth.logout();\n const processPromise = this.processAuth.logout();\n\n const promise: any = new Promise<void>((resolve, reject) => {\n Promise.all([contentPromise, processPromise]).then(\n () => {\n this.config.ticket = undefined;\n promise.emit('logout');\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 ee(promise); // jshint ignore:line\n return promise;\n }\n\n /**\n * If the client is logged in return true\n */\n isLoggedIn(): boolean {\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.isLoggedIn();\n }\n\n if (this.isBpmConfiguration()) {\n return this.processAuth.isLoggedIn();\n }\n\n if (this.isEcmConfiguration()) {\n return this.config.withCredentials ? true : this.contentAuth.isLoggedIn();\n }\n\n if (this.isEcmBpmConfiguration()) {\n return this.config.withCredentials ? true : this.contentAuth.isLoggedIn() && this.processAuth.isLoggedIn();\n }\n\n return false;\n }\n\n isBpmLoggedIn(): boolean {\n if (this.isBpmConfiguration() || this.isEcmBpmConfiguration()) {\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.isLoggedIn();\n } else {\n return this.processAuth.isLoggedIn();\n }\n }\n return false;\n }\n\n isEcmLoggedIn(): boolean {\n if (this.isEcmConfiguration() || this.isEcmBpmConfiguration()) {\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.isLoggedIn();\n } else {\n return this.config.withCredentials ? true : this.contentAuth.isLoggedIn();\n }\n }\n return false;\n }\n\n getBpmUsername(): string {\n if (this.isOauthConfiguration()) {\n return this.username || this.oauth2Auth.storage.getItem('USERNAME');\n } else {\n return this.username || this.processAuth.storage.getItem('APS_USERNAME');\n }\n }\n\n getEcmUsername(): string {\n if (this.isOauthConfiguration()) {\n return this.username || this.oauth2Auth.storage.getItem('USERNAME');\n } else {\n return this.username || this.contentAuth.storage.getItem('ACS_USERNAME');\n }\n }\n\n /**\n * refresh token\n */\n refreshToken(): Promise<any> {\n if (!this.isOauthConfiguration()) {\n return Promise.reject(new Error('Missing the required oauth2 configuration'));\n }\n\n if (this.config.oauth2.implicitFlow) {\n return Promise.reject(new Error('Manual refresh token not possible in implicit flow'));\n }\n\n return this.oauth2Auth.refreshToken();\n }\n\n getTicketAuth(): string {\n return this.oauth2Auth?.getToken();\n }\n\n /**\n * Set the current Ticket\n * @param ticketEcm ecm ticket\n * @param ticketBpm bpm ticket\n */\n setTicket(ticketEcm: string, ticketBpm: string) {\n if (this.contentAuth) {\n this.contentAuth.setTicket(ticketEcm);\n }\n if (this.processAuth) {\n this.processAuth.setTicket(ticketBpm);\n }\n }\n\n /**\n * invalidate the current session\n */\n invalidateSession() {\n if (this.oauth2Auth) {\n this.oauth2Auth.invalidateSession();\n } else {\n this.contentAuth.invalidateSession();\n this.processAuth.invalidateSession();\n }\n }\n\n /**\n * Get the current Ticket for the Bpm\n */\n getTicketBpm(): string {\n return this.processAuth?.getTicket();\n }\n\n /**\n * Get the current Ticket for the Ecm\n */\n getTicketEcm(): string {\n return this.contentAuth?.getTicket();\n }\n\n /**\n * Get the current Ticket for the Ecm and BPM\n */\n getTicket(): [string, string] {\n return [this.contentAuth.getTicket(), this.processAuth.getTicket()];\n }\n\n isBpmConfiguration(): boolean {\n return this.config.provider && this.config.provider.toUpperCase() === 'BPM';\n }\n\n isEcmConfiguration(): boolean {\n return this.config.provider && this.config.provider.toUpperCase() === 'ECM';\n }\n\n isOauthConfiguration(): boolean {\n return this.config.authType === 'OAUTH';\n }\n\n isPublicUrl(): boolean {\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.isPublicUrl();\n }\n return false;\n }\n\n isEcmBpmConfiguration(): boolean {\n return this.config.provider && this.config.provider.toUpperCase() === 'ALL';\n }\n\n private emitBuffer(event: string, callback?: any): void {\n this.emit(event, callback);\n this.bufferEvents.push(event);\n }\n\n reply(event: string, callback?: any): void {\n if (this.bufferEvents.indexOf(event) >= 0) {\n // eslint-disable-next-line prefer-rest-params\n Function.prototype.apply.call(callback, this, arguments);\n } else {\n this.on(event, callback);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"alfrescoApi.js","sourceRoot":"","sources":["alfrescoApi.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 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 { ContentAuth } from './authentication/contentAuth';\nimport { ProcessAuth } from './authentication/processAuth';\nimport { Oauth2Auth } from './authentication/oauth2Auth';\nimport { ContentClient } from './contentClient';\nimport { ProcessClient } from './processClient';\nimport { Storage } from './storage';\nimport { AlfrescoApiConfig } from './alfrescoApiConfig';\nimport { Authentication } from './authentication/authentication';\nimport { AlfrescoApiType } from './to-deprecate/alfresco-api-type';\nimport { HttpClient } from './api-clients/http-client.interface';\nimport { AlfrescoApiClient, AlfrescoApiClientPromise } from './alfrescoApiClient';\n\ntype EventEmitterInstance = InstanceType<typeof EventEmitter>;\n\nexport class AlfrescoApi extends AlfrescoApiClient implements AlfrescoApiType {\n __type = 'legacy-client';\n contentClient: ContentClient;\n contentPrivateClient: ContentClient;\n processClient: ProcessClient;\n searchClient: ContentClient;\n discoveryClient: ContentClient;\n gsClient: ContentClient;\n authClient: ContentClient;\n hxiConnectorClient: ContentClient;\n oauth2Auth: Oauth2Auth;\n processAuth: ProcessAuth;\n contentAuth: ContentAuth;\n\n bufferEvents: string[] = [];\n username: string;\n\n constructor(config?: AlfrescoApiConfig, httpClient?: HttpClient) {\n super(undefined, httpClient);\n\n if (config) {\n this.setConfig(config);\n }\n }\n\n setConfig(config: AlfrescoApiConfig) {\n if (!config) {\n config = {};\n }\n\n this.storage = Storage.getInstance();\n this.storage.setDomainPrefix(config.domainPrefix);\n\n this.initConfig(config);\n this.validateTicket(config);\n }\n\n private initConfig(config: AlfrescoApiConfig) {\n this.config = new AlfrescoApiConfig(config);\n\n this.clientsFactory();\n\n this.errorListeners();\n this.ticketMismatchListeners();\n if (this.config.oauthInit) {\n this.initAuth(config);\n\n if (this.isLoggedIn()) {\n this.emitBuffer('logged-in');\n }\n }\n }\n\n private validateTicket(config: AlfrescoApiConfig) {\n if (config.ticketEcm && !this.isOauthConfiguration()) {\n if (!this.contentAuth) {\n this.contentAuth = new ContentAuth(this.config, this, this.httpClient);\n }\n this.contentAuth\n .validateTicket()\n .then((ticket) => {\n config.ticketEcm = ticket;\n })\n .catch((error) => {\n if (error.status === 401) {\n config.ticketEcm = null;\n this.initConfig(config);\n this.emitBuffer('ticket_invalidated');\n }\n });\n }\n }\n\n private initAuth(config: AlfrescoApiConfig): void {\n if (this.isOauthConfiguration()) {\n if (!this.oauth2Auth) {\n this.oauth2Auth = new Oauth2Auth(this.config, this, this.httpClient);\n } else {\n this.oauth2Auth.setConfig(this.config, this);\n }\n\n this.oauth2Auth?.on('logged-in', () => {\n this.emitBuffer('logged-in');\n });\n\n this.setAuthenticationClientECMBPM(this.oauth2Auth.getAuthentication(), this.oauth2Auth.getAuthentication());\n } else {\n if (!this.processAuth) {\n this.processAuth = new ProcessAuth(this.config, this.httpClient);\n } else {\n this.processAuth.setConfig(this.config);\n }\n\n this.processAuth?.on('logged-in', () => {\n this.emitBuffer('logged-in');\n });\n\n this.processAuth?.on('ticket_mismatch', (error: any) => {\n this.ticketMismatchHandler(error);\n });\n\n if (!this.contentAuth) {\n this.contentAuth = new ContentAuth(this.config, this, this.httpClient);\n } else {\n this.contentAuth.setConfig(config);\n }\n\n this.contentAuth?.on('logged-in', () => {\n this.emitBuffer('logged-in');\n });\n\n this.contentAuth?.on('ticket_mismatch', (error: any) => {\n this.ticketMismatchHandler(error);\n });\n\n this.setAuthenticationClientECMBPM(this.contentAuth.getAuthentication(), this.processAuth.getAuthentication());\n }\n }\n\n private clientsFactory() {\n if (!this.contentPrivateClient) {\n this.contentPrivateClient = new ContentClient(this.config, `/api/${this.config.tenant}/private/alfresco/versions/1`, this.httpClient);\n } else {\n this.contentPrivateClient.setConfig(this.config, `/api/${this.config.tenant}/private/alfresco/versions/1`);\n }\n\n if (!this.contentClient) {\n this.contentClient = new ContentClient(this.config, `/api/${this.config.tenant}/public/alfresco/versions/1`, this.httpClient);\n } else {\n this.contentClient.setConfig(this.config, `/api/${this.config.tenant}/public/alfresco/versions/1`);\n }\n\n if (!this.authClient) {\n this.authClient = new ContentClient(this.config, `/api/${this.config.tenant}/public/authentication/versions/1`, this.httpClient);\n } else {\n this.authClient.setConfig(this.config, `/api/${this.config.tenant}/public/authentication/versions/1`);\n }\n\n if (!this.searchClient) {\n this.searchClient = new ContentClient(this.config, `/api/${this.config.tenant}/public/search/versions/1`, this.httpClient);\n } else {\n this.searchClient.setConfig(this.config, `/api/${this.config.tenant}/public/search/versions/1`);\n }\n\n if (!this.discoveryClient) {\n this.discoveryClient = new ContentClient(this.config, `/api`, this.httpClient);\n } else {\n this.discoveryClient.setConfig(this.config, `/api`);\n }\n\n if (!this.gsClient) {\n this.gsClient = new ContentClient(this.config, `/api/${this.config.tenant}/public/gs/versions/1`, this.httpClient);\n } else {\n this.gsClient.setConfig(this.config, `/api/${this.config.tenant}/public/gs/versions/1`);\n }\n\n if (!this.processClient) {\n this.processClient = new ProcessClient(this.config, this.httpClient);\n } else {\n this.processClient.setConfig(this.config);\n }\n\n if (!this.hxiConnectorClient) {\n this.hxiConnectorClient = new ContentClient(this.config, `/api/${this.config.tenant}/private/hxi/versions/1`, this.httpClient);\n } else {\n this.hxiConnectorClient.setConfig(this.config, `/api/${this.config.tenant}/private/hxi/versions/1`);\n }\n }\n\n /**@private? */\n errorListeners() {\n this.contentClient.off('error', () => {});\n this.authClient.off('error', () => {});\n this.contentPrivateClient.off('error', () => {});\n this.processClient.off('error', () => {});\n this.searchClient.off('error', () => {});\n this.discoveryClient.off('error', () => {});\n this.gsClient.off('error', () => {});\n this.hxiConnectorClient.off('error', () => {});\n\n this.contentClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.authClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.contentPrivateClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.processClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.searchClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.discoveryClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.gsClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n\n this.hxiConnectorClient.on('error', (error: any) => {\n this.errorHandler(error);\n });\n }\n\n ticketMismatchListeners() {\n this.contentClient?.off('ticket_mismatch', () => {});\n this.processClient?.off('ticket_mismatch', () => {});\n\n this.contentClient?.on('ticket_mismatch', (error: any) => {\n this.ticketMismatchHandler(error);\n });\n\n this.processClient?.on('ticket_mismatch', (error: any) => {\n this.ticketMismatchHandler(error);\n });\n }\n\n /**@private? */\n errorHandler(error: { status?: number }) {\n if (this.config.oauthInit && error.status === 401) {\n this.invalidateSession();\n }\n\n this.emitBuffer('error', error);\n }\n\n ticketMismatchHandler(error: { newTicket?: string }) {\n if (error.newTicket) {\n this.config.ticketEcm = error.newTicket;\n this.initConfig(this.config);\n }\n\n this.emitBuffer('ticket_mismatch', error);\n }\n\n changeWithCredentialsConfig(withCredentials: boolean) {\n this.config.withCredentials = withCredentials;\n }\n\n changeCsrfConfig(disableCsrf: boolean) {\n this.config.disableCsrf = disableCsrf;\n this.processAuth.changeCsrfConfig(disableCsrf);\n }\n\n changeEcmHost(hostEcm: string) {\n this.config.hostEcm = hostEcm;\n this.contentAuth.changeHost();\n this.contentClient.changeHost();\n this.authClient.changeHost();\n }\n\n changeBpmHost(hostBpm: string) {\n this.config.hostBpm = hostBpm;\n this.processAuth.changeHost();\n this.processClient.changeHost();\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<any> {\n if (!this.isCredentialValid(username) || !this.isCredentialValid(password)) {\n return Promise.reject(new Error('missing username or password'));\n }\n\n if (username) {\n username = username.trim();\n }\n\n this.username = username;\n\n if (this.isOauthConfiguration()) {\n const promise = this.oauth2Auth.login(username, password);\n promise.then((accessToken) => {\n this.config.accessToken = accessToken;\n });\n return promise;\n } else {\n if (this.isBpmConfiguration()) {\n const promise = this.processAuth.login(username, password);\n promise.then((ticketBpm) => {\n this.config.ticketBpm = ticketBpm;\n });\n return promise;\n } else if (this.isEcmConfiguration()) {\n const promise = this.contentAuth.login(username, password);\n promise.then((ticketEcm) => {\n this.setAuthenticationClientECMBPM(this.contentAuth.getAuthentication(), null);\n this.config.ticketEcm = ticketEcm;\n });\n return promise;\n } else if (this.isEcmBpmConfiguration()) {\n const contentProcessPromise = this.loginBPMECM(username, password);\n\n contentProcessPromise.then((data) => {\n this.config.ticketEcm = data[0];\n this.config.ticketBpm = data[1];\n });\n\n return contentProcessPromise;\n } else {\n return Promise.reject(new Error('Unknown configuration'));\n }\n }\n }\n\n isCredentialValid(credential: string): boolean {\n return credential !== undefined && credential !== null && credential !== '';\n }\n\n implicitLogin(): Promise<any> {\n if (!this.isOauthConfiguration()) {\n return Promise.reject(new Error('Missing the required oauth2 configuration'));\n }\n\n return new Promise(() => {\n this.oauth2Auth.implicitLogin();\n });\n }\n\n setAuthenticationClientECMBPM(authECM: Authentication, authBPM: Authentication) {\n this.contentClient.setAuthentications(authECM);\n this.authClient.setAuthentications(authECM);\n this.searchClient.setAuthentications(authECM);\n this.contentPrivateClient.setAuthentications(authECM);\n this.processClient.setAuthentications(authBPM);\n this.searchClient.setAuthentications(authECM);\n this.discoveryClient.setAuthentications(authECM);\n this.gsClient.setAuthentications(authECM);\n this.hxiConnectorClient.setAuthentications(authECM);\n }\n\n /**\n * login Tickets\n * @param ticketEcm alfresco ticket\n * @param ticketBpm alfresco ticket\n */\n loginTicket(ticketEcm: string, ticketBpm: string): Promise<string> {\n this.config.ticketEcm = ticketEcm;\n this.config.ticketBpm = ticketBpm;\n\n return this.contentAuth.validateTicket();\n }\n\n private loginBPMECM(username: string, password: string): AlfrescoApiClientPromise<[string, string]> {\n const contentPromise = this.contentAuth.login(username, password);\n const processPromise = this.processAuth.login(username, password);\n\n const eventEmitter: EventEmitterInstance = new EventEmitter();\n const promise = new Promise<[string, string]>((resolve, reject) => {\n Promise.all([contentPromise, processPromise]).then(\n (data) => {\n eventEmitter.emit('success');\n resolve(data);\n },\n (error) => {\n this.contentAuth.invalidateSession();\n this.processAuth.invalidateSession();\n\n if (error.status === 401) {\n eventEmitter.emit('unauthorized');\n }\n eventEmitter.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, eventEmitter);\n }\n\n /**\n * logout Alfresco API\n */\n logout(): Promise<void> {\n this.username = null;\n\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.logOut();\n }\n\n if (this.isBpmConfiguration()) {\n return this.processAuth.logout();\n }\n\n if (this.isEcmConfiguration()) {\n const contentPromise = this.contentAuth.logout();\n contentPromise.then(\n (): void => (this.config.ticket = undefined),\n (): void => {}\n );\n return contentPromise;\n }\n\n if (this.isEcmBpmConfiguration()) {\n return this._logoutBPMECM();\n }\n\n return Promise.resolve();\n }\n\n private _logoutBPMECM(): AlfrescoApiClientPromise<void> {\n const contentPromise = this.contentAuth.logout();\n const processPromise = this.processAuth.logout();\n\n const eventEmitter: EventEmitterInstance = new EventEmitter();\n const promise = new Promise<void>((resolve, reject) => {\n Promise.all([contentPromise, processPromise]).then(\n () => {\n this.config.ticket = undefined;\n eventEmitter.emit('logout');\n resolve();\n },\n (error) => {\n if (error.status === 401) {\n eventEmitter.emit('unauthorized');\n }\n eventEmitter.emit('error');\n reject(error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, eventEmitter);\n }\n\n /**\n * If the client is logged in return true\n */\n isLoggedIn(): boolean {\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.isLoggedIn();\n }\n\n if (this.isBpmConfiguration()) {\n return this.processAuth.isLoggedIn();\n }\n\n if (this.isEcmConfiguration()) {\n return this.config.withCredentials ? true : this.contentAuth.isLoggedIn();\n }\n\n if (this.isEcmBpmConfiguration()) {\n return this.config.withCredentials ? true : this.contentAuth.isLoggedIn() && this.processAuth.isLoggedIn();\n }\n\n return false;\n }\n\n isBpmLoggedIn(): boolean {\n if (this.isBpmConfiguration() || this.isEcmBpmConfiguration()) {\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.isLoggedIn();\n } else {\n return this.processAuth.isLoggedIn();\n }\n }\n return false;\n }\n\n isEcmLoggedIn(): boolean {\n if (this.isEcmConfiguration() || this.isEcmBpmConfiguration()) {\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.isLoggedIn();\n } else {\n return this.config.withCredentials ? true : this.contentAuth.isLoggedIn();\n }\n }\n return false;\n }\n\n getBpmUsername(): string {\n if (this.isOauthConfiguration()) {\n return this.username || this.oauth2Auth.storage.getItem('USERNAME');\n } else {\n return this.username || this.processAuth.storage.getItem('APS_USERNAME');\n }\n }\n\n getEcmUsername(): string {\n if (this.isOauthConfiguration()) {\n return this.username || this.oauth2Auth.storage.getItem('USERNAME');\n } else {\n return this.username || this.contentAuth.storage.getItem('ACS_USERNAME');\n }\n }\n\n /**\n * refresh token\n */\n refreshToken(): Promise<any> {\n if (!this.isOauthConfiguration()) {\n return Promise.reject(new Error('Missing the required oauth2 configuration'));\n }\n\n if (this.config.oauth2.implicitFlow) {\n return Promise.reject(new Error('Manual refresh token not possible in implicit flow'));\n }\n\n return this.oauth2Auth.refreshToken();\n }\n\n getTicketAuth(): string {\n return this.oauth2Auth?.getToken();\n }\n\n /**\n * Set the current Ticket\n * @param ticketEcm ecm ticket\n * @param ticketBpm bpm ticket\n */\n setTicket(ticketEcm: string, ticketBpm: string) {\n if (this.contentAuth) {\n this.contentAuth.setTicket(ticketEcm);\n }\n if (this.processAuth) {\n this.processAuth.setTicket(ticketBpm);\n }\n }\n\n /**\n * invalidate the current session\n */\n invalidateSession() {\n if (this.oauth2Auth) {\n this.oauth2Auth.invalidateSession();\n } else {\n this.contentAuth.invalidateSession();\n this.processAuth.invalidateSession();\n }\n }\n\n /**\n * Get the current Ticket for the Bpm\n */\n getTicketBpm(): string {\n return this.processAuth?.getTicket();\n }\n\n /**\n * Get the current Ticket for the Ecm\n */\n getTicketEcm(): string {\n return this.contentAuth?.getTicket();\n }\n\n /**\n * Get the current Ticket for the Ecm and BPM\n */\n getTicket(): [string, string] {\n return [this.contentAuth.getTicket(), this.processAuth.getTicket()];\n }\n\n isBpmConfiguration(): boolean {\n return this.config.provider && this.config.provider.toUpperCase() === 'BPM';\n }\n\n isEcmConfiguration(): boolean {\n return this.config.provider && this.config.provider.toUpperCase() === 'ECM';\n }\n\n isOauthConfiguration(): boolean {\n return this.config.authType === 'OAUTH';\n }\n\n isPublicUrl(): boolean {\n if (this.isOauthConfiguration()) {\n return this.oauth2Auth.isPublicUrl();\n }\n return false;\n }\n\n isEcmBpmConfiguration(): boolean {\n return this.config.provider && this.config.provider.toUpperCase() === 'ALL';\n }\n\n private emitBuffer(event: string, callback?: any): void {\n this.emit(event, callback);\n this.bufferEvents.push(event);\n }\n\n reply(event: string, callback?: any): void {\n if (this.bufferEvents.indexOf(event) >= 0) {\n // eslint-disable-next-line prefer-rest-params\n Function.prototype.apply.call(callback, this, arguments);\n } else {\n this.on(event, callback);\n }\n }\n}\n"]}