@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
1 lines • 18.6 kB
Source Map (JSON)
{"version":3,"sources":["../../../packages/core/rpc/rpc-base.ts"],"names":[],"mappings":"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","file":"rpc-base.d.ts","sourcesContent":["import { Strings } from '../generated/strings';\r\nimport { EnvironmentModuleEntryPointType } from '../manifest/environment-modules';\r\nimport { RpcChannel } from './rpc-channel';\r\nimport { RpcSeek, RpcSeekResult } from './seek/rpc-seek-model';\r\n\r\n/**\r\n * History:\r\n * Version: 0.1.0\r\n * Date: 09/20/2018\r\n * - New RP Public API model.\r\n *\r\n * Version: 0.0.12\r\n * Date: 07/17/2018\r\n * [Update] AzureRequest.\r\n * - AzureManager and AzureService need to communicate.\r\n *\r\n * Version: 0.0.11\r\n * Date: 07/10/2018\r\n *\r\n * [Update] RpcCredSSPOperation\r\n * - Restored disableTaskDelay parameter.\r\n * - Added alertTitle parameter.\r\n * - added alertId? parameter.\r\n *\r\n * Version: 0.0.10\r\n * Date: 07/10/2018\r\n *\r\n * [Update] RpcCredSSPOperationType\r\n * - Updated operation types for four operations.\r\n *\r\n * [Update] RpcCredSSPOperation\r\n * - Removed taskDelay parameter.\r\n *\r\n * Version: 0.0.9\r\n * Date: 05/18/2018\r\n *\r\n * [Update] RpcInitData.\r\n * - Added Development settings (consoleDebug, sideLoad, and experiments) to RpcInitData.\r\n *\r\n * Version: 0.0.8\r\n * Date: 05/18/2018\r\n *\r\n * [Update] CredSSPRequest.\r\n * - CredSSPManager and CredSSPManagerShellService need to communicate.\r\n *\r\n * Version: 0.0.7\r\n * Date: 04/27/2018\r\n * [Update] RpcActivate for re-opening URL as an option.\r\n * - moduleActivate has 'url' parameter to point re-activating inner URL.\r\n *\r\n * Version: 0.0.6\r\n * Date: 01/29/2018\r\n *\r\n * [Add] OverlayOpen and OverlayClose\r\n *\r\n * Version: 0.0.5\r\n * Date: 12/11/2017\r\n *\r\n * [Update] RpcInitData: accessibilityMode: boolean;\r\n *\r\n * Version: 0.0.4\r\n * Date: 10/25/2017\r\n *\r\n * [Add] Added new RPC call.\r\n *\r\n * Version: 0.0.3\r\n * Date: 9/11/2017\r\n *\r\n * [Updated] added assets and theme to RpcInitData\r\n *\r\n * Version: 0.0.2\r\n * Date: 9/11/2017\r\n *\r\n * [Update] Add \"reload\" property to RpcShellNavigate\r\n *\r\n * Version: 0.0.1\r\n * Date: 8/23/2017\r\n *\r\n * [Deleted] Deactivate\r\n * [Updated] Open for RpcOpenResult\r\n *\r\n * Version: 0.0.0\r\n * Date: 8/14/2017\r\n *\r\n * [Deleted] CanDeactivate\r\n * [Deprecated] Deactivate\r\n * [New Added] Deactivate2\r\n *\r\n */\r\n\r\n/**\r\n * Version number of this RPC.\r\n */\r\nexport const rpcVersion = '0.1.0';\r\nexport const rpcCommandVersion = '0.1.0';\r\n\r\n/**\r\n * Rpc servicing mode.\r\n */\r\nexport const enum RpcMode {\r\n // Running on Shell.\r\n Shell = 0,\r\n\r\n // Running on Module (tool).\r\n Module = 1\r\n}\r\n\r\n/**\r\n * Rpc relationship type.\r\n */\r\nexport const enum RpcRelationshipType {\r\n // Rpc parent relationship.\r\n Parent = 0,\r\n\r\n // Rpc child relationship.\r\n Child = 1\r\n}\r\n\r\n/**\r\n * Rpc message packet type.\r\n */\r\nexport enum RpcMessagePacketType {\r\n // Rpc request call.\r\n Request = 0,\r\n\r\n // Rpc response call with success.\r\n Response = 1,\r\n\r\n // Rpc response call with error.\r\n Error = 2\r\n}\r\n\r\n/**\r\n * Rpc message event (original message).\r\n */\r\nexport interface RpcMessageEvent {\r\n // data object.\r\n data: RpcMessagePacket<any>;\r\n\r\n // origin url.\r\n origin: string;\r\n\r\n // source window object.\r\n source: Window;\r\n}\r\n\r\n/**\r\n * Rpc message data packet.\r\n */\r\nexport interface RpcMessagePacket<T> {\r\n // source name ex.) msft.sme.shell, msft.sme.process-viewer...\r\n srcName?: string;\r\n\r\n // source sub name such as path and index ex. #11 and /addServer#1\r\n srcSubName?: string;\r\n\r\n // depth of iframe.\r\n srcDepth?: number;\r\n\r\n // destination name.\r\n destName?: string;\r\n\r\n // destination sub name such as path and index ex. #11 and /addServer#1\r\n destSubName?: string;\r\n\r\n // the signature of data packet.\r\n signature?: string;\r\n\r\n // the sequence number.\r\n sequence?: number;\r\n\r\n // The type of packet.\r\n type?: RpcMessagePacketType;\r\n\r\n // The Rpc command.\r\n command: string;\r\n\r\n // the version of request command.\r\n version: string;\r\n\r\n // The Rpc data.\r\n data: T;\r\n}\r\n\r\n/**************************************************************************************************************************\r\n * Outbound commands set. (from shell to modules)\r\n **************************************************************************************************************************/\r\n/**\r\n * Interface for messages that contain the remote RPC name that sent the message\r\n */\r\nexport interface RpcBaseData {\r\n sourceName?: string;\r\n sourceSubName?: string;\r\n sourceVersion?: string;\r\n}\r\n\r\n/**\r\n * Rpc init command data.\r\n */\r\nexport interface RpcInitData {\r\n entryPointType: EnvironmentModuleEntryPointType;\r\n entryPointName: string;\r\n locale: string;\r\n localeRegional: string;\r\n lib: MsftSme.MsftSmeExternalLibraries;\r\n sessionId: string;\r\n modules: any[];\r\n theme: string;\r\n sessionExpiration: number;\r\n performanceProfile: boolean;\r\n assets: MsftSme.MsftSmeAssets;\r\n moduleAssets: MsftSme.MsftSmeSharedAssets;\r\n accessibilityMode: boolean;\r\n consoleDebug: number;\r\n sideLoad: MsftSme.StringMap<MsftSme.SideLoad>;\r\n experiments: string[];\r\n connectivityLevel: string;\r\n shellVersion: string;\r\n gatewayApiVersion: string;\r\n gatewayPlatform: string;\r\n}\r\n\r\n/**\r\n * Rpc init result data.\r\n */\r\nexport interface RpcInitResult {\r\n version: string;\r\n}\r\n\r\n/**\r\n * The interface for the inbound init data with some extra information like remote name and other information\r\n */\r\nexport interface RpcInitDataInternal extends RpcInitData, RpcBaseData { }\r\n\r\n/**\r\n * Rpc open state.\r\n */\r\nexport enum RpcOpenState {\r\n /**\r\n * Opened.\r\n */\r\n Opened = 0,\r\n\r\n /**\r\n * Failed.\r\n */\r\n Failed = 1,\r\n\r\n /**\r\n * In progress.\r\n */\r\n InProgress = 2\r\n}\r\n\r\n/**\r\n * Rpc open command data.\r\n */\r\nexport interface RpcOpenData {\r\n /**\r\n * The path to open inside of module.\r\n */\r\n path: string;\r\n}\r\n\r\n/**\r\n * The interface for the inbound open data with some extra information like remote name and other information\r\n */\r\nexport interface RpcOpenDataInternal extends RpcOpenData, RpcBaseData { }\r\n\r\n/**\r\n * Rpc result data from open command.\r\n */\r\nexport interface RpcOpenResult {\r\n /**\r\n * The open result state.\r\n */\r\n state: RpcOpenState;\r\n\r\n /**\r\n * Waited and holding time.\r\n */\r\n waitedTime: number;\r\n\r\n /**\r\n * Error reason message if any.\r\n */\r\n error?: string;\r\n}\r\n\r\n/**\r\n * Rpc activate command data.\r\n */\r\nexport interface RpcActivateData {\r\n /**\r\n * The activate url.\r\n */\r\n url: string;\r\n}\r\n\r\n/**\r\n * The interface for the activate data.\r\n */\r\nexport interface RpcActivateDataInternal extends RpcActivateData, RpcBaseData { }\r\n\r\n/**\r\n * Rpc deactivate state.\r\n */\r\nexport enum RpcDeactivateState {\r\n /**\r\n * Deactivated.\r\n */\r\n Deactivated = 0,\r\n\r\n /**\r\n * Cancelled.\r\n */\r\n Cancelled = 1,\r\n\r\n /**\r\n * In progress.\r\n */\r\n InProgress = 2\r\n}\r\n\r\nexport interface RpcDeactivateResult {\r\n /**\r\n * Rpc deactivate state.\r\n */\r\n state: RpcDeactivateState;\r\n\r\n /**\r\n * Waited and holding time.\r\n */\r\n waitedTime: number;\r\n}\r\n\r\n/**\r\n * Rpc shutdown command data.\r\n */\r\nexport interface RpcShutdownData extends RpcBaseData {\r\n /**\r\n * Shutdown is forced.\r\n */\r\n force: boolean;\r\n}\r\n\r\n/**\r\n * Rpc shutdown result.\r\n */\r\nexport interface RpcShutdownResult {\r\n /**\r\n * Indicate if it can shutdown now.\r\n */\r\n canShutdown: boolean;\r\n}\r\n\r\nexport interface RpcPingData {\r\n /**\r\n * The name of ping request.\r\n */\r\n name: string;\r\n}\r\n\r\nexport interface RpcPingResult extends RpcPingData {\r\n}\r\n\r\n/**\r\n * Rpc commands that Shell initiates to communicate a module (tool).\r\n */\r\nexport enum RpcOutboundCommands {\r\n Init = 100,\r\n Open = 101,\r\n Activate = 102,\r\n Deactivate2 = 103,\r\n Shutdown = 104,\r\n Ping = 105\r\n}\r\n\r\n/**************************************************************************************************************************\r\n * Inbound commands set.\r\n **************************************************************************************************************************/\r\n\r\n/**\r\n * Rpc commands that a Module (tool) initiates to communicate Shell.\r\n */\r\nexport enum RpcInboundCommands {\r\n Failed = 201\r\n}\r\n\r\n/**************************************************************************************************************************\r\n * Handlers for each rpc request.\r\n **************************************************************************************************************************/\r\n/**\r\n * Rpc command handlers that a module (tool) handles.\r\n */\r\nexport interface RpcOutboundHandlers {\r\n InitHandler: (data: RpcInitDataInternal) => Promise<RpcInitResult>;\r\n OpenHandler: (data: RpcOpenDataInternal) => Promise<RpcOpenResult>;\r\n ActivateHandler: (data: RpcActivateDataInternal) => Promise<void>;\r\n Deactivate2Handler: (data: RpcBaseData) => Promise<RpcDeactivateResult>;\r\n ShutdownHandler: (data: RpcShutdownData) => Promise<RpcShutdownResult>;\r\n PingHandler: (data: RpcPingData) => Promise<RpcPingResult>;\r\n}\r\n\r\n/**\r\n * Rpc command handlers that Shell handles.\r\n */\r\nexport interface RpcInboundHandlers {\r\n FailedHandler: (data: RpcBaseData) => Promise<void>;\r\n SeekHandler: (data: RpcSeek) => Promise<RpcSeekResult>;\r\n}\r\n\r\n/**\r\n * Type of the callback that handles messages with extra information\r\n * as defined by RpcBaseData\r\n */\r\nexport type CommandCallBackType = (data: RpcBaseData) => Promise<any>;\r\n\r\n/**\r\n * The type of RpcBase object.\r\n */\r\nexport enum RpcType {\r\n Channel = 0,\r\n Inbound = 1,\r\n Outbound = 2\r\n}\r\n\r\n/**\r\n * Rpc base class.\r\n */\r\nexport abstract class RpcBase {\r\n /**\r\n * Suffix of command to handler mapping.\r\n */\r\n public static handlerSuffix = 'Handler';\r\n\r\n /**\r\n * the window/iFrame object.\r\n */\r\n public window: Window;\r\n\r\n /**\r\n * command collection to handle.\r\n */\r\n public commandCollection = new Map<string, CommandCallBackType>();\r\n\r\n /**\r\n * The sub name created dynamically when Outbound/Inbound communication is established.\r\n */\r\n public subName: string;\r\n\r\n /**\r\n * The depth of frame.\r\n */\r\n public depth: number;\r\n\r\n /**\r\n * The version of remote module.\r\n */\r\n public version?: string;\r\n\r\n /**\r\n * Convert from handler name to command name.\r\n *\r\n * @param handlerName the handler name.\r\n * @return the command name.\r\n */\r\n public static handlerToCommandName(handlerName): string {\r\n const suffix = handlerName.indexOf(RpcBase.handlerSuffix);\r\n if (suffix > 0) {\r\n return handlerName.substring(0, suffix);\r\n }\r\n\r\n return handlerName;\r\n }\r\n\r\n /**\r\n * Convert from command name to handler name.\r\n *\r\n * @param commandName the command name.\r\n * @return the handler name.\r\n */\r\n public static commandToHandlerName(commandName): string {\r\n return commandName + RpcBase.handlerSuffix;\r\n }\r\n\r\n /**\r\n * Initializes a new instance of the RpcBase class.\r\n *\r\n * @param rpcChannel the rpc channel object..\r\n * @param name the public name of Shell or Module (tool).\r\n * @param origin the origin url to start Shell or Module (tool).\r\n */\r\n constructor(public rpcChannel: RpcChannel, public name: string, public origin: string, public type: RpcType) { }\r\n\r\n /**\r\n * Handle the command with data object.\r\n *\r\n * @param command the command name.\r\n * @param sourceVersion the version string.\r\n * @param sourceName the name of the remote rpc that sent the request.\r\n * @param sourceSubName the sub name of the remote rpc that sent the request.\r\n * @param data the data object.\r\n * @return Promise<any> the promise object.\r\n */\r\n public handle(command: string, sourceVersion: string, sourceName: string, sourceSubName: string, data: any): Promise<any> {\r\n const handler = <CommandCallBackType>this.commandCollection[command];\r\n if (!handler) {\r\n const message = MsftSme.getStrings<Strings>().MsftSmeShell.Core.Error.RpcNotRegisteredHandler.message;\r\n throw new Error(message.format(command));\r\n }\r\n\r\n Object.assign(data, <RpcBaseData>{\r\n sourceName,\r\n sourceSubName,\r\n sourceVersion\r\n });\r\n\r\n return handler(data);\r\n }\r\n\r\n /**\r\n * Register the handler to the command.\r\n *\r\n * @param command the command name.\r\n * @param handler the handler function.\r\n */\r\n public register(command: string, handler: CommandCallBackType): void {\r\n this.commandCollection[command] = handler;\r\n }\r\n}\r\n"]}