@microsoft/windows-admin-center-sdk 2.186.0 → 2.296.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/angular/assets/strings/cs-CZ/strings.json +1 -1
  2. package/angular/assets/strings/de-DE/strings.json +1 -1
  3. package/angular/assets/strings/es-ES/strings.json +1 -1
  4. package/angular/assets/strings/fr-FR/strings.json +1 -1
  5. package/angular/assets/strings/hu-HU/strings.json +1 -1
  6. package/angular/assets/strings/it-IT/strings.json +1 -1
  7. package/angular/assets/strings/ja-JP/strings.json +1 -1
  8. package/angular/assets/strings/ko-KR/strings.json +1 -1
  9. package/angular/assets/strings/nl-NL/strings.json +1 -1
  10. package/angular/assets/strings/pl-PL/strings.json +1 -1
  11. package/angular/assets/strings/pt-BR/strings.json +1 -1
  12. package/angular/assets/strings/pt-PT/strings.json +1 -1
  13. package/angular/assets/strings/ru-RU/strings.json +1 -1
  14. package/angular/assets/strings/strings.json +1 -1
  15. package/angular/assets/strings/sv-SE/strings.json +1 -1
  16. package/angular/assets/strings/tr-TR/strings.json +1 -1
  17. package/angular/assets/strings/zh-CN/strings.json +1 -1
  18. package/angular/assets/strings/zh-TW/strings.json +1 -1
  19. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js +1103 -1209
  20. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js.map +1 -1
  21. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js +2 -2
  22. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js.map +1 -1
  23. package/angular/esm2015/src/controls/actions/actions.module.js +2 -2
  24. package/angular/esm2015/src/controls/actions/containers/action-bar/action-bar.component.js +2 -2
  25. package/angular/esm2015/src/controls/actions/items/action-button/action-button-renderer.component.js +5 -5
  26. package/angular/esm2015/src/controls/actions/items/action-dropdown/action-dropdown.component.js +31 -13
  27. package/angular/esm2015/src/controls/actions/items/action-item.component.js +7 -3
  28. package/angular/esm2015/src/controls/badge/badge-base.component.js +2 -13
  29. package/angular/esm2015/src/controls/badge/bugfixes-feature-badge.component.js +42 -70
  30. package/angular/esm2015/src/controls/badge/coming-soon-badge.component.js +42 -70
  31. package/angular/esm2015/src/controls/badge/credssp-enabled-badge.component.js +42 -70
  32. package/angular/esm2015/src/controls/badge/critical-badge.component.js +42 -70
  33. package/angular/esm2015/src/controls/badge/custom-badge.component.js +42 -70
  34. package/angular/esm2015/src/controls/badge/feedback-badge.component.js +42 -70
  35. package/angular/esm2015/src/controls/badge/improvement-feature-badge.component.js +42 -70
  36. package/angular/esm2015/src/controls/badge/new-badge.component.js +42 -70
  37. package/angular/esm2015/src/controls/badge/new-feature-badge.component.js +42 -70
  38. package/angular/esm2015/src/controls/badge/preview-badge.component.js +42 -70
  39. package/angular/esm2015/src/controls/badge/warning-badge.component.js +42 -70
  40. package/angular/esm2015/src/controls/breadcrumb/breadcrumb.component.js +6 -6
  41. package/angular/esm2015/src/controls/breadcrumb-header/breadcrumb-header.component.js +2 -2
  42. package/angular/esm2015/src/controls/data-table/data-table-column.component.js +5 -3
  43. package/angular/esm2015/src/controls/data-table/data-table.component.js +20 -26
  44. package/angular/esm2015/src/controls/data-table/extensions/data-table-column-picker-extension.js +2 -1
  45. package/angular/esm2015/src/controls/details/details.component.js +2 -2
  46. package/angular/esm2015/src/controls/dialog/base-dialog.component.js +1 -1
  47. package/angular/esm2015/src/controls/dialog/confirmation-dialog/confirmation-dialog.component.js +20 -30
  48. package/angular/esm2015/src/controls/dialog/dialog.service.js +7 -3
  49. package/angular/esm2015/src/controls/dropdown/dropdown.component.js +2 -2
  50. package/angular/esm2015/src/controls/form/form-field/array/array-form-field.component.js +50 -40
  51. package/angular/esm2015/src/controls/form/form-field/checklist/checklist-form-field.component.js +3 -3
  52. package/angular/esm2015/src/controls/form/form-field/combobox/combobox-form-field.component.js +14 -13
  53. package/angular/esm2015/src/controls/form/form-field/datetime/datetime-form-field.component.js +2 -2
  54. package/angular/esm2015/src/controls/form/form-field/form-field.component.js +16 -4
  55. package/angular/esm2015/src/controls/form/form-field/options-form-field/form-field-option.component.js +5 -3
  56. package/angular/esm2015/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.js +25 -21
  57. package/angular/esm2015/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.js +5 -5
  58. package/angular/esm2015/src/controls/form/form-field/search/search-form-field.component.js +2 -2
  59. package/angular/esm2015/src/controls/form/form-field/tags/tags-form-field.component.js +2 -2
  60. package/angular/esm2015/src/controls/form/validation-alert/validation-alert.component.js +4 -10
  61. package/angular/esm2015/src/controls/form/validation-alert/validation-alert.js +1 -1
  62. package/angular/esm2015/src/controls/horizontal-bar-chart/stacked-horizontal-bar-chart.component.js +17 -1
  63. package/angular/esm2015/src/controls/icon/layered-icon/layered-icon.component.js +12 -1
  64. package/angular/esm2015/src/controls/icon/layered-icon/status/status-icon.component.js +53 -9
  65. package/angular/esm2015/src/controls/loading-wheel/loading-wheel.component.js +17 -1
  66. package/angular/esm2015/src/controls/master-view/master-view.component.js +34 -30
  67. package/angular/esm2015/src/controls/pivot/pivot-tab.component.js +1 -1
  68. package/angular/esm2015/src/controls/pivot/pivot.component.js +21 -9
  69. package/angular/esm2015/src/controls/property-grid/property-grid.component.js +13 -29
  70. package/angular/esm2015/src/controls/schema-form/schema-form-content.component.js +7 -4
  71. package/angular/esm2015/src/controls/settings/common-settings/common-settings.component.js +23 -35
  72. package/angular/esm2015/src/controls/settings/settings.component.js +28 -1
  73. package/angular/esm2015/src/controls/settings/settings.module.js +8 -3
  74. package/angular/esm2015/src/controls/tooltip/tooltip-host.component.js +16 -5
  75. package/angular/esm2015/src/controls/wizard/wizard.component.js +38 -6
  76. package/angular/esm2015/src/directives/clamp/clamp.directive.js +26 -7
  77. package/angular/esm2015/src/directives/discard/discard.directive.js +2 -2
  78. package/angular/esm2015/src/directives/markdown/markdown.directive.js +5 -18
  79. package/angular/esm2015/src/generated/strings.js +1 -1
  80. package/angular/esm2015/src/guards/experiment.guard.service.js +14 -1
  81. package/angular/esm2015/src/pipes/boolean-converter-pipe.js +11 -1
  82. package/angular/esm2015/src/pipes/byte-unit-converter-pipe.js +11 -1
  83. package/angular/esm2015/src/pipes/enum-converter-pipe.js +16 -1
  84. package/angular/esm2015/src/pipes/format-pipe.js +11 -1
  85. package/angular/esm2015/src/pipes/highlight-pipe.js +11 -1
  86. package/angular/esm2015/src/pipes/yesno-converter-pipe.js +11 -1
  87. package/angular/esm2015/src/service/gateway.service.js +8 -5
  88. package/angular/esm2015/src/service/notification.service.js +23 -1
  89. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js +1042 -1069
  90. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js.map +1 -1
  91. package/angular/package.json +0 -1
  92. package/angular/src/controls/actions/items/action-dropdown/action-dropdown.component.d.ts +2 -0
  93. package/angular/src/controls/actions/items/action-item.component.d.ts +11 -1
  94. package/angular/src/controls/badge/badge-base.component.d.ts +0 -4
  95. package/angular/src/controls/data-table/data-table-column.component.d.ts +2 -1
  96. package/angular/src/controls/data-table/data-table.component.d.ts +4 -0
  97. package/angular/src/controls/dialog/base-dialog.component.d.ts +1 -1
  98. package/angular/src/controls/form/form-field/form-field.component.d.ts +10 -1
  99. package/angular/src/controls/form/form-field/options-form-field/form-field-option.component.d.ts +5 -1
  100. package/angular/src/controls/form/validation-alert/validation-alert.component.d.ts +0 -4
  101. package/angular/src/controls/form/validation-alert/validation-alert.d.ts +0 -1
  102. package/angular/src/controls/horizontal-bar-chart/stacked-horizontal-bar-chart.component.d.ts +16 -0
  103. package/angular/src/controls/icon/layered-icon/layered-icon.component.d.ts +11 -0
  104. package/angular/src/controls/icon/layered-icon/status/status-icon.component.d.ts +13 -2
  105. package/angular/src/controls/loading-wheel/loading-wheel.component.d.ts +16 -0
  106. package/angular/src/controls/master-view/master-view.component.d.ts +1 -0
  107. package/angular/src/controls/pivot/pivot-tab.component.d.ts +0 -1
  108. package/angular/src/controls/pivot/pivot.component.d.ts +4 -0
  109. package/angular/src/controls/settings/common-settings/common-settings.component.d.ts +6 -5
  110. package/angular/src/controls/settings/settings.component.d.ts +27 -0
  111. package/angular/src/controls/settings/settings.module.d.ts +7 -6
  112. package/angular/src/controls/tooltip/tooltip-host.component.d.ts +1 -1
  113. package/angular/src/controls/wizard/wizard.component.d.ts +23 -0
  114. package/angular/src/directives/clamp/clamp.directive.d.ts +5 -0
  115. package/angular/src/directives/markdown/markdown.directive.d.ts +2 -3
  116. package/angular/src/generated/strings.d.ts +9 -0
  117. package/angular/src/guards/experiment.guard.service.d.ts +13 -0
  118. package/angular/src/pipes/boolean-converter-pipe.d.ts +10 -0
  119. package/angular/src/pipes/byte-unit-converter-pipe.d.ts +10 -0
  120. package/angular/src/pipes/enum-converter-pipe.d.ts +15 -0
  121. package/angular/src/pipes/format-pipe.d.ts +10 -0
  122. package/angular/src/pipes/highlight-pipe.d.ts +10 -0
  123. package/angular/src/pipes/yesno-converter-pipe.d.ts +10 -0
  124. package/angular/src/service/gateway.service.d.ts +3 -1
  125. package/angular/src/service/notification.service.d.ts +22 -0
  126. package/core/base/environment.d.ts +7 -0
  127. package/core/base/environment.js.map +1 -1
  128. package/core/base/versioned-object.js +2 -2
  129. package/core/base/versioned-object.js.map +1 -1
  130. package/core/data/cim-stream.js +8 -1
  131. package/core/data/cim-stream.js.map +1 -1
  132. package/core/data/core-environment.d.ts +4 -0
  133. package/core/data/core-environment.js +1 -0
  134. package/core/data/core-environment.js.map +1 -1
  135. package/core/data/crypto.js +10 -9
  136. package/core/data/crypto.js.map +1 -1
  137. package/core/data/file-transfer.js +5 -1
  138. package/core/data/file-transfer.js.map +1 -1
  139. package/core/data/gateway-connection.d.ts +11 -1
  140. package/core/data/gateway-connection.js +51 -9
  141. package/core/data/gateway-connection.js.map +1 -1
  142. package/core/data/http-constants.d.ts +5 -1
  143. package/core/data/http-constants.js +5 -1
  144. package/core/data/http-constants.js.map +1 -1
  145. package/core/data/net.d.ts +15 -11
  146. package/core/data/net.js +44 -41
  147. package/core/data/net.js.map +1 -1
  148. package/core/data/node-connection.d.ts +2 -2
  149. package/core/data/node-connection.js.map +1 -1
  150. package/core/data/powershell-stream.js +11 -3
  151. package/core/data/powershell-stream.js.map +1 -1
  152. package/core/data/powershell.d.ts +17 -1
  153. package/core/data/powershell.js +35 -9
  154. package/core/data/powershell.js.map +1 -1
  155. package/core/data/settings-manager.d.ts +9 -0
  156. package/core/data/settings-manager.js +18 -1
  157. package/core/data/settings-manager.js.map +1 -1
  158. package/core/generated/powershell-scripts.d.ts +5 -4
  159. package/core/generated/powershell-scripts.js +5 -4
  160. package/core/generated/powershell-scripts.js.map +1 -1
  161. package/core/host/host-core-manager.d.ts +36 -0
  162. package/core/host/host-core-manager.js +134 -0
  163. package/core/host/host-core-manager.js.map +1 -0
  164. package/core/host/host-core-message-type.d.ts +12 -0
  165. package/core/host/host-core-message-type.js +17 -0
  166. package/core/host/host-core-message-type.js.map +1 -0
  167. package/core/host/host-core-messages.d.ts +14 -0
  168. package/core/host/host-core-messages.js +3 -0
  169. package/core/host/host-core-messages.js.map +1 -0
  170. package/core/manifest/manifest-loader.d.ts +2 -1
  171. package/core/manifest/manifest-loader.js +27 -18
  172. package/core/manifest/manifest-loader.js.map +1 -1
  173. package/core/notification/notification.js +4 -0
  174. package/core/notification/notification.js.map +1 -1
  175. package/core/security/authorization-manager.d.ts +44 -0
  176. package/core/security/authorization-manager.js +111 -5
  177. package/core/security/authorization-manager.js.map +1 -1
  178. package/core/security/sign-on-manager.d.ts +109 -0
  179. package/core/security/sign-on-manager.js +119 -0
  180. package/core/security/sign-on-manager.js.map +1 -0
  181. package/core/security/tag-manager.js.map +1 -1
  182. package/core/shared/cluster-inventory/cluster-inventory-cache.js +3 -2
  183. package/core/shared/cluster-inventory/cluster-inventory-cache.js.map +1 -1
  184. package/core/shared/gateway-inventory/gateway-inventory-cache.d.ts +1 -1
  185. package/core/shared/gateway-inventory/gateway-inventory-cache.js +1 -1
  186. package/core/shared/gateway-inventory/gateway-inventory-cache.js.map +1 -1
  187. package/core/shared/server-inventory/server-inventory-cache.js +2 -1
  188. package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
  189. package/core/shared/tool-inventory/tool-inventory-cache.js +1 -1
  190. package/core/shared/tool-inventory/tool-inventory-cache.js.map +1 -1
  191. package/e2e/assets/strings/cs-CZ/strings.json +1 -1
  192. package/e2e/assets/strings/de-DE/strings.json +1 -1
  193. package/e2e/assets/strings/es-ES/strings.json +1 -1
  194. package/e2e/assets/strings/fr-FR/strings.json +1 -1
  195. package/e2e/assets/strings/hu-HU/strings.json +1 -1
  196. package/e2e/assets/strings/it-IT/strings.json +1 -1
  197. package/e2e/assets/strings/ja-JP/strings.json +1 -1
  198. package/e2e/assets/strings/ko-KR/strings.json +1 -1
  199. package/e2e/assets/strings/nl-NL/strings.json +1 -1
  200. package/e2e/assets/strings/pl-PL/strings.json +1 -1
  201. package/e2e/assets/strings/pt-BR/strings.json +1 -1
  202. package/e2e/assets/strings/pt-PT/strings.json +1 -1
  203. package/e2e/assets/strings/ru-RU/strings.json +1 -1
  204. package/e2e/assets/strings/strings.json +1 -1
  205. package/e2e/assets/strings/sv-SE/strings.json +1 -1
  206. package/e2e/assets/strings/tr-TR/strings.json +1 -1
  207. package/e2e/assets/strings/zh-CN/strings.json +1 -1
  208. package/e2e/assets/strings/zh-TW/strings.json +1 -1
  209. package/package.json +5 -5
  210. package/styles/css/fonts.css +2 -2
  211. package/styles/css/main.css +1 -1
  212. package/styles/fonts/ServMDL2/ServMDL2-4.62.woff +0 -0
  213. package/styles/fonts/ServMDL2/ServMDL2.json +238 -2039
  214. package/styles/fonts/ServMDL2/ServMDL2.scss +238 -2039
  215. package/tools/gulp-manifest-resource/index.js +3 -1
  216. package/tools/gulp-manifest-resource/index.js.map +1 -1
  217. package/tools/gulp-ps-cim/index.js +1 -1
  218. package/tools/gulp-ps-cim/index.js.map +1 -1
  219. package/tools/gulp-ps-cim/powershell-cim-config-schema.json +1 -1
  220. package/tools/gulp-ps-code/index.js +36 -2
  221. package/tools/gulp-ps-code/index.js.map +1 -1
  222. package/tools/gulp-ps-code/ps-code-convert.js +4 -8
  223. package/tools/gulp-ps-code/ps-code-convert.js.map +1 -1
  224. package/tools/gulp-ps-resjson/index.js +79 -74
  225. package/tools/gulp-ps-resjson/index.js.map +1 -1
  226. package/tools/module-template/build/pipelines/codeinspector.yml +27 -0
  227. package/tools/module-template/gulpfile.ts/common/lint.ts +3 -3
  228. package/tools/module-template/gulpfile.ts/common/pack.ts +14 -14
  229. package/tools/module-template/gulpfile.ts/common/ui-test-automation.ts +40 -0
  230. package/tools/module-template/gulpfile.ts/common/utilities.ts +10 -10
  231. package/tools/module-template/gulpfile.ts/common/validate.ts +14 -4
  232. package/tools/module-template/gulpfile.ts/index.ts +20 -8
  233. package/tools/wac-cli/src/upgrade/file-updater.d.ts +1 -0
  234. package/tools/wac-cli/src/upgrade/file-updater.js +7 -1
  235. package/tools/wac-cli/src/upgrade/file-updater.js.map +1 -1
  236. package/styles/fonts/ServMDL2/ServMDL2-4.33.woff +0 -0
