From 97e31d024afec3e06a0bf8993889317d120e7518 Mon Sep 17 00:00:00 2001 From: Alexandre Marques Date: Sun, 4 Feb 2024 17:51:32 +0000 Subject: [PATCH] chore: fix ignored adapters path --- .gitignore | 1 - src/lib/adapters/dotenv-adapter/index.ts | 36 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/lib/adapters/dotenv-adapter/index.ts diff --git a/.gitignore b/.gitignore index d95dc44..8331767 100644 --- a/.gitignore +++ b/.gitignore @@ -92,7 +92,6 @@ out # Dist dist -*-adapter/ # Gatsby files .cache/ diff --git a/src/lib/adapters/dotenv-adapter/index.ts b/src/lib/adapters/dotenv-adapter/index.ts new file mode 100644 index 0000000..22b1bca --- /dev/null +++ b/src/lib/adapters/dotenv-adapter/index.ts @@ -0,0 +1,36 @@ +import { parse } from "dotenv"; +import { readFile } from "fs/promises"; +import { Adapter } from "../../../types"; +import { filterByPrefixKey } from "../utils"; + +export type DotEnvAdapterProps = { + path: string; + prefixKey?: string; +}; + +const ADAPTER_NAME = "dotenv adapter"; + +export const dotEnvAdapter = ({ path, prefixKey }: DotEnvAdapterProps): Adapter => { + return { + name: ADAPTER_NAME, + read: async () => { + try { + const data = await readFile(path, "utf-8"); + + const parsedData = parse(data) || {}; + + if (prefixKey) { + return filterByPrefixKey(parsedData, prefixKey); + } + + return parsedData; + } catch (error) { + throw new Error( + `Failed to parse / read .env file at ${path}: ${ + error instanceof Error ? error.message : error + }`, + ); + } + }, + }; +};