Files
ncd-fe/packages/pl-api/lib/entities/application.ts
nicole mikołajczyk ad00129411 pl-api: migrate to oxfmt+oxlint
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2026-02-15 03:00:05 +01:00

60 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,
};