Files
ncd-fe/packages/pl-api/lib/entities/application.ts
nicole mikołajczyk b27fb7f6d3 pl-api: fix non-mastodon stuff i guess
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2025-09-25 20:52:43 +02:00

48 lines
1.4 KiB
TypeScript

import * as v from 'valibot';
import { filteredArray } from './utils';
/**
* @category Schemas
* @see {@link https://docs.joinmastodon.org/entities/Application/}
*/
const applicationSchema = v.pipe(v.any(), v.transform((application) => ({
redirect_uris: [application.redirect_uri],
...application,
})), v.object({
name: v.fallback(v.string(), ''),
website: v.fallback(v.optional(v.string()), undefined),
redirect_uris: filteredArray(v.string()),
id: v.fallback(v.optional(v.string()), undefined),
/** @deprecated */
redirect_uri: v.fallback(v.optional(v.string()), undefined),
/** @deprecated */
vapid_key: v.fallback(v.optional(v.string()), undefined),
}));
type Application = v.InferOutput<typeof applicationSchema>;
/**
* @category Schemas
* @see {@link https://docs.joinmastodon.org/entities/Application/#CredentialApplication}
*/
const credentialApplicationSchema = v.pipe(
applicationSchema.pipe[0],
applicationSchema.pipe[1],
v.object({
...applicationSchema.pipe[2].entries,
client_id: v.string(),
client_secret: v.string(),
client_secret_expires_at: v.fallback(v.nullable(v.pipe(v.unknown(), v.transform(Number))), null),
}),
);
/**
* @category Entity types
*/
type CredentialApplication = v.InferOutput<typeof credentialApplicationSchema>;
export { applicationSchema, credentialApplicationSchema, type Application, type CredentialApplication };