lean4-code-actions
Version:
Refactorings and snippets for Lean 4
35 lines (24 loc) • 899 B
text/typescript
import { isEqualByD } from 'libs/utils/lodash'
import { getArraySchema } from 'libs/utils/zod'
import { z } from 'zod'
import { PermissionsSchema } from './Permission'
import { PersonSchema } from './Person'
export const RoleSchema = z.object({
person: PersonSchema,
permissions: PermissionsSchema,
}).describe('Role')
export const RoleUidSchema = RoleSchema.pick({
})
export const RolesSchema = getArraySchema(RoleSchema, parseRoleUid)
export type Role = z.infer<typeof RoleSchema>
export type RoleUid = z.infer<typeof RoleUidSchema>
export function parseRole(role: Role): Role {
return RoleSchema.parse(role)
}
export function parseRoles(roles: Role[]): Role[] {
return RolesSchema.parse(roles)
}
export function parseRoleUid(roleUid: RoleUid): RoleUid {
return RoleUidSchema.parse(roleUid)
}
export const isEqualRole = (a: Role) => (b: Role) => isEqualByD(a, b, parseRoleUid)