feat(federation): 👽 Update to Versia 0.5

This commit is contained in:
Jesse Wierzbinski 2025-02-13 18:03:04 +01:00
parent afec384a51
commit 5114df4454
No known key found for this signature in database
8 changed files with 220 additions and 31 deletions

View file

@ -0,0 +1,40 @@
import { z } from "zod";
import { EntitySchema } from "../base.ts";
import { TextOnlyContentFormatSchema } from "../content_format.ts";
export const GroupSchema = EntitySchema.extend({
type: z.literal("pub.versia:groups/Group"),
name: TextOnlyContentFormatSchema.optional().nullable(),
description: TextOnlyContentFormatSchema.optional().nullable(),
open: z.boolean().optional().nullable(),
members: z.string().url(),
notes: z.string().url().optional().nullable(),
});
export const GroupSubscribeSchema = EntitySchema.extend({
type: z.literal("pub.versia:groups/Subscribe"),
uri: z.null().optional(),
subscriber: z.string().url(),
group: z.string().url(),
});
export const GroupUnsubscribeSchema = EntitySchema.extend({
type: z.literal("pub.versia:groups/Unsubscribe"),
uri: z.null().optional(),
subscriber: z.string().url(),
group: z.string().url(),
});
export const GroupSubscribeAcceptSchema = EntitySchema.extend({
type: z.literal("pub.versia:groups/SubscribeAccept"),
uri: z.null().optional(),
subscriber: z.string().url(),
group: z.string().url(),
});
export const GroupSubscribeRejectSchema = EntitySchema.extend({
type: z.literal("pub.versia:groups/SubscribeReject"),
uri: z.null().optional(),
subscriber: z.string().url(),
group: z.string().url(),
});

View file

@ -10,7 +10,7 @@ import {
AudioOnlyContentFormatSchema,
ImageOnlyContentFormatSchema,
} from "../content_format.ts";
import { isISOString } from "../regex.ts";
import { ianaTimezoneRegex, isISOString } from "../regex.ts";
/**
* @description Vanity extension entity
@ -103,5 +103,10 @@ export const VanityExtensionSchema = z
.nullable(),
location: z.string().optional().nullable(),
aliases: z.array(z.string().url()).optional().nullable(),
timezone: z
.string()
.regex(ianaTimezoneRegex, "must be a valid IANA timezone")
.optional()
.nullable(),
})
.strict();