package/core/data/net.js CHANGED
@@ -275,54 +275,42 @@ export class Net {
275
275
  * @param jwk the JWK (Json Web Key)
276
276
  * @param usersName name of user.
277
277
  * @param password the password.
278
+ * @param logonUser the gateway user
279
+ * @param expirationTimeInMs manage as token expiration time in milliseconds
278
280
  * @return the token string.
279
281
  */
280
- static createEncryptedAuthenticationHeader(jwk, userNames, password) {
282
+ static createEncryptedAuthenticationHeader(jwk, userNames, password, logonUser, expirationTimeInMs) {
281
283
  const credentials = Object.assign(Object.assign({}, Net.toUsernameAndDomain(userNames)), { password: password, passwordEncryptedWith: undefined });
282
- return Crypto.encryptRsaSha1(jwk, password)
284
+ const passwordData = Net.createPasswordData(credentials, logonUser, expirationTimeInMs);
285
+ return Crypto.encryptRsaSha1(jwk, passwordData)
283
286
  .pipe(map(encryptedPassword => {
284
287
  credentials.password = encryptedPassword;
285
- credentials.passwordEncryptedWith = 'JWK';
288
+ credentials.passwordEncryptedWith = 'JWK2';
286
289
  return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));
287
290
  }), catchError(error => of(window.btoa(Net.utf8Encode(JSON.stringify(credentials))))));
288
291
  }
