Moved to zod
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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 }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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, "")
|
||||
|
||||
Reference in New Issue
Block a user