{"version":3,"file":"index2.cjs","sources":["../src/incogniaApi.ts"],"sourcesContent":["import { IncogniaError } from './errors'\nimport { convertObjectToSnakeCase } from './formatting'\nimport {\n  Method,\n  RegisterFeedbackBodyProps,\n  RegisterFeedbackParamsProps,\n  RegisterLoginProps,\n  RegisterPaymentProps,\n  RegisterSignupProps,\n  RegisterTransactionProps,\n  RegisterWebLoginProps,\n  RegisterWebSignupProps,\n  RegisterWebPaymentProps,\n  SignupResponse,\n  TransactionResponse,\n  TransactionType,\n  WebSignupResponse,\n  WebTransactionResponse,\n  IncogniaApiOptions\n} from './types'\nimport { apiEndpoints } from './endpoints'\nimport { RequestManager } from './request'\n\ntype IncogniaApiConstructor = {\n  clientId: string\n  clientSecret: string\n  options?: IncogniaApiOptions\n}\n\nconst errorMessages = {\n  CLIENT_ID: 'Missing required parameter: clientId',\n  CLIENT_SECRET: 'Missing required parameter: clientSecret',\n  ACCOUNT_ID: 'Missing required parameter: accountId',\n  POLICY_ID: 'Missing required parameter: policyId',\n  EVENT: 'Missing required parameter: event',\n  INIT: 'IncogniaApi not initialized'\n}\n\nexport class IncogniaApi {\n  /*\n   ** Singleton\n   */\n  private static instance?: IncogniaApi\n\n  /*\n   ** Instance properties\n   */\n  readonly requestManager: RequestManager\n\n  /*\n   ** Initialization\n   */\n  private constructor({\n    clientId,\n    clientSecret,\n    options\n  }: IncogniaApiConstructor) {\n    this.requestManager = new RequestManager({\n      clientId,\n      clientSecret,\n      keepAlive: options?.keepAlive,\n      maxRetries: options?.maxRetries,\n      retryDelayMs: options?.retryDelayMs\n    })\n  }\n\n  public static init({\n    clientId,\n    clientSecret,\n    options\n  }: IncogniaApiConstructor): void {\n    if (!IncogniaApi.instance) {\n      if (!clientId) throw new IncogniaError(errorMessages.CLIENT_ID)\n      if (!clientSecret) throw new IncogniaError(errorMessages.CLIENT_SECRET)\n\n      IncogniaApi.instance = new IncogniaApi({\n        clientId,\n        clientSecret,\n        options\n      })\n    }\n  }\n\n  /*\n   ** Static Methods\n   */\n  public static async registerSignup(\n    props: RegisterSignupProps\n  ): Promise<SignupResponse> {\n    const { policyId } = props || {}\n    if (!IncogniaApi.instance) throw new IncogniaError(errorMessages.INIT)\n    if (!policyId) throw new IncogniaError(errorMessages.POLICY_ID)\n\n    return IncogniaApi.instance.#registerSignup(props)\n  }\n\n  public static async registerWebSignup(\n    props: RegisterWebSignupProps\n  ): Promise<WebSignupResponse> {\n    const { policyId } = props || {}\n    if (!IncogniaApi.instance) throw new IncogniaError(errorMessages.INIT)\n    if (!policyId) throw new IncogniaError(errorMessages.POLICY_ID)\n\n    return IncogniaApi.instance.#registerSignup(props)\n  }\n\n  public static async registerLogin(\n    props: RegisterLoginProps\n  ): Promise<TransactionResponse> {\n    const { accountId, policyId } = props || {}\n    if (!IncogniaApi.instance) throw new IncogniaError(errorMessages.INIT)\n    if (!accountId) throw new IncogniaError(errorMessages.ACCOUNT_ID)\n    if (!policyId) throw new IncogniaError(errorMessages.POLICY_ID)\n\n    return IncogniaApi.instance.#registerTransaction({\n      ...props,\n      type: TransactionType.Login\n    })\n  }\n\n  public static async registerWebLogin(\n    props: RegisterWebLoginProps\n  ): Promise<WebTransactionResponse> {\n    const { accountId, policyId } = props || {}\n    if (!IncogniaApi.instance) throw new IncogniaError(errorMessages.INIT)\n    if (!accountId) throw new IncogniaError(errorMessages.ACCOUNT_ID)\n    if (!policyId) throw new IncogniaError(errorMessages.POLICY_ID)\n\n    return IncogniaApi.instance.#registerTransaction({\n      ...props,\n      type: TransactionType.Login\n    })\n  }\n\n  public static async registerPayment(\n    props: RegisterPaymentProps\n  ): Promise<TransactionResponse> {\n    const { accountId, policyId } = props || {}\n    if (!IncogniaApi.instance) throw new IncogniaError(errorMessages.INIT)\n    if (!accountId) throw new IncogniaError(errorMessages.ACCOUNT_ID)\n    if (!policyId) throw new IncogniaError(errorMessages.POLICY_ID)\n\n    return IncogniaApi.instance.#registerTransaction({\n      ...props,\n      type: TransactionType.Payment\n    })\n  }\n\n  public static async registerWebPayment(\n    props: RegisterWebPaymentProps\n  ): Promise<WebTransactionResponse> {\n    const { accountId, policyId } = props || {}\n    if (!IncogniaApi.instance) throw new IncogniaError(errorMessages.INIT)\n    if (!accountId) throw new IncogniaError(errorMessages.ACCOUNT_ID)\n    if (!policyId) throw new IncogniaError(errorMessages.POLICY_ID)\n\n    return IncogniaApi.instance.#registerTransaction({\n      ...props,\n      type: TransactionType.Payment\n    })\n  }\n\n  public static async registerFeedback(\n    bodyParams: RegisterFeedbackBodyProps,\n    queryParams?: RegisterFeedbackParamsProps\n  ): Promise<void> {\n    const { event } = bodyParams || {}\n    if (!IncogniaApi.instance) throw new IncogniaError(errorMessages.INIT)\n    if (!event) throw new IncogniaError(errorMessages.EVENT)\n\n    return IncogniaApi.instance.#registerFeedback(bodyParams, queryParams)\n  }\n\n  /*\n   ** Instance Methods\n   */\n  async #registerSignup(props: RegisterSignupProps | RegisterWebSignupProps) {\n    const data = convertObjectToSnakeCase(props)\n\n    return this.requestManager.requestResource({\n      url: apiEndpoints.SIGNUPS,\n      method: Method.Post,\n      data\n    })\n  }\n\n  async #registerTransaction(props: RegisterTransactionProps) {\n    const data = convertObjectToSnakeCase(props)\n\n    return this.requestManager.requestResource({\n      url: apiEndpoints.TRANSACTIONS,\n      method: Method.Post,\n      data\n    })\n  }\n\n  async #registerFeedback(\n    bodyParams: RegisterFeedbackBodyProps,\n    queryParams?: RegisterFeedbackParamsProps\n  ) {\n    const params = queryParams && convertObjectToSnakeCase(queryParams)\n    const data = convertObjectToSnakeCase(bodyParams)\n\n    return this.requestManager.requestResource({\n      url: apiEndpoints.FEEDBACKS,\n      method: Method.Post,\n      params,\n      data\n    })\n  }\n}\n"],"names":["errorMessages","IncogniaApi","clientId","clientSecret","options","RequestManager","IncogniaError","props","policyId","#registerSignup","accountId","#registerTransaction","TransactionType","bodyParams","queryParams","event","#registerFeedback","data","convertObjectToSnakeCase","apiEndpoints","Method","params"],"mappings":"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"}