From f84576b6beb95ec8530112bc6c8825dccb7f621e Mon Sep 17 00:00:00 2001 From: cswimr Date: Sat, 8 Feb 2025 10:24:26 -0600 Subject: [PATCH] refactor hash-format and add Side enum --- src/{hashFormat.ts => enums/hash-format.ts} | 0 src/enums/side.ts | 17 +++++++++++++++++ src/parser.ts | 10 ++++++---- src/provider.ts | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) rename src/{hashFormat.ts => enums/hash-format.ts} (100%) create mode 100644 src/enums/side.ts diff --git a/src/hashFormat.ts b/src/enums/hash-format.ts similarity index 100% rename from src/hashFormat.ts rename to src/enums/hash-format.ts diff --git a/src/enums/side.ts b/src/enums/side.ts new file mode 100644 index 0000000..eebd1a3 --- /dev/null +++ b/src/enums/side.ts @@ -0,0 +1,17 @@ +export enum Side { + "Both" = "both", + "Client" = "client", + "Server" = "server", +} + +export function isValidSide(side: string | undefined): Side { + if (side == undefined) { + return Side.Both; + } + + if (Object.values(Side).includes(side.toLowerCase() as Side)) { + return side.toLowerCase() as Side; + } else { + throw new Error("Invalid side!"); + } +} diff --git a/src/parser.ts b/src/parser.ts index 6d6516f..1199562 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -6,12 +6,13 @@ import { CurseForgeProvider, GitHubProvider, } from "./provider"; -import { HashFormat, isValidHashFormat } from "./hashFormat"; +import { HashFormat, isValidHashFormat } from "./enums/hash-format"; +import { isValidSide, type Side } from "./enums/side"; export interface Metafile { name: string; filename: string; - side: "server" | "client" | "both" | undefined; + side: Side; provider: UrlProvider; option: Option; } @@ -50,11 +51,12 @@ export class IndexFileEntry { } const fileContent = await this.file.fetchContents(); const parsed = toml.parse(fileContent); + const side = isValidSide(parsed.side); const metafile: Metafile = { name: parsed.name, filename: parsed.filename, - side: parsed.side, + side: side, provider: this.parseProvider(parsed), option: { optional: parsed.option?.optional || false, @@ -136,7 +138,7 @@ export async function parsePackwizIndex( (file: { file: string; hash: string; - hashFormat: HashFormats; + hashFormat: HashFormat; alias?: string; metafile?: boolean; preserve?: boolean; diff --git a/src/provider.ts b/src/provider.ts index fc86f8b..dee739e 100644 --- a/src/provider.ts +++ b/src/provider.ts @@ -1,5 +1,5 @@ import Resource from "./resource"; -import { HashFormat } from "./hashFormat"; +import { HashFormat } from "./enums/hash-format"; export class UrlProvider { constructor(