@iamnnort/request 2.1.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,6 +10,10 @@ npm install @iamnnort/request
10
10
  yarn add @iamnnort/request
11
11
  ```
12
12
 
13
+ ## Requirements
14
+
15
+ - **Node.js** ≥ 24
16
+
13
17
  ## Usage
14
18
 
15
19
  ```typescript
package/dist/index.d.mts CHANGED
@@ -20,6 +20,12 @@ declare class Logger {
20
20
  private logger;
21
21
  private config;
22
22
  constructor(config?: Partial<LoggerConfig>);
23
+ trace(message: string | object): void;
24
+ debug(message: string | object): void;
25
+ info(message: string | object): void;
26
+ warn(message: string | object): void;
27
+ error(message: string | object): void;
28
+ fatal(message: string | object): void;
23
29
  logRequest(request: AxiosRequestConfig): void;
24
30
  logResponse(response: AxiosResponse, duration: number): void;
25
31
  logError(request: AxiosRequestConfig, error: AxiosError, duration: number): void;
package/dist/index.d.ts CHANGED
@@ -20,6 +20,12 @@ declare class Logger {
20
20
  private logger;
21
21
  private config;
22
22
  constructor(config?: Partial<LoggerConfig>);
23
+ trace(message: string | object): void;
24
+ debug(message: string | object): void;
25
+ info(message: string | object): void;
26
+ warn(message: string | object): void;
27
+ error(message: string | object): void;
28
+ fatal(message: string | object): void;
23
29
  logRequest(request: AxiosRequestConfig): void;
24
30
  logResponse(response: AxiosResponse, duration: number): void;
25
31
  logError(request: AxiosRequestConfig, error: AxiosError, duration: number): void;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var x=Object.defineProperty;var n=(r,e)=>x(r,"name",{value:e,configurable:!0});var _pino = require('pino'); var _pino2 = _interopRequireDefault(_pino);var _http = require('@iamnnort/config/http');var c=(function(r){return r.FATAL="fatal",r.ERROR="error",r.WARN="warn",r.INFO="info",r.DEBUG="debug",r.TRACE="trace",r})({});var p=class{static{n(this,"Logger")}constructor(e={}){this.config={name:"",level:c.INFO,...e};let t=new _http.HttpMessageFormatter;this.logger=_pino2.default.call(void 0, {name:this.config.name,level:this.config.level,timestamp:!1},t.makeLogStream())}logRequest(e){let t=new (0, _http.HttpMessageBuilder)({request:e}),s=t.makeMethodText().makeUrlText().build(),o={},i=t.makeRequestDataObj();Object.keys(i).length>0&&(o.request=i),this.logger.debug(o,s)}logResponse(e,t){let s=new (0, _http.HttpMessageBuilder)({response:e,duration:t});s.makeMethodText().makeUrlText().makeStatusText();let o={},i=s.makeRequestDataObj();if(Object.keys(i).length>0&&(o.request=i),[c.TRACE,c.DEBUG].includes(this.config.level)){let u=s.makeResponseDataObj();Object.keys(u).length>0&&(o.response=u)}let a=s.makeDurationText().build();this.logger.info(o,a)}logError(e,t,s){let o=new (0, _http.HttpMessageBuilder)({request:e,error:t,duration:s});o.makeMethodText().makeUrlText().makeStatusText();let i={},a=o.makeRequestDataObj();if(Object.keys(a).length>0&&(i.request=a),[c.TRACE,c.DEBUG].includes(this.config.level)){let m=o.makeResponseDataObj();Object.keys(m).length>0&&(i.response=m)}let u=o.makeDurationText().build();o.makeStatus()>=_http.HttpStatuses.INTERNAL_SERVER_ERROR?this.logger.error(i,u):this.logger.warn(i,u)}makeResponse(e){return new (0, _http.HttpMessageBuilder)({response:e}).makeResponse()}makeErrorResponse(e){return new (0, _http.HttpMessageBuilder)({error:e}).makeResponse()}};var _qs = require('qs');var C=(function(r){return r.INDICES="indices",r.BRACKETS="brackets",r.REPEAT="repeat",r.COMMA="comma",r})({});var d=class{static{n(this,"Serializer")}constructor(e={}){this.config={arrayFormat:C.BRACKETS,...e}}getConfig(){return{serialize:n(e=>_qs.stringify.call(void 0, e,{arrayFormat:this.config.arrayFormat,skipNulls:!0}),"serialize")}}};var _crypto = require('crypto');var k=class{static{n(this,"Signer")}constructor(e={}){this.config={secretKey:"",header:"x-signature",...e}}sign(e){let t=Math.floor(Date.now()/1e3),s=`${t}.${e}`,o=_crypto.createHmac.call(void 0, "sha256",this.config.secretKey).update(s,"utf8").digest("hex");return`t=${t},v1=${o}`}getConfig(e){return this.config.secretKey?{[this.config.header]:this.sign(e?JSON.stringify(e):"")}:{}}};var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var b=class{static{n(this,"RequestBuilder")}constructor(e){this.baseRequestConfig=e.baseRequestConfig,this.requestConfig=e.requestConfig,this.config={timeout:e.requestConfig.timeout||e.baseRequestConfig.timeout,responseType:e.requestConfig.responseType||e.baseRequestConfig.responseType,headers:{Accept:"application/json","Content-Type":"application/json",...e.baseRequestConfig.headers,...e.requestConfig.headers}},this.signer=new k(this.baseRequestConfig.signer),this.serializer=new d(this.baseRequestConfig.serializer)}makeContentType(){return this.requestConfig.multipart?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"multipart/form-data"}},this):this.requestConfig.urlencoded?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"application/x-www-form-urlencoded"}},this):this.requestConfig.xml?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"text/xml"}},this):this}makeAuth(){let e=this.requestConfig.auth||this.baseRequestConfig.auth;if(e)return this.config={...this.config,auth:e},this;let t=this.requestConfig.bearerToken||this.baseRequestConfig.bearerToken;if(t)return this.config={...this.config,headers:{...this.config.headers,Authorization:`Bearer ${t}`}},this;let s=this.requestConfig.apiKey||this.baseRequestConfig.apiKey;return s?(this.config={...this.config,headers:{...this.config.headers,"x-api-key":s}},this):this}makeUrl(){let e=this.requestConfig.baseUrlMap||this.baseRequestConfig.baseUrlMap,t=this.requestConfig.baseUrlName||this.baseRequestConfig.baseUrlName,s=[e&&t?e[t]:this.baseRequestConfig.baseUrl,this.baseRequestConfig.url,...this.baseRequestConfig.urlParts||[],this.requestConfig.baseUrl,this.requestConfig.url,...this.requestConfig.urlParts||[]].map(g=>_optionalChain([g, 'optionalAccess', _ => _.toString, 'call', _2 => _2()])),i=s.some(g=>_optionalChain([g, 'optionalAccess', _3 => _3.includes, 'call', _4 => _4("https")]))?"https":"http",a=s.filter(g=>g).map(g=>_optionalChain([g, 'optionalAccess', _5 => _5.replace, 'call', _6 => _6(/^(https?:\/\/|\/)?(.*?)(\/?)$/,"$2")])),u=`${i}://${a.join("/")}`;return this.config={...this.config,url:u},this}makeMethod(){return this.config={...this.config,method:this.requestConfig.method},this}makeData(){return this.requestConfig.method===_http.HttpMethods.GET?this:this.requestConfig.urlencoded?(this.config={...this.config,data:_qs.stringify.call(void 0, this.requestConfig.data)},this):(this.config={...this.config,data:this.requestConfig.data},this)}makeParams(){return this.config={...this.config,params:this.requestConfig.params},this}makeSignature(){return this.config={...this.config,headers:{...this.config.headers,...this.signer.getConfig(this.config.data)}},this}makeSerializer(){return this.config={...this.config,paramsSerializer:this.serializer.getConfig()},this}build(){return this.config}};var q=class{static{n(this,"RequestDataSource")}constructor(e){this.baseRequestConfig=e,this.logger=new p(this.baseRequestConfig.logger)}common(e,t={}){let o=new b({baseRequestConfig:this.baseRequestConfig,requestConfig:e}).makeContentType().makeAuth().makeUrl().makeMethod().makeParams().makeData().makeSignature().makeSerializer().build();this.logger.logRequest(o);let i=Date.now();return _axios2.default.request(o).then(a=>(this.logger.logResponse(a,Date.now()-i),t.raw?this.logger.makeResponse(a):a.data)).catch(a=>{if(this.logger.logError(o,a,Date.now()-i),t.raw)return this.logger.makeErrorResponse(a);throw _optionalChain([a, 'access', _7 => _7.response, 'optionalAccess', _8 => _8.data])||a.response||new Error(a.message)})}async*bulkCommon(e,t={}){let{page:s,pageSize:o,bulkSize:i,...a}=e.params||{},u={page:s||1,pageSize:o||30},g=i?u.page-1+i:null,m={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let l=await this.common({...e,params:{...u,...a}});if(m=l.pagination,!_optionalChain([l, 'access', _9 => _9.data, 'optionalAccess', _10 => _10.length]))return;t.raw?yield l:yield l.data,u.page+=1}while(m.currentPage!==m.lastPage&&m.currentPage!==g);m.currentPage!==m.lastPage&&t.bulkCallback&&await t.bulkCallback(u.page)}search(e={}){return this.common({...e,method:_http.HttpMethods.GET})}bulkSearch(e={}){return this.bulkCommon({...e,method:_http.HttpMethods.GET})}async searchOne(e={}){return((await this.common({...e,method:_http.HttpMethods.GET,params:{pageSize:1,extended:!0,strict:!0,...e.params}})).data||[])[0]}get(e,t={}){return this.common({...t,method:_http.HttpMethods.GET,url:e})}create(e){return this.common({...e,method:_http.HttpMethods.POST})}bulkCreate(e){return this.common({...e,method:_http.HttpMethods.POST,url:"/bulk",data:{bulk:e.data}})}update(e,t){return this.common({...t,method:_http.HttpMethods.PUT,url:e})}bulkUpdate(e){return this.common({...e,method:_http.HttpMethods.PUT,url:"/bulk",data:{bulk:e.data}})}remove(e,t={}){return this.common({...t,method:_http.HttpMethods.DELETE,url:e})}bulkRemove(e={}){return this.common({...e,method:_http.HttpMethods.DELETE,url:"/bulk"})}};var R=class{static{n(this,"RequestHelper")}static sleep(e){return new Promise(t=>{setTimeout(t,e*1e3)})}};exports.HttpMethods = _http.HttpMethods; exports.HttpStatuses = _http.HttpStatuses; exports.Logger = p; exports.LoggerLevels = c; exports.RequestDataSource = q; exports.RequestHelper = R; exports.Serializer = d; exports.SerializerArrayFormats = C; exports.Signer = k;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var x=Object.defineProperty;var n=(r,e)=>x(r,"name",{value:e,configurable:!0});var _pino = require('pino'); var _pino2 = _interopRequireDefault(_pino);var _http = require('@iamnnort/config/http');var c=(function(r){return r.FATAL="fatal",r.ERROR="error",r.WARN="warn",r.INFO="info",r.DEBUG="debug",r.TRACE="trace",r})({});var p=class{static{n(this,"Logger")}constructor(e={}){this.config={name:"",level:c.INFO,...e};let t=new _http.HttpMessageFormatter;this.logger=_pino2.default.call(void 0, {name:this.config.name,level:this.config.level,timestamp:!1},t.makeLogStream())}trace(e){this.logger.trace(e)}debug(e){this.logger.debug(e)}info(e){this.logger.info(e)}warn(e){this.logger.warn(e)}error(e){this.logger.error(e)}fatal(e){this.logger.fatal(e)}logRequest(e){let t=new (0, _http.HttpMessageBuilder)({request:e}),s=t.makeMethodText().makeUrlText().build(),o={},i=t.makeRequestDataObj();Object.keys(i).length>0&&(o.request=i),this.logger.debug(o,s)}logResponse(e,t){let s=new (0, _http.HttpMessageBuilder)({response:e,duration:t});s.makeMethodText().makeUrlText().makeStatusText();let o={},i=s.makeRequestDataObj();if(Object.keys(i).length>0&&(o.request=i),[c.TRACE,c.DEBUG].includes(this.config.level)){let g=s.makeResponseDataObj();Object.keys(g).length>0&&(o.response=g)}let a=s.makeDurationText().build();this.logger.info(o,a)}logError(e,t,s){let o=new (0, _http.HttpMessageBuilder)({request:e,error:t,duration:s});o.makeMethodText().makeUrlText().makeStatusText();let i={},a=o.makeRequestDataObj();if(Object.keys(a).length>0&&(i.request=a),[c.TRACE,c.DEBUG].includes(this.config.level)){let m=o.makeResponseDataObj();Object.keys(m).length>0&&(i.response=m)}let g=o.makeDurationText().build();o.makeStatus()>=_http.HttpStatuses.INTERNAL_SERVER_ERROR?this.logger.error(i,g):this.logger.warn(i,g)}makeResponse(e){return new (0, _http.HttpMessageBuilder)({response:e}).makeResponse()}makeErrorResponse(e){return new (0, _http.HttpMessageBuilder)({error:e}).makeResponse()}};var _qs = require('qs');var C=(function(r){return r.INDICES="indices",r.BRACKETS="brackets",r.REPEAT="repeat",r.COMMA="comma",r})({});var d=class{static{n(this,"Serializer")}constructor(e={}){this.config={arrayFormat:C.BRACKETS,...e}}getConfig(){return{serialize:n(e=>_qs.stringify.call(void 0, e,{arrayFormat:this.config.arrayFormat,skipNulls:!0}),"serialize")}}};var _crypto = require('crypto');var b=class{static{n(this,"Signer")}constructor(e={}){this.config={secretKey:"",header:"x-signature",...e}}sign(e){let t=Math.floor(Date.now()/1e3),s=`${t}.${e}`,o=_crypto.createHmac.call(void 0, "sha256",this.config.secretKey).update(s,"utf8").digest("hex");return`t=${t},v1=${o}`}getConfig(e){return this.config.secretKey?{[this.config.header]:this.sign(e?JSON.stringify(e):"")}:{}}};var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var k=class{static{n(this,"RequestBuilder")}constructor(e){this.baseRequestConfig=e.baseRequestConfig,this.requestConfig=e.requestConfig,this.config={timeout:e.requestConfig.timeout||e.baseRequestConfig.timeout,responseType:e.requestConfig.responseType||e.baseRequestConfig.responseType,headers:{Accept:"application/json","Content-Type":"application/json",...e.baseRequestConfig.headers,...e.requestConfig.headers}},this.signer=new b(this.baseRequestConfig.signer),this.serializer=new d(this.baseRequestConfig.serializer)}makeContentType(){return this.requestConfig.multipart?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"multipart/form-data"}},this):this.requestConfig.urlencoded?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"application/x-www-form-urlencoded"}},this):this.requestConfig.xml?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"text/xml"}},this):this}makeAuth(){let e=this.requestConfig.auth||this.baseRequestConfig.auth;if(e)return this.config={...this.config,auth:e},this;let t=this.requestConfig.bearerToken||this.baseRequestConfig.bearerToken;if(t)return this.config={...this.config,headers:{...this.config.headers,Authorization:`Bearer ${t}`}},this;let s=this.requestConfig.apiKey||this.baseRequestConfig.apiKey;return s?(this.config={...this.config,headers:{...this.config.headers,"x-api-key":s}},this):this}makeUrl(){let e=this.requestConfig.baseUrlMap||this.baseRequestConfig.baseUrlMap,t=this.requestConfig.baseUrlName||this.baseRequestConfig.baseUrlName,s=[e&&t?e[t]:this.baseRequestConfig.baseUrl,this.baseRequestConfig.url,...this.baseRequestConfig.urlParts||[],this.requestConfig.baseUrl,this.requestConfig.url,...this.requestConfig.urlParts||[]].map(u=>_optionalChain([u, 'optionalAccess', _ => _.toString, 'call', _2 => _2()])),i=s.some(u=>_optionalChain([u, 'optionalAccess', _3 => _3.includes, 'call', _4 => _4("https")]))?"https":"http",a=s.filter(u=>u).map(u=>_optionalChain([u, 'optionalAccess', _5 => _5.replace, 'call', _6 => _6(/^(https?:\/\/|\/)?(.*?)(\/?)$/,"$2")])),g=`${i}://${a.join("/")}`;return this.config={...this.config,url:g},this}makeMethod(){return this.config={...this.config,method:this.requestConfig.method},this}makeData(){return this.requestConfig.method===_http.HttpMethods.GET?this:this.requestConfig.urlencoded?(this.config={...this.config,data:_qs.stringify.call(void 0, this.requestConfig.data)},this):(this.config={...this.config,data:this.requestConfig.data},this)}makeParams(){return this.config={...this.config,params:this.requestConfig.params},this}makeSignature(){return this.config={...this.config,headers:{...this.config.headers,...this.signer.getConfig(this.config.data)}},this}makeSerializer(){return this.config={...this.config,paramsSerializer:this.serializer.getConfig()},this}build(){return this.config}};var q=class{static{n(this,"RequestDataSource")}constructor(e){this.baseRequestConfig=e,this.logger=new p(this.baseRequestConfig.logger)}common(e,t={}){let o=new k({baseRequestConfig:this.baseRequestConfig,requestConfig:e}).makeContentType().makeAuth().makeUrl().makeMethod().makeParams().makeData().makeSignature().makeSerializer().build();this.logger.logRequest(o);let i=Date.now();return _axios2.default.request(o).then(a=>(this.logger.logResponse(a,Date.now()-i),t.raw?this.logger.makeResponse(a):a.data)).catch(a=>{if(this.logger.logError(o,a,Date.now()-i),t.raw)return this.logger.makeErrorResponse(a);throw _optionalChain([a, 'access', _7 => _7.response, 'optionalAccess', _8 => _8.data])||a.response||new Error(a.message)})}async*bulkCommon(e,t={}){let{page:s,pageSize:o,bulkSize:i,...a}=e.params||{},g={page:s||1,pageSize:o||30},u=i?g.page-1+i:null,m={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let l=await this.common({...e,params:{...g,...a}});if(m=l.pagination,!_optionalChain([l, 'access', _9 => _9.data, 'optionalAccess', _10 => _10.length]))return;t.raw?yield l:yield l.data,g.page+=1}while(m.currentPage!==m.lastPage&&m.currentPage!==u);m.currentPage!==m.lastPage&&t.bulkCallback&&await t.bulkCallback(g.page)}search(e={}){return this.common({...e,method:_http.HttpMethods.GET})}bulkSearch(e={}){return this.bulkCommon({...e,method:_http.HttpMethods.GET})}async searchOne(e={}){return((await this.common({...e,method:_http.HttpMethods.GET,params:{pageSize:1,extended:!0,strict:!0,...e.params}})).data||[])[0]}get(e,t={}){return this.common({...t,method:_http.HttpMethods.GET,url:e})}create(e){return this.common({...e,method:_http.HttpMethods.POST})}bulkCreate(e){return this.common({...e,method:_http.HttpMethods.POST,url:"/bulk",data:{bulk:e.data}})}update(e,t){return this.common({...t,method:_http.HttpMethods.PUT,url:e})}bulkUpdate(e){return this.common({...e,method:_http.HttpMethods.PUT,url:"/bulk",data:{bulk:e.data}})}remove(e,t={}){return this.common({...t,method:_http.HttpMethods.DELETE,url:e})}bulkRemove(e={}){return this.common({...e,method:_http.HttpMethods.DELETE,url:"/bulk"})}};var R=class{static{n(this,"RequestHelper")}static sleep(e){return new Promise(t=>{setTimeout(t,e*1e3)})}};exports.HttpMethods = _http.HttpMethods; exports.HttpStatuses = _http.HttpStatuses; exports.Logger = p; exports.LoggerLevels = c; exports.RequestDataSource = q; exports.RequestHelper = R; exports.Serializer = d; exports.SerializerArrayFormats = C; exports.Signer = b;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/request/request/dist/index.js","../src/logger/logger.ts","../src/logger/logger.types.ts","../src/serializer/serializer.ts","../src/serializer/serializer.types.ts","../src/signer/signer.ts"],"names":["LoggerLevels","Logger","logger","config","name","level","INFO","formatter","HttpMessageFormatter","pino","timestamp","makeLogStream","logRequest","request","messageBuilder","HttpMessageBuilder","message","makeMethodText","makeUrlText","build","data","requestData","makeRequestDataObj","Object","keys","length","debug","logResponse","response","duration","makeStatusText","TRACE","DEBUG","includes","responseData","makeResponseDataObj","makeDurationText","info","logError","error","makeStatus","HttpStatuses","INTERNAL_SERVER_ERROR","warn","makeResponse","makeErrorResponse","SerializerArrayFormats","Serializer","arrayFormat","BRACKETS","getConfig","serialize","__name","params","stringify","skipNulls","Signer","secretKey","header","sign","rawBody","Math","floor","Date","now","payload"],"mappings":"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","file":"/home/runner/work/request/request/dist/index.js","sourcesContent":[null,"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 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"]}
