Skip to content

Commit

Permalink
fix: zod boolean & pino-loki transport (#15)
Browse files Browse the repository at this point in the history
* fix: zod boolean & pino-loki transport

* docs: update zod ENV schema
  • Loading branch information
fraxken committed Apr 10, 2024
1 parent 01fdafd commit 853411e
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 11 deletions.
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,23 @@ const envSchema = z.object({
TOKEN_CACHE_MS: z.coerce.number().optional().default(1_000 * 60 * 5),
SERVER_PORT: z.coerce.number().optional().default(0),
SERVER_HOST: z.string().optional(),
SERVER_SSL_ENABLED: z.boolean().optional().default(false),
SERVER_SSL_ENABLED: zBoolean("false"),
SERVER_SSL_CERT: z.string().optional(),
SERVER_SSL_KEY: z.string().optional(),
TRUST_PROXY: z.boolean().optional().default(false),
SELF_MONITORING: z.coerce.boolean().optional().default(false)
TRUST_PROXY: zBoolean("false"),
SELF_MONITORING: zBoolean("false")
});
```

Where zBoolean is defined as
```ts
function zBoolean(defaultValue?: "false" | "true") {
const zEnum = z.enum(["true", "false"]).transform((value) => value === "true");

return defaultValue ? zEnum.optional().default(defaultValue) : zEnum;
}
```

## API

### /health
Expand Down
7 changes: 2 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { readFileSync } from "node:fs";
// Import Third-party Dependencies
import { TimeStore } from "@openally/timestore";
import pino from "pino";
import type { LokiOptions } from "pino-loki";

// Import Internal Dependencies
import { buildServer } from "./server.js";
Expand All @@ -27,11 +26,10 @@ const targets: pino.TransportTargetOptions [] = [
}
];
if (env.SELF_MONITORING) {
const lokiTransport = pino.transport<LokiOptions>({
targets.push({
target: "pino-loki",
options: {
batching: true,
interval: 5,
batching: false,
host: env.LOKI_URL,
// Note: allow custom configuration of labels (& others options?)
labels: {
Expand All @@ -40,7 +38,6 @@ if (env.SELF_MONITORING) {
}
}
});
targets.push(lokiTransport);
}

const serverOptions = {
Expand Down
12 changes: 9 additions & 3 deletions src/modules/env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,19 @@ const envSchema = z.object({
TOKEN_CACHE_MS: z.coerce.number().optional().default(1_000 * 60 * 5),
SERVER_PORT: z.coerce.number().optional().default(0),
SERVER_HOST: z.string().optional(),
SERVER_SSL_ENABLED: z.coerce.boolean().optional().default(false),
SERVER_SSL_ENABLED: zBoolean("false"),
SERVER_SSL_CERT: z.string().optional(),
SERVER_SSL_KEY: z.string().optional(),
TRUST_PROXY: z.coerce.boolean().optional().default(false),
SELF_MONITORING: z.coerce.boolean().optional().default(false)
TRUST_PROXY: zBoolean("false"),
SELF_MONITORING: zBoolean("false")
});

function zBoolean(defaultValue?: "false" | "true") {
const zEnum = z.enum(["true", "false"]).transform((value) => value === "true");

return defaultValue ? zEnum.optional().default(defaultValue) : zEnum;
}

export type ENV = z.infer<typeof envSchema>;

export function loadEnv(
Expand Down

0 comments on commit 853411e

Please sign in to comment.