@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
1 lines • 5.55 kB
Source Map (JSON)
{"version":3,"sources":["../../../packages/core/shared/tool-inventory/tool-inventory-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAyB,MAAM,kBAAkB,CAAC;AAEhH;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;IAU1F,OAAO,CAAC,UAAU;IAT9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmC;IAC1D,OAAO,CAAC,MAAM,CAAC,aAAa,CAAK;IAEjC;;;;;OAKG;gBACiB,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAWxE;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAuCjB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAItB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAIxB","file":"tool-inventory-cache.d.ts","sourcesContent":["import { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { AppContext } from '../../data/app-context';\r\nimport { PowerShellCommand } from '../../data/powershell';\r\nimport { EnvironmentModuleToolState } from '../../manifest/environment-modules';\r\nimport { SharedCache, SharedCacheOptions } from '../shared-cache';\r\nimport { ToolInventory, ToolInventoryData, ToolInventoryParams, ToolInventoryProperty } from './tool-inventory';\r\n\r\n/**\r\n * Tool Inventory cache class.\r\n */\r\nexport class ToolInventoryCache extends SharedCache<ToolInventory, ToolInventoryData, ToolInventoryParams> {\r\n private static uniqueId = '@msft-sme/shell:toolInventory';\r\n private static uniqueVersion = 0;\r\n\r\n /**\r\n * Initializes a new instance of the ToolInventoryCache class.\r\n *\r\n * @param appContext the app context.\r\n * @param options the option of shared cache.\r\n */\r\n constructor(private appContext: AppContext, options?: SharedCacheOptions) {\r\n super(\r\n ToolInventoryCache.uniqueId,\r\n ToolInventoryCache.uniqueVersion,\r\n (params) => this.dataInstanceId(params),\r\n (instance) => this.dataSerialize(instance),\r\n (serialized) => this.dataDeserialize(serialized),\r\n (params) => this.dataQuery(params),\r\n options);\r\n }\r\n\r\n /**\r\n * Defines how to collect the tool inventory data.\r\n *\r\n * @param params the server inventory query params.\r\n * @return the Observable of ServerInventory data.\r\n */\r\n private dataQuery(params: ToolInventoryParams): Observable<ToolInventory> {\r\n const psSession = this.appContext.powerShell.createSession(params.name, null, params.requestOptions);\r\n return this.appContext.powerShell.run(\r\n psSession,\r\n params.command ? <PowerShellCommand>{ command: params.command, script: params.script, module: params.module } : params.script)\r\n .pipe(\r\n map((data: any) => {\r\n const inventory = new ToolInventory(params.name);\r\n if (data && data.results && data.results.length > 0) {\r\n const result = data.results[0];\r\n inventory.name = params.name;\r\n inventory.id = params.id;\r\n switch (result.state) {\r\n case EnvironmentModuleToolState[EnvironmentModuleToolState.Available]:\r\n inventory.state = EnvironmentModuleToolState.Available;\r\n break;\r\n case EnvironmentModuleToolState[EnvironmentModuleToolState.NotConfigured]:\r\n inventory.state = EnvironmentModuleToolState.NotConfigured;\r\n break;\r\n case EnvironmentModuleToolState[EnvironmentModuleToolState.NotSupported]:\r\n default:\r\n inventory.state = EnvironmentModuleToolState.NotSupported;\r\n break;\r\n }\r\n\r\n inventory.message = result.message;\r\n inventory.properties = [];\r\n const properties: ToolInventoryProperty[] = result.properties;\r\n if (properties) {\r\n for (const pair of properties) {\r\n inventory.properties.push(pair);\r\n }\r\n }\r\n }\r\n\r\n return inventory;\r\n }));\r\n }\r\n\r\n /**\r\n * Defines how to identify the cache entry by params.\r\n *\r\n * @param params the tool inventory query params.\r\n * @return the id string.\r\n */\r\n private dataInstanceId(params: ToolInventoryParams): string {\r\n return `${params.name}:${params.id}`;\r\n }\r\n\r\n /**\r\n * Defines how to deserialize the class object from seralized data.\r\n *\r\n * @param serialized the serialized string;\r\n */\r\n private dataDeserialize(serialized: string): ToolInventory {\r\n const inventory: ToolInventoryData = JSON.parse(serialized);\r\n return new ToolInventory(inventory.name, inventory);\r\n }\r\n\r\n /**\r\n * Defines how to serialize the class object to seralized data.\r\n *\r\n * @param instance the class instance.\r\n */\r\n private dataSerialize(instance: ToolInventory): string {\r\n // automatically stripped out class related data.\r\n return JSON.stringify(instance);\r\n }\r\n}\r\n"]}