armpit
Version:
Another resource manager programming interface toolkit.
40 lines • 1.5 kB
JavaScript
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