@companydna/rcp-client
Version:
RCP Client npm package
1 lines • 32.3 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/rcp.ts","../src/helpers/Enums.ts","../src/helpers/SocketHelper.ts","../src/helpers/Api.ts","../src/helpers/Utils.ts"],"sourcesContent":["export { RCP } from './rcp';\n","import Nango from '@nangohq/frontend';\n\nimport {\n getCompany,\n getCompanyUser,\n createCompanyUser,\n getCompanyUserApp,\n createCompanyUserApp,\n checkAuthCredentials,\n syncCompanyUserAppData,\n getApps,\n deleteCompanyUserApp,\n deleteCompanyUser,\n} from './helpers/Api';\nimport { AuthTypes } from './helpers/Enums';\nimport Utils from './helpers/Utils';\nimport {\n ConnectionCredential,\n App,\n ConnectUserAppResponse,\n SyncUserAppDataResponse,\n GetAppResponse,\n} from './models';\nimport SocketHelper from './helpers/SocketHelper';\n\nexport interface RCPConfig {\n secretKey: string;\n socketUrl?: string;\n}\n\nexport class RCP {\n private secretKey: string;\n\n constructor(config: RCPConfig) {\n this.secretKey = config.secretKey;\n if (config.socketUrl) {\n SocketHelper.init(config.socketUrl);\n }\n }\n\n async getApps(): Promise<GetAppResponse> {\n const company = await getCompany(this.secretKey);\n if (!company) {\n return { success: false, message: 'Company not found.' };\n }\n\n const apps = await getApps(this.secretKey);\n\n if (!apps) {\n return { success: false, message: 'Apps not found.' };\n }\n\n return {\n success: true,\n message: 'Apps retrieved successfully.',\n apps: apps,\n };\n }\n\n async connectUserApp(\n app: App,\n userId: number,\n credential?: ConnectionCredential,\n ): Promise<ConnectUserAppResponse> {\n const company = await getCompany(this.secretKey);\n if (!company) {\n return { success: false, message: 'Company not found.' };\n }\n\n let user = await getCompanyUser(this.secretKey, userId);\n if (!user) {\n user = await createCompanyUser(this.secretKey, userId);\n if (!user) {\n return { success: false, message: 'User creation failed.' };\n }\n }\n\n const nango = new Nango({\n publicKey: '213b5d01-4757-40bb-9848-a2ee421ead34',\n });\n const connectionId = `${company.id}-${user.id}-${app.id}`;\n\n const apiCredentials =\n app.auth_type === AuthTypes.ApiKey && credential\n ? {\n apiKey: credential.params.find(\n (param) => param.key === AuthTypes.ApiKey,\n )?.info,\n }\n : undefined;\n\n try {\n await nango.auth(app.integration_id, connectionId, {\n params: credential\n ? Utils.transformArrayToObject(credential.params)\n : {},\n credentials: apiCredentials || {},\n detectClosedAuthWindow: true,\n });\n\n const updatedCredential: ConnectionCredential = credential ?? {\n params: [],\n connectionId: '',\n };\n updatedCredential.connectionId = connectionId;\n\n let companyUserApp = await getCompanyUserApp(\n this.secretKey,\n app.id,\n user.id,\n );\n if (!companyUserApp) {\n companyUserApp = await createCompanyUserApp(\n this.secretKey,\n app.id,\n user.id,\n connectionId,\n );\n if (!companyUserApp) {\n return {\n success: false,\n message: 'User app creation failed.',\n };\n }\n }\n\n const authCheck = await checkAuthCredentials(\n this.secretKey,\n companyUserApp.id,\n );\n if (!authCheck || !authCheck.success) {\n return {\n success: false,\n message: 'Authentication credentials check failed.',\n };\n }\n\n return {\n success: true,\n message: 'Connection successful.',\n companyUserApp: companyUserApp,\n };\n } catch (error: any) {\n return {\n success: false,\n message: `Connection error: ${error.message}`,\n };\n }\n }\n\n async syncUserAppData(\n app: App,\n userId: number,\n ): Promise<SyncUserAppDataResponse> {\n const company = await getCompany(this.secretKey);\n if (!company) {\n return { success: false, message: 'Company not found.' };\n }\n\n const user = await getCompanyUser(this.secretKey, userId);\n if (!user) {\n return { success: false, message: 'Company user not found.' };\n }\n\n const companyUserApp = await getCompanyUserApp(\n this.secretKey,\n app.id,\n user.id,\n );\n if (!companyUserApp) {\n return { success: false, message: 'Company user app not found.' };\n }\n\n try {\n const syncCompanyUserAppDataResponse = await syncCompanyUserAppData(\n this.secretKey,\n companyUserApp.id,\n );\n\n if (\n !syncCompanyUserAppDataResponse ||\n !syncCompanyUserAppDataResponse.success\n ) {\n return {\n success: false,\n message: 'Sync company user app data failed.',\n };\n }\n\n return {\n success: true,\n message: 'Company user app data syncronization started.',\n };\n } catch (error: any) {\n return {\n success: false,\n message: `Connection error: ${error.message}`,\n };\n }\n }\n\n async deleteCompanyUserApp(\n app: App,\n userId: number,\n ): Promise<SyncUserAppDataResponse> {\n const user = await getCompanyUser(this.secretKey, userId);\n if (!user) {\n return { success: false, message: 'Company user not found.' };\n }\n\n const companyUserApp = await getCompanyUserApp(\n this.secretKey,\n app.id,\n user.id,\n );\n if (!companyUserApp) {\n return { success: false, message: 'Company user app not found.' };\n }\n\n try {\n const deleteCompanyUserAppResponse = await deleteCompanyUserApp(\n this.secretKey,\n companyUserApp.id,\n );\n\n if (\n !deleteCompanyUserAppResponse ||\n !deleteCompanyUserAppResponse.success\n ) {\n return {\n success: false,\n message: 'Delete company user app data failed.',\n };\n }\n\n return {\n success: true,\n message: 'Company user app data deletion started.',\n };\n } catch (error: any) {\n return {\n success: false,\n message: `Connection error: ${error.message}`,\n };\n }\n }\n\n async deleteCompanyUser(userId: number): Promise<SyncUserAppDataResponse> {\n try {\n const deleteCompanyUserResponse = await deleteCompanyUser(\n this.secretKey,\n userId,\n );\n\n if (!deleteCompanyUserResponse || !deleteCompanyUserResponse.success) {\n return {\n success: false,\n message: 'Delete company user failed.',\n };\n }\n\n return {\n success: true,\n message: 'Company user deletion started.',\n };\n } catch (error: any) {\n return {\n success: false,\n message: `Connection error: ${error.message}`,\n };\n }\n }\n\n subscribeSocket(handler: (message: any) => void): void {\n SocketHelper.addMessageHandler(handler);\n }\n\n unsubscribeSocket(handler: (message: any) => void): void {\n SocketHelper.removeMessageHandler(handler);\n }\n\n closeSocket(): void {\n SocketHelper.close();\n }\n}\n","export enum AuthTypes {\n OAUTH2 = 'OAUTH2',\n ApiKey = 'API_KEY',\n}\n\nexport enum AppStatus {\n None = '',\n Verified = 'Verified',\n InReview = 'InReview',\n Unverified = 'Unverified',\n}\n\nexport enum CompanyUserStatus {\n None = '',\n Approved = 'Approved',\n Declined = 'Declined',\n InProgress = 'InProgress',\n}\n\nexport enum CompanyUserAppStatus {\n None = '',\n Approved = 'Approved',\n Declined = 'Declined',\n InProgress = 'InProgress',\n}\n\nexport enum CompanyUserAppStatus {\n SYNC_DATA_RESULT = 2,\n UPLOAD_FILES = 3,\n CREATE_INDEX = 4,\n DELETE_DATA_AND_INDEX = 5,\n STREAM_RESULT = 7,\n}\n","import { io, Socket } from 'socket.io-client';\n\nexport type MessageHandler = (message: any) => void;\n\nclass SocketHelper {\n private socketIo?: Socket;\n private messageHandlers: MessageHandler[] = [];\n private pingInterval?: NodeJS.Timeout;\n private lastPongTime: number = Date.now();\n private reconnectAttempts: number = 0;\n private maxReconnectAttempts: number = 5;\n private clientId?: string;\n\n public init(socketUrl: string): void {\n if (!socketUrl) {\n throw new Error('Socket URL is required.');\n }\n\n this.socketIo = io(socketUrl, {\n path: '/socket.io',\n transports: ['websocket', 'polling'],\n secure: true,\n reconnectionAttempts: this.maxReconnectAttempts,\n timeout: 20000,\n });\n\n this.socketIo.on('json', (json: any) => {\n this.messageHandlers.forEach((handler) => handler(json));\n });\n\n this.socketIo.on('clientId', (clientId: any) => {\n this.clientId = clientId;\n console.log('Received clientId:', clientId);\n });\n\n this.socketIo.on('pong', () => {\n this.lastPongTime = Date.now();\n });\n\n this.socketIo.on('disconnect', () => {\n this.handleReconnect();\n });\n\n this.startPing();\n }\n\n private startPing(): void {\n this.pingInterval = setInterval(() => {\n if (this.socketIo && this.socketIo.connected) {\n const currentTime = Date.now();\n if (currentTime - this.lastPongTime > 10000) {\n console.warn('No pong received from server. Reconnecting...');\n this.handleReconnect();\n this.clearPingInterval();\n } else {\n this.socketIo.emit('ping');\n }\n }\n }, 5000);\n }\n\n private handleReconnect(): void {\n if (this.reconnectAttempts < this.maxReconnectAttempts) {\n this.reconnectAttempts++;\n this.clearPingInterval();\n this.socketIo?.connect();\n this.startPing();\n } else {\n console.error(\n 'Max reconnect attempts reached. Stopping reconnection attempts.',\n );\n this.clearPingInterval();\n }\n }\n\n private clearPingInterval(): void {\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = undefined;\n }\n }\n\n public close(): void {\n this.socketIo?.disconnect();\n this.clearPingInterval();\n }\n\n public addMessageHandler(handler: MessageHandler): void {\n this.messageHandlers.push(handler);\n }\n\n public removeMessageHandler(handler: MessageHandler): void {\n this.messageHandlers = this.messageHandlers.filter((h) => h !== handler);\n }\n\n public getClientId(): string | undefined {\n return this.clientId;\n }\n}\n\nexport default new SocketHelper();\n","import {\n App,\n Company,\n CompanyUser,\n CompanyUserApp,\n CheckCredentialsResponse,\n SyncCompanyUserAppResponse,\n} from '../models';\nimport { CompanyUserAppStatus, CompanyUserStatus } from './Enums';\nimport SocketHelper from './SocketHelper';\n\nconst API_URL = 'http://localhost:3003/api/v1';\n\nexport async function getApps(secretKey: string): Promise<App[] | undefined> {\n return new Promise(async (resolve) => {\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/getApps`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n },\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: App[] = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n });\n });\n}\n\nexport async function getCompany(\n secretKey: string,\n): Promise<Company | undefined> {\n return new Promise(async (resolve) => {\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/getCompany`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n },\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: Company = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n });\n });\n}\n\nexport async function getCompanyUser(\n secretKey: string,\n userId: number,\n): Promise<CompanyUser | undefined> {\n return new Promise(async (resolve) => {\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/getCompanyUser`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n },\n body: JSON.stringify({\n userId: Number(userId),\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: CompanyUser = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n\nexport async function getCompanyUsers(\n secretKey: string,\n): Promise<CompanyUser[] | undefined> {\n return new Promise(async (resolve) => {\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/getCompanyUsers`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n },\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: CompanyUser[] = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n\nexport async function createCompanyUser(\n secretKey: string,\n userId: number,\n): Promise<CompanyUser | undefined> {\n return new Promise(async (resolve) => {\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/createCompanyUser`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n },\n body: JSON.stringify({\n user_id: Number(userId),\n role_id: 2,\n status: CompanyUserStatus.Approved,\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: CompanyUser = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n\nexport async function deleteCompanyUser(\n secretKey: string,\n userId: number,\n): Promise<any> {\n return new Promise(async (resolve) => {\n const clientId = SocketHelper.getClientId();\n\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/deleteCompanyUser`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n 'client-id': clientId || '',\n },\n body: JSON.stringify({\n userId: Number(userId),\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n resolve(data);\n } else {\n resolve(null);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n\nexport async function getCompanyUserApp(\n secretKey: string,\n appId: number,\n userId: number,\n): Promise<CompanyUserApp | undefined> {\n return new Promise(async (resolve) => {\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/getCompanyUserApp`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n },\n body: JSON.stringify({\n appId: Number(appId),\n userId: Number(userId),\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: CompanyUserApp = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n\nexport async function getCompanyUserApps(\n secretKey: string,\n userId: number,\n): Promise<CompanyUserApp[] | undefined> {\n return new Promise(async (resolve) => {\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/getCompanyUserApps`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n },\n body: JSON.stringify({\n userId: Number(userId),\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: CompanyUserApp[] = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n\nexport async function createCompanyUserApp(\n secretKey: string,\n appId: number,\n userId: number,\n credentials: string,\n): Promise<CompanyUserApp | undefined> {\n return new Promise(async (resolve) => {\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/createCompanyUserApp`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n },\n body: JSON.stringify({\n company_user_id: Number(userId),\n app_id: Number(appId),\n credentials: credentials,\n status: CompanyUserAppStatus.Approved,\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: CompanyUserApp = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n\nexport async function deleteCompanyUserApp(\n secretKey: string,\n companyUserAppId: number,\n): Promise<any> {\n return new Promise(async (resolve) => {\n const clientId = SocketHelper.getClientId();\n\n if (!secretKey) {\n throw new Error('Secret key is required.');\n }\n\n fetch(`${API_URL}/deleteCompanyUserApp`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n 'client-id': clientId || '',\n },\n body: JSON.stringify({\n id: Number(companyUserAppId),\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n resolve(data);\n } else {\n resolve(null);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n\nexport async function checkAuthCredentials(\n secretKey: string,\n companyUserAppId: number,\n): Promise<CheckCredentialsResponse | undefined> {\n return new Promise(async (resolve) => {\n fetch(`${API_URL}/checkAuthCredentials`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n },\n body: JSON.stringify({\n companyUserAppId: Number(companyUserAppId),\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: CheckCredentialsResponse = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n\nexport async function syncCompanyUserAppData(\n secretKey: string,\n companyUserAppId: number,\n): Promise<SyncCompanyUserAppResponse | undefined> {\n return new Promise(async (resolve) => {\n const clientId = SocketHelper.getClientId();\n\n fetch(`${API_URL}/syncCompanyUserAppData`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': secretKey,\n 'client-id': clientId || '',\n },\n body: JSON.stringify({\n companyUserAppId: Number(companyUserAppId),\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n if (data) {\n const result: SyncCompanyUserAppResponse = data;\n\n resolve(result);\n } else {\n resolve(undefined);\n }\n })\n .catch((err) => {\n resolve(undefined);\n });\n });\n}\n","import { ConnectionParam } from '../models/ConnectionParam';\n\nconst transformArrayToObject = (\n params: ConnectionParam[],\n): { [key: string]: string } => {\n return params.reduce<{ [key: string]: string }>((param, current) => {\n param[current.key] = current.info;\n return param;\n }, {});\n};\n\nexport default {\n transformArrayToObject,\n};\n"],"mappings":"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","names":["CompanyUserAppStatus","Nango"]}