Moved to zod

This commit is contained in:
2024-12-24 22:40:03 +01:00
parent 3797fa1c47
commit 5d81665cf8
6 changed files with 188 additions and 70 deletions

View File

@@ -1,19 +0,0 @@
interface ProdEnv {
token: string
dev: string
hypixelapikey: string
redisURI: string
postgresURI: string
}
interface DevEnv {
devtoken: string
clientid: string
devid: string
guildid: string
}
export default interface IEnv {
prod: ProdEnv
dev: DevEnv
}

View File

@@ -6,9 +6,8 @@ import IEvent from "./IEvent"
import IModal from "./IModal"
import ICron from "./ICron"
import IEnv from "./IEnv"
import { IGuild, IGuildData } from "./IGuild"
import { IPlayer, IPlayerData } from "./IPlayer"
export { IAutocomplete, IButton, ICommand, IContextMenu, ICron, IEnv, IEvent, IGuild, IGuildData, IModal, IPlayer, IPlayerData }
export { IAutocomplete, IButton, ICommand, IContextMenu, ICron, IEvent, IGuild, IGuildData, IModal, IPlayer, IPlayerData }

View File

@@ -1,20 +1,49 @@
import { IEnv } from "~/interfaces"
// import { IEnv } from "~/interfaces"
import { z } from "zod"
import { MissingEnvVarsError } from "./Classes.js"
// import "dotenv/config"
const env: IEnv = {
prod: {
token: process.env.TOKEN!,
dev: process.env.DEV!,
hypixelapikey: process.env.HYPIXELAPIKEY!,
redisURI: process.env.REDISURI!,
postgresURI: process.env.POSTGRESURI!
},
dev: {
devtoken: process.env.DEVTOKEN!,
clientid: process.env.CLIENTID!,
devid: process.env.DEVID!,
guildid: process.env.GUILDID!
}
const prodEnvSchema = z.object({
token: z.string(),
dev: z.string(),
hypixelapikey: z.string(),
redisURI: z.string(),
postgresURI: z.string()
})
const devEnvSchema = z.object({
devtoken: z.string(),
clientid: z.string(),
devid: z.string(),
guildid: z.string()
})
const parsedProdEnv = prodEnvSchema.safeParse({
token: process.env.TOKEN,
dev: process.env.DEV,
hypixelapikey: process.env.HYPIXELAPIKEY,
redisURI: process.env.REDISURI,
postgresURI: process.env.POSTGRESURI
})
const parsedDevEnv = devEnvSchema.safeParse({
devtoken: process.env.DEVTOKEN,
clientid: process.env.CLIENTID,
devid: process.env.DEVID,
guildid: process.env.GUILDID
})
if (!parsedProdEnv.success) {
throw new MissingEnvVarsError(parsedProdEnv.error.errors[0].message)
}
if (!parsedDevEnv.success && process.env.NODE_ENV === "dev") {
throw new MissingEnvVarsError(parsedDevEnv.error.errors[0].message)
}
const env = {
prod: parsedProdEnv.data,
dev: parsedDevEnv.data
} as { prod: z.infer<typeof prodEnvSchema>, dev: z.infer<typeof devEnvSchema> }
export default env

View File

@@ -3,7 +3,6 @@ import { YoutubeiExtractor } from "discord-player-youtubei"
import { Redis } from "ioredis"
import { ExtendedClient as Client } from "~/utils/Client.js"
import env from "~/utils/Env.js"
import { MissingEnvVarsError } from "./Classes.js"
import loadAllEvents from "./Events/loadevents.js"
import { log } from "./Logger.js"
@@ -20,7 +19,6 @@ if (process.env.NODE_ENV === "dev" && process.env.TYPESCRIPT === "true") {
class Illegitimate {
async start() {
await this.init()
await loadAllEvents(client, ft)
// await player.extractors.loadDefault()
await player.extractors.loadDefault(ext => ext != "YouTubeExtractor")
@@ -36,24 +34,6 @@ class Illegitimate {
})
}
private async init() {
const prodValues = env.prod
const devValues = env.dev
if (process.env.NODE_ENV === "dev") {
for (const [key, value] of Object.entries(devValues)) {
if (!value) throw new MissingEnvVarsError(`No ${key} specified`)
}
for (const [key, value] of Object.entries(prodValues)) {
if (!value) throw new MissingEnvVarsError(`No ${key} specified`)
}
} else {
for (const [key, value] of Object.entries(prodValues)) {
if (!value) throw new MissingEnvVarsError(`No ${key} specified`)
}
}
}
private loadMethods() {
String.prototype.removeIndents = function(this: string) {
return this.replace(/^ */gm, "")