@microsoft/windows-admin-center-sdk 4.123.0 → 4.232.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 (581) 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/id-ID/strings.json +1 -1
  7. package/angular/assets/strings/it-IT/strings.json +1 -1
  8. package/angular/assets/strings/ja-JP/strings.json +1 -1
  9. package/angular/assets/strings/ko-KR/strings.json +1 -1
  10. package/angular/assets/strings/nl-NL/strings.json +1 -1
  11. package/angular/assets/strings/pl-PL/strings.json +1 -1
  12. package/angular/assets/strings/pt-BR/strings.json +1 -1
  13. package/angular/assets/strings/pt-PT/strings.json +1 -1
  14. package/angular/assets/strings/ru-RU/strings.json +1 -1
  15. package/angular/assets/strings/strings.json +1 -1
  16. package/angular/assets/strings/sv-SE/strings.json +1 -1
  17. package/angular/assets/strings/tr-TR/strings.json +1 -1
  18. package/angular/assets/strings/zh-CN/strings.json +1 -1
  19. package/angular/assets/strings/zh-TW/strings.json +1 -1
  20. package/angular/esm2020/src/controls/accordion/accordion-panel/accordion-panel.component.mjs +36 -12
  21. package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
  22. package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
  23. package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
  24. package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
  25. package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
  26. package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
  27. package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
  28. package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
  29. package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
  30. package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
  31. package/angular/esm2020/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.mjs +59 -0
  32. package/angular/esm2020/src/controls/form/form-field/array/array-form-field.component.mjs +24 -35
  33. package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
  34. package/angular/esm2020/src/controls/form/form-field/form-field-accessibility-manager-base.service.mjs +105 -0
  35. package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
  36. package/angular/esm2020/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.mjs +38 -0
  37. package/angular/esm2020/src/controls/form/form-field/list/list-form-field.component.mjs +56 -38
  38. package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
  39. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.mjs +54 -0
  40. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.mjs +67 -67
  41. package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
  42. package/angular/esm2020/src/controls/form/forms.module.mjs +19 -2
  43. package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
  44. package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
  45. package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
  46. package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
  47. package/angular/esm2020/src/controls/page-alert-bar/page-alert-bar.component.mjs +4 -4
  48. package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
  49. package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
  50. package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
  51. package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
  52. package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
  53. package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
  54. package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
  55. package/angular/esm2020/src/controls/wizard/models/wizard-step-snap-in-output.mjs +1 -1
  56. package/angular/esm2020/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.mjs +3 -3
  57. package/angular/esm2020/src/data/extension-broker/snap-in-listener.mjs +80 -0
  58. package/angular/esm2020/src/data/index.mjs +2 -1
  59. package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
  60. package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
  61. package/angular/esm2020/src/generated/strings.mjs +1 -1
  62. package/angular/esm2020/src/service/navigation.service.mjs +3 -8
  63. package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
  64. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +665 -239
  65. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  66. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +636 -237
  67. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  68. package/angular/package.json +1 -1
  69. package/angular/src/controls/accordion/accordion-panel/accordion-panel.component.d.ts +13 -4
  70. package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
  71. package/angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.d.ts +38 -0
  72. package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +3 -1
  73. package/angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.d.ts +37 -0
  74. package/angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.d.ts +25 -0
  75. package/angular/src/controls/form/form-field/list/list-form-field.component.d.ts +12 -2
  76. package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
  77. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.d.ts +37 -0
  78. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.d.ts +12 -8
  79. package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
  80. package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
  81. package/angular/src/controls/wizard/models/wizard-step-snap-in-output.d.ts +1 -1
  82. package/{core → angular/src}/data/extension-broker/snap-in-listener.d.ts +49 -46
  83. package/angular/src/data/index.d.ts +1 -0
  84. package/angular/src/directives/svg/svg.directive.d.ts +1 -2
  85. package/angular/src/generated/strings.d.ts +12 -0
  86. package/core/async/cancellation.js +312 -0
  87. package/core/async/index.js +312 -0
  88. package/core/async/progress.js +312 -0
  89. package/core/azure/azure-constants.d.ts +2 -2
  90. package/core/azure/azure-constants.d.ts.map +1 -1
  91. package/core/azure/azure-constants.js +322 -3
  92. package/core/azure/azure-constants.js.map +1 -1
  93. package/core/azure/azure-logging.js +312 -0
  94. package/core/azure/azure-manager.js +312 -0
  95. package/core/azure/models/aadAppConfig-data.js +312 -0
  96. package/core/azure/models/azureArcStatusEnum.js +312 -0
  97. package/core/azure/models/azureTokenResult-data.js +312 -0
  98. package/core/azure/resources/deployment-operation-request-body.js +312 -0
  99. package/core/azure/resources/deployment-operation-response.js +312 -0
  100. package/core/azure/resources/location-data.js +315 -0
  101. package/core/azure/resources/resource-group-data.js +312 -0
  102. package/core/azure/resources/subscription-data.js +312 -0
  103. package/core/base/data-store/browser-storage-data-store.js +315 -0
  104. package/core/base/data-store/cached-data-store.js +312 -0
  105. package/core/base/data-store/data-store.js +312 -0
  106. package/core/base/data-store/local-data-store.js +312 -0
  107. package/core/base/data-store/memory-data-store.js +312 -0
  108. package/core/base/data-store/session-data-store.js +312 -0
  109. package/core/base/date/date-like.js +312 -0
  110. package/core/base/date/date-range.js +312 -0
  111. package/core/base/date/date-time.js +312 -0
  112. package/core/base/date/date-type.js +312 -0
  113. package/core/base/date/time-unit.js +312 -0
  114. package/core/base/decorators/base.js +312 -0
  115. package/core/base/decorators/debounce.decorators.js +312 -0
  116. package/core/base/decorators/delay.decorator.js +315 -0
  117. package/core/base/decorators/yield.decorator.js +312 -0
  118. package/core/base/environment.js +312 -0
  119. package/core/base/json.js +312 -0
  120. package/core/base/msft-sme.mock.js +316 -0
  121. package/core/base/polyfills/array.js +315 -0
  122. package/core/base/polyfills/string.js +312 -0
  123. package/core/base/rxjs-lifetime-manager.js +312 -0
  124. package/core/base/utilities.js +312 -0
  125. package/core/base/versioned-object.js +312 -0
  126. package/core/data/accessibility-manager.js +312 -0
  127. package/core/data/active-directory/active-directory.js +312 -0
  128. package/core/data/active-directory/models/account-info.js +312 -0
  129. package/core/data/active-directory/models/active-directory-search-options.js +312 -0
  130. package/core/data/active-directory/models/search-type.js +312 -0
  131. package/core/data/animation.js +312 -0
  132. package/core/data/app-context.js +312 -0
  133. package/core/data/asset-manager.js +315 -0
  134. package/core/data/base64-array-buffer.js +312 -0
  135. package/core/data/batch-connection.js +312 -0
  136. package/core/data/cim-connection.js +312 -0
  137. package/core/data/cim-stream.js +312 -0
  138. package/core/data/cim.js +312 -0
  139. package/core/data/column-picker.js +312 -0
  140. package/core/data/cookie.js +312 -0
  141. package/core/data/core-environment.js +315 -0
  142. package/core/data/crypto.js +312 -0
  143. package/core/data/deployment-share.js +312 -0
  144. package/core/data/disposable.js +312 -0
  145. package/core/data/electron.js +315 -0
  146. package/core/data/error-extended.js +312 -0
  147. package/core/data/extension-broker/dialog-listener.js +312 -0
  148. package/core/data/extension-broker/extension-broker.js +312 -0
  149. package/core/data/extension-broker/extension-listener.js +312 -0
  150. package/core/data/extension-broker/model/extension-broker-request-payload.js +312 -0
  151. package/core/data/extension-broker/model/extension-broker-response-error.js +312 -0
  152. package/core/data/extension-broker/model/extension-broker-response-payload.js +312 -0
  153. package/core/data/extension-broker/model/extension-entries.js +315 -0
  154. package/core/data/extension-broker/model/extension-instance.js +315 -0
  155. package/core/data/extension-broker/model/extension-rect.js +312 -0
  156. package/core/data/extension-broker/model/extension-search-options.js +312 -0
  157. package/core/data/extension-broker/service-listener.js +312 -0
  158. package/core/data/extension-broker/worker-listener.js +312 -0
  159. package/core/data/extension-broker/worker-set.js +312 -0
  160. package/core/data/file-transfer.js +312 -0
  161. package/core/data/gateway-connection.js +312 -0
  162. package/core/data/gateway-status.js +312 -0
  163. package/core/data/gateway-url-builder.js +312 -0
  164. package/core/data/gateway-url-translator.d.ts +1 -0
  165. package/core/data/gateway-url-translator.d.ts.map +1 -1
  166. package/core/data/gateway-url-translator.js +337 -6
  167. package/core/data/gateway-url-translator.js.map +1 -1
  168. package/core/data/gateway-urls.js +312 -0
  169. package/core/data/globalization.js +315 -0
  170. package/core/data/http-constants.js +315 -0
  171. package/core/data/http.js +312 -0
  172. package/core/data/jobs/jobs-manager.js +312 -0
  173. package/core/data/jobs/models/job-credentials.js +312 -0
  174. package/core/data/jobs/models/job-node.js +312 -0
  175. package/core/data/jobs/models/job-paginated-response.js +315 -0
  176. package/core/data/jobs/models/job-pagination-options.js +315 -0
  177. package/core/data/jobs/models/job.js +312 -0
  178. package/core/data/jobs/models/node-job.js +312 -0
  179. package/core/data/jobs/models/powershell-job.js +312 -0
  180. package/core/data/language.js +315 -0
  181. package/core/data/lifetime-data.js +312 -0
  182. package/core/data/localization-manager.js +312 -0
  183. package/core/data/native-q.js +312 -0
  184. package/core/data/net.d.ts.map +1 -1
  185. package/core/data/net.js +313 -1
  186. package/core/data/net.js.map +1 -1
  187. package/core/data/node-connection.d.ts.map +1 -1
  188. package/core/data/node-connection.js +312 -2
  189. package/core/data/node-connection.js.map +1 -1
  190. package/core/data/node-extension-install.js +312 -0
  191. package/core/data/powershell-alternate.js +312 -0
  192. package/core/data/powershell-batch.js +312 -0
  193. package/core/data/powershell-connection.js +312 -0
  194. package/core/data/powershell-crypto.js +312 -0
  195. package/core/data/powershell-stream.js +312 -0
  196. package/core/data/powershell.js +312 -0
  197. package/core/data/query-cache.js +312 -0
  198. package/core/data/resource-cache.js +312 -0
  199. package/core/data/schedule-reboot.js +312 -0
  200. package/core/data/settings-manager.js +312 -0
  201. package/core/data/settings-manger.mock.js +312 -0
  202. package/core/data/sme-extension.js +312 -0
  203. package/core/data/ssh-stream.js +312 -0
  204. package/core/data/units.js +312 -0
  205. package/core/data/uri-builder.js +315 -0
  206. package/core/data/wdac-operations.js +312 -0
  207. package/core/data/websocket-stream.js +312 -0
  208. package/core/diagnostics/error-monitor.js +312 -0
  209. package/core/diagnostics/log-level.js +312 -0
  210. package/core/diagnostics/log-record.js +312 -0
  211. package/core/diagnostics/logging-constants.js +312 -0
  212. package/core/diagnostics/logging.js +312 -0
  213. package/core/diagnostics/logging.mock.js +312 -0
  214. package/core/diagnostics/sme-web-telemetry-models.js +312 -0
  215. package/core/diagnostics/sme-web-telemetry.d.ts +1 -2
  216. package/core/diagnostics/sme-web-telemetry.d.ts.map +1 -1
  217. package/core/diagnostics/sme-web-telemetry.js +336 -15
  218. package/core/diagnostics/sme-web-telemetry.js.map +1 -1
  219. package/core/diagnostics/telemetry-control-type.js +312 -0
  220. package/core/diagnostics/telemetry-options.js +312 -0
  221. package/core/diagnostics/telemetry-record.js +312 -0
  222. package/core/dom/dom.js +312 -0
  223. package/core/frame/frame-connection.js +312 -0
  224. package/core/frame/frame-connection.mock.js +312 -0
  225. package/core/frame/shell-navigation-connection.js +312 -0
  226. package/core/generated/powershell-scripts.d.ts.map +1 -1
  227. package/core/generated/powershell-scripts.js +313 -1
  228. package/core/generated/powershell-scripts.js.map +1 -1
  229. package/core/generated/strings.js +312 -0
  230. package/core/host/host-core-manager.js +312 -0
  231. package/core/host/host-core-message-type.js +312 -0
  232. package/core/host/host-core-messages.js +312 -0
  233. package/core/index.d.ts +0 -1
  234. package/core/index.d.ts.map +1 -1
  235. package/core/index.js +312 -1
  236. package/core/index.js.map +1 -1
  237. package/core/manifest/environment-modules.js +312 -0
  238. package/core/manifest/manifest-loader.js +312 -0
  239. package/core/notification/client-notification-instance.js +312 -0
  240. package/core/notification/client-notification.js +312 -0
  241. package/core/notification/notification-connection.js +312 -0
  242. package/core/notification/notification-link-type.js +312 -0
  243. package/core/notification/notification-manager.js +312 -0
  244. package/core/notification/notification-message.js +312 -0
  245. package/core/notification/notification-state.js +312 -0
  246. package/core/notification/notification.js +312 -0
  247. package/core/notification/powershell-notification.js +312 -0
  248. package/core/notification/socket-signalr.js +312 -0
  249. package/core/notification/work-item-connection.js +312 -0
  250. package/core/notification/work-item-manager.js +312 -0
  251. package/core/notification/work-item-request.js +312 -0
  252. package/core/performance/performance-profile-data-type.js +312 -0
  253. package/core/performance/performance-profile-data.js +312 -0
  254. package/core/performance/performance-profile-database.js +312 -0
  255. package/core/performance/performance-profile-record.js +312 -0
  256. package/core/performance/performance-profile.d.ts.map +1 -1
  257. package/core/performance/performance-profile.js +321 -9
  258. package/core/performance/performance-profile.js.map +1 -1
  259. package/core/performance/performance-tracker.js +312 -0
  260. package/core/polyfills.js +312 -0
  261. package/core/resources/scripts/public/crypto/Get-DecryptedDataFromNode.ps1 +216 -0
  262. package/core/resources/scripts/public/crypto/Get-EncryptionJWKOnNode.ps1 +216 -0
  263. package/core/resources/scripts/public/inventory/Get-CimWin32LogicalDisk.ps1 +218 -0
  264. package/core/resources/scripts/public/inventory/Get-CimWin32NetworkAdapter.ps1 +216 -0
  265. package/core/resources/scripts/public/inventory/Get-CimWin32PhysicalMemory.ps1 +216 -0
  266. package/core/resources/scripts/public/inventory/Get-CimWin32Processor.ps1 +216 -0
  267. package/core/resources/scripts/public/inventory/Get-ClusterInventory.ps1 +216 -0
  268. package/core/resources/scripts/public/inventory/Get-ClusterNodes.ps1 +216 -0
  269. package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +246 -8
  270. package/core/rpc/alive/rpc-alive-client.js +312 -0
  271. package/core/rpc/alive/rpc-alive-handler.js +312 -0
  272. package/core/rpc/alive/rpc-alive-model.js +315 -0
  273. package/core/rpc/alive/rpc-alive-subject-server.js +312 -0
  274. package/core/rpc/alive/rpc-observable-alive-client.js +312 -0
  275. package/core/rpc/alive/rpc-observable-alive-model.js +312 -0
  276. package/core/rpc/alive/rpc-observable-alive-server.js +312 -0
  277. package/core/rpc/azure/rpc-azure-model.js +312 -0
  278. package/core/rpc/azure/rpc-azure-request-client.js +312 -0
  279. package/core/rpc/azure/rpc-azure-request-handler.js +312 -0
  280. package/core/rpc/azure/rpc-azure-request-subject-server.js +312 -0
  281. package/core/rpc/azure/rpc-azure-response-client.js +312 -0
  282. package/core/rpc/azure/rpc-azure-response-handler.js +315 -0
  283. package/core/rpc/credssp/rpc-credssp-model.js +312 -0
  284. package/core/rpc/credssp/rpc-credssp-request-client.js +312 -0
  285. package/core/rpc/credssp/rpc-credssp-request-handler.js +315 -0
  286. package/core/rpc/credssp/rpc-credssp-request-subject-server.js +312 -0
  287. package/core/rpc/credssp/rpc-credssp-response-client.js +312 -0
  288. package/core/rpc/credssp/rpc-credssp-response-handler.js +315 -0
  289. package/core/rpc/dialog/rpc-dialog-client.js +312 -0
  290. package/core/rpc/dialog/rpc-dialog-handler.js +312 -0
  291. package/core/rpc/dialog/rpc-dialog-model.js +312 -0
  292. package/core/rpc/dialog/rpc-dialog-subject-server.js +315 -0
  293. package/core/rpc/electron/rpc-electron-model.js +312 -0
  294. package/core/rpc/electron/rpc-electron-request-client.js +312 -0
  295. package/core/rpc/electron/rpc-electron-request-handler.js +312 -0
  296. package/core/rpc/electron/rpc-electron-request-subject-server.js +312 -0
  297. package/core/rpc/electron/rpc-electron-response-client.js +312 -0
  298. package/core/rpc/electron/rpc-electron-response-handler.js +312 -0
  299. package/core/rpc/elevate/rpc-observable-elevate-client.js +312 -0
  300. package/core/rpc/elevate/rpc-observable-elevate-model.js +312 -0
  301. package/core/rpc/elevate/rpc-observable-elevate-server.js +312 -0
  302. package/core/rpc/error-monitor/rpc-observable-error-monitor-client.js +312 -0
  303. package/core/rpc/error-monitor/rpc-observable-error-monitor-model.js +315 -0
  304. package/core/rpc/error-monitor/rpc-observable-error-monitor-server.js +312 -0
  305. package/core/rpc/extension-broker/rpc-extension-broker-model.js +315 -0
  306. package/core/rpc/extension-broker/rpc-extension-broker-module-request-subject-server.js +315 -0
  307. package/core/rpc/extension-broker/rpc-extension-broker-request-client.js +312 -0
  308. package/core/rpc/extension-broker/rpc-extension-broker-request-handler.js +312 -0
  309. package/core/rpc/extension-broker/rpc-extension-broker-request-subject-server.js +312 -0
  310. package/core/rpc/extension-broker/rpc-extension-broker-response-client.js +312 -0
  311. package/core/rpc/extension-broker/rpc-extension-broker-response-handler.js +312 -0
  312. package/core/rpc/extension-data/rpc-observable-extension-data-client.js +312 -0
  313. package/core/rpc/extension-data/rpc-observable-extension-data-model.js +312 -0
  314. package/core/rpc/extension-data/rpc-observable-extension-data-server.js +312 -0
  315. package/core/rpc/forward/rpc-forward-auto-client.js +312 -0
  316. package/core/rpc/forward/rpc-forward-down-client.js +315 -0
  317. package/core/rpc/forward/rpc-forward-down-handler.js +312 -0
  318. package/core/rpc/forward/rpc-forward-model.js +312 -0
  319. package/core/rpc/forward/rpc-forward-up-client.js +312 -0
  320. package/core/rpc/forward/rpc-forward-up-handler.js +312 -0
  321. package/core/rpc/forward/rpc-forward-up-subject-server.js +312 -0
  322. package/core/rpc/log/rpc-log-client.js +312 -0
  323. package/core/rpc/log/rpc-log-handler.js +312 -0
  324. package/core/rpc/log/rpc-log-model.js +312 -0
  325. package/core/rpc/log/rpc-log-subject-server.js +312 -0
  326. package/core/rpc/notification/rpc-notification-client.js +312 -0
  327. package/core/rpc/notification/rpc-notification-handler.js +312 -0
  328. package/core/rpc/notification/rpc-notification-model.js +312 -0
  329. package/core/rpc/notification/rpc-notification-subject-server.js +312 -0
  330. package/core/rpc/overlay/rpc-overlay-close-client.js +312 -0
  331. package/core/rpc/overlay/rpc-overlay-close-handler.js +312 -0
  332. package/core/rpc/overlay/rpc-overlay-model.js +312 -0
  333. package/core/rpc/overlay/rpc-overlay-open-client.js +315 -0
  334. package/core/rpc/overlay/rpc-overlay-open-handler.js +312 -0
  335. package/core/rpc/overlay/rpc-overlay-open-subject-server.js +312 -0
  336. package/core/rpc/performance/rpc-observable-performance-client.js +312 -0
  337. package/core/rpc/performance/rpc-observable-performance-config-client.js +312 -0
  338. package/core/rpc/performance/rpc-observable-performance-config-server.js +312 -0
  339. package/core/rpc/performance/rpc-observable-performance-model.js +312 -0
  340. package/core/rpc/performance/rpc-observable-performance-server.js +312 -0
  341. package/core/rpc/report/rpc-report-client.js +312 -0
  342. package/core/rpc/report/rpc-report-handler.js +312 -0
  343. package/core/rpc/report/rpc-report-model.js +312 -0
  344. package/core/rpc/report/rpc-report-subject-server.js +315 -0
  345. package/core/rpc/rpc-base.js +312 -0
  346. package/core/rpc/rpc-channel.js +312 -0
  347. package/core/rpc/rpc-forwarder.js +312 -0
  348. package/core/rpc/rpc-inbound-client.js +312 -0
  349. package/core/rpc/rpc-inbound.js +312 -0
  350. package/core/rpc/rpc-manager.js +312 -0
  351. package/core/rpc/rpc-module-subject-server.js +315 -0
  352. package/core/rpc/rpc-observable-client.js +312 -0
  353. package/core/rpc/rpc-observable-request.js +312 -0
  354. package/core/rpc/rpc-observable-result.js +312 -0
  355. package/core/rpc/rpc-observable-server.js +312 -0
  356. package/core/rpc/rpc-outbound-client.js +312 -0
  357. package/core/rpc/rpc-outbound.js +312 -0
  358. package/core/rpc/rpc-subject-server.js +312 -0
  359. package/core/rpc/rpc.js +312 -0
  360. package/core/rpc/seek/rpc-seek-client.js +312 -0
  361. package/core/rpc/seek/rpc-seek-handler.js +315 -0
  362. package/core/rpc/seek/rpc-seek-model.js +312 -0
  363. package/core/rpc/settings/rpc-settings-client.js +315 -0
  364. package/core/rpc/settings/rpc-settings-handler.js +312 -0
  365. package/core/rpc/settings/rpc-settings-model.js +312 -0
  366. package/core/rpc/settings/rpc-settings-subject-server.js +312 -0
  367. package/core/rpc/shell-navigate/rpc-shell-navigate-client.js +312 -0
  368. package/core/rpc/shell-navigate/rpc-shell-navigate-handler.js +312 -0
  369. package/core/rpc/shell-navigate/rpc-shell-navigate-model.js +312 -0
  370. package/core/rpc/shell-navigate/rpc-shell-navigate-subject-server.js +312 -0
  371. package/core/rpc/sme-extension/rpc-sme-extension-model.js +315 -0
  372. package/core/rpc/sme-extension/rpc-sme-extension-request-client.js +312 -0
  373. package/core/rpc/sme-extension/rpc-sme-extension-request-handler.js +312 -0
  374. package/core/rpc/sme-extension/rpc-sme-extension-request-subject-server.js +312 -0
  375. package/core/rpc/sme-extension/rpc-sme-extension-response-client.js +312 -0
  376. package/core/rpc/sme-extension/rpc-sme-extension-response-handler.js +312 -0
  377. package/core/rpc/telemetry/rpc-telemetry-client.js +312 -0
  378. package/core/rpc/telemetry/rpc-telemetry-handler.js +315 -0
  379. package/core/rpc/telemetry/rpc-telemetry-model.js +312 -0
  380. package/core/rpc/telemetry/rpc-telemetry-subject-server.js +312 -0
  381. package/core/rpc/update-data/rpc-update-data-client.js +312 -0
  382. package/core/rpc/update-data/rpc-update-data-handler.js +312 -0
  383. package/core/rpc/update-data/rpc-update-data-model.js +312 -0
  384. package/core/rpc/update-data/rpc-update-data-subject-server.js +312 -0
  385. package/core/rpc/update-theme/rpc-observable-update-theme-client.js +312 -0
  386. package/core/rpc/update-theme/rpc-observable-update-theme-model.js +312 -0
  387. package/core/rpc/update-theme/rpc-observable-update-theme-server.js +312 -0
  388. package/core/rpc/work-item/rpc-work-item-client.js +312 -0
  389. package/core/rpc/work-item/rpc-work-item-handler.js +312 -0
  390. package/core/rpc/work-item/rpc-work-item-model.js +312 -0
  391. package/core/rpc/work-item/rpc-work-item-subject-server.js +312 -0
  392. package/core/rpc/work-item-find/rpc-work-item-find-client.js +312 -0
  393. package/core/rpc/work-item-find/rpc-work-item-find-handler.js +312 -0
  394. package/core/rpc/work-item-find/rpc-work-item-find-model.js +312 -0
  395. package/core/rpc/work-item-find/rpc-work-item-find-subject-server.js +312 -0
  396. package/core/security/active-connection.js +312 -0
  397. package/core/security/authorization-manager.js +312 -0
  398. package/core/security/connection-manager-settings/common-connection-settings.js +315 -0
  399. package/core/security/connection-manager-settings/connection-settings.js +312 -0
  400. package/core/security/connection-manager.js +312 -0
  401. package/core/security/connection-stream.js +312 -0
  402. package/core/security/connection.js +312 -0
  403. package/core/security/credssp-manager.js +312 -0
  404. package/core/security/sign-on-manager.js +312 -0
  405. package/core/security/tag-manager.js +312 -0
  406. package/core/security/tool-condition-validator.js +312 -0
  407. package/core/security/tool-connection-query.js +312 -0
  408. package/core/security/user-principal.js +312 -0
  409. package/core/shared/cluster-inventory/cluster-inventory-cache.js +312 -0
  410. package/core/shared/cluster-inventory/cluster-inventory.js +312 -0
  411. package/core/shared/cluster-inventory/cluster-node-inventory.js +312 -0
  412. package/core/shared/gateway-inventory/gateway-inventory-cache.js +312 -0
  413. package/core/shared/gateway-inventory/gateway-inventory-detail-cache.js +312 -0
  414. package/core/shared/gateway-inventory/gateway-inventory-detail.js +312 -0
  415. package/core/shared/gateway-inventory/gateway-inventory.js +312 -0
  416. package/core/shared/inventory-query-caches.js +312 -0
  417. package/core/shared/server-inventory/server-inventory-cache.js +312 -0
  418. package/core/shared/server-inventory/server-inventory-detail-cache.js +312 -0
  419. package/core/shared/server-inventory/server-inventory-detail.js +315 -0
  420. package/core/shared/server-inventory/server-inventory.js +312 -0
  421. package/core/shared/shared-cache.js +312 -0
  422. package/core/shared/tool-inventory/tool-inventory-cache.js +312 -0
  423. package/core/shared/tool-inventory/tool-inventory.js +312 -0
  424. package/core/special.js +315 -0
  425. package/core/test-utilities/accessibility-tester.js +312 -0
  426. package/core/test-utilities/console.mock.js +312 -0
  427. package/core/test-utilities/jasmine-axe-matcher.js +312 -0
  428. package/core/test-utilities/wait-async.js +312 -0
  429. package/core/test.js +312 -0
  430. package/core/testing.js +312 -0
  431. package/core/workflow/persistent-local-storage.js +312 -0
  432. package/core/workflow/persistent-work-item-apply-state.js +316 -0
  433. package/core/workflow/persistent-work-item-state.js +312 -0
  434. package/core/workflow/persistent-work-item.js +315 -0
  435. package/core/workflow/persistent-workflow-builder.js +312 -0
  436. package/core/workflow/persistent-workflow-context.js +312 -0
  437. package/core/workflow/persistent-workflow-runner.js +312 -0
  438. package/core/workflow/persistent-workflow-snapshot.js +312 -0
  439. package/core/workflow/persistent-workflow-store.js +312 -0
  440. package/core/workflow/persistent-workflow.js +312 -0
  441. package/package.json +11 -9
  442. package/styles/css/main-v2.css +1 -1
  443. package/styles/fonts/SegoeUI/Bold/SegoeUIBold-5.27.woff +0 -0
  444. package/styles/fonts/SegoeUI/Light/SegoeUILight-5.27.woff +0 -0
  445. package/styles/fonts/SegoeUI/Normal/SegoeUI-5.27.woff +0 -0
  446. package/styles/fonts/SegoeUI/SemiBold/SegoeUISemiBold-5.27.woff +0 -0
  447. package/styles/fonts/SegoeUI/SemiLight/SegoeUISemiLight-5.27.woff +0 -0
  448. package/styles/fonts/ServMDL2/ServMDL2-4.66.woff +0 -0
  449. package/tools/build/webpack/index-html.transform.js +312 -0
  450. package/tools/build/webpack/shell.index-html.transform.js +312 -0
  451. package/tools/build/webpack/shell.webpack.config.js +312 -0
  452. package/tools/build/webpack/webpack.config.js +312 -0
  453. package/tools/code-formatter/.eslintrc.base.json +3 -1
  454. package/tools/code-formatter/lint.d.ts.map +1 -1
  455. package/tools/code-formatter/lint.js +319 -1
  456. package/tools/code-formatter/lint.js.map +1 -1
  457. package/tools/code-formatter/utilities.d.ts +7 -0
  458. package/tools/code-formatter/utilities.d.ts.map +1 -0
  459. package/tools/code-formatter/utilities.js +395 -0
  460. package/tools/code-formatter/utilities.js.map +1 -0
  461. package/tools/gulp-doc-generator/index.js +312 -0
  462. package/tools/gulp-manifest-resource/index.js +312 -0
  463. package/tools/gulp-manifest-validator/index.js +312 -0
  464. package/tools/gulp-merge-json-in-folders/index.js +312 -0
  465. package/tools/gulp-merge-json-in-folders/json-merge.js +312 -0
  466. package/tools/gulp-ps-cim/index.js +315 -0
  467. package/tools/gulp-ps-code/index.d.ts.map +1 -1
  468. package/tools/gulp-ps-code/index.js +323 -2
  469. package/tools/gulp-ps-code/index.js.map +1 -1
  470. package/tools/gulp-ps-code/ps-code-convert.js +312 -0
  471. package/tools/gulp-ps-manifest/index.js +312 -0
  472. package/tools/gulp-ps-module/index.d.ts.map +1 -1
  473. package/tools/gulp-ps-module/index.js +327 -3
  474. package/tools/gulp-ps-module/index.js.map +1 -1
  475. package/tools/gulp-ps-resjson/index.js +315 -0
  476. package/tools/gulp-resjson/index.js +315 -0
  477. package/tools/gulp-resjson/resjson-convert.js +312 -0
  478. package/tools/gulp-schema-form/index.js +312 -0
  479. package/tools/gulp-svg-code/index.js +312 -0
  480. package/tools/gulp-svg-code/svg-code-convert.js +312 -0
  481. package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
  482. package/tools/gulp-update-notes-resource/index.js +316 -4
  483. package/tools/gulp-update-notes-resource/index.js.map +1 -1
  484. package/tools/module-template/.eslintrc.json +3 -0
  485. package/tools/module-template/build/increment-package-version.ps1 +216 -0
  486. package/tools/module-template/build/push-incremented-version.ps1 +216 -1
  487. package/tools/module-template/build/update-powershell-code.ps1 +216 -0
  488. package/tools/module-template/gulpfile.ts/common/clean.ts +2 -0
  489. package/tools/module-template/gulpfile.ts/common/pack.ts +17 -5
  490. package/tools/module-template/gulpfile.ts/common/powershell.ts +40 -2
  491. package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
  492. package/tools/pack-nuget/index.d.ts.map +1 -1
  493. package/tools/pack-nuget/index.js +321 -3
  494. package/tools/pack-nuget/index.js.map +1 -1
  495. package/tools/scripts/Invoke-PesterTest.ps1 +216 -0
  496. package/tools/scripts/New-ExtensionPackage.ps1 +373 -6
  497. package/tools/scripts/Search-NonAsciiText.ps1 +216 -0
  498. package/tools/scripts/package-information/README.md +3 -0
  499. package/tools/scripts/package-information/ms-logo.png +0 -0
  500. package/tools/test-runner/index.js +312 -0
  501. package/tools/utilities/index.js +312 -0
  502. package/tools/wac-cli/src/angular15/configs/angular-json-config.js +312 -0
  503. package/tools/wac-cli/src/angular15/configs/ci-build-yml-config.js +315 -0
  504. package/tools/wac-cli/src/angular15/configs/config.js +312 -0
  505. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
  506. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
  507. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +328 -0
  508. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
  509. package/tools/wac-cli/src/angular15/configs/git-ignore-config.js +312 -0
  510. package/tools/wac-cli/src/angular15/configs/jasmine-test-config.js +315 -0
  511. package/tools/wac-cli/src/angular15/configs/package-json-config.js +312 -0
  512. package/tools/wac-cli/src/angular15/configs/replace-config.js +315 -0
  513. package/tools/wac-cli/src/angular15/configs/tsconfig-config.js +312 -0
  514. package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +312 -0
  515. package/tools/wac-cli/src/angular15/main.d.ts +19 -3
  516. package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
  517. package/tools/wac-cli/src/angular15/main.js +353 -7
  518. package/tools/wac-cli/src/angular15/main.js.map +1 -1
  519. package/tools/wac-cli/src/angular15/upgrader/angular-json-upgrader.js +316 -0
  520. package/tools/wac-cli/src/angular15/upgrader/audit/ajax-response-updater.js +312 -0
  521. package/tools/wac-cli/src/angular15/upgrader/audit/css-syntax-error-updater.js +312 -0
  522. package/tools/wac-cli/src/angular15/upgrader/audit/declare-override-updater.js +312 -0
  523. package/tools/wac-cli/src/angular15/upgrader/audit/error-updater-angular15.js +312 -0
  524. package/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.js +312 -0
  525. package/tools/wac-cli/src/angular15/upgrader/audit/iif-updater-util.js +312 -0
  526. package/tools/wac-cli/src/angular15/upgrader/audit/load-children-callback-updater.js +315 -0
  527. package/tools/wac-cli/src/angular15/upgrader/audit/log-parser.js +312 -0
  528. package/tools/wac-cli/src/angular15/upgrader/audit/observable-throw-updater.js +312 -0
  529. package/tools/wac-cli/src/angular15/upgrader/audit/parameter-count-violation-updater.js +312 -0
  530. package/tools/wac-cli/src/angular15/upgrader/audit/string-replace-updater.js +312 -0
  531. package/tools/wac-cli/src/angular15/upgrader/audit/subjuct-next-updater-util.js +312 -0
  532. package/tools/wac-cli/src/angular15/upgrader/ci-build-yml-upgrader.js +312 -0
  533. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
  534. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
  535. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +361 -0
  536. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
  537. package/tools/wac-cli/src/angular15/upgrader/file-replacement-upgrader.js +312 -0
  538. package/tools/wac-cli/src/angular15/upgrader/git-ignore-upgrader.js +312 -0
  539. package/tools/wac-cli/src/angular15/upgrader/jasmine-test-upgrader.js +312 -0
  540. package/tools/wac-cli/src/angular15/upgrader/package-json-upgrader.js +312 -0
  541. package/tools/wac-cli/src/angular15/upgrader/remove-upgrader.js +315 -0
  542. package/tools/wac-cli/src/angular15/upgrader/replace-upgrader.js +312 -0
  543. package/tools/wac-cli/src/angular15/upgrader/tsconfig-upgrader.js +312 -0
  544. package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +312 -0
  545. package/tools/wac-cli/src/angular15/upgrader/version-json-upgrader.js +312 -0
  546. package/tools/wac-cli/src/angular15/utils/add-item.js +312 -0
  547. package/tools/wac-cli/src/angular15/utils/command-runner.js +312 -0
  548. package/tools/wac-cli/src/angular15/utils/file-comparison.js +315 -0
  549. package/tools/wac-cli/src/angular15/utils/file-replacement.js +312 -0
  550. package/tools/wac-cli/src/angular15/utils/file-writer.js +312 -0
  551. package/tools/wac-cli/src/angular15/utils/logger.js +312 -0
  552. package/tools/wac-cli/src/angular15/utils/main-debugger.js +312 -0
  553. package/tools/wac-cli/src/angular15/utils/relative-path.js +312 -0
  554. package/tools/wac-cli/src/angular15/utils/remove-item.js +312 -0
  555. package/tools/wac-cli/src/angular15/utils/space-generator.js +312 -0
  556. package/tools/wac-cli/src/angular15/utils/update-shell-references.js +316 -0
  557. package/tools/wac-cli/src/common.js +312 -0
  558. package/tools/wac-cli/src/create/main.js +312 -0
  559. package/tools/wac-cli/src/eslint/main.js +312 -0
  560. package/tools/wac-cli/src/index.js +312 -0
  561. package/tools/wac-cli/src/upgrade/error-updater.js +312 -0
  562. package/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.js +315 -0
  563. package/tools/wac-cli/src/upgrade/error-updaters/only-arrow-functions-updater.js +315 -0
  564. package/tools/wac-cli/src/upgrade/error-updaters/updater-lookup.js +312 -0
  565. package/tools/wac-cli/src/upgrade/file-updater.js +312 -0
  566. package/tools/wac-cli/src/upgrade/get-files.js +312 -0
  567. package/tools/wac-cli/src/upgrade/main.js +312 -0
  568. package/tools/wac-cli/src/upgrade/models/error-result.js +312 -0
  569. package/tools/wac-cli/src/upgrade/models/updater-interface.js +312 -0
  570. package/tools/wac-cli/src/upgrade/package-updater.js +312 -0
  571. package/tools/wac-cli/templates/wac-template/src/favicon.ico +0 -0
  572. package/tools/wac-cli/templates/wac-template/src/karma.conf.js +312 -0
  573. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Error.ps1 +216 -0
  574. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Exception.ps1 +216 -0
  575. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Process.ps1 +216 -1
  576. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Service.ps1 +216 -1
  577. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-WinRmState.ps1 +216 -1
  578. package/core/data/extension-broker/snap-in-listener.d.ts.map +0 -1
  579. package/core/data/extension-broker/snap-in-listener.js +0 -73
  580. package/core/data/extension-broker/snap-in-listener.js.map +0 -1
  581. package/microsoft-windows-admin-center-sdk-4.123.0.tgz +0 -0
