2025-11-21 08:31:02 +01:00
|
|
|
import { z } from "zod";
|
2025-04-08 16:01:10 +02:00
|
|
|
import { url } from "../common.ts";
|
|
|
|
|
import { TextContentFormatSchema } from "../contentformat.ts";
|
|
|
|
|
import { EntitySchema } from "../entity.ts";
|
|
|
|
|
|
|
|
|
|
export const GroupSchema = EntitySchema.extend({
|
|
|
|
|
type: z.literal("pub.versia:groups/Group"),
|
|
|
|
|
name: TextContentFormatSchema.nullish(),
|
|
|
|
|
description: TextContentFormatSchema.nullish(),
|
|
|
|
|
open: z.boolean().nullish(),
|
|
|
|
|
members: url,
|
|
|
|
|
notes: url.nullish(),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export const GroupSubscribeSchema = EntitySchema.extend({
|
|
|
|
|
type: z.literal("pub.versia:groups/Subscribe"),
|
|
|
|
|
uri: z.null().optional(),
|
|
|
|
|
subscriber: url,
|
|
|
|
|
group: url,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export const GroupUnsubscribeSchema = EntitySchema.extend({
|
|
|
|
|
type: z.literal("pub.versia:groups/Unsubscribe"),
|
|
|
|
|
uri: z.null().optional(),
|
|
|
|
|
subscriber: url,
|
|
|
|
|
group: url,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export const GroupSubscribeAcceptSchema = EntitySchema.extend({
|
|
|
|
|
type: z.literal("pub.versia:groups/SubscribeAccept"),
|
|
|
|
|
uri: z.null().optional(),
|
|
|
|
|
subscriber: url,
|
|
|
|
|
group: url,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export const GroupSubscribeRejectSchema = EntitySchema.extend({
|
|
|
|
|
type: z.literal("pub.versia:groups/SubscribeReject"),
|
|
|
|
|
uri: z.null().optional(),
|
|
|
|
|
subscriber: url,
|
|
|
|
|
group: url,
|
|
|
|
|
});
|