UNPKG

appwrite-utils

Version:

`appwrite-utils` is a comprehensive TypeScript library designed to streamline the development process for Appwrite projects. It provides a suite of utilities and helper functions that facilitate data manipulation, schema management, and seamless integrati

51 lines (47 loc) 1.55 kB
import { Permission as AppwritePermission } from "appwrite"; import { z } from "zod"; export const permissionSchema = z .object({ permission: z.string(), target: z.string(), }) .or( z.string().transform((val) => { const trimmedVal = val.trim(); // Adjusted regex to match double quotes const match = trimmedVal.match(/^(\w+)\("([^"]+)"\)$/); if (!match) { throw new Error(`Invalid permission format: ${trimmedVal}`); } return { permission: match[1], target: match[2], }; }) ); export const permissionsSchema = z.array(permissionSchema).optional(); export type Permission = z.infer<typeof permissionSchema>; export type Permissions = z.infer<typeof permissionsSchema>; export const PermissionToAppwritePermission = (permissions: Permissions): string[] => { return permissions?.map(p => { if (typeof p === 'string') { return p; } else { switch (p.permission) { case "read": return AppwritePermission.read(p.target); case "create": return AppwritePermission.create(p.target); case "update": return AppwritePermission.update(p.target); case "delete": return AppwritePermission.delete(p.target); case "write": return AppwritePermission.write(p.target); default: console.log(`Unknown permission: ${p.permission}`); return ''; } } }).filter(p => p !== '') || []; };