@@ -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 * Use the detailRecordremoteExceptionMessage on the error instead of detailRecord.message\r\n */\r\n useRemoteExceptionMessage?: boolean;\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 * Gateway version 2.0.0 Node API set.\r\n */\r\n /**\r\n * WinREST service on Windows platform.\r\n */\r\n public static serviceWinRest = 'WinREST';\r\n\r\n /**\r\n * WinStream service on Windows platform.\r\n */\r\n public static serviceWinStream = 'WinStream';\r\n\r\n /**\r\n * LinuxBase on Linux platform.\r\n */\r\n public static serviceLinuxBase = 'LinuxBase';\r\n\r\n /**\r\n * ActiveDirectory on WinREST.\r\n */\r\n public static controllerActiveDirectory = 'ActiveDirectory';\r\n\r\n /**\r\n * CIM on WinREST.\r\n */\r\n public static controllerCim = 'CIM';\r\n\r\n /**\r\n * Extensions on WinREST.\r\n */\r\n public static controllerExtensions = 'Extensions';\r\n\r\n /**\r\n * FileTransfer on WinREST.\r\n */\r\n public static controllerFileTransfer = 'FileTransfer';\r\n\r\n /**\r\n * JEA on WinREST.\r\n */\r\n public static controllerJea = 'JEA';\r\n\r\n /**\r\n * Nuget on WinREST.\r\n */\r\n public static controllerNuget = 'Nuget';\r\n\r\n /**\r\n * PerformanceCounter on WinREST.\r\n */\r\n public static controllerPerformanceCounter = 'PerformanceCounter';\r\n\r\n /**\r\n * PowerShell on WinREST.\r\n */\r\n public static controllerPowerShell = 'PowerShell';\r\n\r\n /**\r\n * PseudoConsole on WinStream.\r\n */\r\n public static controllerPseudoConsole = 'PseudoConsole';\r\n\r\n /**\r\n * Ssh on LinuxBase.\r\n */\r\n public static controllerSsh = 'Ssh';\r\n\r\n /**\r\n * SshFile on LinuxBase.\r\n */\r\n public static controllerSshFile = 'SshFile';\r\n\r\n /**\r\n * State on WinREST.\r\n */\r\n public static controllerState = 'State';\r\n\r\n /**\r\n * Stream on WinStream.\r\n */\r\n public static controllerStream = 'Stream';\r\n\r\n /**\r\n * Stream on LinuxBase.\r\n */\r\n public static controllerStreamSsh = 'StreamSsh';\r\n\r\n /**\r\n * Tcp on WinStream and LinuxBase.\r\n */\r\n public static controllerTcp = 'Tcp';\r\n\r\n /**\r\n * Wdac on WinREST.\r\n */\r\n public static controllerWdac = 'Wdac';\r\n\r\n /**\r\n * Socket URL on WinStream.\r\n */\r\n public static streamSocketV200 = '{0}/api/services/' + Net.serviceWinStream + '/' + Net.controllerStream + '/socket/{1}';\r\n\r\n /**\r\n * Socket URL on LinuxBase.\r\n */\r\n public static sshStreamSocket = '{0}/api/services/' + Net.serviceLinuxBase + '/' + Net.controllerStreamSsh + '/socket';\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 // domain is empty if UPN is used.\r\n username = [\"\", value];\r\n } else {\r\n username = value.split('\\\\');\r\n }\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(() => 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 const errorMessage = errorPrefix ? prefixFormat.format(error.message) : error.message;\r\n if(error.details && Array.isArray(error.details)) {\r\n // Add details to error message.\r\n return this.parseErrorDetails(error.details, errorMessage);\r\n }\r\n return errorMessage;\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 private static parseErrorDetails(details: any, message: string): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const detailsText = strings.Error.Details.text;\r\n const errorMessages = details.map((detail) => {\r\n try {\r\n const parsedDetail = JSON.parse(detail.message);\r\n if (parsedDetail?.error?.message) {\r\n return parsedDetail.error.message;\r\n }\r\n } catch (error) {\r\n // The message is not valid JSON\r\n return detail.message;\r\n }\r\n });\r\n // Joining the error messages with newline characters\r\n const detailsMessage = `${detailsText}\\n${errorMessages.join('\\n\\n')}`;\r\n // Joining the actual error message with details\r\n return `${message}\\n\\n${detailsMessage}`;\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.substring(position, length));\r\n }\r\n\r\n parts.push(text.substring(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 * Use the detailRecordremoteExceptionMessage on the error instead of detailRecord.message\r\n */\r\n useRemoteExceptionMessage?: boolean;\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 * Gateway version 2.0.0 Node API set.\r\n */\r\n /**\r\n * WinREST service on Windows platform.\r\n */\r\n public static serviceWinRest = 'WinREST';\r\n\r\n /**\r\n * WinStream service on Windows platform.\r\n */\r\n public static serviceWinStream = 'WinStream';\r\n\r\n /**\r\n * LinuxBase on Linux platform.\r\n */\r\n public static serviceLinuxBase = 'LinuxBase';\r\n\r\n /**\r\n * ActiveDirectory on WinREST.\r\n */\r\n public static controllerActiveDirectory = 'ActiveDirectory';\r\n\r\n /**\r\n * CIM on WinREST.\r\n */\r\n public static controllerCim = 'CIM';\r\n\r\n /**\r\n * Extensions on WinREST.\r\n */\r\n public static controllerExtensions = 'Extensions';\r\n\r\n /**\r\n * FileTransfer on WinREST.\r\n */\r\n public static controllerFileTransfer = 'FileTransfer';\r\n\r\n /**\r\n * JEA on WinREST.\r\n */\r\n public static controllerJea = 'JEA';\r\n\r\n /**\r\n * Nuget on WinREST.\r\n */\r\n public static controllerNuget = 'Nuget';\r\n\r\n /**\r\n * PerformanceCounter on WinREST.\r\n */\r\n public static controllerPerformanceCounter = 'PerformanceCounter';\r\n\r\n /**\r\n * PowerShell on WinREST.\r\n */\r\n public static controllerPowerShell = 'PowerShell';\r\n\r\n /**\r\n * PseudoConsole on WinStream.\r\n */\r\n public static controllerPseudoConsole = 'PseudoConsole';\r\n\r\n /**\r\n * Ssh on LinuxBase.\r\n */\r\n public static controllerSsh = 'Ssh';\r\n\r\n /**\r\n * SshFile on LinuxBase.\r\n */\r\n public static controllerSshFile = 'SshFile';\r\n\r\n /**\r\n * State on WinREST.\r\n */\r\n public static controllerState = 'State';\r\n\r\n /**\r\n * Stream on WinStream.\r\n */\r\n public static controllerStream = 'Stream';\r\n\r\n /**\r\n * Stream on LinuxBase.\r\n */\r\n public static controllerStreamSsh = 'StreamSsh';\r\n\r\n /**\r\n * Tcp on WinStream and LinuxBase.\r\n */\r\n public static controllerTcp = 'Tcp';\r\n\r\n /**\r\n * Wdac on WinREST.\r\n */\r\n public static controllerWdac = 'Wdac';\r\n\r\n /**\r\n * Socket URL on WinStream.\r\n */\r\n public static streamSocketV200 = '{0}/api/services/' + Net.serviceWinStream + '/' + Net.controllerStream + '/socket/{1}';\r\n\r\n /**\r\n * Socket URL on LinuxBase.\r\n */\r\n public static sshStreamSocket = '{0}/api/services/' + Net.serviceLinuxBase + '/' + Net.controllerStreamSsh + '/socket';\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 // domain is empty if UPN is used.\r\n username = [\"\", value];\r\n } else {\r\n username = value.split('\\\\');\r\n }\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(() => 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 const errorMessage = errorPrefix ? prefixFormat.format(error.message) : error.message;\r\n if(error.details && Array.isArray(error.details)) {\r\n // Add details to error message.\r\n return this.parseErrorDetails(error.details, errorMessage);\r\n }\r\n return errorMessage;\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 private static parseErrorDetails(details: any, message: string): string {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core;\r\n const detailsText = strings.Error.Details.text;\r\n const errorMessages = details.map((detail) => {\r\n try {\r\n const parsedDetail = JSON.parse(detail.message);\r\n if (parsedDetail?.error?.message) {\r\n return parsedDetail.error.message;\r\n }\r\n } catch (error) {\r\n // The message is not valid JSON\r\n return detail.message;\r\n }\r\n });\r\n // Joining the error messages with newline characters\r\n const detailsMessage = `${detailsText}\\n${errorMessages.join('\\n\\n')}`;\r\n // Joining the actual error message with details\r\n return `${message}\\n\\n${detailsMessage}`;\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.substring(position, position + length));\r\n }\r\n\r\n parts.push(text.substring(position));\r\n\r\n return parts;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../packages/core/data/node-connection.ts"],"names":[],"mappings":"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","file":"node-connection.d.ts","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { map, mergeMap } from 'rxjs/operators';\r\nimport { SmeWebTelemetry } from '../diagnostics/sme-web-telemetry';\r\nimport { Strings } from '../generated/strings';\r\nimport { EnvironmentModule } from '../manifest/environment-modules';\r\nimport { AuthorizationManager, AuthorizationToken } from '../security/authorization-manager';\r\nimport { GatewayConnection, GatewayRequest } from './gateway-connection';\r\nimport { GatewayUrlTranslator } from './gateway-url-translator';\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 if command should run in local runspace instead of remote runspace.\r\n */\r\n useInProcRunspace?: boolean;\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 * SmeWebTelemetry will not be sent for polling PS events.\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 * Service request interface for gateway version 2.\r\n */\r\nexport interface ServiceRequest {\r\n /**\r\n * The service name such as \"WinRest\", \"WinStream\", \"LinuxBase\" and so on.\r\n */\r\n serviceName: string;\r\n\r\n /**\r\n * The controller name such as \"PowerShell\", \"Cim\", \"Ssh\" and so on.\r\n */\r\n controllerName: string;\r\n\r\n /**\r\n * The node name.\r\n */\r\n nodeName: string;\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 serviceRequest the object of service request.\r\n * @param remained the remained Url after 'nodes/<nodeName>'.\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public post(serviceRequest: ServiceRequest, remained: string, body?: any, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public post(nodeOrService: string | ServiceRequest, remained: string, body?: any, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param request the node request object.\r\n * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public get(serviceRequest: ServiceRequest, relativeUrl: string, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public get(nodeOrService: string | ServiceRequest, remained: string, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\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 * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public put(serviceRequest: ServiceRequest, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public put(nodeOrService: string | ServiceRequest, remained: string, body?: string, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\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 * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public patch(serviceRequest: ServiceRequest, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public patch(nodeOrService: string | ServiceRequest, remained: string, body?: string, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\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 * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public delete(serviceRequest: ServiceRequest, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public delete(nodeOrService: string | ServiceRequest, remained: string, body?: string, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param request the node request object.\r\n * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public deleteQuick(serviceRequest: ServiceRequest, relativeUrl: string, request?: NodeRequest): void;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public deleteQuick(nodeOrService: string | ServiceRequest, remained: string, request?: NodeRequest): void {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request.headers = request.headers || {};\r\n if (!request.authToken) {\r\n // if we don't 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 (<any>request).headers[headerConstants.POWERSHELL_ENDPOINT] = request.powerShellEndpoint;\r\n } else if (endpoint) {\r\n (<any>request).headers[headerConstants.POWERSHELL_ENDPOINT] = endpoint;\r\n }\r\n\r\n if (request.authenticationMechanism === 'Credssp') {\r\n (<any>request).headers[headerConstants.AUTHENTICATION_MECHANISM] = request.authenticationMechanism;\r\n }\r\n\r\n return this.gateway.deleteQuick(relativeUrl, 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 * Creates service node API for Gateway V2.\r\n *\r\n * @param serviceName the name of service.\r\n * @param apiName the name of api.\r\n * @param nodeName the name of node.\r\n * @param remained the remained URL after it including option parameters.\r\n * @returns URL string.\r\n */\r\n public getServiceUrl(serviceName: string, apiName: string, nodeName: string, remained: string): string {\r\n // 1) if null or empty, it's empty.\r\n // 2) if start with \"?\", remains as is.\r\n // 3) if not started with \"/\", add \"/\".\r\n remained = remained ?? '';\r\n if (remained.length > 0 && !remained.startsWith('/')) {\r\n if (!remained.startsWith('?')) {\r\n remained = `/${remained}`;\r\n }\r\n }\r\n\r\n // for example, \"/api/services/WinREST/PowerShell/nodes/computer-abc/invoke\"\r\n return `/Services/${serviceName}/${apiName}/nodes/${nodeName}${remained}`;\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 (<any>request).headers[headerConstants.LOG_AUDIT] = request.logAudit ? 'true' : 'false';\r\n }\r\n\r\n if (request.logTelemetry === true || request.logTelemetry === false) {\r\n (<any>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 (<any>request).headers[headerConstants.POWERSHELL_ENDPOINT] = request.powerShellEndpoint;\r\n } else if (endpoint) {\r\n (<any>request).headers[headerConstants.POWERSHELL_ENDPOINT] = endpoint;\r\n }\r\n\r\n if (request.authenticationMechanism === 'Credssp') {\r\n (<any>request).headers[headerConstants.AUTHENTICATION_MECHANISM] = request.authenticationMechanism;\r\n }\r\n\r\n return request;\r\n }\r\n\r\n /**\r\n * Get node name and node url.\r\n * @param nodeOrService The node name or service request object.\r\n * @param remained The remained url.\r\n * @returns node name and node url.\r\n */\r\n private getNodeUrl(nodeOrService: string | ServiceRequest, remained: string): { nodeName: string, relativeUrl: string } {\r\n if (typeof nodeOrService === 'string') {\r\n const nodeName = <string>nodeOrService;\r\n return { nodeName, relativeUrl: this.getNodeMappedUrl(nodeName, remained) };\r\n }\r\n\r\n const service = <ServiceRequest>nodeOrService;\r\n return {\r\n nodeName: service.nodeName,\r\n relativeUrl: this.getServiceUrl(service.serviceName, service.controllerName, service.nodeName, remained)\r\n };\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 private getNodeMappedUrl(nodeName: string, relativeUrl: string): string {\r\n if (EnvironmentModule.isGatewayV200) {\r\n const translation = GatewayUrlTranslator.translate(relativeUrl);\r\n if (translation) {\r\n return `${translation.startUrl}/nodes/${nodeName}/${translation.newUrl}`;\r\n }\r\n\r\n SmeWebTelemetry.traceAction(null, {\r\n content: {\r\n message: 'Could not get translation for URL: {0}'.format(relativeUrl),\r\n action: 'TranslateUrlToGateWayV2'\r\n }\r\n },\r\n { type: 'error' });\r\n\r\n throw new Error(MsftSme.getStrings<Strings>().MsftSmeShell.Core.TranslateGatewayUrls.Url.Not.expected.ErrorMessage\r\n .format(relativeUrl)\r\n );\r\n }\r\n\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.d.ts","sourcesContent":["import { Observable, of } from 'rxjs';\r\nimport { map, mergeMap } from 'rxjs/operators';\r\nimport { SmeWebTelemetry } from '../diagnostics/sme-web-telemetry';\r\nimport { EnvironmentModule } from '../manifest/environment-modules';\r\nimport { AuthorizationManager, AuthorizationToken } from '../security/authorization-manager';\r\nimport { GatewayConnection, GatewayRequest } from './gateway-connection';\r\nimport { GatewayUrlTranslator } from './gateway-url-translator';\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 if command should run in local runspace instead of remote runspace.\r\n */\r\n useInProcRunspace?: boolean;\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 * SmeWebTelemetry will not be sent for polling PS events.\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 * Service request interface for gateway version 2.\r\n */\r\nexport interface ServiceRequest {\r\n /**\r\n * The service name such as \"WinRest\", \"WinStream\", \"LinuxBase\" and so on.\r\n */\r\n serviceName: string;\r\n\r\n /**\r\n * The controller name such as \"PowerShell\", \"Cim\", \"Ssh\" and so on.\r\n */\r\n controllerName: string;\r\n\r\n /**\r\n * The node name.\r\n */\r\n nodeName: string;\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 serviceRequest the object of service request.\r\n * @param remained the remained Url after 'nodes/<nodeName>'.\r\n * @param body the body string JSON.stringfy'ed\r\n * @param request the node request object.\r\n * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public post(serviceRequest: ServiceRequest, remained: string, body?: any, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public post(nodeOrService: string | ServiceRequest, remained: string, body?: any, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param request the node request object.\r\n * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public get(serviceRequest: ServiceRequest, relativeUrl: string, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public get(nodeOrService: string | ServiceRequest, remained: string, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\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 * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public put(serviceRequest: ServiceRequest, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public put(nodeOrService: string | ServiceRequest, remained: string, body?: string, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\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 * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public patch(serviceRequest: ServiceRequest, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public patch(nodeOrService: string | ServiceRequest, remained: string, body?: string, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\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 * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public delete(serviceRequest: ServiceRequest, relativeUrl: string, body?: string, request?: NodeRequest): Observable<any>;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public delete(nodeOrService: string | ServiceRequest, remained: string, body?: string, request?: NodeRequest): Observable<any> {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request = this.createNodeRequest(request || <NodeRequest>{}, 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 serviceRequest the object of service request.\r\n * @param relativeUrl the relative Url after \"/api/nodes/<nodeName>\"\r\n * @param request the node request object.\r\n * @remarks this API is for gateway version 2. It doesn't work on gateway version 1.\r\n */\r\n public deleteQuick(serviceRequest: ServiceRequest, relativeUrl: string, request?: NodeRequest): void;\r\n /**\r\n * @deprecated This API is for version 1 gateway server, use new API for version 2 gateway.\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 public deleteQuick(nodeOrService: string | ServiceRequest, remained: string, request?: NodeRequest): void {\r\n const { nodeName, relativeUrl } = this.getNodeUrl(nodeOrService, remained);\r\n request.headers = request.headers || {};\r\n if (!request.authToken) {\r\n // if we don't 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 (<any>request).headers[headerConstants.POWERSHELL_ENDPOINT] = request.powerShellEndpoint;\r\n } else if (endpoint) {\r\n (<any>request).headers[headerConstants.POWERSHELL_ENDPOINT] = endpoint;\r\n }\r\n\r\n if (request.authenticationMechanism === 'Credssp') {\r\n (<any>request).headers[headerConstants.AUTHENTICATION_MECHANISM] = request.authenticationMechanism;\r\n }\r\n\r\n return this.gateway.deleteQuick(relativeUrl, 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 * Creates service node API for Gateway V2.\r\n *\r\n * @param serviceName the name of service.\r\n * @param apiName the name of api.\r\n * @param nodeName the name of node.\r\n * @param remained the remained URL after it including option parameters.\r\n * @returns URL string.\r\n */\r\n public getServiceUrl(serviceName: string, apiName: string, nodeName: string, remained: string): string {\r\n // 1) if null or empty, it's empty.\r\n // 2) if start with \"?\", remains as is.\r\n // 3) if not started with \"/\", add \"/\".\r\n remained = remained ?? '';\r\n if (remained.length > 0 && !remained.startsWith('/')) {\r\n if (!remained.startsWith('?')) {\r\n remained = `/${remained}`;\r\n }\r\n }\r\n\r\n // for example, \"/api/services/WinREST/PowerShell/nodes/computer-abc/invoke\"\r\n return `/Services/${serviceName}/${apiName}/nodes/${nodeName}${remained}`;\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 (<any>request).headers[headerConstants.LOG_AUDIT] = request.logAudit ? 'true' : 'false';\r\n }\r\n\r\n if (request.logTelemetry === true || request.logTelemetry === false) {\r\n (<any>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 (<any>request).headers[headerConstants.POWERSHELL_ENDPOINT] = request.powerShellEndpoint;\r\n } else if (endpoint) {\r\n (<any>request).headers[headerConstants.POWERSHELL_ENDPOINT] = endpoint;\r\n }\r\n\r\n if (request.authenticationMechanism === 'Credssp') {\r\n (<any>request).headers[headerConstants.AUTHENTICATION_MECHANISM] = request.authenticationMechanism;\r\n }\r\n\r\n return request;\r\n }\r\n\r\n /**\r\n * Get node name and node url.\r\n * @param nodeOrService The node name or service request object.\r\n * @param remained The remained url.\r\n * @returns node name and node url.\r\n */\r\n private getNodeUrl(nodeOrService: string | ServiceRequest, remained: string): { nodeName: string, relativeUrl: string } {\r\n if (typeof nodeOrService === 'string') {\r\n const nodeName = <string>nodeOrService;\r\n return { nodeName, relativeUrl: this.getNodeMappedUrl(nodeName, remained) };\r\n }\r\n\r\n const service = <ServiceRequest>nodeOrService;\r\n return {\r\n nodeName: service.nodeName,\r\n relativeUrl: this.getServiceUrl(service.serviceName, service.controllerName, service.nodeName, remained)\r\n };\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 private getNodeMappedUrl(nodeName: string, relativeUrl: string): string {\r\n if (EnvironmentModule.isGatewayV200) {\r\n const translation = GatewayUrlTranslator.translate(relativeUrl);\r\n if (translation) {\r\n return `${translation.startUrl}/nodes/${nodeName}/${translation.newUrl}`;\r\n }\r\n\r\n SmeWebTelemetry.traceAction(\r\n null,\r\n {\r\n content: {\r\n message: 'Could not get translation for URL: {0}'.format(relativeUrl),\r\n action: 'TranslateUrlToGateWayV2'\r\n }\r\n },\r\n { type: 'error' });\r\n }\r\n\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"]}