Schedule posts to Bluesky with Cloudflare workers. skyscheduler.work
cf tool bsky-tool cloudflare bluesky schedule bsky service social-media cloudflare-workers
at main 27 lines 985 B view raw
1import * as z from "zod/v4"; 2import { 3 BSKY_MAX_APP_PASSWORD_LENGTH, BSKY_MIN_USERNAME_LENGTH, 4 MAX_DASHBOARD_PASS, MIN_DASHBOARD_PASS 5} from "../limits"; 6import { appPasswordRegex } from "./regexCases"; 7 8export const AccountUpdateSchema = z.object({ 9 username: z.string().trim().toLowerCase() 10 .min(BSKY_MIN_USERNAME_LENGTH, "username too short") 11 .regex(z.regexes.domain, "username must be in the format of a custom domain or USERNAME.bsky.social") 12 .optional() 13 .or(z.literal("")), 14 password: z.string().trim() 15 .min(MIN_DASHBOARD_PASS, "password too short") 16 .max(MAX_DASHBOARD_PASS, "password too long") 17 .optional() 18 .or(z.literal("")), 19 bskyAppPassword: z.string().trim() 20 .max(BSKY_MAX_APP_PASSWORD_LENGTH, "app password too long") 21 .regex(appPasswordRegex, "not a valid bsky app password") 22 .optional() 23 .or(z.literal("")), 24 bskyUserPDS: z.url("PDS should be in the format of an URL").trim() 25 .optional() 26 .or(z.literal("")) 27});