Fix:Implement function to handle boolean strings
This commit is contained in:
parent
06ad2249d6
commit
7b26b029de
|
@ -2,6 +2,7 @@ import { devFragment } from '@/config/fragments/dev';
|
||||||
import { dockerFragment } from '@/config/fragments/docker';
|
import { dockerFragment } from '@/config/fragments/docker';
|
||||||
import { createConfigLoader } from 'neat-config';
|
import { createConfigLoader } from 'neat-config';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
|
import { booleanSchema } from './schema';
|
||||||
|
|
||||||
const fragments = {
|
const fragments = {
|
||||||
dev: devFragment,
|
dev: devFragment,
|
||||||
|
@ -13,7 +14,7 @@ export const ormConfigSchema = z.object({
|
||||||
// connection URL for postgres database
|
// connection URL for postgres database
|
||||||
connection: z.string(),
|
connection: z.string(),
|
||||||
// whether to use SSL for the connection
|
// whether to use SSL for the connection
|
||||||
ssl: z.coerce.boolean().default(false),
|
ssl: booleanSchema,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
|
|
||||||
|
export const booleanSchema = z.preprocess((val) => val === 'true', z.boolean());
|
||||||
|
|
||||||
export const configSchema = z.object({
|
export const configSchema = z.object({
|
||||||
server: z
|
server: z
|
||||||
.object({
|
.object({
|
||||||
|
@ -11,13 +13,13 @@ export const configSchema = z.object({
|
||||||
|
|
||||||
// disable cross origin restrictions, allow any site.
|
// disable cross origin restrictions, allow any site.
|
||||||
// overwrites the cors option above
|
// overwrites the cors option above
|
||||||
allowAnySite: z.coerce.boolean().default(false),
|
allowAnySite: booleanSchema,
|
||||||
|
|
||||||
// should it trust reverse proxy headers? (for ip gathering)
|
// should it trust reverse proxy headers? (for ip gathering)
|
||||||
trustProxy: z.coerce.boolean().default(false),
|
trustProxy: booleanSchema,
|
||||||
|
|
||||||
// should it trust cloudflare headers? (for ip gathering, cloudflare has priority)
|
// should it trust cloudflare headers? (for ip gathering, cloudflare has priority)
|
||||||
trustCloudflare: z.coerce.boolean().default(false),
|
trustCloudflare: booleanSchema,
|
||||||
|
|
||||||
// prefix for where the instance is run on. for example set it to /backend if you're hosting it on example.com/backend
|
// prefix for where the instance is run on. for example set it to /backend if you're hosting it on example.com/backend
|
||||||
// if this is set, do not apply url rewriting before proxing
|
// if this is set, do not apply url rewriting before proxing
|
||||||
|
@ -30,7 +32,7 @@ export const configSchema = z.object({
|
||||||
format: z.enum(['json', 'pretty']).default('pretty'),
|
format: z.enum(['json', 'pretty']).default('pretty'),
|
||||||
|
|
||||||
// show debug logs?
|
// show debug logs?
|
||||||
debug: z.coerce.boolean().default(false),
|
debug: booleanSchema,
|
||||||
})
|
})
|
||||||
.default({}),
|
.default({}),
|
||||||
postgres: z.object({
|
postgres: z.object({
|
||||||
|
@ -38,19 +40,19 @@ export const configSchema = z.object({
|
||||||
connection: z.string(),
|
connection: z.string(),
|
||||||
|
|
||||||
// run all migrations on boot of the application
|
// run all migrations on boot of the application
|
||||||
migrateOnBoot: z.coerce.boolean().default(false),
|
migrateOnBoot: booleanSchema,
|
||||||
|
|
||||||
// try to sync the schema on boot, useful for development
|
// try to sync the schema on boot, useful for development
|
||||||
// will always keep the database schema in sync with the connected database
|
// will always keep the database schema in sync with the connected database
|
||||||
// it is extremely destructive, do not use it EVER in production
|
// it is extremely destructive, do not use it EVER in production
|
||||||
syncSchema: z.coerce.boolean().default(false),
|
syncSchema: booleanSchema,
|
||||||
|
|
||||||
// Enable debug logging for MikroORM - Outputs queries and entity management logs
|
// Enable debug logging for MikroORM - Outputs queries and entity management logs
|
||||||
// Do NOT use in production, leaks all sensitive data
|
// Do NOT use in production, leaks all sensitive data
|
||||||
debugLogging: z.coerce.boolean().default(false),
|
debugLogging: booleanSchema,
|
||||||
|
|
||||||
// Enable SSL for the postgres connection
|
// Enable SSL for the postgres connection
|
||||||
ssl: z.coerce.boolean().default(false),
|
ssl: booleanSchema,
|
||||||
}),
|
}),
|
||||||
crypto: z.object({
|
crypto: z.object({
|
||||||
// session secret. used for signing session tokens
|
// session secret. used for signing session tokens
|
||||||
|
@ -65,7 +67,7 @@ export const configSchema = z.object({
|
||||||
captcha: z
|
captcha: z
|
||||||
.object({
|
.object({
|
||||||
// enabled captchas on register
|
// enabled captchas on register
|
||||||
enabled: z.coerce.boolean().default(false),
|
enabled: booleanSchema,
|
||||||
|
|
||||||
// captcha secret
|
// captcha secret
|
||||||
secret: z.string().min(1).optional(),
|
secret: z.string().min(1).optional(),
|
||||||
|
@ -76,7 +78,7 @@ export const configSchema = z.object({
|
||||||
ratelimits: z
|
ratelimits: z
|
||||||
.object({
|
.object({
|
||||||
// enabled captchas on register
|
// enabled captchas on register
|
||||||
enabled: z.coerce.boolean().default(false),
|
enabled: booleanSchema,
|
||||||
redisUrl: z.string().optional(),
|
redisUrl: z.string().optional(),
|
||||||
})
|
})
|
||||||
.default({}),
|
.default({}),
|
||||||
|
|
Loading…
Reference in New Issue