Files
speckle-server/packages/server/modules/shared/domain/rolesAndScopes/logic.ts
T
Kristaps Fabians Geikins 4b06f42db7 chore(server): run TS files directly (no compilation) (#5134)
* sort of works

* type fixes

* added option to run old way too
2025-07-23 11:20:40 +02:00

18 lines
667 B
TypeScript

import type { UserRoleData } from '@/modules/shared/domain/rolesAndScopes/types'
import type { AvailableRoles } from '@speckle/shared'
import { isUndefined } from 'lodash-es'
/**
* Order roles by weight in descending order (meaning - highest permission roles come first)
*/
export const orderByWeight = <T extends AvailableRoles>(
roles: T[],
definitions: UserRoleData<T>[]
): UserRoleData<T>[] => {
const roleDefinitions = roles
.map((role) => definitions.find((definition) => definition.name === role))
.filter((definition): definition is UserRoleData<T> => !isUndefined(definition))
return roleDefinitions.sort((a, b) => b.weight - a.weight)
}