@iamnnort/request
Version:
Request handler for Node.js - Fast - Interactive - Simple
1 lines • 28.4 kB
Source Map (JSON)
{"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"]}