@alfresco/js-api 9.3.0 → 9.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/esm2015/index.js +1 -0
  2. package/esm2015/index.js.map +1 -1
  3. package/esm2015/package.json +3 -3
  4. package/esm2015/src/alfrescoApi.js.map +1 -1
  5. package/esm2015/src/alfrescoApiClient.js +2 -2
  6. package/esm2015/src/alfrescoApiClient.js.map +1 -1
  7. package/esm2015/src/api/activiti-rest-api/api/about.api.js.map +1 -1
  8. package/esm2015/src/api/activiti-rest-api/api/index.js +1 -0
  9. package/esm2015/src/api/activiti-rest-api/api/index.js.map +1 -1
  10. package/esm2015/src/api/activiti-rest-api/api/integrationSSO.api.js +29 -0
  11. package/esm2015/src/api/activiti-rest-api/api/integrationSSO.api.js.map +1 -0
  12. package/esm2015/src/api/activiti-rest-api/model/alfrescoEndpointRepresentation.js.map +1 -1
  13. package/esm2015/src/api/activiti-rest-api/model/formFieldRepresentation.js.map +1 -1
  14. package/esm2015/src/api/activiti-rest-api/model/index.js +1 -0
  15. package/esm2015/src/api/activiti-rest-api/model/index.js.map +1 -1
  16. package/esm2015/src/api/activiti-rest-api/model/ssoUserAccountCredentialsRepresentation.js +26 -0
  17. package/esm2015/src/api/activiti-rest-api/model/ssoUserAccountCredentialsRepresentation.js.map +1 -0
  18. package/esm2015/src/api/content-custom-api/api/upload.api.js +1 -52
  19. package/esm2015/src/api/content-custom-api/api/upload.api.js.map +1 -1
  20. package/esm2015/src/api/content-rest-api/model/aiAnswerObjectReference.js.map +1 -1
  21. package/esm2015/src/api/hxi-connector-api/model/prediction.js +5 -6
  22. package/esm2015/src/api/hxi-connector-api/model/prediction.js.map +1 -1
  23. package/esm2015/src/api-clients/http-client.interface.js.map +1 -1
  24. package/esm2015/src/authentication/oauth2Auth.js +2 -6
  25. package/esm2015/src/authentication/oauth2Auth.js.map +1 -1
  26. package/esm2015/src/authentication/oauth2Config.js.map +1 -1
  27. package/esm2015/src/superagentHttpClient.js +264 -0
  28. package/esm2015/src/superagentHttpClient.js.map +1 -0
  29. package/esm2015/src/types.js +18 -0
  30. package/esm2015/src/types.js.map +1 -0
  31. package/esm5/index.js +1 -0
  32. package/esm5/index.js.map +1 -1
  33. package/esm5/package.json +3 -3
  34. package/esm5/src/alfrescoApi.js.map +1 -1
  35. package/esm5/src/alfrescoApiClient.js +2 -2
  36. package/esm5/src/alfrescoApiClient.js.map +1 -1
  37. package/esm5/src/api/activiti-rest-api/api/about.api.js.map +1 -1
  38. package/esm5/src/api/activiti-rest-api/api/index.js +1 -0
  39. package/esm5/src/api/activiti-rest-api/api/index.js.map +1 -1
  40. package/esm5/src/api/activiti-rest-api/api/integrationSSO.api.js +29 -0
  41. package/esm5/src/api/activiti-rest-api/api/integrationSSO.api.js.map +1 -0
  42. package/esm5/src/api/activiti-rest-api/model/alfrescoEndpointRepresentation.js.map +1 -1
  43. package/esm5/src/api/activiti-rest-api/model/formFieldRepresentation.js.map +1 -1
  44. package/esm5/src/api/activiti-rest-api/model/index.js +1 -0
  45. package/esm5/src/api/activiti-rest-api/model/index.js.map +1 -1
  46. package/esm5/src/api/activiti-rest-api/model/ssoUserAccountCredentialsRepresentation.js +26 -0
  47. package/esm5/src/api/activiti-rest-api/model/ssoUserAccountCredentialsRepresentation.js.map +1 -0
  48. package/esm5/src/api/content-custom-api/api/upload.api.js +1 -52
  49. package/esm5/src/api/content-custom-api/api/upload.api.js.map +1 -1
  50. package/esm5/src/api/content-rest-api/model/aiAnswerObjectReference.js.map +1 -1
  51. package/esm5/src/api/hxi-connector-api/model/prediction.js +5 -6
  52. package/esm5/src/api/hxi-connector-api/model/prediction.js.map +1 -1
  53. package/esm5/src/api-clients/http-client.interface.js.map +1 -1
  54. package/esm5/src/authentication/oauth2Auth.js +2 -6
  55. package/esm5/src/authentication/oauth2Auth.js.map +1 -1
  56. package/esm5/src/authentication/oauth2Config.js.map +1 -1
  57. package/esm5/src/superagentHttpClient.js +264 -0
  58. package/esm5/src/superagentHttpClient.js.map +1 -0
  59. package/esm5/src/types.js +18 -0
  60. package/esm5/src/types.js.map +1 -0
  61. package/index.js +1 -0
  62. package/index.js.map +1 -1
  63. package/package.json +3 -3
  64. package/src/alfrescoApi.js.map +1 -1
  65. package/src/alfrescoApiClient.js +2 -2
  66. package/src/alfrescoApiClient.js.map +1 -1
  67. package/src/api/activiti-rest-api/api/about.api.js.map +1 -1
  68. package/src/api/activiti-rest-api/api/index.js +1 -0
  69. package/src/api/activiti-rest-api/api/index.js.map +1 -1
  70. package/src/api/activiti-rest-api/api/integrationSSO.api.js +33 -0
  71. package/src/api/activiti-rest-api/api/integrationSSO.api.js.map +1 -0
  72. package/src/api/activiti-rest-api/model/alfrescoEndpointRepresentation.js.map +1 -1
  73. package/src/api/activiti-rest-api/model/formFieldRepresentation.js.map +1 -1
  74. package/src/api/activiti-rest-api/model/index.js +1 -0
  75. package/src/api/activiti-rest-api/model/index.js.map +1 -1
  76. package/src/api/activiti-rest-api/model/ssoUserAccountCredentialsRepresentation.js +30 -0
  77. package/src/api/activiti-rest-api/model/ssoUserAccountCredentialsRepresentation.js.map +1 -0
  78. package/src/api/content-custom-api/api/upload.api.js +1 -52
  79. package/src/api/content-custom-api/api/upload.api.js.map +1 -1
  80. package/src/api/content-rest-api/model/aiAnswerObjectReference.js.map +1 -1
  81. package/src/api/hxi-connector-api/model/prediction.js +5 -6
  82. package/src/api/hxi-connector-api/model/prediction.js.map +1 -1
  83. package/src/api-clients/http-client.interface.js.map +1 -1
  84. package/src/authentication/oauth2Auth.js +2 -6
  85. package/src/authentication/oauth2Auth.js.map +1 -1
  86. package/src/authentication/oauth2Config.js.map +1 -1
  87. package/src/superagentHttpClient.js +269 -0
  88. package/src/superagentHttpClient.js.map +1 -0
  89. package/src/types.js +19 -0
  90. package/src/types.js.map +1 -0
  91. package/typings/index.d.ts +1 -0
  92. package/typings/package.json +3 -3
  93. package/typings/src/alfrescoApiClient.d.ts +2 -4
  94. package/typings/src/api/activiti-rest-api/api/about.api.d.ts +11 -3
  95. package/typings/src/api/activiti-rest-api/api/index.d.ts +1 -0
  96. package/typings/src/api/activiti-rest-api/api/integrationSSO.api.d.ts +29 -0
  97. package/typings/src/api/activiti-rest-api/model/alfrescoEndpointRepresentation.d.ts +1 -0
  98. package/typings/src/api/activiti-rest-api/model/formFieldRepresentation.d.ts +1 -0
  99. package/typings/src/api/activiti-rest-api/model/index.d.ts +1 -0
  100. package/typings/src/api/activiti-rest-api/model/ssoUserAccountCredentialsRepresentation.d.ts +24 -0
  101. package/typings/src/api/content-rest-api/model/aiAnswerObjectReference.d.ts +1 -0
  102. package/typings/src/api/hxi-connector-api/model/prediction.d.ts +6 -5
  103. package/typings/src/api-clients/http-client.interface.d.ts +1 -3
  104. package/typings/src/authentication/oauth2Config.d.ts +0 -1
  105. package/typings/src/{axiosHttpClient.d.ts → superagentHttpClient.d.ts} +5 -5
  106. package/typings/src/types.d.ts +19 -0
  107. package/esm2015/src/axiosHttpClient.js +0 -283
  108. package/esm2015/src/axiosHttpClient.js.map +0 -1
  109. package/esm5/src/axiosHttpClient.js +0 -283
  110. package/esm5/src/axiosHttpClient.js.map +0 -1
  111. package/src/axiosHttpClient.js +0 -287
  112. package/src/axiosHttpClient.js.map +0 -1
