Skip to content

Commit c579f58

Browse files
committed
add env validation utility
1 parent 005d72b commit c579f58

2 files changed

Lines changed: 27 additions & 2 deletions

File tree

src/slack/app.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { App } from '@slack/bolt'
2+
import { requiredString } from '@utils/env.ts'
23

34
export const app = new App({
4-
token: process.env.SLACK_BOT_TOKEN,
5-
appToken: process.env.SLACK_APP_TOKEN,
5+
token: requiredString('SLACK_BOT_TOKEN'),
6+
appToken: requiredString('SLACK_APP_TOKEN'),
67
socketMode: true,
78
})

src/utils/env.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
type EnvVarName = keyof typeof process.env
2+
3+
export function requiredString(name: EnvVarName): string {
4+
const value = process.env[name]
5+
if (!value) {
6+
throw new Error(`${name} is required`)
7+
}
8+
9+
return value
10+
}
11+
12+
export function positiveInt(name: EnvVarName, defaultValue: number): number {
13+
const raw = process.env[name]
14+
if (!raw) {
15+
return defaultValue
16+
}
17+
18+
const value = Number(raw)
19+
if (!Number.isInteger(value) || value < 1) {
20+
throw new Error(`${name} must be a positive integer`)
21+
}
22+
23+
return value
24+
}

0 commit comments

Comments
 (0)