{"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"]}