diff --git a/package-lock.json b/package-lock.json index 2d5f95d..40c368a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "eslint": "^8.54.0", "nodemon": "^3.0.2", "prettier": "^3.1.0", - "ts-node": "^10.9.1", + "ts-node": "^10.9.2", "typescript": "^5.3.2" } }, diff --git a/package.json b/package.json index da0dc80..1af9764 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "eslint": "^8.54.0", "nodemon": "^3.0.2", "prettier": "^3.1.0", - "ts-node": "^10.9.1", + "ts-node": "^10.9.2", "typescript": "^5.3.2" } } diff --git a/src/clients/Client.ts b/src/clients/Client.ts index dc6eff1..100e19c 100644 --- a/src/clients/Client.ts +++ b/src/clients/Client.ts @@ -18,7 +18,6 @@ import dotenv from 'dotenv'; */ - abstract class Client { // log env variables to verify they are loaded @@ -26,11 +25,10 @@ abstract class Client { private infisicalClient: InfisicalSDK; constructor() { + dotenv.config(); this.infisicalClient = new InfisicalSDK({ siteUrl: process.env.INFISICAL_URL, }); - dotenv.config(); - console.log("INFISICAL_URL:", process.env.INFISICAL_URL); } init(): Effect.Effect { @@ -43,9 +41,13 @@ abstract class Client { }) } - getCredential(key: string): Effect.Effect { + getCredential(key: string, checkEnv: boolean = false): Effect.Effect { const self = this; return Effect.gen(function* (this: Client) { + if (checkEnv && process.env[key]) { + yield* Effect.log('Using environment variable for key: ' + key); + return process.env[key]!; + } const secret = yield* Effect.tryPromise({ try: () => self.infisicalClient.secrets().getSecret({ environment: "dev", diff --git a/src/clients/strava/StravaClient.ts b/src/clients/strava/StravaClient.ts index 7c34a8b..26de1b7 100644 --- a/src/clients/strava/StravaClient.ts +++ b/src/clients/strava/StravaClient.ts @@ -24,7 +24,9 @@ class StravaClient extends Client { const superInit = super.init(); return Effect.gen(function* () { yield* superInit; - const refreshToken = yield* self.getCredential('REFRESH_TOKEN'); + // Retrieve credentials from Infisical, for refresh token as it represents user account + // There's an option to check env variables first + const refreshToken = yield* self.getCredential('REFRESH_TOKEN', true); const clientId = yield* self.getCredential('CLIENT_ID'); const clientSecret = yield* self.getCredential('CLIENT_SECRET'); self.auth = makeStravaAuth(