@microsoft/windows-admin-center-sdk 2.186.0 → 2.297.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/angular/assets/strings/cs-CZ/strings.json +1 -1
- package/angular/assets/strings/de-DE/strings.json +1 -1
- package/angular/assets/strings/es-ES/strings.json +1 -1
- package/angular/assets/strings/fr-FR/strings.json +1 -1
- package/angular/assets/strings/hu-HU/strings.json +1 -1
- package/angular/assets/strings/it-IT/strings.json +1 -1
- package/angular/assets/strings/ja-JP/strings.json +1 -1
- package/angular/assets/strings/ko-KR/strings.json +1 -1
- package/angular/assets/strings/nl-NL/strings.json +1 -1
- package/angular/assets/strings/pl-PL/strings.json +1 -1
- package/angular/assets/strings/pt-BR/strings.json +1 -1
- package/angular/assets/strings/pt-PT/strings.json +1 -1
- package/angular/assets/strings/ru-RU/strings.json +1 -1
- package/angular/assets/strings/strings.json +1 -1
- package/angular/assets/strings/sv-SE/strings.json +1 -1
- package/angular/assets/strings/tr-TR/strings.json +1 -1
- package/angular/assets/strings/zh-CN/strings.json +1 -1
- package/angular/assets/strings/zh-TW/strings.json +1 -1
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js +1103 -1209
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js.map +1 -1
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js +2 -2
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js.map +1 -1
- package/angular/esm2015/src/controls/actions/actions.module.js +2 -2
- package/angular/esm2015/src/controls/actions/containers/action-bar/action-bar.component.js +2 -2
- package/angular/esm2015/src/controls/actions/items/action-button/action-button-renderer.component.js +5 -5
- package/angular/esm2015/src/controls/actions/items/action-dropdown/action-dropdown.component.js +31 -13
- package/angular/esm2015/src/controls/actions/items/action-item.component.js +7 -3
- package/angular/esm2015/src/controls/badge/badge-base.component.js +2 -13
- package/angular/esm2015/src/controls/badge/bugfixes-feature-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/coming-soon-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/credssp-enabled-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/critical-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/custom-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/feedback-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/improvement-feature-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/new-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/new-feature-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/preview-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/warning-badge.component.js +42 -70
- package/angular/esm2015/src/controls/breadcrumb/breadcrumb.component.js +6 -6
- package/angular/esm2015/src/controls/breadcrumb-header/breadcrumb-header.component.js +2 -2
- package/angular/esm2015/src/controls/data-table/data-table-column.component.js +5 -3
- package/angular/esm2015/src/controls/data-table/data-table.component.js +20 -26
- package/angular/esm2015/src/controls/data-table/extensions/data-table-column-picker-extension.js +2 -1
- package/angular/esm2015/src/controls/details/details.component.js +2 -2
- package/angular/esm2015/src/controls/dialog/base-dialog.component.js +1 -1
- package/angular/esm2015/src/controls/dialog/confirmation-dialog/confirmation-dialog.component.js +20 -30
- package/angular/esm2015/src/controls/dialog/dialog.service.js +7 -3
- package/angular/esm2015/src/controls/dropdown/dropdown.component.js +2 -2
- package/angular/esm2015/src/controls/form/form-field/array/array-form-field.component.js +50 -40
- package/angular/esm2015/src/controls/form/form-field/checklist/checklist-form-field.component.js +3 -3
- package/angular/esm2015/src/controls/form/form-field/combobox/combobox-form-field.component.js +14 -13
- package/angular/esm2015/src/controls/form/form-field/datetime/datetime-form-field.component.js +2 -2
- package/angular/esm2015/src/controls/form/form-field/form-field.component.js +16 -4
- package/angular/esm2015/src/controls/form/form-field/options-form-field/form-field-option.component.js +5 -3
- package/angular/esm2015/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.js +25 -21
- package/angular/esm2015/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.js +5 -5
- package/angular/esm2015/src/controls/form/form-field/search/search-form-field.component.js +2 -2
- package/angular/esm2015/src/controls/form/form-field/tags/tags-form-field.component.js +2 -2
- package/angular/esm2015/src/controls/form/validation-alert/validation-alert.component.js +4 -10
- package/angular/esm2015/src/controls/form/validation-alert/validation-alert.js +1 -1
- package/angular/esm2015/src/controls/horizontal-bar-chart/stacked-horizontal-bar-chart.component.js +17 -1
- package/angular/esm2015/src/controls/icon/layered-icon/layered-icon.component.js +12 -1
- package/angular/esm2015/src/controls/icon/layered-icon/status/status-icon.component.js +53 -9
- package/angular/esm2015/src/controls/loading-wheel/loading-wheel.component.js +17 -1
- package/angular/esm2015/src/controls/master-view/master-view.component.js +34 -30
- package/angular/esm2015/src/controls/pivot/pivot-tab.component.js +1 -1
- package/angular/esm2015/src/controls/pivot/pivot.component.js +21 -9
- package/angular/esm2015/src/controls/property-grid/property-grid.component.js +13 -29
- package/angular/esm2015/src/controls/schema-form/schema-form-content.component.js +7 -4
- package/angular/esm2015/src/controls/settings/common-settings/common-settings.component.js +23 -35
- package/angular/esm2015/src/controls/settings/settings.component.js +28 -1
- package/angular/esm2015/src/controls/settings/settings.module.js +8 -3
- package/angular/esm2015/src/controls/tooltip/tooltip-host.component.js +16 -5
- package/angular/esm2015/src/controls/wizard/wizard.component.js +38 -6
- package/angular/esm2015/src/directives/clamp/clamp.directive.js +26 -7
- package/angular/esm2015/src/directives/discard/discard.directive.js +2 -2
- package/angular/esm2015/src/directives/markdown/markdown.directive.js +5 -18
- package/angular/esm2015/src/generated/strings.js +1 -1
- package/angular/esm2015/src/guards/experiment.guard.service.js +14 -1
- package/angular/esm2015/src/pipes/boolean-converter-pipe.js +11 -1
- package/angular/esm2015/src/pipes/byte-unit-converter-pipe.js +11 -1
- package/angular/esm2015/src/pipes/enum-converter-pipe.js +16 -1
- package/angular/esm2015/src/pipes/format-pipe.js +11 -1
- package/angular/esm2015/src/pipes/highlight-pipe.js +11 -1
- package/angular/esm2015/src/pipes/yesno-converter-pipe.js +11 -1
- package/angular/esm2015/src/service/gateway.service.js +8 -5
- package/angular/esm2015/src/service/notification.service.js +23 -1
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js +1042 -1069
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js.map +1 -1
- package/angular/package.json +0 -1
- package/angular/src/controls/actions/items/action-dropdown/action-dropdown.component.d.ts +2 -0
- package/angular/src/controls/actions/items/action-item.component.d.ts +11 -1
- package/angular/src/controls/badge/badge-base.component.d.ts +0 -4
- package/angular/src/controls/data-table/data-table-column.component.d.ts +2 -1
- package/angular/src/controls/data-table/data-table.component.d.ts +4 -0
- package/angular/src/controls/dialog/base-dialog.component.d.ts +1 -1
- package/angular/src/controls/form/form-field/form-field.component.d.ts +10 -1
- package/angular/src/controls/form/form-field/options-form-field/form-field-option.component.d.ts +5 -1
- package/angular/src/controls/form/validation-alert/validation-alert.component.d.ts +0 -4
- package/angular/src/controls/form/validation-alert/validation-alert.d.ts +0 -1
- package/angular/src/controls/horizontal-bar-chart/stacked-horizontal-bar-chart.component.d.ts +16 -0
- package/angular/src/controls/icon/layered-icon/layered-icon.component.d.ts +11 -0
- package/angular/src/controls/icon/layered-icon/status/status-icon.component.d.ts +13 -2
- package/angular/src/controls/loading-wheel/loading-wheel.component.d.ts +16 -0
- package/angular/src/controls/master-view/master-view.component.d.ts +1 -0
- package/angular/src/controls/pivot/pivot-tab.component.d.ts +0 -1
- package/angular/src/controls/pivot/pivot.component.d.ts +4 -0
- package/angular/src/controls/settings/common-settings/common-settings.component.d.ts +6 -5
- package/angular/src/controls/settings/settings.component.d.ts +27 -0
- package/angular/src/controls/settings/settings.module.d.ts +7 -6
- package/angular/src/controls/tooltip/tooltip-host.component.d.ts +1 -1
- package/angular/src/controls/wizard/wizard.component.d.ts +23 -0
- package/angular/src/directives/clamp/clamp.directive.d.ts +5 -0
- package/angular/src/directives/markdown/markdown.directive.d.ts +2 -3
- package/angular/src/generated/strings.d.ts +9 -0
- package/angular/src/guards/experiment.guard.service.d.ts +13 -0
- package/angular/src/pipes/boolean-converter-pipe.d.ts +10 -0
- package/angular/src/pipes/byte-unit-converter-pipe.d.ts +10 -0
- package/angular/src/pipes/enum-converter-pipe.d.ts +15 -0
- package/angular/src/pipes/format-pipe.d.ts +10 -0
- package/angular/src/pipes/highlight-pipe.d.ts +10 -0
- package/angular/src/pipes/yesno-converter-pipe.d.ts +10 -0
- package/angular/src/service/gateway.service.d.ts +3 -1
- package/angular/src/service/notification.service.d.ts +22 -0
- package/core/base/environment.d.ts +7 -0
- package/core/base/environment.js.map +1 -1
- package/core/base/versioned-object.js +2 -2
- package/core/base/versioned-object.js.map +1 -1
- package/core/data/cim-stream.js +8 -1
- package/core/data/cim-stream.js.map +1 -1
- package/core/data/core-environment.d.ts +4 -0
- package/core/data/core-environment.js +1 -0
- package/core/data/core-environment.js.map +1 -1
- package/core/data/crypto.js +10 -9
- package/core/data/crypto.js.map +1 -1
- package/core/data/file-transfer.js +5 -1
- package/core/data/file-transfer.js.map +1 -1
- package/core/data/gateway-connection.d.ts +11 -1
- package/core/data/gateway-connection.js +51 -9
- package/core/data/gateway-connection.js.map +1 -1
- package/core/data/http-constants.d.ts +5 -1
- package/core/data/http-constants.js +5 -1
- package/core/data/http-constants.js.map +1 -1
- package/core/data/net.d.ts +15 -11
- package/core/data/net.js +44 -41
- package/core/data/net.js.map +1 -1
- package/core/data/node-connection.d.ts +2 -2
- package/core/data/node-connection.js.map +1 -1
- package/core/data/powershell-stream.js +11 -3
- package/core/data/powershell-stream.js.map +1 -1
- package/core/data/powershell.d.ts +17 -1
- package/core/data/powershell.js +35 -9
- package/core/data/powershell.js.map +1 -1
- package/core/data/settings-manager.d.ts +9 -0
- package/core/data/settings-manager.js +18 -1
- package/core/data/settings-manager.js.map +1 -1
- package/core/generated/powershell-scripts.d.ts +5 -4
- package/core/generated/powershell-scripts.js +5 -4
- package/core/generated/powershell-scripts.js.map +1 -1
- package/core/host/host-core-manager.d.ts +36 -0
- package/core/host/host-core-manager.js +134 -0
- package/core/host/host-core-manager.js.map +1 -0
- package/core/host/host-core-message-type.d.ts +12 -0
- package/core/host/host-core-message-type.js +17 -0
- package/core/host/host-core-message-type.js.map +1 -0
- package/core/host/host-core-messages.d.ts +14 -0
- package/core/host/host-core-messages.js +3 -0
- package/core/host/host-core-messages.js.map +1 -0
- package/core/manifest/manifest-loader.d.ts +2 -1
- package/core/manifest/manifest-loader.js +27 -18
- package/core/manifest/manifest-loader.js.map +1 -1
- package/core/notification/notification.js +4 -0
- package/core/notification/notification.js.map +1 -1
- package/core/security/authorization-manager.d.ts +44 -0
- package/core/security/authorization-manager.js +111 -5
- package/core/security/authorization-manager.js.map +1 -1
- package/core/security/sign-on-manager.d.ts +109 -0
- package/core/security/sign-on-manager.js +119 -0
- package/core/security/sign-on-manager.js.map +1 -0
- package/core/security/tag-manager.js.map +1 -1
- package/core/shared/cluster-inventory/cluster-inventory-cache.js +3 -2
- package/core/shared/cluster-inventory/cluster-inventory-cache.js.map +1 -1
- package/core/shared/gateway-inventory/gateway-inventory-cache.d.ts +1 -1
- package/core/shared/gateway-inventory/gateway-inventory-cache.js +1 -1
- package/core/shared/gateway-inventory/gateway-inventory-cache.js.map +1 -1
- package/core/shared/server-inventory/server-inventory-cache.js +2 -1
- package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
- package/core/shared/tool-inventory/tool-inventory-cache.js +1 -1
- package/core/shared/tool-inventory/tool-inventory-cache.js.map +1 -1
- package/e2e/assets/strings/cs-CZ/strings.json +1 -1
- package/e2e/assets/strings/de-DE/strings.json +1 -1
- package/e2e/assets/strings/es-ES/strings.json +1 -1
- package/e2e/assets/strings/fr-FR/strings.json +1 -1
- package/e2e/assets/strings/hu-HU/strings.json +1 -1
- package/e2e/assets/strings/it-IT/strings.json +1 -1
- package/e2e/assets/strings/ja-JP/strings.json +1 -1
- package/e2e/assets/strings/ko-KR/strings.json +1 -1
- package/e2e/assets/strings/nl-NL/strings.json +1 -1
- package/e2e/assets/strings/pl-PL/strings.json +1 -1
- package/e2e/assets/strings/pt-BR/strings.json +1 -1
- package/e2e/assets/strings/pt-PT/strings.json +1 -1
- package/e2e/assets/strings/ru-RU/strings.json +1 -1
- package/e2e/assets/strings/strings.json +1 -1
- package/e2e/assets/strings/sv-SE/strings.json +1 -1
- package/e2e/assets/strings/tr-TR/strings.json +1 -1
- package/e2e/assets/strings/zh-CN/strings.json +1 -1
- package/e2e/assets/strings/zh-TW/strings.json +1 -1
- package/package.json +5 -5
- package/styles/css/fonts.css +2 -2
- package/styles/css/main.css +1 -1
- package/styles/fonts/ServMDL2/ServMDL2-4.62.woff +0 -0
- package/styles/fonts/ServMDL2/ServMDL2.json +238 -2039
- package/styles/fonts/ServMDL2/ServMDL2.scss +238 -2039
- package/tools/gulp-manifest-resource/index.js +3 -1
- package/tools/gulp-manifest-resource/index.js.map +1 -1
- package/tools/gulp-ps-cim/index.js +1 -1
- package/tools/gulp-ps-cim/index.js.map +1 -1
- package/tools/gulp-ps-cim/powershell-cim-config-schema.json +1 -1
- package/tools/gulp-ps-code/index.js +36 -2
- package/tools/gulp-ps-code/index.js.map +1 -1
- package/tools/gulp-ps-code/ps-code-convert.js +4 -8
- package/tools/gulp-ps-code/ps-code-convert.js.map +1 -1
- package/tools/gulp-ps-resjson/index.js +79 -74
- package/tools/gulp-ps-resjson/index.js.map +1 -1
- package/tools/module-template/build/pipelines/codeinspector.yml +27 -0
- package/tools/module-template/gulpfile.ts/common/lint.ts +3 -3
- package/tools/module-template/gulpfile.ts/common/pack.ts +14 -14
- package/tools/module-template/gulpfile.ts/common/ui-test-automation.ts +40 -0
- package/tools/module-template/gulpfile.ts/common/utilities.ts +10 -10
- package/tools/module-template/gulpfile.ts/common/validate.ts +14 -4
- package/tools/module-template/gulpfile.ts/index.ts +20 -8
- package/tools/wac-cli/src/upgrade/file-updater.d.ts +1 -0
- package/tools/wac-cli/src/upgrade/file-updater.js +7 -1
- package/tools/wac-cli/src/upgrade/file-updater.js.map +1 -1
- package/styles/fonts/ServMDL2/ServMDL2-4.33.woff +0 -0
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @smeDoc {@label highlightPipe @id smeHighlight}
|
|
5
|
+
*
|
|
6
|
+
* @overview
|
|
7
|
+
* @file {@filepath ./examples/highlight-overview.md}
|
|
8
|
+
*
|
|
9
|
+
* @example {@label Example enum Converter @id highlight-example }
|
|
10
|
+
* @file {@filename component.html @filepath ./examples/highlight-example.component.html}
|
|
11
|
+
* @file {@filename component.ts @filepath ./examples/highlight-example.component.ts}
|
|
12
|
+
*/
|
|
3
13
|
export declare class HighlightPipe implements PipeTransform {
|
|
4
14
|
transform(attribute: any, search: string, highlightClass?: string): string;
|
|
5
15
|
static ɵfac: i0.ɵɵFactoryDef<HighlightPipe, never>;
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @smeDoc {@label yesno-converterPipe @id smeBooleanToYesNoConverter}
|
|
5
|
+
*
|
|
6
|
+
* @overview
|
|
7
|
+
* @file {@filepath ./examples/yesno-converter-overview.md}
|
|
8
|
+
*
|
|
9
|
+
* @example {@label Example enum Converter @id yesno-converter-example }
|
|
10
|
+
* @file {@filename component.html @filepath ./examples/yesno-converter-example.component.html}
|
|
11
|
+
* @file {@filename component.ts @filepath ./examples/yesno-converter-example.component.ts}
|
|
12
|
+
*/
|
|
3
13
|
export declare class YesNoConverterPipe implements PipeTransform {
|
|
4
14
|
private strings;
|
|
5
15
|
transform(value: boolean): string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GatewayConnection } from '@microsoft/windows-admin-center-sdk/core/data/gateway-connection';
|
|
2
|
+
import { AuthorizationService } from './authorization.service';
|
|
2
3
|
import { HttpService } from './http.service';
|
|
3
4
|
import { RpcService } from './rpc.service';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
@@ -8,8 +9,9 @@ export declare class GatewayService extends GatewayConnection {
|
|
|
8
9
|
*
|
|
9
10
|
* @param http the Http object.
|
|
10
11
|
* @param rpcService the RPC service.
|
|
12
|
+
* @param authorizationService the authorizaton service.
|
|
11
13
|
*/
|
|
12
|
-
constructor(httpService: HttpService, rpcService: RpcService);
|
|
14
|
+
constructor(httpService: HttpService, rpcService: RpcService, authorizationService: AuthorizationService);
|
|
13
15
|
static ɵfac: i0.ɵɵFactoryDef<GatewayService, never>;
|
|
14
16
|
static ɵprov: i0.ɵɵInjectableDef<GatewayService>;
|
|
15
17
|
}
|
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
import { NotificationConnection } from '@microsoft/windows-admin-center-sdk/core/notification/notification-connection';
|
|
2
2
|
import { RpcService } from './rpc.service';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @smeDoc {@label Notifications @id sme-dev-guide-shell-services-notifications}
|
|
7
|
+
*
|
|
8
|
+
* @overview
|
|
9
|
+
* @file {@filepath ./notifications/examples/overview.md}
|
|
10
|
+
*
|
|
11
|
+
* @example {@label In progress notification @id in-progress-notification}
|
|
12
|
+
* @file {@filename notifications-in-progress.ts @filepath ./notifications/examples/notifications-in-progress.ts}
|
|
13
|
+
*
|
|
14
|
+
* @example {@label Alert notification @id alert-notifications}
|
|
15
|
+
* @file {@filename notifications-alert.ts @filepath ./notifications/examples/notifications-alert.ts}
|
|
16
|
+
*
|
|
17
|
+
* @example {@label Information notification @id information-notification}
|
|
18
|
+
* @file {@filename notifications-information.ts @filepath ./notifications/examples/notifications-information.ts}
|
|
19
|
+
*
|
|
20
|
+
* @example {@label Long running notification @id long-running-notification}
|
|
21
|
+
* @file {@filename notifications-long-running.ts @filepath ./notifications/examples/notifications-long-running.ts}
|
|
22
|
+
*
|
|
23
|
+
* @example {@label Long running with disabled notification @id long-running-disable-notification}
|
|
24
|
+
* @file {@filename notifications-long-running-disable.ts @filepath ./notifications/examples/notifications-long-running-disable.ts}
|
|
25
|
+
*/
|
|
4
26
|
/**
|
|
5
27
|
* Notification service class.
|
|
6
28
|
*/
|
|
@@ -12,6 +12,7 @@ declare namespace MsftSme {
|
|
|
12
12
|
powerShellModuleName?: string;
|
|
13
13
|
websocket?: boolean;
|
|
14
14
|
powerShellEndpoint?: string;
|
|
15
|
+
powerShellPrefix?: string;
|
|
15
16
|
sessionExpiration: number;
|
|
16
17
|
performanceProfile: boolean;
|
|
17
18
|
experiments?: string[];
|
|
@@ -77,6 +78,12 @@ declare namespace MsftSme {
|
|
|
77
78
|
gateway?: {
|
|
78
79
|
disabled?: boolean;
|
|
79
80
|
};
|
|
81
|
+
signOn?: {
|
|
82
|
+
signedHttpRequestToken?: {
|
|
83
|
+
jwt: string;
|
|
84
|
+
username: string;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
80
87
|
application?: {
|
|
81
88
|
theme?: 'light' | 'dark';
|
|
82
89
|
locale?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/core/base/environment.ts"],"names":[],"mappings":"AAAA,IAAU,OAAO,CAqVhB;AArVD,WAAU,OAAO;IACb,YAAY,CAAC;AAoVjB,CAAC,EArVS,OAAO,KAAP,OAAO,QAqVhB","file":"environment.js","sourcesContent":["namespace MsftSme {\r\n 'use strict';\r\n export interface MsftSmeInit {\r\n entryPointType?: string;\r\n entryPointName?: string;\r\n mode: number;\r\n moduleName?: string;\r\n moduleVersion?: string;\r\n shellOrigin?: string;\r\n isProduction?: boolean;\r\n sessionId?: string;\r\n logLevel?: number;\r\n powerShellModuleName?: string;\r\n websocket?: boolean;\r\n powerShellEndpoint?: string;\r\n sessionExpiration: number;\r\n performanceProfile: boolean;\r\n experiments?: string[];\r\n developerGuide: boolean;\r\n connectivityLevel: string;\r\n isShell: boolean;\r\n shellVersion: string;\r\n }\r\n\r\n export interface MsftSmeEnvironment {\r\n name: string;\r\n displayName: string;\r\n origin: string;\r\n signature: string;\r\n shell: {\r\n name: string;\r\n origin: string;\r\n };\r\n resources: any[];\r\n entryPoints: any[];\r\n modules: any[];\r\n configuration: EnvironmentConfiguration;\r\n version: string;\r\n loadPath?: string;\r\n }\r\n\r\n export interface MsftSmeAssets {\r\n css: string[];\r\n js: string[];\r\n }\r\n\r\n export interface MsftSmeExternalLibraries {\r\n // mapping of supported library versions to there library locations.\r\n // Caution. New library versions will almost always have a minimal\r\n // time where older versions must still be supported. (generally 2 GA releases)\r\n monaco: {\r\n '0.17.1': string;\r\n };\r\n jsll: {\r\n '4.2.18': string;\r\n };\r\n }\r\n\r\n /**\r\n * Defines a mapping of an assets versions to its relative module paths\r\n */\r\n export interface MsftSmeVersionedAsset extends MsftSme.StringMap<string> { }\r\n\r\n /**\r\n * Defines a mapping of an asset name to its versioned paths\r\n */\r\n export interface MsftSmeModuleAssets extends MsftSme.StringMap<MsftSmeVersionedAsset> { }\r\n\r\n /**\r\n * Defines a mapping of an modules names to its shared asset collection\r\n */\r\n export interface MsftSmeSharedAssets extends MsftSme.StringMap<MsftSmeModuleAssets> { }\r\n\r\n export interface MsftSmeResources {\r\n localeId: string;\r\n localeRegionalId: string;\r\n strings: any;\r\n theme: string;\r\n assets: MsftSmeAssets;\r\n moduleAssets: MsftSmeSharedAssets;\r\n accessibilityMode: boolean;\r\n lib: MsftSmeExternalLibraries;\r\n }\r\n\r\n export interface EnvironmentConfiguration {\r\n gateway?: {\r\n disabled?: boolean\r\n };\r\n application?: {\r\n theme?: 'light' | 'dark';\r\n locale?: string;\r\n };\r\n nodes?: {\r\n defaultCredentials?: {\r\n username: string,\r\n password: string\r\n encryptedWith?: 'jwk' | string\r\n }\r\n };\r\n notifications?: {\r\n redirectToHostWindow?: boolean\r\n };\r\n tools?: {\r\n hide?: boolean\r\n };\r\n connections?: {\r\n type?: 'standard' | 'server' | 'cluster',\r\n name?: string,\r\n nodeFqdns?: string[],\r\n header?: {\r\n hide?: boolean\r\n }\r\n };\r\n telemetry?: {\r\n sourceLibraryCdnLink?: string,\r\n sourceLibraryCdnIntegrityHash?: string\r\n };\r\n appBar?: {\r\n hide?: boolean\r\n title?: {\r\n hide?: boolean,\r\n value?: string,\r\n disableNavigation?: boolean\r\n },\r\n solution?: {\r\n default?: string,\r\n hide: boolean,\r\n hideDropdown: boolean\r\n },\r\n navigation?: {\r\n allowHistory: boolean,\r\n allowRefresh: boolean,\r\n allowUrlInput: boolean,\r\n allowHome: boolean\r\n },\r\n urlField?: {\r\n hideSolutionUrl: boolean\r\n },\r\n rightMenu?: {\r\n showScripts: boolean,\r\n showSettings: boolean,\r\n showAbout: boolean,\r\n showWindowControls: boolean,\r\n showShareLink: boolean\r\n },\r\n aboutDialog?: {\r\n showFeedback: boolean,\r\n feedbackLink: string,\r\n showDocumentation: boolean,\r\n documentationLink: string,\r\n releaseNotesLink: string,\r\n seeMoreReleaseDetailsLink: string,\r\n showLicense: boolean,\r\n showScriptsUseRights: boolean,\r\n showLicenseExtensions: boolean,\r\n showPrivacyStatement: boolean,\r\n privacyLink: string,\r\n showSupportPolicy: boolean,\r\n supportLink: string,\r\n showThirdPartyNotice: boolean,\r\n showShortcuts: boolean,\r\n openLinkWithoutHref: boolean\r\n },\r\n overview?: {\r\n gatewayStatusUpdateLink: string,\r\n updateLearnMoreLink: string\r\n }\r\n };\r\n settings?: {\r\n account?: {\r\n show: boolean\r\n },\r\n personalization?: {\r\n show: boolean\r\n },\r\n diagnostic?: {\r\n show: boolean\r\n },\r\n language?: {\r\n show: boolean\r\n },\r\n notification?: {\r\n show: boolean\r\n },\r\n extension?: {\r\n show: boolean\r\n },\r\n azure?: {\r\n show: boolean\r\n },\r\n access?: {\r\n show: boolean\r\n },\r\n sharedConnections?: {\r\n show: boolean\r\n },\r\n connectivity?: {\r\n show: boolean\r\n },\r\n general?: {\r\n show: boolean\r\n };\r\n updates?: {\r\n show: boolean\r\n }\r\n extensionUpdates?: {\r\n show: boolean\r\n }\r\n performance?: {\r\n show: boolean\r\n },\r\n advanced?: {\r\n show: boolean\r\n },\r\n proxy?: {\r\n show: boolean\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Electron Renderer\r\n * @see http://electron.atom.io/docs/api/ipc-renderer\r\n */\r\n export interface MsftSmeElectronIpcRenderer {\r\n on(channel: string, listener: Function): this;\r\n once(channel: string, listener: Function): this;\r\n removeAllListeners(channel: string): this;\r\n removeListener(channel: string, listener: Function): this;\r\n send(channel: string, ...args: any[]): void;\r\n sendSync(channel: string, ...args: any[]): any;\r\n sendTo(webContentsId: number, channel: string, ...args: any[]): void;\r\n sendToHost(channel: string, ...args: any[]): void;\r\n }\r\n\r\n /**\r\n * Electron Remote\r\n * @see http://electron.atom.io/docs/api/remote\r\n */\r\n export interface MsftSmeElectronRemote {\r\n getCurrentWindow(): {\r\n close(): void,\r\n minimize(): void,\r\n maximize(): void,\r\n unmaximize(): void,\r\n isMaximized(): boolean,\r\n };\r\n }\r\n\r\n export interface MsftSmeElectron {\r\n ipcRenderer: MsftSmeElectronIpcRenderer;\r\n remote: MsftSmeElectronRemote;\r\n }\r\n\r\n export interface MsftSmeHost {\r\n isElectron: boolean;\r\n isWeb: boolean;\r\n electron?: MsftSmeElectron;\r\n }\r\n\r\n export interface MsftSmeWindowContext {\r\n Init: MsftSmeInit;\r\n Environment: MsftSmeEnvironment;\r\n Resources: MsftSmeResources;\r\n Host: MsftSmeHost;\r\n }\r\n\r\n export interface SMEWindow extends Window {\r\n MsftSme: MsftSmeWindowContext;\r\n }\r\n\r\n export interface MessageEventListener extends EventListener {\r\n (evt: MessageEvent): void;\r\n }\r\n\r\n // The following focus is available on HTMLElement, however, focus is available on Element\r\n export interface Element {\r\n focus(): void;\r\n }\r\n\r\n export interface StringMap<T> {\r\n [key: string]: T;\r\n }\r\n\r\n export interface NumberMap<T> {\r\n [key: number]: T;\r\n length?: number;\r\n }\r\n\r\n export interface NameValue<N, T> {\r\n name: N;\r\n value: T;\r\n }\r\n\r\n export type Action = () => void;\r\n\r\n export type Action1<T> = (arg: T) => void;\r\n\r\n export type Action2<T1, T2> = (arg1: T1, arg2: T2) => void;\r\n\r\n export type Action3<T1, T2, T3> = (arg1: T1, arg2: T2, arg3: T3) => void;\r\n\r\n export type Func<R> = () => R;\r\n\r\n export type Func1<T, R> = (arg: T) => R;\r\n\r\n export type Func2<T1, T2, R> = (arg1: T1, arg2: T2) => R;\r\n\r\n export type Primitive = number | string | Date | boolean;\r\n\r\n export interface StringMapPrimitive extends StringMap<StringMapRecursive | Primitive | Array<Primitive | StringMapRecursive>> { }\r\n\r\n export type StringMapRecursive = StringMapPrimitive;\r\n\r\n // tslint:disable-next-line:no-empty-interface\r\n export interface Obsolete { }\r\n\r\n ////////////////////////////////////////\r\n /// BEGIN: IE11 ECMAScript Extensions\r\n ////////////////////////////////////////\r\n\r\n // tslint:disable-next-line:no-empty-interface\r\n export interface CollatorOptions extends Intl.CollatorOptions {\r\n }\r\n\r\n export interface Map<K, V> {\r\n delete(key: K): boolean;\r\n get(key: K): V;\r\n has(key: K): boolean;\r\n set(key: K, value: V): void;\r\n clear(): void;\r\n forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;\r\n }\r\n\r\n ////////////////////////////////////////\r\n /// END: IE11 ECMAScript Extensions\r\n ////////////////////////////////////////\r\n\r\n export interface RandomSource {\r\n getRandomValues(array: ArrayBufferView): ArrayBufferView;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/base/environment.ts"],"names":[],"mappings":"AAAA,IAAU,OAAO,CA4VhB;AA5VD,WAAU,OAAO;IACb,YAAY,CAAC;AA2VjB,CAAC,EA5VS,OAAO,KAAP,OAAO,QA4VhB","file":"environment.js","sourcesContent":["namespace MsftSme {\r\n 'use strict';\r\n export interface MsftSmeInit {\r\n entryPointType?: string;\r\n entryPointName?: string;\r\n mode: number;\r\n moduleName?: string;\r\n moduleVersion?: string;\r\n shellOrigin?: string;\r\n isProduction?: boolean;\r\n sessionId?: string;\r\n logLevel?: number;\r\n powerShellModuleName?: string;\r\n websocket?: boolean;\r\n powerShellEndpoint?: string;\r\n powerShellPrefix?: string;\r\n sessionExpiration: number;\r\n performanceProfile: boolean;\r\n experiments?: string[];\r\n developerGuide: boolean;\r\n connectivityLevel: string;\r\n isShell: boolean;\r\n shellVersion: string;\r\n }\r\n\r\n export interface MsftSmeEnvironment {\r\n name: string;\r\n displayName: string;\r\n origin: string;\r\n signature: string;\r\n shell: {\r\n name: string;\r\n origin: string;\r\n };\r\n resources: any[];\r\n entryPoints: any[];\r\n modules: any[];\r\n configuration: EnvironmentConfiguration;\r\n version: string;\r\n loadPath?: string;\r\n }\r\n\r\n export interface MsftSmeAssets {\r\n css: string[];\r\n js: string[];\r\n }\r\n\r\n export interface MsftSmeExternalLibraries {\r\n // mapping of supported library versions to there library locations.\r\n // Caution. New library versions will almost always have a minimal\r\n // time where older versions must still be supported. (generally 2 GA releases)\r\n monaco: {\r\n '0.17.1': string;\r\n };\r\n jsll: {\r\n '4.2.18': string;\r\n };\r\n }\r\n\r\n /**\r\n * Defines a mapping of an assets versions to its relative module paths\r\n */\r\n export interface MsftSmeVersionedAsset extends MsftSme.StringMap<string> { }\r\n\r\n /**\r\n * Defines a mapping of an asset name to its versioned paths\r\n */\r\n export interface MsftSmeModuleAssets extends MsftSme.StringMap<MsftSmeVersionedAsset> { }\r\n\r\n /**\r\n * Defines a mapping of an modules names to its shared asset collection\r\n */\r\n export interface MsftSmeSharedAssets extends MsftSme.StringMap<MsftSmeModuleAssets> { }\r\n\r\n export interface MsftSmeResources {\r\n localeId: string;\r\n localeRegionalId: string;\r\n strings: any;\r\n theme: string;\r\n assets: MsftSmeAssets;\r\n moduleAssets: MsftSmeSharedAssets;\r\n accessibilityMode: boolean;\r\n lib: MsftSmeExternalLibraries;\r\n }\r\n\r\n export interface EnvironmentConfiguration {\r\n gateway?: {\r\n disabled?: boolean\r\n };\r\n signOn?: {\r\n signedHttpRequestToken?: {\r\n jwt: string,\r\n username: string,\r\n }\r\n };\r\n application?: {\r\n theme?: 'light' | 'dark';\r\n locale?: string;\r\n };\r\n nodes?: {\r\n defaultCredentials?: {\r\n username: string,\r\n password: string\r\n encryptedWith?: 'jwk' | string\r\n }\r\n };\r\n notifications?: {\r\n redirectToHostWindow?: boolean\r\n };\r\n tools?: {\r\n hide?: boolean\r\n };\r\n connections?: {\r\n type?: 'standard' | 'server' | 'cluster',\r\n name?: string,\r\n nodeFqdns?: string[],\r\n header?: {\r\n hide?: boolean\r\n }\r\n };\r\n telemetry?: {\r\n sourceLibraryCdnLink?: string,\r\n sourceLibraryCdnIntegrityHash?: string\r\n };\r\n appBar?: {\r\n hide?: boolean\r\n title?: {\r\n hide?: boolean,\r\n value?: string,\r\n disableNavigation?: boolean\r\n },\r\n solution?: {\r\n default?: string,\r\n hide: boolean,\r\n hideDropdown: boolean\r\n },\r\n navigation?: {\r\n allowHistory: boolean,\r\n allowRefresh: boolean,\r\n allowUrlInput: boolean,\r\n allowHome: boolean\r\n },\r\n urlField?: {\r\n hideSolutionUrl: boolean\r\n },\r\n rightMenu?: {\r\n showScripts: boolean,\r\n showSettings: boolean,\r\n showAbout: boolean,\r\n showWindowControls: boolean,\r\n showShareLink: boolean\r\n },\r\n aboutDialog?: {\r\n showFeedback: boolean,\r\n feedbackLink: string,\r\n showDocumentation: boolean,\r\n documentationLink: string,\r\n releaseNotesLink: string,\r\n seeMoreReleaseDetailsLink: string,\r\n showLicense: boolean,\r\n showScriptsUseRights: boolean,\r\n showLicenseExtensions: boolean,\r\n showPrivacyStatement: boolean,\r\n privacyLink: string,\r\n showSupportPolicy: boolean,\r\n supportLink: string,\r\n showThirdPartyNotice: boolean,\r\n showShortcuts: boolean,\r\n openLinkWithoutHref: boolean\r\n },\r\n overview?: {\r\n gatewayStatusUpdateLink: string,\r\n updateLearnMoreLink: string\r\n }\r\n };\r\n settings?: {\r\n account?: {\r\n show: boolean\r\n },\r\n personalization?: {\r\n show: boolean\r\n },\r\n diagnostic?: {\r\n show: boolean\r\n },\r\n language?: {\r\n show: boolean\r\n },\r\n notification?: {\r\n show: boolean\r\n },\r\n extension?: {\r\n show: boolean\r\n },\r\n azure?: {\r\n show: boolean\r\n },\r\n access?: {\r\n show: boolean\r\n },\r\n sharedConnections?: {\r\n show: boolean\r\n },\r\n connectivity?: {\r\n show: boolean\r\n },\r\n general?: {\r\n show: boolean\r\n };\r\n updates?: {\r\n show: boolean\r\n }\r\n extensionUpdates?: {\r\n show: boolean\r\n }\r\n performance?: {\r\n show: boolean\r\n },\r\n advanced?: {\r\n show: boolean\r\n },\r\n proxy?: {\r\n show: boolean\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Electron Renderer\r\n * @see http://electron.atom.io/docs/api/ipc-renderer\r\n */\r\n export interface MsftSmeElectronIpcRenderer {\r\n on(channel: string, listener: Function): this;\r\n once(channel: string, listener: Function): this;\r\n removeAllListeners(channel: string): this;\r\n removeListener(channel: string, listener: Function): this;\r\n send(channel: string, ...args: any[]): void;\r\n sendSync(channel: string, ...args: any[]): any;\r\n sendTo(webContentsId: number, channel: string, ...args: any[]): void;\r\n sendToHost(channel: string, ...args: any[]): void;\r\n }\r\n\r\n /**\r\n * Electron Remote\r\n * @see http://electron.atom.io/docs/api/remote\r\n */\r\n export interface MsftSmeElectronRemote {\r\n getCurrentWindow(): {\r\n close(): void,\r\n minimize(): void,\r\n maximize(): void,\r\n unmaximize(): void,\r\n isMaximized(): boolean,\r\n };\r\n }\r\n\r\n export interface MsftSmeElectron {\r\n ipcRenderer: MsftSmeElectronIpcRenderer;\r\n remote: MsftSmeElectronRemote;\r\n }\r\n\r\n export interface MsftSmeHost {\r\n isElectron: boolean;\r\n isWeb: boolean;\r\n electron?: MsftSmeElectron;\r\n }\r\n\r\n export interface MsftSmeWindowContext {\r\n Init: MsftSmeInit;\r\n Environment: MsftSmeEnvironment;\r\n Resources: MsftSmeResources;\r\n Host: MsftSmeHost;\r\n }\r\n\r\n export interface SMEWindow extends Window {\r\n MsftSme: MsftSmeWindowContext;\r\n }\r\n\r\n export interface MessageEventListener extends EventListener {\r\n (evt: MessageEvent): void;\r\n }\r\n\r\n // The following focus is available on HTMLElement, however, focus is available on Element\r\n export interface Element {\r\n focus(): void;\r\n }\r\n\r\n export interface StringMap<T> {\r\n [key: string]: T;\r\n }\r\n\r\n export interface NumberMap<T> {\r\n [key: number]: T;\r\n length?: number;\r\n }\r\n\r\n export interface NameValue<N, T> {\r\n name: N;\r\n value: T;\r\n }\r\n\r\n export type Action = () => void;\r\n\r\n export type Action1<T> = (arg: T) => void;\r\n\r\n export type Action2<T1, T2> = (arg1: T1, arg2: T2) => void;\r\n\r\n export type Action3<T1, T2, T3> = (arg1: T1, arg2: T2, arg3: T3) => void;\r\n\r\n export type Func<R> = () => R;\r\n\r\n export type Func1<T, R> = (arg: T) => R;\r\n\r\n export type Func2<T1, T2, R> = (arg1: T1, arg2: T2) => R;\r\n\r\n export type Primitive = number | string | Date | boolean;\r\n\r\n export interface StringMapPrimitive extends StringMap<StringMapRecursive | Primitive | Array<Primitive | StringMapRecursive>> { }\r\n\r\n export type StringMapRecursive = StringMapPrimitive;\r\n\r\n // tslint:disable-next-line:no-empty-interface\r\n export interface Obsolete { }\r\n\r\n ////////////////////////////////////////\r\n /// BEGIN: IE11 ECMAScript Extensions\r\n ////////////////////////////////////////\r\n\r\n // tslint:disable-next-line:no-empty-interface\r\n export interface CollatorOptions extends Intl.CollatorOptions {\r\n }\r\n\r\n export interface Map<K, V> {\r\n delete(key: K): boolean;\r\n get(key: K): V;\r\n has(key: K): boolean;\r\n set(key: K, value: V): void;\r\n clear(): void;\r\n forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;\r\n }\r\n\r\n ////////////////////////////////////////\r\n /// END: IE11 ECMAScript Extensions\r\n ////////////////////////////////////////\r\n\r\n export interface RandomSource {\r\n getRandomValues(array: ArrayBufferView): ArrayBufferView;\r\n }\r\n}\r\n"]}
|
|
@@ -78,11 +78,11 @@ export class VersionedObject {
|
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
80
|
let prevVersion = MsftSme.isNullOrUndefined(this.currentVersion) ? -1 : this.currentVersion;
|
|
81
|
-
// upgrade the current version
|
|
81
|
+
// upgrade the current version until it is the latest version
|
|
82
82
|
while (MsftSme.isNullOrUndefined(this.currentVersion) || this.currentVersion < this.latestVersion) {
|
|
83
83
|
// upgrade the object
|
|
84
84
|
this.upgrade();
|
|
85
|
-
// check if upgrade
|
|
85
|
+
// check if upgrade succeeded (did not downgrade and did not upgrade past latest version)
|
|
86
86
|
if (prevVersion >= this.currentVersion || this.currentVersion > this.latestVersion) {
|
|
87
87
|
// upgrade didnt work as intended as the version is now invalid.
|
|
88
88
|
Logging.log({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/core/base/versioned-object.ts"],"names":[],"mappings":"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","file":"versioned-object.js","sourcesContent":["\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { LogLevel } from '../diagnostics/log-level';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { JsonObject, JsonValue } from './json';\r\n\r\n/**\r\n * Defines a wrapper for an object and its current version\r\n * All versioned data should end up in this format\r\n */\r\nexport interface PlainVersionedObject extends JsonObject {\r\n\r\n /**\r\n * The properties of the object\r\n */\r\n properties: JsonObject;\r\n\r\n /**\r\n * The version of the object\r\n */\r\n version: number;\r\n}\r\n\r\n/**\r\n * Defines the handlers for a versioned object\r\n */\r\nexport interface VersionedObjectHandlers {\r\n\r\n /**\r\n * The Save handler. Called by the consumer when changes to a versioned object need to be saved.\r\n * @param objectWrapper the wrapper object to save\r\n */\r\n save: (object: PlainVersionedObject) => Observable<void>;\r\n}\r\n\r\n/**\r\n * Defines the constructor of a versioned object. Used to dynamically construct classes that extend VersionedObject\r\n */\r\nexport interface VersionedObjectConstructor<T extends VersionedObject> {\r\n new(objectWrapper: PlainVersionedObject, handlers: VersionedObjectHandlers): T;\r\n}\r\n\r\n/**\r\n * Defines an object that can be upgraded from older versions to the current version upon initialization.\r\n */\r\nexport abstract class VersionedObject {\r\n\r\n protected get logSourceName() {\r\n return 'VersionedObject';\r\n }\r\n\r\n /**\r\n * Getter for the latest version of the object.\r\n */\r\n protected abstract get latestVersion(): number;\r\n\r\n /**\r\n * The current version of the object\r\n */\r\n public currentVersion: number;\r\n\r\n /**\r\n * The properties of the object\r\n */\r\n private properties: JsonObject;\r\n\r\n /**\r\n * Gets an initialized empty versioned object wrapper\r\n */\r\n public static getEmptyWrapper(): PlainVersionedObject {\r\n return { version: null, properties: {} };\r\n }\r\n\r\n /**\r\n * Returns an empty versioned object if the passed in object is not correctly versioned.\r\n * Otherwise, returns the passed in object.\r\n */\r\n public static ensureIsVersionedObject(obj: PlainVersionedObject): PlainVersionedObject {\r\n if (!obj || MsftSme.isNullOrUndefined(obj.version)) {\r\n return VersionedObject.getEmptyWrapper();\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * Initializes a new instance of a VersionedObject\r\n * If the current version of the object is less than the latest version,\r\n * then 'upgrade()' will be called until the version is updated to the latest version.\r\n * An error will be thrown if upgrade is called and the version is not moved forward by at least 1.\r\n * @param objectWrapper the simplified version of the plain object with versioning\r\n * @param handlers The handlers to modify the plain Object\r\n */\r\n constructor(objectWrapper: PlainVersionedObject, private handlers: VersionedObjectHandlers, protected gatewayService?) {\r\n this.initialize(objectWrapper, handlers);\r\n }\r\n\r\n /**\r\n * Initializes this versioned object\r\n * @param objectWrapper the simplified version of the plain object with versioning\r\n * @param handlers The handlers to modify the plain Object\r\n */\r\n private initialize(objectWrapper: PlainVersionedObject, handlers: VersionedObjectHandlers) {\r\n // verify arguments\r\n if (MsftSme.isNullOrUndefined(objectWrapper)\r\n || MsftSme.isNullOrUndefined(objectWrapper.properties)\r\n || MsftSme.isNullOrUndefined(handlers)) {\r\n Logging.log({\r\n level: LogLevel.Error,\r\n // tslint:disable-next-line:max-line-length\r\n message: `${this.logSourceName} Invalid Arguments: objectWrapper: ${objectWrapper}, handlers: ${handlers}`,\r\n params: {\r\n latestVersion: this.latestVersion,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.ctor'\r\n });\r\n return;\r\n }\r\n // save version and properties\r\n this.currentVersion = objectWrapper.version;\r\n this.properties = MsftSme.deepCopy(objectWrapper.properties);\r\n\r\n // ensure that the getter for latest version has been defined\r\n if (MsftSme.isNullOrUndefined(this.latestVersion)) {\r\n Logging.log({\r\n level: LogLevel.Error,\r\n // tslint:disable-next-line:max-line-length\r\n message: `${this.logSourceName} does not properly extend VersionedObject. latestVersion getter is ${this.latestVersion}'`,\r\n params: {\r\n latestVersion: this.latestVersion,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.ctor'\r\n });\r\n return;\r\n }\r\n\r\n let prevVersion = MsftSme.isNullOrUndefined(this.currentVersion) ? -1 : this.currentVersion;\r\n // upgrade the current version untill it is the latest version\r\n while (MsftSme.isNullOrUndefined(this.currentVersion) || this.currentVersion < this.latestVersion) {\r\n // upgrade the object\r\n this.upgrade();\r\n\r\n // check if upgrade succeded (did not downgrade and did not upgrade past latest version)\r\n if (prevVersion >= this.currentVersion || this.currentVersion > this.latestVersion) {\r\n // upgrade didnt work as intended as the version is now invalid.\r\n Logging.log({\r\n level: LogLevel.Error,\r\n message: `Calling 'upgrade()' did not upgrade the object correctly'`,\r\n params: {\r\n previousVersion: prevVersion,\r\n currentVersion: this.currentVersion,\r\n upgradingToVersion: this.latestVersion,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.ctor'\r\n });\r\n // stop trying to upgrade\r\n break;\r\n }\r\n\r\n // remember the version before cycling again\r\n prevVersion = this.currentVersion;\r\n }\r\n }\r\n\r\n /**\r\n * Converts this versioned object to its pure json representation\r\n */\r\n public toJson(): PlainVersionedObject {\r\n return { properties: this.properties, version: this.currentVersion };\r\n }\r\n\r\n /**\r\n * Saves the current properties\r\n */\r\n public save(): Observable<void> {\r\n return this.handlers.save(this.toJson());\r\n }\r\n\r\n /**\r\n * Attempts to save the properties after executing a function.\r\n * If saving fails, the properties is reverted to its previous state before emitting the error\r\n */\r\n public trySave(fn: Function): Observable<void> {\r\n const backup = Object.assign({}, this.properties);\r\n fn();\r\n\r\n return this.save()\r\n .pipe(catchError((error, obs) => {\r\n Object.assign(this.properties, backup);\r\n // rethrow the error\r\n return throwError(error);\r\n }));\r\n }\r\n\r\n /**\r\n * Clears the current properties\r\n */\r\n protected clear(): void {\r\n this.properties = {};\r\n }\r\n\r\n /**\r\n * Clears a specific value from the setting.\r\n * @param key a property key\r\n */\r\n public clearProperty(key: string): boolean {\r\n if (!MsftSme.isNullOrUndefined(key) && !MsftSme.isNullOrUndefined(this.properties)\r\n && !MsftSme.isNullOrUndefined(!this.properties[key])) {\r\n delete this.properties[key];\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Attempts to upgrade the current version of the object at least one version toward the latest version.\r\n * if this.currentVersion is null or undefined, then the upgrade should initialize to the latest version\r\n * this is called itterativly untill the current version is equal to the latest version\r\n */\r\n protected abstract upgrade(): void;\r\n\r\n /**\r\n * Gets a property from 'properties'\r\n * @param key the property key\r\n * @returns the properties value\r\n */\r\n protected getProperty(key: string): JsonValue {\r\n if (!MsftSme.isNullOrUndefined(this.properties)) {\r\n return this.properties[key];\r\n } else {\r\n Logging.log({\r\n level: LogLevel.Error,\r\n message: `Could not find a property with the name: '${key}'. Please wait for object properties to be defined.`,\r\n params: {\r\n key: key,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.getProperty'\r\n });\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Sets a property in 'properties'\r\n * @param key the property key\r\n * @param value the new value\r\n */\r\n protected setProperty(key: string, value: JsonValue): void {\r\n if (!MsftSme.isNullOrUndefined(this.properties)) {\r\n this.properties[key] = value;\r\n } else {\r\n Logging.log({\r\n level: LogLevel.Error,\r\n message: `Could not find a property with the name: '${key}'. Please wait for object properties to be defined.`,\r\n params: {\r\n key: key,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.setProperty'\r\n });\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/base/versioned-object.ts"],"names":[],"mappings":"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","file":"versioned-object.js","sourcesContent":["\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { LogLevel } from '../diagnostics/log-level';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { JsonObject, JsonValue } from './json';\r\n\r\n/**\r\n * Defines a wrapper for an object and its current version\r\n * All versioned data should end up in this format\r\n */\r\nexport interface PlainVersionedObject extends JsonObject {\r\n\r\n /**\r\n * The properties of the object\r\n */\r\n properties: JsonObject;\r\n\r\n /**\r\n * The version of the object\r\n */\r\n version: number;\r\n}\r\n\r\n/**\r\n * Defines the handlers for a versioned object\r\n */\r\nexport interface VersionedObjectHandlers {\r\n\r\n /**\r\n * The Save handler. Called by the consumer when changes to a versioned object need to be saved.\r\n * @param objectWrapper the wrapper object to save\r\n */\r\n save: (object: PlainVersionedObject) => Observable<void>;\r\n}\r\n\r\n/**\r\n * Defines the constructor of a versioned object. Used to dynamically construct classes that extend VersionedObject\r\n */\r\nexport interface VersionedObjectConstructor<T extends VersionedObject> {\r\n new(objectWrapper: PlainVersionedObject, handlers: VersionedObjectHandlers): T;\r\n}\r\n\r\n/**\r\n * Defines an object that can be upgraded from older versions to the current version upon initialization.\r\n */\r\nexport abstract class VersionedObject {\r\n\r\n protected get logSourceName() {\r\n return 'VersionedObject';\r\n }\r\n\r\n /**\r\n * Getter for the latest version of the object.\r\n */\r\n protected abstract get latestVersion(): number;\r\n\r\n /**\r\n * The current version of the object\r\n */\r\n public currentVersion: number;\r\n\r\n /**\r\n * The properties of the object\r\n */\r\n private properties: JsonObject;\r\n\r\n /**\r\n * Gets an initialized empty versioned object wrapper\r\n */\r\n public static getEmptyWrapper(): PlainVersionedObject {\r\n return { version: null, properties: {} };\r\n }\r\n\r\n /**\r\n * Returns an empty versioned object if the passed in object is not correctly versioned.\r\n * Otherwise, returns the passed in object.\r\n */\r\n public static ensureIsVersionedObject(obj: PlainVersionedObject): PlainVersionedObject {\r\n if (!obj || MsftSme.isNullOrUndefined(obj.version)) {\r\n return VersionedObject.getEmptyWrapper();\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * Initializes a new instance of a VersionedObject\r\n * If the current version of the object is less than the latest version,\r\n * then 'upgrade()' will be called until the version is updated to the latest version.\r\n * An error will be thrown if upgrade is called and the version is not moved forward by at least 1.\r\n * @param objectWrapper the simplified version of the plain object with versioning\r\n * @param handlers The handlers to modify the plain Object\r\n */\r\n constructor(objectWrapper: PlainVersionedObject, private handlers: VersionedObjectHandlers, protected gatewayService?) {\r\n this.initialize(objectWrapper, handlers);\r\n }\r\n\r\n /**\r\n * Initializes this versioned object\r\n * @param objectWrapper the simplified version of the plain object with versioning\r\n * @param handlers The handlers to modify the plain Object\r\n */\r\n private initialize(objectWrapper: PlainVersionedObject, handlers: VersionedObjectHandlers) {\r\n // verify arguments\r\n if (MsftSme.isNullOrUndefined(objectWrapper)\r\n || MsftSme.isNullOrUndefined(objectWrapper.properties)\r\n || MsftSme.isNullOrUndefined(handlers)) {\r\n Logging.log({\r\n level: LogLevel.Error,\r\n // tslint:disable-next-line:max-line-length\r\n message: `${this.logSourceName} Invalid Arguments: objectWrapper: ${objectWrapper}, handlers: ${handlers}`,\r\n params: {\r\n latestVersion: this.latestVersion,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.ctor'\r\n });\r\n return;\r\n }\r\n // save version and properties\r\n this.currentVersion = objectWrapper.version;\r\n this.properties = MsftSme.deepCopy(objectWrapper.properties);\r\n\r\n // ensure that the getter for latest version has been defined\r\n if (MsftSme.isNullOrUndefined(this.latestVersion)) {\r\n Logging.log({\r\n level: LogLevel.Error,\r\n // tslint:disable-next-line:max-line-length\r\n message: `${this.logSourceName} does not properly extend VersionedObject. latestVersion getter is ${this.latestVersion}'`,\r\n params: {\r\n latestVersion: this.latestVersion,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.ctor'\r\n });\r\n return;\r\n }\r\n\r\n let prevVersion = MsftSme.isNullOrUndefined(this.currentVersion) ? -1 : this.currentVersion;\r\n // upgrade the current version until it is the latest version\r\n while (MsftSme.isNullOrUndefined(this.currentVersion) || this.currentVersion < this.latestVersion) {\r\n // upgrade the object\r\n this.upgrade();\r\n\r\n // check if upgrade succeeded (did not downgrade and did not upgrade past latest version)\r\n if (prevVersion >= this.currentVersion || this.currentVersion > this.latestVersion) {\r\n // upgrade didnt work as intended as the version is now invalid.\r\n Logging.log({\r\n level: LogLevel.Error,\r\n message: `Calling 'upgrade()' did not upgrade the object correctly'`,\r\n params: {\r\n previousVersion: prevVersion,\r\n currentVersion: this.currentVersion,\r\n upgradingToVersion: this.latestVersion,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.ctor'\r\n });\r\n // stop trying to upgrade\r\n break;\r\n }\r\n\r\n // remember the version before cycling again\r\n prevVersion = this.currentVersion;\r\n }\r\n }\r\n\r\n /**\r\n * Converts this versioned object to its pure json representation\r\n */\r\n public toJson(): PlainVersionedObject {\r\n return { properties: this.properties, version: this.currentVersion };\r\n }\r\n\r\n /**\r\n * Saves the current properties\r\n */\r\n public save(): Observable<void> {\r\n return this.handlers.save(this.toJson());\r\n }\r\n\r\n /**\r\n * Attempts to save the properties after executing a function.\r\n * If saving fails, the properties is reverted to its previous state before emitting the error\r\n */\r\n public trySave(fn: Function): Observable<void> {\r\n const backup = Object.assign({}, this.properties);\r\n fn();\r\n\r\n return this.save()\r\n .pipe(catchError((error, obs) => {\r\n Object.assign(this.properties, backup);\r\n // rethrow the error\r\n return throwError(error);\r\n }));\r\n }\r\n\r\n /**\r\n * Clears the current properties\r\n */\r\n protected clear(): void {\r\n this.properties = {};\r\n }\r\n\r\n /**\r\n * Clears a specific value from the setting.\r\n * @param key a property key\r\n */\r\n public clearProperty(key: string): boolean {\r\n if (!MsftSme.isNullOrUndefined(key) && !MsftSme.isNullOrUndefined(this.properties)\r\n && !MsftSme.isNullOrUndefined(!this.properties[key])) {\r\n delete this.properties[key];\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Attempts to upgrade the current version of the object at least one version toward the latest version.\r\n * if this.currentVersion is null or undefined, then the upgrade should initialize to the latest version\r\n * this is called itterativly untill the current version is equal to the latest version\r\n */\r\n protected abstract upgrade(): void;\r\n\r\n /**\r\n * Gets a property from 'properties'\r\n * @param key the property key\r\n * @returns the properties value\r\n */\r\n protected getProperty(key: string): JsonValue {\r\n if (!MsftSme.isNullOrUndefined(this.properties)) {\r\n return this.properties[key];\r\n } else {\r\n Logging.log({\r\n level: LogLevel.Error,\r\n message: `Could not find a property with the name: '${key}'. Please wait for object properties to be defined.`,\r\n params: {\r\n key: key,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.getProperty'\r\n });\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Sets a property in 'properties'\r\n * @param key the property key\r\n * @param value the new value\r\n */\r\n protected setProperty(key: string, value: JsonValue): void {\r\n if (!MsftSme.isNullOrUndefined(this.properties)) {\r\n this.properties[key] = value;\r\n } else {\r\n Logging.log({\r\n level: LogLevel.Error,\r\n message: `Could not find a property with the name: '${key}'. Please wait for object properties to be defined.`,\r\n params: {\r\n key: key,\r\n objectType: this.logSourceName\r\n },\r\n source: 'VersionedObject.setProperty'\r\n });\r\n }\r\n }\r\n}\r\n"]}
|
package/core/data/cim-stream.js
CHANGED
|
@@ -402,10 +402,17 @@ export class CimStream {
|
|
|
402
402
|
if (error && error.message === this.strings.ResetError.message) {
|
|
403
403
|
return this.monitorCreateRequest(nodeName, requestState, request, format, options);
|
|
404
404
|
}
|
|
405
|
-
if ((!options || options.noAuth !== true)
|
|
405
|
+
if ((!options || options.noAuth !== true)
|
|
406
|
+
&& !this.authorizationManager.signOnManager.isSignOnTokenEnabled
|
|
407
|
+
&& this.authorizationManager.canHandleStreamFailure(error.xhr)) {
|
|
406
408
|
return this.authorizationManager.handleStreamFailure(nodeName, options, error.xhr)
|
|
407
409
|
.pipe(switchMap(updatedOptions => this.monitorCreateRequest(nodeName, requestState, request, format, updatedOptions)));
|
|
408
410
|
}
|
|
411
|
+
if (this.authorizationManager.signOnManager.isSignOnTokenEnabled
|
|
412
|
+
&& this.authorizationManager.signOnManager.canHandleStreamUnauthorizedLogin(error.xhr)) {
|
|
413
|
+
return this.authorizationManager.signOnManager.handleStreamUnauthorizedLogin(options, error.xhr)
|
|
414
|
+
.pipe(switchMap(updatedOptions => this.monitorCreateRequest(nodeName, requestState, request, format, updatedOptions)));
|
|
415
|
+
}
|
|
409
416
|
return throwError(error);
|
|
410
417
|
}));
|
|
411
418
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/core/data/cim-stream.ts"],"names":[],"mappings":"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","file":"cim-stream.js","sourcesContent":["\r\nimport { Observable, Observer, throwError } from 'rxjs';\r\nimport { catchError, filter, mergeMap, switchMap, take } from 'rxjs/operators';\r\nimport { LogLevel } from '../diagnostics/log-level';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { Strings } from '../generated/strings';\r\nimport { AuthorizationManager } from '../security/authorization-manager';\r\nimport { CimKeyProperties, CimMultiple, CimResult, CimSingle } from './cim';\r\nimport { NodeCimOutput, NodeRequestOptions } from './node-connection';\r\nimport { PowerShellAlternate } from './powershell-alternate';\r\nimport { PowerShellStream } from './powershell-stream';\r\nimport {\r\n WebsocketStream,\r\n WebsocketStreamConnectionState,\r\n WebsocketStreamDataRequestState,\r\n WebsocketStreamDataState,\r\n WebsocketStreamDataTarget,\r\n WebsocketStreamHandler,\r\n WebsocketStreamProcessor,\r\n} from './websocket-stream';\r\n\r\n/**\r\n * Cim result format.\r\n */\r\nexport enum CimResultFormat {\r\n /**\r\n * Single instance result.\r\n */\r\n Single,\r\n\r\n /**\r\n * Multiple instances result.\r\n */\r\n Multiple,\r\n\r\n /**\r\n * Mixed data result.\r\n */\r\n Result\r\n}\r\n\r\n/**\r\n * Cim Stream options.\r\n */\r\nexport interface CimStreamOptions extends NodeRequestOptions {\r\n /**\r\n * Partial data response. By default, it responses back with completed data.\r\n */\r\n partial?: boolean;\r\n\r\n /**\r\n * Override Query ID so it can request cancel.\r\n */\r\n queryId?: string;\r\n\r\n /**\r\n * Buffering time period by milliseconds.\r\n */\r\n bufferTime?: number;\r\n\r\n /**\r\n * Buffering count.\r\n */\r\n bufferCount?: number;\r\n}\r\n\r\n/**\r\n * CIM Get instance multiple.\r\n */\r\nexport interface CimGetInstanceMultiple {\r\n name: 'CimGetInstanceMultiple';\r\n namespace: string;\r\n className: string;\r\n}\r\n\r\n/**\r\n * Cim Get instance single.\r\n */\r\nexport interface CimGetInstanceSingle {\r\n name: 'CimGetInstanceSingle';\r\n namespace: string;\r\n className: string;\r\n keyProperties: CimKeyProperties;\r\n}\r\n\r\n/**\r\n * Cim Invoke method instance.\r\n */\r\nexport interface CimInvokeMethodInstance {\r\n name: 'CimInvokeMethodInstance';\r\n namespace: string;\r\n className: string;\r\n methodName: string;\r\n keyProperties: CimKeyProperties;\r\n data?: any;\r\n}\r\n\r\n/**\r\n * Cim Invoke method static.\r\n */\r\nexport interface CimInvokeMethodStatic {\r\n name: 'CimInvokeMethodStatic';\r\n namespace: string;\r\n className: string;\r\n methodName: string;\r\n data?: any;\r\n}\r\n\r\n/**\r\n * Cim Set instance.\r\n */\r\nexport interface CimSetInstance {\r\n name: 'CimSetInstance';\r\n namespace: string;\r\n className: string;\r\n keyProperties: CimKeyProperties;\r\n data: any;\r\n}\r\n\r\n/**\r\n * Cim Modify instance.\r\n */\r\nexport interface CimModifyInstance {\r\n name: 'CimModifyInstance';\r\n namespace: string;\r\n className: string;\r\n keyProperties: CimKeyProperties;\r\n data: any;\r\n}\r\n\r\n/**\r\n * Cim Delete instance.\r\n */\r\nexport interface CimDeleteInstance {\r\n name: 'CimDeleteInstance';\r\n namespace: string;\r\n className: string;\r\n keyProperties: CimKeyProperties;\r\n}\r\n\r\n/**\r\n * Cim Get instance query.\r\n */\r\nexport interface CimGetInstanceQuery {\r\n name: 'CimGetInstanceQuery';\r\n namespace: string;\r\n query: string;\r\n}\r\n\r\n/**\r\n * Cim Stream request data.\r\n */\r\nexport type CimStreamRequestData =\r\n CimGetInstanceMultiple\r\n | CimGetInstanceSingle\r\n | CimInvokeMethodInstance\r\n | CimInvokeMethodStatic\r\n | CimSetInstance\r\n | CimModifyInstance\r\n | CimDeleteInstance\r\n | CimGetInstanceQuery;\r\n\r\n/**\r\n * The request packet of Cim Stream to the gateway.\r\n */\r\nexport interface CimStreamRequest {\r\n /**\r\n * The identification string (auto generated or supplied as queryId option.)\r\n */\r\n id: string;\r\n\r\n /**\r\n * The stream target.\r\n */\r\n target: WebsocketStreamDataTarget;\r\n\r\n /**\r\n * The date request state.\r\n */\r\n requestState: WebsocketStreamDataRequestState;\r\n\r\n /**\r\n * The request data.\r\n */\r\n request: CimStreamRequestData;\r\n\r\n /**\r\n * The Cim stream options.\r\n */\r\n options?: CimStreamOptions;\r\n}\r\n\r\n/**\r\n * Cim stream response.\r\n */\r\nexport interface CimStreamResponse {\r\n /**\r\n * Request ID from client.\r\n */\r\n id: string;\r\n\r\n /**\r\n * The state of response data.\r\n */\r\n state: WebsocketStreamDataState;\r\n\r\n /**\r\n * The index number of response data.\r\n */\r\n index: number;\r\n\r\n /**\r\n * The response data.\r\n */\r\n response: any;\r\n}\r\n\r\n/**\r\n * Cim Processor interface. Each Cim query creates new observable.\r\n */\r\nclass CimProcessor extends WebsocketStreamProcessor<CimSingle | CimMultiple | CimResult, CimStreamOptions> {\r\n /**\r\n * Holding result if waitCompleted option is specified for multiple instances.\r\n */\r\n public response?: any;\r\n\r\n /**\r\n * Initializes a new instance of the CimProcessor class.\r\n * @param observer Observer to send back result to caller.\r\n * @param target Stream Target object.\r\n * @param format CIM result format.\r\n * @param options Options for Cim stream query.\r\n */\r\n constructor(\r\n observer: Observer<CimSingle | CimMultiple | CimResult>,\r\n target: WebsocketStreamDataTarget,\r\n public format: CimResultFormat,\r\n options: CimStreamOptions) {\r\n super(observer, target, options);\r\n }\r\n}\r\n\r\nexport interface CimStreamMonitorSetContext<T> {\r\n nodeName: string;\r\n requestState: WebsocketStreamDataRequestState;\r\n request: CimStreamRequestData;\r\n format: CimResultFormat;\r\n options?: CimStreamOptions;\r\n data: T;\r\n}\r\n\r\n/**\r\n * Set of monitors for pre and post process of cim stream.\r\n */\r\nexport interface CimStreamMonitorSet<T> {\r\n name: string;\r\n preMonitor: (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) =>\r\n Observable<CimStreamMonitorSetContext<any>>;\r\n successMonitor: (result: T, context: CimStreamMonitorSetContext<any>) => Observable<T>;\r\n errorMonitor: (error: any, context: CimStreamMonitorSetContext<any>) => Observable<T>;\r\n}\r\n\r\n/**\r\n * The CIM stream class.\r\n */\r\nexport class CimStream implements WebsocketStreamHandler {\r\n /**\r\n * The collection of set of monitors.\r\n */\r\n private static monitorSets: CimStreamMonitorSet<any>[] = [];\r\n\r\n private processors: Map<string /* id */, CimProcessor> = new Map();\r\n private strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core.WebsocketStream.CimStream;\r\n\r\n /**\r\n * Register the set of monitors.\r\n *\r\n * @param monitorSet The set of monitors.\r\n */\r\n public static registerMonitorSet(monitorSet: CimStreamMonitorSet<any>): void {\r\n const found = CimStream.monitorSets.find(monitors => monitors.name === monitorSet.name);\r\n if (found) {\r\n return;\r\n }\r\n\r\n CimStream.monitorSets.push(monitorSet);\r\n }\r\n\r\n /**\r\n * Unregister the set of monitors.\r\n *\r\n * @param name The name of set of monitors.\r\n * @returns boolean true if unregistered the named set.\r\n */\r\n public static unregisterMonitors(name: string): boolean {\r\n const found = CimStream.monitorSets.find(monitors => monitors.name === name);\r\n if (found) {\r\n CimStream.monitorSets.remove(found);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Initializes a new instance of the CimStream class.\r\n *\r\n * @param websocketStream the websocket stream object.\r\n * @param powerShellStream the PowerShell steam object.\r\n * @param authorizationManager the authorization manager object.\r\n */\r\n constructor(\r\n private websocketStream: WebsocketStream,\r\n private powerShellStream: PowerShellStream,\r\n private authorizationManager: AuthorizationManager) {\r\n websocketStream.registerProcessor('SME-CIM', this);\r\n }\r\n\r\n /**\r\n * CIM Get MultipleInstances\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param options the options for this request.\r\n * @return Observable<CimResult> the query observable.\r\n */\r\n public getInstanceMultiple(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n options?: CimStreamOptions): Observable<CimMultiple> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Multiple);\r\n const observable = PowerShellAlternate.createStream<CimMultiple>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimGetInstanceMultiple';\r\n const request = <CimGetInstanceMultiple>{ name, namespace, className };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Multiple, options);\r\n }\r\n\r\n /**\r\n * CIM Get SingleInstance\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param keyProperties the key properties object.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public getInstanceSingle(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n keyProperties: CimKeyProperties,\r\n options?: CimStreamOptions): Observable<CimSingle> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Multiple, keyProperties);\r\n const observable = PowerShellAlternate.createStream<CimSingle>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimGetInstanceSingle';\r\n const request = <CimGetInstanceSingle>{ name, namespace, className, keyProperties };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Single, options);\r\n }\r\n\r\n /**\r\n * CIM Invoke InstanceMethod\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param methodName the method name.\r\n * @param keyProperties the key properties object.\r\n * @param data the method input data.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public invokeMethodInstance(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n methodName: string,\r\n keyProperties: any,\r\n data?: any,\r\n options?: CimStreamOptions): Observable<CimResult> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Multiple, keyProperties, data && data.parameters);\r\n const observable = PowerShellAlternate.createStream<CimResult>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimInvokeMethodInstance';\r\n const request = <CimInvokeMethodInstance>{ name, namespace, className, methodName, keyProperties, data };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Result, options);\r\n }\r\n\r\n /**\r\n * CIM Invoke StaticMethod\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param methodName the method name.\r\n * @param data the method input data.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public invokeMethodStatic(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n methodName: string,\r\n data?: any,\r\n options?: CimStreamOptions): Observable<CimResult> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Result, data && data.parameters);\r\n const observable = PowerShellAlternate.createStream<CimResult>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimInvokeMethodStatic';\r\n const request = <CimInvokeMethodStatic>{ name, namespace, className, methodName, data };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Result, options);\r\n }\r\n\r\n /**\r\n * CIM Set SingleInstance\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param keyProperties the key properties object.\r\n * @param data the method input data.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public setInstance(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n keyProperties: any,\r\n data: any,\r\n options?: CimStreamOptions): Observable<CimSingle> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Single, keyProperties, data && data.properties);\r\n const observable = PowerShellAlternate.createStream<CimSingle>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimSetInstance';\r\n const request = <CimSetInstance>{ name, namespace, className, keyProperties, data };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Single, options);\r\n }\r\n\r\n /**\r\n * CIM Modify SingleInstance\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param keyProperties the key properties object.\r\n * @param data the method input data.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public modifyInstance(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n keyProperties: any,\r\n data: any,\r\n options?: CimStreamOptions): Observable<CimSingle> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Single, keyProperties, data && data.properties);\r\n const observable = PowerShellAlternate.createStream<CimSingle>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimModifyInstance';\r\n const request = <CimModifyInstance>{ name, namespace, className, keyProperties, data };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Single, options);\r\n }\r\n\r\n /**\r\n * CIM Delete SingleInstance\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param keyProperties the key properties object.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public deleteInstance(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n keyProperties: any,\r\n options?: CimStreamOptions): Observable<CimSingle> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Single, keyProperties);\r\n const observable = PowerShellAlternate.createStream<CimSingle>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimDeleteInstance';\r\n const request = <CimDeleteInstance>{ name, namespace, className, keyProperties };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Single, options);\r\n }\r\n\r\n /**\r\n * CIM Submit WqlQuery\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param query the WQL string.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public getInstanceQuery(\r\n nodeName: string,\r\n namespace: string,\r\n query: string,\r\n options?: CimStreamOptions): Observable<CimResult> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Query, options && options.powerShellParameters);\r\n const observable = PowerShellAlternate.createStream<CimResult>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimGetInstanceQuery';\r\n const request = <CimGetInstanceQuery>{ name, namespace, query };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Multiple, options);\r\n }\r\n\r\n /**\r\n * Cancel active CIM query.\r\n * Result response comes back to the original query to end.\r\n *\r\n * @param nodeName the node name.\r\n * @param id the id of original request specified as options.queryId.\r\n */\r\n public cancel(nodeName: string, id: string): void {\r\n const target = this.websocketStream.getTarget(this.authorizationManager, nodeName);\r\n const requestState = WebsocketStreamDataRequestState.Cancel;\r\n const request = <CimStreamRequest>{ id, target, requestState, request: null };\r\n this.websocketStream.sendNext('SME-CIM', request);\r\n }\r\n\r\n /**\r\n * Reset data for connection cleanup.\r\n */\r\n public reset(): void {\r\n Logging.log({ level: LogLevel.Warning, message: this.strings.ResetError.message, source: 'CimStream' });\r\n const processors: CimProcessor[] = [];\r\n this.processors.forEach((value, key, map) => processors.push(value));\r\n this.processors.clear();\r\n processors.forEach((processor, key, map) => {\r\n processor.error(new Error(this.strings.ResetError.message));\r\n });\r\n }\r\n\r\n /**\r\n * Process the socket message.\r\n *\r\n * @param message the socket message.\r\n */\r\n public process(message: CimStreamResponse): void {\r\n if (!message) {\r\n throw new Error(this.strings.NoContentError.message);\r\n }\r\n\r\n const processor = this.processors.get(message.id);\r\n if (!processor) {\r\n Logging.log({ level: LogLevel.Warning, message: this.strings.UnexpectedReceivedError.message, source: 'PowerShellStream' });\r\n return;\r\n }\r\n\r\n switch (message.state) {\r\n case WebsocketStreamDataState.Data:\r\n this.operationNext(processor, message.response);\r\n break;\r\n\r\n case WebsocketStreamDataState.Completed:\r\n this.operationComplete(processor, message.response);\r\n this.operationEnd(message.id);\r\n break;\r\n\r\n case WebsocketStreamDataState.Error:\r\n this.operationError(processor, { xhr: message });\r\n this.operationEnd(message.id);\r\n break;\r\n\r\n case WebsocketStreamDataState.Noop:\r\n break;\r\n }\r\n }\r\n\r\n private operationNext(processor: CimProcessor, response: any): boolean {\r\n const partial = processor.options && processor.options.partial;\r\n if (!response) {\r\n return !partial;\r\n }\r\n\r\n // buffering result.\r\n if (!partial) {\r\n if (processor.format === CimResultFormat.Single) {\r\n // expecting - { response: any }\r\n processor.response = response;\r\n } else if (processor.format === CimResultFormat.Multiple) {\r\n // expecting - { response: { value: any[]; } } format.\r\n if (!response || !response.value) {\r\n Logging.log(\r\n { level: LogLevel.Error, message: this.strings.UnexpectedMultipleError.message, source: 'CimStream' });\r\n } else {\r\n if (!processor.response) {\r\n processor.response = response;\r\n } else {\r\n response.value.forEach(value => processor.response.value.push(value));\r\n }\r\n }\r\n } else if (processor.format === CimResultFormat.Result) {\r\n // expecting - { response: { results: any[] }, <name1>: <value1>, <name2>: <value2> } format.\r\n if (!processor.response) {\r\n processor.response = response;\r\n } else {\r\n if (response.results) {\r\n if (processor.response.results) {\r\n response.results.forEach(value => processor.response.results.push(value));\r\n response.results = undefined;\r\n }\r\n }\r\n\r\n // merge other properties.\r\n processor.response = { ...processor.response, ...response };\r\n }\r\n }\r\n } else {\r\n processor.next(response);\r\n }\r\n\r\n return !partial;\r\n }\r\n\r\n private operationComplete(processor: CimProcessor, response: CimSingle | CimMultiple | CimResult): void {\r\n if (this.operationNext(processor, response)) {\r\n // complete mode to send all result once.\r\n processor.next(processor.response);\r\n }\r\n\r\n if (!processor.sendOnce) {\r\n // send null if no result was produced but success.\r\n processor.next(null);\r\n }\r\n\r\n processor.complete();\r\n }\r\n\r\n private operationError(processor: CimProcessor, error: any): void {\r\n processor.error(error);\r\n }\r\n\r\n private operationEnd(id: string): void {\r\n this.processors.delete(id);\r\n }\r\n\r\n private createRequest<T>(\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): Observable<T> {\r\n // publish object is created two ways.\r\n // 1) socket is connected so submit the request immediately with simple observable.\r\n // (if-block and this is the most of cases.)\r\n // 2) socket is not connected so wait for the socket to ready and submit request with\r\n // complex observable. Initial connect and re-connection takes this observable.\r\n // (else-block and this is a few cases.)\r\n let publish: Observable<T>;\r\n if (this.websocketStream.socketStateRaw === WebsocketStreamConnectionState.Connected) {\r\n publish = this.createRequestSimple(nodeName, requestState, request, format, options);\r\n } else {\r\n publish = this.websocketStream.socketState\r\n .pipe(\r\n filter(state => state === WebsocketStreamConnectionState.Connected\r\n || state === WebsocketStreamConnectionState.Failed\r\n || state === WebsocketStreamConnectionState.NotConfigured),\r\n take(1),\r\n mergeMap(state => {\r\n if (state === WebsocketStreamConnectionState.Connected) {\r\n return this.createRequestSimple<T>(nodeName, requestState, request, format, options);\r\n }\r\n\r\n return throwError(new Error(this.strings.ConnectionError.message));\r\n }));\r\n }\r\n\r\n return publish\r\n .pipe(\r\n catchError((error, caught) => {\r\n // retry if reset connection of socket was observed.\r\n if (error && error.message === this.strings.ResetError.message) {\r\n return <Observable<T>>this.monitorCreateRequest(nodeName, requestState, request, format, options);\r\n }\r\n\r\n if ((!options || options.noAuth !== true) && this.authorizationManager.canHandleStreamFailure(error.xhr)) {\r\n return this.authorizationManager.handleStreamFailure(nodeName, options, error.xhr)\r\n .pipe(switchMap(updatedOptions =>\r\n <Observable<T>>this.monitorCreateRequest(nodeName, requestState, request, format, updatedOptions)));\r\n }\r\n\r\n return throwError(error);\r\n }));\r\n }\r\n\r\n private createRequestSimple<T>(\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): Observable<T> {\r\n return Observable.create(observer => {\r\n const target = this.websocketStream.getTarget(this.authorizationManager, nodeName);\r\n const id = this.sendRequest(observer, target, requestState, request, format, options);\r\n return () => {\r\n const processor = this.processors.get(id);\r\n if (processor) {\r\n processor.end = true;\r\n if (!processor.closed && !processor.closing) {\r\n this.cancel(processor.target.nodeName, id);\r\n }\r\n }\r\n };\r\n });\r\n }\r\n\r\n private sendRequest(\r\n observer: Observer<any>,\r\n target: WebsocketStreamDataTarget,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): string {\r\n const id = (options && options.queryId) || MsftSme.getUniqueId();\r\n const processor = new CimProcessor(observer, target, format, options);\r\n this.processors.set(id, processor);\r\n this.websocketStream.sendNext('SME-CIM', <CimStreamRequest>{ id, target, requestState, request, options });\r\n return id;\r\n }\r\n\r\n /**\r\n * Set PowerShell parameters to the options object.\r\n *\r\n * @param options The node request options.\r\n * @param outputType The output data type.\r\n * @param keys The key data.\r\n * @param data The arguments data.\r\n */\r\n private setPowerShellParameters(\r\n nodeName: string,\r\n options: NodeRequestOptions,\r\n cimOutput: NodeCimOutput,\r\n keys?: any,\r\n data?: any): void {\r\n if (options == null || options.powerShell == null) {\r\n return;\r\n }\r\n\r\n options.powerShellContext = {\r\n cimOutput,\r\n parameters: { ...(keys || {}), ...(data || {}) }\r\n };\r\n\r\n options.powerShellEndpoint = this.authorizationManager.getJeaEndpoint(nodeName);\r\n }\r\n\r\n private monitorCreateRequest<T>(\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): Observable<T> {\r\n let monitored: (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) => Observable<T> =\r\n (nodeName1: string,\r\n requestState1: WebsocketStreamDataRequestState,\r\n request1: CimStreamRequestData,\r\n format1: CimResultFormat,\r\n options1?: CimStreamOptions) => this.createRequest(nodeName1, requestState1, request1, format1, options1);\r\n for (const monitorSet of CimStream.monitorSets) {\r\n monitored = this.monitor<T>(monitored, monitorSet);\r\n }\r\n\r\n return monitored(nodeName, requestState, request, format, options);\r\n }\r\n\r\n private monitor<T>(\r\n target: (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) => Observable<T>,\r\n monitorSet: CimStreamMonitorSet<T>)\r\n : (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) => Observable<T> {\r\n\r\n return function(\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): Observable<T> {\r\n let context: CimStreamMonitorSetContext<any>;\r\n return monitorSet.preMonitor(nodeName, requestState, request, format, options)\r\n .pipe(\r\n switchMap(packet => {\r\n context = packet;\r\n return target(packet.nodeName, packet.requestState, packet.request, packet.format, packet.options);\r\n }),\r\n catchError((error: any, caught: any) => monitorSet.errorMonitor(error, context)),\r\n switchMap(response => monitorSet.successMonitor(response, context))\r\n );\r\n };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/data/cim-stream.ts"],"names":[],"mappings":"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","file":"cim-stream.js","sourcesContent":["\r\nimport { Observable, Observer, throwError } from 'rxjs';\r\nimport { catchError, filter, mergeMap, switchMap, take } from 'rxjs/operators';\r\nimport { LogLevel } from '../diagnostics/log-level';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { Strings } from '../generated/strings';\r\nimport { AuthorizationManager } from '../security/authorization-manager';\r\nimport { CimKeyProperties, CimMultiple, CimResult, CimSingle } from './cim';\r\nimport { NodeCimOutput, NodeRequestOptions } from './node-connection';\r\nimport { PowerShellAlternate } from './powershell-alternate';\r\nimport { PowerShellStream } from './powershell-stream';\r\nimport {\r\n WebsocketStream,\r\n WebsocketStreamConnectionState,\r\n WebsocketStreamDataRequestState,\r\n WebsocketStreamDataState,\r\n WebsocketStreamDataTarget,\r\n WebsocketStreamHandler,\r\n WebsocketStreamProcessor,\r\n} from './websocket-stream';\r\n\r\n/**\r\n * Cim result format.\r\n */\r\nexport enum CimResultFormat {\r\n /**\r\n * Single instance result.\r\n */\r\n Single,\r\n\r\n /**\r\n * Multiple instances result.\r\n */\r\n Multiple,\r\n\r\n /**\r\n * Mixed data result.\r\n */\r\n Result\r\n}\r\n\r\n/**\r\n * Cim Stream options.\r\n */\r\nexport interface CimStreamOptions extends NodeRequestOptions {\r\n /**\r\n * Partial data response. By default, it responses back with completed data.\r\n */\r\n partial?: boolean;\r\n\r\n /**\r\n * Override Query ID so it can request cancel.\r\n */\r\n queryId?: string;\r\n\r\n /**\r\n * Buffering time period by milliseconds.\r\n */\r\n bufferTime?: number;\r\n\r\n /**\r\n * Buffering count.\r\n */\r\n bufferCount?: number;\r\n}\r\n\r\n/**\r\n * CIM Get instance multiple.\r\n */\r\nexport interface CimGetInstanceMultiple {\r\n name: 'CimGetInstanceMultiple';\r\n namespace: string;\r\n className: string;\r\n}\r\n\r\n/**\r\n * Cim Get instance single.\r\n */\r\nexport interface CimGetInstanceSingle {\r\n name: 'CimGetInstanceSingle';\r\n namespace: string;\r\n className: string;\r\n keyProperties: CimKeyProperties;\r\n}\r\n\r\n/**\r\n * Cim Invoke method instance.\r\n */\r\nexport interface CimInvokeMethodInstance {\r\n name: 'CimInvokeMethodInstance';\r\n namespace: string;\r\n className: string;\r\n methodName: string;\r\n keyProperties: CimKeyProperties;\r\n data?: any;\r\n}\r\n\r\n/**\r\n * Cim Invoke method static.\r\n */\r\nexport interface CimInvokeMethodStatic {\r\n name: 'CimInvokeMethodStatic';\r\n namespace: string;\r\n className: string;\r\n methodName: string;\r\n data?: any;\r\n}\r\n\r\n/**\r\n * Cim Set instance.\r\n */\r\nexport interface CimSetInstance {\r\n name: 'CimSetInstance';\r\n namespace: string;\r\n className: string;\r\n keyProperties: CimKeyProperties;\r\n data: any;\r\n}\r\n\r\n/**\r\n * Cim Modify instance.\r\n */\r\nexport interface CimModifyInstance {\r\n name: 'CimModifyInstance';\r\n namespace: string;\r\n className: string;\r\n keyProperties: CimKeyProperties;\r\n data: any;\r\n}\r\n\r\n/**\r\n * Cim Delete instance.\r\n */\r\nexport interface CimDeleteInstance {\r\n name: 'CimDeleteInstance';\r\n namespace: string;\r\n className: string;\r\n keyProperties: CimKeyProperties;\r\n}\r\n\r\n/**\r\n * Cim Get instance query.\r\n */\r\nexport interface CimGetInstanceQuery {\r\n name: 'CimGetInstanceQuery';\r\n namespace: string;\r\n query: string;\r\n}\r\n\r\n/**\r\n * Cim Stream request data.\r\n */\r\nexport type CimStreamRequestData =\r\n CimGetInstanceMultiple\r\n | CimGetInstanceSingle\r\n | CimInvokeMethodInstance\r\n | CimInvokeMethodStatic\r\n | CimSetInstance\r\n | CimModifyInstance\r\n | CimDeleteInstance\r\n | CimGetInstanceQuery;\r\n\r\n/**\r\n * The request packet of Cim Stream to the gateway.\r\n */\r\nexport interface CimStreamRequest {\r\n /**\r\n * The identification string (auto generated or supplied as queryId option.)\r\n */\r\n id: string;\r\n\r\n /**\r\n * The stream target.\r\n */\r\n target: WebsocketStreamDataTarget;\r\n\r\n /**\r\n * The date request state.\r\n */\r\n requestState: WebsocketStreamDataRequestState;\r\n\r\n /**\r\n * The request data.\r\n */\r\n request: CimStreamRequestData;\r\n\r\n /**\r\n * The Cim stream options.\r\n */\r\n options?: CimStreamOptions;\r\n}\r\n\r\n/**\r\n * Cim stream response.\r\n */\r\nexport interface CimStreamResponse {\r\n /**\r\n * Request ID from client.\r\n */\r\n id: string;\r\n\r\n /**\r\n * The state of response data.\r\n */\r\n state: WebsocketStreamDataState;\r\n\r\n /**\r\n * The index number of response data.\r\n */\r\n index: number;\r\n\r\n /**\r\n * The response data.\r\n */\r\n response: any;\r\n}\r\n\r\n/**\r\n * Cim Processor interface. Each Cim query creates new observable.\r\n */\r\nclass CimProcessor extends WebsocketStreamProcessor<CimSingle | CimMultiple | CimResult, CimStreamOptions> {\r\n /**\r\n * Holding result if waitCompleted option is specified for multiple instances.\r\n */\r\n public response?: any;\r\n\r\n /**\r\n * Initializes a new instance of the CimProcessor class.\r\n * @param observer Observer to send back result to caller.\r\n * @param target Stream Target object.\r\n * @param format CIM result format.\r\n * @param options Options for Cim stream query.\r\n */\r\n constructor(\r\n observer: Observer<CimSingle | CimMultiple | CimResult>,\r\n target: WebsocketStreamDataTarget,\r\n public format: CimResultFormat,\r\n options: CimStreamOptions) {\r\n super(observer, target, options);\r\n }\r\n}\r\n\r\nexport interface CimStreamMonitorSetContext<T> {\r\n nodeName: string;\r\n requestState: WebsocketStreamDataRequestState;\r\n request: CimStreamRequestData;\r\n format: CimResultFormat;\r\n options?: CimStreamOptions;\r\n data: T;\r\n}\r\n\r\n/**\r\n * Set of monitors for pre and post process of cim stream.\r\n */\r\nexport interface CimStreamMonitorSet<T> {\r\n name: string;\r\n preMonitor: (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) =>\r\n Observable<CimStreamMonitorSetContext<any>>;\r\n successMonitor: (result: T, context: CimStreamMonitorSetContext<any>) => Observable<T>;\r\n errorMonitor: (error: any, context: CimStreamMonitorSetContext<any>) => Observable<T>;\r\n}\r\n\r\n/**\r\n * The CIM stream class.\r\n */\r\nexport class CimStream implements WebsocketStreamHandler {\r\n /**\r\n * The collection of set of monitors.\r\n */\r\n private static monitorSets: CimStreamMonitorSet<any>[] = [];\r\n\r\n private processors: Map<string /* id */, CimProcessor> = new Map();\r\n private strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core.WebsocketStream.CimStream;\r\n\r\n /**\r\n * Register the set of monitors.\r\n *\r\n * @param monitorSet The set of monitors.\r\n */\r\n public static registerMonitorSet(monitorSet: CimStreamMonitorSet<any>): void {\r\n const found = CimStream.monitorSets.find(monitors => monitors.name === monitorSet.name);\r\n if (found) {\r\n return;\r\n }\r\n\r\n CimStream.monitorSets.push(monitorSet);\r\n }\r\n\r\n /**\r\n * Unregister the set of monitors.\r\n *\r\n * @param name The name of set of monitors.\r\n * @returns boolean true if unregistered the named set.\r\n */\r\n public static unregisterMonitors(name: string): boolean {\r\n const found = CimStream.monitorSets.find(monitors => monitors.name === name);\r\n if (found) {\r\n CimStream.monitorSets.remove(found);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Initializes a new instance of the CimStream class.\r\n *\r\n * @param websocketStream the websocket stream object.\r\n * @param powerShellStream the PowerShell steam object.\r\n * @param authorizationManager the authorization manager object.\r\n */\r\n constructor(\r\n private websocketStream: WebsocketStream,\r\n private powerShellStream: PowerShellStream,\r\n private authorizationManager: AuthorizationManager) {\r\n websocketStream.registerProcessor('SME-CIM', this);\r\n }\r\n\r\n /**\r\n * CIM Get MultipleInstances\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param options the options for this request.\r\n * @return Observable<CimResult> the query observable.\r\n */\r\n public getInstanceMultiple(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n options?: CimStreamOptions): Observable<CimMultiple> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Multiple);\r\n const observable = PowerShellAlternate.createStream<CimMultiple>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimGetInstanceMultiple';\r\n const request = <CimGetInstanceMultiple>{ name, namespace, className };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Multiple, options);\r\n }\r\n\r\n /**\r\n * CIM Get SingleInstance\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param keyProperties the key properties object.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public getInstanceSingle(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n keyProperties: CimKeyProperties,\r\n options?: CimStreamOptions): Observable<CimSingle> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Multiple, keyProperties);\r\n const observable = PowerShellAlternate.createStream<CimSingle>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimGetInstanceSingle';\r\n const request = <CimGetInstanceSingle>{ name, namespace, className, keyProperties };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Single, options);\r\n }\r\n\r\n /**\r\n * CIM Invoke InstanceMethod\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param methodName the method name.\r\n * @param keyProperties the key properties object.\r\n * @param data the method input data.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public invokeMethodInstance(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n methodName: string,\r\n keyProperties: any,\r\n data?: any,\r\n options?: CimStreamOptions): Observable<CimResult> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Multiple, keyProperties, data && data.parameters);\r\n const observable = PowerShellAlternate.createStream<CimResult>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimInvokeMethodInstance';\r\n const request = <CimInvokeMethodInstance>{ name, namespace, className, methodName, keyProperties, data };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Result, options);\r\n }\r\n\r\n /**\r\n * CIM Invoke StaticMethod\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param methodName the method name.\r\n * @param data the method input data.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public invokeMethodStatic(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n methodName: string,\r\n data?: any,\r\n options?: CimStreamOptions): Observable<CimResult> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Result, data && data.parameters);\r\n const observable = PowerShellAlternate.createStream<CimResult>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimInvokeMethodStatic';\r\n const request = <CimInvokeMethodStatic>{ name, namespace, className, methodName, data };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Result, options);\r\n }\r\n\r\n /**\r\n * CIM Set SingleInstance\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param keyProperties the key properties object.\r\n * @param data the method input data.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public setInstance(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n keyProperties: any,\r\n data: any,\r\n options?: CimStreamOptions): Observable<CimSingle> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Single, keyProperties, data && data.properties);\r\n const observable = PowerShellAlternate.createStream<CimSingle>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimSetInstance';\r\n const request = <CimSetInstance>{ name, namespace, className, keyProperties, data };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Single, options);\r\n }\r\n\r\n /**\r\n * CIM Modify SingleInstance\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param keyProperties the key properties object.\r\n * @param data the method input data.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public modifyInstance(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n keyProperties: any,\r\n data: any,\r\n options?: CimStreamOptions): Observable<CimSingle> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Single, keyProperties, data && data.properties);\r\n const observable = PowerShellAlternate.createStream<CimSingle>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimModifyInstance';\r\n const request = <CimModifyInstance>{ name, namespace, className, keyProperties, data };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Single, options);\r\n }\r\n\r\n /**\r\n * CIM Delete SingleInstance\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param className the class name.\r\n * @param keyProperties the key properties object.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public deleteInstance(\r\n nodeName: string,\r\n namespace: string,\r\n className: string,\r\n keyProperties: any,\r\n options?: CimStreamOptions): Observable<CimSingle> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Single, keyProperties);\r\n const observable = PowerShellAlternate.createStream<CimSingle>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimDeleteInstance';\r\n const request = <CimDeleteInstance>{ name, namespace, className, keyProperties };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Single, options);\r\n }\r\n\r\n /**\r\n * CIM Submit WqlQuery\r\n *\r\n * @param nodeName the name of the node to use for this request\r\n * @param namespace the cim namespace.\r\n * @param query the WQL string.\r\n * @param options the options for this request.\r\n * @return Observable<any> the query observable.\r\n */\r\n public getInstanceQuery(\r\n nodeName: string,\r\n namespace: string,\r\n query: string,\r\n options?: CimStreamOptions): Observable<CimResult> {\r\n this.setPowerShellParameters(nodeName, options, NodeCimOutput.Query, options && options.powerShellParameters);\r\n const observable = PowerShellAlternate.createStream<CimResult>(this.powerShellStream, nodeName, options);\r\n if (observable) {\r\n return observable;\r\n }\r\n\r\n const name = 'CimGetInstanceQuery';\r\n const request = <CimGetInstanceQuery>{ name, namespace, query };\r\n const requestState = WebsocketStreamDataRequestState.Normal;\r\n return this.monitorCreateRequest(nodeName, requestState, request, CimResultFormat.Multiple, options);\r\n }\r\n\r\n /**\r\n * Cancel active CIM query.\r\n * Result response comes back to the original query to end.\r\n *\r\n * @param nodeName the node name.\r\n * @param id the id of original request specified as options.queryId.\r\n */\r\n public cancel(nodeName: string, id: string): void {\r\n const target = this.websocketStream.getTarget(this.authorizationManager, nodeName);\r\n const requestState = WebsocketStreamDataRequestState.Cancel;\r\n const request = <CimStreamRequest>{ id, target, requestState, request: null };\r\n this.websocketStream.sendNext('SME-CIM', request);\r\n }\r\n\r\n /**\r\n * Reset data for connection cleanup.\r\n */\r\n public reset(): void {\r\n Logging.log({ level: LogLevel.Warning, message: this.strings.ResetError.message, source: 'CimStream' });\r\n const processors: CimProcessor[] = [];\r\n this.processors.forEach((value, key, map) => processors.push(value));\r\n this.processors.clear();\r\n processors.forEach((processor, key, map) => {\r\n processor.error(new Error(this.strings.ResetError.message));\r\n });\r\n }\r\n\r\n /**\r\n * Process the socket message.\r\n *\r\n * @param message the socket message.\r\n */\r\n public process(message: CimStreamResponse): void {\r\n if (!message) {\r\n throw new Error(this.strings.NoContentError.message);\r\n }\r\n\r\n const processor = this.processors.get(message.id);\r\n if (!processor) {\r\n Logging.log({ level: LogLevel.Warning, message: this.strings.UnexpectedReceivedError.message, source: 'PowerShellStream' });\r\n return;\r\n }\r\n\r\n switch (message.state) {\r\n case WebsocketStreamDataState.Data:\r\n this.operationNext(processor, message.response);\r\n break;\r\n\r\n case WebsocketStreamDataState.Completed:\r\n this.operationComplete(processor, message.response);\r\n this.operationEnd(message.id);\r\n break;\r\n\r\n case WebsocketStreamDataState.Error:\r\n this.operationError(processor, { xhr: message });\r\n this.operationEnd(message.id);\r\n break;\r\n\r\n case WebsocketStreamDataState.Noop:\r\n break;\r\n }\r\n }\r\n\r\n private operationNext(processor: CimProcessor, response: any): boolean {\r\n const partial = processor.options && processor.options.partial;\r\n if (!response) {\r\n return !partial;\r\n }\r\n\r\n // buffering result.\r\n if (!partial) {\r\n if (processor.format === CimResultFormat.Single) {\r\n // expecting - { response: any }\r\n processor.response = response;\r\n } else if (processor.format === CimResultFormat.Multiple) {\r\n // expecting - { response: { value: any[]; } } format.\r\n if (!response || !response.value) {\r\n Logging.log(\r\n { level: LogLevel.Error, message: this.strings.UnexpectedMultipleError.message, source: 'CimStream' });\r\n } else {\r\n if (!processor.response) {\r\n processor.response = response;\r\n } else {\r\n response.value.forEach(value => processor.response.value.push(value));\r\n }\r\n }\r\n } else if (processor.format === CimResultFormat.Result) {\r\n // expecting - { response: { results: any[] }, <name1>: <value1>, <name2>: <value2> } format.\r\n if (!processor.response) {\r\n processor.response = response;\r\n } else {\r\n if (response.results) {\r\n if (processor.response.results) {\r\n response.results.forEach(value => processor.response.results.push(value));\r\n response.results = undefined;\r\n }\r\n }\r\n\r\n // merge other properties.\r\n processor.response = { ...processor.response, ...response };\r\n }\r\n }\r\n } else {\r\n processor.next(response);\r\n }\r\n\r\n return !partial;\r\n }\r\n\r\n private operationComplete(processor: CimProcessor, response: CimSingle | CimMultiple | CimResult): void {\r\n if (this.operationNext(processor, response)) {\r\n // complete mode to send all result once.\r\n processor.next(processor.response);\r\n }\r\n\r\n if (!processor.sendOnce) {\r\n // send null if no result was produced but success.\r\n processor.next(null);\r\n }\r\n\r\n processor.complete();\r\n }\r\n\r\n private operationError(processor: CimProcessor, error: any): void {\r\n processor.error(error);\r\n }\r\n\r\n private operationEnd(id: string): void {\r\n this.processors.delete(id);\r\n }\r\n\r\n private createRequest<T>(\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): Observable<T> {\r\n // publish object is created two ways.\r\n // 1) socket is connected so submit the request immediately with simple observable.\r\n // (if-block and this is the most of cases.)\r\n // 2) socket is not connected so wait for the socket to ready and submit request with\r\n // complex observable. Initial connect and re-connection takes this observable.\r\n // (else-block and this is a few cases.)\r\n let publish: Observable<T>;\r\n if (this.websocketStream.socketStateRaw === WebsocketStreamConnectionState.Connected) {\r\n publish = this.createRequestSimple(nodeName, requestState, request, format, options);\r\n } else {\r\n publish = this.websocketStream.socketState\r\n .pipe(\r\n filter(state => state === WebsocketStreamConnectionState.Connected\r\n || state === WebsocketStreamConnectionState.Failed\r\n || state === WebsocketStreamConnectionState.NotConfigured),\r\n take(1),\r\n mergeMap(state => {\r\n if (state === WebsocketStreamConnectionState.Connected) {\r\n return this.createRequestSimple<T>(nodeName, requestState, request, format, options);\r\n }\r\n\r\n return throwError(new Error(this.strings.ConnectionError.message));\r\n }));\r\n }\r\n\r\n return publish\r\n .pipe(\r\n catchError((error, caught) => {\r\n // retry if reset connection of socket was observed.\r\n if (error && error.message === this.strings.ResetError.message) {\r\n return <Observable<T>>this.monitorCreateRequest(nodeName, requestState, request, format, options);\r\n }\r\n\r\n if ((!options || options.noAuth !== true)\r\n && !this.authorizationManager.signOnManager.isSignOnTokenEnabled\r\n && this.authorizationManager.canHandleStreamFailure(error.xhr)) {\r\n return this.authorizationManager.handleStreamFailure(nodeName, options, error.xhr)\r\n .pipe(switchMap(updatedOptions =>\r\n <Observable<T>>this.monitorCreateRequest(nodeName, requestState, request, format, updatedOptions)));\r\n }\r\n\r\n if (this.authorizationManager.signOnManager.isSignOnTokenEnabled\r\n && this.authorizationManager.signOnManager.canHandleStreamUnauthorizedLogin(error.xhr)) {\r\n return this.authorizationManager.signOnManager.handleStreamUnauthorizedLogin(options, error.xhr)\r\n .pipe(switchMap(updatedOptions =>\r\n <Observable<T>>this.monitorCreateRequest(nodeName, requestState, request, format, updatedOptions)));\r\n }\r\n\r\n return throwError(error);\r\n }));\r\n }\r\n\r\n private createRequestSimple<T>(\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): Observable<T> {\r\n return Observable.create(observer => {\r\n const target = this.websocketStream.getTarget(this.authorizationManager, nodeName);\r\n const id = this.sendRequest(observer, target, requestState, request, format, options);\r\n return () => {\r\n const processor = this.processors.get(id);\r\n if (processor) {\r\n processor.end = true;\r\n if (!processor.closed && !processor.closing) {\r\n this.cancel(processor.target.nodeName, id);\r\n }\r\n }\r\n };\r\n });\r\n }\r\n\r\n private sendRequest(\r\n observer: Observer<any>,\r\n target: WebsocketStreamDataTarget,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): string {\r\n const id = (options && options.queryId) || MsftSme.getUniqueId();\r\n const processor = new CimProcessor(observer, target, format, options);\r\n this.processors.set(id, processor);\r\n this.websocketStream.sendNext('SME-CIM', <CimStreamRequest>{ id, target, requestState, request, options });\r\n return id;\r\n }\r\n\r\n /**\r\n * Set PowerShell parameters to the options object.\r\n *\r\n * @param options The node request options.\r\n * @param outputType The output data type.\r\n * @param keys The key data.\r\n * @param data The arguments data.\r\n */\r\n private setPowerShellParameters(\r\n nodeName: string,\r\n options: NodeRequestOptions,\r\n cimOutput: NodeCimOutput,\r\n keys?: any,\r\n data?: any): void {\r\n if (options == null || options.powerShell == null) {\r\n return;\r\n }\r\n\r\n options.powerShellContext = {\r\n cimOutput,\r\n parameters: { ...(keys || {}), ...(data || {}) }\r\n };\r\n\r\n options.powerShellEndpoint = this.authorizationManager.getJeaEndpoint(nodeName);\r\n }\r\n\r\n private monitorCreateRequest<T>(\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): Observable<T> {\r\n let monitored: (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) => Observable<T> =\r\n (nodeName1: string,\r\n requestState1: WebsocketStreamDataRequestState,\r\n request1: CimStreamRequestData,\r\n format1: CimResultFormat,\r\n options1?: CimStreamOptions) => this.createRequest(nodeName1, requestState1, request1, format1, options1);\r\n for (const monitorSet of CimStream.monitorSets) {\r\n monitored = this.monitor<T>(monitored, monitorSet);\r\n }\r\n\r\n return monitored(nodeName, requestState, request, format, options);\r\n }\r\n\r\n private monitor<T>(\r\n target: (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) => Observable<T>,\r\n monitorSet: CimStreamMonitorSet<T>)\r\n : (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) => Observable<T> {\r\n\r\n return function(\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions): Observable<T> {\r\n let context: CimStreamMonitorSetContext<any>;\r\n return monitorSet.preMonitor(nodeName, requestState, request, format, options)\r\n .pipe(\r\n switchMap(packet => {\r\n context = packet;\r\n return target(packet.nodeName, packet.requestState, packet.request, packet.format, packet.options);\r\n }),\r\n catchError((error: any, caught: any) => monitorSet.errorMonitor(error, context)),\r\n switchMap(response => monitorSet.successMonitor(response, context))\r\n );\r\n };\r\n }\r\n}\r\n"]}
|
|
@@ -17,6 +17,10 @@ export interface ManifestLoadingOptions {
|
|
|
17
17
|
* Specify the name of PowerShell module.
|
|
18
18
|
*/
|
|
19
19
|
powerShellModuleName?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Specify the name of PowerShell prefix.
|
|
22
|
+
*/
|
|
23
|
+
powerShellPrefix?: string;
|
|
20
24
|
/**
|
|
21
25
|
* Specify angular-cli production state used by the module loading only.
|
|
22
26
|
*/
|
|
@@ -49,6 +49,7 @@ export class CoreEnvironment {
|
|
|
49
49
|
moduleName: manifestOptions.name,
|
|
50
50
|
moduleVersion: manifestOptions.version,
|
|
51
51
|
powerShellModuleName: manifestOptions.powerShellModuleName,
|
|
52
|
+
powerShellPrefix: manifestOptions.powerShellPrefix,
|
|
52
53
|
isProduction: manifestOptions.isProduction,
|
|
53
54
|
sessionId: 'N/A',
|
|
54
55
|
logLevel: MsftSme.consoleDebug() === null ? LogLevel.Warning : MsftSme.consoleDebug(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/core/data/core-environment.ts"],"names":[],"mappings":"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","file":"core-environment.js","sourcesContent":["import { LogLevel } from '../diagnostics/log-level';\r\nimport { EnvironmentModule } from '../manifest/environment-modules';\r\nimport { ManifestLoader } from '../manifest/manifest-loader';\r\nimport { PerformanceTracker } from '../performance/performance-tracker';\r\nimport { AccessibilityManager } from './accessibility-manager';\r\nimport { AssetManager } from './asset-manager';\r\nimport { LocaleSet, LocalizationManager, LocalizationManagerOptions } from './localization-manager';\r\nimport { NativeQ } from './native-q';\r\nimport { PowerShell } from './powershell';\r\n\r\n/**\r\n * Interface for manifest loading.\r\n */\r\nexport interface ManifestLoadingOptions {\r\n /**\r\n * Specify shell or module name.\r\n */\r\n name: string;\r\n\r\n /**\r\n * Specify the version of shell or module.\r\n */\r\n version: string;\r\n\r\n /**\r\n * Specify the name of PowerShell module.\r\n */\r\n powerShellModuleName?: string;\r\n\r\n /**\r\n * Specify angular-cli production state used by the module loading only.\r\n */\r\n isProduction?: boolean;\r\n\r\n /**\r\n * Specify shell origin URL for sideloading debugging.\r\n */\r\n shellOrigin?: string;\r\n}\r\n\r\n/**\r\n * The enum switch to use predefined endpoints.\r\n */\r\nexport enum RuntimePowerShellEndpoint {\r\n /**\r\n * Not specify.\r\n */\r\n InlineScript = 0,\r\n\r\n /**\r\n * The default endpoint. Microsoft.PowerShell\r\n */\r\n Default = 1,\r\n\r\n /**\r\n * The SME endpoint. Microsoft.SME.PowerShell\r\n */\r\n Sme = 2\r\n}\r\n\r\n/**\r\n * Interface for runtime options.\r\n */\r\nexport interface RuntimeOptions {\r\n /**\r\n * Enable websocket if true.\r\n */\r\n websocket?: boolean;\r\n\r\n /**\r\n * Force to use module functions instead of embedded script on PowerShell calls.\r\n */\r\n powerShellEndpoint?: RuntimePowerShellEndpoint | string;\r\n\r\n /**\r\n * Disable style injection if true.\r\n */\r\n disableStyleInjection?: boolean;\r\n\r\n /**\r\n * Disable accessibility if true.\r\n */\r\n disableAccessibility?: boolean;\r\n}\r\n\r\n/**\r\n * Class to initialize and the SME environment\r\n * (Localized string cannot be used in this class due to initialization phase when the strings are not ready yet.)\r\n * @dynamic\r\n */\r\nexport class CoreEnvironment {\r\n /**\r\n * The localization manager once the environment has been initialized\r\n */\r\n public static localizationManager: LocalizationManager<void>;\r\n public static accessibilityManager: AccessibilityManager;\r\n public static assetManager: AssetManager;\r\n\r\n /**\r\n * Initializes the environment with manifest loading mode.\r\n *\r\n * @param manifestOptions the name of manifest loading options.\r\n * @param localizationOptions the options to initialize the Localization Manager\r\n * @param runtimeOptions the optional runtime options.\r\n */\r\n public static initialize(\r\n manifestOptions: ManifestLoadingOptions,\r\n localizationOptions: LocalizationManagerOptions,\r\n runtimeOptions?: RuntimeOptions\r\n ): Promise<void> {\r\n PerformanceTracker.coreEnvironmentInitStarted();\r\n if (!manifestOptions || !manifestOptions.name) {\r\n // no localization.\r\n throw new Error('CoreEnvironment.initialize() - Argument error: manifestOptions.');\r\n }\r\n\r\n const InitOptions: MsftSme.MsftSmeInit = {\r\n mode: MsftSme.EnvironmentMode.LoadEmbedded,\r\n moduleName: manifestOptions.name,\r\n moduleVersion: manifestOptions.version,\r\n powerShellModuleName: manifestOptions.powerShellModuleName,\r\n isProduction: manifestOptions.isProduction,\r\n sessionId: 'N/A',\r\n logLevel: MsftSme.consoleDebug() === null ? LogLevel.Warning : MsftSme.consoleDebug(),\r\n sessionExpiration: 0,\r\n performanceProfile: false,\r\n developerGuide: false,\r\n experiments: MsftSme.experiments(),\r\n connectivityLevel: '',\r\n isShell: false,\r\n shellVersion: null\r\n };\r\n if (manifestOptions.name === EnvironmentModule.nameOfShell) {\r\n // shell manifest loading\r\n InitOptions.isShell = true;\r\n InitOptions.mode = MsftSme.EnvironmentMode.Load;\r\n InitOptions.sessionId = MsftSme.newGuid();\r\n } else if (manifestOptions.isProduction) {\r\n // module on the production using the same site origin from location information\r\n // if not specified by manifestOptions.shellOrigin.\r\n InitOptions.shellOrigin = manifestOptions && manifestOptions.shellOrigin ? manifestOptions.shellOrigin : window.location.origin;\r\n } else {\r\n // module side-loading manifest. non production environment accept any shell origin.\r\n InitOptions.shellOrigin = '*';\r\n }\r\n\r\n const self = MsftSme.self();\r\n self.Init = InitOptions;\r\n\r\n // enable websocket stream query only if requested.\r\n if (runtimeOptions && runtimeOptions.websocket) {\r\n self.Init.websocket = true;\r\n }\r\n\r\n // enable websocket stream query only if requested.\r\n if (runtimeOptions && runtimeOptions.powerShellEndpoint) {\r\n if (typeof runtimeOptions.powerShellEndpoint === 'string') {\r\n self.Init.powerShellEndpoint = <string>runtimeOptions.powerShellEndpoint;\r\n } else {\r\n const type = <RuntimePowerShellEndpoint>runtimeOptions.powerShellEndpoint;\r\n switch (type) {\r\n case RuntimePowerShellEndpoint.Default:\r\n self.Init.powerShellEndpoint = PowerShell.defaultPowerShellEndpoint;\r\n break;\r\n case RuntimePowerShellEndpoint.Sme:\r\n self.Init.powerShellEndpoint = PowerShell.smePowerShellEndpoint;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n CoreEnvironment.localizationManager = new LocalizationManager<any>(localizationOptions);\r\n\r\n if (!runtimeOptions || !runtimeOptions.disableStyleInjection) {\r\n CoreEnvironment.assetManager = new AssetManager(CoreEnvironment.localizationManager);\r\n }\r\n\r\n const deferred = NativeQ.defer<void>();\r\n PerformanceTracker.manifestLoadStarted();\r\n ManifestLoader.loadManifest()\r\n .then(() => {\r\n PerformanceTracker.localizationStarted();\r\n return CoreEnvironment.localization();\r\n })\r\n .then(() => {\r\n if (!runtimeOptions || !runtimeOptions.disableAccessibility) {\r\n PerformanceTracker.accessibilityManagerStarted();\r\n CoreEnvironment.accessibilityManager = new AccessibilityManager();\r\n }\r\n deferred.resolve();\r\n })\r\n .catch(deferred.reject)\r\n .finally(() => PerformanceTracker.coreEnvironmentInitCompleted());\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Validate and load localized strings if the localeId doesn't match with current locale Id.\r\n * @param localeSet the local information set.\r\n */\r\n public static moduleLoadLocale(localeSet: LocaleSet): Promise<void> {\r\n if (CoreEnvironment.localizationManager.localeId.id !== localeSet.id) {\r\n CoreEnvironment.localizationManager.saveLocale(localeSet);\r\n return CoreEnvironment.localization();\r\n }\r\n\r\n return NativeQ.resolved<void>();\r\n }\r\n\r\n /**\r\n * Initialize and load localization data by option settings.\r\n */\r\n private static localization(): Promise<void> {\r\n const self = MsftSme.self();\r\n CoreEnvironment.localizationManager.updateDocumentLanguage();\r\n return CoreEnvironment.localizationManager.fetchLocalizedStrings()\r\n .toPromise()\r\n .then(strings => {\r\n self.Resources.strings = strings;\r\n });\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/data/core-environment.ts"],"names":[],"mappings":"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","file":"core-environment.js","sourcesContent":["import { LogLevel } from '../diagnostics/log-level';\r\nimport { EnvironmentModule } from '../manifest/environment-modules';\r\nimport { ManifestLoader } from '../manifest/manifest-loader';\r\nimport { PerformanceTracker } from '../performance/performance-tracker';\r\nimport { AccessibilityManager } from './accessibility-manager';\r\nimport { AssetManager } from './asset-manager';\r\nimport { LocaleSet, LocalizationManager, LocalizationManagerOptions } from './localization-manager';\r\nimport { NativeQ } from './native-q';\r\nimport { PowerShell } from './powershell';\r\n\r\n/**\r\n * Interface for manifest loading.\r\n */\r\nexport interface ManifestLoadingOptions {\r\n /**\r\n * Specify shell or module name.\r\n */\r\n name: string;\r\n\r\n /**\r\n * Specify the version of shell or module.\r\n */\r\n version: string;\r\n\r\n /**\r\n * Specify the name of PowerShell module.\r\n */\r\n powerShellModuleName?: string;\r\n\r\n /**\r\n * Specify the name of PowerShell prefix.\r\n */\r\n powerShellPrefix?: string;\r\n\r\n /**\r\n * Specify angular-cli production state used by the module loading only.\r\n */\r\n isProduction?: boolean;\r\n\r\n /**\r\n * Specify shell origin URL for sideloading debugging.\r\n */\r\n shellOrigin?: string;\r\n}\r\n\r\n/**\r\n * The enum switch to use predefined endpoints.\r\n */\r\nexport enum RuntimePowerShellEndpoint {\r\n /**\r\n * Not specify.\r\n */\r\n InlineScript = 0,\r\n\r\n /**\r\n * The default endpoint. Microsoft.PowerShell\r\n */\r\n Default = 1,\r\n\r\n /**\r\n * The SME endpoint. Microsoft.SME.PowerShell\r\n */\r\n Sme = 2\r\n}\r\n\r\n/**\r\n * Interface for runtime options.\r\n */\r\nexport interface RuntimeOptions {\r\n /**\r\n * Enable websocket if true.\r\n */\r\n websocket?: boolean;\r\n\r\n /**\r\n * Force to use module functions instead of embedded script on PowerShell calls.\r\n */\r\n powerShellEndpoint?: RuntimePowerShellEndpoint | string;\r\n\r\n /**\r\n * Disable style injection if true.\r\n */\r\n disableStyleInjection?: boolean;\r\n\r\n /**\r\n * Disable accessibility if true.\r\n */\r\n disableAccessibility?: boolean;\r\n}\r\n\r\n/**\r\n * Class to initialize and the SME environment\r\n * (Localized string cannot be used in this class due to initialization phase when the strings are not ready yet.)\r\n * @dynamic\r\n */\r\nexport class CoreEnvironment {\r\n /**\r\n * The localization manager once the environment has been initialized\r\n */\r\n public static localizationManager: LocalizationManager<void>;\r\n public static accessibilityManager: AccessibilityManager;\r\n public static assetManager: AssetManager;\r\n\r\n /**\r\n * Initializes the environment with manifest loading mode.\r\n *\r\n * @param manifestOptions the name of manifest loading options.\r\n * @param localizationOptions the options to initialize the Localization Manager\r\n * @param runtimeOptions the optional runtime options.\r\n */\r\n public static initialize(\r\n manifestOptions: ManifestLoadingOptions,\r\n localizationOptions: LocalizationManagerOptions,\r\n runtimeOptions?: RuntimeOptions\r\n ): Promise<void> {\r\n PerformanceTracker.coreEnvironmentInitStarted();\r\n if (!manifestOptions || !manifestOptions.name) {\r\n // no localization.\r\n throw new Error('CoreEnvironment.initialize() - Argument error: manifestOptions.');\r\n }\r\n\r\n const InitOptions: MsftSme.MsftSmeInit = {\r\n mode: MsftSme.EnvironmentMode.LoadEmbedded,\r\n moduleName: manifestOptions.name,\r\n moduleVersion: manifestOptions.version,\r\n powerShellModuleName: manifestOptions.powerShellModuleName,\r\n powerShellPrefix: manifestOptions.powerShellPrefix,\r\n isProduction: manifestOptions.isProduction,\r\n sessionId: 'N/A',\r\n logLevel: MsftSme.consoleDebug() === null ? LogLevel.Warning : MsftSme.consoleDebug(),\r\n sessionExpiration: 0,\r\n performanceProfile: false,\r\n developerGuide: false,\r\n experiments: MsftSme.experiments(),\r\n connectivityLevel: '',\r\n isShell: false,\r\n shellVersion: null\r\n };\r\n if (manifestOptions.name === EnvironmentModule.nameOfShell) {\r\n // shell manifest loading\r\n InitOptions.isShell = true;\r\n InitOptions.mode = MsftSme.EnvironmentMode.Load;\r\n InitOptions.sessionId = MsftSme.newGuid();\r\n } else if (manifestOptions.isProduction) {\r\n // module on the production using the same site origin from location information\r\n // if not specified by manifestOptions.shellOrigin.\r\n InitOptions.shellOrigin = manifestOptions && manifestOptions.shellOrigin ? manifestOptions.shellOrigin : window.location.origin;\r\n } else {\r\n // module side-loading manifest. non production environment accept any shell origin.\r\n InitOptions.shellOrigin = '*';\r\n }\r\n\r\n const self = MsftSme.self();\r\n self.Init = InitOptions;\r\n\r\n // enable websocket stream query only if requested.\r\n if (runtimeOptions && runtimeOptions.websocket) {\r\n self.Init.websocket = true;\r\n }\r\n\r\n // enable websocket stream query only if requested.\r\n if (runtimeOptions && runtimeOptions.powerShellEndpoint) {\r\n if (typeof runtimeOptions.powerShellEndpoint === 'string') {\r\n self.Init.powerShellEndpoint = <string>runtimeOptions.powerShellEndpoint;\r\n } else {\r\n const type = <RuntimePowerShellEndpoint>runtimeOptions.powerShellEndpoint;\r\n switch (type) {\r\n case RuntimePowerShellEndpoint.Default:\r\n self.Init.powerShellEndpoint = PowerShell.defaultPowerShellEndpoint;\r\n break;\r\n case RuntimePowerShellEndpoint.Sme:\r\n self.Init.powerShellEndpoint = PowerShell.smePowerShellEndpoint;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n CoreEnvironment.localizationManager = new LocalizationManager<any>(localizationOptions);\r\n\r\n if (!runtimeOptions || !runtimeOptions.disableStyleInjection) {\r\n CoreEnvironment.assetManager = new AssetManager(CoreEnvironment.localizationManager);\r\n }\r\n\r\n const deferred = NativeQ.defer<void>();\r\n PerformanceTracker.manifestLoadStarted();\r\n ManifestLoader.loadManifest()\r\n .then(() => {\r\n PerformanceTracker.localizationStarted();\r\n return CoreEnvironment.localization();\r\n })\r\n .then(() => {\r\n if (!runtimeOptions || !runtimeOptions.disableAccessibility) {\r\n PerformanceTracker.accessibilityManagerStarted();\r\n CoreEnvironment.accessibilityManager = new AccessibilityManager();\r\n }\r\n deferred.resolve();\r\n })\r\n .catch(deferred.reject)\r\n .finally(() => PerformanceTracker.coreEnvironmentInitCompleted());\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Validate and load localized strings if the localeId doesn't match with current locale Id.\r\n * @param localeSet the local information set.\r\n */\r\n public static moduleLoadLocale(localeSet: LocaleSet): Promise<void> {\r\n if (CoreEnvironment.localizationManager.localeId.id !== localeSet.id) {\r\n CoreEnvironment.localizationManager.saveLocale(localeSet);\r\n return CoreEnvironment.localization();\r\n }\r\n\r\n return NativeQ.resolved<void>();\r\n }\r\n\r\n /**\r\n * Initialize and load localization data by option settings.\r\n */\r\n private static localization(): Promise<void> {\r\n const self = MsftSme.self();\r\n CoreEnvironment.localizationManager.updateDocumentLanguage();\r\n return CoreEnvironment.localizationManager.fetchLocalizedStrings()\r\n .toPromise()\r\n .then(strings => {\r\n self.Resources.strings = strings;\r\n });\r\n }\r\n}\r\n"]}
|