@microsoft/windows-admin-center-sdk 2.128.0 → 2.165.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/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 +706 -507
- 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 +1 -1
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js.map +1 -1
- package/angular/esm2015/src/controls/accordion/index.js +5 -0
- package/angular/esm2015/src/controls/data-table/data-table.component.js +135 -129
- package/angular/esm2015/src/controls/dialog/dialog.component.js +11 -5
- package/angular/esm2015/src/controls/dialog/dialog.service.js +6 -13
- package/angular/esm2015/src/controls/dropdown/dropdown.service.js +3 -2
- package/angular/esm2015/src/controls/form/form-field/array/array-form-field.component.js +29 -22
- package/angular/esm2015/src/controls/form/form-field/datetime-range/datetime-range-form-field.component.js +4 -3
- package/angular/esm2015/src/controls/form/form-field/list/list-form-field.component.js +1 -1
- package/angular/esm2015/src/controls/form/validation-alert/validation-alert.component.js +3 -2
- package/angular/esm2015/src/controls/index.js +2 -1
- package/angular/esm2015/src/controls/pivot/pivot.component.js +21 -9
- package/angular/esm2015/src/controls/settings/common-settings/common-settings.component.js +38 -34
- package/angular/esm2015/src/controls/settings/settings-content.component.js +3 -2
- package/angular/esm2015/src/controls/settings/settings.component.js +45 -13
- package/angular/esm2015/src/controls/settings/settings.module.js +5 -1
- package/angular/esm2015/src/controls/tooltip/tooltip-zone.directive.js +2 -2
- package/angular/esm2015/src/controls/wizard/models/index.js +1 -1
- package/angular/esm2015/src/controls/wizard/models/wizard-builder-interface.js +2 -0
- package/angular/esm2015/src/controls/wizard/models/wizard-navigation-interface.js +2 -0
- package/angular/esm2015/src/controls/wizard/wizard-builder.js +70 -1
- package/angular/esm2015/src/controls/wizard/wizard-navigation-information.js +56 -2
- package/angular/esm2015/src/controls/wizard/wizard.component.js +8 -2
- package/angular/esm2015/src/service/connectivity-enforcer.js +5 -2
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js +656 -462
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js.map +1 -1
- package/angular/src/controls/accordion/index.d.ts +4 -0
- package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +2 -1
- package/angular/src/controls/index.d.ts +1 -0
- package/angular/src/controls/pivot/pivot.component.d.ts +2 -2
- package/angular/src/controls/settings/settings.component.d.ts +3 -0
- package/angular/src/controls/settings/settings.module.d.ts +3 -2
- package/angular/src/controls/wizard/models/index.d.ts +2 -0
- package/angular/src/controls/wizard/models/wizard-builder-interface.d.ts +8 -0
- package/angular/src/controls/wizard/models/wizard-navigation-interface.d.ts +4 -0
- package/angular/src/controls/wizard/wizard-builder.d.ts +36 -1
- package/angular/src/controls/wizard/wizard-navigation-information.d.ts +48 -5
- package/angular/src/controls/wizard/wizard.component.d.ts +2 -1
- package/core/azure/azure-constants.d.ts +8 -0
- package/core/azure/azure-constants.js +8 -0
- package/core/azure/azure-constants.js.map +1 -1
- package/core/azure/azure-manager.d.ts +1 -0
- package/core/azure/azure-manager.js +7 -1
- package/core/azure/azure-manager.js.map +1 -1
- package/core/base/environment.d.ts +3 -0
- package/core/base/environment.js.map +1 -1
- package/core/base/msft-sme.mock.js +3 -0
- package/core/base/msft-sme.mock.js.map +1 -1
- package/core/base/utilities.d.ts +0 -3
- package/core/base/utilities.js +0 -34
- package/core/base/utilities.js.map +1 -1
- package/core/data/resource-cache.d.ts +1 -1
- package/core/data/resource-cache.js +1 -1
- package/core/data/resource-cache.js.map +1 -1
- package/core/data/settings-manager.d.ts +3 -0
- package/core/data/settings-manager.js +14 -1
- package/core/data/settings-manager.js.map +1 -1
- package/core/dom/dom.d.ts +5 -0
- package/core/dom/dom.js +20 -0
- package/core/dom/dom.js.map +1 -1
- package/core/manifest/environment-modules.js +3 -0
- package/core/manifest/environment-modules.js.map +1 -1
- package/core/notification/client-notification-instance.d.ts +5 -2
- package/core/notification/client-notification-instance.js +9 -5
- package/core/notification/client-notification-instance.js.map +1 -1
- package/core/notification/client-notification.d.ts +4 -0
- package/core/notification/client-notification.js.map +1 -1
- package/core/notification/notification.d.ts +6 -1
- package/core/notification/notification.js +3 -1
- package/core/notification/notification.js.map +1 -1
- package/core/rpc/credssp/rpc-credssp-model.d.ts +4 -0
- package/core/rpc/credssp/rpc-credssp-model.js.map +1 -1
- package/core/rpc/dialog/rpc-dialog-client.js +11 -5
- package/core/rpc/dialog/rpc-dialog-client.js.map +1 -1
- package/core/rpc/rpc.d.ts +6 -6
- package/core/rpc/rpc.js +7 -7
- package/core/rpc/rpc.js.map +1 -1
- package/core/security/authorization-manager.js +1 -1
- package/core/security/authorization-manager.js.map +1 -1
- package/core/security/credssp-manager.d.ts +13 -6
- package/core/security/credssp-manager.js +37 -21
- package/core/security/credssp-manager.js.map +1 -1
- package/core/shared/cluster-inventory/cluster-inventory-cache.js +2 -1
- package/core/shared/cluster-inventory/cluster-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 +11 -4
- package/styles/css/main.css +1 -1
- package/tools/gulp-ps-cim/index.js +1 -1
- package/tools/gulp-ps-cim/index.js.map +1 -1
- package/angular/assets/strings/en-US/strings.json +0 -1
- package/core/assets/strings/en-US/strings.json +0 -1
- package/e2e/assets/strings/en-US/strings.json +0 -1
|
@@ -16,7 +16,8 @@ export var NotificationChangeEvent;
|
|
|
16
16
|
NotificationChangeEvent[NotificationChangeEvent["Change"] = 4] = "Change";
|
|
17
17
|
})(NotificationChangeEvent || (NotificationChangeEvent = {}));
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Internal notification object converted from ClientNotification object.
|
|
20
|
+
* Contains data to track notifications.
|
|
20
21
|
*/
|
|
21
22
|
export class Notification {
|
|
22
23
|
/**
|
|
@@ -364,6 +365,7 @@ export class Notification {
|
|
|
364
365
|
this.link = this.formatLink(client.link, client.linkType);
|
|
365
366
|
this.linkType = client.linkType;
|
|
366
367
|
this.message = client.message;
|
|
368
|
+
this.solutionMessage = client.solutionMessage;
|
|
367
369
|
if (this.state !== NotificationState.Started && this.state !== NotificationState.InProgress) {
|
|
368
370
|
this.endTimestamp = this.getGlobalizedTimestamp(client.timestamp);
|
|
369
371
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/core/notification/notification.ts"],"names":[],"mappings":"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","file":"notification.js","sourcesContent":["import { Globalization } from '../data/globalization';\r\nimport { LogLevel } from '../diagnostics/log-level';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { Strings } from '../generated/strings';\r\nimport { EnvironmentModule } from '../manifest/environment-modules';\r\nimport { RpcNotification } from '../rpc/notification/rpc-notification-model';\r\nimport { RpcWorkItem } from '../rpc/work-item/rpc-work-item-model';\r\nimport { NotificationLinkType } from './notification-link-type';\r\nimport { IFrameService } from './notification-manager';\r\nimport { NotificationState } from './notification-state';\r\nimport { PowerShellNotification, PowerShellWorkItemMessage } from './powershell-notification';\r\nimport { SocketMessage } from './socket-signalr';\r\nimport { RecoveredWorkItem } from './work-item-request';\r\n\r\n/**\r\n * Notification changed event type.\r\n */\r\nexport enum NotificationChangeEvent {\r\n Initialized,\r\n InitializationFailed,\r\n Add,\r\n Remove,\r\n Change\r\n}\r\n\r\n/**\r\n * Notification changed event packet.\r\n */\r\nexport interface NotificationEvent {\r\n changeEvent: NotificationChangeEvent;\r\n notification?: Notification;\r\n}\r\n\r\n/**\r\n * Notification object.\r\n */\r\nexport class Notification {\r\n private strings: Strings = MsftSme.getStrings<Strings>();\r\n\r\n /**\r\n * Work item passed from RPC or client on shell.\r\n */\r\n private workItem: RpcWorkItem;\r\n\r\n /**\r\n * The type ID of work item.\r\n */\r\n public typeId: string;\r\n\r\n /**\r\n * The node name.\r\n */\r\n public nodeName: string;\r\n\r\n /**\r\n * The module name.\r\n */\r\n public moduleName: string;\r\n\r\n /**\r\n * The entry point name within the module\r\n */\r\n public entryPointName: string;\r\n\r\n /**\r\n * The module display name.\r\n */\r\n public moduleDisplayName: string;\r\n\r\n /**\r\n * Object included last response.\r\n */\r\n public object: any;\r\n\r\n /**\r\n * The state of notification.\r\n */\r\n public state: NotificationState;\r\n\r\n /**\r\n * The title of work item to display user. (localized)\r\n */\r\n public title: string;\r\n\r\n /**\r\n * The description of work item to display user. (localized)\r\n */\r\n public description: string;\r\n\r\n /**\r\n * The message. (localized)\r\n */\r\n public message: string;\r\n\r\n /**\r\n * True if the notification was created from recover, updates from messages should be taken\r\n */\r\n public isFromRecover = false;\r\n\r\n /**\r\n * True if the notification is disabled and should not be shown to the user\r\n */\r\n public isDisabled = false;\r\n\r\n /**\r\n * The start timestamp as a formatted globalized string\r\n */\r\n public startTimestamp: string;\r\n\r\n /**\r\n * The last changed timestamp as a formatted globalized string\r\n */\r\n public changedTimestamp: string;\r\n\r\n /**\r\n * The last changed timestamp as a number\r\n */\r\n public changedTimestampValue: number;\r\n\r\n /**\r\n * The end timestamp as a formatted globalized string\r\n */\r\n public endTimestamp: string;\r\n\r\n /**\r\n * The progress percent.\r\n */\r\n public progressPercent: number;\r\n\r\n /**\r\n * The success link to navigate to the object view. (optional)\r\n * At default, it brings to the home page of the module.\r\n */\r\n public link: string;\r\n\r\n /**\r\n * the notification link type of the link\r\n */\r\n public linkType: NotificationLinkType;\r\n\r\n /**\r\n * True if we should show the link in the notification's alert\r\n * We will show the link if there is a custom link or it is a long running request\r\n */\r\n public showLinkInAlert = false;\r\n\r\n /**\r\n * Marked it's no longer display to include list of notifications.\r\n */\r\n public dismissed = false;\r\n\r\n /**\r\n * The parent URI window.location.pathname.\r\n */\r\n public locationPathname: string;\r\n\r\n /**\r\n * The parent URI window.location.search\r\n */\r\n public locationSearch: string;\r\n\r\n /**\r\n *\r\n * Tracks if the notification has been read.\r\n */\r\n public isUnread = true;\r\n\r\n /**\r\n * Create notification from WorkItem.\r\n *\r\n * @param id the notification ID.\r\n * @param workItem the RPC work item.\r\n * @param state the initial state.\r\n * @param object the object from query result.\r\n * @return notification the notification object.\r\n */\r\n public static createFromWorkItem(\r\n id: string, workItem: RpcWorkItem, state: NotificationState, iFrameService: IFrameService, object?: any): Notification {\r\n const notification = new Notification(id);\r\n notification.workItem = workItem;\r\n\r\n notification.state = state;\r\n notification.object = object;\r\n notification.initializeFromWorkItem(workItem, iFrameService);\r\n return notification;\r\n }\r\n\r\n /**\r\n * Create notification from recovered work item.\r\n *\r\n * @param recoveredWorkItem the recovered work item.\r\n * @return notification the notification object.\r\n */\r\n public static createFromRecover(recoveredWorkItem: RecoveredWorkItem, iFrameService: IFrameService): Notification {\r\n const notification = new Notification(recoveredWorkItem.id);\r\n notification.workItem = recoveredWorkItem.metadata;\r\n notification.isFromRecover = true;\r\n\r\n if (recoveredWorkItem.failed) {\r\n notification.state = NotificationState.Error;\r\n notification.object = {\r\n errorType: 'WorkItemRecover',\r\n message: recoveredWorkItem.errorMessage\r\n };\r\n } else {\r\n notification.state = NotificationState.InProgress;\r\n notification.object = {};\r\n }\r\n\r\n notification.initializeFromWorkItem(recoveredWorkItem.metadata, iFrameService);\r\n return notification;\r\n }\r\n\r\n /**\r\n * Create notification from instant request.\r\n *\r\n * @param client the RPC notication request.\r\n * @return notification the notification object.\r\n */\r\n public static createFromClient(client: RpcNotification, iFrameService: IFrameService): Notification {\r\n const notification = new Notification(client.id);\r\n notification.locationPathname = window.location.pathname;\r\n notification.locationSearch = window.location.search;\r\n notification.initializeFromInstant(client, iFrameService);\r\n return notification;\r\n }\r\n\r\n /**\r\n * Initializes a new instance of the Notification class.\r\n *\r\n * @param id the notification ID.\r\n */\r\n constructor(public id: string) { }\r\n\r\n /**\r\n * Update a notification by work item from RPC.\r\n * @param id the notification id.\r\n * @param workItem the work item.\r\n * @param state the state of the notification.\r\n * @param object the object from query result.\r\n */\r\n public updateFromWorkItem(id: string, workItem: RpcWorkItem, state: NotificationState, object?: any) {\r\n let changed = false;\r\n\r\n if (this.updateState(state)) {\r\n changed = true;\r\n const now = Date.now();\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.endTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n if (this.object !== object) {\r\n changed = true;\r\n this.object = object;\r\n }\r\n\r\n this.updateMessageAndLinkAndTitle(workItem);\r\n return !this.isDisabled && changed;\r\n }\r\n\r\n /**\r\n * Update the notification by socket message from the gateway.\r\n *\r\n * @param item the socket message.\r\n * @return boolean the changed status.\r\n */\r\n public updateFromMessage(item: SocketMessage<PowerShellWorkItemMessage>): boolean {\r\n let changed = false;\r\n const now = Date.now();\r\n if (PowerShellNotification.hasError(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Error/{1}'.format(this.id, JSON.stringify(item.message.errors))\r\n });\r\n if (this.updateState(NotificationState.Error)) {\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.endTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n this.object = item.message.errors && MsftSme.first(item.message.errors);\r\n changed = true;\r\n this.updateMessageAndLinkAndTitle(this.workItem);\r\n return !this.isDisabled;\r\n }\r\n\r\n if (PowerShellNotification.hasException(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Exception/{1}'.format(this.id, item.message.exception)\r\n });\r\n if (this.updateState(NotificationState.Error)) {\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.endTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n this.object = { message: item.message.exception };\r\n changed = true;\r\n this.updateMessageAndLinkAndTitle(this.workItem);\r\n return !this.isDisabled;\r\n }\r\n\r\n if (PowerShellNotification.hasProgress(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Progress/{1}'.format(this.id, JSON.stringify(item.message.progress))\r\n });\r\n if (this.updateState(NotificationState.InProgress)) {\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n this.object = item.message.progress && MsftSme.last(item.message.progress);\r\n if (this.object && this.object.hasOwnProperty('percent')) {\r\n this.progressPercent = this.object && this.object.percent;\r\n }\r\n\r\n if ((this.progressPercent == null || this.progressPercent < 0)\r\n && this.workItem.progressMessage && this.workItem.progressMessage.indexOf('{{percent}}') >= 0) {\r\n return false;\r\n }\r\n\r\n changed = true;\r\n }\r\n\r\n if (PowerShellNotification.hasData(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Data/{1}'.format(this.id, JSON.stringify(item.message.results))\r\n });\r\n this.object = item.message.results && MsftSme.last(item.message.results);\r\n changed = true;\r\n }\r\n\r\n if (PowerShellNotification.hasCompleted(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Completed'.format(this.id)\r\n });\r\n if (this.updateState(NotificationState.Success)) {\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.endTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n changed = true;\r\n }\r\n\r\n this.updateMessageAndLinkAndTitle(this.workItem);\r\n return !this.isDisabled && changed;\r\n }\r\n\r\n /**\r\n * Update the notification by instant notification message from the client.\r\n *\r\n * @param client the instant notification object.\r\n * @param boolean the changed status.\r\n */\r\n public updateFromClient(client: RpcNotification): boolean {\r\n let changed = false;\r\n const title = client.title;\r\n if (this.title !== title) {\r\n changed = true;\r\n this.title = title;\r\n }\r\n\r\n if (this.description !== client.description) {\r\n changed = true;\r\n this.description = client.description;\r\n }\r\n\r\n if (this.updateState(client.state)) {\r\n const now = Date.now();\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.getGlobalizedTimestamp(now);\r\n changed = true;\r\n if (this.state !== NotificationState.InProgress) {\r\n this.endTimestamp = this.changedTimestamp;\r\n }\r\n }\r\n\r\n const link = this.formatLink(client.link, client.linkType);\r\n if (this.link !== link) {\r\n changed = true;\r\n this.link = link;\r\n this.linkType = client.linkType;\r\n }\r\n\r\n if (this.message !== client.message) {\r\n changed = true;\r\n this.message = client.message;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * Gets the module display name.\r\n */\r\n private getModuleDisplayName(iFrameService: IFrameService, sourceName: string, sourceSubName: string): string {\r\n const activeIFrame = iFrameService ? iFrameService.getActiveToolIFrameData() : null;\r\n if (activeIFrame && activeIFrame.entryPoint) {\r\n const entryPoint = activeIFrame.entryPoint;\r\n this.entryPointName = entryPoint.name;\r\n\r\n if (entryPoint.parentModule) {\r\n this.moduleName = entryPoint.parentModule.name;\r\n }\r\n } else {\r\n // fallback see if we can get any info from RPC\r\n this.moduleName = sourceName;\r\n if (sourceSubName) {\r\n this.entryPointName = MsftSme.first(sourceSubName.split('#'));\r\n }\r\n }\r\n\r\n const environment = MsftSme.self().Environment;\r\n\r\n // if moduleName === environment.name then the source is Shell. Return null to use generic module name\r\n if (this.moduleName && this.moduleName !== environment.name) {\r\n const module: EnvironmentModule = MsftSme.find(\r\n <EnvironmentModule[]>environment.modules,\r\n value => value.name === this.moduleName);\r\n if (module) {\r\n if (this.entryPointName) {\r\n const entryPoint = MsftSme.find(module.entryPoints, ep => ep.name === this.entryPointName);\r\n if (entryPoint) {\r\n return entryPoint.displayName;\r\n }\r\n }\r\n\r\n return module.displayName;\r\n }\r\n\r\n return this.moduleName;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Update the state.\r\n *\r\n * @param state the new state.\r\n * @return boolean the changed state.\r\n */\r\n private updateState(state: NotificationState): boolean {\r\n if (this.state !== state) {\r\n this.state = state;\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private initializeFromWorkItem(item: RpcWorkItem, iFrameService: IFrameService): void {\r\n this.nodeName = item.nodeName;\r\n this.moduleDisplayName = this.getModuleDisplayName(iFrameService, item.sourceName, item.sourceSubName);\r\n this.startTimestamp = this.getGlobalizedTimestamp(item.timestamp);\r\n this.changedTimestamp = this.getGlobalizedTimestamp(item.timestamp);\r\n this.changedTimestampValue = item.timestamp;\r\n this.description = item.description;\r\n this.typeId = item.typeId;\r\n this.updateMessageAndLinkAndTitle(item);\r\n }\r\n\r\n private updateMessageAndLinkAndTitle(item: RpcWorkItem): void {\r\n let template: string;\r\n this.isDisabled = !this.isFromRecover && item.disableAllNotifications;\r\n switch (this.state) {\r\n case NotificationState.Submitted:\r\n this.title = item.inProgressTitle || item.title;\r\n template = item.submittedMessage;\r\n this.link = this.formatLink(null);\r\n break;\r\n case NotificationState.Started:\r\n this.title = item.inProgressTitle || item.title;\r\n template = item.startedMessage;\r\n this.link = this.formatLink(null);\r\n break;\r\n case NotificationState.Error:\r\n this.title = item.errorTitle || item.title;\r\n this.isDisabled = !this.isFromRecover && item.disableErrorNotification;\r\n this.endTimestamp = this.getGlobalizedTimestamp(item.timestamp);\r\n template = item.errorMessage;\r\n this.link = this.formatLink(item.errorLink, item.errorLinkType);\r\n this.linkType = item.errorLinkType;\r\n this.showLinkInAlert = true;\r\n this.moduleDisplayName = item.errorLinkText || this.moduleDisplayName;\r\n break;\r\n case NotificationState.InProgress:\r\n this.title = item.inProgressTitle || item.title;\r\n template = item.progressMessage;\r\n this.link = this.formatLink(null);\r\n break;\r\n case NotificationState.Success:\r\n this.title = item.successTitle || item.title;\r\n this.endTimestamp = this.getGlobalizedTimestamp(item.timestamp);\r\n template = item.successMessage;\r\n this.link = this.formatLink(item.successLink, item.successLinkType);\r\n this.linkType = item.successLinkType;\r\n this.moduleDisplayName = item.successLinkText || this.moduleDisplayName;\r\n this.showLinkInAlert = true;\r\n break;\r\n default:\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.NotificationUnsupportedState.message;\r\n throw new Error(message);\r\n }\r\n\r\n this.message = this.formatMessage(template);\r\n }\r\n\r\n private initializeFromInstant(client: RpcNotification, iFrameService: IFrameService): void {\r\n this.nodeName = client.nodeName;\r\n this.moduleDisplayName = client.linkText ?\r\n client.linkText\r\n : this.getModuleDisplayName(iFrameService, client.sourceName, client.sourceSubName);\r\n this.startTimestamp = this.getGlobalizedTimestamp(client.timestamp);\r\n this.changedTimestamp = this.getGlobalizedTimestamp(client.timestamp);\r\n this.changedTimestampValue = client.timestamp;\r\n this.title = client.title;\r\n this.description = client.description;\r\n this.state = client.state;\r\n this.link = this.formatLink(client.link, client.linkType);\r\n this.linkType = client.linkType;\r\n this.message = client.message;\r\n if (this.state !== NotificationState.Started && this.state !== NotificationState.InProgress) {\r\n this.endTimestamp = this.getGlobalizedTimestamp(client.timestamp);\r\n }\r\n }\r\n\r\n private getGlobalizedTimestamp(timestamp: number): string {\r\n return Globalization.timeOnly(new Date(timestamp));\r\n }\r\n\r\n private formatLink(link: string, linkType?: NotificationLinkType): string {\r\n // tslint:disable-next-line:max-line-length\r\n // href example:\r\n // tslint:disable-next-line:max-line-length\r\n // \"http://localhost:4400/apps/msft.sme.server-manager!servers/tools/msft.sme.module-seed!main?connection=sme-full1.redmond.corp.microsoft.com\"\r\n\r\n if (linkType === NotificationLinkType.Absolute) {\r\n return link;\r\n }\r\n\r\n // null linkType behaves like NotificationLinkType.RelativeToTool\r\n const pathname = linkType === NotificationLinkType.RelativeToRoot ?\r\n '/'\r\n : this.locationPathname || this.workItem && this.workItem.locationPathname;\r\n\r\n if (link && pathname) {\r\n this.showLinkInAlert = true;\r\n return MsftSme.trimEnd(pathname, '/') + '/' + MsftSme.trimStart(link, '/');\r\n }\r\n\r\n this.showLinkInAlert = false;\r\n return pathname;\r\n }\r\n\r\n private formatMessage(template: string): string {\r\n const parameters = this.findParameters(template);\r\n const message = this.replaceParameters(template, parameters);\r\n return message;\r\n }\r\n\r\n private findParameters(template: string): string[] {\r\n const results: string[] = [];\r\n if (!template) {\r\n return results;\r\n }\r\n\r\n const segments = template.split('{{');\r\n for (const seg of segments) {\r\n const index = seg.indexOf('}}');\r\n if (index > 0) {\r\n results.push(seg.substr(0, index));\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n private replaceParameters(message: string, parameters: string[]): string {\r\n for (const param of parameters) {\r\n if (param === 'percent') {\r\n if (typeof this.progressPercent === 'number') {\r\n message = message.replaceAll('{{percent}}', '' + this.progressPercent);\r\n }\r\n } else if (param === 'objectName') {\r\n if (this.workItem && this.workItem.objectName) {\r\n message = message.replaceAll('{{objectName}}', this.workItem.objectName);\r\n }\r\n } else {\r\n if (this.object) {\r\n const segments = param.split('.');\r\n let target = this.object;\r\n for (const seg of segments) {\r\n if (target[seg]) {\r\n target = target[seg];\r\n } else {\r\n target = null;\r\n break;\r\n }\r\n }\r\n\r\n if (target) {\r\n message = message.replaceAll('{{' + param + '}}', '' + target);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return message;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/notification/notification.ts"],"names":[],"mappings":"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","file":"notification.js","sourcesContent":["import { Globalization } from '../data/globalization';\r\nimport { LogLevel } from '../diagnostics/log-level';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { Strings } from '../generated/strings';\r\nimport { EnvironmentModule } from '../manifest/environment-modules';\r\nimport { RpcNotification } from '../rpc/notification/rpc-notification-model';\r\nimport { RpcWorkItem } from '../rpc/work-item/rpc-work-item-model';\r\nimport { NotificationLinkType } from './notification-link-type';\r\nimport { IFrameService } from './notification-manager';\r\nimport { NotificationState } from './notification-state';\r\nimport { PowerShellNotification, PowerShellWorkItemMessage } from './powershell-notification';\r\nimport { SocketMessage } from './socket-signalr';\r\nimport { RecoveredWorkItem } from './work-item-request';\r\n\r\n/**\r\n * Notification changed event type.\r\n */\r\nexport enum NotificationChangeEvent {\r\n Initialized,\r\n InitializationFailed,\r\n Add,\r\n Remove,\r\n Change\r\n}\r\n\r\n/**\r\n * Notification changed event packet.\r\n */\r\nexport interface NotificationEvent {\r\n changeEvent: NotificationChangeEvent;\r\n notification?: Notification;\r\n}\r\n\r\n/**\r\n * Internal notification object converted from ClientNotification object.\r\n * Contains data to track notifications.\r\n */\r\nexport class Notification {\r\n private strings: Strings = MsftSme.getStrings<Strings>();\r\n\r\n /**\r\n * Work item passed from RPC or client on shell.\r\n */\r\n private workItem: RpcWorkItem;\r\n\r\n /**\r\n * The type ID of work item.\r\n */\r\n public typeId: string;\r\n\r\n /**\r\n * The node name.\r\n */\r\n public nodeName: string;\r\n\r\n /**\r\n * The module name.\r\n */\r\n public moduleName: string;\r\n\r\n /**\r\n * The entry point name within the module\r\n */\r\n public entryPointName: string;\r\n\r\n /**\r\n * The module display name.\r\n */\r\n public moduleDisplayName: string;\r\n\r\n /**\r\n * Object included last response.\r\n */\r\n public object: any;\r\n\r\n /**\r\n * The state of notification.\r\n */\r\n public state: NotificationState;\r\n\r\n /**\r\n * The title of work item to display user. (localized)\r\n */\r\n public title: string;\r\n\r\n /**\r\n * The description of work item to display user. (localized)\r\n */\r\n public description: string;\r\n\r\n /**\r\n * The message. (localized)\r\n */\r\n public message: string;\r\n\r\n /**\r\n * Possible solution message to address error. (localized)\r\n */\r\n public solutionMessage: string;\r\n\r\n /**\r\n * True if the notification was created from recover, updates from messages should be taken\r\n */\r\n public isFromRecover = false;\r\n\r\n /**\r\n * True if the notification is disabled and should not be shown to the user\r\n */\r\n public isDisabled = false;\r\n\r\n /**\r\n * The start timestamp as a formatted globalized string\r\n */\r\n public startTimestamp: string;\r\n\r\n /**\r\n * The last changed timestamp as a formatted globalized string\r\n */\r\n public changedTimestamp: string;\r\n\r\n /**\r\n * The last changed timestamp as a number\r\n */\r\n public changedTimestampValue: number;\r\n\r\n /**\r\n * The end timestamp as a formatted globalized string\r\n */\r\n public endTimestamp: string;\r\n\r\n /**\r\n * The progress percent.\r\n */\r\n public progressPercent: number;\r\n\r\n /**\r\n * The success link to navigate to the object view. (optional)\r\n * At default, it brings to the home page of the module.\r\n */\r\n public link: string;\r\n\r\n /**\r\n * the notification link type of the link\r\n */\r\n public linkType: NotificationLinkType;\r\n\r\n /**\r\n * True if we should show the link in the notification's alert\r\n * We will show the link if there is a custom link or it is a long running request\r\n */\r\n public showLinkInAlert = false;\r\n\r\n /**\r\n * Marked it's no longer display to include list of notifications.\r\n */\r\n public dismissed = false;\r\n\r\n /**\r\n * The parent URI window.location.pathname.\r\n */\r\n public locationPathname: string;\r\n\r\n /**\r\n * The parent URI window.location.search\r\n */\r\n public locationSearch: string;\r\n\r\n /**\r\n *\r\n * Tracks if the notification has been read.\r\n */\r\n public isUnread = true;\r\n\r\n /**\r\n * Create notification from WorkItem.\r\n *\r\n * @param id the notification ID.\r\n * @param workItem the RPC work item.\r\n * @param state the initial state.\r\n * @param object the object from query result.\r\n * @return notification the notification object.\r\n */\r\n public static createFromWorkItem(\r\n id: string, workItem: RpcWorkItem, state: NotificationState, iFrameService: IFrameService, object?: any): Notification {\r\n const notification = new Notification(id);\r\n notification.workItem = workItem;\r\n\r\n notification.state = state;\r\n notification.object = object;\r\n notification.initializeFromWorkItem(workItem, iFrameService);\r\n return notification;\r\n }\r\n\r\n /**\r\n * Create notification from recovered work item.\r\n *\r\n * @param recoveredWorkItem the recovered work item.\r\n * @return notification the notification object.\r\n */\r\n public static createFromRecover(recoveredWorkItem: RecoveredWorkItem, iFrameService: IFrameService): Notification {\r\n const notification = new Notification(recoveredWorkItem.id);\r\n notification.workItem = recoveredWorkItem.metadata;\r\n notification.isFromRecover = true;\r\n\r\n if (recoveredWorkItem.failed) {\r\n notification.state = NotificationState.Error;\r\n notification.object = {\r\n errorType: 'WorkItemRecover',\r\n message: recoveredWorkItem.errorMessage\r\n };\r\n } else {\r\n notification.state = NotificationState.InProgress;\r\n notification.object = {};\r\n }\r\n\r\n notification.initializeFromWorkItem(recoveredWorkItem.metadata, iFrameService);\r\n return notification;\r\n }\r\n\r\n /**\r\n * Create notification from instant request.\r\n *\r\n * @param client the RPC notication request.\r\n * @return notification the notification object.\r\n */\r\n public static createFromClient(client: RpcNotification, iFrameService: IFrameService): Notification {\r\n const notification = new Notification(client.id);\r\n notification.locationPathname = window.location.pathname;\r\n notification.locationSearch = window.location.search;\r\n notification.initializeFromInstant(client, iFrameService);\r\n return notification;\r\n }\r\n\r\n /**\r\n * Initializes a new instance of the Notification class.\r\n *\r\n * @param id the notification ID.\r\n */\r\n constructor(public id: string) { }\r\n\r\n /**\r\n * Update a notification by work item from RPC.\r\n * @param id the notification id.\r\n * @param workItem the work item.\r\n * @param state the state of the notification.\r\n * @param object the object from query result.\r\n */\r\n public updateFromWorkItem(id: string, workItem: RpcWorkItem, state: NotificationState, object?: any) {\r\n let changed = false;\r\n\r\n if (this.updateState(state)) {\r\n changed = true;\r\n const now = Date.now();\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.endTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n if (this.object !== object) {\r\n changed = true;\r\n this.object = object;\r\n }\r\n\r\n this.updateMessageAndLinkAndTitle(workItem);\r\n return !this.isDisabled && changed;\r\n }\r\n\r\n /**\r\n * Update the notification by socket message from the gateway.\r\n *\r\n * @param item the socket message.\r\n * @return boolean the changed status.\r\n */\r\n public updateFromMessage(item: SocketMessage<PowerShellWorkItemMessage>): boolean {\r\n let changed = false;\r\n const now = Date.now();\r\n if (PowerShellNotification.hasError(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Error/{1}'.format(this.id, JSON.stringify(item.message.errors))\r\n });\r\n if (this.updateState(NotificationState.Error)) {\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.endTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n this.object = item.message.errors && MsftSme.first(item.message.errors);\r\n changed = true;\r\n this.updateMessageAndLinkAndTitle(this.workItem);\r\n return !this.isDisabled;\r\n }\r\n\r\n if (PowerShellNotification.hasException(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Exception/{1}'.format(this.id, item.message.exception)\r\n });\r\n if (this.updateState(NotificationState.Error)) {\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.endTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n this.object = { message: item.message.exception };\r\n changed = true;\r\n this.updateMessageAndLinkAndTitle(this.workItem);\r\n return !this.isDisabled;\r\n }\r\n\r\n if (PowerShellNotification.hasProgress(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Progress/{1}'.format(this.id, JSON.stringify(item.message.progress))\r\n });\r\n if (this.updateState(NotificationState.InProgress)) {\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n this.object = item.message.progress && MsftSme.last(item.message.progress);\r\n if (this.object && this.object.hasOwnProperty('percent')) {\r\n this.progressPercent = this.object && this.object.percent;\r\n }\r\n\r\n if ((this.progressPercent == null || this.progressPercent < 0)\r\n && this.workItem.progressMessage && this.workItem.progressMessage.indexOf('{{percent}}') >= 0) {\r\n return false;\r\n }\r\n\r\n changed = true;\r\n }\r\n\r\n if (PowerShellNotification.hasData(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Data/{1}'.format(this.id, JSON.stringify(item.message.results))\r\n });\r\n this.object = item.message.results && MsftSme.last(item.message.results);\r\n changed = true;\r\n }\r\n\r\n if (PowerShellNotification.hasCompleted(item)) {\r\n Logging.log({\r\n source: 'Notification',\r\n level: LogLevel.Debug,\r\n message: '{0}/Completed'.format(this.id)\r\n });\r\n if (this.updateState(NotificationState.Success)) {\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.endTimestamp = this.getGlobalizedTimestamp(now);\r\n }\r\n\r\n changed = true;\r\n }\r\n\r\n this.updateMessageAndLinkAndTitle(this.workItem);\r\n return !this.isDisabled && changed;\r\n }\r\n\r\n /**\r\n * Update the notification by instant notification message from the client.\r\n *\r\n * @param client the instant notification object.\r\n * @param boolean the changed status.\r\n */\r\n public updateFromClient(client: RpcNotification): boolean {\r\n let changed = false;\r\n const title = client.title;\r\n if (this.title !== title) {\r\n changed = true;\r\n this.title = title;\r\n }\r\n\r\n if (this.description !== client.description) {\r\n changed = true;\r\n this.description = client.description;\r\n }\r\n\r\n if (this.updateState(client.state)) {\r\n const now = Date.now();\r\n this.changedTimestampValue = now;\r\n this.changedTimestamp = this.getGlobalizedTimestamp(now);\r\n changed = true;\r\n if (this.state !== NotificationState.InProgress) {\r\n this.endTimestamp = this.changedTimestamp;\r\n }\r\n }\r\n\r\n const link = this.formatLink(client.link, client.linkType);\r\n if (this.link !== link) {\r\n changed = true;\r\n this.link = link;\r\n this.linkType = client.linkType;\r\n }\r\n\r\n if (this.message !== client.message) {\r\n changed = true;\r\n this.message = client.message;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * Gets the module display name.\r\n */\r\n private getModuleDisplayName(iFrameService: IFrameService, sourceName: string, sourceSubName: string): string {\r\n const activeIFrame = iFrameService ? iFrameService.getActiveToolIFrameData() : null;\r\n if (activeIFrame && activeIFrame.entryPoint) {\r\n const entryPoint = activeIFrame.entryPoint;\r\n this.entryPointName = entryPoint.name;\r\n\r\n if (entryPoint.parentModule) {\r\n this.moduleName = entryPoint.parentModule.name;\r\n }\r\n } else {\r\n // fallback see if we can get any info from RPC\r\n this.moduleName = sourceName;\r\n if (sourceSubName) {\r\n this.entryPointName = MsftSme.first(sourceSubName.split('#'));\r\n }\r\n }\r\n\r\n const environment = MsftSme.self().Environment;\r\n\r\n // if moduleName === environment.name then the source is Shell. Return null to use generic module name\r\n if (this.moduleName && this.moduleName !== environment.name) {\r\n const module: EnvironmentModule = MsftSme.find(\r\n <EnvironmentModule[]>environment.modules,\r\n value => value.name === this.moduleName);\r\n if (module) {\r\n if (this.entryPointName) {\r\n const entryPoint = MsftSme.find(module.entryPoints, ep => ep.name === this.entryPointName);\r\n if (entryPoint) {\r\n return entryPoint.displayName;\r\n }\r\n }\r\n\r\n return module.displayName;\r\n }\r\n\r\n return this.moduleName;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Update the state.\r\n *\r\n * @param state the new state.\r\n * @return boolean the changed state.\r\n */\r\n private updateState(state: NotificationState): boolean {\r\n if (this.state !== state) {\r\n this.state = state;\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private initializeFromWorkItem(item: RpcWorkItem, iFrameService: IFrameService): void {\r\n this.nodeName = item.nodeName;\r\n this.moduleDisplayName = this.getModuleDisplayName(iFrameService, item.sourceName, item.sourceSubName);\r\n this.startTimestamp = this.getGlobalizedTimestamp(item.timestamp);\r\n this.changedTimestamp = this.getGlobalizedTimestamp(item.timestamp);\r\n this.changedTimestampValue = item.timestamp;\r\n this.description = item.description;\r\n this.typeId = item.typeId;\r\n this.updateMessageAndLinkAndTitle(item);\r\n }\r\n\r\n private updateMessageAndLinkAndTitle(item: RpcWorkItem): void {\r\n let template: string;\r\n this.isDisabled = !this.isFromRecover && item.disableAllNotifications;\r\n switch (this.state) {\r\n case NotificationState.Submitted:\r\n this.title = item.inProgressTitle || item.title;\r\n template = item.submittedMessage;\r\n this.link = this.formatLink(null);\r\n break;\r\n case NotificationState.Started:\r\n this.title = item.inProgressTitle || item.title;\r\n template = item.startedMessage;\r\n this.link = this.formatLink(null);\r\n break;\r\n case NotificationState.Error:\r\n this.title = item.errorTitle || item.title;\r\n this.isDisabled = !this.isFromRecover && item.disableErrorNotification;\r\n this.endTimestamp = this.getGlobalizedTimestamp(item.timestamp);\r\n template = item.errorMessage;\r\n this.link = this.formatLink(item.errorLink, item.errorLinkType);\r\n this.linkType = item.errorLinkType;\r\n this.showLinkInAlert = true;\r\n this.moduleDisplayName = item.errorLinkText || this.moduleDisplayName;\r\n break;\r\n case NotificationState.InProgress:\r\n this.title = item.inProgressTitle || item.title;\r\n template = item.progressMessage;\r\n this.link = this.formatLink(null);\r\n break;\r\n case NotificationState.Success:\r\n this.title = item.successTitle || item.title;\r\n this.endTimestamp = this.getGlobalizedTimestamp(item.timestamp);\r\n template = item.successMessage;\r\n this.link = this.formatLink(item.successLink, item.successLinkType);\r\n this.linkType = item.successLinkType;\r\n this.moduleDisplayName = item.successLinkText || this.moduleDisplayName;\r\n this.showLinkInAlert = true;\r\n break;\r\n default:\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.NotificationUnsupportedState.message;\r\n throw new Error(message);\r\n }\r\n\r\n this.message = this.formatMessage(template);\r\n }\r\n\r\n private initializeFromInstant(client: RpcNotification, iFrameService: IFrameService): void {\r\n this.nodeName = client.nodeName;\r\n this.moduleDisplayName = client.linkText ?\r\n client.linkText\r\n : this.getModuleDisplayName(iFrameService, client.sourceName, client.sourceSubName);\r\n this.startTimestamp = this.getGlobalizedTimestamp(client.timestamp);\r\n this.changedTimestamp = this.getGlobalizedTimestamp(client.timestamp);\r\n this.changedTimestampValue = client.timestamp;\r\n this.title = client.title;\r\n this.description = client.description;\r\n this.state = client.state;\r\n this.link = this.formatLink(client.link, client.linkType);\r\n this.linkType = client.linkType;\r\n this.message = client.message;\r\n this.solutionMessage = client.solutionMessage;\r\n if (this.state !== NotificationState.Started && this.state !== NotificationState.InProgress) {\r\n this.endTimestamp = this.getGlobalizedTimestamp(client.timestamp);\r\n }\r\n }\r\n\r\n private getGlobalizedTimestamp(timestamp: number): string {\r\n return Globalization.timeOnly(new Date(timestamp));\r\n }\r\n\r\n private formatLink(link: string, linkType?: NotificationLinkType): string {\r\n // tslint:disable-next-line:max-line-length\r\n // href example:\r\n // tslint:disable-next-line:max-line-length\r\n // \"http://localhost:4400/apps/msft.sme.server-manager!servers/tools/msft.sme.module-seed!main?connection=sme-full1.redmond.corp.microsoft.com\"\r\n\r\n if (linkType === NotificationLinkType.Absolute) {\r\n return link;\r\n }\r\n\r\n // null linkType behaves like NotificationLinkType.RelativeToTool\r\n const pathname = linkType === NotificationLinkType.RelativeToRoot ?\r\n '/'\r\n : this.locationPathname || this.workItem && this.workItem.locationPathname;\r\n\r\n if (link && pathname) {\r\n this.showLinkInAlert = true;\r\n return MsftSme.trimEnd(pathname, '/') + '/' + MsftSme.trimStart(link, '/');\r\n }\r\n\r\n this.showLinkInAlert = false;\r\n return pathname;\r\n }\r\n\r\n private formatMessage(template: string): string {\r\n const parameters = this.findParameters(template);\r\n const message = this.replaceParameters(template, parameters);\r\n return message;\r\n }\r\n\r\n private findParameters(template: string): string[] {\r\n const results: string[] = [];\r\n if (!template) {\r\n return results;\r\n }\r\n\r\n const segments = template.split('{{');\r\n for (const seg of segments) {\r\n const index = seg.indexOf('}}');\r\n if (index > 0) {\r\n results.push(seg.substr(0, index));\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n private replaceParameters(message: string, parameters: string[]): string {\r\n for (const param of parameters) {\r\n if (param === 'percent') {\r\n if (typeof this.progressPercent === 'number') {\r\n message = message.replaceAll('{{percent}}', '' + this.progressPercent);\r\n }\r\n } else if (param === 'objectName') {\r\n if (this.workItem && this.workItem.objectName) {\r\n message = message.replaceAll('{{objectName}}', this.workItem.objectName);\r\n }\r\n } else {\r\n if (this.object) {\r\n const segments = param.split('.');\r\n let target = this.object;\r\n for (const seg of segments) {\r\n if (target[seg]) {\r\n target = target[seg];\r\n } else {\r\n target = null;\r\n break;\r\n }\r\n }\r\n\r\n if (target) {\r\n message = message.replaceAll('{{' + param + '}}', '' + target);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return message;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/core/rpc/credssp/rpc-credssp-model.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,oBAAoB;;AACf,4BAAO,GAAG,gBAAgB,CAAC;AAC3B,4BAAO,GAAG,OAAO,CAAC;AAGpC;;GAEG;AACH,MAAM,OAAO,qBAAqB;;AAChB,6BAAO,GAAG,SAAS,CAAC;AACpB,6BAAO,GAAG,OAAO,CAAC;AAGpC;;GAEG;AACH,MAAM,CAAN,IAAY,uBAgCX;AAhCD,WAAY,uBAAuB;IAC/B;;OAEG;IACH,mGAAuB,CAAA;IAEvB;;OAEG;IACH,qGAAwB,CAAA;IAExB;;OAEG;IACH,6FAAoB,CAAA;IAEpB;;OAEG;IACH,+FAAqB,CAAA;IAErB;;;OAGG;IACH,6FAAoB,CAAA;IAEpB;;;OAGG;IACH,mFAAe,CAAA;AACnB,CAAC,EAhCW,uBAAuB,KAAvB,uBAAuB,QAgClC","file":"rpc-credssp-model.js","sourcesContent":["import { RpcBaseData } from '../rpc-base';\r\n\r\n/**\r\n * CredSSP request Rpc call name and version.\r\n */\r\nexport class RpcCredSspRequestKey {\r\n public static command = 'CredSspRequest';\r\n public static version = '0.1.0';\r\n}\r\n\r\n/**\r\n * CredSSP response Rpc call name and version\r\n */\r\nexport class RpcCredSspResponseKey {\r\n public static command = 'CredSsp';\r\n public static version = '0.1.0';\r\n}\r\n\r\n/**\r\n * Identifies the CredSSP operation type to preform\r\n */\r\nexport enum RpcCredSSPOperationType {\r\n /**\r\n * Enable CredSSP Server role on the managed server.\r\n */\r\n EnableManagedServer = 0,\r\n\r\n /**\r\n * Disable CredSSP Server role on the managed server.\r\n */\r\n DisableManagedServer = 1,\r\n\r\n /**\r\n * Enable CredSSP client role on the gateway and delegate to the list ot servers.\r\n */\r\n EnableClientRole = 2,\r\n\r\n /**\r\n * Disable CredSSP client role on the gateway and remove all delegated servers.\r\n */\r\n DisableClientRole = 3,\r\n\r\n /**\r\n * Enable CredSSP Server role on the managed server, and enable the gateway to\r\n * delegate to the managed server.\r\n */\r\n EnableDelegation = 4,\r\n\r\n /**\r\n * Test that CredSSP connection from gateway to server(s) is enabled. To function as verification mechanism\r\n * that CredSSP is bound to work.\r\n */\r\n TestCredSSP = 5\r\n}\r\n\r\n/**\r\n * Explicit credentials i.e username andd password\r\n */\r\nexport interface Credentials {\r\n username: string;\r\n password: string;\r\n}\r\n\r\n/**\r\n * CredSSP Manager operation/action RPC message.\r\n */\r\nexport interface RpcCredSSPOperation extends RpcBaseData {\r\n /**\r\n * Request specific Id to track completion.\r\n */\r\n requestId: string;\r\n\r\n /**\r\n * Type of CredSSP operation to perform\r\n */\r\n operation: RpcCredSSPOperationType;\r\n\r\n /**\r\n * @deprecated\r\n * The contextual scenario title to be used when showing notifications.\r\n */\r\n notificationTitle: string;\r\n\r\n /**\r\n * The server names to use in this request. Can be a single server for role server\r\n * or a list of servers for role client.\r\n */\r\n serverNames: string[];\r\n\r\n /***\r\n * Authentication options, need the username and password here\r\n */\r\n credentials?: Credentials;\r\n\r\n /**\r\n * @deprecated\r\n * Optional notification Id to be used when showing notifications. This will allow notifications\r\n * from the caller and from CredSSP to be merged in the notification center.\r\n */\r\n notificationId?: string;\r\n}\r\n\r\n/**\r\n * CredSSP Manager operation/action RPC message result.\r\n */\r\nexport interface RpcCredSSPOperationResult {\r\n /**\r\n * Request specific Id to track completion.\r\n */\r\n requestId: string;\r\n\r\n /**\r\n * Did the requested operation succeed or not?\r\n */\r\n succeeded: boolean;\r\n\r\n /**\r\n * Error message if any.\r\n */\r\n error?: string;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/rpc/credssp/rpc-credssp-model.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,oBAAoB;;AACf,4BAAO,GAAG,gBAAgB,CAAC;AAC3B,4BAAO,GAAG,OAAO,CAAC;AAGpC;;GAEG;AACH,MAAM,OAAO,qBAAqB;;AAChB,6BAAO,GAAG,SAAS,CAAC;AACpB,6BAAO,GAAG,OAAO,CAAC;AAGpC;;GAEG;AACH,MAAM,CAAN,IAAY,uBAgCX;AAhCD,WAAY,uBAAuB;IAC/B;;OAEG;IACH,mGAAuB,CAAA;IAEvB;;OAEG;IACH,qGAAwB,CAAA;IAExB;;OAEG;IACH,6FAAoB,CAAA;IAEpB;;OAEG;IACH,+FAAqB,CAAA;IAErB;;;OAGG;IACH,6FAAoB,CAAA;IAEpB;;;OAGG;IACH,mFAAe,CAAA;AACnB,CAAC,EAhCW,uBAAuB,KAAvB,uBAAuB,QAgClC","file":"rpc-credssp-model.js","sourcesContent":["import { RpcBaseData } from '../rpc-base';\r\n\r\n/**\r\n * CredSSP request Rpc call name and version.\r\n */\r\nexport class RpcCredSspRequestKey {\r\n public static command = 'CredSspRequest';\r\n public static version = '0.1.0';\r\n}\r\n\r\n/**\r\n * CredSSP response Rpc call name and version\r\n */\r\nexport class RpcCredSspResponseKey {\r\n public static command = 'CredSsp';\r\n public static version = '0.1.0';\r\n}\r\n\r\n/**\r\n * Identifies the CredSSP operation type to preform\r\n */\r\nexport enum RpcCredSSPOperationType {\r\n /**\r\n * Enable CredSSP Server role on the managed server.\r\n */\r\n EnableManagedServer = 0,\r\n\r\n /**\r\n * Disable CredSSP Server role on the managed server.\r\n */\r\n DisableManagedServer = 1,\r\n\r\n /**\r\n * Enable CredSSP client role on the gateway and delegate to the list ot servers.\r\n */\r\n EnableClientRole = 2,\r\n\r\n /**\r\n * Disable CredSSP client role on the gateway and remove all delegated servers.\r\n */\r\n DisableClientRole = 3,\r\n\r\n /**\r\n * Enable CredSSP Server role on the managed server, and enable the gateway to\r\n * delegate to the managed server.\r\n */\r\n EnableDelegation = 4,\r\n\r\n /**\r\n * Test that CredSSP connection from gateway to server(s) is enabled. To function as verification mechanism\r\n * that CredSSP is bound to work.\r\n */\r\n TestCredSSP = 5\r\n}\r\n\r\n/**\r\n * Explicit credentials i.e username andd password\r\n */\r\nexport interface Credentials {\r\n username: string;\r\n password: string;\r\n}\r\n\r\n/**\r\n * CredSSP Manager operation/action RPC message.\r\n */\r\nexport interface RpcCredSSPOperation extends RpcBaseData {\r\n /**\r\n * Request specific Id to track completion.\r\n */\r\n requestId: string;\r\n\r\n /**\r\n * Type of CredSSP operation to perform\r\n */\r\n operation: RpcCredSSPOperationType;\r\n\r\n /**\r\n * @deprecated\r\n * The contextual scenario title to be used when showing notifications.\r\n */\r\n notificationTitle: string;\r\n\r\n /**\r\n * The server names to use in this request. Can be a single server for role server\r\n * or a list of servers for role client.\r\n */\r\n serverNames: string[];\r\n\r\n /***\r\n * Authentication options, need the username and password here\r\n */\r\n credentials?: Credentials;\r\n\r\n /**\r\n * @deprecated\r\n * Optional notification Id to be used when showing notifications. This will allow notifications\r\n * from the caller and from CredSSP to be merged in the notification center.\r\n */\r\n notificationId?: string;\r\n}\r\n\r\n/**\r\n * CredSSP Manager operation/action RPC message result.\r\n */\r\nexport interface RpcCredSSPOperationResult {\r\n /**\r\n * Request specific Id to track completion.\r\n */\r\n requestId: string;\r\n\r\n /**\r\n * Did the requested operation succeed or not?\r\n */\r\n succeeded: boolean;\r\n\r\n /**\r\n * Error message if any.\r\n */\r\n error?: string;\r\n\r\n /**\r\n * Solution to error if any.\r\n */\r\n solutionMessage?: string;\r\n}\r\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Dom } from '../../dom/dom';
|
|
1
2
|
import { RpcInboundClient } from '../rpc-inbound-client';
|
|
2
3
|
import { RpcDialogType } from './rpc-dialog-model';
|
|
3
4
|
import { RpcDialogKey } from './rpc-dialog-model';
|
|
@@ -33,12 +34,17 @@ export class RpcDialogClient {
|
|
|
33
34
|
* @param id The id of dialog
|
|
34
35
|
*/
|
|
35
36
|
static resumeFocus(id) {
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
RpcDialogClient.dialogOrigins[id].focus();
|
|
39
|
-
delete RpcDialogClient.dialogOrigins[id];
|
|
40
|
-
});
|
|
37
|
+
if (!RpcDialogClient.dialogOrigins[id]) {
|
|
38
|
+
return;
|
|
41
39
|
}
|
|
40
|
+
const element = RpcDialogClient.dialogOrigins[id];
|
|
41
|
+
setTimeout(() => {
|
|
42
|
+
const focusOn = Dom.getFocusOrigin(element);
|
|
43
|
+
if (focusOn) {
|
|
44
|
+
focusOn.focus();
|
|
45
|
+
}
|
|
46
|
+
delete RpcDialogClient.dialogOrigins[id];
|
|
47
|
+
});
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/core/rpc/dialog/rpc-dialog-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/rpc/dialog/rpc-dialog-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAkC,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,eAAe;IAMxB;;;;;OAKG;IACI,MAAM,CAAC,MAAM,CAAC,GAAQ,EAAE,IAAmB;QAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,iBAAiB;eAC1C,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,sBAAsB;eAClD,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,0BAA0B;eACtD,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,gBAAgB,EAAE;YACjD,6CAA6C;YAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAA4B,CAAC;YACrD,IAAI,MAAM,EAAE;gBACR,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;aACzD;SACJ;QAED,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;aAC9E,IAAI,CAAC,CAAC,MAAuB,EAAE,EAAE;YAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK,EAAE;gBACnC,4CAA4C;gBAC5C,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9C;YAED,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,WAAW,CAAC,EAAU;QACjC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;YACpC,OAAO;SACV;QAED,MAAM,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAClD,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,OAAO,GAAgB,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,KAAK,EAAE,CAAC;aACnB;YACD,OAAO,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;;AAnDD;;GAEG;AACY,6BAAa,GAAqC,EAAE,CAAC","file":"rpc-dialog-client.js","sourcesContent":["import { Dom } from '../../dom/dom';\r\nimport { Rpc } from '../rpc';\r\nimport { RpcInboundClient } from '../rpc-inbound-client';\r\nimport { RpcDialogData, RpcDialogResult, RpcDialogType } from './rpc-dialog-model';\r\nimport { RpcDialogKey } from './rpc-dialog-model';\r\n\r\nexport class RpcDialogClient {\r\n /**\r\n * Elements that open a dialog, used for resuming focus\r\n */\r\n private static dialogOrigins: { [index: string]: HTMLElement } = {};\r\n\r\n /**\r\n * The dialog command.\r\n *\r\n * @param data the dialog data object.\r\n * @return Promise<RpcDialogResult> the promise object of dialog result.\r\n */\r\n public static dialog(rpc: Rpc, data: RpcDialogData): Promise<RpcDialogResult> {\r\n if (data.type === RpcDialogType.OpenMessageDialog\r\n || data.type === RpcDialogType.OpenConfirmationDialog\r\n || data.type === RpcDialogType.OpenConfirmationListDialog\r\n || data.type === RpcDialogType.OpenChoiceDialog) {\r\n // open a dialog, store element that opens it\r\n const origin = document.activeElement as HTMLElement;\r\n if (origin) {\r\n RpcDialogClient.dialogOrigins[data.dialogId] = origin;\r\n }\r\n }\r\n\r\n return RpcInboundClient.call(rpc, RpcDialogKey.command, RpcDialogKey.version, data)\r\n .then((result: RpcDialogResult) => {\r\n if (data.type === RpcDialogType.Close) {\r\n // successfully close a dialog, resume focus\r\n RpcDialogClient.resumeFocus(data.dialogId);\r\n }\r\n\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Resume focus back to the original element that shows the dialog.\r\n * @param id The id of dialog\r\n */\r\n private static resumeFocus(id: string): void {\r\n if (!RpcDialogClient.dialogOrigins[id]) {\r\n return;\r\n }\r\n\r\n const element = RpcDialogClient.dialogOrigins[id];\r\n setTimeout(() => {\r\n const focusOn: HTMLElement = Dom.getFocusOrigin(element);\r\n if (focusOn) {\r\n focusOn.focus();\r\n }\r\n delete RpcDialogClient.dialogOrigins[id];\r\n });\r\n }\r\n}\r\n"]}
|
package/core/rpc/rpc.d.ts
CHANGED
|
@@ -211,12 +211,12 @@ export declare class Rpc {
|
|
|
211
211
|
*/
|
|
212
212
|
private createTimerPromise;
|
|
213
213
|
/**
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
* Create promise that does not timeout.
|
|
215
|
+
*
|
|
216
|
+
* @param command the outbound type.
|
|
217
|
+
* @param data the data context.
|
|
218
|
+
* @return Promise<any> the promise.
|
|
219
|
+
*/
|
|
220
220
|
private createPromise;
|
|
221
221
|
/**
|
|
222
222
|
* Process data pushing into next call of subject with deferred data type.
|
package/core/rpc/rpc.js
CHANGED
|
@@ -166,7 +166,7 @@ export class Rpc {
|
|
|
166
166
|
sessionId: self.Init.sessionId,
|
|
167
167
|
modules: self.Environment.modules,
|
|
168
168
|
accessibilityMode: self.Resources.accessibilityMode,
|
|
169
|
-
sessionExpiration:
|
|
169
|
+
sessionExpiration: self.Init.sessionExpiration,
|
|
170
170
|
performanceProfile: MsftSme.getPerformanceProfile(),
|
|
171
171
|
connectivityLevel: self.Init.connectivityLevel,
|
|
172
172
|
consoleDebug: MsftSme.consoleDebug(),
|
|
@@ -418,12 +418,12 @@ export class Rpc {
|
|
|
418
418
|
return deferred.promise;
|
|
419
419
|
}
|
|
420
420
|
/**
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
421
|
+
* Create promise that does not timeout.
|
|
422
|
+
*
|
|
423
|
+
* @param command the outbound type.
|
|
424
|
+
* @param data the data context.
|
|
425
|
+
* @return Promise<any> the promise.
|
|
426
|
+
*/
|
|
427
427
|
createPromise(command, data) {
|
|
428
428
|
const deferred = NativeQ.defer();
|
|
429
429
|
this.deferredCollection[command] = { deferred: deferred, data: data };
|
package/core/rpc/rpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/core/rpc/rpc.ts"],"names":[],"mappings":"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","file":"rpc.js","sourcesContent":["import { Observable, Subject } from 'rxjs';\r\nimport { CoreEnvironment } from '../data/core-environment';\r\nimport { NativeDeferred, NativeQ } from '../data/native-q';\r\nimport { LogLevel } from '../diagnostics/log-level';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { SmeWebTelemetry } from '../diagnostics/sme-web-telemetry';\r\nimport { Strings } from '../generated/strings';\r\nimport { EnvironmentModuleEntryPoint } from '../manifest/environment-modules';\r\nimport {\r\n CommandCallBackType,\r\n RpcActivateDataInternal,\r\n RpcBase,\r\n RpcBaseData,\r\n RpcDeactivateResult,\r\n RpcInboundCommands,\r\n RpcInboundHandlers,\r\n RpcInitData,\r\n RpcInitDataInternal,\r\n RpcInitResult,\r\n RpcMode,\r\n RpcOpenDataInternal,\r\n RpcOpenResult,\r\n RpcOutboundCommands,\r\n RpcOutboundHandlers,\r\n RpcPingData,\r\n RpcPingResult,\r\n RpcShutdownData,\r\n RpcShutdownResult,\r\n RpcType,\r\n rpcVersion\r\n} from './rpc-base';\r\nimport { RpcManager } from './rpc-manager';\r\nimport { RpcOutbound } from './rpc-outbound';\r\nimport { RpcSeek, RpcSeekMode, RpcSeekResult } from './seek/rpc-seek-model';\r\n\r\n/**\r\n * Deferred data object.\r\n */\r\nexport interface DeferredData<TData, TResult> {\r\n deferred: NativeDeferred<TResult>;\r\n data: TData;\r\n}\r\n\r\n/**\r\n * The Rpc class.\r\n */\r\nexport class Rpc {\r\n // RPC timeout 10 seconds.\r\n private static rpcTimeout = 10 * 1000;\r\n\r\n /**\r\n * This subject is updated whenever there's new reported data\r\n */\r\n private rpcSubjects: { [index: string]: Subject<DeferredData<any, any>> };\r\n\r\n /**\r\n * Deferred response collection.\r\n */\r\n private deferredCollection = new Map<RpcOutboundCommands, DeferredData<any, any>>();\r\n\r\n /**\r\n * Active status of rpc by Observable.\r\n */\r\n private stateChangedInternal: Subject<boolean> = new Subject<boolean>();\r\n\r\n /**\r\n * Active status of rpc.\r\n */\r\n private stateActiveInternal = false;\r\n\r\n /**\r\n * Inbound module handlers to process when rpc is called.\r\n * - called from Module to Shell.\r\n */\r\n private rpcInboundHandlers: RpcInboundHandlers = {\r\n FailedHandler: (data: RpcBaseData) => {\r\n return this.processNextForSubject<RpcBaseData, void>(RpcInboundCommands.Failed, data);\r\n },\r\n SeekHandler: (data: RpcSeek) => {\r\n return Promise.resolve(<RpcSeekResult>{ name: data.sourceName, subName: data.sourceSubName });\r\n }\r\n };\r\n\r\n /**\r\n * Outbound shell handlers to process when rpc is called.\r\n * - called from Shell to Module.\r\n * - if code reached a handler, module is not ready yet.\r\n * set timeout for RPC call.\r\n */\r\n private rpcOutboundHandlers: RpcOutboundHandlers = {\r\n InitHandler: (data: RpcInitDataInternal) =>\r\n this.createTimerPromise<RpcInitDataInternal, RpcInitResult>(\r\n RpcOutboundCommands.Init, Rpc.rpcTimeout,\r\n <RpcInitDataInternal>{ locale: data.locale }),\r\n OpenHandler: (rpcOpenData: RpcOpenDataInternal) =>\r\n this.createTimerPromise<RpcOpenDataInternal, RpcOpenResult>(RpcOutboundCommands.Open, Rpc.rpcTimeout, rpcOpenData),\r\n ActivateHandler: (data: RpcActivateDataInternal) =>\r\n this.createTimerPromise<RpcBaseData, void>(RpcOutboundCommands.Activate, Rpc.rpcTimeout, data),\r\n Deactivate2Handler: (data: RpcBaseData) =>\r\n this.createTimerPromise<RpcBaseData, RpcDeactivateResult>(RpcOutboundCommands.Deactivate2, Rpc.rpcTimeout, data),\r\n ShutdownHandler: (data: RpcShutdownData) =>\r\n this.createTimerPromise<RpcShutdownData, RpcShutdownResult>(RpcOutboundCommands.Shutdown, Rpc.rpcTimeout, data),\r\n PingHandler: (data: RpcPingData) => {\r\n this.changeActiveState(true);\r\n return Promise.resolve(<RpcPingResult>{ name: 'pong' });\r\n }\r\n };\r\n\r\n /**\r\n * Rpc manager object.\r\n */\r\n public rpcManager: RpcManager = new RpcManager();\r\n\r\n /**\r\n * Initializes a new instance of the Rpc class.\r\n *\r\n * @param http the Http class instance injected.\r\n */\r\n constructor() {\r\n this.rpcSubjects = {};\r\n const commands = Object.keys(RpcInboundCommands);\r\n commands.forEach((value, index, array) => {\r\n this.rpcSubjects[RpcInboundCommands[value]] = new Subject<any>();\r\n });\r\n }\r\n\r\n /**\r\n * Gets observable to watch the state change.\r\n */\r\n public get stateChanged(): Observable<boolean> {\r\n this.stateChangedInternal.next(this.stateActiveInternal);\r\n return this.stateChangedInternal.asObservable();\r\n }\r\n\r\n /**\r\n * Gets the state of rpc.\r\n */\r\n public get stateActive(): boolean {\r\n return this.stateActiveInternal;\r\n }\r\n\r\n /**\r\n * Gets whether rpc is running on the shell.\r\n */\r\n public get isShell(): boolean {\r\n if (this.rpcManager.rpcChannel == null) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.RpcNotInitialized.message;\r\n throw new Error(message);\r\n }\r\n\r\n return this.rpcManager.rpcChannel.rpcMode === RpcMode.Shell;\r\n }\r\n\r\n /**\r\n * Register inbound command handler.\r\n *\r\n * @param command The command name.\r\n * @param handler The command handler.\r\n */\r\n public registerInboundHandler(command: string, handler: CommandCallBackType): void {\r\n const handlerName = RpcBase.commandToHandlerName(command);\r\n this.rpcInboundHandlers[handlerName] = handler;\r\n this.rpcManager.registerInboundHandler(command, handler);\r\n }\r\n\r\n /**\r\n * Register outbound command handler.\r\n *\r\n * @param command The command name.\r\n * @param handler The command handler.\r\n */\r\n public registerOutboundHandler(command: string, handler: CommandCallBackType): void {\r\n const handlerName = RpcBase.commandToHandlerName(command);\r\n this.rpcOutboundHandlers[handlerName] = handler;\r\n }\r\n\r\n /**\r\n * Initializes Rpc configuration\r\n */\r\n public init(): void {\r\n this.rpcManager.init(this.rpcInboundHandlers, this.rpcOutboundHandlers);\r\n if (this.isShell) {\r\n this.changeActiveState(true);\r\n }\r\n }\r\n\r\n /***************************************************************\r\n * Section for Shell usage.\r\n ***************************************************************/\r\n\r\n /**\r\n * This updates its value every time there's a reported data from the rpc channel\r\n */\r\n public moduleSubjects<T>(commandType: RpcInboundCommands): Observable<DeferredData<T, any>> {\r\n return <Observable<DeferredData<T, any>>>this.rpcSubjects[RpcInboundCommands[commandType]];\r\n }\r\n\r\n /**\r\n * Connect a module with name and iframe.\r\n * - start pinging to iframe to wait for response.\r\n *\r\n * @param name the name of the module.\r\n * @param path the path to open the module the module name.\r\n * @param iframe the iframe window object.\r\n * @param primary the primary window to affect router url.\r\n * @return Promise<string> the promise with subName created for the window.\r\n */\r\n public moduleConnect(name: string, path: string, iframe: Window, primary: boolean): Promise<string> {\r\n return this.rpcManager.connectRpcOutbound(name, path, iframe, primary);\r\n }\r\n\r\n /**\r\n * Init the module.\r\n *\r\n * @param name the name of module.\r\n * @param subName the sub name of rpc channel.\r\n * @param entryPointType the entry point type.\r\n * @return Promise<void> the promise object of init result.\r\n */\r\n public moduleInit(name: string, subName: string, entryPoint: EnvironmentModuleEntryPoint): Promise<RpcInitResult> {\r\n const rpc = this.rpcManager.rpcChannel.getRpc<RpcOutbound>(name, subName, RpcType.Outbound);\r\n const self = MsftSme.self();\r\n const data: RpcInitData = {\r\n entryPointType: entryPoint.entryPointType,\r\n entryPointName: entryPoint.name,\r\n theme: self.Resources.theme,\r\n assets: self.Resources.assets,\r\n moduleAssets: self.Resources.moduleAssets,\r\n locale: self.Resources.localeId,\r\n localeRegional: self.Resources.localeRegionalId,\r\n lib: self.Resources.lib,\r\n sessionId: self.Init.sessionId,\r\n modules: self.Environment.modules,\r\n accessibilityMode: self.Resources.accessibilityMode,\r\n sessionExpiration: MsftSme.getSessionExpiration(),\r\n performanceProfile: MsftSme.getPerformanceProfile(),\r\n connectivityLevel: self.Init.connectivityLevel,\r\n consoleDebug: MsftSme.consoleDebug(),\r\n sideLoad: MsftSme.sideLoad(),\r\n experiments: MsftSme.experiments(),\r\n shellVersion: self.Init.shellVersion\r\n };\r\n return rpc.init(data).then(result => {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Rpc;\r\n // copy the version string of remote module.\r\n if (result && result.version) {\r\n rpc.version = result.version;\r\n Logging.log({\r\n level: LogLevel.Verbose,\r\n message: strings.Version.message.format(rpcVersion, name, rpc.version),\r\n source: 'rpc.moduleInit'\r\n });\r\n } else {\r\n const message = strings.MissingVersion.message.format(name);\r\n Logging.log({\r\n level: LogLevel.Critical,\r\n message,\r\n source: 'rpc.moduleInit'\r\n });\r\n throw new Error(message);\r\n }\r\n\r\n this.changeActiveState(true);\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Open the module by specifying the path and parameters.\r\n *\r\n * @param name the name of module.\r\n * @param subName the sub name of rpc channel.\r\n * @param path the open path.\r\n * @return Promise<RpcOpenResult> the promise object of RpcOpenResult.\r\n */\r\n public moduleOpen(name: string, subName: string, path: string): Promise<RpcOpenResult> {\r\n const rpc = <RpcOutbound>this.rpcManager.rpcChannel.getRpc(name, subName, RpcType.Outbound);\r\n return rpc.open({ path }).then(result => {\r\n this.changeActiveState(true);\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Activate the module to start receiving data.\r\n *\r\n * @param name the module name.\r\n * @param subName the sub name of rpc channel.\r\n * @param primary the primary window to affect router url.\r\n * @param url the inner url to open.\r\n * @return Promise<void> the promise of activation result.\r\n */\r\n public moduleActivate(name: string, subName: string, primary: boolean, url: string): Promise<void> {\r\n const rpc = this.rpcManager.reconnectRpcOutbound(name, subName, primary);\r\n return rpc.activate({ url })\r\n .then(data => {\r\n this.changeActiveState(true);\r\n return data;\r\n });\r\n }\r\n\r\n /**\r\n * Deactivate 2 the module to stop receiving data.\r\n *\r\n * @param name the module name.\r\n * @param subName the sub name of rpc channel.\r\n * @param primary the primary window to affect router url.\r\n * @return Promise<void> the promise of deactivation result.\r\n */\r\n public moduleDeactivate2(name: string, subName: string, primary: boolean): Promise<RpcDeactivateResult> {\r\n this.changeActiveState(false);\r\n const rpc = this.rpcManager.rpcChannel.getRpc<RpcOutbound>(name, subName, RpcType.Outbound);\r\n return rpc.deactivate2({});\r\n }\r\n\r\n /**\r\n * Request to shutdown the module.\r\n *\r\n * @param name the module name.\r\n * @param subName the sub name of rpc channel.\r\n * @param primary the primary window to affect router url.\r\n * @param force the forcible state.\r\n * @return Promise<RpcShutdownResult> the promise object of result.\r\n */\r\n public moduleShutdown(name: string, subName: string, primary: boolean, force: boolean): Promise<RpcShutdownResult> {\r\n const rpc = this.rpcManager.reconnectRpcOutbound(name, subName, primary);\r\n return rpc.shutdown({ force: force });\r\n }\r\n\r\n /**\r\n * Remove the module from the rpc channel.\r\n *\r\n * @param name the module name.\r\n * @param subName the sub name of rpc channel.\r\n */\r\n public moduleRemove(name: string, subName: string): void {\r\n this.rpcManager.removeRpcOutbound(name, subName);\r\n }\r\n\r\n /**\r\n * Get module version string.\r\n *\r\n * @param name the name of module.\r\n * @param subName the sub name of rpc channel.\r\n * @return string the RPC version of module.\r\n */\r\n public moduleVersion(name: string, subName: string): string {\r\n const rpc = <RpcOutbound>this.rpcManager.rpcChannel.getRpc(name, subName, RpcType.Outbound);\r\n return rpc && rpc.version;\r\n }\r\n\r\n /***************************************************************\r\n * Section for Module usage.\r\n ***************************************************************/\r\n\r\n /**\r\n * Register outbound handler. It accepts delay register in case of loading/initialization took a time for module.\r\n *\r\n * @param command the name of RPC Shell command.\r\n * @param handler the handler to handle Shell request.\r\n */\r\n public register(command: string, handler: (data: any) => Promise<any>): void;\r\n\r\n /**\r\n * Register outbound handler. It accepts delay register in case of loading/initialization took a time for module.\r\n *\r\n * @param command the enum ID of RPC Shell command.\r\n * @param handler the handler to handle Shell request.\r\n */\r\n // tslint:disable-next-line:unified-signatures\r\n public register(command: RpcOutboundCommands, handler: (data: any) => Promise<any>): void;\r\n public register(command: RpcOutboundCommands | string, handler: (data: any) => Promise<any>): void {\r\n if (typeof command === 'string') {\r\n const commandName: string = command;\r\n this.rpcManager.rpcInbound.register(commandName, handler);\r\n return;\r\n }\r\n\r\n const deferredData = <DeferredData<any, any>>this.deferredCollection[command];\r\n if (deferredData) {\r\n delete this.deferredCollection[command];\r\n handler(deferredData.data).then(deferredData.deferred.resolve, deferredData.deferred.reject);\r\n return;\r\n }\r\n\r\n if (command === RpcOutboundCommands.Init) {\r\n const modifiedHandler = (data: RpcInitDataInternal) => {\r\n // node context is used before passing request to handler.\r\n this.changeActiveState(true);\r\n const self = MsftSme.self();\r\n self.Init.entryPointType = data.entryPointType;\r\n self.Init.entryPointName = data.entryPointName;\r\n self.Init.sessionId = data.sessionId;\r\n self.Init.sessionExpiration = data.sessionExpiration;\r\n self.Init.performanceProfile = data.performanceProfile;\r\n self.Init.shellVersion = data.shellVersion;\r\n self.Environment.modules = data.modules;\r\n self.Init.connectivityLevel = data.connectivityLevel;\r\n self.Resources.lib = data.lib;\r\n self.Resources.moduleAssets = data.moduleAssets;\r\n\r\n if (!MsftSme.isNullOrUndefined(self.Resources.accessibilityMode)\r\n && !MsftSme.isNullOrUndefined(data.accessibilityMode)\r\n && CoreEnvironment.accessibilityManager) {\r\n self.Resources.accessibilityMode = data.accessibilityMode;\r\n CoreEnvironment.accessibilityManager.changeAccessibilityMode(self.Resources.accessibilityMode);\r\n }\r\n\r\n // ensure that global environment settings persist across origins\r\n if (!MsftSme.isNullOrUndefined(data.consoleDebug) && MsftSme.consoleDebug() !== data.consoleDebug) {\r\n MsftSme.consoleDebug(data.consoleDebug);\r\n }\r\n\r\n if (!MsftSme.isNullOrUndefined(data.sideLoad)) {\r\n const sideLoadKeys = Object.keys(MsftSme.sideLoad() || {});\r\n const dataSideLoadKeys = Object.keys(data.sideLoad || {});\r\n\r\n if (sideLoadKeys.length !== dataSideLoadKeys.length || sideLoadKeys.some(key => !!data.sideLoad[key])) {\r\n MsftSme.sideLoadReset();\r\n dataSideLoadKeys.forEach(k => MsftSme.sideLoad(k));\r\n }\r\n }\r\n\r\n if (!MsftSme.isNullOrUndefined(data.experiments)) {\r\n const experiments = MsftSme.experiments();\r\n if (experiments.length !== data.experiments.length || experiments.some((v, i) => v !== data.experiments[i])) {\r\n MsftSme.experiments(data.experiments);\r\n }\r\n }\r\n\r\n if (CoreEnvironment.assetManager && data.theme && data.assets) {\r\n CoreEnvironment.assetManager.loadAssets(data.theme, data.assets);\r\n }\r\n\r\n for (const item of data.modules) {\r\n // NOTES: the next 'if' block code can be removed only if all extensions adapted newer shell. (after 1.1114.0)\r\n if (!self.Init.shellVersion && item.name === 'msft.sme.shell-extensions') {\r\n // look for shell version if missing from older MSI/ShellUI.\r\n self.Init.shellVersion = item.version;\r\n }\r\n\r\n if (item.name === self.Init.moduleName) {\r\n self.Environment.version = item.version || self.Environment.version;\r\n }\r\n }\r\n\r\n const localeLoader = CoreEnvironment.moduleLoadLocale({ id: data.localeRegional || data.locale, neutral: data.locale });\r\n const passingData = <RpcInitData>{\r\n locale: data.locale,\r\n localeRegional: data.localeRegional,\r\n sessionId: data.sessionId\r\n };\r\n\r\n // update metaTags so sessionId is properly updated in telemetry\r\n SmeWebTelemetry.updateFromRpcInit( {'wac-session-id': data.sessionId, 'wac-extension-version': self.Environment.version });\r\n\r\n return localeLoader\r\n .then(() => this.seekShell(RpcSeekMode.Create))\r\n .then(() => handler(passingData))\r\n .then(() => ({ version: rpcVersion }));\r\n };\r\n this.rpcManager.rpcInbound.register(RpcOutboundCommands[command], modifiedHandler);\r\n } else {\r\n this.rpcManager.rpcInbound.register(RpcOutboundCommands[command], handler);\r\n }\r\n }\r\n\r\n /**\r\n * Module report a failure.\r\n */\r\n public failed(data: any): Promise<void> {\r\n const rpc = this.rpcManager.rpcInbound;\r\n return rpc.failed(data);\r\n }\r\n\r\n /**\r\n * Seek shell frame.\r\n *\r\n * @param Promise<any> the promise object.\r\n */\r\n public seekShell(mode: RpcSeekMode): Promise<RpcSeekResult> {\r\n return this.rpcManager.seekShell(mode);\r\n }\r\n\r\n /**\r\n * Validate existing outbound connection and remove if it doesn't live anymore.\r\n *\r\n * @return number the count of removed outbound.\r\n */\r\n public validate(): number {\r\n let count = 0;\r\n const collection = this.rpcManager.getCurrentRpcOutbound();\r\n collection.forEach((rpc, index, array) => {\r\n if (!this.rpcManager.rpcChannel.validate(rpc)) {\r\n count++;\r\n }\r\n });\r\n\r\n return count;\r\n }\r\n\r\n /**\r\n * Change the active status of rpc.\r\n */\r\n public changeActiveState(state: boolean): void {\r\n this.stateActiveInternal = state;\r\n this.stateChangedInternal.next(state);\r\n }\r\n\r\n /**\r\n * Create auto-failed timer promise.\r\n *\r\n * @param command the outbound command type.\r\n * @param timeoutMs the timeout milliseconds.\r\n * @param data the data context.\r\n * @return Promise<any> the promise.\r\n */\r\n private createTimerPromise<TData, TResult>(command: RpcOutboundCommands, timeoutMs: number, data: TData): Promise<TResult> {\r\n const deferred = NativeQ.defer<TResult>();\r\n this.deferredCollection[command] = <DeferredData<TData, TResult>>{ deferred: deferred, data: data };\r\n setTimeout(\r\n () => {\r\n const deferredData: DeferredData<TData, TResult> = this.deferredCollection[command];\r\n if (deferredData) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.RpcTimeout.message;\r\n deferredData.deferred.reject(message);\r\n delete this.deferredCollection[command];\r\n }\r\n },\r\n timeoutMs);\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Create promise that does not timeout.\r\n *\r\n * @param command the outbound type.\r\n * @param data the data context.\r\n * @return Promise<any> the promise.\r\n */\r\n private createPromise<TData, TResult>(command: RpcOutboundCommands, data: TData): Promise<any> {\r\n const deferred = NativeQ.defer<TResult>();\r\n this.deferredCollection[command] = <DeferredData<TData, TResult>>{ deferred: deferred, data: data };\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Process data pushing into next call of subject with deferred data type.\r\n *\r\n * @param command the inbound command type.\r\n * @param data the rpc data came from a module/iframe.\r\n * @return Promise the promise which receiver must settle within fixed waiting time (10 seconds)\r\n */\r\n private processNextForSubject<TData, TResult>(command: RpcInboundCommands, data: TData): Promise<TResult> {\r\n const subject = this.rpcSubjects[RpcInboundCommands[command]];\r\n if (subject.closed || subject.hasError) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.RpcSubjectClosed.message;\r\n throw new Error(message.format(RpcInboundCommands[command]));\r\n }\r\n\r\n const deferredData = <DeferredData<TData, TResult>>{\r\n data: data,\r\n deferred: NativeQ.defer<TResult>()\r\n };\r\n subject.next(deferredData);\r\n return deferredData.deferred.promise;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/rpc/rpc.ts"],"names":[],"mappings":"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","file":"rpc.js","sourcesContent":["import { Observable, Subject } from 'rxjs';\r\nimport { CoreEnvironment } from '../data/core-environment';\r\nimport { NativeDeferred, NativeQ } from '../data/native-q';\r\nimport { LogLevel } from '../diagnostics/log-level';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { SmeWebTelemetry } from '../diagnostics/sme-web-telemetry';\r\nimport { Strings } from '../generated/strings';\r\nimport { EnvironmentModuleEntryPoint } from '../manifest/environment-modules';\r\nimport {\r\n CommandCallBackType,\r\n RpcActivateDataInternal,\r\n RpcBase,\r\n RpcBaseData,\r\n RpcDeactivateResult,\r\n RpcInboundCommands,\r\n RpcInboundHandlers,\r\n RpcInitData,\r\n RpcInitDataInternal,\r\n RpcInitResult,\r\n RpcMode,\r\n RpcOpenDataInternal,\r\n RpcOpenResult,\r\n RpcOutboundCommands,\r\n RpcOutboundHandlers,\r\n RpcPingData,\r\n RpcPingResult,\r\n RpcShutdownData,\r\n RpcShutdownResult,\r\n RpcType,\r\n rpcVersion\r\n} from './rpc-base';\r\nimport { RpcManager } from './rpc-manager';\r\nimport { RpcOutbound } from './rpc-outbound';\r\nimport { RpcSeek, RpcSeekMode, RpcSeekResult } from './seek/rpc-seek-model';\r\n\r\n/**\r\n * Deferred data object.\r\n */\r\nexport interface DeferredData<TData, TResult> {\r\n deferred: NativeDeferred<TResult>;\r\n data: TData;\r\n}\r\n\r\n/**\r\n * The Rpc class.\r\n */\r\nexport class Rpc {\r\n // RPC timeout 10 seconds.\r\n private static rpcTimeout = 10 * 1000;\r\n\r\n /**\r\n * This subject is updated whenever there's new reported data\r\n */\r\n private rpcSubjects: { [index: string]: Subject<DeferredData<any, any>> };\r\n\r\n /**\r\n * Deferred response collection.\r\n */\r\n private deferredCollection = new Map<RpcOutboundCommands, DeferredData<any, any>>();\r\n\r\n /**\r\n * Active status of rpc by Observable.\r\n */\r\n private stateChangedInternal: Subject<boolean> = new Subject<boolean>();\r\n\r\n /**\r\n * Active status of rpc.\r\n */\r\n private stateActiveInternal = false;\r\n\r\n /**\r\n * Inbound module handlers to process when rpc is called.\r\n * - called from Module to Shell.\r\n */\r\n private rpcInboundHandlers: RpcInboundHandlers = {\r\n FailedHandler: (data: RpcBaseData) => {\r\n return this.processNextForSubject<RpcBaseData, void>(RpcInboundCommands.Failed, data);\r\n },\r\n SeekHandler: (data: RpcSeek) => {\r\n return Promise.resolve(<RpcSeekResult>{ name: data.sourceName, subName: data.sourceSubName });\r\n }\r\n };\r\n\r\n /**\r\n * Outbound shell handlers to process when rpc is called.\r\n * - called from Shell to Module.\r\n * - if code reached a handler, module is not ready yet.\r\n * set timeout for RPC call.\r\n */\r\n private rpcOutboundHandlers: RpcOutboundHandlers = {\r\n InitHandler: (data: RpcInitDataInternal) =>\r\n this.createTimerPromise<RpcInitDataInternal, RpcInitResult>(\r\n RpcOutboundCommands.Init, Rpc.rpcTimeout,\r\n <RpcInitDataInternal>{ locale: data.locale }),\r\n OpenHandler: (rpcOpenData: RpcOpenDataInternal) =>\r\n this.createTimerPromise<RpcOpenDataInternal, RpcOpenResult>(RpcOutboundCommands.Open, Rpc.rpcTimeout, rpcOpenData),\r\n ActivateHandler: (data: RpcActivateDataInternal) =>\r\n this.createTimerPromise<RpcBaseData, void>(RpcOutboundCommands.Activate, Rpc.rpcTimeout, data),\r\n Deactivate2Handler: (data: RpcBaseData) =>\r\n this.createTimerPromise<RpcBaseData, RpcDeactivateResult>(RpcOutboundCommands.Deactivate2, Rpc.rpcTimeout, data),\r\n ShutdownHandler: (data: RpcShutdownData) =>\r\n this.createTimerPromise<RpcShutdownData, RpcShutdownResult>(RpcOutboundCommands.Shutdown, Rpc.rpcTimeout, data),\r\n PingHandler: (data: RpcPingData) => {\r\n this.changeActiveState(true);\r\n return Promise.resolve(<RpcPingResult>{ name: 'pong' });\r\n }\r\n };\r\n\r\n /**\r\n * Rpc manager object.\r\n */\r\n public rpcManager: RpcManager = new RpcManager();\r\n\r\n /**\r\n * Initializes a new instance of the Rpc class.\r\n *\r\n * @param http the Http class instance injected.\r\n */\r\n constructor() {\r\n this.rpcSubjects = {};\r\n const commands = Object.keys(RpcInboundCommands);\r\n commands.forEach((value, index, array) => {\r\n this.rpcSubjects[RpcInboundCommands[value]] = new Subject<any>();\r\n });\r\n }\r\n\r\n /**\r\n * Gets observable to watch the state change.\r\n */\r\n public get stateChanged(): Observable<boolean> {\r\n this.stateChangedInternal.next(this.stateActiveInternal);\r\n return this.stateChangedInternal.asObservable();\r\n }\r\n\r\n /**\r\n * Gets the state of rpc.\r\n */\r\n public get stateActive(): boolean {\r\n return this.stateActiveInternal;\r\n }\r\n\r\n /**\r\n * Gets whether rpc is running on the shell.\r\n */\r\n public get isShell(): boolean {\r\n if (this.rpcManager.rpcChannel == null) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.RpcNotInitialized.message;\r\n throw new Error(message);\r\n }\r\n\r\n return this.rpcManager.rpcChannel.rpcMode === RpcMode.Shell;\r\n }\r\n\r\n /**\r\n * Register inbound command handler.\r\n *\r\n * @param command The command name.\r\n * @param handler The command handler.\r\n */\r\n public registerInboundHandler(command: string, handler: CommandCallBackType): void {\r\n const handlerName = RpcBase.commandToHandlerName(command);\r\n this.rpcInboundHandlers[handlerName] = handler;\r\n this.rpcManager.registerInboundHandler(command, handler);\r\n }\r\n\r\n /**\r\n * Register outbound command handler.\r\n *\r\n * @param command The command name.\r\n * @param handler The command handler.\r\n */\r\n public registerOutboundHandler(command: string, handler: CommandCallBackType): void {\r\n const handlerName = RpcBase.commandToHandlerName(command);\r\n this.rpcOutboundHandlers[handlerName] = handler;\r\n }\r\n\r\n /**\r\n * Initializes Rpc configuration\r\n */\r\n public init(): void {\r\n this.rpcManager.init(this.rpcInboundHandlers, this.rpcOutboundHandlers);\r\n if (this.isShell) {\r\n this.changeActiveState(true);\r\n }\r\n }\r\n\r\n /***************************************************************\r\n * Section for Shell usage.\r\n ***************************************************************/\r\n\r\n /**\r\n * This updates its value every time there's a reported data from the rpc channel\r\n */\r\n public moduleSubjects<T>(commandType: RpcInboundCommands): Observable<DeferredData<T, any>> {\r\n return <Observable<DeferredData<T, any>>>this.rpcSubjects[RpcInboundCommands[commandType]];\r\n }\r\n\r\n /**\r\n * Connect a module with name and iframe.\r\n * - start pinging to iframe to wait for response.\r\n *\r\n * @param name the name of the module.\r\n * @param path the path to open the module the module name.\r\n * @param iframe the iframe window object.\r\n * @param primary the primary window to affect router url.\r\n * @return Promise<string> the promise with subName created for the window.\r\n */\r\n public moduleConnect(name: string, path: string, iframe: Window, primary: boolean): Promise<string> {\r\n return this.rpcManager.connectRpcOutbound(name, path, iframe, primary);\r\n }\r\n\r\n /**\r\n * Init the module.\r\n *\r\n * @param name the name of module.\r\n * @param subName the sub name of rpc channel.\r\n * @param entryPointType the entry point type.\r\n * @return Promise<void> the promise object of init result.\r\n */\r\n public moduleInit(name: string, subName: string, entryPoint: EnvironmentModuleEntryPoint): Promise<RpcInitResult> {\r\n const rpc = this.rpcManager.rpcChannel.getRpc<RpcOutbound>(name, subName, RpcType.Outbound);\r\n const self = MsftSme.self();\r\n const data: RpcInitData = {\r\n entryPointType: entryPoint.entryPointType,\r\n entryPointName: entryPoint.name,\r\n theme: self.Resources.theme,\r\n assets: self.Resources.assets,\r\n moduleAssets: self.Resources.moduleAssets,\r\n locale: self.Resources.localeId,\r\n localeRegional: self.Resources.localeRegionalId,\r\n lib: self.Resources.lib,\r\n sessionId: self.Init.sessionId,\r\n modules: self.Environment.modules,\r\n accessibilityMode: self.Resources.accessibilityMode,\r\n sessionExpiration: self.Init.sessionExpiration,\r\n performanceProfile: MsftSme.getPerformanceProfile(),\r\n connectivityLevel: self.Init.connectivityLevel,\r\n consoleDebug: MsftSme.consoleDebug(),\r\n sideLoad: MsftSme.sideLoad(),\r\n experiments: MsftSme.experiments(),\r\n shellVersion: self.Init.shellVersion\r\n };\r\n return rpc.init(data).then(result => {\r\n const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Rpc;\r\n // copy the version string of remote module.\r\n if (result && result.version) {\r\n rpc.version = result.version;\r\n Logging.log({\r\n level: LogLevel.Verbose,\r\n message: strings.Version.message.format(rpcVersion, name, rpc.version),\r\n source: 'rpc.moduleInit'\r\n });\r\n } else {\r\n const message = strings.MissingVersion.message.format(name);\r\n Logging.log({\r\n level: LogLevel.Critical,\r\n message,\r\n source: 'rpc.moduleInit'\r\n });\r\n throw new Error(message);\r\n }\r\n\r\n this.changeActiveState(true);\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Open the module by specifying the path and parameters.\r\n *\r\n * @param name the name of module.\r\n * @param subName the sub name of rpc channel.\r\n * @param path the open path.\r\n * @return Promise<RpcOpenResult> the promise object of RpcOpenResult.\r\n */\r\n public moduleOpen(name: string, subName: string, path: string): Promise<RpcOpenResult> {\r\n const rpc = <RpcOutbound>this.rpcManager.rpcChannel.getRpc(name, subName, RpcType.Outbound);\r\n return rpc.open({ path }).then(result => {\r\n this.changeActiveState(true);\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Activate the module to start receiving data.\r\n *\r\n * @param name the module name.\r\n * @param subName the sub name of rpc channel.\r\n * @param primary the primary window to affect router url.\r\n * @param url the inner url to open.\r\n * @return Promise<void> the promise of activation result.\r\n */\r\n public moduleActivate(name: string, subName: string, primary: boolean, url: string): Promise<void> {\r\n const rpc = this.rpcManager.reconnectRpcOutbound(name, subName, primary);\r\n return rpc.activate({ url })\r\n .then(data => {\r\n this.changeActiveState(true);\r\n return data;\r\n });\r\n }\r\n\r\n /**\r\n * Deactivate 2 the module to stop receiving data.\r\n *\r\n * @param name the module name.\r\n * @param subName the sub name of rpc channel.\r\n * @param primary the primary window to affect router url.\r\n * @return Promise<void> the promise of deactivation result.\r\n */\r\n public moduleDeactivate2(name: string, subName: string, primary: boolean): Promise<RpcDeactivateResult> {\r\n this.changeActiveState(false);\r\n const rpc = this.rpcManager.rpcChannel.getRpc<RpcOutbound>(name, subName, RpcType.Outbound);\r\n return rpc.deactivate2({});\r\n }\r\n\r\n /**\r\n * Request to shutdown the module.\r\n *\r\n * @param name the module name.\r\n * @param subName the sub name of rpc channel.\r\n * @param primary the primary window to affect router url.\r\n * @param force the forcible state.\r\n * @return Promise<RpcShutdownResult> the promise object of result.\r\n */\r\n public moduleShutdown(name: string, subName: string, primary: boolean, force: boolean): Promise<RpcShutdownResult> {\r\n const rpc = this.rpcManager.reconnectRpcOutbound(name, subName, primary);\r\n return rpc.shutdown({ force: force });\r\n }\r\n\r\n /**\r\n * Remove the module from the rpc channel.\r\n *\r\n * @param name the module name.\r\n * @param subName the sub name of rpc channel.\r\n */\r\n public moduleRemove(name: string, subName: string): void {\r\n this.rpcManager.removeRpcOutbound(name, subName);\r\n }\r\n\r\n /**\r\n * Get module version string.\r\n *\r\n * @param name the name of module.\r\n * @param subName the sub name of rpc channel.\r\n * @return string the RPC version of module.\r\n */\r\n public moduleVersion(name: string, subName: string): string {\r\n const rpc = <RpcOutbound>this.rpcManager.rpcChannel.getRpc(name, subName, RpcType.Outbound);\r\n return rpc && rpc.version;\r\n }\r\n\r\n /***************************************************************\r\n * Section for Module usage.\r\n ***************************************************************/\r\n\r\n /**\r\n * Register outbound handler. It accepts delay register in case of loading/initialization took a time for module.\r\n *\r\n * @param command the name of RPC Shell command.\r\n * @param handler the handler to handle Shell request.\r\n */\r\n public register(command: string, handler: (data: any) => Promise<any>): void;\r\n\r\n /**\r\n * Register outbound handler. It accepts delay register in case of loading/initialization took a time for module.\r\n *\r\n * @param command the enum ID of RPC Shell command.\r\n * @param handler the handler to handle Shell request.\r\n */\r\n // tslint:disable-next-line:unified-signatures\r\n public register(command: RpcOutboundCommands, handler: (data: any) => Promise<any>): void;\r\n public register(command: RpcOutboundCommands | string, handler: (data: any) => Promise<any>): void {\r\n if (typeof command === 'string') {\r\n const commandName: string = command;\r\n this.rpcManager.rpcInbound.register(commandName, handler);\r\n return;\r\n }\r\n\r\n const deferredData = <DeferredData<any, any>>this.deferredCollection[command];\r\n if (deferredData) {\r\n delete this.deferredCollection[command];\r\n handler(deferredData.data).then(deferredData.deferred.resolve, deferredData.deferred.reject);\r\n return;\r\n }\r\n\r\n if (command === RpcOutboundCommands.Init) {\r\n const modifiedHandler = (data: RpcInitDataInternal) => {\r\n // node context is used before passing request to handler.\r\n this.changeActiveState(true);\r\n const self = MsftSme.self();\r\n self.Init.entryPointType = data.entryPointType;\r\n self.Init.entryPointName = data.entryPointName;\r\n self.Init.sessionId = data.sessionId;\r\n self.Init.sessionExpiration = data.sessionExpiration;\r\n self.Init.performanceProfile = data.performanceProfile;\r\n self.Init.shellVersion = data.shellVersion;\r\n self.Environment.modules = data.modules;\r\n self.Init.connectivityLevel = data.connectivityLevel;\r\n self.Resources.lib = data.lib;\r\n self.Resources.moduleAssets = data.moduleAssets;\r\n\r\n if (!MsftSme.isNullOrUndefined(self.Resources.accessibilityMode)\r\n && !MsftSme.isNullOrUndefined(data.accessibilityMode)\r\n && CoreEnvironment.accessibilityManager) {\r\n self.Resources.accessibilityMode = data.accessibilityMode;\r\n CoreEnvironment.accessibilityManager.changeAccessibilityMode(self.Resources.accessibilityMode);\r\n }\r\n\r\n // ensure that global environment settings persist across origins\r\n if (!MsftSme.isNullOrUndefined(data.consoleDebug) && MsftSme.consoleDebug() !== data.consoleDebug) {\r\n MsftSme.consoleDebug(data.consoleDebug);\r\n }\r\n\r\n if (!MsftSme.isNullOrUndefined(data.sideLoad)) {\r\n const sideLoadKeys = Object.keys(MsftSme.sideLoad() || {});\r\n const dataSideLoadKeys = Object.keys(data.sideLoad || {});\r\n\r\n if (sideLoadKeys.length !== dataSideLoadKeys.length || sideLoadKeys.some(key => !!data.sideLoad[key])) {\r\n MsftSme.sideLoadReset();\r\n dataSideLoadKeys.forEach(k => MsftSme.sideLoad(k));\r\n }\r\n }\r\n\r\n if (!MsftSme.isNullOrUndefined(data.experiments)) {\r\n const experiments = MsftSme.experiments();\r\n if (experiments.length !== data.experiments.length || experiments.some((v, i) => v !== data.experiments[i])) {\r\n MsftSme.experiments(data.experiments);\r\n }\r\n }\r\n\r\n if (CoreEnvironment.assetManager && data.theme && data.assets) {\r\n CoreEnvironment.assetManager.loadAssets(data.theme, data.assets);\r\n }\r\n\r\n for (const item of data.modules) {\r\n // NOTES: the next 'if' block code can be removed only if all extensions adapted newer shell. (after 1.1114.0)\r\n if (!self.Init.shellVersion && item.name === 'msft.sme.shell-extensions') {\r\n // look for shell version if missing from older MSI/ShellUI.\r\n self.Init.shellVersion = item.version;\r\n }\r\n\r\n if (item.name === self.Init.moduleName) {\r\n self.Environment.version = item.version || self.Environment.version;\r\n }\r\n }\r\n\r\n const localeLoader = CoreEnvironment.moduleLoadLocale({ id: data.localeRegional || data.locale, neutral: data.locale });\r\n const passingData = <RpcInitData>{\r\n locale: data.locale,\r\n localeRegional: data.localeRegional,\r\n sessionId: data.sessionId\r\n };\r\n\r\n // update metaTags so sessionId is properly updated in telemetry\r\n SmeWebTelemetry.updateFromRpcInit({ 'wac-session-id': data.sessionId, 'wac-extension-version': self.Environment.version });\r\n\r\n return localeLoader\r\n .then(() => this.seekShell(RpcSeekMode.Create))\r\n .then(() => handler(passingData))\r\n .then(() => ({ version: rpcVersion }));\r\n };\r\n this.rpcManager.rpcInbound.register(RpcOutboundCommands[command], modifiedHandler);\r\n } else {\r\n this.rpcManager.rpcInbound.register(RpcOutboundCommands[command], handler);\r\n }\r\n }\r\n\r\n /**\r\n * Module report a failure.\r\n */\r\n public failed(data: any): Promise<void> {\r\n const rpc = this.rpcManager.rpcInbound;\r\n return rpc.failed(data);\r\n }\r\n\r\n /**\r\n * Seek shell frame.\r\n *\r\n * @param Promise<any> the promise object.\r\n */\r\n public seekShell(mode: RpcSeekMode): Promise<RpcSeekResult> {\r\n return this.rpcManager.seekShell(mode);\r\n }\r\n\r\n /**\r\n * Validate existing outbound connection and remove if it doesn't live anymore.\r\n *\r\n * @return number the count of removed outbound.\r\n */\r\n public validate(): number {\r\n let count = 0;\r\n const collection = this.rpcManager.getCurrentRpcOutbound();\r\n collection.forEach((rpc, index, array) => {\r\n if (!this.rpcManager.rpcChannel.validate(rpc)) {\r\n count++;\r\n }\r\n });\r\n\r\n return count;\r\n }\r\n\r\n /**\r\n * Change the active status of rpc.\r\n */\r\n public changeActiveState(state: boolean): void {\r\n this.stateActiveInternal = state;\r\n this.stateChangedInternal.next(state);\r\n }\r\n\r\n /**\r\n * Create auto-failed timer promise.\r\n *\r\n * @param command the outbound command type.\r\n * @param timeoutMs the timeout milliseconds.\r\n * @param data the data context.\r\n * @return Promise<any> the promise.\r\n */\r\n private createTimerPromise<TData, TResult>(command: RpcOutboundCommands, timeoutMs: number, data: TData): Promise<TResult> {\r\n const deferred = NativeQ.defer<TResult>();\r\n this.deferredCollection[command] = <DeferredData<TData, TResult>>{ deferred: deferred, data: data };\r\n setTimeout(\r\n () => {\r\n const deferredData: DeferredData<TData, TResult> = this.deferredCollection[command];\r\n if (deferredData) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.RpcTimeout.message;\r\n deferredData.deferred.reject(message);\r\n delete this.deferredCollection[command];\r\n }\r\n },\r\n timeoutMs);\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Create promise that does not timeout.\r\n *\r\n * @param command the outbound type.\r\n * @param data the data context.\r\n * @return Promise<any> the promise.\r\n */\r\n private createPromise<TData, TResult>(command: RpcOutboundCommands, data: TData): Promise<any> {\r\n const deferred = NativeQ.defer<TResult>();\r\n this.deferredCollection[command] = <DeferredData<TData, TResult>>{ deferred: deferred, data: data };\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Process data pushing into next call of subject with deferred data type.\r\n *\r\n * @param command the inbound command type.\r\n * @param data the rpc data came from a module/iframe.\r\n * @return Promise the promise which receiver must settle within fixed waiting time (10 seconds)\r\n */\r\n private processNextForSubject<TData, TResult>(command: RpcInboundCommands, data: TData): Promise<TResult> {\r\n const subject = this.rpcSubjects[RpcInboundCommands[command]];\r\n if (subject.closed || subject.hasError) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.RpcSubjectClosed.message;\r\n throw new Error(message.format(RpcInboundCommands[command]));\r\n }\r\n\r\n const deferredData = <DeferredData<TData, TResult>>{\r\n data: data,\r\n deferred: NativeQ.defer<TResult>()\r\n };\r\n subject.next(deferredData);\r\n return deferredData.deferred.promise;\r\n }\r\n}\r\n"]}
|
|
@@ -121,7 +121,7 @@ export class AuthorizationManager extends RpcServiceForwarder {
|
|
|
121
121
|
*/
|
|
122
122
|
canHandleStreamFailure(response) {
|
|
123
123
|
// access denied case.
|
|
124
|
-
return response.response
|
|
124
|
+
return response && response.response
|
|
125
125
|
&& response.response.statusCode === 401 /* Unauthorized */;
|
|
126
126
|
}
|
|
127
127
|
/**
|