{"version":3,"sources":["../src/logger/logger.ts","../src/logger/logger.types.ts","../src/serializer/serializer.ts","../src/serializer/serializer.types.ts","../src/signer/signer.ts","../src/data-source.ts","../src/builder.ts","../src/helper.ts"],"sourcesContent":["import pino from 'pino';\nimport { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { HttpMessageBuilder, HttpMessageFormatter, HttpStatuses } from '@iamnnort/config/http';\nimport { LoggerConfig, LoggerLevels } from './logger.types';\n\nexport class Logger {\n  private logger: pino.Logger;\n\n  private config: Required<LoggerConfig>;\n\n  constructor(config: Partial<LoggerConfig> = {}) {\n    this.config = {\n      name: '',\n      level: LoggerLevels.INFO,\n      ...config,\n    };\n\n    const formatter = new HttpMessageFormatter();\n\n    this.logger = pino(\n      {\n        name: this.config.name,\n        level: this.config.level,\n        timestamp: false,\n      },\n      formatter.makeLogStream(),\n    );\n  }\n\n  trace(message: string | object) {\n    this.logger.trace(message);\n  }\n\n  debug(message: string | object) {\n    this.logger.debug(message);\n  }\n\n  info(message: string | object) {\n    this.logger.info(message);\n  }\n\n  warn(message: string | object) {\n    this.logger.warn(message);\n  }\n\n  error(message: string | object) {\n    this.logger.error(message);\n  }\n\n  fatal(message: string | object) {\n    this.logger.fatal(message);\n  }\n\n  logRequest(request: AxiosRequestConfig) {\n    const messageBuilder = new HttpMessageBuilder({\n      request,\n    });\n\n    const message = messageBuilder.makeMethodText().makeUrlText().build();\n\n    const data = {};\n\n    const requestData = messageBuilder.makeRequestDataObj();\n\n    if (Object.keys(requestData).length > 0) {\n      data['request'] = requestData;\n    }\n\n    this.logger.debug(data, message);\n  }\n\n  logResponse(response: AxiosResponse, duration: number) {\n    const messageBuilder = new HttpMessageBuilder({\n      response,\n      duration,\n    });\n\n    messageBuilder.makeMethodText().makeUrlText().makeStatusText();\n\n    const data = {};\n\n    const requestData = messageBuilder.makeRequestDataObj();\n\n    if (Object.keys(requestData).length > 0) {\n      data['request'] = requestData;\n    }\n\n    if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n      const responseData = messageBuilder.makeResponseDataObj();\n\n      if (Object.keys(responseData).length > 0) {\n        data['response'] = responseData;\n      }\n    }\n\n    const message = messageBuilder.makeDurationText().build();\n\n    this.logger.info(data, message);\n  }\n\n  logError(request: AxiosRequestConfig, error: AxiosError, duration: number) {\n    const messageBuilder = new HttpMessageBuilder({\n      request,\n      error,\n      duration,\n    });\n\n    messageBuilder.makeMethodText().makeUrlText().makeStatusText();\n\n    const data = {};\n\n    const requestData = messageBuilder.makeRequestDataObj();\n\n    if (Object.keys(requestData).length > 0) {\n      data['request'] = requestData;\n    }\n\n    if ([LoggerLevels.TRACE, LoggerLevels.DEBUG].includes(this.config.level)) {\n      const responseData = messageBuilder.makeResponseDataObj();\n\n      if (Object.keys(responseData).length > 0) {\n        data['response'] = responseData;\n      }\n    }\n\n    const message = messageBuilder.makeDurationText().build();\n\n    const status = messageBuilder.makeStatus();\n\n    if (status >= HttpStatuses.INTERNAL_SERVER_ERROR) {\n      this.logger.error(data, message);\n    } else {\n      this.logger.warn(data, message);\n    }\n  }\n\n  makeResponse<T>(response: AxiosResponse) {\n    const loggerMessageBuilder = new HttpMessageBuilder({\n      response,\n    });\n\n    const responseData = loggerMessageBuilder.makeResponse<T>();\n\n    return responseData;\n  }\n\n  makeErrorResponse<T>(error: AxiosError) {\n    const loggerMessageBuilder = new HttpMessageBuilder({\n      error,\n    });\n\n    const errorResponseData = loggerMessageBuilder.makeResponse<T>();\n\n    return errorResponseData;\n  }\n}\n","export { HttpMethods, HttpStatuses } from '@iamnnort/config/http';\n\nexport type LoggerConfig = {\n  name: string;\n  level: LoggerLevels;\n};\n\nexport enum LoggerLevels {\n  FATAL = 'fatal',\n  ERROR = 'error',\n  WARN = 'warn',\n  INFO = 'info',\n  DEBUG = 'debug',\n  TRACE = 'trace',\n}\n","import { stringify } from 'qs';\nimport { SerializerArrayFormats, SerializerConfig } from './serializer.types';\nimport { ParamsSerializerOptions } from 'axios';\n\nexport class Serializer {\n  private config: Required<SerializerConfig>;\n\n  constructor(config: Partial<SerializerConfig> = {}) {\n    this.config = {\n      arrayFormat: SerializerArrayFormats.BRACKETS,\n      ...config,\n    };\n  }\n\n  getConfig(): ParamsSerializerOptions {\n    return {\n      serialize: (params: any) => {\n        return stringify(params, {\n          arrayFormat: this.config.arrayFormat,\n          skipNulls: true,\n        });\n      },\n    };\n  }\n}\n","export type SerializerConfig = {\n  arrayFormat: SerializerArrayFormats;\n};\n\nexport enum SerializerArrayFormats {\n  INDICES = 'indices',\n  BRACKETS = 'brackets',\n  REPEAT = 'repeat',\n  COMMA = 'comma',\n}\n","import { createHmac } from 'crypto';\nimport { SignerConfig } from './signer.types';\n\nexport class Signer {\n  private config: Required<SignerConfig>;\n\n  constructor(config: Partial<SignerConfig> = {}) {\n    this.config = {\n      secretKey: '',\n      header: 'x-signature',\n      ...config,\n    };\n  }\n\n  private sign(rawBody: string) {\n    const timestamp = Math.floor(Date.now() / 1000);\n    const payload = `${timestamp}.${rawBody}`;\n\n    const signature = createHmac('sha256', this.config.secretKey).update(payload, 'utf8').digest('hex');\n\n    return `t=${timestamp},v1=${signature}`;\n  }\n\n  getConfig(body: string) {\n    if (!this.config.secretKey) {\n      return {};\n    }\n\n    return {\n      [this.config.header]: this.sign(body ? JSON.stringify(body) : ''),\n    };\n  }\n}\n","import axios, { AxiosError, AxiosResponse } from 'axios';\nimport { HttpMethods } from '@iamnnort/config/http';\nimport { RequestBuilder } from './builder';\nimport { Logger } from './logger/logger';\nimport { BaseRequestConfig, RequestConfig, RequestConfigParams, ResponseConfig, RawResponse } from './types';\nimport { PaginationResponse } from './pagination';\n\nexport class RequestDataSource<\n  Entity extends Record<string, any> = any,\n  SearchParams extends RequestConfigParams = any,\n  SearchResponse extends Record<string, any> = any,\n  CreateParams extends RequestConfigParams = any,\n  UpdateParams extends RequestConfigParams = any,\n> {\n  baseRequestConfig: BaseRequestConfig;\n\n  logger: Logger;\n\n  constructor(baseRequestConfig: BaseRequestConfig) {\n    this.baseRequestConfig = baseRequestConfig;\n\n    this.logger = new Logger(this.baseRequestConfig.logger);\n  }\n\n  common<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): Promise<T>;\n\n  common<T>(\n    requestConfig: RequestConfig,\n    responseConfig: ResponseConfig & {\n      raw: true;\n    },\n  ): Promise<RawResponse<T>>;\n\n  common<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n    const requestBuilder = new RequestBuilder({\n      baseRequestConfig: this.baseRequestConfig,\n      requestConfig,\n    });\n\n    const request = requestBuilder\n      .makeContentType()\n      .makeAuth()\n      .makeUrl()\n      .makeMethod()\n      .makeParams()\n      .makeData()\n      .makeSignature()\n      .makeSerializer()\n      .build();\n\n    this.logger.logRequest(request);\n\n    const startTime = Date.now();\n\n    return axios\n      .request(request)\n      .then((response: AxiosResponse<T>) => {\n        this.logger.logResponse(response, Date.now() - startTime);\n\n        if (responseConfig.raw) {\n          return this.logger.makeResponse<T>(response);\n        }\n\n        return response.data;\n      })\n      .catch((error: AxiosError) => {\n        this.logger.logError(request, error, Date.now() - startTime);\n\n        if (responseConfig.raw) {\n          return this.logger.makeErrorResponse<T>(error);\n        }\n\n        throw error.response?.data || error.response || new Error(error.message);\n      });\n  }\n\n  bulkCommon<T>(requestConfig: RequestConfig, responseConfig?: ResponseConfig): AsyncGenerator<T[]>;\n\n  bulkCommon<T>(\n    requestConfig: RequestConfig,\n    responseConfig: ResponseConfig & {\n      raw: true;\n    },\n  ): AsyncGenerator<PaginationResponse<T>>;\n\n  async *bulkCommon<T>(requestConfig: RequestConfig, responseConfig: ResponseConfig = {}) {\n    const { page, pageSize, bulkSize, ...searchDto } = requestConfig.params || {};\n\n    const paginationDto = {\n      page: page || 1,\n      pageSize: pageSize || 30,\n    };\n\n    const maxPage = bulkSize ? paginationDto.page - 1 + bulkSize : null;\n\n    let pagination = {\n      total: 0,\n      currentPage: 0,\n      lastPage: 0,\n      from: 0,\n      to: 0,\n      pageSize: 0,\n    };\n\n    do {\n      const response = await this.common<PaginationResponse<T>>({\n        ...requestConfig,\n        params: {\n          ...paginationDto,\n          ...searchDto,\n        },\n      });\n\n      pagination = response.pagination;\n\n      if (!response.data?.length) {\n        return;\n      }\n\n      if (responseConfig.raw) {\n        yield response;\n      } else {\n        yield response.data;\n      }\n\n      paginationDto.page += 1;\n    } while (pagination.currentPage !== pagination.lastPage && pagination.currentPage !== maxPage);\n\n    if (pagination.currentPage !== pagination.lastPage) {\n      if (responseConfig.bulkCallback) {\n        await responseConfig.bulkCallback(paginationDto.page);\n      }\n    }\n  }\n\n  search(config: SearchParams = {} as SearchParams) {\n    return this.common<SearchResponse>({\n      ...config,\n      method: HttpMethods.GET,\n    });\n  }\n\n  bulkSearch(config: SearchParams = {} as SearchParams) {\n    return this.bulkCommon<Entity>({\n      ...config,\n      method: HttpMethods.GET,\n    });\n  }\n\n  async searchOne(config: SearchParams = {} as SearchParams) {\n    const response = await this.common<SearchResponse>({\n      ...config,\n      method: HttpMethods.GET,\n      params: {\n        pageSize: 1,\n        extended: true,\n        strict: true,\n        ...config.params,\n      },\n    });\n\n    const data = response.data || [];\n\n    return data[0] as Entity;\n  }\n\n  get(id: number | string, config: SearchParams = {} as SearchParams) {\n    return this.common<Entity>({\n      ...config,\n      method: HttpMethods.GET,\n      url: id,\n    });\n  }\n\n  create(config: CreateParams) {\n    return this.common<Entity>({\n      ...config,\n      method: HttpMethods.POST,\n    });\n  }\n\n  bulkCreate(config: Omit<CreateParams, 'data'> & { data: CreateParams['data'][] }) {\n    return this.common<Entity[]>({\n      ...config,\n      method: HttpMethods.POST,\n      url: '/bulk',\n      data: {\n        bulk: config.data,\n      },\n    });\n  }\n\n  update(id: number | string, config: UpdateParams) {\n    return this.common<Entity>({\n      ...config,\n      method: HttpMethods.PUT,\n      url: id,\n    });\n  }\n\n  bulkUpdate(config: Omit<UpdateParams, 'data'> & { data: UpdateParams['data'][] }) {\n    return this.common<Entity[]>({\n      ...config,\n      method: HttpMethods.PUT,\n      url: '/bulk',\n      data: {\n        bulk: config.data,\n      },\n    });\n  }\n\n  remove(id: number | string, config: SearchParams = {} as SearchParams) {\n    return this.common<void>({\n      ...config,\n      method: HttpMethods.DELETE,\n      url: id,\n    });\n  }\n\n  bulkRemove(config: SearchParams = {} as SearchParams) {\n    return this.common<void[]>({\n      ...config,\n      method: HttpMethods.DELETE,\n      url: '/bulk',\n    });\n  }\n}\n","import { AxiosRequestConfig } from 'axios';\nimport { stringify } from 'qs';\nimport { HttpMethods } from '@iamnnort/config/http';\nimport { BaseRequestConfig, RequestConfig } from './types';\nimport { Serializer } from './serializer';\nimport { Signer } from './signer';\n\nexport class RequestBuilder {\n  baseRequestConfig: BaseRequestConfig;\n  requestConfig: RequestConfig;\n\n  config: AxiosRequestConfig;\n\n  signer: Signer;\n  serializer: Serializer;\n\n  constructor(options: { baseRequestConfig: BaseRequestConfig; requestConfig: RequestConfig }) {\n    this.baseRequestConfig = options.baseRequestConfig;\n    this.requestConfig = options.requestConfig;\n\n    this.config = {\n      timeout: options.requestConfig.timeout || options.baseRequestConfig.timeout,\n      responseType: options.requestConfig.responseType || options.baseRequestConfig.responseType,\n      headers: {\n        Accept: 'application/json',\n        'Content-Type': 'application/json',\n        ...options.baseRequestConfig.headers,\n        ...options.requestConfig.headers,\n      },\n    };\n\n    this.signer = new Signer(this.baseRequestConfig.signer);\n    this.serializer = new Serializer(this.baseRequestConfig.serializer);\n  }\n\n  makeContentType() {\n    if (this.requestConfig.multipart) {\n      this.config = {\n        ...this.config,\n        headers: {\n          ...this.config.headers,\n          'Content-Type': 'multipart/form-data',\n        },\n      };\n\n      return this;\n    }\n\n    if (this.requestConfig.urlencoded) {\n      this.config = {\n        ...this.config,\n        headers: {\n          ...this.config.headers,\n          'Content-Type': 'application/x-www-form-urlencoded',\n        },\n      };\n\n      return this;\n    }\n\n    if (this.requestConfig.xml) {\n      this.config = {\n        ...this.config,\n        headers: {\n          ...this.config.headers,\n          'Content-Type': 'text/xml',\n        },\n      };\n\n      return this;\n    }\n\n    return this;\n  }\n\n  makeAuth() {\n    const auth = this.requestConfig.auth || this.baseRequestConfig.auth;\n\n    if (auth) {\n      this.config = {\n        ...this.config,\n        auth,\n      };\n\n      return this;\n    }\n\n    const bearerToken = this.requestConfig.bearerToken || this.baseRequestConfig.bearerToken;\n\n    if (bearerToken) {\n      this.config = {\n        ...this.config,\n        headers: {\n          ...this.config.headers,\n          Authorization: `Bearer ${bearerToken}`,\n        },\n      };\n\n      return this;\n    }\n\n    const apiKey = this.requestConfig.apiKey || this.baseRequestConfig.apiKey;\n\n    if (apiKey) {\n      this.config = {\n        ...this.config,\n        headers: {\n          ...this.config.headers,\n          'x-api-key': apiKey,\n        },\n      };\n\n      return this;\n    }\n\n    return this;\n  }\n\n  makeUrl() {\n    const baseUrlMap = this.requestConfig.baseUrlMap || this.baseRequestConfig.baseUrlMap;\n    const baseUrlName = this.requestConfig.baseUrlName || this.baseRequestConfig.baseUrlName;\n\n    const urlParts = [\n      baseUrlMap && baseUrlName ? baseUrlMap[baseUrlName] : this.baseRequestConfig.baseUrl,\n      this.baseRequestConfig.url,\n      ...(this.baseRequestConfig.urlParts || []),\n      this.requestConfig.baseUrl,\n      this.requestConfig.url,\n      ...(this.requestConfig.urlParts || []),\n    ].map((urlPart) => urlPart?.toString());\n\n    const isSecureProtocol = urlParts.some((urlPart) => urlPart?.includes('https'));\n    const protocol = isSecureProtocol ? 'https' : 'http';\n\n    const actualUrlParts = urlParts\n      .filter((urlPart) => urlPart)\n      .map((urlPart) => {\n        return urlPart?.replace(/^(https?:\\/\\/|\\/)?(.*?)(\\/?)$/, '$2');\n      });\n\n    const url = `${protocol}://${actualUrlParts.join('/')}`;\n\n    this.config = {\n      ...this.config,\n      url,\n    };\n\n    return this;\n  }\n\n  makeMethod() {\n    this.config = {\n      ...this.config,\n      method: this.requestConfig.method,\n    };\n\n    return this;\n  }\n\n  makeData() {\n    if (this.requestConfig.method === HttpMethods.GET) {\n      return this;\n    }\n\n    if (this.requestConfig.urlencoded) {\n      this.config = {\n        ...this.config,\n        data: stringify(this.requestConfig.data),\n      };\n\n      return this;\n    }\n\n    this.config = {\n      ...this.config,\n      data: this.requestConfig.data,\n    };\n\n    return this;\n  }\n\n  makeParams() {\n    this.config = {\n      ...this.config,\n      params: this.requestConfig.params,\n    };\n\n    return this;\n  }\n\n  makeSignature() {\n    this.config = {\n      ...this.config,\n      headers: {\n        ...this.config.headers,\n        ...this.signer.getConfig(this.config.data),\n      },\n    };\n\n    return this;\n  }\n\n  makeSerializer() {\n    this.config = {\n      ...this.config,\n      paramsSerializer: this.serializer.getConfig(),\n    };\n\n    return this;\n  }\n\n  build() {\n    return this.config;\n  }\n}\n","export class RequestHelper {\n  static sleep(seconds: number) {\n    return new Promise((resolve) => {\n      setTimeout(resolve, seconds * 1000);\n    });\n  }\n}\n"],"mappings":"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","names":["pino","HttpMessageBuilder","HttpMessageFormatter","HttpStatuses","HttpMethods","HttpStatuses","LoggerLevels","Logger","logger","config","name","level","LoggerLevels","INFO","formatter","HttpMessageFormatter","pino","timestamp","makeLogStream","trace","message","debug","info","warn","error","fatal","logRequest","request","messageBuilder","HttpMessageBuilder","makeMethodText","makeUrlText","build","data","requestData","makeRequestDataObj","Object","keys","length","logResponse","response","duration","makeStatusText","TRACE","DEBUG","includes","responseData","makeResponseDataObj","makeDurationText","logError","makeStatus","HttpStatuses","INTERNAL_SERVER_ERROR","makeResponse","makeErrorResponse","stringify","SerializerArrayFormats","Serializer","config","arrayFormat","SerializerArrayFormats","BRACKETS","getConfig","serialize","__name","params","stringify","skipNulls","createHmac","Signer","config","secretKey","header","sign","rawBody","timestamp","Math","floor","Date","now","payload","signature","createHmac","update","digest","getConfig","body","JSON","stringify","axios","HttpMethods","stringify","HttpMethods","RequestBuilder","baseRequestConfig","requestConfig","config","signer","serializer","options","timeout","responseType","headers","Accept","Signer","Serializer","makeContentType","multipart","urlencoded","xml","makeAuth","auth","bearerToken","Authorization","apiKey","makeUrl","baseUrlMap","baseUrlName","urlParts","baseUrl","url","map","urlPart","toString","protocol","some","includes","actualUrlParts","filter","replace","join","makeMethod","method","makeData","HttpMethods","GET","data","stringify","makeParams","params","makeSignature","getConfig","makeSerializer","paramsSerializer","build","RequestDataSource","baseRequestConfig","logger","Logger","common","requestConfig","responseConfig","request","RequestBuilder","makeContentType","makeAuth","makeUrl","makeMethod","makeParams","makeData","makeSignature","makeSerializer","build","logRequest","startTime","Date","now","axios","then","response","logResponse","raw","makeResponse","data","catch","error","logError","makeErrorResponse","Error","message","bulkCommon","page","pageSize","bulkSize","searchDto","params","paginationDto","maxPage","pagination","total","currentPage","lastPage","from","to","length","bulkCallback","search","config","method","HttpMethods","GET","bulkSearch","searchOne","extended","strict","get","id","url","create","POST","bulkCreate","bulk","update","PUT","bulkUpdate","remove","DELETE","bulkRemove","RequestHelper","sleep","seconds","Promise","resolve","setTimeout"]}