@@ -35,58 +35,7 @@ class UploadApi extends nodes_api_1.NodesApi {
35
35
  formParam.name = opts.name;
36
36
  }
37
37
  formParam = Object.assign(formParam, opts);
38
- const originalPromise = this.createNode(rootFolderId, nodeBody, opts, formParam);
39
- let isAborted = false;
40
- let abortReject;
41
- const abortablePromise = new Promise((resolve, reject) => {
42
- abortReject = reject;
43
- if (isAborted) {
44
- reject(new Error('Upload aborted'));
45
- return;
46
- }
47
- setTimeout(() => {
48
- if (!isAborted && typeof abortablePromise.emit === 'function') {
49
- abortablePromise.emit('progress', { loaded: 25, total: 100 });
50
- }
51
- }, 10);
52
- setTimeout(() => {
53
- if (!isAborted && typeof abortablePromise.emit === 'function') {
54
- abortablePromise.emit('progress', { loaded: 50, total: 100 });
55
- }
56
- }, 50);
57
- originalPromise
58
- .then((result) => {
59
- if (!isAborted) {
60
- if (typeof abortablePromise.emit === 'function') {
61
- abortablePromise.emit('progress', { loaded: 100, total: 100 });
62
- }
63
- resolve(result);
64
- }
65
- })
66
- .catch((error) => {
67
- if (!isAborted) {
68
- reject(error);
69
- }
70
- });
71
- });
72
- Object.setPrototypeOf(abortablePromise, Object.getPrototypeOf(originalPromise));
73
- Object.getOwnPropertyNames(originalPromise).forEach((key) => {
74
- if (key !== 'then' && key !== 'catch' && key !== 'finally') {
75
- abortablePromise[key] = originalPromise[key];
76
- }
77
- });
78
- abortablePromise.abort = () => {
79
- if (!isAborted) {
80
- isAborted = true;
81
- if (typeof abortablePromise.emit === 'function') {
82
- abortablePromise.emit('abort');
83
- }
84
- if (abortReject) {
85
- abortReject(new Error('Upload aborted'));
86
- }
87
- }
88
- };
89
- return abortablePromise;
38
+ return this.createNode(rootFolderId, nodeBody, opts, formParam);
90
39
  }
91
40
  }
92
41
  exports.UploadApi = UploadApi;
@@ -1 +1 @@
1
- {"version":3,"file":"upload.api.js","sourceRoot":"","sources":["upload.api.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NodesApi } from '../../content-rest-api/api/nodes.api';\nimport { NodeBodyCreate, NodeEntry, CreateNodeOpts } from '../../content-rest-api';\n\nexport interface UploadFileOpts extends CreateNodeOpts {\n name?: string;\n renditions?: string;\n}\n\nexport class UploadApi extends NodesApi {\n uploadFile(\n fileDefinition: any,\n relativePath?: string,\n rootFolderId?: string,\n nodeBody?: NodeBodyCreate,\n opts?: UploadFileOpts\n ): Promise<NodeEntry | any> {\n rootFolderId = rootFolderId || '-root-';\n opts = opts || {};\n\n const nodeBodyRequired = {\n name: fileDefinition.name,\n nodeType: 'cm:content',\n relativePath: relativePath ?? null\n };\n\n nodeBody = Object.assign(nodeBodyRequired, nodeBody);\n\n let formParam = Object.assign({}, nodeBody.properties || {});\n formParam.filedata = fileDefinition;\n formParam.relativePath = relativePath;\n if (opts.name) {\n formParam.name = opts.name;\n }\n\n formParam = Object.assign(formParam, opts);\n\n const originalPromise = this.createNode(rootFolderId, nodeBody, opts, formParam);\n\n let isAborted = false;\n let abortReject: (reason?: any) => void;\n\n // Create a new promise that can be aborted\n const abortablePromise = new Promise((resolve, reject) => {\n abortReject = reject;\n\n if (isAborted) {\n reject(new Error('Upload aborted'));\n return;\n }\n\n setTimeout(() => {\n if (!isAborted && typeof (abortablePromise as any).emit === 'function') {\n (abortablePromise as any).emit('progress', { loaded: 25, total: 100 });\n }\n }, 10);\n\n setTimeout(() => {\n if (!isAborted && typeof (abortablePromise as any).emit === 'function') {\n (abortablePromise as any).emit('progress', { loaded: 50, total: 100 });\n }\n }, 50);\n\n originalPromise\n .then((result) => {\n if (!isAborted) {\n if (typeof (abortablePromise as any).emit === 'function') {\n (abortablePromise as any).emit('progress', { loaded: 100, total: 100 });\n }\n resolve(result);\n }\n })\n .catch((error) => {\n if (!isAborted) {\n reject(error);\n }\n });\n });\n\n Object.setPrototypeOf(abortablePromise, Object.getPrototypeOf(originalPromise));\n Object.getOwnPropertyNames(originalPromise).forEach((key) => {\n if (key !== 'then' && key !== 'catch' && key !== 'finally') {\n (abortablePromise as any)[key] = (originalPromise as any)[key];\n }\n });\n\n (abortablePromise as any).abort = () => {\n if (!isAborted) {\n isAborted = true;\n\n if (typeof (abortablePromise as any).emit === 'function') {\n (abortablePromise as any).emit('abort');\n }\n\n if (abortReject) {\n abortReject(new Error('Upload aborted'));\n }\n }\n };\n\n return abortablePromise;\n }\n}\n"]}
1
+ {"version":3,"file":"upload.api.js","sourceRoot":"","sources":["upload.api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,oEAAgE;AAQhE,MAAa,SAAU,SAAQ,oBAAQ;IACnC,UAAU,CACN,cAAmB,EACnB,YAAqB,EACrB,YAAqB,EACrB,QAAyB,EACzB,IAAqB;QAErB,YAAY,GAAG,YAAY,IAAI,QAAQ,CAAC;QACxC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAElB,MAAM,gBAAgB,GAAG;YACrB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,QAAQ,EAAE,YAAY;YACtB,YAAY,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,IAAI;SACrC,CAAC;QAEF,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAErD,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAC7D,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAC;QACpC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,CAAC;QAED,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;CACJ;AA9BD,8BA8BC","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NodesApi } from '../../content-rest-api/api/nodes.api';\nimport { NodeBodyCreate, NodeEntry, CreateNodeOpts } from '../../content-rest-api';\n\nexport interface UploadFileOpts extends CreateNodeOpts {\n name?: string;\n renditions?: string;\n}\n\nexport class UploadApi extends NodesApi {\n uploadFile(\n fileDefinition: any,\n relativePath?: string,\n rootFolderId?: string,\n nodeBody?: NodeBodyCreate,\n opts?: UploadFileOpts\n ): Promise<NodeEntry | any> {\n rootFolderId = rootFolderId || '-root-';\n opts = opts || {};\n\n const nodeBodyRequired = {\n name: fileDefinition.name,\n nodeType: 'cm:content',\n relativePath: relativePath ?? null\n };\n\n nodeBody = Object.assign(nodeBodyRequired, nodeBody);\n\n let formParam = Object.assign({}, nodeBody.properties || {});\n formParam.filedata = fileDefinition;\n formParam.relativePath = relativePath;\n if (opts.name) {\n formParam.name = opts.name;\n }\n\n formParam = Object.assign(formParam, opts);\n\n return this.createNode(rootFolderId, nodeBody, opts, formParam);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"aiAnswerObjectReference.js","sourceRoot":"","sources":["aiAnswerObjectReference.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AiAnswerReference } from './aiAnswerReference';\n\nexport interface AiAnswerObjectReference {\n objectId: string;\n references: AiAnswerReference[];\n}\n"]}
1
+ {"version":3,"file":"aiAnswerObjectReference.js","sourceRoot":"","sources":["aiAnswerObjectReference.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AiAnswerReference } from './aiAnswerReference';\n\nexport interface AiAnswerObjectReference {\n objectId: string;\n nodeId?: string;\n references: AiAnswerReference[];\n}\n"]}
@@ -27,10 +27,9 @@ class Prediction {
27
27
  }
28
28
  }
