@alfresco/js-api 9.1.0-16500060130 → 9.2.0-17208777081
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2015/package.json +1 -1
- package/esm2015/src/alfrescoApi.js.map +1 -1
- package/esm2015/src/api/content-rest-api/api/people.api.js +4 -0
- package/esm2015/src/api/content-rest-api/api/people.api.js.map +1 -1
- package/esm2015/src/authentication/oauth2Auth.js +2 -2
- package/esm2015/src/authentication/oauth2Auth.js.map +1 -1
- package/esm2015/src/storage.js +1 -1
- package/esm2015/src/storage.js.map +1 -1
- package/esm2015/src/superagentHttpClient.js +1 -1
- package/esm2015/src/superagentHttpClient.js.map +1 -1
- package/esm5/package.json +1 -1
- package/esm5/src/alfrescoApi.js.map +1 -1
- package/esm5/src/api/content-rest-api/api/people.api.js +4 -0
- package/esm5/src/api/content-rest-api/api/people.api.js.map +1 -1
- package/esm5/src/authentication/oauth2Auth.js +2 -2
- package/esm5/src/authentication/oauth2Auth.js.map +1 -1
- package/esm5/src/storage.js +1 -1
- package/esm5/src/storage.js.map +1 -1
- package/esm5/src/superagentHttpClient.js +1 -1
- package/esm5/src/superagentHttpClient.js.map +1 -1
- package/package.json +1 -1
- package/src/alfrescoApi.js.map +1 -1
- package/src/api/content-rest-api/api/people.api.js +4 -0
- package/src/api/content-rest-api/api/people.api.js.map +1 -1
- package/src/authentication/oauth2Auth.js +2 -2
- package/src/authentication/oauth2Auth.js.map +1 -1
- package/src/storage.js +1 -1
- package/src/storage.js.map +1 -1
- package/src/superagentHttpClient.js +1 -1
- package/src/superagentHttpClient.js.map +1 -1
- package/typings/package.json +1 -1
- package/typings/src/api/content-rest-api/api/people.api.d.ts +11 -0
@@ -133,6 +133,10 @@ class PeopleApi extends base_api_1.BaseApi {
|
|
133
133
|
contentTypes
|
134
134
|
});
|
135
135
|
}
|
136
|
+
getAvatarImageUrl(personId) {
|
137
|
+
const ticket = this.alfrescoApi.contentClient.getAlfTicket(undefined);
|
138
|
+
return `${this.apiClient.basePath}/people/${personId}/avatar?placeholder=true${ticket}`;
|
139
|
+
}
|
136
140
|
updatePerson(personId, personBodyUpdate, opts) {
|
137
141
|
(0, assert_1.throwIfNotDefined)(personId, 'personId');
|
138
142
|
(0, assert_1.throwIfNotDefined)(personBodyUpdate, 'personBodyUpdate');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"people.api.js","sourceRoot":"","sources":["people.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 { ClientBody, PasswordResetBody, PersonBodyCreate, PersonBodyUpdate, PersonEntry, PersonPaging } from '../model';\nimport { BaseApi } from './base.api';\nimport { throwIfNotDefined } from '../../../assert';\nimport { buildCollectionParam } from '../../../alfrescoApiClient';\nimport { ContentFieldsQuery, ContentIncludeQuery, ContentPagingQuery } from './types';\n\n/**\n * People service.\n */\nexport class PeopleApi extends BaseApi {\n /**\n * Create person\n *\n * **Note:** this endpoint is available in Alfresco 5.2 and newer versions.\n * **Note:** setting properties of type d:content and d:category are not supported.\n * @param personBodyCreate The person details.\n * @param opts Optional parameters\n * @returns Promise<PersonEntry>\n */\n createPerson(personBodyCreate: PersonBodyCreate, opts?: ContentFieldsQuery): Promise<PersonEntry> {\n throwIfNotDefined(personBodyCreate, 'personBodyCreate');\n\n const queryParams = {\n fields: buildCollectionParam(opts?.fields, 'csv')\n };\n\n return this.post({\n path: '/people',\n queryParams,\n bodyParam: personBodyCreate,\n returnType: PersonEntry\n });\n }\n\n /**\n * Delete avatar image\n *\n * **Note:** this endpoint is available in Alfresco 5.2.2 and newer versions.\n *\n * Deletes the avatar image related to person **personId**.\n * You must be the person or have admin rights to update a person's avatar.\n * You can use the -me- string in place of <personId> to specify the currently authenticated user.\n * @param personId The identifier of a person.\n * @returns Promise<{}>\n */\n deleteAvatarImage(personId: string): Promise<void> {\n throwIfNotDefined(personId, 'personId');\n\n const pathParams = {\n personId\n };\n\n return this.delete({\n path: '/people/{personId}/avatar',\n pathParams\n });\n }\n\n /**\n * Get avatar image\n *\n * **Note:** this endpoint is available in Alfresco 5.2.2 and newer versions.\n *\n * Gets the avatar image related to the person **personId**. If the person has no related avatar then\n * the **placeholder** query parameter can be optionally used to request a placeholder image to be returned.\n *\n * You can use the -me- string in place of <personId> to specify the currently authenticated user.\n * @param personId The identifier of a person.\n * @param opts Optional parameters\n * @param opts.attachment **true** enables a web browser to download the file as an attachment.\n * **false** means a web browser may preview the file in a new tab or window, but not download the file.\n * You can only set this parameter to **false** if the content type of the file is in the supported list;\n * for example, certain image files and PDF files.\n * If the content type is not supported for preview, then a value of **false** is ignored, and\n * the attachment will be returned in the response. (default to true)\n * @param opts.ifModifiedSince Only returns the content if it has been modified since the date provided.\n * Use the date format defined by HTTP. For example, Wed, 09 Mar 2016 16:56:34 GMT.\n * @param opts.placeholder If **true** and there is no avatar for this **personId**\n * then the placeholder image is returned, rather than a 404 response. (default to true)\n * @returns Promise<Blob>\n */\n getAvatarImage(personId: string, opts?: { attachment?: boolean; placeholder?: boolean; ifModifiedSince?: string }): Promise<Blob> {\n throwIfNotDefined(personId, 'personId');\n\n const pathParams = {\n personId\n };\n\n const queryParams = {\n attachment: opts?.attachment,\n placeholder: opts?.placeholder\n };\n\n const headerParams = {\n 'If-Modified-Since': opts?.ifModifiedSince\n };\n\n const accepts = ['application/octet-stream'];\n\n return this.get({\n path: '/people/{personId}/avatar',\n pathParams,\n queryParams,\n headerParams,\n accepts,\n returnType: 'blob'\n });\n }\n\n /**\n * Get a person\n *\n * You can use the `-me-` string in place of <personId> to specify the currently authenticated user.\n * @param personId The identifier of a person.\n * @param opts Optional parameters\n * @returns Promise<PersonEntry>\n */\n getPerson(personId: string, opts?: ContentFieldsQuery): Promise<PersonEntry> {\n throwIfNotDefined(personId, 'personId');\n\n const pathParams = {\n personId\n };\n\n const queryParams = {\n fields: buildCollectionParam(opts?.fields, 'csv')\n };\n\n return this.get({\n path: '/people/{personId}',\n pathParams,\n queryParams,\n returnType: PersonEntry\n });\n }\n\n /**\n * List people\n *\n * **Note:** this endpoint is available in Alfresco 5.2 and newer versions.\n *\n * List people.\n *\n * You can use the **include** parameter to return any additional information.\n *\n * The default sort order for the returned list is for people to be sorted by ascending id.\n * You can override the default by using the **orderBy** parameter.\n *\n * You can use any of the following fields to order the results:\n * - id\n * - firstName\n * - lastName\n * @param opts Optional parameters\n * @param opts.orderBy A string to control the order of the entities returned in a list. You can use the **orderBy** parameter to\n * sort the list by one or more fields.\n *\n * Each field has a default sort order, which is normally ascending order. Read the API method implementation notes\n * above to check if any fields used in this method have a descending default search order.\n *\n * To sort the entities in a specific order, you can use the **ASC** and **DESC** keywords for any field.\n * @returns Promise<PersonPaging>\n */\n listPeople(\n opts?: {\n orderBy?: string[];\n } & ContentPagingQuery &\n ContentIncludeQuery &\n ContentFieldsQuery\n ): Promise<PersonPaging> {\n const queryParams = {\n skipCount: opts?.skipCount,\n maxItems: opts?.maxItems,\n orderBy: buildCollectionParam(opts?.orderBy, 'csv'),\n include: buildCollectionParam(opts?.include, 'csv'),\n fields: buildCollectionParam(opts?.fields, 'csv')\n };\n\n return this.get({\n path: '/people',\n queryParams,\n returnType: PersonPaging\n });\n }\n\n /**\n * Request password reset\n *\n * **Note:** this endpoint is available in Alfresco 5.2.1 and newer versions.\n * **Note:** No authentication is required to call this endpoint.\n * @param personId The identifier of a person.\n * @param clientBody The client name to send email with app-specific url.\n * @returns Promise<{}>\n */\n requestPasswordReset(personId: string, clientBody: ClientBody): Promise<any> {\n throwIfNotDefined(personId, 'personId');\n throwIfNotDefined(clientBody, 'clientBody');\n\n const pathParams = {\n personId\n };\n\n return this.post({\n path: '/people/{personId}/request-password-reset',\n pathParams,\n bodyParam: clientBody\n });\n }\n\n /**\n * Reset password\n *\n * **Note:** this endpoint is available in Alfresco 5.2.1 and newer versions.\n * **Note:** No authentication is required to call this endpoint.\n * @param personId The identifier of a person.\n * @param passwordResetBody The reset password details\n * @returns Promise<{}>\n */\n resetPassword(personId: string, passwordResetBody: PasswordResetBody): Promise<any> {\n throwIfNotDefined(personId, 'personId');\n throwIfNotDefined(passwordResetBody, 'passwordResetBody');\n\n const pathParams = {\n personId\n };\n\n return this.post({\n path: '/people/{personId}/reset-password',\n pathParams,\n bodyParam: passwordResetBody\n });\n }\n\n /**\n * Update avatar image\n *\n * **Note:** this endpoint is available in Alfresco 5.2.2 and newer versions.\n *\n * Updates the avatar image related to the person **personId**.\n *\n * The request body should be the binary stream for the avatar image. The content type of the file\n * should be an image file. This will be used to generate an \\\"avatar\\\" thumbnail rendition.\n *\n * You must be the person or have admin rights to update a person's avatar.\n *\n * You can use the -me- string in place of <personId> to specify the currently authenticated user.\n * @param personId The identifier of a person.\n * @param contentBodyUpdate The binary content\n * @returns Promise<{}>\n */\n updateAvatarImage(personId: string, contentBodyUpdate: string): Promise<any> {\n throwIfNotDefined(personId, 'personId');\n throwIfNotDefined(contentBodyUpdate, 'contentBodyUpdate');\n\n const pathParams = {\n personId\n };\n\n const contentTypes = ['application/octet-stream'];\n\n return this.put({\n path: '/people/{personId}/avatar',\n pathParams,\n bodyParam: contentBodyUpdate,\n contentTypes\n });\n }\n\n /**\n * Update person\n *\n * **Note:** this endpoint is available in Alfresco 5.2 and newer versions.\n *\n * You can use the `-me-` string in place of <personId> to specify the currently authenticated user.\n * If applicable, the given person's login access can also be optionally disabled or re-enabled.\n * You must have admin rights to update a person — unless updating your own details.\n * If you are changing your password, as a non-admin user, then the existing password must also\n * be supplied (using the oldPassword field in addition to the new password value).\n *\n * Admin users cannot be disabled by setting enabled to false.\n * Non-admin users may not disable themselves.\n * **Note:** setting properties of type d:content and d:category are not supported.\n * @param personId The identifier of a person.\n * @param personBodyUpdate The person details.\n * @param opts Optional parameters\n * @returns Promise<PersonEntry>\n */\n updatePerson(personId: string, personBodyUpdate: PersonBodyUpdate, opts?: ContentFieldsQuery): Promise<PersonEntry> {\n throwIfNotDefined(personId, 'personId');\n throwIfNotDefined(personBodyUpdate, 'personBodyUpdate');\n\n const pathParams = {\n personId\n };\n\n const queryParams = {\n fields: buildCollectionParam(opts?.fields, 'csv')\n };\n\n return this.put({\n path: '/people/{personId}',\n pathParams,\n queryParams,\n bodyParam: personBodyUpdate,\n returnType: PersonEntry\n });\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"people.api.js","sourceRoot":"","sources":["people.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 { ClientBody, PasswordResetBody, PersonBodyCreate, PersonBodyUpdate, PersonEntry, PersonPaging } from '../model';\nimport { BaseApi } from './base.api';\nimport { throwIfNotDefined } from '../../../assert';\nimport { buildCollectionParam } from '../../../alfrescoApiClient';\nimport { ContentFieldsQuery, ContentIncludeQuery, ContentPagingQuery } from './types';\n\n/**\n * People service.\n */\nexport class PeopleApi extends BaseApi {\n /**\n * Create person\n *\n * **Note:** this endpoint is available in Alfresco 5.2 and newer versions.\n * **Note:** setting properties of type d:content and d:category are not supported.\n * @param personBodyCreate The person details.\n * @param opts Optional parameters\n * @returns Promise<PersonEntry>\n */\n createPerson(personBodyCreate: PersonBodyCreate, opts?: ContentFieldsQuery): Promise<PersonEntry> {\n throwIfNotDefined(personBodyCreate, 'personBodyCreate');\n\n const queryParams = {\n fields: buildCollectionParam(opts?.fields, 'csv')\n };\n\n return this.post({\n path: '/people',\n queryParams,\n bodyParam: personBodyCreate,\n returnType: PersonEntry\n });\n }\n\n /**\n * Delete avatar image\n *\n * **Note:** this endpoint is available in Alfresco 5.2.2 and newer versions.\n *\n * Deletes the avatar image related to person **personId**.\n * You must be the person or have admin rights to update a person's avatar.\n * You can use the -me- string in place of <personId> to specify the currently authenticated user.\n * @param personId The identifier of a person.\n * @returns Promise<{}>\n */\n deleteAvatarImage(personId: string): Promise<void> {\n throwIfNotDefined(personId, 'personId');\n\n const pathParams = {\n personId\n };\n\n return this.delete({\n path: '/people/{personId}/avatar',\n pathParams\n });\n }\n\n /**\n * Get avatar image\n *\n * **Note:** this endpoint is available in Alfresco 5.2.2 and newer versions.\n *\n * Gets the avatar image related to the person **personId**. If the person has no related avatar then\n * the **placeholder** query parameter can be optionally used to request a placeholder image to be returned.\n *\n * You can use the -me- string in place of <personId> to specify the currently authenticated user.\n * @param personId The identifier of a person.\n * @param opts Optional parameters\n * @param opts.attachment **true** enables a web browser to download the file as an attachment.\n * **false** means a web browser may preview the file in a new tab or window, but not download the file.\n * You can only set this parameter to **false** if the content type of the file is in the supported list;\n * for example, certain image files and PDF files.\n * If the content type is not supported for preview, then a value of **false** is ignored, and\n * the attachment will be returned in the response. (default to true)\n * @param opts.ifModifiedSince Only returns the content if it has been modified since the date provided.\n * Use the date format defined by HTTP. For example, Wed, 09 Mar 2016 16:56:34 GMT.\n * @param opts.placeholder If **true** and there is no avatar for this **personId**\n * then the placeholder image is returned, rather than a 404 response. (default to true)\n * @returns Promise<Blob>\n */\n getAvatarImage(personId: string, opts?: { attachment?: boolean; placeholder?: boolean; ifModifiedSince?: string }): Promise<Blob> {\n throwIfNotDefined(personId, 'personId');\n\n const pathParams = {\n personId\n };\n\n const queryParams = {\n attachment: opts?.attachment,\n placeholder: opts?.placeholder\n };\n\n const headerParams = {\n 'If-Modified-Since': opts?.ifModifiedSince\n };\n\n const accepts = ['application/octet-stream'];\n\n return this.get({\n path: '/people/{personId}/avatar',\n pathParams,\n queryParams,\n headerParams,\n accepts,\n returnType: 'blob'\n });\n }\n\n /**\n * Get a person\n *\n * You can use the `-me-` string in place of <personId> to specify the currently authenticated user.\n * @param personId The identifier of a person.\n * @param opts Optional parameters\n * @returns Promise<PersonEntry>\n */\n getPerson(personId: string, opts?: ContentFieldsQuery): Promise<PersonEntry> {\n throwIfNotDefined(personId, 'personId');\n\n const pathParams = {\n personId\n };\n\n const queryParams = {\n fields: buildCollectionParam(opts?.fields, 'csv')\n };\n\n return this.get({\n path: '/people/{personId}',\n pathParams,\n queryParams,\n returnType: PersonEntry\n });\n }\n\n /**\n * List people\n *\n * **Note:** this endpoint is available in Alfresco 5.2 and newer versions.\n *\n * List people.\n *\n * You can use the **include** parameter to return any additional information.\n *\n * The default sort order for the returned list is for people to be sorted by ascending id.\n * You can override the default by using the **orderBy** parameter.\n *\n * You can use any of the following fields to order the results:\n * - id\n * - firstName\n * - lastName\n * @param opts Optional parameters\n * @param opts.orderBy A string to control the order of the entities returned in a list. You can use the **orderBy** parameter to\n * sort the list by one or more fields.\n *\n * Each field has a default sort order, which is normally ascending order. Read the API method implementation notes\n * above to check if any fields used in this method have a descending default search order.\n *\n * To sort the entities in a specific order, you can use the **ASC** and **DESC** keywords for any field.\n * @returns Promise<PersonPaging>\n */\n listPeople(\n opts?: {\n orderBy?: string[];\n } & ContentPagingQuery &\n ContentIncludeQuery &\n ContentFieldsQuery\n ): Promise<PersonPaging> {\n const queryParams = {\n skipCount: opts?.skipCount,\n maxItems: opts?.maxItems,\n orderBy: buildCollectionParam(opts?.orderBy, 'csv'),\n include: buildCollectionParam(opts?.include, 'csv'),\n fields: buildCollectionParam(opts?.fields, 'csv')\n };\n\n return this.get({\n path: '/people',\n queryParams,\n returnType: PersonPaging\n });\n }\n\n /**\n * Request password reset\n *\n * **Note:** this endpoint is available in Alfresco 5.2.1 and newer versions.\n * **Note:** No authentication is required to call this endpoint.\n * @param personId The identifier of a person.\n * @param clientBody The client name to send email with app-specific url.\n * @returns Promise<{}>\n */\n requestPasswordReset(personId: string, clientBody: ClientBody): Promise<any> {\n throwIfNotDefined(personId, 'personId');\n throwIfNotDefined(clientBody, 'clientBody');\n\n const pathParams = {\n personId\n };\n\n return this.post({\n path: '/people/{personId}/request-password-reset',\n pathParams,\n bodyParam: clientBody\n });\n }\n\n /**\n * Reset password\n *\n * **Note:** this endpoint is available in Alfresco 5.2.1 and newer versions.\n * **Note:** No authentication is required to call this endpoint.\n * @param personId The identifier of a person.\n * @param passwordResetBody The reset password details\n * @returns Promise<{}>\n */\n resetPassword(personId: string, passwordResetBody: PasswordResetBody): Promise<any> {\n throwIfNotDefined(personId, 'personId');\n throwIfNotDefined(passwordResetBody, 'passwordResetBody');\n\n const pathParams = {\n personId\n };\n\n return this.post({\n path: '/people/{personId}/reset-password',\n pathParams,\n bodyParam: passwordResetBody\n });\n }\n\n /**\n * Update avatar image\n *\n * **Note:** this endpoint is available in Alfresco 5.2.2 and newer versions.\n *\n * Updates the avatar image related to the person **personId**.\n *\n * The request body should be the binary stream for the avatar image. The content type of the file\n * should be an image file. This will be used to generate an \\\"avatar\\\" thumbnail rendition.\n *\n * You must be the person or have admin rights to update a person's avatar.\n *\n * You can use the -me- string in place of <personId> to specify the currently authenticated user.\n * @param personId The identifier of a person.\n * @param contentBodyUpdate The binary content\n * @returns Promise<{}>\n */\n updateAvatarImage(personId: string, contentBodyUpdate: string): Promise<any> {\n throwIfNotDefined(personId, 'personId');\n throwIfNotDefined(contentBodyUpdate, 'contentBodyUpdate');\n\n const pathParams = {\n personId\n };\n\n const contentTypes = ['application/octet-stream'];\n\n return this.put({\n path: '/people/{personId}/avatar',\n pathParams,\n bodyParam: contentBodyUpdate,\n contentTypes\n });\n }\n\n /**\n * Get avatar image URL\n *\n * Builds and returns the direct URL to fetch the avatar image for the person `personId`.\n * This includes the current authentication ticket in the URL to allow secure access.\n *\n * You can use the `-me-` string in place of <personId> to specify the currently authenticated user.\n * @param personId The identifier of a person.\n * @returns A string URL to the user's avatar image.\n */\n getAvatarImageUrl(personId: string): string {\n const ticket = this.alfrescoApi.contentClient.getAlfTicket(undefined);\n return `${this.apiClient.basePath}/people/${personId}/avatar?placeholder=true${ticket}`;\n }\n\n /**\n * Update person\n *\n * **Note:** this endpoint is available in Alfresco 5.2 and newer versions.\n *\n * You can use the `-me-` string in place of <personId> to specify the currently authenticated user.\n * If applicable, the given person's login access can also be optionally disabled or re-enabled.\n * You must have admin rights to update a person — unless updating your own details.\n * If you are changing your password, as a non-admin user, then the existing password must also\n * be supplied (using the oldPassword field in addition to the new password value).\n *\n * Admin users cannot be disabled by setting enabled to false.\n * Non-admin users may not disable themselves.\n * **Note:** setting properties of type d:content and d:category are not supported.\n * @param personId The identifier of a person.\n * @param personBodyUpdate The person details.\n * @param opts Optional parameters\n * @returns Promise<PersonEntry>\n */\n updatePerson(personId: string, personBodyUpdate: PersonBodyUpdate, opts?: ContentFieldsQuery): Promise<PersonEntry> {\n throwIfNotDefined(personId, 'personId');\n throwIfNotDefined(personBodyUpdate, 'personBodyUpdate');\n\n const pathParams = {\n personId\n };\n\n const queryParams = {\n fields: buildCollectionParam(opts?.fields, 'csv')\n };\n\n return this.put({\n path: '/people/{personId}',\n pathParams,\n queryParams,\n bodyParam: personBodyUpdate,\n returnType: PersonEntry\n });\n }\n}\n"]}
|
@@ -496,7 +496,7 @@ class Oauth2Auth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
496
496
|
try {
|
497
497
|
return btoa(stringToConvert);
|
498
498
|
}
|
499
|
-
catch (
|
499
|
+
catch (_a) {
|
500
500
|
return Buffer.from(stringToConvert).toString('base64');
|
501
501
|
}
|
502
502
|
}
|
@@ -563,7 +563,7 @@ class Oauth2Auth extends alfrescoApiClient_1.AlfrescoApiClient {
|
|
563
563
|
this.config.ticketEcm = ticketEntry.entry.id;
|
564
564
|
this.emit('ticket_exchanged');
|
565
565
|
}
|
566
|
-
catch (
|
566
|
+
catch (_a) {
|
567
567
|
}
|
568
568
|
}));
|
569
569
|
}
|
@@ -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 (err) {\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 (e) {\n // continue regardless of error\n }\n });\n }\n}\n"]}
|
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"]}
|
package/src/storage.js
CHANGED
package/src/storage.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["storage.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,MAAa,OAAO;
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["storage.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,MAAa,OAAO;IAMhB;QACI,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,eAAe;QACX,IAAI,CAAC;YACD,OAAO,cAAc,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC;QACpE,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,eAAe,CAAC,MAAW;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,OAAY;QACnB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,KAAU;QAC3B,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED,UAAU,CAAC,GAAW;QAClB,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAW;QACf,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;CACJ;AApDD,0BAoDC","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\nexport class Storage {\n private static instance: Storage;\n\n _storage: any;\n prefix: string;\n\n private constructor() {\n if (this.supportsStorage()) {\n this._storage = window.localStorage;\n }\n }\n\n public static getInstance() {\n if (!Storage.instance) {\n Storage.instance = new Storage();\n }\n return Storage.instance;\n }\n\n supportsStorage() {\n try {\n return 'localStorage' in window && window.localStorage !== null;\n } catch {\n return false;\n }\n }\n\n setDomainPrefix(prefix: any) {\n this.prefix = prefix ? prefix + '_' : '';\n }\n\n setStorage(storage: any) {\n this._storage = storage;\n }\n\n setItem(key: string, value: any) {\n if (this.supportsStorage()) {\n this._storage.setItem(this.prefix + key, value);\n }\n }\n\n removeItem(key: string) {\n if (this.supportsStorage()) {\n this._storage.removeItem(this.prefix + key);\n }\n }\n\n getItem(key: string) {\n if (this.supportsStorage()) {\n return this._storage.getItem(this.prefix + key);\n }\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"superagentHttpClient.js","sourceRoot":"","sources":["superagentHttpClient.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, { Emitter } from 'event-emitter';\nimport superagent, { Response, SuperAgentRequest } from 'superagent';\nimport { Authentication } from './authentication/authentication';\nimport { RequestOptions, HttpClient, SecurityOptions, Emitters } from './api-clients/http-client.interface';\nimport { Oauth2 } from './authentication/oauth2';\nimport { BasicAuth } from './authentication/basicAuth';\nimport { isBrowser, paramToString } from './utils';\n\ndeclare const Blob: any;\ndeclare const Buffer: any;\n\nconst isProgressEvent = (event: ProgressEvent | unknown): event is ProgressEvent => (event as ProgressEvent)?.lengthComputable;\n\nexport class SuperagentHttpClient implements HttpClient {\n /**\n * The default HTTP timeout for all API calls.\n */\n timeout: number | { deadline?: number; response?: number } = undefined;\n\n post<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'POST' }, securityOptions, emitters);\n }\n\n put<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'PUT' }, securityOptions, emitters);\n }\n\n get<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'GET' }, securityOptions, emitters);\n }\n\n delete<T = void>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'DELETE' }, securityOptions, emitters);\n }\n\n request<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n const { httpMethod, queryParams, headerParams, formParams, bodyParam, contentType, accept, responseType, returnType } = options;\n const { eventEmitter, apiClientEmitter } = emitters;\n\n let request = this.buildRequest(\n httpMethod,\n url,\n queryParams,\n headerParams,\n formParams,\n bodyParam,\n contentType,\n accept,\n responseType,\n eventEmitter,\n returnType,\n securityOptions\n );\n\n if (returnType === 'Binary') {\n request = request.buffer(true).parse(superagent.parse['application/octet-stream']);\n }\n\n const promise: any = new Promise((resolve, reject) => {\n request.on('abort', () => {\n eventEmitter.emit('abort');\n });\n request.end((error: any, response: Response) => {\n if (error) {\n apiClientEmitter.emit('error', error);\n eventEmitter.emit('error', error);\n\n if (error.status === 401) {\n apiClientEmitter.emit('unauthorized');\n eventEmitter.emit('unauthorized');\n }\n\n if (response?.text) {\n error = error || {};\n reject(Object.assign(error, { message: response.text }));\n } else {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n }\n } else {\n if (securityOptions.isBpmRequest) {\n const hasSetCookie = Object.prototype.hasOwnProperty.call(response.header, 'set-cookie');\n if (response.header && hasSetCookie) {\n // mutate the passed value from AlfrescoApiClient class for backward compatibility\n securityOptions.authentications.cookie = response.header['set-cookie'][0];\n }\n }\n let data = {};\n if (response.type === 'text/html') {\n data = SuperagentHttpClient.deserialize(response);\n } else {\n data = SuperagentHttpClient.deserialize(response, returnType);\n }\n\n eventEmitter.emit('success', data);\n resolve(data);\n }\n });\n });\n\n promise.abort = function () {\n request.abort();\n return this;\n };\n\n return promise;\n }\n\n private buildRequest(\n httpMethod: string,\n url: string,\n queryParams: { [key: string]: any },\n headerParams: { [key: string]: any },\n formParams: { [key: string]: any },\n // eslint-disable-next-line @typescript-eslint/ban-types\n bodyParam: string | Object,\n contentType: string,\n accept: string,\n responseType: string,\n eventEmitter: ee.Emitter,\n returnType: string,\n securityOptions: SecurityOptions\n ) {\n const request = superagent(httpMethod, url);\n\n const { isBpmRequest, authentications, defaultHeaders = {}, enableCsrf, withCredentials = false } = securityOptions;\n\n // apply authentications\n this.applyAuthToRequest(request, authentications);\n\n // set query parameters\n request.query(SuperagentHttpClient.normalizeParams(queryParams));\n\n // set header parameters\n request.set(defaultHeaders).set(SuperagentHttpClient.normalizeParams(headerParams));\n\n if (isBpmRequest && enableCsrf) {\n this.setCsrfToken(request);\n }\n\n if (withCredentials) {\n request.withCredentials();\n }\n\n // add cookie for activiti\n if (isBpmRequest) {\n request.withCredentials();\n if (securityOptions.authentications.cookie) {\n if (!isBrowser()) {\n request.set('Cookie', securityOptions.authentications.cookie);\n }\n }\n }\n\n // set request timeout\n request.timeout(this.timeout);\n\n if (contentType && contentType !== 'multipart/form-data') {\n request.type(contentType);\n } else if (!(request as any).header['Content-Type'] && contentType !== 'multipart/form-data') {\n request.type('application/json');\n }\n\n if (contentType === 'application/x-www-form-urlencoded') {\n request.send(SuperagentHttpClient.normalizeParams(formParams)).on('progress', (event: any) => {\n this.progress(event, eventEmitter);\n });\n } else if (contentType === 'multipart/form-data') {\n const _formParams = SuperagentHttpClient.normalizeParams(formParams);\n for (const key in _formParams) {\n if (Object.prototype.hasOwnProperty.call(_formParams, key)) {\n if (SuperagentHttpClient.isFileParam(_formParams[key])) {\n // file field\n request.attach(key, _formParams[key]).on('progress', (event: ProgressEvent) => {\n // jshint ignore:line\n this.progress(event, eventEmitter);\n });\n } else {\n request.field(key, _formParams[key]).on('progress', (event: ProgressEvent) => {\n // jshint ignore:line\n this.progress(event, eventEmitter);\n });\n }\n }\n }\n } else if (bodyParam) {\n request.send(bodyParam).on('progress', (event: any) => {\n this.progress(event, eventEmitter);\n });\n }\n\n if (accept) {\n request.accept(accept);\n }\n\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob') {\n request.responseType('blob');\n } else if (returnType === 'String') {\n request.responseType('string');\n }\n\n return request;\n }\n\n setCsrfToken(request: SuperAgentRequest): void {\n const token = SuperagentHttpClient.createCSRFToken();\n request.set('X-CSRF-TOKEN', token);\n\n if (!isBrowser()) {\n request.set('Cookie', 'CSRF-TOKEN=' + token + ';path=/');\n }\n\n try {\n document.cookie = 'CSRF-TOKEN=' + token + ';path=/';\n } catch (err) {\n /* continue regardless of error */\n }\n }\n\n /**\n * Applies authentication headers to the request.\n * @param request The request object created by a <code>superagent()</code> call.\n * @param authentications authentications\n */\n private applyAuthToRequest(request: SuperAgentRequest, authentications: Authentication) {\n if (authentications) {\n switch (authentications.type) {\n case 'basic': {\n const basicAuth: BasicAuth = authentications.basicAuth;\n if (basicAuth.username || basicAuth.password) {\n request.auth(basicAuth.username || '', basicAuth.password || '');\n }\n break;\n }\n case 'activiti': {\n if (authentications.basicAuth.ticket) {\n request.set({ Authorization: authentications.basicAuth.ticket });\n }\n break;\n }\n case 'oauth2': {\n const oauth2: Oauth2 = authentications.oauth2;\n if (oauth2.accessToken) {\n request.set({ Authorization: 'Bearer ' + oauth2.accessToken });\n }\n break;\n }\n default:\n throw new Error('Unknown authentication type: ' + authentications.type);\n }\n }\n }\n\n private progress(event: ProgressEvent | unknown, eventEmitter: Emitter): void {\n if (isProgressEvent(event)) {\n const percent = Math.round((event.loaded / event.total) * 100);\n\n const progress = {\n total: event.total,\n loaded: event.loaded,\n percent\n };\n\n eventEmitter.emit('progress', progress);\n }\n }\n\n private static createCSRFToken(a?: any): string {\n return a\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n : ([1e16] + (1e16).toString()).replace(/[01]/g, SuperagentHttpClient.createCSRFToken);\n }\n\n /**\n * Deserializes an HTTP response body into a value of the specified type.\n * @param response A SuperAgent response object.\n * @param returnType The type to return. Pass a string for simple types\n * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To\n * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:\n * all properties on <code>data<code> will be converted to this type.\n * @returns A value of the specified type.\n */\n private static deserialize(response: Response, returnType?: any): any {\n if (response === null) {\n return null;\n }\n\n let data = response.body;\n\n if (data === null) {\n data = response.text;\n }\n\n if (returnType) {\n if (returnType === 'blob' && isBrowser()) {\n data = new Blob([data], { type: response.header['content-type'] });\n } else if (returnType === 'blob' && !isBrowser()) {\n data = new Buffer.from(data, 'binary');\n } else if (Array.isArray(data)) {\n data = data.map((element) => new returnType(element));\n } else {\n data = new returnType(data);\n }\n }\n\n return data;\n }\n\n /**\n * Normalizes parameter values:\n * <ul>\n * <li>remove nils</li>\n * <li>keep files and arrays</li>\n * <li>format to string with `paramToString` for other cases</li>\n * </ul>\n * @param params The parameters as object properties.\n * @returns normalized parameters.\n */\n private static normalizeParams(params: { [key: string]: any }): { [key: string]: any } {\n const newParams: { [key: string]: any } = {};\n\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key) && params[key] !== undefined && params[key] !== null) {\n const value = params[key];\n if (SuperagentHttpClient.isFileParam(value) || Array.isArray(value)) {\n newParams[key] = value;\n } else {\n newParams[key] = paramToString(value);\n }\n }\n }\n return newParams;\n }\n\n /**\n * Checks whether the given parameter value represents file-like content.\n * @param param The parameter to check.\n * @returns <code>true</code> if <code>param</code> represents a file.\n */\n private static isFileParam(param: any): boolean {\n // Buffer in Node.js\n if (typeof Buffer === 'function' && (param instanceof Buffer || param.path)) {\n return true;\n }\n // Blob in browser\n if (typeof Blob === 'function' && param instanceof Blob) {\n return true;\n }\n // File in browser (it seems File object is also instance of Blob, but keep this for safe)\n if (typeof File === 'function' && param instanceof File) {\n return true;\n }\n // Safari fix\n if (typeof File === 'object' && param instanceof File) {\n return true;\n }\n\n return false;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"superagentHttpClient.js","sourceRoot":"","sources":["superagentHttpClient.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, { Emitter } from 'event-emitter';\nimport superagent, { Response, SuperAgentRequest } from 'superagent';\nimport { Authentication } from './authentication/authentication';\nimport { RequestOptions, HttpClient, SecurityOptions, Emitters } from './api-clients/http-client.interface';\nimport { Oauth2 } from './authentication/oauth2';\nimport { BasicAuth } from './authentication/basicAuth';\nimport { isBrowser, paramToString } from './utils';\n\ndeclare const Blob: any;\ndeclare const Buffer: any;\n\nconst isProgressEvent = (event: ProgressEvent | unknown): event is ProgressEvent => (event as ProgressEvent)?.lengthComputable;\n\nexport class SuperagentHttpClient implements HttpClient {\n /**\n * The default HTTP timeout for all API calls.\n */\n timeout: number | { deadline?: number; response?: number } = undefined;\n\n post<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'POST' }, securityOptions, emitters);\n }\n\n put<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'PUT' }, securityOptions, emitters);\n }\n\n get<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'GET' }, securityOptions, emitters);\n }\n\n delete<T = void>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'DELETE' }, securityOptions, emitters);\n }\n\n request<T = any>(url: string, options: RequestOptions, securityOptions: SecurityOptions, emitters: Emitters): Promise<T> {\n const { httpMethod, queryParams, headerParams, formParams, bodyParam, contentType, accept, responseType, returnType } = options;\n const { eventEmitter, apiClientEmitter } = emitters;\n\n let request = this.buildRequest(\n httpMethod,\n url,\n queryParams,\n headerParams,\n formParams,\n bodyParam,\n contentType,\n accept,\n responseType,\n eventEmitter,\n returnType,\n securityOptions\n );\n\n if (returnType === 'Binary') {\n request = request.buffer(true).parse(superagent.parse['application/octet-stream']);\n }\n\n const promise: any = new Promise((resolve, reject) => {\n request.on('abort', () => {\n eventEmitter.emit('abort');\n });\n request.end((error: any, response: Response) => {\n if (error) {\n apiClientEmitter.emit('error', error);\n eventEmitter.emit('error', error);\n\n if (error.status === 401) {\n apiClientEmitter.emit('unauthorized');\n eventEmitter.emit('unauthorized');\n }\n\n if (response?.text) {\n error = error || {};\n reject(Object.assign(error, { message: response.text }));\n } else {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject({ error });\n }\n } else {\n if (securityOptions.isBpmRequest) {\n const hasSetCookie = Object.prototype.hasOwnProperty.call(response.header, 'set-cookie');\n if (response.header && hasSetCookie) {\n // mutate the passed value from AlfrescoApiClient class for backward compatibility\n securityOptions.authentications.cookie = response.header['set-cookie'][0];\n }\n }\n let data = {};\n if (response.type === 'text/html') {\n data = SuperagentHttpClient.deserialize(response);\n } else {\n data = SuperagentHttpClient.deserialize(response, returnType);\n }\n\n eventEmitter.emit('success', data);\n resolve(data);\n }\n });\n });\n\n promise.abort = function () {\n request.abort();\n return this;\n };\n\n return promise;\n }\n\n private buildRequest(\n httpMethod: string,\n url: string,\n queryParams: { [key: string]: any },\n headerParams: { [key: string]: any },\n formParams: { [key: string]: any },\n // eslint-disable-next-line @typescript-eslint/ban-types\n bodyParam: string | Object,\n contentType: string,\n accept: string,\n responseType: string,\n eventEmitter: ee.Emitter,\n returnType: string,\n securityOptions: SecurityOptions\n ) {\n const request = superagent(httpMethod, url);\n\n const { isBpmRequest, authentications, defaultHeaders = {}, enableCsrf, withCredentials = false } = securityOptions;\n\n // apply authentications\n this.applyAuthToRequest(request, authentications);\n\n // set query parameters\n request.query(SuperagentHttpClient.normalizeParams(queryParams));\n\n // set header parameters\n request.set(defaultHeaders).set(SuperagentHttpClient.normalizeParams(headerParams));\n\n if (isBpmRequest && enableCsrf) {\n this.setCsrfToken(request);\n }\n\n if (withCredentials) {\n request.withCredentials();\n }\n\n // add cookie for activiti\n if (isBpmRequest) {\n request.withCredentials();\n if (securityOptions.authentications.cookie) {\n if (!isBrowser()) {\n request.set('Cookie', securityOptions.authentications.cookie);\n }\n }\n }\n\n // set request timeout\n request.timeout(this.timeout);\n\n if (contentType && contentType !== 'multipart/form-data') {\n request.type(contentType);\n } else if (!(request as any).header['Content-Type'] && contentType !== 'multipart/form-data') {\n request.type('application/json');\n }\n\n if (contentType === 'application/x-www-form-urlencoded') {\n request.send(SuperagentHttpClient.normalizeParams(formParams)).on('progress', (event: any) => {\n this.progress(event, eventEmitter);\n });\n } else if (contentType === 'multipart/form-data') {\n const _formParams = SuperagentHttpClient.normalizeParams(formParams);\n for (const key in _formParams) {\n if (Object.prototype.hasOwnProperty.call(_formParams, key)) {\n if (SuperagentHttpClient.isFileParam(_formParams[key])) {\n // file field\n request.attach(key, _formParams[key]).on('progress', (event: ProgressEvent) => {\n // jshint ignore:line\n this.progress(event, eventEmitter);\n });\n } else {\n request.field(key, _formParams[key]).on('progress', (event: ProgressEvent) => {\n // jshint ignore:line\n this.progress(event, eventEmitter);\n });\n }\n }\n }\n } else if (bodyParam) {\n request.send(bodyParam).on('progress', (event: any) => {\n this.progress(event, eventEmitter);\n });\n }\n\n if (accept) {\n request.accept(accept);\n }\n\n if (returnType === 'blob' || returnType === 'Blob' || responseType === 'blob' || responseType === 'Blob') {\n request.responseType('blob');\n } else if (returnType === 'String') {\n request.responseType('string');\n }\n\n return request;\n }\n\n setCsrfToken(request: SuperAgentRequest): void {\n const token = SuperagentHttpClient.createCSRFToken();\n request.set('X-CSRF-TOKEN', token);\n\n if (!isBrowser()) {\n request.set('Cookie', 'CSRF-TOKEN=' + token + ';path=/');\n }\n\n try {\n document.cookie = 'CSRF-TOKEN=' + token + ';path=/';\n } catch {\n /* continue regardless of error */\n }\n }\n\n /**\n * Applies authentication headers to the request.\n * @param request The request object created by a <code>superagent()</code> call.\n * @param authentications authentications\n */\n private applyAuthToRequest(request: SuperAgentRequest, authentications: Authentication) {\n if (authentications) {\n switch (authentications.type) {\n case 'basic': {\n const basicAuth: BasicAuth = authentications.basicAuth;\n if (basicAuth.username || basicAuth.password) {\n request.auth(basicAuth.username || '', basicAuth.password || '');\n }\n break;\n }\n case 'activiti': {\n if (authentications.basicAuth.ticket) {\n request.set({ Authorization: authentications.basicAuth.ticket });\n }\n break;\n }\n case 'oauth2': {\n const oauth2: Oauth2 = authentications.oauth2;\n if (oauth2.accessToken) {\n request.set({ Authorization: 'Bearer ' + oauth2.accessToken });\n }\n break;\n }\n default:\n throw new Error('Unknown authentication type: ' + authentications.type);\n }\n }\n }\n\n private progress(event: ProgressEvent | unknown, eventEmitter: Emitter): void {\n if (isProgressEvent(event)) {\n const percent = Math.round((event.loaded / event.total) * 100);\n\n const progress = {\n total: event.total,\n loaded: event.loaded,\n percent\n };\n\n eventEmitter.emit('progress', progress);\n }\n }\n\n private static createCSRFToken(a?: any): string {\n return a\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n : ([1e16] + (1e16).toString()).replace(/[01]/g, SuperagentHttpClient.createCSRFToken);\n }\n\n /**\n * Deserializes an HTTP response body into a value of the specified type.\n * @param response A SuperAgent response object.\n * @param returnType The type to return. Pass a string for simple types\n * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To\n * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:\n * all properties on <code>data<code> will be converted to this type.\n * @returns A value of the specified type.\n */\n private static deserialize(response: Response, returnType?: any): any {\n if (response === null) {\n return null;\n }\n\n let data = response.body;\n\n if (data === null) {\n data = response.text;\n }\n\n if (returnType) {\n if (returnType === 'blob' && isBrowser()) {\n data = new Blob([data], { type: response.header['content-type'] });\n } else if (returnType === 'blob' && !isBrowser()) {\n data = new Buffer.from(data, 'binary');\n } else if (Array.isArray(data)) {\n data = data.map((element) => new returnType(element));\n } else {\n data = new returnType(data);\n }\n }\n\n return data;\n }\n\n /**\n * Normalizes parameter values:\n * <ul>\n * <li>remove nils</li>\n * <li>keep files and arrays</li>\n * <li>format to string with `paramToString` for other cases</li>\n * </ul>\n * @param params The parameters as object properties.\n * @returns normalized parameters.\n */\n private static normalizeParams(params: { [key: string]: any }): { [key: string]: any } {\n const newParams: { [key: string]: any } = {};\n\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key) && params[key] !== undefined && params[key] !== null) {\n const value = params[key];\n if (SuperagentHttpClient.isFileParam(value) || Array.isArray(value)) {\n newParams[key] = value;\n } else {\n newParams[key] = paramToString(value);\n }\n }\n }\n return newParams;\n }\n\n /**\n * Checks whether the given parameter value represents file-like content.\n * @param param The parameter to check.\n * @returns <code>true</code> if <code>param</code> represents a file.\n */\n private static isFileParam(param: any): boolean {\n // Buffer in Node.js\n if (typeof Buffer === 'function' && (param instanceof Buffer || param.path)) {\n return true;\n }\n // Blob in browser\n if (typeof Blob === 'function' && param instanceof Blob) {\n return true;\n }\n // File in browser (it seems File object is also instance of Blob, but keep this for safe)\n if (typeof File === 'function' && param instanceof File) {\n return true;\n }\n // Safari fix\n if (typeof File === 'object' && param instanceof File) {\n return true;\n }\n\n return false;\n }\n}\n"]}
|
package/typings/package.json
CHANGED
@@ -147,6 +147,17 @@ export declare class PeopleApi extends BaseApi {
|
|
147
147
|
* @returns Promise<{}>
|
148
148
|
*/
|
149
149
|
updateAvatarImage(personId: string, contentBodyUpdate: string): Promise<any>;
|
150
|
+
/**
|
151
|
+
* Get avatar image URL
|
152
|
+
*
|
153
|
+
* Builds and returns the direct URL to fetch the avatar image for the person `personId`.
|
154
|
+
* This includes the current authentication ticket in the URL to allow secure access.
|
155
|
+
*
|
156
|
+
* You can use the `-me-` string in place of <personId> to specify the currently authenticated user.
|
157
|
+
* @param personId The identifier of a person.
|
158
|
+
* @returns A string URL to the user's avatar image.
|
159
|
+
*/
|
160
|
+
getAvatarImageUrl(personId: string): string;
|
150
161
|
/**
|
151
162
|
* Update person
|
152
163
|
*
|