armpit
Version:
Another resource manager programming interface toolkit.
80 lines • 2.76 kB
JavaScript
import { isStringValueArrayEqual } from "./tsUtils.js";
import { applyObjectKeyProperties, applySourceToTargetObject } from "./optionsUtils.js";
import { isSubscriptionId } from "./azureTypes.js";
export function hasNameAndLocation(resource) {
return hasName(resource) && hasLocation(resource);
}
export function hasName(resource) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return resource != null && typeof resource.name === "string";
}
export function hasLocation(resource) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return resource != null && typeof resource.location === "string";
}
export function extractSubscriptionFromId(resourceId) {
if (!resourceId) {
return null;
}
const match = resourceId.match(/\/subscriptions\/([^/]+)\//i);
const idValue = match && match[1];
if (isSubscriptionId(idValue)) {
return idValue;
}
return null;
}
export function constructId(subscriptionId, resourceGroup, provider, ...names) {
let result = "";
if (subscriptionId != null) {
result += `/subscriptions/${subscriptionId}`;
}
if (resourceGroup != null) {
result += `/resourceGroups/${resourceGroup}`;
}
if (provider != null) {
result += `/provider/${provider}`;
}
if (names && names.length > 0) {
for (const name of names) {
result += `/${name}`;
}
}
return result;
}
export function idsEquals(a, b, sort) {
if (a == null) {
return b == null;
}
if (b == null) {
return false;
}
return isStringValueArrayEqual(a.map(e => e.id), b.map(e => e.id), { sort });
}
export function locationNameOrCodeEquals(a, b) {
return a.replace(/\s/g, "").localeCompare(b.replace(/\s/g, ""), undefined, { sensitivity: "base" }) === 0;
}
export function applyManagedServiceIdentity(target, source, context) {
let appliedChanges = false;
const { userAssignedIdentities, ...rest } = source;
if (userAssignedIdentities == null) {
if (userAssignedIdentities === null && target.userAssignedIdentities != null) {
delete target.userAssignedIdentities;
}
}
else {
target.userAssignedIdentities ??= {};
if (applyObjectKeyProperties(target.userAssignedIdentities, userAssignedIdentities, (k, t, s) => {
t[k] = s[k] ?? {};
}, true)) {
appliedChanges = true;
}
}
if (applySourceToTargetObject(target, rest, context)) {
appliedChanges = true;
}
return appliedChanges;
}
export function toCliArgPairs(tags, delimiter = "=") {
return Object.entries(tags).map(([k, v]) => `${k}${delimiter}${v}`);
}
//# sourceMappingURL=azureUtils.js.map