UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

1 lines 4.16 kB
{"version":3,"sources":["../../../packages/core/data/node-extension-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAM,MAAM,MAAM,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAe,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB;IAChE,QAAQ,EAAE,GAAG,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAQjB,OAAO,CAAC,UAAU;IAP9B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAkD;IAE3E;;;;OAIG;gBACiB,UAAU,EAAE,UAAU;IAEtC;;;;;;;GAOD;IACI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,UAAU,CAAC,0BAA0B,CAAC;IAuC1I;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;CAItB","file":"node-extension-install.d.ts","sourcesContent":["import { defer, Observable, of } from 'rxjs';\r\nimport { map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { AppContext } from './app-context';\r\nimport { GatewayCondition } from './gateway-connection';\r\nimport { NodeRequest, NodeRequestOptions } from './node-connection';\r\n\r\nexport interface NodeExtensionInstallResult extends GatewayCondition {\r\n response: any;\r\n}\r\n\r\n/**\r\n * Node extension install class.\r\n */\r\nexport class NodeExtensionInstall {\r\n private static installUrl = 'features/extensions/{0}/versions/{1}/install';\r\n\r\n /**\r\n * Initializes a new instance of the NodeExtensionInstall class.\r\n *\r\n * @param appContext the application context.\r\n */\r\n constructor(private appContext: AppContext) { }\r\n\r\n /**\r\n * Install a node package of extensions. (elevate the desktop gateway if required.)\r\n *\r\n * @param nodeName the name of node.\r\n * @param extension the name of extension.\r\n * @param version the version of extension.\r\n * @param options the node request options (optional).\r\n */\r\n public install(nodeName: string, extension: string, version: string, options?: NodeRequestOptions): Observable<NodeExtensionInstallResult> {\r\n const install = defer(() => this.installCall(nodeName, extension, version, options));\r\n let result: NodeExtensionInstallResult = null;\r\n return this.appContext.gateway.checkCondition()\r\n .pipe(\r\n mergeMap(data => {\r\n result = <NodeExtensionInstallResult>data;\r\n if (result.isServiceMode) {\r\n if (result.isGatewayAdmin) {\r\n return install;\r\n }\r\n\r\n // cannot support this user.\r\n return of(null);\r\n }\r\n\r\n if (result.isGatewayProcessElevated) {\r\n return install;\r\n }\r\n\r\n // on-demand elevate and install.\r\n return this.appContext.gateway.elevate()\r\n .pipe(switchMap(elevated => {\r\n if (elevated) {\r\n result.isGatewayProcessElevated = true;\r\n return install;\r\n }\r\n\r\n // user rejected to elevate.\r\n return of(result);\r\n }));\r\n }),\r\n map(installed => {\r\n result.response = installed;\r\n return result;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Install a node package of extensions.(doesn't handle elevation for the desktop mode.)\r\n *\r\n * @param nodeName the name of node.\r\n * @param extension the name of extension.\r\n * @param version the version of extension.\r\n * @param options the node request options (optional).\r\n */\r\n private installCall(nodeName: string, extension: string, version: string, options?: NodeRequestOptions): Observable<any> {\r\n const url = NodeExtensionInstall.installUrl.format(extension, version);\r\n return this.appContext.node.post(nodeName, url, null, <NodeRequest>options);\r\n }\r\n}\r\n"]}