← back to AbramsOS

lib/plaid-client.js

27 lines

const { Configuration, PlaidApi, PlaidEnvironments, Products, CountryCode } = require('plaid');

function client() {
  const env = process.env.PLAID_ENV || 'sandbox';
  const clientId = process.env.PLAID_CLIENT_ID;
  const secret = process.env.PLAID_SECRET;
  if (!clientId || !secret) {
    throw new Error('Plaid not configured. Set PLAID_CLIENT_ID + PLAID_SECRET (and optional PLAID_ENV) via /secrets. Sandbox creds are free at https://dashboard.plaid.com.');
  }
  const cfg = new Configuration({
    basePath: PlaidEnvironments[env],
    baseOptions: {
      headers: { 'PLAID-CLIENT-ID': clientId, 'PLAID-SECRET': secret },
    },
  });
  return new PlaidApi(cfg);
}

const PRODUCTS = [Products.Transactions];
const COUNTRIES = [CountryCode.Us];

function isConfigured() {
  return Boolean(process.env.PLAID_CLIENT_ID && process.env.PLAID_SECRET);
}

module.exports = { client, isConfigured, PRODUCTS, COUNTRIES };