From 02d599beabab962392825e12d115a7456660e6f5 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sat, 12 Oct 2024 17:56:35 -0500 Subject: [PATCH] Add auth schemas --- src/schemas/soapbox/soapbox-auth.ts | 20 ++++++++++++++++++++ src/schemas/token.ts | 12 ++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/schemas/soapbox/soapbox-auth.ts create mode 100644 src/schemas/token.ts diff --git a/src/schemas/soapbox/soapbox-auth.ts b/src/schemas/soapbox/soapbox-auth.ts new file mode 100644 index 000000000..d95a41603 --- /dev/null +++ b/src/schemas/soapbox/soapbox-auth.ts @@ -0,0 +1,20 @@ +import { z } from 'zod'; + +import { tokenSchema } from 'soapbox/schemas/token'; +import { coerceObject, filteredArray } from 'soapbox/schemas/utils'; + +const authUserSchema = z.object({ + access_token: z.string(), + id: z.string(), + url: z.string().url(), +}); + +const soapboxAuthSchema = coerceObject({ + tokens: filteredArray(tokenSchema), + users: filteredArray(authUserSchema), + me: z.string().url().nullable().catch(null), +}); + +type SoapboxAuth = z.infer; + +export { soapboxAuthSchema, SoapboxAuth }; \ No newline at end of file diff --git a/src/schemas/token.ts b/src/schemas/token.ts new file mode 100644 index 000000000..b32019a5a --- /dev/null +++ b/src/schemas/token.ts @@ -0,0 +1,12 @@ +import { z } from 'zod'; + +const tokenSchema = z.object({ + access_token: z.string(), + token_type: z.string(), + scope: z.string(), + created_at: z.number(), +}); + +type Token = z.infer; + +export { tokenSchema, Token }; \ No newline at end of file