UNPKG

parse-dotenv

Version:

Zero dependency .env to object parser

1 lines 2.12 kB
{"version":3,"file":"parse-dotenv.mjs","sources":["../lib/parse-dotenv.ts"],"sourcesContent":["import { resolve } from 'path';\nimport { readFileSync } from 'fs';\n\nconst DEFAULT_ENV_PATH = resolve(process.cwd(), '.env');\nconst NEWLINE = '\\n';\n\ninterface Options {\n\temptyLines?: boolean;\n\tcomments?: boolean;\n}\n\ninterface EnvObject {\n\t[key: string]: any;\n}\n\nconst parseEnv = (\n\tpath?: string,\n\topts: Options = { emptyLines: false }\n): EnvObject => {\n\ttry {\n\t\tconst env = readFileSync(path || DEFAULT_ENV_PATH, {\n\t\t\tencoding: 'UTF-8',\n\t\t});\n\t\tconst obj: EnvObject = {};\n\t\tlet newlineCount = 0;\n\t\tlet commentsCount = 0;\n\n\t\tenv\n\t\t\t.split(NEWLINE)\n\t\t\t.map(\n\t\t\t\t(line): string[] => {\n\t\t\t\t\tif (opts.comments && line.startsWith('#')) {\n\t\t\t\t\t\tcommentsCount += 1;\n\t\t\t\t\t\treturn [`__COMMENT_${commentsCount}__`, line];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (line) {\n\t\t\t\t\t\treturn line.split('=').map(kv => kv.trim());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (opts.emptyLines) {\n\t\t\t\t\t\tnewlineCount += 1;\n\t\t\t\t\t\treturn [`__EMPTYLINE_${newlineCount}__`, ''];\n\t\t\t\t\t}\n\t\t\t\t\treturn [''];\n\t\t\t\t}\n\t\t\t)\n\t\t\t.filter(item => item.length > 1)\n\t\t\t.forEach(item => {\n\t\t\t\tconst [key, value] = item;\n\t\t\t\tobj[key] = value;\n\t\t\t});\n\t\treturn obj;\n\t} catch (error) {\n\t\tthrow new Error(error);\n\t}\n};\n\nexport default parseEnv;\n"],"names":["const","DEFAULT_ENV_PATH","resolve","process","cwd","path","opts","emptyLines","env","readFileSync","encoding","obj","newlineCount","commentsCount","split","map","line","comments","startsWith","kv","trim","filter","item","length","forEach","error","Error"],"mappings":"iEAGAA,IAAMC,EAAmBC,EAAQC,QAAQC,MAAO,gCAa/CC,EACAC,kBAAgB,CAAEC,YAAY,YAGvBC,EAAMC,EAAaJ,GAAQJ,EAAkB,CAClDS,SAAU,UAELC,EAAiB,GACnBC,EAAe,EACfC,EAAgB,SAEpBL,EACEM,MAxBY,MAyBZC,aACCC,UACIV,EAAKW,UAAYD,EAAKE,WAAW,KAE7B,eADPL,GAAiB,QACuBG,GAGrCA,EACIA,EAAKF,MAAM,KAAKC,aAAII,UAAMA,EAAGC,SAGjCd,EAAKC,WAED,iBADPK,GAAgB,QACyB,IAEnC,CAAC,MAGTS,gBAAOC,UAAQA,EAAKC,OAAS,IAC7BC,iBAAQF,GAERX,eAEKA,EACN,MAAOc,SACF,IAAIC,MAAMD"}