289
- static createEncryptedExtensionDataHeader(jwk, data) {
290
- return Crypto.encryptRsaSha1(jwk, data)
291
- .pipe(map(encryptedData => window.btoa(Net.utf8Encode(encryptedData))));
292
+ static createPasswordData(credentials, logOnUser, expirationTimeInMs) {
293
+ const millisecondsInHour = 60 * 60 * 1000;
294
+ const hoursInYear = 365 * 24;
295
+ const currentTimeStamp = Date.now();
296
+ const expirationOffsetInMilliseconds = expirationTimeInMs || (hoursInYear * millisecondsInHour);
297
+ const passwordData = {
298
+ p: credentials.password,
299
+ l: logOnUser,
300
+ t: currentTimeStamp,
301
+ e: currentTimeStamp + expirationOffsetInMilliseconds
302
+ };
303
+ return JSON.stringify(passwordData);
292
304
  }
293
305
  /**
294
- * Upgrade existing plain token to JWK encrypted token for authentication header value.
295
- *
296
- * @param jwk the JWK (Json Web Key)
297
- * @param token the token value passed from other modules.
298
- * @return the token string.
306
+ * Creates encrypted data for auth header
307
+ * @param jwk the JSON web key to be used to encrypt data
308
+ * @param data the data to be encrypted
309
+ * @returns an encrypted string
299
310
  */
300
- static upgradeEncryptedAuthenticationHeader(jwk, token) {
301
- let credentials;
302
- let upgraded = false;
303
- const encoded = Net.utf8Decode(window.atob(token));
304
- if (!encoded || encoded.length >= token.length) {
305
- // don't know how to treat this.
306
- return of({ upgraded, token });
307
- }
308
- try {
309
- credentials = JSON.parse(encoded);
310
- }
311
- catch (_a) {
312
- credentials = null;
313
- }
314
- if (!credentials || credentials.passwordEncryptedWith === 'JWK') {
315
- // don't know or already encrypted.
316
- return of({ upgraded, token });
317
- }
318
- return Crypto.encryptRsaSha1(jwk, credentials.password)
319
- .pipe(catchError(error => of({ upgraded, token })), map(encryptedPassword => {
320
- credentials.password = encryptedPassword;
321
- credentials.passwordEncryptedWith = 'JWK';
322
- token = window.btoa(Net.utf8Encode(JSON.stringify(credentials)));
323
- upgraded = true;
324
- return { upgraded, token };
325
- }));
311
+ static createEncryptedExtensionDataHeader(jwk, data) {
312
+ return Crypto.encryptRsaSha1(jwk, data)
313
+ .pipe(map(encryptedData => window.btoa(Net.utf8Encode(encryptedData))));
326
314
  }
327
315
  /**
328
316
  * Create /api/nodes URL with relativeUrl.
@@ -464,20 +452,34 @@ export class Net {
464
452
  }
465
453
  return strings.ErrorCode.Generic.message.format(code);
466
454
  }
455
+ /**
456
+ * Determine if this is an authorization login error. This code never work if it uses NTLM or Kerberos.
457
+ *
458
+ * @param error The ajax error object.
459
+ */
460
+ static isUnauthorizedLogin(error) {
461
+ var _a, _b, _c;
462
+ // new login 401 handling.
463
+ const forbidden = (_c = (_b = (_a = error === null || error === void 0 ? void 0 : error.xhr) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.error) === null || _c === void 0 ? void 0 : _c.forbidden;
464
+ return error.status === 401 /* Unauthorized */ && forbidden && forbidden === 'UnauthorizedLogin';
465
+ }
467
466
  /**
468
467
  * Determine if this is an authorization error.
469
468
  *
470
469
  * @param error The ajax error object.
471
470
  */
472
471
  static isUnauthorized(error) {
473
- const forbidden = error.xhr && error.xhr.response && error.xhr.response.error && error.xhr.response.error.forbidden;
472
+ var _a, _b;
473
+ const errorObject = (_b = (_a = error === null || error === void 0 ? void 0 : error.xhr) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.error;
474
+ const forbidden = errorObject === null || errorObject === void 0 ? void 0 : errorObject.forbidden;
474
475
  if (forbidden) {
475
476
  // new 403 handling.
476
477
  return error.status === 403 /* Forbidden */ && forbidden === 'Unauthorized';
477
478
  }
478
479
  else {
479
- // legacy 401 handling.
480
- return error.status === 401 /* Unauthorized */;
480
+ // legacy 401 handling. (this should be obsolete now)
481
+ const unauthorized = errorObject === null || errorObject === void 0 ? void 0 : errorObject.unauthorized;
482
+ return error.status === 401 /* Unauthorized */ && !(unauthorized && unauthorized === 'UnauthorizedLogin');
481
483
  }
482
484
  }
483
485
  /**
@@ -486,7 +488,8 @@ export class Net {
486
488
  * @param error The ajax error object.
487
489
  */
488
490
  static isForbidden(error) {
489
- const forbidden = error.xhr && error.xhr.response && error.xhr.response.error && error.xhr.response.error.forbidden;
491
+ var _a, _b, _c;
492
+ const forbidden = (_c = (_b = (_a = error === null || error === void 0 ? void 0 : error.xhr) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.error) === null || _c === void 0 ? void 0 : _c.forbidden;
490
493
  if (forbidden) {
491
494
  // new forbidden.
492
495
  return error.status === 400 /* BadRequest */ && forbidden === 'Forbidden';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../packages/core/data/net.ts"],"names":[],"mappings":"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","file":"net.js","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { AjaxError } from 'rxjs/ajax';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { Strings } from '../generated/strings';\r\nimport { Crypto } from './crypto';\r\nimport { ErrorExtended } from './error-extended';\r\nimport { HttpStatusCode } from './http-constants';\r\n\r\n/**\r\n * Escape binary string code\r\n * @param data A value representing original binary string code\r\n */\r\ndeclare function escape(data: string): string;\r\n\r\n/**\r\n * Unescape non-binary string code\r\n * @param data A value representing original non-binary string code\r\n */\r\ndeclare function unescape(data: string): string;\r\n\r\n/**\r\n * The options interface of getErrorMessage function\r\n */\r\nexport interface ErrorMessageOptions {\r\n /**\r\n * adding additional error message\r\n * addNativeError: native error code\r\n */\r\n addNativeError?: boolean;\r\n\r\n /**\r\n * Add error prefix for output string.\r\n *\r\n * \"Error: {error message}\"\r\n */\r\n errorPrefix?: boolean;\r\n\r\n\r\n /**\r\n * Use the detailRecordremoteExceptionMessage on the error instead of detailRecord.message\r\n */\r\n useRemoteExceptionMessage?: boolean;\r\n}\r\n\r\n/**\r\n * Net communication class.\r\n * @dynamic\r\n */\r\nexport class Net {\r\n private static cachedErrorCodeMap: { [index: number]: string };\r\n private static get errorCodeMap(): { [index: number]: string } {\r\n if (!Net.cachedErrorCodeMap) {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n Net.cachedErrorCodeMap = {\r\n // added from https://msdn.microsoft.com/en-us/library/aa392154(v=vs.85).aspx\r\n 0: strings.ErrorCode.Code0.message,\r\n 5: strings.ErrorCode.Code5.message,\r\n 50: strings.ErrorCode.Code50.message,\r\n 87: strings.ErrorCode.Code87.message,\r\n 110: strings.ErrorCode.Code110.message,\r\n 1323: strings.ErrorCode.Code1323.message,\r\n 1326: strings.ErrorCode.Code1326.message,\r\n 1355: strings.ErrorCode.Code1355.message,\r\n 2224: strings.ErrorCode.Code2224.message,\r\n 2691: strings.ErrorCode.Code2691.message,\r\n 2692: strings.ErrorCode.Code2692.message,\r\n 0x80041087: strings.ErrorCode.Code8004108.message\r\n };\r\n }\r\n\r\n return Net.cachedErrorCodeMap;\r\n }\r\n\r\n /**\r\n * The static definition of Web API URLs.\r\n */\r\n public static apiVersionParam = 'api-version';\r\n public static apiVersion20190201 = '2019-02-01';\r\n public static apiRoot = '/api/{0}';\r\n public static batch = '/batch';\r\n public static streamSocket = '{0}/api/streams/socket/{1}';\r\n public static downlevel = 'features/downlevelSupport';\r\n public static downlevelInstall = Net.downlevel + '/install';\r\n public static downlevelComponents = Net.downlevel + '/components';\r\n public static extensionsSettings = '/settings/extension';\r\n public static installedExtensions = '/settings/extension/installed';\r\n public static extensions = '/extensions';\r\n public static updatesSettings = '/settings/updates';\r\n public static isExtensionUpdateAvailable = Net.extensions + '/isUpdateAvailable';\r\n public static cimClass = 'features/cim/namespaces/{0}/classes/{1}';\r\n public static cimQuery = 'features/cim/query';\r\n public static cimInvoke = '/methods/{0}/invoke';\r\n public static powerShellApiInvokeCommand = 'features/powershellApi/invokeCommand';\r\n public static powerShellApiSessions = 'features/powershellApi/pssessions/{0}';\r\n public static powerShellApiExecuteCommand: string = Net.powerShellApiSessions + '/invokeCommand';\r\n public static powerShellApiRetrieveOutput: string = Net.powerShellApiSessions + '?$expand=output';\r\n public static powerShellApiCancelCommand: string = Net.powerShellApiSessions + '/cancel';\r\n public static powerShellConsoleSessions = 'features/powershellConsole/pssessions/{0}';\r\n public static powerShellConsoleExecuteCommand: string = Net.powerShellConsoleSessions + '/invokeCommand';\r\n public static powerShellConsoleRetrieveOutput: string = Net.powerShellConsoleSessions + '?$expand=output';\r\n public static stopCommand: string = Net.powerShellConsoleSessions + '/cancel';\r\n public static tabCommand: string = Net.powerShellConsoleSessions + '/tab';\r\n public static userProfile = '/settings/user';\r\n public static applicationSettings = '/settings/all';\r\n public static adminSettings = '/settings/admin';\r\n public static user = '/user';\r\n\r\n public static fileTransferFormat = 'features/fileTransfer/files/{0}';\r\n public static fileTransferDownloadPost: string = Net.fileTransferFormat + '/download';\r\n public static fileTransferUpload: string = Net.fileTransferFormat + '/uploadlink';\r\n\r\n public static jeaFeature = 'features/jea/endpoint';\r\n public static jeaExport = Net.jeaFeature + '/export';\r\n\r\n public static gateway = '/gateway';\r\n public static gatewayAccessCheck = Net.gateway + '/access/check';\r\n public static gatewayStatus = Net.gateway + '/status';\r\n\r\n // {HttpMethod} {relativeNodeUrl} HTTP/1.1\r\n public static multiPartCallBodyUrl = '{0} {1} HTTP/1.1';\r\n\r\n /**\r\n * Encodes the specified data as Base64-encoded URL.\r\n *\r\n * If the resultant URL is longer than 260 characters, it is converted to a\r\n * relative path where each segment (e.g. '/') defines the character length boundary.\r\n * The HTTP.SYS subsystem in Windows does now allow a URL segment larger than 260\r\n * characters without changing a Registry key and restarting the OS.\r\n * @param data The data to be encoded.\r\n * @return An encoded Base64 URL, potentially segmented by '/' every 260 characters.\r\n */\r\n public static toSegmentedBase64Url(data: string): string {\r\n const MAX_HTTP_SYS_URL_SEGMENT_LENGTH = 260;\r\n const base64Url = Net.utf8Base64UrlEncode(data);\r\n const parts = Net.splitByLength(base64Url, MAX_HTTP_SYS_URL_SEGMENT_LENGTH);\r\n return parts.join('/');\r\n }\r\n\r\n /**\r\n * Update URL with api-version=20190201.\r\n * @param url the original URL\r\n * @returns new url string added version parameter.\r\n */\r\n public static updateApiVersion20190201(url: string): string {\r\n const index = url.indexOf('?');\r\n const prefix = index > 0 ? '&' : '?';\r\n if (index > 0 && url.indexOf(`${Net.apiVersionParam}=`) > 0) {\r\n return url;\r\n }\r\n\r\n return `${url}${prefix}${Net.apiVersionParam}=${Net.apiVersion20190201}`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertIPv6ToLiteral(ipv6Address: string): string {\r\n let data = '';\r\n for (let i = 0; i < ipv6Address.length; i++) {\r\n let ch = ipv6Address.charAt(i);\r\n if (ch === ':') {\r\n ch = '-';\r\n } else if (ch === '%') {\r\n ch = 's';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return `${data}.ipv6-literal.net`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertLiteralToIPv6(literal: string): string {\r\n const firstSegment = literal.split('.ipv6-literal.net')[0];\r\n if (!firstSegment) {\r\n throw new Error('Not recognized as an IPv6 literal format: \\'{0}\\'!'.format(literal || 'null'));\r\n }\r\n\r\n let data = '';\r\n for (let i = 0; i < firstSegment.length; i++) {\r\n let ch = firstSegment.charAt(i);\r\n if (ch === '-') {\r\n ch = ':';\r\n } else if (ch === 's') {\r\n ch = '%';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Encode a string with base64url.\r\n *\r\n * @param data the input string.\r\n * @return string the encoded string.\r\n */\r\n public static base64urlEncode(data: string): string {\r\n // REF: https://tools.ietf.org/html/rfc4648#section-5\r\n const base64 = window.btoa(data);\r\n let base64Url = '';\r\n\r\n for (let i = 0; i < base64.length; i++) {\r\n const ch = base64.charAt(i);\r\n\r\n switch (ch) {\r\n case '+':\r\n base64Url += '-';\r\n break;\r\n case '/':\r\n base64Url += '_';\r\n break;\r\n case '=':\r\n return base64Url;\r\n default:\r\n base64Url += ch;\r\n break;\r\n }\r\n }\r\n\r\n return base64Url;\r\n }\r\n\r\n /**\r\n * Decode a base64 url string.\r\n *\r\n * @param data the string to decode.\r\n * @return string the decoded string.\r\n */\r\n public static base64urlDecode(data: string): string {\r\n while (data.length % 4 !== 0) {\r\n data += '=';\r\n }\r\n\r\n data = data.replaceAll('-', '+').replaceAll('_', '/');\r\n return window.atob(data);\r\n }\r\n\r\n /**\r\n * Encode utf8 string.\r\n *\r\n * @param data the unencoded string.\r\n */\r\n public static utf8Encode(data: string): string {\r\n return unescape(encodeURIComponent(data));\r\n }\r\n\r\n /**\r\n * Decode utf8 string.\r\n *\r\n * @param data the encoded UTF8 string.\r\n */\r\n public static utf8Decode(data: string): string {\r\n return decodeURIComponent(escape(data));\r\n }\r\n\r\n /**\r\n * Encode with utf8 (first) and base64url (second).\r\n *\r\n * @param data data the original string to encode. The string can be full unicode character string.\r\n * @return string the encoded string used on a part of URL.\r\n */\r\n public static utf8Base64UrlEncode(data: string): string {\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Decode with utf8 (second) and base64url (first).\r\n *\r\n * @param data data the encoded URL string to decode.\r\n * @return string the decoded unicode string.\r\n */\r\n public static utf8Base64UrlDecode(data: string): string {\r\n const utf8: string = Net.base64urlDecode(data);\r\n return Net.utf8Decode(utf8);\r\n }\r\n\r\n /**\r\n * Create a key name from key value pairs.\r\n *\r\n * @param properties the key value pairs.\r\n * @return string the key name.\r\n */\r\n public static cimCreateName(properties: any): string {\r\n const data: string = JSON.stringify(properties);\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Get properties of the item from the response.\r\n *\r\n * @param data the item in the response object.\r\n * @return any the properties.\r\n */\r\n public static getItemProperties(data: any): any {\r\n if (data && data.properties) {\r\n return data.properties;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Get properties of first item from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the properties.\r\n */\r\n public static getFirstProperties(data: any): any {\r\n if (data && data.value && data.value.length) {\r\n if (data.value[0].properties) {\r\n return data.value[0].properties;\r\n }\r\n } else if (data && data.length) {\r\n return data[0];\r\n }\r\n\r\n return Net.getItemProperties(data);\r\n }\r\n\r\n /**\r\n * Get array of items from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the item array.\r\n */\r\n public static getItemArray(data: any): any {\r\n if (data && data.value) {\r\n return data.value;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Create JSON string with properties.\r\n *\r\n * @param data the input data.\r\n * @return string the JSON string with properties.\r\n */\r\n public static createPropertiesJSONString(data: any): string {\r\n return JSON.stringify({\r\n properties: data\r\n });\r\n }\r\n\r\n /**\r\n * Creates an encoded authentication header.\r\n *\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @return the token string.\r\n */\r\n public static createEncodedAuthenticationHeader(userNames: string[], password: string, passwordEncryptedWith: string = null): string {\r\n const credentials: any = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password\r\n };\r\n if (!MsftSme.isNullOrWhiteSpace(passwordEncryptedWith)) {\r\n credentials.passwordEncryptedWith = passwordEncryptedWith;\r\n }\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }\r\n\r\n public static toUsernameAndDomain(value: string): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string[]): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string | string[]): { domain: string, username: string } {\r\n let username: string[];\r\n if (Array.isArray(value)) {\r\n username = value;\r\n } else if (value.indexOf('@') >= 0) {\r\n username = value.split('@').reverse();\r\n } else {\r\n username = value.split('\\\\');\r\n }\r\n return {\r\n // if only a username was provided, use '.' (shorthand for the locale machine hostname)\r\n domain: username.length === 1 ? '.' : username[0],\r\n username: username.length === 1 ? username[0] : username[1],\r\n };\r\n }\r\n\r\n /**\r\n * Creates an encrypted authentication header value.\r\n *\r\n * @param jwk the JWK (Json Web Key)\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @return the token string.\r\n */\r\n public static createEncryptedAuthenticationHeader(jwk: string, userNames: string[], password: string): Observable<string> {\r\n const credentials = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password,\r\n passwordEncryptedWith: undefined\r\n };\r\n return Crypto.encryptRsaSha1(jwk, password)\r\n .pipe(\r\n map(encryptedPassword => {\r\n credentials.password = encryptedPassword;\r\n credentials.passwordEncryptedWith = 'JWK';\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }),\r\n catchError(error => of(\r\n window.btoa(Net.utf8Encode(JSON.stringify(credentials)))\r\n )\r\n ));\r\n }\r\n\r\n public static createEncryptedExtensionDataHeader(jwk: string, data: string) {\r\n return Crypto.encryptRsaSha1(jwk, data)\r\n .pipe(map(encryptedData => window.btoa(Net.utf8Encode(encryptedData))));\r\n }\r\n\r\n /**\r\n * Upgrade existing plain token to JWK encrypted token for authentication header value.\r\n *\r\n * @param jwk the JWK (Json Web Key)\r\n * @param token the token value passed from other modules.\r\n * @return the token string.\r\n */\r\n public static upgradeEncryptedAuthenticationHeader(jwk: string, token: string): Observable<{ upgraded: boolean, token: string }> {\r\n let credentials;\r\n let upgraded = false;\r\n const encoded = Net.utf8Decode(window.atob(token));\r\n if (!encoded || encoded.length >= token.length) {\r\n // don't know how to treat this.\r\n return of({ upgraded, token });\r\n }\r\n\r\n try {\r\n credentials = JSON.parse(encoded);\r\n } catch {\r\n credentials = null;\r\n }\r\n\r\n if (!credentials || credentials.passwordEncryptedWith === 'JWK') {\r\n // don't know or already encrypted.\r\n return of({ upgraded, token });\r\n }\r\n\r\n return Crypto.encryptRsaSha1(jwk, credentials.password)\r\n .pipe(\r\n catchError(error => of({ upgraded, token })),\r\n map(encryptedPassword => {\r\n credentials.password = encryptedPassword;\r\n credentials.passwordEncryptedWith = 'JWK';\r\n token = window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n upgraded = true;\r\n return { upgraded, token };\r\n }));\r\n }\r\n\r\n /**\r\n * Create /api/nodes URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayNodeApi(gatewayName: string, nodeName: string, relativeUrl?: string): string {\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n if (!nodeName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayNodeApi', 'nodeName'));\r\n }\r\n\r\n return Net.gatewayApi(gatewayName, `/nodes/${nodeName}${relativeUrl}`);\r\n }\r\n\r\n /**\r\n * Create /api URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayApi(gatewayName: string, relativeUrl?: string): string {\r\n if (!gatewayName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayApi', 'gatewayName'));\r\n }\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n gatewayName = gatewayName.toLowerCase();\r\n if (!gatewayName.startsWith('http://') && !gatewayName.startsWith('https://')) {\r\n gatewayName = 'https://' + gatewayName;\r\n }\r\n\r\n return `${gatewayName}/api${relativeUrl}`;\r\n }\r\n\r\n /**\r\n * Get error message from ajax result or any other error result and optionally includes native error message.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @param options add additional optional error message: such as native error messages if possible\r\n * @return string the error message.\r\n */\r\n public static getErrorMessage(error: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const prefixFormat = strings.Error.PrefixFormat.message;\r\n const errorPrefix = options && options.errorPrefix;\r\n const xhr = error && error.xhr;\r\n const exception = error && error.exception;\r\n\r\n if (typeof error === 'string') {\r\n return errorPrefix ? prefixFormat.format(error) : error;\r\n }\r\n\r\n if (xhr && xhr.response) {\r\n const message = Net.parseErrorResponse(xhr.response, options);\r\n if (message) {\r\n return errorPrefix ? prefixFormat.format(message) : message;\r\n }\r\n }\r\n\r\n if (error && error.message) {\r\n return errorPrefix ? prefixFormat.format(error.message) : error.message;\r\n }\r\n\r\n if (exception && exception.message) {\r\n return errorPrefix ? prefixFormat.format(exception.message) : exception.message;\r\n }\r\n\r\n const statusText = xhr && xhr.statusText;\r\n if (statusText) {\r\n return errorPrefix ? prefixFormat.format(statusText) : statusText;\r\n }\r\n\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n /**\r\n * Get error message from PowerShell ajax response.\r\n * Can be used by a PowerShell batch consumer to get error message in batch response.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n public static getPowerShellErrorMessage(response: any): string {\r\n const message = Net.parseErrorResponse(response);\r\n if (message) {\r\n return message;\r\n }\r\n\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n /**\r\n * Get error code from ajax result.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error code.\r\n */\r\n public static getErrorCode(error: any): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = error && error.xhr && error.xhr.response && error.xhr.response.error;\r\n if (!err) {\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n if (err.code) {\r\n return err.code;\r\n }\r\n\r\n throw new Error(strings.Error.NoCode.message);\r\n }\r\n\r\n /**\r\n * Get error message from ajax result excluding error stackTrace\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error.\r\n */\r\n public static getErrorMessageWithoutStacktrace(error: any): string {\r\n let errorMessage: string = Net.getErrorMessage(error);\r\n if (errorMessage) {\r\n const stackTraceIndex: number = errorMessage.toLowerCase().indexOf('stacktrace');\r\n if (stackTraceIndex > 0) {\r\n errorMessage = errorMessage.substring(0, stackTraceIndex);\r\n }\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n /**\r\n * Translates error code to string\r\n *\r\n * @param code the error code\r\n * @return string the related error string.\r\n */\r\n public static translateErrorCode(code: number): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const message: string = Net.errorCodeMap[code];\r\n if (message) {\r\n return strings.ErrorCode.Translated.message.format(message, code);\r\n }\r\n\r\n return strings.ErrorCode.Generic.message.format(code);\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorized(error: AjaxError): boolean {\r\n const forbidden = error.xhr && error.xhr.response && error.xhr.response.error && error.xhr.response.error.forbidden;\r\n if (forbidden) {\r\n // new 403 handling.\r\n return error.status === HttpStatusCode.Forbidden && forbidden === 'Unauthorized';\r\n } else {\r\n // legacy 401 handling.\r\n return error.status === HttpStatusCode.Unauthorized;\r\n }\r\n }\r\n\r\n /**\r\n * Determine if this is an forbidden error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isForbidden(error: AjaxError): boolean {\r\n const forbidden = error.xhr && error.xhr.response && error.xhr.response.error && error.xhr.response.error.forbidden;\r\n if (forbidden) {\r\n // new forbidden.\r\n return error.status === HttpStatusCode.BadRequest && forbidden === 'Forbidden';\r\n } else {\r\n // legacy 403 handling.\r\n return error.status === HttpStatusCode.Forbidden;\r\n }\r\n }\r\n\r\n /**\r\n * Get property from an ErrorExtended error object\r\n *\r\n * @param error The ErrorExtended error object.\r\n * @param sourceName The source of the error.\r\n * @param propertyName The property to get from the error object.\r\n * @return The value of the property or null if the source doesn't match.\r\n */\r\n public static getErrorExtendedProperty<T1, T2>(error: ErrorExtended<T1>, sourceName: string, propertyName: string): T2 {\r\n if (error.extendedSource &&\r\n (error.extendedSource === sourceName || error.extendedSource.includes(sourceName))) {\r\n return <T2>error?.extended[propertyName];\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Parse error message from standard ajax error and PowerShell errors.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n private static parseErrorResponse(response: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = response && response.error;\r\n if (err && err.message) {\r\n const errorMessage = err.message;\r\n\r\n if (options && options.addNativeError && err.detailRecord) {\r\n return strings.Error.AddNativeErrorCode.message.format(errorMessage, err.detailRecord.nativeErrorCode);\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n const psErrors: any[] = response && response.errors;\r\n if (psErrors && psErrors.length > 0) {\r\n if (psErrors.length === 1) {\r\n if (options && options.addNativeError && psErrors[0].detailRecord) {\r\n\r\n if (options && options.useRemoteExceptionMessage) {\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].message,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n if (options && options.useRemoteExceptionMessage && psErrors[0].detailRecord) {\r\n return strings.ErrorFormat.Single.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage);\r\n }\r\n return strings.ErrorFormat.Single.message.format(psErrors[0].errorType, psErrors[0].message);\r\n }\r\n\r\n let joinedMessage = '';\r\n for (let i = 0; i < psErrors.length; i++) {\r\n if (options && options.addNativeError && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.Details.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].message,\r\n psErrors[i].detailRecord.nativeErrorCode);\r\n } else if (options && options.useRemoteExceptionMessage && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].detailRecord.remoteExceptionMessage);\r\n } else {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(i + 1, psErrors[i].errorType, psErrors[i].message);\r\n }\r\n }\r\n\r\n return joinedMessage;\r\n }\r\n\r\n if (response && response.exception) {\r\n return response.exception;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private static splitByLength(text: string, length: number): string[] {\r\n const parts = new Array<string>();\r\n\r\n if (text === null) {\r\n return parts;\r\n }\r\n\r\n const totalLength = text.length;\r\n const count = Math.ceil(totalLength / length);\r\n\r\n if (count < 2) {\r\n parts.push(text);\r\n return parts;\r\n }\r\n\r\n const lastPart = count - 1;\r\n let position = 0;\r\n\r\n for (let i = 0; i < lastPart; i++, position += length) {\r\n parts.push(text.substr(position, length));\r\n }\r\n\r\n parts.push(text.substr(position));\r\n\r\n return parts;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../packages/core/data/net.ts"],"names":[],"mappings":"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","file":"net.js","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { AjaxError } from 'rxjs/ajax';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { Strings } from '../generated/strings';\r\nimport { Crypto } from './crypto';\r\nimport { ErrorExtended } from './error-extended';\r\nimport { HttpStatusCode } from './http-constants';\r\n\r\n/**\r\n * Escape binary string code\r\n * @param data A value representing original binary string code\r\n */\r\ndeclare function escape(data: string): string;\r\n\r\n/**\r\n * Unescape non-binary string code\r\n * @param data A value representing original non-binary string code\r\n */\r\ndeclare function unescape(data: string): string;\r\n\r\n/**\r\n * The options interface of getErrorMessage function\r\n */\r\nexport interface ErrorMessageOptions {\r\n /**\r\n * adding additional error message\r\n * addNativeError: native error code\r\n */\r\n addNativeError?: boolean;\r\n\r\n /**\r\n * Add error prefix for output string.\r\n *\r\n * \"Error: {error message}\"\r\n */\r\n errorPrefix?: boolean;\r\n\r\n\r\n /**\r\n * Use the detailRecordremoteExceptionMessage on the error instead of detailRecord.message\r\n */\r\n useRemoteExceptionMessage?: boolean;\r\n}\r\n\r\n\r\ninterface Credentials {\r\n username: string;\r\n password: string;\r\n passwordEncryptedWith: string;\r\n domain: string;\r\n}\r\n\r\n/**\r\n * Net communication class.\r\n * @dynamic\r\n */\r\nexport class Net {\r\n private static cachedErrorCodeMap: { [index: number]: string };\r\n private static get errorCodeMap(): { [index: number]: string } {\r\n if (!Net.cachedErrorCodeMap) {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n Net.cachedErrorCodeMap = {\r\n // added from https://msdn.microsoft.com/en-us/library/aa392154(v=vs.85).aspx\r\n 0: strings.ErrorCode.Code0.message,\r\n 5: strings.ErrorCode.Code5.message,\r\n 50: strings.ErrorCode.Code50.message,\r\n 87: strings.ErrorCode.Code87.message,\r\n 110: strings.ErrorCode.Code110.message,\r\n 1323: strings.ErrorCode.Code1323.message,\r\n 1326: strings.ErrorCode.Code1326.message,\r\n 1355: strings.ErrorCode.Code1355.message,\r\n 2224: strings.ErrorCode.Code2224.message,\r\n 2691: strings.ErrorCode.Code2691.message,\r\n 2692: strings.ErrorCode.Code2692.message,\r\n 0x80041087: strings.ErrorCode.Code8004108.message\r\n };\r\n }\r\n\r\n return Net.cachedErrorCodeMap;\r\n }\r\n\r\n /**\r\n * The static definition of Web API URLs.\r\n */\r\n public static apiVersionParam = 'api-version';\r\n public static apiVersion20190201 = '2019-02-01';\r\n public static apiRoot = '/api/{0}';\r\n public static batch = '/batch';\r\n public static streamSocket = '{0}/api/streams/socket/{1}';\r\n public static downlevel = 'features/downlevelSupport';\r\n public static downlevelInstall = Net.downlevel + '/install';\r\n public static downlevelComponents = Net.downlevel + '/components';\r\n public static extensionsSettings = '/settings/extension';\r\n public static installedExtensions = '/settings/extension/installed';\r\n public static extensions = '/extensions';\r\n public static updatesSettings = '/settings/updates';\r\n public static isExtensionUpdateAvailable = Net.extensions + '/isUpdateAvailable';\r\n public static cimClass = 'features/cim/namespaces/{0}/classes/{1}';\r\n public static cimQuery = 'features/cim/query';\r\n public static cimInvoke = '/methods/{0}/invoke';\r\n public static powerShellApiInvokeCommand = 'features/powershellApi/invokeCommand';\r\n public static powerShellApiSessions = 'features/powershellApi/pssessions/{0}';\r\n public static powerShellApiExecuteCommand: string = Net.powerShellApiSessions + '/invokeCommand';\r\n public static powerShellApiRetrieveOutput: string = Net.powerShellApiSessions + '?$expand=output';\r\n public static powerShellApiCancelCommand: string = Net.powerShellApiSessions + '/cancel';\r\n public static powerShellConsoleSessions = 'features/powershellConsole/pssessions/{0}';\r\n public static powerShellConsoleExecuteCommand: string = Net.powerShellConsoleSessions + '/invokeCommand';\r\n public static powerShellConsoleRetrieveOutput: string = Net.powerShellConsoleSessions + '?$expand=output';\r\n public static stopCommand: string = Net.powerShellConsoleSessions + '/cancel';\r\n public static tabCommand: string = Net.powerShellConsoleSessions + '/tab';\r\n public static userProfile = '/settings/user';\r\n public static applicationSettings = '/settings/all';\r\n public static adminSettings = '/settings/admin';\r\n public static user = '/user';\r\n\r\n public static fileTransferFormat = 'features/fileTransfer/files/{0}';\r\n public static fileTransferDownloadPost: string = Net.fileTransferFormat + '/download';\r\n public static fileTransferUpload: string = Net.fileTransferFormat + '/uploadlink';\r\n\r\n public static jeaFeature = 'features/jea/endpoint';\r\n public static jeaExport = Net.jeaFeature + '/export';\r\n\r\n public static gateway = '/gateway';\r\n public static gatewayAccessCheck = Net.gateway + '/access/check';\r\n public static gatewayStatus = Net.gateway + '/status';\r\n\r\n // {HttpMethod} {relativeNodeUrl} HTTP/1.1\r\n public static multiPartCallBodyUrl = '{0} {1} HTTP/1.1';\r\n\r\n /**\r\n * Encodes the specified data as Base64-encoded URL.\r\n *\r\n * If the resultant URL is longer than 260 characters, it is converted to a\r\n * relative path where each segment (e.g. '/') defines the character length boundary.\r\n * The HTTP.SYS subsystem in Windows does now allow a URL segment larger than 260\r\n * characters without changing a Registry key and restarting the OS.\r\n * @param data The data to be encoded.\r\n * @return An encoded Base64 URL, potentially segmented by '/' every 260 characters.\r\n */\r\n public static toSegmentedBase64Url(data: string): string {\r\n const MAX_HTTP_SYS_URL_SEGMENT_LENGTH = 260;\r\n const base64Url = Net.utf8Base64UrlEncode(data);\r\n const parts = Net.splitByLength(base64Url, MAX_HTTP_SYS_URL_SEGMENT_LENGTH);\r\n return parts.join('/');\r\n }\r\n\r\n /**\r\n * Update URL with api-version=20190201.\r\n * @param url the original URL\r\n * @returns new url string added version parameter.\r\n */\r\n public static updateApiVersion20190201(url: string): string {\r\n const index = url.indexOf('?');\r\n const prefix = index > 0 ? '&' : '?';\r\n if (index > 0 && url.indexOf(`${Net.apiVersionParam}=`) > 0) {\r\n return url;\r\n }\r\n\r\n return `${url}${prefix}${Net.apiVersionParam}=${Net.apiVersion20190201}`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertIPv6ToLiteral(ipv6Address: string): string {\r\n let data = '';\r\n for (let i = 0; i < ipv6Address.length; i++) {\r\n let ch = ipv6Address.charAt(i);\r\n if (ch === ':') {\r\n ch = '-';\r\n } else if (ch === '%') {\r\n ch = 's';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return `${data}.ipv6-literal.net`;\r\n }\r\n\r\n /**\r\n * Convert IPV6 address to literal format.\r\n *\r\n * @param ipv6Address the ipv6 address format.\r\n */\r\n public static convertLiteralToIPv6(literal: string): string {\r\n const firstSegment = literal.split('.ipv6-literal.net')[0];\r\n if (!firstSegment) {\r\n throw new Error('Not recognized as an IPv6 literal format: \\'{0}\\'!'.format(literal || 'null'));\r\n }\r\n\r\n let data = '';\r\n for (let i = 0; i < firstSegment.length; i++) {\r\n let ch = firstSegment.charAt(i);\r\n if (ch === '-') {\r\n ch = ':';\r\n } else if (ch === 's') {\r\n ch = '%';\r\n }\r\n\r\n data += ch;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Encode a string with base64url.\r\n *\r\n * @param data the input string.\r\n * @return string the encoded string.\r\n */\r\n public static base64urlEncode(data: string): string {\r\n // REF: https://tools.ietf.org/html/rfc4648#section-5\r\n const base64 = window.btoa(data);\r\n let base64Url = '';\r\n\r\n for (let i = 0; i < base64.length; i++) {\r\n const ch = base64.charAt(i);\r\n\r\n switch (ch) {\r\n case '+':\r\n base64Url += '-';\r\n break;\r\n case '/':\r\n base64Url += '_';\r\n break;\r\n case '=':\r\n return base64Url;\r\n default:\r\n base64Url += ch;\r\n break;\r\n }\r\n }\r\n\r\n return base64Url;\r\n }\r\n\r\n /**\r\n * Decode a base64 url string.\r\n *\r\n * @param data the string to decode.\r\n * @return string the decoded string.\r\n */\r\n public static base64urlDecode(data: string): string {\r\n while (data.length % 4 !== 0) {\r\n data += '=';\r\n }\r\n\r\n data = data.replaceAll('-', '+').replaceAll('_', '/');\r\n return window.atob(data);\r\n }\r\n\r\n /**\r\n * Encode utf8 string.\r\n *\r\n * @param data the unencoded string.\r\n */\r\n public static utf8Encode(data: string): string {\r\n return unescape(encodeURIComponent(data));\r\n }\r\n\r\n /**\r\n * Decode utf8 string.\r\n *\r\n * @param data the encoded UTF8 string.\r\n */\r\n public static utf8Decode(data: string): string {\r\n return decodeURIComponent(escape(data));\r\n }\r\n\r\n /**\r\n * Encode with utf8 (first) and base64url (second).\r\n *\r\n * @param data data the original string to encode. The string can be full unicode character string.\r\n * @return string the encoded string used on a part of URL.\r\n */\r\n public static utf8Base64UrlEncode(data: string): string {\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Decode with utf8 (second) and base64url (first).\r\n *\r\n * @param data data the encoded URL string to decode.\r\n * @return string the decoded unicode string.\r\n */\r\n public static utf8Base64UrlDecode(data: string): string {\r\n const utf8: string = Net.base64urlDecode(data);\r\n return Net.utf8Decode(utf8);\r\n }\r\n\r\n /**\r\n * Create a key name from key value pairs.\r\n *\r\n * @param properties the key value pairs.\r\n * @return string the key name.\r\n */\r\n public static cimCreateName(properties: any): string {\r\n const data: string = JSON.stringify(properties);\r\n const utf8: string = Net.utf8Encode(data);\r\n return Net.base64urlEncode(utf8);\r\n }\r\n\r\n /**\r\n * Get properties of the item from the response.\r\n *\r\n * @param data the item in the response object.\r\n * @return any the properties.\r\n */\r\n public static getItemProperties(data: any): any {\r\n if (data && data.properties) {\r\n return data.properties;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Get properties of first item from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the properties.\r\n */\r\n public static getFirstProperties(data: any): any {\r\n if (data && data.value && data.value.length) {\r\n if (data.value[0].properties) {\r\n return data.value[0].properties;\r\n }\r\n } else if (data && data.length) {\r\n return data[0];\r\n }\r\n\r\n return Net.getItemProperties(data);\r\n }\r\n\r\n /**\r\n * Get array of items from the response.\r\n *\r\n * @param data the response object.\r\n * @return any the item array.\r\n */\r\n public static getItemArray(data: any): any {\r\n if (data && data.value) {\r\n return data.value;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Create JSON string with properties.\r\n *\r\n * @param data the input data.\r\n * @return string the JSON string with properties.\r\n */\r\n public static createPropertiesJSONString(data: any): string {\r\n return JSON.stringify({\r\n properties: data\r\n });\r\n }\r\n\r\n /**\r\n * Creates an encoded authentication header.\r\n *\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @return the token string.\r\n */\r\n public static createEncodedAuthenticationHeader(userNames: string[], password: string, passwordEncryptedWith: string = null): string {\r\n const credentials: any = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password\r\n };\r\n if (!MsftSme.isNullOrWhiteSpace(passwordEncryptedWith)) {\r\n credentials.passwordEncryptedWith = passwordEncryptedWith;\r\n }\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }\r\n\r\n public static toUsernameAndDomain(value: string): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string[]): { domain: string, username: string };\r\n public static toUsernameAndDomain(value: string | string[]): { domain: string, username: string } {\r\n let username: string[];\r\n if (Array.isArray(value)) {\r\n username = value;\r\n } else if (value.indexOf('@') >= 0) {\r\n username = value.split('@').reverse();\r\n } else {\r\n username = value.split('\\\\');\r\n }\r\n return {\r\n // if only a username was provided, use '.' (shorthand for the locale machine hostname)\r\n domain: username.length === 1 ? '.' : username[0],\r\n username: username.length === 1 ? username[0] : username[1],\r\n };\r\n }\r\n\r\n /**\r\n * Creates an encrypted authentication header value.\r\n *\r\n * @param jwk the JWK (Json Web Key)\r\n * @param usersName name of user.\r\n * @param password the password.\r\n * @param logonUser the gateway user\r\n * @param expirationTimeInMs manage as token expiration time in milliseconds\r\n * @return the token string.\r\n */\r\n public static createEncryptedAuthenticationHeader(\r\n jwk: string,\r\n userNames: string[],\r\n password: string,\r\n logonUser: string,\r\n expirationTimeInMs: number\r\n ): Observable<string> {\r\n const credentials: Credentials = {\r\n ...Net.toUsernameAndDomain(userNames),\r\n password: password,\r\n passwordEncryptedWith: undefined\r\n };\r\n const passwordData = Net.createPasswordData(credentials, logonUser, expirationTimeInMs);\r\n return Crypto.encryptRsaSha1(jwk, passwordData)\r\n .pipe(\r\n map(encryptedPassword => {\r\n credentials.password = encryptedPassword;\r\n credentials.passwordEncryptedWith = 'JWK2';\r\n return window.btoa(Net.utf8Encode(JSON.stringify(credentials)));\r\n }),\r\n catchError(error => of(\r\n window.btoa(Net.utf8Encode(JSON.stringify(credentials)))\r\n ))\r\n );\r\n }\r\n\r\n private static createPasswordData(\r\n credentials: Credentials,\r\n logOnUser: string,\r\n expirationTimeInMs: number\r\n ): string {\r\n const millisecondsInHour = 60 * 60 * 1000;\r\n const hoursInYear = 365 * 24;\r\n\r\n const currentTimeStamp = Date.now();\r\n const expirationOffsetInMilliseconds = expirationTimeInMs || (hoursInYear * millisecondsInHour);\r\n\r\n const passwordData = {\r\n p: credentials.password,\r\n l: logOnUser,\r\n t: currentTimeStamp,\r\n e: currentTimeStamp + expirationOffsetInMilliseconds\r\n };\r\n\r\n return JSON.stringify(passwordData);\r\n }\r\n\r\n /**\r\n * Creates encrypted data for auth header\r\n * @param jwk the JSON web key to be used to encrypt data\r\n * @param data the data to be encrypted\r\n * @returns an encrypted string\r\n */\r\n public static createEncryptedExtensionDataHeader(jwk: string, data: string) {\r\n return Crypto.encryptRsaSha1(jwk, data)\r\n .pipe(map(encryptedData => window.btoa(Net.utf8Encode(encryptedData))));\r\n }\r\n\r\n /**\r\n * Create /api/nodes URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayNodeApi(gatewayName: string, nodeName: string, relativeUrl?: string): string {\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n if (!nodeName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayNodeApi', 'nodeName'));\r\n }\r\n\r\n return Net.gatewayApi(gatewayName, `/nodes/${nodeName}${relativeUrl}`);\r\n }\r\n\r\n /**\r\n * Create /api URL with relativeUrl.\r\n *\r\n * @param gatewayName The name of gateway.\r\n * @param nodeName The name of node.\r\n * @param relativeUrl The relative Url.\r\n */\r\n public static gatewayApi(gatewayName: string, relativeUrl?: string): string {\r\n if (!gatewayName) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.ArgumentNullError.message;\r\n throw new Error(message.format('Net/gatewayApi', 'gatewayName'));\r\n }\r\n\r\n if (!relativeUrl) {\r\n relativeUrl = '';\r\n }\r\n\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = '/' + relativeUrl;\r\n }\r\n\r\n gatewayName = gatewayName.toLowerCase();\r\n if (!gatewayName.startsWith('http://') && !gatewayName.startsWith('https://')) {\r\n gatewayName = 'https://' + gatewayName;\r\n }\r\n\r\n return `${gatewayName}/api${relativeUrl}`;\r\n }\r\n\r\n /**\r\n * Get error message from ajax result or any other error result and optionally includes native error message.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @param options add additional optional error message: such as native error messages if possible\r\n * @return string the error message.\r\n */\r\n public static getErrorMessage(error: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const prefixFormat = strings.Error.PrefixFormat.message;\r\n const errorPrefix = options && options.errorPrefix;\r\n const xhr = error && error.xhr;\r\n const exception = error && error.exception;\r\n\r\n if (typeof error === 'string') {\r\n return errorPrefix ? prefixFormat.format(error) : error;\r\n }\r\n\r\n if (xhr && xhr.response) {\r\n const message = Net.parseErrorResponse(xhr.response, options);\r\n if (message) {\r\n return errorPrefix ? prefixFormat.format(message) : message;\r\n }\r\n }\r\n\r\n if (error && error.message) {\r\n return errorPrefix ? prefixFormat.format(error.message) : error.message;\r\n }\r\n\r\n if (exception && exception.message) {\r\n return errorPrefix ? prefixFormat.format(exception.message) : exception.message;\r\n }\r\n\r\n const statusText = xhr && xhr.statusText;\r\n if (statusText) {\r\n return errorPrefix ? prefixFormat.format(statusText) : statusText;\r\n }\r\n\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n /**\r\n * Get error message from PowerShell ajax response.\r\n * Can be used by a PowerShell batch consumer to get error message in batch response.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n public static getPowerShellErrorMessage(response: any): string {\r\n const message = Net.parseErrorResponse(response);\r\n if (message) {\r\n return message;\r\n }\r\n\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n /**\r\n * Get error code from ajax result.\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error code.\r\n */\r\n public static getErrorCode(error: any): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = error && error.xhr && error.xhr.response && error.xhr.response.error;\r\n if (!err) {\r\n throw new Error(strings.Error.NoResponseError.message);\r\n }\r\n\r\n if (err.code) {\r\n return err.code;\r\n }\r\n\r\n throw new Error(strings.Error.NoCode.message);\r\n }\r\n\r\n /**\r\n * Get error message from ajax result excluding error stackTrace\r\n *\r\n * @param error the error context from Net.ajax.\r\n * @return string the error.\r\n */\r\n public static getErrorMessageWithoutStacktrace(error: any): string {\r\n let errorMessage: string = Net.getErrorMessage(error);\r\n if (errorMessage) {\r\n const stackTraceIndex: number = errorMessage.toLowerCase().indexOf('stacktrace');\r\n if (stackTraceIndex > 0) {\r\n errorMessage = errorMessage.substring(0, stackTraceIndex);\r\n }\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n /**\r\n * Translates error code to string\r\n *\r\n * @param code the error code\r\n * @return string the related error string.\r\n */\r\n public static translateErrorCode(code: number): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const message: string = Net.errorCodeMap[code];\r\n if (message) {\r\n return strings.ErrorCode.Translated.message.format(message, code);\r\n }\r\n\r\n return strings.ErrorCode.Generic.message.format(code);\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization login error. This code never work if it uses NTLM or Kerberos.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorizedLogin(error: AjaxError): boolean {\r\n // new login 401 handling.\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n return error.status === HttpStatusCode.Unauthorized && forbidden && forbidden === 'UnauthorizedLogin';\r\n }\r\n\r\n /**\r\n * Determine if this is an authorization error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isUnauthorized(error: AjaxError): boolean {\r\n const errorObject = error?.xhr?.response?.error;\r\n const forbidden = errorObject?.forbidden;\r\n if (forbidden) {\r\n // new 403 handling.\r\n return error.status === HttpStatusCode.Forbidden && forbidden === 'Unauthorized';\r\n } else {\r\n // legacy 401 handling. (this should be obsolete now)\r\n const unauthorized = errorObject?.unauthorized;\r\n return error.status === HttpStatusCode.Unauthorized && !(unauthorized && unauthorized === 'UnauthorizedLogin');\r\n }\r\n }\r\n\r\n /**\r\n * Determine if this is an forbidden error.\r\n *\r\n * @param error The ajax error object.\r\n */\r\n public static isForbidden(error: AjaxError): boolean {\r\n const forbidden = error?.xhr?.response?.error?.forbidden;\r\n if (forbidden) {\r\n // new forbidden.\r\n return error.status === HttpStatusCode.BadRequest && forbidden === 'Forbidden';\r\n } else {\r\n // legacy 403 handling.\r\n return error.status === HttpStatusCode.Forbidden;\r\n }\r\n }\r\n\r\n /**\r\n * Get property from an ErrorExtended error object\r\n *\r\n * @param error The ErrorExtended error object.\r\n * @param sourceName The source of the error.\r\n * @param propertyName The property to get from the error object.\r\n * @return The value of the property or null if the source doesn't match.\r\n */\r\n public static getErrorExtendedProperty<T1, T2>(error: ErrorExtended<T1>, sourceName: string, propertyName: string): T2 {\r\n if (error.extendedSource &&\r\n (error.extendedSource === sourceName || error.extendedSource.includes(sourceName))) {\r\n return <T2>error?.extended[propertyName];\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Parse error message from standard ajax error and PowerShell errors.\r\n *\r\n * @param response the ajax response.\r\n * @return string the error message.\r\n */\r\n private static parseErrorResponse(response: any, options?: ErrorMessageOptions): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const err = response && response.error;\r\n if (err && err.message) {\r\n const errorMessage = err.message;\r\n\r\n if (options && options.addNativeError && err.detailRecord) {\r\n return strings.Error.AddNativeErrorCode.message.format(errorMessage, err.detailRecord.nativeErrorCode);\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n const psErrors: any[] = response && response.errors;\r\n if (psErrors && psErrors.length > 0) {\r\n if (psErrors.length === 1) {\r\n if (options && options.addNativeError && psErrors[0].detailRecord) {\r\n\r\n if (options && options.useRemoteExceptionMessage) {\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n return strings.ErrorFormat.Single.Details.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].message,\r\n psErrors[0].detailRecord.nativeErrorCode);\r\n }\r\n\r\n if (options && options.useRemoteExceptionMessage && psErrors[0].detailRecord) {\r\n return strings.ErrorFormat.Single.message.format(\r\n psErrors[0].errorType,\r\n psErrors[0].detailRecord.remoteExceptionMessage);\r\n }\r\n return strings.ErrorFormat.Single.message.format(psErrors[0].errorType, psErrors[0].message);\r\n }\r\n\r\n let joinedMessage = '';\r\n for (let i = 0; i < psErrors.length; i++) {\r\n if (options && options.addNativeError && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.Details.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].message,\r\n psErrors[i].detailRecord.nativeErrorCode);\r\n } else if (options && options.useRemoteExceptionMessage && psErrors[i].detailRecord) {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(\r\n i + 1,\r\n psErrors[i].errorType,\r\n psErrors[i].detailRecord.remoteExceptionMessage);\r\n } else {\r\n joinedMessage += strings.ErrorFormat.Multiple.message.format(i + 1, psErrors[i].errorType, psErrors[i].message);\r\n }\r\n }\r\n\r\n return joinedMessage;\r\n }\r\n\r\n if (response && response.exception) {\r\n return response.exception;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private static splitByLength(text: string, length: number): string[] {\r\n const parts = new Array<string>();\r\n\r\n if (text === null) {\r\n return parts;\r\n }\r\n\r\n const totalLength = text.length;\r\n const count = Math.ceil(totalLength / length);\r\n\r\n if (count < 2) {\r\n parts.push(text);\r\n return parts;\r\n }\r\n\r\n const lastPart = count - 1;\r\n let position = 0;\r\n\r\n for (let i = 0; i < lastPart; i++, position += length) {\r\n parts.push(text.substr(position, length));\r\n }\r\n\r\n parts.push(text.substr(position));\r\n\r\n return parts;\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { AuthorizationManager, AuthorizationToken } from '../security/authorization-manager';
3
3
  import { GatewayConnection, GatewayRequest } from './gateway-connection';
4
- import { PowerShellCommand } from './powershell';
4
+ import { PowerShellCommandWithoutState } from './powershell';
5
5
  /**
6
6
  * Node Cim output type.
7
7
  */
@@ -57,7 +57,7 @@ export interface NodeRequestOptions {
57
57
  * The command object is used for auto fallback time on a CIM query.
58
58
  * (Only CIM query uses this property)
59
59
  */
60
- powerShell?: PowerShellCommand;
60
+ powerShell?: PowerShellCommandWithoutState;
61
61
  /**
62
62
  * The parameters for instance query powershell alternative.
63
63
  * (Only CIM query uses this property)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../packages/core/data/node-connection.ts"],"names":[],"mappings":"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","file":"node-connection.js","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { map, mergeMap } from 'rxjs/operators';\r\nimport { AuthorizationManager, AuthorizationToken } from '../security/authorization-manager';\r\nimport { GatewayConnection, GatewayRequest } from './gateway-connection';\r\nimport { headerConstants } from './http-constants';\r\nimport { Net } from './net';\r\nimport { PowerShellCommand } from './powershell';\r\n\r\n/**\r\n * Node Cim output type.\r\n */\r\nexport enum NodeCimOutput {\r\n /**\r\n * Single instance.\r\n */\r\n Single,\r\n\r\n /**\r\n * Multiple instances.\r\n */\r\n Multiple,\r\n\r\n /**\r\n * Invoke result.\r\n */\r\n Result,\r\n\r\n /**\r\n * WQL query result.\r\n */\r\n Query\r\n}\r\n\r\n/**\r\n * Node Request options that we use to extend the GatewayRequest interface\r\n */\r\nexport interface NodeRequestOptions {\r\n /**\r\n * Indicates that no auth failure handling should take place, however, any auth headers for this node will still be added.\r\n */\r\n noAuth?: boolean;\r\n\r\n /**\r\n * Provides an alternative token to use for just this request\r\n */\r\n authToken?: AuthorizationToken;\r\n\r\n /**\r\n * Authentication mechanism.\r\n */\r\n authenticationMechanism?: 'Credssp' | 'NotSpecified';\r\n\r\n /**\r\n * Indicates that audit logging for this request should be made. Default is false.\r\n */\r\n logAudit?: boolean;\r\n\r\n /**\r\n * Indicates that telemetry logging for this request should be made. Default is false.\r\n */\r\n logTelemetry?: boolean;\r\n\r\n /**\r\n * Indicates targeting to specific PowerShell endpoint.\r\n * The endpoint data is inserted to the endpoint header.\r\n */\r\n powerShellEndpoint?: string;\r\n\r\n /**\r\n * The PowerShell command resource on JEA PowerShell endpoint.\r\n * The command object is used for auto fallback time on a CIM query.\r\n * (Only CIM query uses this property)\r\n */\r\n powerShell?: PowerShellCommand;\r\n\r\n /**\r\n * The parameters for instance query powershell alternative.\r\n * (Only CIM query uses this property)\r\n */\r\n powerShellParameters?: any;\r\n\r\n /**\r\n * The PowerShell context to replace CIM call.\r\n * (Only CIM query uses this property)\r\n */\r\n powerShellContext?: {\r\n /**\r\n * CIM output data type.\r\n */\r\n cimOutput: NodeCimOutput;\r\n\r\n /**\r\n * CIM input parameters.\r\n */\r\n parameters?: any;\r\n };\r\n}\r\n\r\n/**\r\n * Extension of GatewayRequest interface for calling the Gateway Node API\r\n */\r\nexport interface NodeRequest extends GatewayRequest, NodeRequestOptions {\r\n}\r\n\r\n/**\r\n * The Node Connection class for creating requests and calling the Gateway's Node API\r\n */\r\nexport class NodeConnection {\r\n /**\r\n * Initializes a new instance of the GatewayService class.\r\n *\r\n * @param gateway the gateway Connection\r\n * @param authorizationManager the authorization manager.\r\n */\r\n constructor(private gateway: GatewayConnection, private authorizationManager: AuthorizationManager) { }\r\n\r\n /**\r\n * Makes a POST call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n */\r\n public post(nodeName: string, relativeUrl: string, body?: any, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.post(relativeUrl, body, request);\r\n }\r\n\r\n /**\r\n * Makes a GET call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param request the node request object.\r\n */\r\n public get(nodeName: string, relativeUrl: string, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.get(relativeUrl, request);\r\n }\r\n\r\n /**\r\n * Makes a PUT call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n */\r\n public put(nodeName: string, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.put(relativeUrl, body, request);\r\n }\r\n\r\n /**\r\n * Makes a PATCH call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n */\r\n public patch(nodeName: string, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.patch(relativeUrl, body, request);\r\n }\r\n\r\n /**\r\n * Makes a DELETE call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n */\r\n public delete(nodeName: string, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.delete(relativeUrl, body, request);\r\n }\r\n\r\n /**\r\n * Makes a DELETE call to the gateway node api without waiting for the response.\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param request the node request object.\r\n */\r\n public deleteQuick(nodeName: string, relativeUrl: string, request?: NodeRequest): void {\r\n request.headers = request.headers || {};\r\n if (!request.authToken) {\r\n // if we dont have an authToken, then make sure we are not waiting on one.\r\n this.authorizationManager.addAuthorizationRequestHeader(request, nodeName);\r\n } else {\r\n this.authorizationManager.addAuthorizationRequestHeader(request, nodeName, request.authToken);\r\n }\r\n\r\n const endpoint = this.authorizationManager.getJeaEndpoint(nodeName);\r\n if (request.powerShellEndpoint) {\r\n // Override JEA fallback if endpoint is explicitly set for debugging purposes\r\n request.headers[headerConstants.POWERSHELL_ENDPOINT] = request.powerShellEndpoint;\r\n } else if (endpoint) {\r\n request.headers[headerConstants.POWERSHELL_ENDPOINT] = endpoint;\r\n }\r\n\r\n if (request.authenticationMechanism === 'Credssp') {\r\n request.headers[headerConstants.AUTHENTICATION_MECHANISM] = request.authenticationMechanism;\r\n }\r\n\r\n const url = this.getNodeUrl(nodeName, relativeUrl);\r\n return this.gateway.deleteQuick(url, request.headers);\r\n }\r\n\r\n /**\r\n * Persists the JEA powershell endpoint context\r\n * @param nodeName The node name\r\n * @param endpoint The powershell endpoint\r\n */\r\n public saveJeaContext(nodeName: string, endpoint: string) {\r\n this.authorizationManager.saveJeaContext(nodeName, endpoint);\r\n }\r\n\r\n /**\r\n * Gets the JEA powershell endpoint, if it exists\r\n * @param nodeName The node name\r\n */\r\n public getJeaEndpoint(nodeName: string) {\r\n return this.authorizationManager.getJeaEndpoint(nodeName);\r\n }\r\n\r\n /**\r\n * Adds default parameters to a NodeRequest\r\n *\r\n * @param method the http method to use\r\n * @param relativeUrl the relative Url after \"/api/\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object to extend.\r\n */\r\n private createNodeRequest(request: NodeRequest, nodeName: string): GatewayRequest {\r\n // if we did not specify no auth, and we are not using a custom token...\r\n request = MsftSme.deepAssign({}, request);\r\n if (!request.noAuth && !request.authToken) {\r\n // ...then add node specific authorization handlers\r\n request.retryHandlers = (request.retryHandlers || []).concat([{\r\n canHandle: (code, error) => this.authorizationManager.canHandleAjaxFailure(code, error),\r\n handle: (code, originalRequest, error) =>\r\n this.authorizationManager.handleAjaxFailure(code, originalRequest, error, nodeName)\r\n }]);\r\n }\r\n\r\n const oldBeforeCall = request.beforeCall;\r\n\r\n // Add before call handler to wait for any pending node authorization\r\n request.beforeCall = pendingRequest => {\r\n let observable: Observable<void> = null;\r\n if (!request.authToken) {\r\n // if we dont have an authToken, then make sure we are not waiting on one.\r\n observable = this.authorizationManager.authAwaiter\r\n .pipe(map(() =>\r\n this.authorizationManager.addAuthorizationRequestHeader(pendingRequest, nodeName)));\r\n } else {\r\n observable = of(\r\n this.authorizationManager.addAuthorizationRequestHeader(pendingRequest, nodeName, request.authToken)\r\n );\r\n }\r\n\r\n if (oldBeforeCall) {\r\n return oldBeforeCall(request).pipe(mergeMap(() => observable));\r\n }\r\n\r\n return observable;\r\n };\r\n\r\n request.headers = request.headers || {};\r\n if (request.logAudit === true || request.logAudit === false) {\r\n request.headers[headerConstants.LOG_AUDIT] = request.logAudit ? 'true' : 'false';\r\n }\r\n\r\n if (request.logTelemetry === true || request.logTelemetry === false) {\r\n request.headers[headerConstants.LOG_TELEMETRY] = request.logTelemetry ? 'true' : 'false';\r\n }\r\n\r\n const endpoint = this.authorizationManager.getJeaEndpoint(nodeName);\r\n if (request.powerShellEndpoint) {\r\n // Override JEA fallback if endpoint is explicitly set for debugging purposes\r\n request.headers[headerConstants.POWERSHELL_ENDPOINT] = request.powerShellEndpoint;\r\n } else if (endpoint) {\r\n request.headers[headerConstants.POWERSHELL_ENDPOINT] = endpoint;\r\n }\r\n\r\n if (request.authenticationMechanism === 'Credssp') {\r\n request.headers[headerConstants.AUTHENTICATION_MECHANISM] = request.authenticationMechanism;\r\n }\r\n\r\n return request;\r\n }\r\n\r\n /**\r\n * Creates a Node url\r\n *\r\n * @param nodeName the name of the node to make a call against\r\n * @param relativeUrl the relative Url after \"/nodes/<nodeName>/\"\r\n */\r\n public getNodeUrl(nodeName: string, relativeUrl: string): string {\r\n // create node url from current url\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = `/${relativeUrl}`;\r\n }\r\n\r\n relativeUrl = Net.updateApiVersion20190201(relativeUrl);\r\n return `/nodes/${nodeName}${relativeUrl}`;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../packages/core/data/node-connection.ts"],"names":[],"mappings":"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","file":"node-connection.js","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { map, mergeMap } from 'rxjs/operators';\r\nimport { AuthorizationManager, AuthorizationToken } from '../security/authorization-manager';\r\nimport { GatewayConnection, GatewayRequest } from './gateway-connection';\r\nimport { headerConstants } from './http-constants';\r\nimport { Net } from './net';\r\nimport { PowerShellCommandWithoutState } from './powershell';\r\n\r\n/**\r\n * Node Cim output type.\r\n */\r\nexport enum NodeCimOutput {\r\n /**\r\n * Single instance.\r\n */\r\n Single,\r\n\r\n /**\r\n * Multiple instances.\r\n */\r\n Multiple,\r\n\r\n /**\r\n * Invoke result.\r\n */\r\n Result,\r\n\r\n /**\r\n * WQL query result.\r\n */\r\n Query\r\n}\r\n\r\n/**\r\n * Node Request options that we use to extend the GatewayRequest interface\r\n */\r\nexport interface NodeRequestOptions {\r\n /**\r\n * Indicates that no auth failure handling should take place, however, any auth headers for this node will still be added.\r\n */\r\n noAuth?: boolean;\r\n\r\n /**\r\n * Provides an alternative token to use for just this request\r\n */\r\n authToken?: AuthorizationToken;\r\n\r\n /**\r\n * Authentication mechanism.\r\n */\r\n authenticationMechanism?: 'Credssp' | 'NotSpecified';\r\n\r\n /**\r\n * Indicates that audit logging for this request should be made. Default is false.\r\n */\r\n logAudit?: boolean;\r\n\r\n /**\r\n * Indicates that telemetry logging for this request should be made. Default is false.\r\n */\r\n logTelemetry?: boolean;\r\n\r\n /**\r\n * Indicates targeting to specific PowerShell endpoint.\r\n * The endpoint data is inserted to the endpoint header.\r\n */\r\n powerShellEndpoint?: string;\r\n\r\n /**\r\n * The PowerShell command resource on JEA PowerShell endpoint.\r\n * The command object is used for auto fallback time on a CIM query.\r\n * (Only CIM query uses this property)\r\n */\r\n powerShell?: PowerShellCommandWithoutState;\r\n\r\n /**\r\n * The parameters for instance query powershell alternative.\r\n * (Only CIM query uses this property)\r\n */\r\n powerShellParameters?: any;\r\n\r\n /**\r\n * The PowerShell context to replace CIM call.\r\n * (Only CIM query uses this property)\r\n */\r\n powerShellContext?: {\r\n /**\r\n * CIM output data type.\r\n */\r\n cimOutput: NodeCimOutput;\r\n\r\n /**\r\n * CIM input parameters.\r\n */\r\n parameters?: any;\r\n };\r\n}\r\n\r\n/**\r\n * Extension of GatewayRequest interface for calling the Gateway Node API\r\n */\r\nexport interface NodeRequest extends GatewayRequest, NodeRequestOptions {\r\n}\r\n\r\n/**\r\n * The Node Connection class for creating requests and calling the Gateway's Node API\r\n */\r\nexport class NodeConnection {\r\n /**\r\n * Initializes a new instance of the GatewayService class.\r\n *\r\n * @param gateway the gateway Connection\r\n * @param authorizationManager the authorization manager.\r\n */\r\n constructor(private gateway: GatewayConnection, private authorizationManager: AuthorizationManager) { }\r\n\r\n /**\r\n * Makes a POST call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n */\r\n public post(nodeName: string, relativeUrl: string, body?: any, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.post(relativeUrl, body, request);\r\n }\r\n\r\n /**\r\n * Makes a GET call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param request the node request object.\r\n */\r\n public get(nodeName: string, relativeUrl: string, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.get(relativeUrl, request);\r\n }\r\n\r\n /**\r\n * Makes a PUT call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n */\r\n public put(nodeName: string, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.put(relativeUrl, body, request);\r\n }\r\n\r\n /**\r\n * Makes a PATCH call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n */\r\n public patch(nodeName: string, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.patch(relativeUrl, body, request);\r\n }\r\n\r\n /**\r\n * Makes a DELETE call to the gateway node api\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n */\r\n public delete(nodeName: string, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any> {\r\n relativeUrl = this.getNodeUrl(nodeName, relativeUrl);\r\n request = this.createNodeRequest(request || {}, nodeName);\r\n return this.gateway.delete(relativeUrl, body, request);\r\n }\r\n\r\n /**\r\n * Makes a DELETE call to the gateway node api without waiting for the response.\r\n *\r\n * @param nodeName the name of the node to call the API for\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param request the node request object.\r\n */\r\n public deleteQuick(nodeName: string, relativeUrl: string, request?: NodeRequest): void {\r\n request.headers = request.headers || {};\r\n if (!request.authToken) {\r\n // if we dont have an authToken, then make sure we are not waiting on one.\r\n this.authorizationManager.addAuthorizationRequestHeader(request, nodeName);\r\n } else {\r\n this.authorizationManager.addAuthorizationRequestHeader(request, nodeName, request.authToken);\r\n }\r\n\r\n const endpoint = this.authorizationManager.getJeaEndpoint(nodeName);\r\n if (request.powerShellEndpoint) {\r\n // Override JEA fallback if endpoint is explicitly set for debugging purposes\r\n request.headers[headerConstants.POWERSHELL_ENDPOINT] = request.powerShellEndpoint;\r\n } else if (endpoint) {\r\n request.headers[headerConstants.POWERSHELL_ENDPOINT] = endpoint;\r\n }\r\n\r\n if (request.authenticationMechanism === 'Credssp') {\r\n request.headers[headerConstants.AUTHENTICATION_MECHANISM] = request.authenticationMechanism;\r\n }\r\n\r\n const url = this.getNodeUrl(nodeName, relativeUrl);\r\n return this.gateway.deleteQuick(url, request.headers);\r\n }\r\n\r\n /**\r\n * Persists the JEA powershell endpoint context\r\n * @param nodeName The node name\r\n * @param endpoint The powershell endpoint\r\n */\r\n public saveJeaContext(nodeName: string, endpoint: string) {\r\n this.authorizationManager.saveJeaContext(nodeName, endpoint);\r\n }\r\n\r\n /**\r\n * Gets the JEA powershell endpoint, if it exists\r\n * @param nodeName The node name\r\n */\r\n public getJeaEndpoint(nodeName: string) {\r\n return this.authorizationManager.getJeaEndpoint(nodeName);\r\n }\r\n\r\n /**\r\n * Adds default parameters to a NodeRequest\r\n *\r\n * @param method the http method to use\r\n * @param relativeUrl the relative Url after \"/api/\"\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object to extend.\r\n */\r\n private createNodeRequest(request: NodeRequest, nodeName: string): GatewayRequest {\r\n // if we did not specify no auth, and we are not using a custom token...\r\n request = MsftSme.deepAssign({}, request);\r\n if (!request.noAuth && !request.authToken) {\r\n // ...then add node specific authorization handlers\r\n request.retryHandlers = (request.retryHandlers || []).concat([{\r\n canHandle: (code, error) => this.authorizationManager.canHandleAjaxFailure(code, error),\r\n handle: (code, originalRequest, error) =>\r\n this.authorizationManager.handleAjaxFailure(code, originalRequest, error, nodeName)\r\n }]);\r\n }\r\n\r\n const oldBeforeCall = request.beforeCall;\r\n\r\n // Add before call handler to wait for any pending node authorization\r\n request.beforeCall = pendingRequest => {\r\n let observable: Observable<void> = null;\r\n if (!request.authToken) {\r\n // if we dont have an authToken, then make sure we are not waiting on one.\r\n observable = this.authorizationManager.authAwaiter\r\n .pipe(map(() =>\r\n this.authorizationManager.addAuthorizationRequestHeader(pendingRequest, nodeName)));\r\n } else {\r\n observable = of(\r\n this.authorizationManager.addAuthorizationRequestHeader(pendingRequest, nodeName, request.authToken)\r\n );\r\n }\r\n\r\n if (oldBeforeCall) {\r\n return oldBeforeCall(request).pipe(mergeMap(() => observable));\r\n }\r\n\r\n return observable;\r\n };\r\n\r\n request.headers = request.headers || {};\r\n if (request.logAudit === true || request.logAudit === false) {\r\n request.headers[headerConstants.LOG_AUDIT] = request.logAudit ? 'true' : 'false';\r\n }\r\n\r\n if (request.logTelemetry === true || request.logTelemetry === false) {\r\n request.headers[headerConstants.LOG_TELEMETRY] = request.logTelemetry ? 'true' : 'false';\r\n }\r\n\r\n const endpoint = this.authorizationManager.getJeaEndpoint(nodeName);\r\n if (request.powerShellEndpoint) {\r\n // Override JEA fallback if endpoint is explicitly set for debugging purposes\r\n request.headers[headerConstants.POWERSHELL_ENDPOINT] = request.powerShellEndpoint;\r\n } else if (endpoint) {\r\n request.headers[headerConstants.POWERSHELL_ENDPOINT] = endpoint;\r\n }\r\n\r\n if (request.authenticationMechanism === 'Credssp') {\r\n request.headers[headerConstants.AUTHENTICATION_MECHANISM] = request.authenticationMechanism;\r\n }\r\n\r\n return request;\r\n }\r\n\r\n /**\r\n * Creates a Node url\r\n *\r\n * @param nodeName the name of the node to make a call against\r\n * @param relativeUrl the relative Url after \"/nodes/<nodeName>/\"\r\n */\r\n public getNodeUrl(nodeName: string, relativeUrl: string): string {\r\n // create node url from current url\r\n if (!relativeUrl.startsWith('/')) {\r\n relativeUrl = `/${relativeUrl}`;\r\n }\r\n\r\n relativeUrl = Net.updateApiVersion20190201(relativeUrl);\r\n return `/nodes/${nodeName}${relativeUrl}`;\r\n }\r\n}\r\n"]}
@@ -247,9 +247,17 @@ export class PowerShellStream {
247
247
  if (error && error.message === this.strings.ResetError.message) {
248
248
  return this.monitorCreateRequest(nodeName, command, newOptions);
249
249
  }
250
- if ((!options || options.noAuth !== true) && this.authorizationManager.canHandleStreamFailure(error.xhr)) {
251
- return this.authorizationManager.handleStreamFailure(nodeName, options, error.xhr)
252
- .pipe(switchMap(updatedOptions => this.monitorCreateRequest(nodeName, command, updatedOptions)));
250
+ if ((!options || options.noAuth !== true) && !this.authorizationManager.signOnManager.isSignOnTokenEnabled) {
251
+ if (this.authorizationManager.canHandleStreamFailure(error.xhr)) {
252
+ return this.authorizationManager.handleStreamFailure(nodeName, options, error.xhr)
253
+ .pipe(switchMap(updatedOptions => this.monitorCreateRequest(nodeName, command, updatedOptions)));
254
+ }
255
+ }
256
+ if (this.authorizationManager.signOnManager.isSignOnTokenEnabled) {
257
+ if (this.authorizationManager.signOnManager.canHandleStreamUnauthorizedLogin(error.xhr)) {
258
+ return this.authorizationManager.signOnManager.handleStreamUnauthorizedLogin(options, error.xhr)
259
+ .pipe(switchMap(updatedOptions => this.monitorCreateRequest(nodeName, command, updatedOptions)));
260
+ }
253
261
  }
254
262
  return throwError(error);
255
263
  }));