Files
optima/src/constants.ts
T

70 lines
1.9 KiB
TypeScript

import { readFileSync } from "fs";
import { PrismaPg } from "@prisma/adapter-pg";
import { Prisma, PrismaClient } from "../generated/prisma/client";
import * as msal from "@azure/msal-node";
import { Server } from "socket.io";
import { Server as Engine } from "@socket.io/bun-engine";
import axios from "axios";
const connectionString = `${process.env.DATABASE_URL}`;
const adapter = new PrismaPg({ connectionString });
interface EnvKey {
PORT: number;
}
// ENV CONSTANTS
export const PORT = process.env.PORT;
export const prisma = new PrismaClient({ adapter });
export const sessionDuration = 30 * 24 * 60 * 60000;
export const accessTokenDuration = "10min";
export const refreshTokenDuration = "30d";
export const accessTokenPrivateKey =
readFileSync(`.accessToken.key`).toString();
export const refreshTokenPrivateKey =
readFileSync(`.refreshToken.key`).toString();
export const permissionsPrivateKey = readFileSync(`.permissions.key`);
export const secureValuesPrivateKey =
readFileSync(`.secureValues.key`).toString();
export const secureValuesPublicKey = readFileSync(
`public-keys/.secureValues.pub`,
).toString();
// Microsoft Auth Constants
const msalConfig: msal.Configuration = {
auth: {
clientId: process.env.MICROSOFT_CLIENT_ID!,
authority: `https://login.microsoftonline.com/${process.env.MICROSOFT_TENANT_ID!}`,
clientSecret: process.env.MICROSOFT_CLIENT_SECRET!,
},
};
// MSAL Client Instance
export const msalClient = new msal.ConfidentialClientApplication(msalConfig);
// Socket.io
const io = new Server();
const authIO = io.of("/auth_callback");
const engine = new Engine();
io.bind(engine);
export { io, engine };
// Connectwise API Client
const connectWiseApi = axios.create({
baseURL: `https://ttscw.totaltech.net/v4_6_release/apis/3.0/`,
headers: {
Authorization: `Basic ${process.env.CW_BASIC_TOKEN}`,
clientId: `${process.env.CW_CLIENT_ID}`,
"Content-Type": "application/json",
},
});
export { connectWiseApi };