diff --git a/.env.sample b/.env.sample new file mode 100644 index 0000000..2387a6f --- /dev/null +++ b/.env.sample @@ -0,0 +1 @@ +API_KEY= \ No newline at end of file diff --git a/package.json b/package.json index 555f3ad..c84c560 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "@types/jest": "^29.5.3", "@types/node": "^20.4.8", "class-validator": "^0.14.0", + "dotenv": "^16.3.1", "jest": "^29.6.2", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e456cf5..4838154 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,6 +15,9 @@ devDependencies: class-validator: specifier: ^0.14.0 version: 0.14.0 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 jest: specifier: ^29.6.2 version: 29.6.2(@types/node@20.4.8)(ts-node@10.9.1) @@ -3191,6 +3194,11 @@ packages: webidl-conversions: 4.0.2 dev: true + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + dev: true + /ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: diff --git a/__tests__/services/message.spec.ts b/src/services/message/message.spec.ts similarity index 88% rename from __tests__/services/message.spec.ts rename to src/services/message/message.spec.ts index e6c10de..91db02e 100644 --- a/__tests__/services/message.spec.ts +++ b/src/services/message/message.spec.ts @@ -1,13 +1,13 @@ -import { Message } from '../../src/services' +import { Message } from './message' import { ISendBulkMessage, ISendMessage, ISendMessageResponse, -} from '../../src/types' +} from '../../types' +import { keys } from '../../utils/env' + +const message = new Message(keys[0]) -const message = new Message( - 'TLaURAdBvnUNS9sEbugcE2gyRdKd1rNPSVxAG3fQp9sfbtpVh6575KoTon2Fv9' -) const mockMessage: ISendMessage = { to: '+2348012345678', sms: 'Hello World', diff --git a/src/utils/env.ts b/src/utils/env.ts new file mode 100644 index 0000000..d5941e0 --- /dev/null +++ b/src/utils/env.ts @@ -0,0 +1,34 @@ +import * as path from 'path' +import { config } from 'dotenv' + +// Parsing the env file from the root directory of the project +config({ path: path.join(__dirname, '../../.env') }) + +interface ENV { + API_KEY: string | undefined +} + +interface Config { + API_KEY: string +} + +const getConfig = (): ENV => { + return { + API_KEY: process.env.API_KEY, + } +} + +const getSanitzedConfig = (configSys: ENV): Config => { + for (const [key, value] of Object.entries(configSys)) { + if (value === undefined) { + throw new Error(`Missing key ${key} in .env`) + } + } + return configSys as Config +} + +const configSys = getConfig() + +const sanitizedConfig = getSanitzedConfig(configSys) + +export const keys = [sanitizedConfig.API_KEY]