From 9ee85296dcb686379eae90ce67d9a63aef50dca0 Mon Sep 17 00:00:00 2001 From: maciek Date: Mon, 13 Mar 2023 10:27:40 +0100 Subject: [PATCH] chore: switch to .toml files network conf - add zod scheme parsing --- libs/environment/src/hooks/use-environment.ts | 13 +++++++++++-- .../environment/src/utils/validate-configuration.ts | 4 ++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/libs/environment/src/hooks/use-environment.ts b/libs/environment/src/hooks/use-environment.ts index 09eba3148..9821f8830 100644 --- a/libs/environment/src/hooks/use-environment.ts +++ b/libs/environment/src/hooks/use-environment.ts @@ -14,7 +14,10 @@ import type { Environment } from '../types'; import { Networks } from '../types'; import { compileErrors } from '../utils/compile-errors'; import { envSchema } from '../utils/validate-environment'; -import { configSchema } from '../utils/validate-configuration'; +import { + configSchema, + tomlConfigSchema, +} from '../utils/validate-configuration'; type Client = ReturnType; type ClientCollection = { @@ -164,7 +167,13 @@ const fetchConfig = async (url?: string) => { if (url.match(/github(.+)\.toml$/)) { const content = await res.text(); const parsed = tomlParse(content); - cfg = { hosts: parsed.API.GraphQL.Hosts }; + const tomlResults = tomlConfigSchema.parse(parsed); + const { + API: { + GraphQL: { Hosts: hosts }, + }, + } = tomlResults; + cfg = { hosts }; } else { cfg = await res.json(); } diff --git a/libs/environment/src/utils/validate-configuration.ts b/libs/environment/src/utils/validate-configuration.ts index f3c202bd3..6910b7e08 100644 --- a/libs/environment/src/utils/validate-configuration.ts +++ b/libs/environment/src/utils/validate-configuration.ts @@ -3,3 +3,7 @@ import z from 'zod'; export const configSchema = z.object({ hosts: z.array(z.string()), }); + +export const tomlConfigSchema = z.object({ + API: z.object({ GraphQL: z.object({ Hosts: z.array(z.string()) }) }), +});