{"version":3,"sources":["../../../packages/core/shared/gateway-inventory/gateway-inventory-detail-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE9H;;GAEG;AACH,qBAAa,2BACT,SAAQ,WAAW,CAAC,sBAAsB,EAAE,0BAA0B,EAAE,4BAA4B,CAAC;IAWzF,OAAO,CAAC,UAAU;IAV9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4C;IACnE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAK;IACjC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAa;IAEvC;;;;;OAKG;gBACiB,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAWxE;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAiBjB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAItB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAIxB","file":"gateway-inventory-detail-cache.d.ts","sourcesContent":["import { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { AppContext } from '../../data/app-context';\r\nimport { SharedCache, SharedCacheOptions } from '../shared-cache';\r\nimport { GatewayInventoryDetail, GatewayInventoryDetailData, GatewayInventoryDetailParams } from './gateway-inventory-detail';\r\n\r\n/**\r\n * Gateway Inventory Detail cache class.\r\n */\r\nexport class GatewayInventoryDetailCache\r\n    extends SharedCache<GatewayInventoryDetail, GatewayInventoryDetailData, GatewayInventoryDetailParams> {\r\n    private static uniqueId = '@msft-sme/shell:gatewayInventoryDetail';\r\n    private static uniqueVersion = 1;\r\n    private static gatewayName = 'gateway';\r\n\r\n    /**\r\n     * Initializes a new instance of the GatewayInventoryCache 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            GatewayInventoryDetailCache.uniqueId,\r\n            GatewayInventoryDetailCache.uniqueVersion,\r\n            () => this.dataInstanceId(),\r\n            (instance) => this.dataSerialize(instance),\r\n            (serialized) => this.dataDeserialize(serialized),\r\n            () => this.dataQuery(),\r\n            options);\r\n    }\r\n\r\n    /**\r\n     * Defines how to collect the gateway inventory detail data.\r\n     *\r\n     * @return the Observable of GatewayInventoryDetail data.\r\n     */\r\n    private dataQuery(): Observable<GatewayInventoryDetail> {\r\n        return this.appContext.gateway.get('gateway/latestversion')\r\n            .pipe(\r\n                map((versionDetail: any) => {\r\n                    const inventoryDetail = new GatewayInventoryDetail();\r\n\r\n                    if (versionDetail) {\r\n                        inventoryDetail.latestVersion =\r\n                            versionDetail.destinationUrl.substring(versionDetail.destinationUrl.lastIndexOf('/') + 1);\r\n                    } else {\r\n                        inventoryDetail.latestVersion = null;\r\n                    }\r\n\r\n                    return inventoryDetail;\r\n                }));\r\n    }\r\n\r\n    /**\r\n     * Defines how to identify the cache entry by params.\r\n     *\r\n     * @return the id string.\r\n     */\r\n    private dataInstanceId(): string {\r\n        return GatewayInventoryDetailCache.gatewayName;\r\n    }\r\n\r\n    /**\r\n     * Defines how to deserialize the class object from serialized data.\r\n     *\r\n     * @param serialized the serialized string;\r\n     */\r\n    private dataDeserialize(serialized: string): GatewayInventoryDetail {\r\n        const inventory: GatewayInventoryDetailData = JSON.parse(serialized);\r\n        return new GatewayInventoryDetail(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: GatewayInventoryDetail): string {\r\n        // automatically strip out class related data.\r\n        return JSON.stringify(instance);\r\n    }\r\n}\r\n"]}