3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 12:25:02 +00:00

refactor: replace io-ts with zod

This commit is contained in:
Dragory 2024-01-14 14:25:42 +00:00
parent fafaefa1fb
commit 28692962bc
No known key found for this signature in database
161 changed files with 1450 additions and 2105 deletions

View file

@ -1,6 +1,6 @@
import { PluginOptions } from "knub";
import { GuildMemberTimezones } from "../../data/GuildMemberTimezones";
import { makeIoTsConfigParser, mapToPublicFn } from "../../pluginUtils";
import { mapToPublicFn } from "../../pluginUtils";
import { trimPluginDescription } from "../../utils";
import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
import { ResetTimezoneCmd } from "./commands/ResetTimezoneCmd";
@ -12,7 +12,7 @@ import { getGuildTz } from "./functions/getGuildTz";
import { getMemberTz } from "./functions/getMemberTz";
import { inGuildTz } from "./functions/inGuildTz";
import { inMemberTz } from "./functions/inMemberTz";
import { ConfigSchema, TimeAndDatePluginType } from "./types";
import { TimeAndDatePluginType, zTimeAndDateConfig } from "./types";
const defaultOptions: PluginOptions<TimeAndDatePluginType> = {
config: {
@ -39,10 +39,10 @@ export const TimeAndDatePlugin = zeppelinGuildPlugin<TimeAndDatePluginType>()({
description: trimPluginDescription(`
Allows controlling the displayed time/date formats and timezones
`),
configSchema: ConfigSchema,
configSchema: zTimeAndDateConfig,
},
configParser: makeIoTsConfigParser(ConfigSchema),
configParser: (input) => zTimeAndDateConfig.parse(input),
defaultOptions,
// prettier-ignore

View file

@ -1,19 +1,21 @@
import * as t from "io-ts";
import { BasePluginType, guildPluginMessageCommand } from "knub";
import { U } from "ts-toolbelt";
import z from "zod";
import { GuildMemberTimezones } from "../../data/GuildMemberTimezones";
import { tNullable, tPartialDictionary } from "../../utils";
import { tValidTimezone } from "../../utils/tValidTimezone";
import { keys } from "../../utils";
import { zValidTimezone } from "../../utils/zValidTimezone";
import { defaultDateFormats } from "./defaultDateFormats";
export const ConfigSchema = t.type({
timezone: tValidTimezone,
date_formats: tNullable(tPartialDictionary(t.keyof(defaultDateFormats), t.string)),
can_set_timezone: t.boolean,
const zDateFormatKeys = z.enum(keys(defaultDateFormats) as U.ListOf<keyof typeof defaultDateFormats>);
export const zTimeAndDateConfig = z.strictObject({
timezone: zValidTimezone(z.string()),
date_formats: z.record(zDateFormatKeys, z.string()).nullable(),
can_set_timezone: z.boolean(),
});
export type TConfigSchema = t.TypeOf<typeof ConfigSchema>;
export interface TimeAndDatePluginType extends BasePluginType {
config: TConfigSchema;
config: z.infer<typeof zTimeAndDateConfig>;
state: {
memberTimezones: GuildMemberTimezones;
};