1
+ {"version":3,"sources":["/home/runner/work/request/request/dist/index.js","../src/logger/logger.ts","../src/logger/logger.types.ts","../src/serializer/serializer.ts","../src/serializer/serializer.types.ts","../src/signer/signer.ts"],"names":["LoggerLevels","Logger","logger","config","name","level","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","SerializerArrayFormats","Serializer","arrayFormat","BRACKETS","getConfig","serialize","__name","params","stringify","skipNulls","Signer","secretKey","header","sign","rawBody","Math","floor","Date","now","payload"],"mappings":"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","file":"/home/runner/work/request/request/dist/index.js","sourcesContent":[null,"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"]}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var x=Object.defineProperty;var n=(r,e)=>x(r,"name",{value:e,configurable:!0});import T from"pino";import{HttpMessageBuilder as f,HttpMessageFormatter as E,HttpStatuses as w}from"@iamnnort/config/http";import{HttpMethods as j,HttpStatuses as A}from"@iamnnort/config/http";var c=(function(r){return r.FATAL="fatal",r.ERROR="error",r.WARN="warn",r.INFO="info",r.DEBUG="debug",r.TRACE="trace",r})({});var p=class{static{n(this,"Logger")}logger;config;constructor(e={}){this.config={name:"",level:c.INFO,...e};let t=new E;this.logger=T({name:this.config.name,level:this.config.level,timestamp:!1},t.makeLogStream())}logRequest(e){let t=new f({request:e}),s=t.makeMethodText().makeUrlText().build(),o={},i=t.makeRequestDataObj();Object.keys(i).length>0&&(o.request=i),this.logger.debug(o,s)}logResponse(e,t){let s=new f({response:e,duration:t});s.makeMethodText().makeUrlText().makeStatusText();let o={},i=s.makeRequestDataObj();if(Object.keys(i).length>0&&(o.request=i),[c.TRACE,c.DEBUG].includes(this.config.level)){let u=s.makeResponseDataObj();Object.keys(u).length>0&&(o.response=u)}let a=s.makeDurationText().build();this.logger.info(o,a)}logError(e,t,s){let o=new f({request:e,error:t,duration:s});o.makeMethodText().makeUrlText().makeStatusText();let i={},a=o.makeRequestDataObj();if(Object.keys(a).length>0&&(i.request=a),[c.TRACE,c.DEBUG].includes(this.config.level)){let m=o.makeResponseDataObj();Object.keys(m).length>0&&(i.response=m)}let u=o.makeDurationText().build();o.makeStatus()>=w.INTERNAL_SERVER_ERROR?this.logger.error(i,u):this.logger.warn(i,u)}makeResponse(e){return new f({response:e}).makeResponse()}makeErrorResponse(e){return new f({error:e}).makeResponse()}};import{stringify as y}from"qs";var C=(function(r){return r.INDICES="indices",r.BRACKETS="brackets",r.REPEAT="repeat",r.COMMA="comma",r})({});var d=class{static{n(this,"Serializer")}config;constructor(e={}){this.config={arrayFormat:C.BRACKETS,...e}}getConfig(){return{serialize:n(e=>y(e,{arrayFormat:this.config.arrayFormat,skipNulls:!0}),"serialize")}}};import{createHmac as D}from"crypto";var k=class{static{n(this,"Signer")}config;constructor(e={}){this.config={secretKey:"",header:"x-signature",...e}}sign(e){let t=Math.floor(Date.now()/1e3),s=`${t}.${e}`,o=D("sha256",this.config.secretKey).update(s,"utf8").digest("hex");return`t=${t},v1=${o}`}getConfig(e){return this.config.secretKey?{[this.config.header]:this.sign(e?JSON.stringify(e):"")}:{}}};import M from"axios";import{HttpMethods as h}from"@iamnnort/config/http";import{stringify as S}from"qs";import{HttpMethods as P}from"@iamnnort/config/http";var b=class{static{n(this,"RequestBuilder")}baseRequestConfig;requestConfig;config;signer;serializer;constructor(e){this.baseRequestConfig=e.baseRequestConfig,this.requestConfig=e.requestConfig,this.config={timeout:e.requestConfig.timeout||e.baseRequestConfig.timeout,responseType:e.requestConfig.responseType||e.baseRequestConfig.responseType,headers:{Accept:"application/json","Content-Type":"application/json",...e.baseRequestConfig.headers,...e.requestConfig.headers}},this.signer=new k(this.baseRequestConfig.signer),this.serializer=new d(this.baseRequestConfig.serializer)}makeContentType(){return this.requestConfig.multipart?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"multipart/form-data"}},this):this.requestConfig.urlencoded?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"application/x-www-form-urlencoded"}},this):this.requestConfig.xml?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"text/xml"}},this):this}makeAuth(){let e=this.requestConfig.auth||this.baseRequestConfig.auth;if(e)return this.config={...this.config,auth:e},this;let t=this.requestConfig.bearerToken||this.baseRequestConfig.bearerToken;if(t)return this.config={...this.config,headers:{...this.config.headers,Authorization:`Bearer ${t}`}},this;let s=this.requestConfig.apiKey||this.baseRequestConfig.apiKey;return s?(this.config={...this.config,headers:{...this.config.headers,"x-api-key":s}},this):this}makeUrl(){let e=this.requestConfig.baseUrlMap||this.baseRequestConfig.baseUrlMap,t=this.requestConfig.baseUrlName||this.baseRequestConfig.baseUrlName,s=[e&&t?e[t]:this.baseRequestConfig.baseUrl,this.baseRequestConfig.url,...this.baseRequestConfig.urlParts||[],this.requestConfig.baseUrl,this.requestConfig.url,...this.requestConfig.urlParts||[]].map(g=>g?.toString()),i=s.some(g=>g?.includes("https"))?"https":"http",a=s.filter(g=>g).map(g=>g?.replace(/^(https?:\/\/|\/)?(.*?)(\/?)$/,"$2")),u=`${i}://${a.join("/")}`;return this.config={...this.config,url:u},this}makeMethod(){return this.config={...this.config,method:this.requestConfig.method},this}makeData(){return this.requestConfig.method===P.GET?this:this.requestConfig.urlencoded?(this.config={...this.config,data:S(this.requestConfig.data)},this):(this.config={...this.config,data:this.requestConfig.data},this)}makeParams(){return this.config={...this.config,params:this.requestConfig.params},this}makeSignature(){return this.config={...this.config,headers:{...this.config.headers,...this.signer.getConfig(this.config.data)}},this}makeSerializer(){return this.config={...this.config,paramsSerializer:this.serializer.getConfig()},this}build(){return this.config}};var q=class{static{n(this,"RequestDataSource")}baseRequestConfig;logger;constructor(e){this.baseRequestConfig=e,this.logger=new p(this.baseRequestConfig.logger)}common(e,t={}){let o=new b({baseRequestConfig:this.baseRequestConfig,requestConfig:e}).makeContentType().makeAuth().makeUrl().makeMethod().makeParams().makeData().makeSignature().makeSerializer().build();this.logger.logRequest(o);let i=Date.now();return M.request(o).then(a=>(this.logger.logResponse(a,Date.now()-i),t.raw?this.logger.makeResponse(a):a.data)).catch(a=>{if(this.logger.logError(o,a,Date.now()-i),t.raw)return this.logger.makeErrorResponse(a);throw a.response?.data||a.response||new Error(a.message)})}async*bulkCommon(e,t={}){let{page:s,pageSize:o,bulkSize:i,...a}=e.params||{},u={page:s||1,pageSize:o||30},g=i?u.page-1+i:null,m={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let l=await this.common({...e,params:{...u,...a}});if(m=l.pagination,!l.data?.length)return;t.raw?yield l:yield l.data,u.page+=1}while(m.currentPage!==m.lastPage&&m.currentPage!==g);m.currentPage!==m.lastPage&&t.bulkCallback&&await t.bulkCallback(u.page)}search(e={}){return this.common({...e,method:h.GET})}bulkSearch(e={}){return this.bulkCommon({...e,method:h.GET})}async searchOne(e={}){return((await this.common({...e,method:h.GET,params:{pageSize:1,extended:!0,strict:!0,...e.params}})).data||[])[0]}get(e,t={}){return this.common({...t,method:h.GET,url:e})}create(e){return this.common({...e,method:h.POST})}bulkCreate(e){return this.common({...e,method:h.POST,url:"/bulk",data:{bulk:e.data}})}update(e,t){return this.common({...t,method:h.PUT,url:e})}bulkUpdate(e){return this.common({...e,method:h.PUT,url:"/bulk",data:{bulk:e.data}})}remove(e,t={}){return this.common({...t,method:h.DELETE,url:e})}bulkRemove(e={}){return this.common({...e,method:h.DELETE,url:"/bulk"})}};var R=class{static{n(this,"RequestHelper")}static sleep(e){return new Promise(t=>{setTimeout(t,e*1e3)})}};export{j as HttpMethods,A as HttpStatuses,p as Logger,c as LoggerLevels,q as RequestDataSource,R as RequestHelper,d as Serializer,C as SerializerArrayFormats,k as Signer};
1
+ var x=Object.defineProperty;var n=(r,e)=>x(r,"name",{value:e,configurable:!0});import T from"pino";import{HttpMessageBuilder as f,HttpMessageFormatter as E,HttpStatuses as w}from"@iamnnort/config/http";import{HttpMethods as j,HttpStatuses as A}from"@iamnnort/config/http";var c=(function(r){return r.FATAL="fatal",r.ERROR="error",r.WARN="warn",r.INFO="info",r.DEBUG="debug",r.TRACE="trace",r})({});var p=class{static{n(this,"Logger")}logger;config;constructor(e={}){this.config={name:"",level:c.INFO,...e};let t=new E;this.logger=T({name:this.config.name,level:this.config.level,timestamp:!1},t.makeLogStream())}trace(e){this.logger.trace(e)}debug(e){this.logger.debug(e)}info(e){this.logger.info(e)}warn(e){this.logger.warn(e)}error(e){this.logger.error(e)}fatal(e){this.logger.fatal(e)}logRequest(e){let t=new f({request:e}),s=t.makeMethodText().makeUrlText().build(),o={},i=t.makeRequestDataObj();Object.keys(i).length>0&&(o.request=i),this.logger.debug(o,s)}logResponse(e,t){let s=new f({response:e,duration:t});s.makeMethodText().makeUrlText().makeStatusText();let o={},i=s.makeRequestDataObj();if(Object.keys(i).length>0&&(o.request=i),[c.TRACE,c.DEBUG].includes(this.config.level)){let g=s.makeResponseDataObj();Object.keys(g).length>0&&(o.response=g)}let a=s.makeDurationText().build();this.logger.info(o,a)}logError(e,t,s){let o=new f({request:e,error:t,duration:s});o.makeMethodText().makeUrlText().makeStatusText();let i={},a=o.makeRequestDataObj();if(Object.keys(a).length>0&&(i.request=a),[c.TRACE,c.DEBUG].includes(this.config.level)){let m=o.makeResponseDataObj();Object.keys(m).length>0&&(i.response=m)}let g=o.makeDurationText().build();o.makeStatus()>=w.INTERNAL_SERVER_ERROR?this.logger.error(i,g):this.logger.warn(i,g)}makeResponse(e){return new f({response:e}).makeResponse()}makeErrorResponse(e){return new f({error:e}).makeResponse()}};import{stringify as y}from"qs";var C=(function(r){return r.INDICES="indices",r.BRACKETS="brackets",r.REPEAT="repeat",r.COMMA="comma",r})({});var d=class{static{n(this,"Serializer")}config;constructor(e={}){this.config={arrayFormat:C.BRACKETS,...e}}getConfig(){return{serialize:n(e=>y(e,{arrayFormat:this.config.arrayFormat,skipNulls:!0}),"serialize")}}};import{createHmac as D}from"crypto";var b=class{static{n(this,"Signer")}config;constructor(e={}){this.config={secretKey:"",header:"x-signature",...e}}sign(e){let t=Math.floor(Date.now()/1e3),s=`${t}.${e}`,o=D("sha256",this.config.secretKey).update(s,"utf8").digest("hex");return`t=${t},v1=${o}`}getConfig(e){return this.config.secretKey?{[this.config.header]:this.sign(e?JSON.stringify(e):"")}:{}}};import M from"axios";import{HttpMethods as h}from"@iamnnort/config/http";import{stringify as S}from"qs";import{HttpMethods as P}from"@iamnnort/config/http";var k=class{static{n(this,"RequestBuilder")}baseRequestConfig;requestConfig;config;signer;serializer;constructor(e){this.baseRequestConfig=e.baseRequestConfig,this.requestConfig=e.requestConfig,this.config={timeout:e.requestConfig.timeout||e.baseRequestConfig.timeout,responseType:e.requestConfig.responseType||e.baseRequestConfig.responseType,headers:{Accept:"application/json","Content-Type":"application/json",...e.baseRequestConfig.headers,...e.requestConfig.headers}},this.signer=new b(this.baseRequestConfig.signer),this.serializer=new d(this.baseRequestConfig.serializer)}makeContentType(){return this.requestConfig.multipart?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"multipart/form-data"}},this):this.requestConfig.urlencoded?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"application/x-www-form-urlencoded"}},this):this.requestConfig.xml?(this.config={...this.config,headers:{...this.config.headers,"Content-Type":"text/xml"}},this):this}makeAuth(){let e=this.requestConfig.auth||this.baseRequestConfig.auth;if(e)return this.config={...this.config,auth:e},this;let t=this.requestConfig.bearerToken||this.baseRequestConfig.bearerToken;if(t)return this.config={...this.config,headers:{...this.config.headers,Authorization:`Bearer ${t}`}},this;let s=this.requestConfig.apiKey||this.baseRequestConfig.apiKey;return s?(this.config={...this.config,headers:{...this.config.headers,"x-api-key":s}},this):this}makeUrl(){let e=this.requestConfig.baseUrlMap||this.baseRequestConfig.baseUrlMap,t=this.requestConfig.baseUrlName||this.baseRequestConfig.baseUrlName,s=[e&&t?e[t]:this.baseRequestConfig.baseUrl,this.baseRequestConfig.url,...this.baseRequestConfig.urlParts||[],this.requestConfig.baseUrl,this.requestConfig.url,...this.requestConfig.urlParts||[]].map(u=>u?.toString()),i=s.some(u=>u?.includes("https"))?"https":"http",a=s.filter(u=>u).map(u=>u?.replace(/^(https?:\/\/|\/)?(.*?)(\/?)$/,"$2")),g=`${i}://${a.join("/")}`;return this.config={...this.config,url:g},this}makeMethod(){return this.config={...this.config,method:this.requestConfig.method},this}makeData(){return this.requestConfig.method===P.GET?this:this.requestConfig.urlencoded?(this.config={...this.config,data:S(this.requestConfig.data)},this):(this.config={...this.config,data:this.requestConfig.data},this)}makeParams(){return this.config={...this.config,params:this.requestConfig.params},this}makeSignature(){return this.config={...this.config,headers:{...this.config.headers,...this.signer.getConfig(this.config.data)}},this}makeSerializer(){return this.config={...this.config,paramsSerializer:this.serializer.getConfig()},this}build(){return this.config}};var q=class{static{n(this,"RequestDataSource")}baseRequestConfig;logger;constructor(e){this.baseRequestConfig=e,this.logger=new p(this.baseRequestConfig.logger)}common(e,t={}){let o=new k({baseRequestConfig:this.baseRequestConfig,requestConfig:e}).makeContentType().makeAuth().makeUrl().makeMethod().makeParams().makeData().makeSignature().makeSerializer().build();this.logger.logRequest(o);let i=Date.now();return M.request(o).then(a=>(this.logger.logResponse(a,Date.now()-i),t.raw?this.logger.makeResponse(a):a.data)).catch(a=>{if(this.logger.logError(o,a,Date.now()-i),t.raw)return this.logger.makeErrorResponse(a);throw a.response?.data||a.response||new Error(a.message)})}async*bulkCommon(e,t={}){let{page:s,pageSize:o,bulkSize:i,...a}=e.params||{},g={page:s||1,pageSize:o||30},u=i?g.page-1+i:null,m={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let l=await this.common({...e,params:{...g,...a}});if(m=l.pagination,!l.data?.length)return;t.raw?yield l:yield l.data,g.page+=1}while(m.currentPage!==m.lastPage&&m.currentPage!==u);m.currentPage!==m.lastPage&&t.bulkCallback&&await t.bulkCallback(g.page)}search(e={}){return this.common({...e,method:h.GET})}bulkSearch(e={}){return this.bulkCommon({...e,method:h.GET})}async searchOne(e={}){return((await this.common({...e,method:h.GET,params:{pageSize:1,extended:!0,strict:!0,...e.params}})).data||[])[0]}get(e,t={}){return this.common({...t,method:h.GET,url:e})}create(e){return this.common({...e,method:h.POST})}bulkCreate(e){return this.common({...e,method:h.POST,url:"/bulk",data:{bulk:e.data}})}update(e,t){return this.common({...t,method:h.PUT,url:e})}bulkUpdate(e){return this.common({...e,method:h.PUT,url:"/bulk",data:{bulk:e.data}})}remove(e,t={}){return this.common({...t,method:h.DELETE,url:e})}bulkRemove(e={}){return this.common({...e,method:h.DELETE,url:"/bulk"})}};var R=class{static{n(this,"RequestHelper")}static sleep(e){return new Promise(t=>{setTimeout(t,e*1e3)})}};export{j as HttpMethods,A as HttpStatuses,p as Logger,c as LoggerLevels,q as RequestDataSource,R as RequestHelper,d as Serializer,C as SerializerArrayFormats,b as Signer};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"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 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","logRequest","request","messageBuilder","HttpMessageBuilder","message","makeMethodText","makeUrlText","build","data","requestData","makeRequestDataObj","Object","keys","length","debug","logResponse","response","duration","makeStatusText","TRACE","DEBUG","includes","responseData","makeResponseDataObj","makeDurationText","info","logError","error","makeStatus","HttpStatuses","INTERNAL_SERVER_ERROR","warn","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"]}
1
+ {"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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iamnnort/request",
3
- "version": "2.1.3",
3
+ "version": "3.0.0",
4
4
  "description": "Request handler for Node.js - Fast - Interactive - Simple",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -23,7 +23,7 @@
23
23
  "main": "./dist/index.js",
24
24
  "types": "./dist/index.d.ts",
25
25
  "engines": {
26
- "node": ">=22.0.0"
26
+ "node": ">=24.0.0"
27
27
  },
28
28
  "scripts": {
29
29
  "start": "yarn build && yarn --cwd ./example start",
@@ -35,7 +35,7 @@
35
35
  "prepare": "husky"
36
36
  },
37
37
  "dependencies": {
38
- "@iamnnort/config": "^1.2.3",
38
+ "@iamnnort/config": "^2.0.2",
39
39
  "axios": "^1.13.5",
40
40
  "pino": "^9.6.0",
41
41
  "qs": "^6.13.0"