29
29
  exports.Prediction = Prediction;
30
- var ReviewStatus;
31
- (function (ReviewStatus) {
32
- ReviewStatus["UNREVIEWED"] = "UNREVIEWED";
33
- ReviewStatus["CONFIRMED"] = "CONFIRMED";
34
- ReviewStatus["REJECTED"] = "REJECTED";
35
- })(ReviewStatus || (exports.ReviewStatus = ReviewStatus = {}));
30
+ exports.ReviewStatus = {
31
+ UNREVIEWED: 'UNREVIEWED',
32
+ CONFIRMED: 'CONFIRMED',
33
+ REJECTED: 'REJECTED'
34
+ };
36
35
  //# sourceMappingURL=../../../../../../../lib/js-api/src/api/hxi-connector-api/model/prediction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prediction.js","sourceRoot":"","sources":["prediction.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,iEAAwD;AAExD,MAAa,UAAU;IAWnB,YAAY,KAA2B;QACnC,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,iCAAY,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtH,CAAC;IACL,CAAC;CACJ;AAjBD,gCAiBC;AAID,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,yCAAyB,CAAA;IACzB,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;AACzB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB","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 { DateAlfresco } from '../../content-custom-api';\n\nexport class Prediction {\n id: string;\n modelId: string;\n confidenceLevel: number;\n predictionDateTime: Date;\n property: string;\n previousValue: any;\n predictionValue: any;\n updateType: UpdateType;\n reviewStatus: ReviewStatus;\n\n constructor(input?: Partial<Prediction>) {\n if (input) {\n Object.assign(this, input);\n this.predictionDateTime = input.predictionDateTime ? DateAlfresco.parseDate(input.predictionDateTime) : undefined;\n }\n }\n}\n\nexport type UpdateType = 'AUTOFILL' | 'AUTOCORRECT';\n\nexport enum ReviewStatus {\n UNREVIEWED = 'UNREVIEWED',\n CONFIRMED = 'CONFIRMED',\n REJECTED = 'REJECTED'\n}\n"]}
