Docker images / prepare-release (push) Successful in 7s
Docker images / backend-test (push) Successful in 2m22s
Docker images / frontend-image (push) Successful in 3m29s
Docker images / updater-image (push) Successful in 52s
Docker images / backend-image (push) Successful in 2m41s
Docker images / notify-webhook (push) Skipped
Docker images / publish-release (push) Successful in 12s
Co-authored-by: Cursor <[email protected]>
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
export const UNBOUND_PATH_CLIENT = "—"
|
|
|
|
export interface ServicePathLabelInput {
|
|
clientId: string
|
|
clientName: string
|
|
viaId: string
|
|
viaName: string
|
|
enId: string
|
|
enName: string
|
|
serviceId: string
|
|
}
|
|
|
|
export interface ServicePathLabelNames {
|
|
viaName?: string
|
|
viaSite?: string
|
|
enName?: string
|
|
serviceLabel?: string
|
|
}
|
|
|
|
export function isUnboundServicePath(p: Pick<ServicePathLabelInput, "clientId" | "clientName">): boolean {
|
|
return p.clientId === UNBOUND_PATH_CLIENT || p.clientName === UNBOUND_PATH_CLIENT
|
|
}
|
|
|
|
export function formatServicePathLabel(
|
|
p: ServicePathLabelInput,
|
|
viaMode: "via" | "service",
|
|
names: ServicePathLabelNames = {},
|
|
): string {
|
|
const viaName = names.viaName || p.viaName
|
|
const enName = names.enName || p.enName
|
|
if (isUnboundServicePath(p)) {
|
|
if (p.viaId !== p.enId) return `${viaName} → ${enName}`
|
|
return `${enName} · без привязки`
|
|
}
|
|
const viaLabel = names.viaSite || p.viaName
|
|
const mid = viaMode === "via" ? viaLabel : (names.serviceLabel || p.serviceId)
|
|
return `${p.clientName} · ${mid}`
|
|
}
|
|
|
|
export function formatServicePathTitle(label: string, serviceLabel: string): string {
|
|
const svc = serviceLabel.trim()
|
|
if (!svc) return label
|
|
if (label.includes(svc)) return label
|
|
return `${label} · ${svc}`
|
|
}
|