UNPKG

armpit

Version:

Another resource manager programming interface toolkit.

40 lines 1.5 kB
import { isRestError } from "@azure/core-rest-pipeline"; import { isSubscriptionId } from "./azureUtils.js"; export async function handleGet(promise) { try { return await promise; } catch (error) { if (isRestError(error) && error.statusCode === 404) { return null; } throw error; } } export class ManagementClientFactory { #credentialFactory; #cache = []; constructor(credentialFactory) { this.#credentialFactory = credentialFactory; } get(constructor, subscriptionId, options) { if (subscriptionId == null) { throw new Error("Subscription ID is required."); } else if (!isSubscriptionId(subscriptionId)) { throw new Error("Subscription ID is not valid."); } const optionsKey = options == null ? null : JSON.stringify(options); const match = this.#cache.find(e => e.constructor === constructor && e.subscriptionId === subscriptionId && (e.options == null ? optionsKey == null : JSON.stringify(e.options) === optionsKey)); if (match) { return match.instance; } const credential = this.#credentialFactory.getCredential({ subscription: subscriptionId }); const instance = new constructor(credential, subscriptionId, options); this.#cache.push({ constructor, subscriptionId, options, instance }); return instance; } } //# sourceMappingURL=azureSdkUtils.js.map