🌳
pt0/serverF/secretsF/getSecretF.mts
1import fs from 'fs'
3import { pathDownJoin } from '../pathF.mts'
5import { SecretNotExistErr, type secretNameType, type secretStrType } from './getPlainSecAI.mts'
7const readJsonSecretOrThrow = (secretPath: string) => {
8 try { return json1Parse(fs.readFileSync(secretPath, 'utf-8')) as secretObjType }
9 catch (err) { if ((err as NodeJS.ErrnoException).code === 'ENOENT') throw new SecretNotExistErr(secretPath); throw err }
12export type secretValType = secretObjType | secretStrType
14export type secretObjType = any & { readonly __brand: unique symbol }
16const jsonSecretsH : Record<secretNameType, secretObjType> = {}
17export const getReqJsonSecret = (secName : secretNameType) => {
18 const existJson = jsonSecretsH[secName]
19 if (existJson) return existJson
20 const secretPath = pathDownJoin(secretsDir, secName)
21 return jsonSecretsH[secName] = readJsonSecretOrThrow(secretPath)
24export const getOptJsonSecret = (secName : secretNameType) => {
25 try { return getReqJsonSecret(secName) }
26 catch (err) { if (err instanceof SecretNotExistErr) return undefined; throw err }