Files
2026-06-21 21:37:07 +09:00

69 lines
1.7 KiB
TypeScript

const requiredForSetup = ['MNIE_SETUP_PASSWORD', 'MNIE_SETUP_PASSWORD_HASH'] as const
const runtimeDefaults = {
PORT: '8787',
MNIE_DATABASE_PATH: './data/mnie-app.sqlite',
MNIE_KEYRING_BACKEND: 'platform',
MNIE_ORIGIN: 'http://127.0.0.1:5173',
MNIE_RP_ID: '127.0.0.1',
}
const optionalUrls = [
'SBI_AUTH_BASE_URL',
'SBI_MTS_BASE_URL',
'SBI_IZANAGI_BASE_URL',
'MNIE_ORIGIN',
'MNIE_CORS_ORIGIN',
]
const present = (key: string) => Boolean(process.env[key]?.trim())
const validateUrl = (key: string) => {
const value = process.env[key]
if (!value) return undefined
try {
new URL(value)
return undefined
} catch {
return `${key} must be a valid URL`
}
}
const messages: string[] = []
for (const [key, fallback] of Object.entries(runtimeDefaults)) {
if (!present(key)) messages.push(`${key} is not set; runtime default is ${fallback}`)
}
for (const key of optionalUrls) {
const message = validateUrl(key)
if (message) messages.push(message)
}
if (!requiredForSetup.some(present)) {
messages.push(
'Set MNIE_SETUP_PASSWORD or MNIE_SETUP_PASSWORD_HASH before first owner passkey setup',
)
}
if (process.env.MNIE_KEYRING_BACKEND === 'sqlite' && !present('MNIE_KEYRING_SECRET')) {
messages.push('Set MNIE_KEYRING_SECRET when MNIE_KEYRING_BACKEND=sqlite')
}
if (
!present('SBI_AUTH_BASE_URL') ||
!present('SBI_MTS_BASE_URL') ||
!present('SBI_IZANAGI_BASE_URL')
) {
messages.push(
'Set SBI_AUTH_BASE_URL, SBI_MTS_BASE_URL, and SBI_IZANAGI_BASE_URL before connecting an SBI session with domestic issue search',
)
}
if (messages.length === 0) {
console.log('env:check ok')
} else {
console.log('env:check notices:')
for (const message of messages) console.log(`- ${message}`)
}