UNPKG

armpit

Version:

Another resource manager programming interface toolkit.

80 lines 2.76 kB
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