11import { z } from "zod" ;
22import fs from "fs/promises" ;
33import merge from "deepmerge" ;
4+ import { isServer } from "solid-js/web" ;
45
5- const configPath = `${ process . cwd ( ) } /config.json` ;
6+ const configPath = process . cwd ?. ( ) && `${ process . cwd ( ) } /config.json` ;
67
78const schemaConfig = z . object ( {
89 database : z . object ( {
@@ -20,7 +21,7 @@ const schemaConfig = z.object({
2021 } ) ,
2122} ) ;
2223
23- const parseEnv = ( { prefix = "" , envs = process . env } = { } ) => {
24+ const parseEnv = ( { prefix = "" , envs = process . env ?? { } } = { } ) => {
2425 const parsed = { } as any ;
2526 Object . entries ( envs ) . forEach ( ( [ key , value ] ) => {
2627 const seq = ( obj : any , arr : Array < string > , v : string | undefined ) => {
@@ -36,10 +37,11 @@ const parseEnv = ({ prefix = "", envs = process.env } = {}) => {
3637 const keyArr = key . split ( "_" ) . map ( ( e ) => e . toLocaleLowerCase ( ) ) ;
3738 seq ( parsed , keyArr , value ) ;
3839 } ) ;
39- return prefix !== "" ? parsed ?. [ prefix ] : parsed ;
40+ return prefix !== "" ? parsed ?. [ prefix ] ?? { } : parsed ;
4041} ;
4142
4243const parseJSON = async ( ) => {
44+ if ( ! configPath ) return { } ;
4345 try {
4446 return JSON . parse ( ( await fs . readFile ( configPath ) ) . toString ( ) ) ;
4547 } catch ( e ) {
@@ -54,4 +56,4 @@ const getConfig = async () => {
5456 return config ;
5557} ;
5658
57- export const config = schemaConfig . parse ( await getConfig ( ) ) ;
59+ export const config = isServer ? schemaConfig . parse ( await getConfig ( ) ) : { } ;
0 commit comments