@alfresco/js-api 9.2.0-17234132289 → 9.3.0
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 +2 -2
- package/esm2015/src/alfrescoApi.js +14 -14
- package/esm2015/src/alfrescoApi.js.map +1 -1
- package/esm2015/src/alfrescoApiClient.js +28 -14
- package/esm2015/src/alfrescoApiClient.js.map +1 -1
- package/esm2015/src/api/content-custom-api/api/upload.api.js +52 -1
- package/esm2015/src/api/content-custom-api/api/upload.api.js.map +1 -1
- package/esm2015/src/api-clients/http-client.interface.js.map +1 -1
- package/esm2015/src/authentication/contentAuth.js +4 -7
- package/esm2015/src/authentication/contentAuth.js.map +1 -1
- package/esm2015/src/authentication/oauth2Auth.js +3 -4
- package/esm2015/src/authentication/oauth2Auth.js.map +1 -1
- package/esm2015/src/authentication/processAuth.js +3 -5
- package/esm2015/src/authentication/processAuth.js.map +1 -1
- package/esm2015/src/axiosHttpClient.js +283 -0
- package/esm2015/src/axiosHttpClient.js.map +1 -0
- package/esm5/package.json +2 -2
- package/esm5/src/alfrescoApi.js +14 -14
- package/esm5/src/alfrescoApi.js.map +1 -1
- package/esm5/src/alfrescoApiClient.js +28 -14
- package/esm5/src/alfrescoApiClient.js.map +1 -1
- package/esm5/src/api/content-custom-api/api/upload.api.js +52 -1
- package/esm5/src/api/content-custom-api/api/upload.api.js.map +1 -1
- package/esm5/src/api-clients/http-client.interface.js.map +1 -1
- package/esm5/src/authentication/contentAuth.js +4 -7
- package/esm5/src/authentication/contentAuth.js.map +1 -1
- package/esm5/src/authentication/oauth2Auth.js +3 -4
- package/esm5/src/authentication/oauth2Auth.js.map +1 -1
- package/esm5/src/authentication/processAuth.js +3 -5
- package/esm5/src/authentication/processAuth.js.map +1 -1
- package/esm5/src/axiosHttpClient.js +283 -0
- package/esm5/src/axiosHttpClient.js.map +1 -0
- package/package.json +2 -2
- package/src/alfrescoApi.js +14 -15
- package/src/alfrescoApi.js.map +1 -1
- package/src/alfrescoApiClient.js +28 -15
- package/src/alfrescoApiClient.js.map +1 -1
- package/src/api/content-custom-api/api/upload.api.js +52 -1
- package/src/api/content-custom-api/api/upload.api.js.map +1 -1
- package/src/api-clients/http-client.interface.js.map +1 -1
- package/src/authentication/contentAuth.js +4 -8
- package/src/authentication/contentAuth.js.map +1 -1
- package/src/authentication/oauth2Auth.js +3 -4
- package/src/authentication/oauth2Auth.js.map +1 -1
- package/src/authentication/processAuth.js +3 -6
- package/src/authentication/processAuth.js.map +1 -1
- package/src/axiosHttpClient.js +287 -0
- package/src/axiosHttpClient.js.map +1 -0
- package/typings/package.json +2 -2
- package/typings/src/alfrescoApi.d.ts +2 -10
- package/typings/src/alfrescoApiClient.d.ts +14 -11
- package/typings/src/api-clients/http-client.interface.d.ts +10 -3
- package/typings/src/authentication/oauth2Auth.d.ts +1 -1
- package/typings/src/{superagentHttpClient.d.ts → axiosHttpClient.d.ts} +5 -5
- package/esm2015/src/superagentHttpClient.js +0 -264
- package/esm2015/src/superagentHttpClient.js.map +0 -1
- package/esm5/src/superagentHttpClient.js +0 -264
- package/esm5/src/superagentHttpClient.js.map +0 -1
- package/src/superagentHttpClient.js +0 -269
- package/src/superagentHttpClient.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"upload.api.js","sourceRoot":"","sources":["upload.api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,oEAAgE;AAQhE,MAAa,SAAU,SAAQ,oBAAQ;IACnC,UAAU,
|
1
|
+
{"version":3,"file":"upload.api.js","sourceRoot":"","sources":["upload.api.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 { NodesApi } from '../../content-rest-api/api/nodes.api';\nimport { NodeBodyCreate, NodeEntry, CreateNodeOpts } from '../../content-rest-api';\n\nexport interface UploadFileOpts extends CreateNodeOpts {\n name?: string;\n renditions?: string;\n}\n\nexport class UploadApi extends NodesApi {\n uploadFile(\n fileDefinition: any,\n relativePath?: string,\n rootFolderId?: string,\n nodeBody?: NodeBodyCreate,\n opts?: UploadFileOpts\n ): Promise<NodeEntry | any> {\n rootFolderId = rootFolderId || '-root-';\n opts = opts || {};\n\n const nodeBodyRequired = {\n name: fileDefinition.name,\n nodeType: 'cm:content',\n relativePath: relativePath ?? null\n };\n\n nodeBody = Object.assign(nodeBodyRequired, nodeBody);\n\n let formParam = Object.assign({}, nodeBody.properties || {});\n formParam.filedata = fileDefinition;\n formParam.relativePath = relativePath;\n if (opts.name) {\n formParam.name = opts.name;\n }\n\n formParam = Object.assign(formParam, opts);\n\n const originalPromise = this.createNode(rootFolderId, nodeBody, opts, formParam);\n\n let isAborted = false;\n let abortReject: (reason?: any) => void;\n\n // Create a new promise that can be aborted\n const abortablePromise = new Promise((resolve, reject) => {\n abortReject = reject;\n\n if (isAborted) {\n reject(new Error('Upload aborted'));\n return;\n }\n\n setTimeout(() => {\n if (!isAborted && typeof (abortablePromise as any).emit === 'function') {\n (abortablePromise as any).emit('progress', { loaded: 25, total: 100 });\n }\n }, 10);\n\n setTimeout(() => {\n if (!isAborted && typeof (abortablePromise as any).emit === 'function') {\n (abortablePromise as any).emit('progress', { loaded: 50, total: 100 });\n }\n }, 50);\n\n originalPromise\n .then((result) => {\n if (!isAborted) {\n if (typeof (abortablePromise as any).emit === 'function') {\n (abortablePromise as any).emit('progress', { loaded: 100, total: 100 });\n }\n resolve(result);\n }\n })\n .catch((error) => {\n if (!isAborted) {\n reject(error);\n }\n });\n });\n\n Object.setPrototypeOf(abortablePromise, Object.getPrototypeOf(originalPromise));\n Object.getOwnPropertyNames(originalPromise).forEach((key) => {\n if (key !== 'then' && key !== 'catch' && key !== 'finally') {\n (abortablePromise as any)[key] = (originalPromise as any)[key];\n }\n });\n\n (abortablePromise as any).abort = () => {\n if (!isAborted) {\n isAborted = true;\n\n if (typeof (abortablePromise as any).emit === 'function') {\n (abortablePromise as any).emit('abort');\n }\n\n if (abortReject) {\n abortReject(new Error('Upload aborted'));\n }\n }\n };\n\n return abortablePromise;\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"http-client.interface.js","sourceRoot":"","sources":["http-client.interface.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG","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 { Authentication } from '../authentication/authentication';\nimport {
|
1
|
+
{"version":3,"file":"http-client.interface.js","sourceRoot":"","sources":["http-client.interface.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG","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 { Authentication } from '../authentication/authentication';\nimport { EventEmitter } from 'eventemitter3';\n\ntype EventEmitterInstance = InstanceType<typeof EventEmitter>;\n\nexport interface RequestOptions {\n path: string;\n httpMethod?: string;\n pathParams?: any;\n queryParams?: any;\n headerParams?: any;\n formParams?: any;\n bodyParam?: any;\n contentTypes?: string[];\n accepts?: string[];\n returnType?: any;\n contextRoot?: string;\n responseType?: string;\n url?: string;\n readonly accept?: string;\n readonly contentType?: string;\n}\n\nexport interface HttpClientConfig {\n contextRoot?: string;\n host?: string; // Should be mandatory but can't make it because of AlfrescoApiConfig incompatibility 😕\n servicePath?: string; // Should be mandatory but can't make it because of AlfrescoApiConfig incompatibility 😕\n}\n\nexport interface LegacyHttpClient {\n basePath: string;\n config: HttpClientConfig;\n\n request<T = any>(options: RequestOptions): Promise<T>;\n post<T = any>(options: RequestOptions): Promise<T>;\n put<T = any>(options: RequestOptions): Promise<T>;\n get<T = any>(options: RequestOptions): Promise<T>;\n delete<T = void>(options: RequestOptions): Promise<T>;\n /** @deprecated */\n callApi(\n path: string,\n httpMethod: string,\n pathParams?: any,\n queryParams?: any,\n headerParams?: any,\n formParams?: any,\n bodyParam?: any,\n contentTypes?: string[],\n accepts?: string[],\n returnType?: any,\n contextRoot?: string,\n responseType?: string,\n url?: string\n ): Promise<any>;\n /** @deprecated */\n callCustomApi(\n path: string,\n httpMethod: string,\n pathParams?: any,\n queryParams?: any,\n headerParams?: any,\n formParams?: any,\n bodyParam?: any,\n contentTypes?: string[],\n accepts?: string[],\n returnType?: any,\n contextRoot?: string,\n responseType?: string\n ): Promise<any>;\n}\n\nexport interface SecurityOptions {\n readonly isBpmRequest: boolean;\n readonly enableCsrf?: boolean;\n readonly withCredentials?: boolean;\n readonly authentications: Authentication;\n readonly defaultHeaders: Record<string, string>;\n}\n\nexport interface Emitters {\n readonly eventEmitter: EventEmitterInstance;\n readonly apiClientEmitter: {\n on: EventEmitterInstance['on'];\n off: EventEmitterInstance['off'];\n once: EventEmitterInstance['once'];\n emit: EventEmitterInstance['emit'];\n };\n}\n\nexport interface HttpClient {\n request<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n post<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n put<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n get<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n delete<T = void>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n}\n"]}
|
@@ -17,8 +17,7 @@
|
|
17
17
|
*/
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
19
19
|
exports.ContentAuth = void 0;
|
20
|
-
const
|
21
|
-
const event_emitter_1 = tslib_1.__importDefault(require("event-emitter"));
|
20
|
+
const eventemitter3_1 = require("eventemitter3");
|
22
21
|
const auth_rest_api_1 = require("../api/auth-rest-api");
|
23
22
|
const alfrescoApiClient_1 = require("../alfrescoApiClient");
|
24
23
|
const storage_1 = require("../storage");
|
@@ -82,8 +81,7 @@ class ContentAuth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
82
81
|
reject(error);
|
83
82
|
});
|
84
83
|
});
|
85
|
-
(
|
86
|
-
return promise;
|
84
|
+
return this.addPromiseListeners(promise, new eventemitter3_1.EventEmitter());
|
87
85
|
}
|
88
86
|
validateTicket() {
|
89
87
|
this.setTicket(this.config.ticketEcm);
|
@@ -101,8 +99,7 @@ class ContentAuth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
101
99
|
reject(error);
|
102
100
|
});
|
103
101
|
});
|
104
|
-
(
|
105
|
-
return promise;
|
102
|
+
return this.addPromiseListeners(promise, new eventemitter3_1.EventEmitter());
|
106
103
|
}
|
107
104
|
logout() {
|
108
105
|
this.saveUsername('');
|
@@ -119,8 +116,7 @@ class ContentAuth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
119
116
|
reject(error);
|
120
117
|
});
|
121
118
|
});
|
122
|
-
(
|
123
|
-
return promise;
|
119
|
+
return this.addPromiseListeners(promise, new eventemitter3_1.EventEmitter());
|
124
120
|
}
|
125
121
|
setTicket(ticket) {
|
126
122
|
this.authentications.basicAuth.username = 'ROLE_TICKET';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"contentAuth.js","sourceRoot":"","sources":["contentAuth.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 from 'event-emitter';\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 ee(promise); // jshint ignore:line\n return promise;\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 ee(promise); // jshint ignore:line\n return promise;\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 ee(promise); // jshint ignore:line\n return promise;\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-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 { 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"]}
|
@@ -18,7 +18,7 @@
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
19
19
|
exports.Oauth2Auth = void 0;
|
20
20
|
const tslib_1 = require("tslib");
|
21
|
-
const
|
21
|
+
const eventemitter3_1 = require("eventemitter3");
|
22
22
|
const alfrescoApiClient_1 = require("../alfrescoApiClient");
|
23
23
|
const auth_rest_api_1 = require("../api/auth-rest-api");
|
24
24
|
const storage_1 = require("../storage");
|
@@ -452,7 +452,7 @@ class Oauth2Auth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
452
452
|
this.emit('error');
|
453
453
|
reject(error.error);
|
454
454
|
});
|
455
|
-
(
|
455
|
+
return this.addPromiseListeners(promise, new eventemitter3_1.EventEmitter());
|
456
456
|
}
|
457
457
|
pollingRefreshToken() {
|
458
458
|
this.refreshTokenIntervalPolling = setInterval(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
@@ -489,8 +489,7 @@ class Oauth2Auth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
489
489
|
reject(error.error);
|
490
490
|
});
|
491
491
|
});
|
492
|
-
(
|
493
|
-
return promise;
|
492
|
+
return this.addPromiseListeners(promise, new eventemitter3_1.EventEmitter());
|
494
493
|
}
|
495
494
|
universalBtoa(stringToConvert) {
|
496
495
|
try {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"oauth2Auth.js","sourceRoot":"","sources":["oauth2Auth.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 from 'event-emitter';\nimport { AlfrescoApiClient } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { AuthenticationApi } from '../api/auth-rest-api';\nimport { AlfrescoApi } from '../alfrescoApi';\nimport { Storage } from '../storage';\nimport { HttpClient } from '../api-clients/http-client.interface';\nimport { PathMatcher } from '../utils/path-matcher';\n\ndeclare const Buffer: any;\n\ndeclare let window: Window;\n\ninterface Userinfo {\n name: string;\n given_name?: string;\n family_name?: string;\n preferred_username?: string;\n email?: string;\n picture?: string;\n}\n\nexport class Oauth2Auth extends AlfrescoApiClient {\n static readonly DEFAULT_AUTHORIZATION_URL = '/protocol/openid-connect/auth';\n static readonly DEFAULT_TOKEN_URL = '/protocol/openid-connect/token';\n static readonly DEFAULT_USER_INFO_ENDPOINT = '/protocol/openid-connect/userinfo';\n static readonly DEFAULT_LOGOUT_URL = '/protocol/openid-connect/logout';\n\n private refreshTokenIntervalPolling: any;\n private refreshTokenTimeoutIframe: any;\n private checkAccessToken = true;\n\n hashFragmentParams: any;\n token: string;\n discovery: {\n loginUrl?: string;\n logoutUrl?: string;\n tokenEndpoint?: string;\n userinfoEndpoint?: string;\n } = {\n loginUrl: undefined,\n logoutUrl: undefined,\n tokenEndpoint: undefined,\n userinfoEndpoint: undefined\n };\n\n authentications: Authentication = {\n oauth2: { accessToken: '' },\n type: 'oauth2',\n basicAuth: {}\n };\n\n iFrameHashListener: any;\n pathMatcher = new PathMatcher();\n\n constructor(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApi, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.storage = Storage.getInstance();\n\n this.className = 'Oauth2Auth';\n\n if (config) {\n this.setConfig(config, alfrescoApi);\n }\n }\n\n setConfig(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApi) {\n this.config = config;\n this.storage.setDomainPrefix(config.domainPrefix);\n\n if (this.config.oauth2) {\n if (this.config.oauth2.host === undefined || this.config.oauth2.host === null) {\n throw new Error('Missing the required oauth2 host parameter');\n }\n\n if (this.config.oauth2.clientId === undefined || this.config.oauth2.clientId === null) {\n throw new Error('Missing the required oauth2 clientId parameter');\n }\n\n if (this.config.oauth2.scope === undefined || this.config.oauth2.scope === null) {\n throw new Error('Missing the required oauth2 scope parameter');\n }\n\n if (this.config.oauth2.secret === undefined || this.config.oauth2.secret === null) {\n this.config.oauth2.secret = '';\n }\n\n if ((this.config.oauth2.redirectUri === undefined || this.config.oauth2.redirectUri === null) && this.config.oauth2.implicitFlow) {\n throw new Error('Missing redirectUri required parameter');\n }\n\n if (!this.config.oauth2.refreshTokenTimeout) {\n this.config.oauth2.refreshTokenTimeout = 300000;\n }\n\n if (!this.config.oauth2.redirectSilentIframeUri) {\n let context = '';\n if (typeof window !== 'undefined') {\n context = window.location.origin;\n }\n this.config.oauth2.redirectSilentIframeUri = context + '/assets/silent-refresh.html';\n }\n\n this.basePath = this.config.oauth2.host; //Auth Call\n\n this.host = this.config.oauth2.host;\n\n this.discoveryUrls();\n\n if (this.hasContentProvider()) {\n this.exchangeTicketListener(alfrescoApi);\n }\n\n this.initOauth();\n }\n }\n\n initOauth() {\n if (!this.config.oauth2.implicitFlow && this.isValidAccessToken()) {\n const accessToken = this.storage.getItem('access_token');\n this.setToken(accessToken, null);\n }\n\n if (this.config.oauth2.implicitFlow) {\n this.checkFragment('nonce');\n }\n }\n\n discoveryUrls() {\n this.discovery.loginUrl = this.config.oauth2.authorizationUrl || this.host + Oauth2Auth.DEFAULT_AUTHORIZATION_URL;\n this.discovery.logoutUrl = this.config.oauth2.logoutUrl || this.host + Oauth2Auth.DEFAULT_LOGOUT_URL;\n this.discovery.tokenEndpoint = this.config.oauth2.tokenUrl || this.host + Oauth2Auth.DEFAULT_TOKEN_URL;\n this.discovery.userinfoEndpoint = this.config.oauth2.userinfoEndpoint || this.host + Oauth2Auth.DEFAULT_USER_INFO_ENDPOINT;\n }\n\n getProfile(): Promise<Userinfo> {\n const postBody = {};\n const pathParams = {};\n const queryParams = {};\n\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n\n const formParams = {};\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n return this.callCustomApi(\n this.discovery.userinfoEndpoint,\n 'GET',\n pathParams,\n queryParams,\n headerParams,\n formParams,\n postBody,\n contentTypes,\n accepts\n );\n }\n\n hasContentProvider(): boolean {\n return this.config.provider === 'ECM' || this.config.provider === 'ALL';\n }\n\n checkFragment(nonceKey?: string, externalHash?: any): any {\n // jshint ignore:line\n this.hashFragmentParams = this.getHashFragmentParams(externalHash);\n\n if (this.hashFragmentParams && this.hashFragmentParams.error === undefined) {\n this.useFragmentTimeLogin(nonceKey);\n } else {\n this.refreshBrowserLogin();\n }\n }\n\n private refreshBrowserLogin() {\n if (this.config.oauth2.silentLogin && !this.isPublicUrl()) {\n this.implicitLogin();\n }\n\n if (this.isValidToken() && this.isValidAccessToken()) {\n const accessToken = this.storage.getItem('access_token');\n this.setToken(accessToken, null);\n this.silentRefresh();\n }\n }\n\n private useFragmentTimeLogin(nonceKey: string) {\n const accessToken = this.hashFragmentParams.access_token;\n const idToken = this.hashFragmentParams.id_token;\n const sessionState = this.hashFragmentParams.session_state;\n const expiresIn = this.hashFragmentParams.expires_in;\n\n if (!sessionState) {\n throw new Error('session state not present');\n }\n\n try {\n const jwt = this.processJWTToken(idToken, nonceKey);\n if (jwt) {\n this.storeIdToken(idToken, jwt.payload.exp);\n this.storeAccessToken(accessToken, expiresIn);\n this.authentications.basicAuth.username = jwt.payload.preferred_username;\n this.saveUsername(jwt.payload.preferred_username);\n this.silentRefresh();\n return accessToken;\n }\n } catch (error) {\n throw new Error('Validation JWT error' + error);\n }\n }\n\n isPublicUrl(): boolean {\n const publicUrls = this.config.oauth2.publicUrls || [];\n\n if (Array.isArray(publicUrls)) {\n return publicUrls.length > 0 && publicUrls.some((urlPattern: string) => this.pathMatcher.match(window.location.href, urlPattern));\n }\n return false;\n }\n\n padBase64(base64data: any) {\n while (base64data.length % 4 !== 0) {\n base64data += '=';\n }\n return base64data;\n }\n\n processJWTToken(jwt: any, nonceKey: string): any {\n if (jwt) {\n const jwtArray = jwt.split('.');\n const headerBase64 = this.padBase64(jwtArray[0]);\n const headerJson = this.b64DecodeUnicode(headerBase64);\n const header = JSON.parse(headerJson);\n\n const payloadBase64 = this.padBase64(jwtArray[1]);\n const payloadJson = this.b64DecodeUnicode(payloadBase64);\n const payload = JSON.parse(payloadJson);\n\n const savedNonce = this.storage.getItem(nonceKey);\n\n if (!payload.sub) {\n throw new Error('Missing sub in JWT');\n }\n\n if (payload.nonce !== savedNonce) {\n return;\n }\n\n return {\n idToken: jwt,\n payload,\n header\n };\n }\n }\n\n b64DecodeUnicode(b64string: string) {\n const base64 = b64string.replace(/-/g, '+').replace(/_/g, '/');\n return decodeURIComponent(\n atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join('')\n );\n }\n\n storeIdToken(idToken: string, exp: number) {\n this.storage.setItem('id_token', idToken);\n this.storage.setItem('id_token_expires_at', Number(exp * 1000).toString());\n this.storage.setItem('id_token_stored_at', Date.now().toString());\n }\n\n storeAccessToken(accessToken: string, expiresIn: number, refreshToken?: string) {\n this.storage.setItem('access_token', accessToken);\n\n const expiresInMilliSeconds = expiresIn * 1000;\n const now = new Date();\n const expiresAt = now.getTime() + expiresInMilliSeconds;\n\n this.storage.setItem('access_token_expires_in', expiresAt);\n this.storage.setItem('access_token_stored_at', Date.now().toString());\n this.setToken(accessToken, refreshToken);\n }\n\n saveUsername(username: string) {\n if (this.storage.supportsStorage()) {\n this.storage.setItem('USERNAME', username);\n }\n }\n\n implicitLogin() {\n if (!this.isValidToken() || !this.isValidAccessToken()) {\n this.redirectLogin();\n }\n }\n\n isValidToken(): boolean {\n let validToken = false;\n if (this.getIdToken()) {\n const expiresAt = this.storage.getItem('id_token_expires_at');\n const now = new Date();\n if (expiresAt && parseInt(expiresAt, 10) >= now.getTime()) {\n validToken = true;\n }\n }\n\n return validToken;\n }\n\n isValidAccessToken(): boolean {\n let validAccessToken = false;\n\n if (this.getAccessToken()) {\n const expiresAt = this.storage.getItem('access_token_expires_in');\n const now = new Date();\n if (expiresAt && parseInt(expiresAt, 10) >= now.getTime()) {\n validAccessToken = true;\n }\n }\n\n return validAccessToken;\n }\n\n getIdToken(): string {\n return this.storage.getItem('id_token');\n }\n\n getAccessToken(): string {\n return this.storage.getItem('access_token');\n }\n\n redirectLogin(): void {\n if (this.config.oauth2.implicitFlow && typeof window !== 'undefined') {\n const href = this.composeImplicitLoginUrl();\n window.location.href = href;\n this.emit('implicit_redirect', href);\n }\n }\n\n isRedirectionUrl() {\n return window.location.hash && window.location.hash.split('&')[0].indexOf('session_state') === -1;\n }\n\n genNonce(): string {\n let text = '';\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n for (let i = 0; i < 40; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n }\n\n composeImplicitLoginUrl(): string {\n const nonce = this.genNonce();\n\n this.storage.setItem('nonce', nonce);\n\n const afterLoginUriSegment = this.isRedirectionUrl() ? window.location.hash : '';\n if (afterLoginUriSegment && afterLoginUriSegment !== '/') {\n this.storage.setItem('loginFragment', afterLoginUriSegment.replace('#', '').trim());\n }\n\n const separation = this.discovery.loginUrl.indexOf('?') > -1 ? '&' : '?';\n\n return (\n this.discovery.loginUrl +\n separation +\n 'client_id=' +\n encodeURIComponent(this.config.oauth2.clientId) +\n '&redirect_uri=' +\n encodeURIComponent(this.config.oauth2.redirectUri) +\n '&scope=' +\n encodeURIComponent(this.config.oauth2.scope) +\n '&response_type=' +\n encodeURIComponent('id_token token') +\n '&nonce=' +\n encodeURIComponent(nonce)\n );\n }\n\n composeIframeLoginUrl(): string {\n const nonce = this.genNonce();\n\n this.storage.setItem('refresh_nonce', nonce);\n\n const separation = this.discovery.loginUrl.indexOf('?') > -1 ? '&' : '?';\n\n return (\n this.discovery.loginUrl +\n separation +\n 'client_id=' +\n encodeURIComponent(this.config.oauth2.clientId) +\n '&redirect_uri=' +\n encodeURIComponent(this.config.oauth2.redirectSilentIframeUri) +\n '&scope=' +\n encodeURIComponent(this.config.oauth2.scope) +\n '&response_type=' +\n encodeURIComponent('id_token token') +\n '&nonce=' +\n encodeURIComponent(nonce) +\n '&prompt=none'\n );\n }\n\n hasHashCharacter(hash: string): boolean {\n return hash.indexOf('#') === 0;\n }\n\n startWithHashRoute(hash: string) {\n return hash.startsWith('#/');\n }\n\n getHashFragmentParams(externalHash: string): string {\n let hashFragmentParams = null;\n\n if (typeof window !== 'undefined') {\n let hash: string;\n\n if (!externalHash) {\n hash = decodeURIComponent(window.location.hash);\n if (!this.startWithHashRoute(hash)) {\n window.location.hash = '';\n }\n } else {\n hash = decodeURIComponent(externalHash);\n this.removeHashFromSilentIframe();\n this.destroyIframe();\n }\n\n if (this.hasHashCharacter(hash) && !this.startWithHashRoute(hash)) {\n const questionMarkPosition = hash.indexOf('?');\n\n if (questionMarkPosition > -1) {\n hash = hash.substring(questionMarkPosition + 1);\n } else {\n hash = hash.substring(1);\n }\n hashFragmentParams = this.parseQueryString(hash);\n }\n }\n return hashFragmentParams;\n }\n\n parseQueryString(queryString: string): any {\n const data: { [key: string]: any } = {};\n let pairs: string[];\n let pair: string;\n let separatorIndex: number;\n let escapedKey: string;\n let escapedValue: string;\n let key: string;\n let value: string;\n\n if (queryString !== null) {\n pairs = queryString.split('&');\n\n for (const item of pairs) {\n pair = item;\n separatorIndex = pair.indexOf('=');\n\n if (separatorIndex === -1) {\n escapedKey = pair;\n escapedValue = null;\n } else {\n escapedKey = pair.substring(0, separatorIndex);\n escapedValue = pair.substring(separatorIndex + 1);\n }\n\n key = decodeURIComponent(escapedKey);\n value = decodeURIComponent(escapedValue);\n\n if (key.startsWith('/')) {\n key = key.substring(1);\n }\n\n data[key] = value;\n }\n }\n\n return data;\n }\n\n silentRefresh(): void {\n if (typeof document === 'undefined') {\n this.pollingRefreshToken();\n return;\n }\n\n if (this.checkAccessToken) {\n this.destroyIframe();\n this.createIframe();\n this.checkAccessToken = false;\n return;\n }\n\n this.refreshTokenTimeoutIframe = setTimeout(() => {\n this.destroyIframe();\n this.createIframe();\n }, this.config.oauth2.refreshTokenTimeout);\n }\n\n removeHashFromSilentIframe() {\n const iframe = document.getElementById('silent_refresh_token_iframe') as HTMLIFrameElement;\n if (iframe?.contentWindow.location.hash) {\n iframe.contentWindow.location.hash = '';\n }\n }\n\n createIframe() {\n const iframe = document.createElement('iframe');\n iframe.id = 'silent_refresh_token_iframe';\n const loginUrl = this.composeIframeLoginUrl();\n iframe.setAttribute('src', loginUrl);\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n this.iFrameHashListener = () => {\n const silentRefreshTokenIframe: any = document.getElementById('silent_refresh_token_iframe');\n const hash = silentRefreshTokenIframe.contentWindow.location.hash;\n try {\n this.checkFragment('refresh_nonce', hash);\n } catch {\n this.logOut();\n }\n };\n\n iframe.addEventListener('load', this.iFrameHashListener);\n }\n\n destroyIframe() {\n const iframe = document.getElementById('silent_refresh_token_iframe');\n\n if (iframe) {\n iframe.removeEventListener('load', this.iFrameHashListener);\n document.body.removeChild(iframe);\n }\n }\n\n /**\n * login Alfresco API\n * @returns A promise that returns {new authentication token} if resolved and {error} if rejected.\n */\n login(username: string, password: string): Promise<any> {\n return new Promise((resolve, reject) => {\n this.grantPasswordLogin(username, password, resolve, reject);\n });\n }\n\n grantPasswordLogin(username: string, password: string, resolve: any, reject: any) {\n this.invalidateSession();\n\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n\n const formParams = {\n username,\n password,\n grant_type: 'password',\n client_id: this.config.oauth2.clientId,\n client_secret: this.config.oauth2.secret\n };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise = this.callCustomApi(this.discovery.tokenEndpoint, 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n (data: any) => {\n this.saveUsername(username);\n this.silentRefresh();\n this.storeAccessToken(data.access_token, data.expires_in, data.refresh_token);\n\n resolve(data);\n },\n (error) => {\n if ((error.error && error.error.status === 401) || error.status === 401) {\n this.emit('unauthorized');\n }\n this.emit('error');\n reject(error.error);\n }\n );\n\n ee(promise); // jshint ignore:line\n }\n\n pollingRefreshToken() {\n this.refreshTokenIntervalPolling = setInterval(async () => {\n try {\n await this.refreshToken();\n } catch {\n /* continue regardless of error */\n }\n }, this.config.oauth2.refreshTokenTimeout);\n\n this.refreshTokenIntervalPolling.unref();\n }\n\n /**\n * Refresh the Token\n * @returns promise of void\n */\n refreshToken(): Promise<any> {\n const auth = 'Basic ' + this.universalBtoa(this.config.oauth2.clientId + ':' + this.config.oauth2.secret);\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Cache-Control': 'no-cache',\n Authorization: auth\n };\n const formParams = {\n grant_type: 'refresh_token',\n refresh_token: this.authentications.oauth2.refreshToken\n };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise = new Promise((resolve, reject) => {\n this.callCustomApi(this.discovery.tokenEndpoint, 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n (data: any) => {\n this.setToken(data.access_token, data.refresh_token);\n resolve(data);\n },\n (error) => {\n if (error.error && error.error.status === 401) {\n this.emit('unauthorized');\n }\n this.emit('error');\n reject(error.error);\n }\n );\n });\n\n ee(promise); // jshint ignore:line\n\n return promise;\n }\n\n universalBtoa(stringToConvert: string) {\n try {\n return btoa(stringToConvert);\n } catch {\n return Buffer.from(stringToConvert).toString('base64');\n }\n }\n\n /**\n * Set the current Token\n */\n setToken(token: string, refreshToken: string) {\n this.authentications.oauth2.accessToken = token;\n this.authentications.oauth2.refreshToken = refreshToken;\n this.authentications.basicAuth.password = null;\n this.token = token;\n\n if (token) {\n this.emit('token_issued');\n this.emit('logged-in');\n }\n }\n\n /**\n * Get the current Token\n * @returns token value\n */\n getToken(): string {\n return this.token;\n }\n\n /**\n * return the Authentication\n * @returns authentications\n */\n getAuthentication(): Authentication {\n return this.authentications;\n }\n\n /**\n * Change the Host\n */\n changeHost(host: string) {\n this.config.hostOauth2 = host;\n }\n\n /**\n * If the client is logged in return true\n * @returns is logged in\n */\n isLoggedIn(): boolean {\n return !!this.authentications.oauth2.accessToken;\n }\n\n /**\n * Logout\n */\n async logOut() {\n this.checkAccessToken = true;\n\n const id_token = this.getIdToken();\n\n this.invalidateSession();\n this.setToken(null, null);\n\n const separation = this.discovery.logoutUrl.indexOf('?') > -1 ? '&' : '?';\n const redirectLogout = this.config.oauth2.redirectUriLogout || this.config.oauth2.redirectUri;\n const logoutUrl =\n this.discovery.logoutUrl +\n separation +\n 'post_logout_redirect_uri=' +\n encodeURIComponent(redirectLogout) +\n '&id_token_hint=' +\n encodeURIComponent(id_token);\n\n if (id_token != null && this.config.oauth2.implicitFlow && typeof window !== 'undefined') {\n window.location.href = logoutUrl;\n }\n }\n\n invalidateSession() {\n clearTimeout(this.refreshTokenTimeoutIframe);\n clearInterval(this.refreshTokenIntervalPolling);\n\n this.storage.removeItem('access_token');\n this.storage.removeItem('access_token_expires_in');\n this.storage.removeItem('access_token_stored_at');\n\n this.storage.removeItem('id_token');\n this.storage.removeItem('id_token');\n this.storage.removeItem('id_token_claims_obj');\n this.storage.removeItem('id_token_expires_at');\n this.storage.removeItem('id_token_stored_at');\n\n this.storage.removeItem('nonce');\n }\n\n exchangeTicketListener(alfrescoApi: AlfrescoApi) {\n this.on('token_issued', async () => {\n const authContentApi: AuthenticationApi = new AuthenticationApi(alfrescoApi);\n // Legacy stuff, needs deprecation, can not be more specific here because of circular dependency\n (authContentApi.apiClient as unknown as any).authentications = this.authentications;\n try {\n const ticketEntry = await authContentApi.getTicket();\n this.config.ticketEcm = ticketEntry.entry.id;\n this.emit('ticket_exchanged');\n } catch {\n // continue regardless of error\n }\n });\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"oauth2Auth.js","sourceRoot":"","sources":["oauth2Auth.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;AAEH,iDAA6C;AAC7C,4DAAyD;AAGzD,wDAAyD;AAEzD,wCAAqC;AAErC,wDAAoD;AAepD,MAAa,UAAW,SAAQ,qCAAiB;IAiC7C,YAAY,MAAyB,EAAE,WAAwB,EAAE,UAAuB;QACpF,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QA1BzB,qBAAgB,GAAG,IAAI,CAAC;QAIhC,cAAS,GAKL;YACA,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,SAAS;YACxB,gBAAgB,EAAE,SAAS;SAC9B,CAAC;QAEF,oBAAe,GAAmB;YAC9B,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;YAC3B,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,EAAE;SAChB,CAAC;QAGF,gBAAW,GAAG,IAAI,0BAAW,EAAE,CAAC;QAI5B,IAAI,CAAC,OAAO,GAAG,iBAAO,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;QAE9B,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,MAAyB,EAAE,WAAwB;QACzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC5E,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACpF,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC9E,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACnE,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAChF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;YACnC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC/H,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC;YACpD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;gBAC9C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;oBAChC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACrC,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,GAAG,OAAO,GAAG,6BAA6B,CAAC;YACzF,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAExC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAEpC,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBAC5B,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC;IACL,CAAC;IAED,SAAS;QACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAChE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,aAAa;QACT,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,yBAAyB,CAAC;QAClH,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC;QACrG,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC;QACvG,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,0BAA0B,CAAC;IAC/H,CAAC;IAED,UAAU;QACN,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,MAAM,YAAY,GAAG;YACjB,cAAc,EAAE,mCAAmC;SACtD,CAAC;QAEF,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,YAAY,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,aAAa,CACrB,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAC/B,KAAK,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,OAAO,CACV,CAAC;IACN,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;IAC5E,CAAC;IAED,aAAa,CAAC,QAAiB,EAAE,YAAkB;QAE/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACzE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC;IAEO,mBAAmB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACnD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,QAAgB;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;QAErD,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACpD,IAAI,GAAG,EAAE,CAAC;gBACN,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBAC9C,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC;gBACzE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAClD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,OAAO,WAAW,CAAC;YACvB,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED,WAAW;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAEvD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACtI,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,SAAS,CAAC,UAAe;QACrB,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,UAAU,IAAI,GAAG,CAAC;QACtB,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,GAAQ,EAAE,QAAgB;QACtC,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAEtC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAExC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAElD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO;YACX,CAAC;YAED,OAAO;gBACH,OAAO,EAAE,GAAG;gBACZ,OAAO;gBACP,MAAM;aACT,CAAC;QACN,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/D,OAAO,kBAAkB,CACrB,IAAI,CAAC,MAAM,CAAC;aACP,KAAK,CAAC,EAAE,CAAC;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACjE,IAAI,CAAC,EAAE,CAAC,CAChB,CAAC;IACN,CAAC;IAED,YAAY,CAAC,OAAe,EAAE,GAAW;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,gBAAgB,CAAC,WAAmB,EAAE,SAAiB,EAAE,YAAqB;QAC1E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAElD,MAAM,qBAAqB,GAAG,SAAS,GAAG,IAAI,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,qBAAqB,CAAC;QAExD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,QAAgB;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,aAAa;QACT,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAED,YAAY;QACR,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,SAAS,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxD,UAAU,GAAG,IAAI,CAAC;YACtB,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,kBAAkB;QACd,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,SAAS,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxD,gBAAgB,GAAG,IAAI,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IAED,aAAa;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED,gBAAgB;QACZ,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,gEAAgE,CAAC;QAElF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1B,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,uBAAuB;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAErC,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,oBAAoB,IAAI,oBAAoB,KAAK,GAAG,EAAE,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAEzE,OAAO,CACH,IAAI,CAAC,SAAS,CAAC,QAAQ;YACvB,UAAU;YACV,YAAY;YACZ,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC/C,gBAAgB;YAChB,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAClD,SAAS;YACT,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5C,iBAAiB;YACjB,kBAAkB,CAAC,gBAAgB,CAAC;YACpC,SAAS;YACT,kBAAkB,CAAC,KAAK,CAAC,CAC5B,CAAC;IACN,CAAC;IAED,qBAAqB;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAEzE,OAAO,CACH,IAAI,CAAC,SAAS,CAAC,QAAQ;YACvB,UAAU;YACV,YAAY;YACZ,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC/C,gBAAgB;YAChB,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC;YAC9D,SAAS;YACT,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5C,iBAAiB;YACjB,kBAAkB,CAAC,gBAAgB,CAAC;YACpC,SAAS;YACT,kBAAkB,CAAC,KAAK,CAAC;YACzB,cAAc,CACjB,CAAC;IACN,CAAC;IAED,gBAAgB,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,kBAAkB,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,qBAAqB,CAAC,YAAoB;QACtC,IAAI,kBAAkB,GAAG,IAAI,CAAC;QAE9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,IAAI,IAAY,CAAC;YAEjB,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;gBAC9B,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBACxC,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC;YAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAE/C,IAAI,oBAAoB,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC5B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACJ,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC;gBACD,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QACD,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,gBAAgB,CAAC,WAAmB;QAChC,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,IAAI,KAAe,CAAC;QACpB,IAAI,IAAY,CAAC;QACjB,IAAI,cAAsB,CAAC;QAC3B,IAAI,UAAkB,CAAC;QACvB,IAAI,YAAoB,CAAC;QACzB,IAAI,GAAW,CAAC;QAChB,IAAI,KAAa,CAAC;QAElB,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACvB,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,IAAI,GAAG,IAAI,CAAC;gBACZ,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnC,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;oBACxB,UAAU,GAAG,IAAI,CAAC;oBAClB,YAAY,GAAG,IAAI,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACJ,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;oBAC/C,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;gBACtD,CAAC;gBAED,GAAG,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBACrC,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAEzC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa;QACT,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,OAAO;QACX,CAAC;QAED,IAAI,CAAC,yBAAyB,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/C,CAAC;IAED,0BAA0B;QACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,6BAA6B,CAAsB,CAAC;QAC3F,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,YAAY;QACR,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,GAAG,6BAA6B,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,kBAAkB,GAAG,GAAG,EAAE;YAC3B,MAAM,wBAAwB,GAAQ,QAAQ,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAG,wBAAwB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;YAClE,IAAI,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;YAAC,WAAM,CAAC;gBACL,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa;QACT,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;QAEtE,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC5D,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAMD,KAAK,CAAC,QAAgB,EAAE,QAAgB;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kBAAkB,CAAC,QAAgB,EAAE,QAAgB,EAAE,OAAY,EAAE,MAAW;QAC5E,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,YAAY,GAAG;YACjB,cAAc,EAAE,mCAAmC;SACtD,CAAC;QAEF,MAAM,UAAU,GAAG;YACf,QAAQ;YACR,QAAQ;YACR,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ;YACtC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;SAC3C,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAErC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CACtI,CAAC,IAAS,EAAE,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAE9E,OAAO,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACtE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CACJ,CAAC;QAEF,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,4BAAY,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,mBAAmB;QACf,IAAI,CAAC,2BAA2B,GAAG,WAAW,CAAC,GAAS,EAAE;YACtD,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9B,CAAC;YAAC,WAAM,CAAC;YAET,CAAC;QACL,CAAC,CAAA,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAE3C,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;IAMD,YAAY;QACR,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1G,MAAM,YAAY,GAAG;YACjB,cAAc,EAAE,mCAAmC;YACnD,eAAe,EAAE,UAAU;YAC3B,aAAa,EAAE,IAAI;SACtB,CAAC;QACF,MAAM,UAAU,GAAG;YACf,UAAU,EAAE,eAAe;YAC3B,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY;SAC1D,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAErC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CACtH,CAAC,IAAS,EAAE,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACN,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,4BAAY,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,aAAa,CAAC,eAAuB;QACjC,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAKD,QAAQ,CAAC,KAAa,EAAE,YAAoB;QACxC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IAMD,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAMD,iBAAiB;QACb,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAKD,UAAU,CAAC,IAAY;QACnB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;IAClC,CAAC;IAMD,UAAU;QACN,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;IACrD,CAAC;IAKK,MAAM;;YACR,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAEnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAC9F,MAAM,SAAS,GACX,IAAI,CAAC,SAAS,CAAC,SAAS;gBACxB,UAAU;gBACV,2BAA2B;gBAC3B,kBAAkB,CAAC,cAAc,CAAC;gBAClC,iBAAiB;gBACjB,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAEjC,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBACvF,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC;YACrC,CAAC;QACL,CAAC;KAAA;IAED,iBAAiB;QACb,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC7C,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QAElD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAE9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,sBAAsB,CAAC,WAAwB;QAC3C,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,GAAS,EAAE;YAC/B,MAAM,cAAc,GAAsB,IAAI,iCAAiB,CAAC,WAAW,CAAC,CAAC;YAE5E,cAAc,CAAC,SAA4B,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YACpF,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAClC,CAAC;YAAC,WAAM,CAAC;YAET,CAAC;QACL,CAAC,CAAA,CAAC,CAAC;IACP,CAAC;;AAztBL,gCA0tBC;AAztBmB,oCAAyB,GAAG,+BAA+B,AAAlC,CAAmC;AAC5D,4BAAiB,GAAG,gCAAgC,AAAnC,CAAoC;AACrD,qCAA0B,GAAG,mCAAmC,AAAtC,CAAuC;AACjE,6BAAkB,GAAG,iCAAiC,AAApC,CAAqC","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 { AlfrescoApiClient } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { AuthenticationApi } from '../api/auth-rest-api';\nimport { AlfrescoApi } from '../alfrescoApi';\nimport { Storage } from '../storage';\nimport { HttpClient } from '../api-clients/http-client.interface';\nimport { PathMatcher } from '../utils/path-matcher';\n\ndeclare const Buffer: any;\n\ndeclare let window: Window;\n\ninterface Userinfo {\n name: string;\n given_name?: string;\n family_name?: string;\n preferred_username?: string;\n email?: string;\n picture?: string;\n}\n\nexport class Oauth2Auth extends AlfrescoApiClient {\n static readonly DEFAULT_AUTHORIZATION_URL = '/protocol/openid-connect/auth';\n static readonly DEFAULT_TOKEN_URL = '/protocol/openid-connect/token';\n static readonly DEFAULT_USER_INFO_ENDPOINT = '/protocol/openid-connect/userinfo';\n static readonly DEFAULT_LOGOUT_URL = '/protocol/openid-connect/logout';\n\n private refreshTokenIntervalPolling: any;\n private refreshTokenTimeoutIframe: any;\n private checkAccessToken = true;\n\n hashFragmentParams: any;\n token: string;\n discovery: {\n loginUrl?: string;\n logoutUrl?: string;\n tokenEndpoint?: string;\n userinfoEndpoint?: string;\n } = {\n loginUrl: undefined,\n logoutUrl: undefined,\n tokenEndpoint: undefined,\n userinfoEndpoint: undefined\n };\n\n authentications: Authentication = {\n oauth2: { accessToken: '' },\n type: 'oauth2',\n basicAuth: {}\n };\n\n iFrameHashListener: any;\n pathMatcher = new PathMatcher();\n\n constructor(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApi, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.storage = Storage.getInstance();\n\n this.className = 'Oauth2Auth';\n\n if (config) {\n this.setConfig(config, alfrescoApi);\n }\n }\n\n setConfig(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApi) {\n this.config = config;\n this.storage.setDomainPrefix(config.domainPrefix);\n\n if (this.config.oauth2) {\n if (this.config.oauth2.host === undefined || this.config.oauth2.host === null) {\n throw new Error('Missing the required oauth2 host parameter');\n }\n\n if (this.config.oauth2.clientId === undefined || this.config.oauth2.clientId === null) {\n throw new Error('Missing the required oauth2 clientId parameter');\n }\n\n if (this.config.oauth2.scope === undefined || this.config.oauth2.scope === null) {\n throw new Error('Missing the required oauth2 scope parameter');\n }\n\n if (this.config.oauth2.secret === undefined || this.config.oauth2.secret === null) {\n this.config.oauth2.secret = '';\n }\n\n if ((this.config.oauth2.redirectUri === undefined || this.config.oauth2.redirectUri === null) && this.config.oauth2.implicitFlow) {\n throw new Error('Missing redirectUri required parameter');\n }\n\n if (!this.config.oauth2.refreshTokenTimeout) {\n this.config.oauth2.refreshTokenTimeout = 300000;\n }\n\n if (!this.config.oauth2.redirectSilentIframeUri) {\n let context = '';\n if (typeof window !== 'undefined') {\n context = window.location.origin;\n }\n this.config.oauth2.redirectSilentIframeUri = context + '/assets/silent-refresh.html';\n }\n\n this.basePath = this.config.oauth2.host; //Auth Call\n\n this.host = this.config.oauth2.host;\n\n this.discoveryUrls();\n\n if (this.hasContentProvider()) {\n this.exchangeTicketListener(alfrescoApi);\n }\n\n this.initOauth();\n }\n }\n\n initOauth() {\n if (!this.config.oauth2.implicitFlow && this.isValidAccessToken()) {\n const accessToken = this.storage.getItem('access_token');\n this.setToken(accessToken, null);\n }\n\n if (this.config.oauth2.implicitFlow) {\n this.checkFragment('nonce');\n }\n }\n\n discoveryUrls() {\n this.discovery.loginUrl = this.config.oauth2.authorizationUrl || this.host + Oauth2Auth.DEFAULT_AUTHORIZATION_URL;\n this.discovery.logoutUrl = this.config.oauth2.logoutUrl || this.host + Oauth2Auth.DEFAULT_LOGOUT_URL;\n this.discovery.tokenEndpoint = this.config.oauth2.tokenUrl || this.host + Oauth2Auth.DEFAULT_TOKEN_URL;\n this.discovery.userinfoEndpoint = this.config.oauth2.userinfoEndpoint || this.host + Oauth2Auth.DEFAULT_USER_INFO_ENDPOINT;\n }\n\n getProfile(): Promise<Userinfo> {\n const postBody = {};\n const pathParams = {};\n const queryParams = {};\n\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n\n const formParams = {};\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n return this.callCustomApi(\n this.discovery.userinfoEndpoint,\n 'GET',\n pathParams,\n queryParams,\n headerParams,\n formParams,\n postBody,\n contentTypes,\n accepts\n );\n }\n\n hasContentProvider(): boolean {\n return this.config.provider === 'ECM' || this.config.provider === 'ALL';\n }\n\n checkFragment(nonceKey?: string, externalHash?: any): any {\n // jshint ignore:line\n this.hashFragmentParams = this.getHashFragmentParams(externalHash);\n\n if (this.hashFragmentParams && this.hashFragmentParams.error === undefined) {\n this.useFragmentTimeLogin(nonceKey);\n } else {\n this.refreshBrowserLogin();\n }\n }\n\n private refreshBrowserLogin() {\n if (this.config.oauth2.silentLogin && !this.isPublicUrl()) {\n this.implicitLogin();\n }\n\n if (this.isValidToken() && this.isValidAccessToken()) {\n const accessToken = this.storage.getItem('access_token');\n this.setToken(accessToken, null);\n this.silentRefresh();\n }\n }\n\n private useFragmentTimeLogin(nonceKey: string) {\n const accessToken = this.hashFragmentParams.access_token;\n const idToken = this.hashFragmentParams.id_token;\n const sessionState = this.hashFragmentParams.session_state;\n const expiresIn = this.hashFragmentParams.expires_in;\n\n if (!sessionState) {\n throw new Error('session state not present');\n }\n\n try {\n const jwt = this.processJWTToken(idToken, nonceKey);\n if (jwt) {\n this.storeIdToken(idToken, jwt.payload.exp);\n this.storeAccessToken(accessToken, expiresIn);\n this.authentications.basicAuth.username = jwt.payload.preferred_username;\n this.saveUsername(jwt.payload.preferred_username);\n this.silentRefresh();\n return accessToken;\n }\n } catch (error) {\n throw new Error('Validation JWT error' + error);\n }\n }\n\n isPublicUrl(): boolean {\n const publicUrls = this.config.oauth2.publicUrls || [];\n\n if (Array.isArray(publicUrls)) {\n return publicUrls.length > 0 && publicUrls.some((urlPattern: string) => this.pathMatcher.match(window.location.href, urlPattern));\n }\n return false;\n }\n\n padBase64(base64data: any) {\n while (base64data.length % 4 !== 0) {\n base64data += '=';\n }\n return base64data;\n }\n\n processJWTToken(jwt: any, nonceKey: string): any {\n if (jwt) {\n const jwtArray = jwt.split('.');\n const headerBase64 = this.padBase64(jwtArray[0]);\n const headerJson = this.b64DecodeUnicode(headerBase64);\n const header = JSON.parse(headerJson);\n\n const payloadBase64 = this.padBase64(jwtArray[1]);\n const payloadJson = this.b64DecodeUnicode(payloadBase64);\n const payload = JSON.parse(payloadJson);\n\n const savedNonce = this.storage.getItem(nonceKey);\n\n if (!payload.sub) {\n throw new Error('Missing sub in JWT');\n }\n\n if (payload.nonce !== savedNonce) {\n return;\n }\n\n return {\n idToken: jwt,\n payload,\n header\n };\n }\n }\n\n b64DecodeUnicode(b64string: string) {\n const base64 = b64string.replace(/-/g, '+').replace(/_/g, '/');\n return decodeURIComponent(\n atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join('')\n );\n }\n\n storeIdToken(idToken: string, exp: number) {\n this.storage.setItem('id_token', idToken);\n this.storage.setItem('id_token_expires_at', Number(exp * 1000).toString());\n this.storage.setItem('id_token_stored_at', Date.now().toString());\n }\n\n storeAccessToken(accessToken: string, expiresIn: number, refreshToken?: string) {\n this.storage.setItem('access_token', accessToken);\n\n const expiresInMilliSeconds = expiresIn * 1000;\n const now = new Date();\n const expiresAt = now.getTime() + expiresInMilliSeconds;\n\n this.storage.setItem('access_token_expires_in', expiresAt);\n this.storage.setItem('access_token_stored_at', Date.now().toString());\n this.setToken(accessToken, refreshToken);\n }\n\n saveUsername(username: string) {\n if (this.storage.supportsStorage()) {\n this.storage.setItem('USERNAME', username);\n }\n }\n\n implicitLogin() {\n if (!this.isValidToken() || !this.isValidAccessToken()) {\n this.redirectLogin();\n }\n }\n\n isValidToken(): boolean {\n let validToken = false;\n if (this.getIdToken()) {\n const expiresAt = this.storage.getItem('id_token_expires_at');\n const now = new Date();\n if (expiresAt && parseInt(expiresAt, 10) >= now.getTime()) {\n validToken = true;\n }\n }\n\n return validToken;\n }\n\n isValidAccessToken(): boolean {\n let validAccessToken = false;\n\n if (this.getAccessToken()) {\n const expiresAt = this.storage.getItem('access_token_expires_in');\n const now = new Date();\n if (expiresAt && parseInt(expiresAt, 10) >= now.getTime()) {\n validAccessToken = true;\n }\n }\n\n return validAccessToken;\n }\n\n getIdToken(): string {\n return this.storage.getItem('id_token');\n }\n\n getAccessToken(): string {\n return this.storage.getItem('access_token');\n }\n\n redirectLogin(): void {\n if (this.config.oauth2.implicitFlow && typeof window !== 'undefined') {\n const href = this.composeImplicitLoginUrl();\n window.location.href = href;\n this.emit('implicit_redirect', href);\n }\n }\n\n isRedirectionUrl() {\n return window.location.hash && window.location.hash.split('&')[0].indexOf('session_state') === -1;\n }\n\n genNonce(): string {\n let text = '';\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n for (let i = 0; i < 40; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n }\n\n composeImplicitLoginUrl(): string {\n const nonce = this.genNonce();\n\n this.storage.setItem('nonce', nonce);\n\n const afterLoginUriSegment = this.isRedirectionUrl() ? window.location.hash : '';\n if (afterLoginUriSegment && afterLoginUriSegment !== '/') {\n this.storage.setItem('loginFragment', afterLoginUriSegment.replace('#', '').trim());\n }\n\n const separation = this.discovery.loginUrl.indexOf('?') > -1 ? '&' : '?';\n\n return (\n this.discovery.loginUrl +\n separation +\n 'client_id=' +\n encodeURIComponent(this.config.oauth2.clientId) +\n '&redirect_uri=' +\n encodeURIComponent(this.config.oauth2.redirectUri) +\n '&scope=' +\n encodeURIComponent(this.config.oauth2.scope) +\n '&response_type=' +\n encodeURIComponent('id_token token') +\n '&nonce=' +\n encodeURIComponent(nonce)\n );\n }\n\n composeIframeLoginUrl(): string {\n const nonce = this.genNonce();\n\n this.storage.setItem('refresh_nonce', nonce);\n\n const separation = this.discovery.loginUrl.indexOf('?') > -1 ? '&' : '?';\n\n return (\n this.discovery.loginUrl +\n separation +\n 'client_id=' +\n encodeURIComponent(this.config.oauth2.clientId) +\n '&redirect_uri=' +\n encodeURIComponent(this.config.oauth2.redirectSilentIframeUri) +\n '&scope=' +\n encodeURIComponent(this.config.oauth2.scope) +\n '&response_type=' +\n encodeURIComponent('id_token token') +\n '&nonce=' +\n encodeURIComponent(nonce) +\n '&prompt=none'\n );\n }\n\n hasHashCharacter(hash: string): boolean {\n return hash.indexOf('#') === 0;\n }\n\n startWithHashRoute(hash: string) {\n return hash.startsWith('#/');\n }\n\n getHashFragmentParams(externalHash: string): string {\n let hashFragmentParams = null;\n\n if (typeof window !== 'undefined') {\n let hash: string;\n\n if (!externalHash) {\n hash = decodeURIComponent(window.location.hash);\n if (!this.startWithHashRoute(hash)) {\n window.location.hash = '';\n }\n } else {\n hash = decodeURIComponent(externalHash);\n this.removeHashFromSilentIframe();\n this.destroyIframe();\n }\n\n if (this.hasHashCharacter(hash) && !this.startWithHashRoute(hash)) {\n const questionMarkPosition = hash.indexOf('?');\n\n if (questionMarkPosition > -1) {\n hash = hash.substring(questionMarkPosition + 1);\n } else {\n hash = hash.substring(1);\n }\n hashFragmentParams = this.parseQueryString(hash);\n }\n }\n return hashFragmentParams;\n }\n\n parseQueryString(queryString: string): any {\n const data: { [key: string]: any } = {};\n let pairs: string[];\n let pair: string;\n let separatorIndex: number;\n let escapedKey: string;\n let escapedValue: string;\n let key: string;\n let value: string;\n\n if (queryString !== null) {\n pairs = queryString.split('&');\n\n for (const item of pairs) {\n pair = item;\n separatorIndex = pair.indexOf('=');\n\n if (separatorIndex === -1) {\n escapedKey = pair;\n escapedValue = null;\n } else {\n escapedKey = pair.substring(0, separatorIndex);\n escapedValue = pair.substring(separatorIndex + 1);\n }\n\n key = decodeURIComponent(escapedKey);\n value = decodeURIComponent(escapedValue);\n\n if (key.startsWith('/')) {\n key = key.substring(1);\n }\n\n data[key] = value;\n }\n }\n\n return data;\n }\n\n silentRefresh(): void {\n if (typeof document === 'undefined') {\n this.pollingRefreshToken();\n return;\n }\n\n if (this.checkAccessToken) {\n this.destroyIframe();\n this.createIframe();\n this.checkAccessToken = false;\n return;\n }\n\n this.refreshTokenTimeoutIframe = setTimeout(() => {\n this.destroyIframe();\n this.createIframe();\n }, this.config.oauth2.refreshTokenTimeout);\n }\n\n removeHashFromSilentIframe() {\n const iframe = document.getElementById('silent_refresh_token_iframe') as HTMLIFrameElement;\n if (iframe?.contentWindow.location.hash) {\n iframe.contentWindow.location.hash = '';\n }\n }\n\n createIframe() {\n const iframe = document.createElement('iframe');\n iframe.id = 'silent_refresh_token_iframe';\n const loginUrl = this.composeIframeLoginUrl();\n iframe.setAttribute('src', loginUrl);\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n this.iFrameHashListener = () => {\n const silentRefreshTokenIframe: any = document.getElementById('silent_refresh_token_iframe');\n const hash = silentRefreshTokenIframe.contentWindow.location.hash;\n try {\n this.checkFragment('refresh_nonce', hash);\n } catch {\n this.logOut();\n }\n };\n\n iframe.addEventListener('load', this.iFrameHashListener);\n }\n\n destroyIframe() {\n const iframe = document.getElementById('silent_refresh_token_iframe');\n\n if (iframe) {\n iframe.removeEventListener('load', this.iFrameHashListener);\n document.body.removeChild(iframe);\n }\n }\n\n /**\n * login Alfresco API\n * @returns A promise that returns {new authentication token} if resolved and {error} if rejected.\n */\n login(username: string, password: string): Promise<any> {\n return new Promise((resolve, reject) => {\n this.grantPasswordLogin(username, password, resolve, reject);\n });\n }\n\n grantPasswordLogin(username: string, password: string, resolve: any, reject: any) {\n this.invalidateSession();\n\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n\n const formParams = {\n username,\n password,\n grant_type: 'password',\n client_id: this.config.oauth2.clientId,\n client_secret: this.config.oauth2.secret\n };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise = this.callCustomApi(this.discovery.tokenEndpoint, 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n (data: any) => {\n this.saveUsername(username);\n this.silentRefresh();\n this.storeAccessToken(data.access_token, data.expires_in, data.refresh_token);\n\n resolve(data);\n },\n (error) => {\n if ((error.error && error.error.status === 401) || error.status === 401) {\n this.emit('unauthorized');\n }\n this.emit('error');\n reject(error.error);\n }\n );\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n pollingRefreshToken() {\n this.refreshTokenIntervalPolling = setInterval(async () => {\n try {\n await this.refreshToken();\n } catch {\n /* continue regardless of error */\n }\n }, this.config.oauth2.refreshTokenTimeout);\n\n this.refreshTokenIntervalPolling.unref();\n }\n\n /**\n * Refresh the Token\n * @returns promise of void\n */\n refreshToken(): Promise<any> {\n const auth = 'Basic ' + this.universalBtoa(this.config.oauth2.clientId + ':' + this.config.oauth2.secret);\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Cache-Control': 'no-cache',\n Authorization: auth\n };\n const formParams = {\n grant_type: 'refresh_token',\n refresh_token: this.authentications.oauth2.refreshToken\n };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise = new Promise((resolve, reject) => {\n this.callCustomApi(this.discovery.tokenEndpoint, 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n (data: any) => {\n this.setToken(data.access_token, data.refresh_token);\n resolve(data);\n },\n (error) => {\n if (error.error && error.error.status === 401) {\n this.emit('unauthorized');\n }\n this.emit('error');\n reject(error.error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n universalBtoa(stringToConvert: string) {\n try {\n return btoa(stringToConvert);\n } catch {\n return Buffer.from(stringToConvert).toString('base64');\n }\n }\n\n /**\n * Set the current Token\n */\n setToken(token: string, refreshToken: string) {\n this.authentications.oauth2.accessToken = token;\n this.authentications.oauth2.refreshToken = refreshToken;\n this.authentications.basicAuth.password = null;\n this.token = token;\n\n if (token) {\n this.emit('token_issued');\n this.emit('logged-in');\n }\n }\n\n /**\n * Get the current Token\n * @returns token value\n */\n getToken(): string {\n return this.token;\n }\n\n /**\n * return the Authentication\n * @returns authentications\n */\n getAuthentication(): Authentication {\n return this.authentications;\n }\n\n /**\n * Change the Host\n */\n changeHost(host: string) {\n this.config.hostOauth2 = host;\n }\n\n /**\n * If the client is logged in return true\n * @returns is logged in\n */\n isLoggedIn(): boolean {\n return !!this.authentications.oauth2.accessToken;\n }\n\n /**\n * Logout\n */\n async logOut() {\n this.checkAccessToken = true;\n\n const id_token = this.getIdToken();\n\n this.invalidateSession();\n this.setToken(null, null);\n\n const separation = this.discovery.logoutUrl.indexOf('?') > -1 ? '&' : '?';\n const redirectLogout = this.config.oauth2.redirectUriLogout || this.config.oauth2.redirectUri;\n const logoutUrl =\n this.discovery.logoutUrl +\n separation +\n 'post_logout_redirect_uri=' +\n encodeURIComponent(redirectLogout) +\n '&id_token_hint=' +\n encodeURIComponent(id_token);\n\n if (id_token != null && this.config.oauth2.implicitFlow && typeof window !== 'undefined') {\n window.location.href = logoutUrl;\n }\n }\n\n invalidateSession() {\n clearTimeout(this.refreshTokenTimeoutIframe);\n clearInterval(this.refreshTokenIntervalPolling);\n\n this.storage.removeItem('access_token');\n this.storage.removeItem('access_token_expires_in');\n this.storage.removeItem('access_token_stored_at');\n\n this.storage.removeItem('id_token');\n this.storage.removeItem('id_token');\n this.storage.removeItem('id_token_claims_obj');\n this.storage.removeItem('id_token_expires_at');\n this.storage.removeItem('id_token_stored_at');\n\n this.storage.removeItem('nonce');\n }\n\n exchangeTicketListener(alfrescoApi: AlfrescoApi) {\n this.on('token_issued', async () => {\n const authContentApi: AuthenticationApi = new AuthenticationApi(alfrescoApi);\n // Legacy stuff, needs deprecation, can not be more specific here because of circular dependency\n (authContentApi.apiClient as unknown as any).authentications = this.authentications;\n try {\n const ticketEntry = await authContentApi.getTicket();\n this.config.ticketEcm = ticketEntry.entry.id;\n this.emit('ticket_exchanged');\n } catch {\n // continue regardless of error\n }\n });\n }\n}\n"]}
|
@@ -17,8 +17,7 @@
|
|
17
17
|
*/
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
19
19
|
exports.ProcessAuth = void 0;
|
20
|
-
const
|
21
|
-
const event_emitter_1 = tslib_1.__importDefault(require("event-emitter"));
|
20
|
+
const eventemitter3_1 = require("eventemitter3");
|
22
21
|
const alfrescoApiClient_1 = require("../alfrescoApiClient");
|
23
22
|
const storage_1 = require("../storage");
|
24
23
|
const utils_1 = require("../utils");
|
@@ -99,8 +98,7 @@ class ProcessAuth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
99
98
|
reject(error);
|
100
99
|
});
|
101
100
|
});
|
102
|
-
(
|
103
|
-
return promise;
|
101
|
+
return this.addPromiseListeners(promise, new eventemitter3_1.EventEmitter());
|
104
102
|
}
|
105
103
|
logout() {
|
106
104
|
this.saveUsername('');
|
@@ -119,8 +117,7 @@ class ProcessAuth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
119
117
|
reject(error);
|
120
118
|
});
|
121
119
|
});
|
122
|
-
(
|
123
|
-
return promise;
|
120
|
+
return this.addPromiseListeners(promise, new eventemitter3_1.EventEmitter());
|
124
121
|
}
|
125
122
|
setTicket(ticket) {
|
126
123
|
this.authentications.basicAuth.ticket = ticket;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"processAuth.js","sourceRoot":"","sources":["processAuth.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 from 'event-emitter';\nimport { AlfrescoApiClient, AlfrescoApiClientPromise } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { Storage } from '../storage';\nimport { HttpClient } from '../api-clients/http-client.interface';\nimport { isBrowser } from '../utils';\n\nexport class ProcessAuth extends AlfrescoApiClient {\n ticket: string;\n\n authentications: Authentication = {\n basicAuth: { ticket: '' },\n type: 'activiti'\n };\n\n constructor(config: AlfrescoApiConfig, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.storage = Storage.getInstance();\n this.storage.setDomainPrefix(config.domainPrefix);\n\n this.className = 'ProcessAuth';\n\n if (!isBrowser()) {\n this.defaultHeaders = {\n 'user-agent': 'alfresco-js-api'\n };\n }\n\n this.setConfig(config);\n }\n\n setConfig(config: AlfrescoApiConfig) {\n this.config = config;\n this.ticket = undefined;\n\n this.basePath = config.hostBpm + '/' + this.config.contextRootBpm; //Activiti Call\n\n if (this.config.ticketBpm) {\n this.setTicket(config.ticketBpm);\n } else if (this.storage.getItem('ticket-BPM')) {\n this.setTicket(this.storage.getItem('ticket-BPM'));\n }\n }\n\n changeHost() {\n this.basePath = this.config.hostBpm + '/' + this.config.contextRootBpm; //Activiti Call\n this.ticket = undefined;\n }\n\n changeCsrfConfig(disableCsrf: boolean) {\n this.config.disableCsrf = disableCsrf;\n }\n\n saveUsername(username: string) {\n if (this.storage.supportsStorage()) {\n this.storage.setItem('APS_USERNAME', username);\n }\n }\n\n /**\n * login Activiti 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): AlfrescoApiClientPromise<string> {\n this.authentications.basicAuth.username = username;\n this.authentications.basicAuth.password = password;\n\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Cache-Control': 'no-cache'\n };\n const formParams = {\n j_username: this.authentications.basicAuth.username,\n j_password: this.authentications.basicAuth.password,\n _spring_security_remember_me: true,\n submit: 'Login'\n };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.callApi('/app/authentication', 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n () => {\n this.saveUsername(username);\n const ticket = this.basicAuth(this.authentications.basicAuth.username, this.authentications.basicAuth.password);\n this.setTicket(ticket);\n promise.emit('success');\n this.emit('logged-in');\n resolve(ticket);\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 ee(promise); // jshint ignore:line\n return promise;\n }\n\n /**\n * logout Alfresco API\n * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n */\n logout(): AlfrescoApiClientPromise<void> {\n this.saveUsername('');\n\n const contentTypes = ['application/json'];\n const accepts = ['application/json'];\n\n const promise: any = new Promise<void>((resolve, reject) => {\n this.callApi('/app/logout', 'GET', {}, {}, {}, {}, {}, contentTypes, accepts).then(\n () => {\n this.invalidateSession();\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);\n return promise;\n }\n\n /**\n * Set the current Ticket\n * @param ticket Ticket value\n */\n setTicket(ticket: string) {\n this.authentications.basicAuth.ticket = ticket;\n this.authentications.basicAuth.password = null;\n this.config.ticketBpm = ticket;\n this.storage.setItem('ticket-BPM', ticket);\n this.ticket = ticket;\n }\n\n invalidateSession() {\n this.storage.removeItem('ticket-BPM');\n this.authentications.basicAuth.ticket = null;\n this.authentications.basicAuth.password = null;\n this.authentications.basicAuth.username = null;\n this.config.ticketBpm = null;\n this.ticket = null;\n }\n\n /**\n * Get the current Ticket\n * @returns ticket\n */\n getTicket(): string {\n return this.ticket;\n }\n\n /**\n * If the client is logged in return true\n * @returns `true` if 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":"processAuth.js","sourceRoot":"","sources":["processAuth.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 { AlfrescoApiClient, AlfrescoApiClientPromise } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { Storage } from '../storage';\nimport { HttpClient } from '../api-clients/http-client.interface';\nimport { isBrowser } from '../utils';\n\nexport class ProcessAuth extends AlfrescoApiClient {\n ticket: string;\n\n authentications: Authentication = {\n basicAuth: { ticket: '' },\n type: 'activiti'\n };\n\n constructor(config: AlfrescoApiConfig, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.storage = Storage.getInstance();\n this.storage.setDomainPrefix(config.domainPrefix);\n\n this.className = 'ProcessAuth';\n\n if (!isBrowser()) {\n this.defaultHeaders = {\n 'user-agent': 'alfresco-js-api'\n };\n }\n\n this.setConfig(config);\n }\n\n setConfig(config: AlfrescoApiConfig) {\n this.config = config;\n this.ticket = undefined;\n\n this.basePath = config.hostBpm + '/' + this.config.contextRootBpm; //Activiti Call\n\n if (this.config.ticketBpm) {\n this.setTicket(config.ticketBpm);\n } else if (this.storage.getItem('ticket-BPM')) {\n this.setTicket(this.storage.getItem('ticket-BPM'));\n }\n }\n\n changeHost() {\n this.basePath = this.config.hostBpm + '/' + this.config.contextRootBpm; //Activiti Call\n this.ticket = undefined;\n }\n\n changeCsrfConfig(disableCsrf: boolean) {\n this.config.disableCsrf = disableCsrf;\n }\n\n saveUsername(username: string) {\n if (this.storage.supportsStorage()) {\n this.storage.setItem('APS_USERNAME', username);\n }\n }\n\n /**\n * login Activiti 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): AlfrescoApiClientPromise<string> {\n this.authentications.basicAuth.username = username;\n this.authentications.basicAuth.password = password;\n\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Cache-Control': 'no-cache'\n };\n const formParams = {\n j_username: this.authentications.basicAuth.username,\n j_password: this.authentications.basicAuth.password,\n _spring_security_remember_me: true,\n submit: 'Login'\n };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise: any = new Promise<string>((resolve, reject) => {\n this.callApi('/app/authentication', 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n () => {\n this.saveUsername(username);\n const ticket = this.basicAuth(this.authentications.basicAuth.username, this.authentications.basicAuth.password);\n this.setTicket(ticket);\n promise.emit('success');\n this.emit('logged-in');\n resolve(ticket);\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 * logout Alfresco API\n * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n */\n logout(): AlfrescoApiClientPromise<void> {\n this.saveUsername('');\n\n const contentTypes = ['application/json'];\n const accepts = ['application/json'];\n\n const promise: any = new Promise<void>((resolve, reject) => {\n this.callApi('/app/logout', 'GET', {}, {}, {}, {}, {}, contentTypes, accepts).then(\n () => {\n this.invalidateSession();\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 return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n /**\n * Set the current Ticket\n * @param ticket Ticket value\n */\n setTicket(ticket: string) {\n this.authentications.basicAuth.ticket = ticket;\n this.authentications.basicAuth.password = null;\n this.config.ticketBpm = ticket;\n this.storage.setItem('ticket-BPM', ticket);\n this.ticket = ticket;\n }\n\n invalidateSession() {\n this.storage.removeItem('ticket-BPM');\n this.authentications.basicAuth.ticket = null;\n this.authentications.basicAuth.password = null;\n this.authentications.basicAuth.username = null;\n this.config.ticketBpm = null;\n this.ticket = null;\n }\n\n /**\n * Get the current Ticket\n * @returns ticket\n */\n getTicket(): string {\n return this.ticket;\n }\n\n /**\n * If the client is logged in return true\n * @returns `true` if 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"]}
|