import { getDuplicatesRefinement } from 'libs/utils/zod' import { identity } from 'remeda' import { z } from 'zod' export const AbsolutePathSchema = z.string().regex(new RegExp('^(/[^\\s/]+)+$')).describe('AbsolutePath') export const AbsolutePathsSchema = z.array(AbsolutePathSchema) .superRefine(getDuplicatesRefinement('AbsolutePath', identity)) export type AbsolutePath = z.infer export function parseAbsolutePath(absolutePath: AbsolutePath): AbsolutePath { return AbsolutePathSchema.parse(absolutePath) } export function parseAbsolutePaths(absolutePaths: AbsolutePath[]): AbsolutePath[] { return AbsolutePathsSchema.parse(absolutePaths) } export const isEqualAbsolutePath = (a: AbsolutePath) => (b: AbsolutePath) => a === b