1
+ {"version":3,"file":"prediction.js","sourceRoot":"","sources":["prediction.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,iEAAwD;AAExD,MAAa,UAAU;IAWnB,YAAY,KAA2B;QACnC,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,iCAAY,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtH,CAAC;IACL,CAAC;CACJ;AAjBD,gCAiBC;AAIY,QAAA,YAAY,GAAG;IACxB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACd,CAAC","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 { DateAlfresco } from '../../content-custom-api';\n\nexport class Prediction {\n id: string;\n modelId: string;\n confidenceLevel: number;\n predictionDateTime: Date;\n property: string;\n previousValue: any;\n predictionValue: any;\n updateType: UpdateType;\n reviewStatus: ReviewStatus;\n\n constructor(input?: Partial<Prediction>) {\n if (input) {\n Object.assign(this, input);\n this.predictionDateTime = input.predictionDateTime ? DateAlfresco.parseDate(input.predictionDateTime) : undefined;\n }\n }\n}\n\nexport type UpdateType = 'AUTOFILL' | 'AUTOCORRECT';\n\nexport const ReviewStatus = {\n UNREVIEWED: 'UNREVIEWED',\n CONFIRMED: 'CONFIRMED',\n REJECTED: 'REJECTED'\n} as const;\n\nexport type ReviewStatus = (typeof ReviewStatus)[keyof typeof ReviewStatus];\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.interface.js","sourceRoot":"","sources":["http-client.interface.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Authentication } from '../authentication/authentication';\nimport { EventEmitter } from 'eventemitter3';\n\ntype EventEmitterInstance = InstanceType<typeof EventEmitter>;\n\nexport interface RequestOptions {\n path: string;\n httpMethod?: string;\n pathParams?: any;\n queryParams?: any;\n headerParams?: any;\n formParams?: any;\n bodyParam?: any;\n contentTypes?: string[];\n accepts?: string[];\n returnType?: any;\n contextRoot?: string;\n responseType?: string;\n url?: string;\n readonly accept?: string;\n readonly contentType?: string;\n}\n\nexport interface HttpClientConfig {\n contextRoot?: string;\n host?: string; // Should be mandatory but can't make it because of AlfrescoApiConfig incompatibility 😕\n servicePath?: string; // Should be mandatory but can't make it because of AlfrescoApiConfig incompatibility 😕\n}\n\nexport interface LegacyHttpClient {\n basePath: string;\n config: HttpClientConfig;\n\n request<T = any>(options: RequestOptions): Promise<T>;\n post<T = any>(options: RequestOptions): Promise<T>;\n put<T = any>(options: RequestOptions): Promise<T>;\n get<T = any>(options: RequestOptions): Promise<T>;\n delete<T = void>(options: RequestOptions): Promise<T>;\n /** @deprecated */\n callApi(\n path: string,\n httpMethod: string,\n pathParams?: any,\n queryParams?: any,\n headerParams?: any,\n formParams?: any,\n bodyParam?: any,\n contentTypes?: string[],\n accepts?: string[],\n returnType?: any,\n contextRoot?: string,\n responseType?: string,\n url?: string\n ): Promise<any>;\n /** @deprecated */\n callCustomApi(\n path: string,\n httpMethod: string,\n pathParams?: any,\n queryParams?: any,\n headerParams?: any,\n formParams?: any,\n bodyParam?: any,\n contentTypes?: string[],\n accepts?: string[],\n returnType?: any,\n contextRoot?: string,\n responseType?: string\n ): Promise<any>;\n}\n\nexport interface SecurityOptions {\n readonly isBpmRequest: boolean;\n readonly enableCsrf?: boolean;\n readonly withCredentials?: boolean;\n readonly authentications: Authentication;\n readonly defaultHeaders: Record<string, string>;\n}\n\nexport interface Emitters {\n readonly eventEmitter: EventEmitterInstance;\n readonly apiClientEmitter: {\n on: EventEmitterInstance['on'];\n off: EventEmitterInstance['off'];\n once: EventEmitterInstance['once'];\n emit: EventEmitterInstance['emit'];\n };\n}\n\nexport interface HttpClient {\n request<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n post<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n put<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n get<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n delete<T = void>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n}\n"]}
1
+ {"version":3,"file":"http-client.interface.js","sourceRoot":"","sources":["http-client.interface.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventEmitterInstance } from './../types';\nimport { Authentication } from '../authentication/authentication';\n\nexport interface RequestOptions {\n path: string;\n httpMethod?: string;\n pathParams?: any;\n queryParams?: any;\n headerParams?: any;\n formParams?: any;\n bodyParam?: any;\n contentTypes?: string[];\n accepts?: string[];\n returnType?: any;\n contextRoot?: string;\n responseType?: string;\n url?: string;\n readonly accept?: string;\n readonly contentType?: string;\n}\n\nexport interface HttpClientConfig {\n contextRoot?: string;\n host?: string; // Should be mandatory but can't make it because of AlfrescoApiConfig incompatibility 😕\n servicePath?: string; // Should be mandatory but can't make it because of AlfrescoApiConfig incompatibility 😕\n}\n\nexport interface LegacyHttpClient {\n basePath: string;\n config: HttpClientConfig;\n\n request<T = any>(options: RequestOptions): Promise<T>;\n post<T = any>(options: RequestOptions): Promise<T>;\n put<T = any>(options: RequestOptions): Promise<T>;\n get<T = any>(options: RequestOptions): Promise<T>;\n delete<T = void>(options: RequestOptions): Promise<T>;\n /** @deprecated */\n callApi(\n path: string,\n httpMethod: string,\n pathParams?: any,\n queryParams?: any,\n headerParams?: any,\n formParams?: any,\n bodyParam?: any,\n contentTypes?: string[],\n accepts?: string[],\n returnType?: any,\n contextRoot?: string,\n responseType?: string,\n url?: string\n ): Promise<any>;\n /** @deprecated */\n callCustomApi(\n path: string,\n httpMethod: string,\n pathParams?: any,\n queryParams?: any,\n headerParams?: any,\n formParams?: any,\n bodyParam?: any,\n contentTypes?: string[],\n accepts?: string[],\n returnType?: any,\n contextRoot?: string,\n responseType?: string\n ): Promise<any>;\n}\n\nexport interface SecurityOptions {\n readonly isBpmRequest: boolean;\n readonly enableCsrf?: boolean;\n readonly withCredentials?: boolean;\n readonly authentications: Authentication;\n readonly defaultHeaders: Record<string, string>;\n}\n\nexport interface Emitters {\n readonly eventEmitter: EventEmitterInstance;\n readonly apiClientEmitter: {\n on: EventEmitterInstance['on'];\n off: EventEmitterInstance['off'];\n once: EventEmitterInstance['once'];\n emit: EventEmitterInstance['emit'];\n };\n}\n\nexport interface HttpClient {\n request<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n post<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n put<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n get<T = any>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n delete<T = void>(url: string, options: RequestOptions, security: SecurityOptions, emitters: Emitters): Promise<T>;\n}\n"]}
@@ -58,9 +58,6 @@ class Oauth2Auth extends alfrescoApiClient_1.AlfrescoApiClient {
58
58
  if (this.config.oauth2.scope === undefined || this.config.oauth2.scope === null) {
59
59
  throw new Error('Missing the required oauth2 scope parameter');
60
60
  }
61
- if (this.config.oauth2.secret === undefined || this.config.oauth2.secret === null) {
62
- this.config.oauth2.secret = '';
63
- }
64
61
  if ((this.config.oauth2.redirectUri === undefined || this.config.oauth2.redirectUri === null) && this.config.oauth2.implicitFlow) {
65
62
  throw new Error('Missing redirectUri required parameter');
66
63
  }
@@ -435,8 +432,7 @@ class Oauth2Auth extends alfrescoApiClient_1.AlfrescoApiClient {
435
432
  username,
436
433
  password,
437
434
  grant_type: 'password',
438
- client_id: this.config.oauth2.clientId,
439
- client_secret: this.config.oauth2.secret
435
+ client_id: this.config.oauth2.clientId
440
436
  };
441
437
  const contentTypes = ['application/x-www-form-urlencoded'];
442
438
  const accepts = ['application/json'];
@@ -465,7 +461,7 @@ class Oauth2Auth extends alfrescoApiClient_1.AlfrescoApiClient {
465
461
  this.refreshTokenIntervalPolling.unref();
466
462
  }
467
463
  refreshToken() {
468
- const auth = 'Basic ' + this.universalBtoa(this.config.oauth2.clientId + ':' + this.config.oauth2.secret);
464
+ const auth = 'Basic ' + this.universalBtoa(this.config.oauth2.clientId);
469
465
  const headerParams = {
470
466
  'Content-Type': 'application/x-www-form-urlencoded',
471
467
  'Cache-Control': 'no-cache',
@@ -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 { EventEmitter } from 'eventemitter3';\nimport { AlfrescoApiClient } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { AuthenticationApi } from '../api/auth-rest-api';\nimport { AlfrescoApi } from '../alfrescoApi';\nimport { Storage } from '../storage';\nimport { HttpClient } from '../api-clients/http-client.interface';\nimport { PathMatcher } from '../utils/path-matcher';\n\ndeclare const Buffer: any;\n\ndeclare let window: Window;\n\ninterface Userinfo {\n name: string;\n given_name?: string;\n family_name?: string;\n preferred_username?: string;\n email?: string;\n picture?: string;\n}\n\nexport class Oauth2Auth extends AlfrescoApiClient {\n static readonly DEFAULT_AUTHORIZATION_URL = '/protocol/openid-connect/auth';\n static readonly DEFAULT_TOKEN_URL = '/protocol/openid-connect/token';\n static readonly DEFAULT_USER_INFO_ENDPOINT = '/protocol/openid-connect/userinfo';\n static readonly DEFAULT_LOGOUT_URL = '/protocol/openid-connect/logout';\n\n private refreshTokenIntervalPolling: any;\n private refreshTokenTimeoutIframe: any;\n private checkAccessToken = true;\n\n hashFragmentParams: any;\n token: string;\n discovery: {\n loginUrl?: string;\n logoutUrl?: string;\n tokenEndpoint?: string;\n userinfoEndpoint?: string;\n } = {\n loginUrl: undefined,\n logoutUrl: undefined,\n tokenEndpoint: undefined,\n userinfoEndpoint: undefined\n };\n\n authentications: Authentication = {\n oauth2: { accessToken: '' },\n type: 'oauth2',\n basicAuth: {}\n };\n\n iFrameHashListener: any;\n pathMatcher = new PathMatcher();\n\n constructor(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApi, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.storage = Storage.getInstance();\n\n this.className = 'Oauth2Auth';\n\n if (config) {\n this.setConfig(config, alfrescoApi);\n }\n }\n\n setConfig(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApi) {\n this.config = config;\n this.storage.setDomainPrefix(config.domainPrefix);\n\n if (this.config.oauth2) {\n if (this.config.oauth2.host === undefined || this.config.oauth2.host === null) {\n throw new Error('Missing the required oauth2 host parameter');\n }\n\n if (this.config.oauth2.clientId === undefined || this.config.oauth2.clientId === null) {\n throw new Error('Missing the required oauth2 clientId parameter');\n }\n\n if (this.config.oauth2.scope === undefined || this.config.oauth2.scope === null) {\n throw new Error('Missing the required oauth2 scope parameter');\n }\n\n if (this.config.oauth2.secret === undefined || this.config.oauth2.secret === null) {\n this.config.oauth2.secret = '';\n }\n\n if ((this.config.oauth2.redirectUri === undefined || this.config.oauth2.redirectUri === null) && this.config.oauth2.implicitFlow) {\n throw new Error('Missing redirectUri required parameter');\n }\n\n if (!this.config.oauth2.refreshTokenTimeout) {\n this.config.oauth2.refreshTokenTimeout = 300000;\n }\n\n if (!this.config.oauth2.redirectSilentIframeUri) {\n let context = '';\n if (typeof window !== 'undefined') {\n context = window.location.origin;\n }\n this.config.oauth2.redirectSilentIframeUri = context + '/assets/silent-refresh.html';\n }\n\n this.basePath = this.config.oauth2.host; //Auth Call\n\n this.host = this.config.oauth2.host;\n\n this.discoveryUrls();\n\n if (this.hasContentProvider()) {\n this.exchangeTicketListener(alfrescoApi);\n }\n\n this.initOauth();\n }\n }\n\n initOauth() {\n if (!this.config.oauth2.implicitFlow && this.isValidAccessToken()) {\n const accessToken = this.storage.getItem('access_token');\n this.setToken(accessToken, null);\n }\n\n if (this.config.oauth2.implicitFlow) {\n this.checkFragment('nonce');\n }\n }\n\n discoveryUrls() {\n this.discovery.loginUrl = this.config.oauth2.authorizationUrl || this.host + Oauth2Auth.DEFAULT_AUTHORIZATION_URL;\n this.discovery.logoutUrl = this.config.oauth2.logoutUrl || this.host + Oauth2Auth.DEFAULT_LOGOUT_URL;\n this.discovery.tokenEndpoint = this.config.oauth2.tokenUrl || this.host + Oauth2Auth.DEFAULT_TOKEN_URL;\n this.discovery.userinfoEndpoint = this.config.oauth2.userinfoEndpoint || this.host + Oauth2Auth.DEFAULT_USER_INFO_ENDPOINT;\n }\n\n getProfile(): Promise<Userinfo> {\n const postBody = {};\n const pathParams = {};\n const queryParams = {};\n\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n\n const formParams = {};\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n return this.callCustomApi(\n this.discovery.userinfoEndpoint,\n 'GET',\n pathParams,\n queryParams,\n headerParams,\n formParams,\n postBody,\n contentTypes,\n accepts\n );\n }\n\n hasContentProvider(): boolean {\n return this.config.provider === 'ECM' || this.config.provider === 'ALL';\n }\n\n checkFragment(nonceKey?: string, externalHash?: any): any {\n // jshint ignore:line\n this.hashFragmentParams = this.getHashFragmentParams(externalHash);\n\n if (this.hashFragmentParams && this.hashFragmentParams.error === undefined) {\n this.useFragmentTimeLogin(nonceKey);\n } else {\n this.refreshBrowserLogin();\n }\n }\n\n private refreshBrowserLogin() {\n if (this.config.oauth2.silentLogin && !this.isPublicUrl()) {\n this.implicitLogin();\n }\n\n if (this.isValidToken() && this.isValidAccessToken()) {\n const accessToken = this.storage.getItem('access_token');\n this.setToken(accessToken, null);\n this.silentRefresh();\n }\n }\n\n private useFragmentTimeLogin(nonceKey: string) {\n const accessToken = this.hashFragmentParams.access_token;\n const idToken = this.hashFragmentParams.id_token;\n const sessionState = this.hashFragmentParams.session_state;\n const expiresIn = this.hashFragmentParams.expires_in;\n\n if (!sessionState) {\n throw new Error('session state not present');\n }\n\n try {\n const jwt = this.processJWTToken(idToken, nonceKey);\n if (jwt) {\n this.storeIdToken(idToken, jwt.payload.exp);\n this.storeAccessToken(accessToken, expiresIn);\n this.authentications.basicAuth.username = jwt.payload.preferred_username;\n this.saveUsername(jwt.payload.preferred_username);\n this.silentRefresh();\n return accessToken;\n }\n } catch (error) {\n throw new Error('Validation JWT error' + error);\n }\n }\n\n isPublicUrl(): boolean {\n const publicUrls = this.config.oauth2.publicUrls || [];\n\n if (Array.isArray(publicUrls)) {\n return publicUrls.length > 0 && publicUrls.some((urlPattern: string) => this.pathMatcher.match(window.location.href, urlPattern));\n }\n return false;\n }\n\n padBase64(base64data: any) {\n while (base64data.length % 4 !== 0) {\n base64data += '=';\n }\n return base64data;\n }\n\n processJWTToken(jwt: any, nonceKey: string): any {\n if (jwt) {\n const jwtArray = jwt.split('.');\n const headerBase64 = this.padBase64(jwtArray[0]);\n const headerJson = this.b64DecodeUnicode(headerBase64);\n const header = JSON.parse(headerJson);\n\n const payloadBase64 = this.padBase64(jwtArray[1]);\n const payloadJson = this.b64DecodeUnicode(payloadBase64);\n const payload = JSON.parse(payloadJson);\n\n const savedNonce = this.storage.getItem(nonceKey);\n\n if (!payload.sub) {\n throw new Error('Missing sub in JWT');\n }\n\n if (payload.nonce !== savedNonce) {\n return;\n }\n\n return {\n idToken: jwt,\n payload,\n header\n };\n }\n }\n\n b64DecodeUnicode(b64string: string) {\n const base64 = b64string.replace(/-/g, '+').replace(/_/g, '/');\n return decodeURIComponent(\n atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join('')\n );\n }\n\n storeIdToken(idToken: string, exp: number) {\n this.storage.setItem('id_token', idToken);\n this.storage.setItem('id_token_expires_at', Number(exp * 1000).toString());\n this.storage.setItem('id_token_stored_at', Date.now().toString());\n }\n\n storeAccessToken(accessToken: string, expiresIn: number, refreshToken?: string) {\n this.storage.setItem('access_token', accessToken);\n\n const expiresInMilliSeconds = expiresIn * 1000;\n const now = new Date();\n const expiresAt = now.getTime() + expiresInMilliSeconds;\n\n this.storage.setItem('access_token_expires_in', expiresAt);\n this.storage.setItem('access_token_stored_at', Date.now().toString());\n this.setToken(accessToken, refreshToken);\n }\n\n saveUsername(username: string) {\n if (this.storage.supportsStorage()) {\n this.storage.setItem('USERNAME', username);\n }\n }\n\n implicitLogin() {\n if (!this.isValidToken() || !this.isValidAccessToken()) {\n this.redirectLogin();\n }\n }\n\n isValidToken(): boolean {\n let validToken = false;\n if (this.getIdToken()) {\n const expiresAt = this.storage.getItem('id_token_expires_at');\n const now = new Date();\n if (expiresAt && parseInt(expiresAt, 10) >= now.getTime()) {\n validToken = true;\n }\n }\n\n return validToken;\n }\n\n isValidAccessToken(): boolean {\n let validAccessToken = false;\n\n if (this.getAccessToken()) {\n const expiresAt = this.storage.getItem('access_token_expires_in');\n const now = new Date();\n if (expiresAt && parseInt(expiresAt, 10) >= now.getTime()) {\n validAccessToken = true;\n }\n }\n\n return validAccessToken;\n }\n\n getIdToken(): string {\n return this.storage.getItem('id_token');\n }\n\n getAccessToken(): string {\n return this.storage.getItem('access_token');\n }\n\n redirectLogin(): void {\n if (this.config.oauth2.implicitFlow && typeof window !== 'undefined') {\n const href = this.composeImplicitLoginUrl();\n window.location.href = href;\n this.emit('implicit_redirect', href);\n }\n }\n\n isRedirectionUrl() {\n return window.location.hash && window.location.hash.split('&')[0].indexOf('session_state') === -1;\n }\n\n genNonce(): string {\n let text = '';\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n for (let i = 0; i < 40; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n }\n\n composeImplicitLoginUrl(): string {\n const nonce = this.genNonce();\n\n this.storage.setItem('nonce', nonce);\n\n const afterLoginUriSegment = this.isRedirectionUrl() ? window.location.hash : '';\n if (afterLoginUriSegment && afterLoginUriSegment !== '/') {\n this.storage.setItem('loginFragment', afterLoginUriSegment.replace('#', '').trim());\n }\n\n const separation = this.discovery.loginUrl.indexOf('?') > -1 ? '&' : '?';\n\n return (\n this.discovery.loginUrl +\n separation +\n 'client_id=' +\n encodeURIComponent(this.config.oauth2.clientId) +\n '&redirect_uri=' +\n encodeURIComponent(this.config.oauth2.redirectUri) +\n '&scope=' +\n encodeURIComponent(this.config.oauth2.scope) +\n '&response_type=' +\n encodeURIComponent('id_token token') +\n '&nonce=' +\n encodeURIComponent(nonce)\n );\n }\n\n composeIframeLoginUrl(): string {\n const nonce = this.genNonce();\n\n this.storage.setItem('refresh_nonce', nonce);\n\n const separation = this.discovery.loginUrl.indexOf('?') > -1 ? '&' : '?';\n\n return (\n this.discovery.loginUrl +\n separation +\n 'client_id=' +\n encodeURIComponent(this.config.oauth2.clientId) +\n '&redirect_uri=' +\n encodeURIComponent(this.config.oauth2.redirectSilentIframeUri) +\n '&scope=' +\n encodeURIComponent(this.config.oauth2.scope) +\n '&response_type=' +\n encodeURIComponent('id_token token') +\n '&nonce=' +\n encodeURIComponent(nonce) +\n '&prompt=none'\n );\n }\n\n hasHashCharacter(hash: string): boolean {\n return hash.indexOf('#') === 0;\n }\n\n startWithHashRoute(hash: string) {\n return hash.startsWith('#/');\n }\n\n getHashFragmentParams(externalHash: string): string {\n let hashFragmentParams = null;\n\n if (typeof window !== 'undefined') {\n let hash: string;\n\n if (!externalHash) {\n hash = decodeURIComponent(window.location.hash);\n if (!this.startWithHashRoute(hash)) {\n window.location.hash = '';\n }\n } else {\n hash = decodeURIComponent(externalHash);\n this.removeHashFromSilentIframe();\n this.destroyIframe();\n }\n\n if (this.hasHashCharacter(hash) && !this.startWithHashRoute(hash)) {\n const questionMarkPosition = hash.indexOf('?');\n\n if (questionMarkPosition > -1) {\n hash = hash.substring(questionMarkPosition + 1);\n } else {\n hash = hash.substring(1);\n }\n hashFragmentParams = this.parseQueryString(hash);\n }\n }\n return hashFragmentParams;\n }\n\n parseQueryString(queryString: string): any {\n const data: { [key: string]: any } = {};\n let pairs: string[];\n let pair: string;\n let separatorIndex: number;\n let escapedKey: string;\n let escapedValue: string;\n let key: string;\n let value: string;\n\n if (queryString !== null) {\n pairs = queryString.split('&');\n\n for (const item of pairs) {\n pair = item;\n separatorIndex = pair.indexOf('=');\n\n if (separatorIndex === -1) {\n escapedKey = pair;\n escapedValue = null;\n } else {\n escapedKey = pair.substring(0, separatorIndex);\n escapedValue = pair.substring(separatorIndex + 1);\n }\n\n key = decodeURIComponent(escapedKey);\n value = decodeURIComponent(escapedValue);\n\n if (key.startsWith('/')) {\n key = key.substring(1);\n }\n\n data[key] = value;\n }\n }\n\n return data;\n }\n\n silentRefresh(): void {\n if (typeof document === 'undefined') {\n this.pollingRefreshToken();\n return;\n }\n\n if (this.checkAccessToken) {\n this.destroyIframe();\n this.createIframe();\n this.checkAccessToken = false;\n return;\n }\n\n this.refreshTokenTimeoutIframe = setTimeout(() => {\n this.destroyIframe();\n this.createIframe();\n }, this.config.oauth2.refreshTokenTimeout);\n }\n\n removeHashFromSilentIframe() {\n const iframe = document.getElementById('silent_refresh_token_iframe') as HTMLIFrameElement;\n if (iframe?.contentWindow.location.hash) {\n iframe.contentWindow.location.hash = '';\n }\n }\n\n createIframe() {\n const iframe = document.createElement('iframe');\n iframe.id = 'silent_refresh_token_iframe';\n const loginUrl = this.composeIframeLoginUrl();\n iframe.setAttribute('src', loginUrl);\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n this.iFrameHashListener = () => {\n const silentRefreshTokenIframe: any = document.getElementById('silent_refresh_token_iframe');\n const hash = silentRefreshTokenIframe.contentWindow.location.hash;\n try {\n this.checkFragment('refresh_nonce', hash);\n } catch {\n this.logOut();\n }\n };\n\n iframe.addEventListener('load', this.iFrameHashListener);\n }\n\n destroyIframe() {\n const iframe = document.getElementById('silent_refresh_token_iframe');\n\n if (iframe) {\n iframe.removeEventListener('load', this.iFrameHashListener);\n document.body.removeChild(iframe);\n }\n }\n\n /**\n * login Alfresco API\n * @returns A promise that returns {new authentication token} if resolved and {error} if rejected.\n */\n login(username: string, password: string): Promise<any> {\n return new Promise((resolve, reject) => {\n this.grantPasswordLogin(username, password, resolve, reject);\n });\n }\n\n grantPasswordLogin(username: string, password: string, resolve: any, reject: any) {\n this.invalidateSession();\n\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n\n const formParams = {\n username,\n password,\n grant_type: 'password',\n client_id: this.config.oauth2.clientId,\n client_secret: this.config.oauth2.secret\n };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise = this.callCustomApi(this.discovery.tokenEndpoint, 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n (data: any) => {\n this.saveUsername(username);\n this.silentRefresh();\n this.storeAccessToken(data.access_token, data.expires_in, data.refresh_token);\n\n resolve(data);\n },\n (error) => {\n if ((error.error && error.error.status === 401) || error.status === 401) {\n this.emit('unauthorized');\n }\n this.emit('error');\n reject(error.error);\n }\n );\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n pollingRefreshToken() {\n this.refreshTokenIntervalPolling = setInterval(async () => {\n try {\n await this.refreshToken();\n } catch {\n /* continue regardless of error */\n }\n }, this.config.oauth2.refreshTokenTimeout);\n\n this.refreshTokenIntervalPolling.unref();\n }\n\n /**\n * Refresh the Token\n * @returns promise of void\n */\n refreshToken(): Promise<any> {\n const auth = 'Basic ' + this.universalBtoa(this.config.oauth2.clientId + ':' + this.config.oauth2.secret);\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Cache-Control': 'no-cache',\n Authorization: auth\n };\n const formParams = {\n grant_type: 'refresh_token',\n refresh_token: this.authentications.oauth2.refreshToken\n };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise = new Promise((resolve, reject) => {\n this.callCustomApi(this.discovery.tokenEndpoint, 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n (data: any) => {\n this.setToken(data.access_token, data.refresh_token);\n resolve(data);\n },\n (error) => {\n if (error.error && error.error.status === 401) {\n this.emit('unauthorized');\n }\n this.emit('error');\n reject(error.error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n universalBtoa(stringToConvert: string) {\n try {\n return btoa(stringToConvert);\n } catch {\n return Buffer.from(stringToConvert).toString('base64');\n }\n }\n\n /**\n * Set the current Token\n */\n setToken(token: string, refreshToken: string) {\n this.authentications.oauth2.accessToken = token;\n this.authentications.oauth2.refreshToken = refreshToken;\n this.authentications.basicAuth.password = null;\n this.token = token;\n\n if (token) {\n this.emit('token_issued');\n this.emit('logged-in');\n }\n }\n\n /**\n * Get the current Token\n * @returns token value\n */\n getToken(): string {\n return this.token;\n }\n\n /**\n * return the Authentication\n * @returns authentications\n */\n getAuthentication(): Authentication {\n return this.authentications;\n }\n\n /**\n * Change the Host\n */\n changeHost(host: string) {\n this.config.hostOauth2 = host;\n }\n\n /**\n * If the client is logged in return true\n * @returns is logged in\n */\n isLoggedIn(): boolean {\n return !!this.authentications.oauth2.accessToken;\n }\n\n /**\n * Logout\n */\n async logOut() {\n this.checkAccessToken = true;\n\n const id_token = this.getIdToken();\n\n this.invalidateSession();\n this.setToken(null, null);\n\n const separation = this.discovery.logoutUrl.indexOf('?') > -1 ? '&' : '?';\n const redirectLogout = this.config.oauth2.redirectUriLogout || this.config.oauth2.redirectUri;\n const logoutUrl =\n this.discovery.logoutUrl +\n separation +\n 'post_logout_redirect_uri=' +\n encodeURIComponent(redirectLogout) +\n '&id_token_hint=' +\n encodeURIComponent(id_token);\n\n if (id_token != null && this.config.oauth2.implicitFlow && typeof window !== 'undefined') {\n window.location.href = logoutUrl;\n }\n }\n\n invalidateSession() {\n clearTimeout(this.refreshTokenTimeoutIframe);\n clearInterval(this.refreshTokenIntervalPolling);\n\n this.storage.removeItem('access_token');\n this.storage.removeItem('access_token_expires_in');\n this.storage.removeItem('access_token_stored_at');\n\n this.storage.removeItem('id_token');\n this.storage.removeItem('id_token');\n this.storage.removeItem('id_token_claims_obj');\n this.storage.removeItem('id_token_expires_at');\n this.storage.removeItem('id_token_stored_at');\n\n this.storage.removeItem('nonce');\n }\n\n exchangeTicketListener(alfrescoApi: AlfrescoApi) {\n this.on('token_issued', async () => {\n const authContentApi: AuthenticationApi = new AuthenticationApi(alfrescoApi);\n // Legacy stuff, needs deprecation, can not be more specific here because of circular dependency\n (authContentApi.apiClient as unknown as any).authentications = this.authentications;\n try {\n const ticketEntry = await authContentApi.getTicket();\n this.config.ticketEcm = ticketEntry.entry.id;\n this.emit('ticket_exchanged');\n } catch {\n // continue regardless of error\n }\n });\n }\n}\n"]}
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 { EventEmitter } from 'eventemitter3';\nimport { AlfrescoApiClient } from '../alfrescoApiClient';\nimport { AlfrescoApiConfig } from '../alfrescoApiConfig';\nimport { Authentication } from './authentication';\nimport { AuthenticationApi } from '../api/auth-rest-api';\nimport { AlfrescoApi } from '../alfrescoApi';\nimport { Storage } from '../storage';\nimport { HttpClient } from '../api-clients/http-client.interface';\nimport { PathMatcher } from '../utils/path-matcher';\n\ndeclare const Buffer: any;\n\ndeclare let window: Window;\n\ninterface Userinfo {\n name: string;\n given_name?: string;\n family_name?: string;\n preferred_username?: string;\n email?: string;\n picture?: string;\n}\n\nexport class Oauth2Auth extends AlfrescoApiClient {\n static readonly DEFAULT_AUTHORIZATION_URL = '/protocol/openid-connect/auth';\n static readonly DEFAULT_TOKEN_URL = '/protocol/openid-connect/token';\n static readonly DEFAULT_USER_INFO_ENDPOINT = '/protocol/openid-connect/userinfo';\n static readonly DEFAULT_LOGOUT_URL = '/protocol/openid-connect/logout';\n\n private refreshTokenIntervalPolling: any;\n private refreshTokenTimeoutIframe: any;\n private checkAccessToken = true;\n\n hashFragmentParams: any;\n token: string;\n discovery: {\n loginUrl?: string;\n logoutUrl?: string;\n tokenEndpoint?: string;\n userinfoEndpoint?: string;\n } = {\n loginUrl: undefined,\n logoutUrl: undefined,\n tokenEndpoint: undefined,\n userinfoEndpoint: undefined\n };\n\n authentications: Authentication = {\n oauth2: { accessToken: '' },\n type: 'oauth2',\n basicAuth: {}\n };\n\n iFrameHashListener: any;\n pathMatcher = new PathMatcher();\n\n constructor(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApi, httpClient?: HttpClient) {\n super(undefined, httpClient);\n this.storage = Storage.getInstance();\n\n this.className = 'Oauth2Auth';\n\n if (config) {\n this.setConfig(config, alfrescoApi);\n }\n }\n\n setConfig(config: AlfrescoApiConfig, alfrescoApi: AlfrescoApi) {\n this.config = config;\n this.storage.setDomainPrefix(config.domainPrefix);\n\n if (this.config.oauth2) {\n if (this.config.oauth2.host === undefined || this.config.oauth2.host === null) {\n throw new Error('Missing the required oauth2 host parameter');\n }\n\n if (this.config.oauth2.clientId === undefined || this.config.oauth2.clientId === null) {\n throw new Error('Missing the required oauth2 clientId parameter');\n }\n\n if (this.config.oauth2.scope === undefined || this.config.oauth2.scope === null) {\n throw new Error('Missing the required oauth2 scope parameter');\n }\n\n if ((this.config.oauth2.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 };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise = this.callCustomApi(this.discovery.tokenEndpoint, 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n (data: any) => {\n this.saveUsername(username);\n this.silentRefresh();\n this.storeAccessToken(data.access_token, data.expires_in, data.refresh_token);\n\n resolve(data);\n },\n (error) => {\n if ((error.error && error.error.status === 401) || error.status === 401) {\n this.emit('unauthorized');\n }\n this.emit('error');\n reject(error.error);\n }\n );\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n pollingRefreshToken() {\n this.refreshTokenIntervalPolling = setInterval(async () => {\n try {\n await this.refreshToken();\n } catch {\n /* continue regardless of error */\n }\n }, this.config.oauth2.refreshTokenTimeout);\n\n this.refreshTokenIntervalPolling.unref();\n }\n\n /**\n * Refresh the Token\n * @returns promise of void\n */\n refreshToken(): Promise<any> {\n const auth = 'Basic ' + this.universalBtoa(this.config.oauth2.clientId);\n const headerParams = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Cache-Control': 'no-cache',\n Authorization: auth\n };\n const formParams = {\n grant_type: 'refresh_token',\n refresh_token: this.authentications.oauth2.refreshToken\n };\n\n const contentTypes = ['application/x-www-form-urlencoded'];\n const accepts = ['application/json'];\n\n const promise = new Promise((resolve, reject) => {\n this.callCustomApi(this.discovery.tokenEndpoint, 'POST', {}, {}, headerParams, formParams, {}, contentTypes, accepts).then(\n (data: any) => {\n this.setToken(data.access_token, data.refresh_token);\n resolve(data);\n },\n (error) => {\n if (error.error && error.error.status === 401) {\n this.emit('unauthorized');\n }\n this.emit('error');\n reject(error.error);\n }\n );\n });\n\n return this.addPromiseListeners(promise, new EventEmitter());\n }\n\n universalBtoa(stringToConvert: string) {\n try {\n return btoa(stringToConvert);\n } catch {\n return Buffer.from(stringToConvert).toString('base64');\n }\n }\n\n /**\n * Set the current Token\n */\n setToken(token: string, refreshToken: string) {\n this.authentications.oauth2.accessToken = token;\n this.authentications.oauth2.refreshToken = refreshToken;\n this.authentications.basicAuth.password = null;\n this.token = token;\n\n if (token) {\n this.emit('token_issued');\n this.emit('logged-in');\n }\n }\n\n /**\n * Get the current Token\n * @returns token value\n */\n getToken(): string {\n return this.token;\n }\n\n /**\n * return the Authentication\n * @returns authentications\n */\n getAuthentication(): Authentication {\n return this.authentications;\n }\n\n /**\n * Change the Host\n */\n changeHost(host: string) {\n this.config.hostOauth2 = host;\n }\n\n /**\n * If the client is logged in return true\n * @returns is logged in\n */\n isLoggedIn(): boolean {\n return !!this.authentications.oauth2.accessToken;\n }\n\n /**\n * Logout\n */\n async logOut() {\n this.checkAccessToken = true;\n\n const id_token = this.getIdToken();\n\n this.invalidateSession();\n this.setToken(null, null);\n\n const separation = this.discovery.logoutUrl.indexOf('?') > -1 ? '&' : '?';\n const redirectLogout = this.config.oauth2.redirectUriLogout || this.config.oauth2.redirectUri;\n const logoutUrl =\n this.discovery.logoutUrl +\n separation +\n 'post_logout_redirect_uri=' +\n encodeURIComponent(redirectLogout) +\n '&id_token_hint=' +\n encodeURIComponent(id_token);\n\n if (id_token != null && this.config.oauth2.implicitFlow && typeof window !== 'undefined') {\n window.location.href = logoutUrl;\n }\n }\n\n invalidateSession() {\n clearTimeout(this.refreshTokenTimeoutIframe);\n clearInterval(this.refreshTokenIntervalPolling);\n\n this.storage.removeItem('access_token');\n this.storage.removeItem('access_token_expires_in');\n this.storage.removeItem('access_token_stored_at');\n\n this.storage.removeItem('id_token');\n this.storage.removeItem('id_token');\n this.storage.removeItem('id_token_claims_obj');\n this.storage.removeItem('id_token_expires_at');\n this.storage.removeItem('id_token_stored_at');\n\n this.storage.removeItem('nonce');\n }\n\n exchangeTicketListener(alfrescoApi: AlfrescoApi) {\n this.on('token_issued', async () => {\n const authContentApi: AuthenticationApi = new AuthenticationApi(alfrescoApi);\n // Legacy stuff, needs deprecation, can not be more specific here because of circular dependency\n (authContentApi.apiClient as unknown as any).authentications = this.authentications;\n try {\n const ticketEntry = await authContentApi.getTicket();\n this.config.ticketEcm = ticketEntry.entry.id;\n this.emit('ticket_exchanged');\n } catch {\n // continue regardless of error\n }\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth2Config.js","sourceRoot":"","sources":["oauth2Config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Oauth2Config {\n clientId: string;\n secret?: string;\n host: string;\n authorizationUrl?: string;\n tokenUrl?: string;\n userinfoEndpoint?: string;\n logoutUrl?: string;\n scope: string;\n implicitFlow?: boolean;\n redirectUri: string;\n refreshTokenTimeout?: number;\n silentLogin?: boolean;\n redirectUriLogout?: string;\n redirectSilentIframeUri?: string;\n publicUrls?: string[];\n}\n"]}
1
+ {"version":3,"file":"oauth2Config.js","sourceRoot":"","sources":["oauth2Config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG","sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Oauth2Config {\n clientId: string;\n host: string;\n authorizationUrl?: string;\n tokenUrl?: string;\n userinfoEndpoint?: string;\n logoutUrl?: string;\n scope: string;\n implicitFlow?: boolean;\n redirectUri: string;\n refreshTokenTimeout?: number;\n silentLogin?: boolean;\n redirectUriLogout?: string;\n redirectSilentIframeUri?: string;\n publicUrls?: string[];\n}\n"]}