@iamnnort/request 2.1.0 → 2.1.1

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
@@ -135,27 +135,27 @@ The header name defaults to `x-signature` and can be customized via `signer.head
135
135
 
136
136
  ### Base Config
137
137
 
138
- | Parameter | Type | Description |
139
- | ------------------------ | ------------------------ | ------------------------------------------------------------------ |
140
- | `baseUrl` | `string` | Main part of the server URL that will be used for the request |
141
- | `url` | `string \| number` | Server URL that will be used for the request |
142
- | `urlParts` | `(string \| number)[]` | Additional parts of URL that will be used for the request |
143
- | `baseUrlName` | `string` | Key to look up the base URL from `baseUrlMap` |
144
- | `baseUrlMap` | `Record<string, string>` | Map of named base URLs |
145
- | `headers` | `object` | Custom headers to be sent |
146
- | `auth` | `object` | HTTP Basic auth credentials |
147
- | `bearerToken` | `string` | Bearer token for Authorization header |
148
- | `apiKey` | `string` | API key sent via `x-api-key` header |
149
- | `timeout` | `number` | Request timeout in milliseconds |
150
- | `responseType` | `string` | Response type (e.g. `json`, `text`, `stream`) |
151
- | `logger` | `object` | Logger configuration |
152
- | `logger.name` | `string` | Name used as the logger label |
153
- | `logger.level` | `string` | Log level (`trace`, `debug`, `info`, `warn`, `error`, `fatal`) |
154
- | `serializer` | `object` | Config that allows you to customize serializing |
155
- | `serializer.arrayFormat` | `string` | Array format (`indices`, `brackets`, `repeat`, `comma`) |
156
- | `signer` | `object` | Request signing configuration |
157
- | `signer.secretKey` | `string` | HMAC secret key for signing requests |
158
- | `signer.header` | `string` | Header name for the signature (default: `x-signature`) |
138
+ | Parameter | Type | Description |
139
+ | ------------------------ | ------------------------ | -------------------------------------------------------------- |
140
+ | `baseUrl` | `string` | Main part of the server URL that will be used for the request |
141
+ | `url` | `string \| number` | Server URL that will be used for the request |
142
+ | `urlParts` | `(string \| number)[]` | Additional parts of URL that will be used for the request |
143
+ | `baseUrlName` | `string` | Key to look up the base URL from `baseUrlMap` |
144
+ | `baseUrlMap` | `Record<string, string>` | Map of named base URLs |
145
+ | `headers` | `object` | Custom headers to be sent |
146
+ | `auth` | `object` | HTTP Basic auth credentials |
147
+ | `bearerToken` | `string` | Bearer token for Authorization header |
148
+ | `apiKey` | `string` | API key sent via `x-api-key` header |
149
+ | `timeout` | `number` | Request timeout in milliseconds |
150
+ | `responseType` | `string` | Response type (e.g. `json`, `text`, `stream`) |
151
+ | `logger` | `object` | Logger configuration |
152
+ | `logger.name` | `string` | Name used as the logger label |
153
+ | `logger.level` | `string` | Log level (`trace`, `debug`, `info`, `warn`, `error`, `fatal`) |
154
+ | `serializer` | `object` | Config that allows you to customize serializing |
155
+ | `serializer.arrayFormat` | `string` | Array format (`indices`, `brackets`, `repeat`, `comma`) |
156
+ | `signer` | `object` | Request signing configuration |
157
+ | `signer.secretKey` | `string` | HMAC secret key for signing requests |
158
+ | `signer.header` | `string` | Header name for the signature (default: `x-signature`) |
159
159
 
160
160
  ### Request Config
161
161
 
@@ -180,6 +180,7 @@ The header name defaults to `x-signature` and can be customized via `signer.head
180
180
  | `update` | `PUT` | Update entity by id |
181
181
  | `bulkUpdate` | `PUT` | Update multiple entities |
182
182
  | `remove` | `DELETE` | Remove entity by id |
183
+ | `bulkRemove` | `DELETE` | Remove multiple entities |
183
184
  | `common` | any | Execute a custom request |
184
185
 
185
186
  ## License
package/dist/index.d.mts CHANGED
@@ -153,6 +153,7 @@ declare class RequestDataSource<Entity extends Record<string, any> = any, Search
153
153
  data: UpdateParams['data'][];
154
154
  }): Promise<Entity[]>;
155
155
  remove(id: number | string, config?: SearchParams): Promise<void>;
156
+ bulkRemove(config?: SearchParams): Promise<void[]>;
156
157
  }
157
158
 
158
159
  declare class RequestHelper {
package/dist/index.d.ts CHANGED
@@ -153,6 +153,7 @@ declare class RequestDataSource<Entity extends Record<string, any> = any, Search
153
153
  data: UpdateParams['data'][];
154
154
  }): Promise<Entity[]>;
155
155
  remove(id: number | string, config?: SearchParams): Promise<void>;
156
+ bulkRemove(config?: SearchParams): Promise<void[]>;
156
157
  }
157
158
 
158
159
  declare class RequestHelper {
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 h=o.makeResponseDataObj();Object.keys(h).length>0&&(i.response=h)}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,h={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let l=await this.common({...e,params:{...u,...a}});if(h=l.pagination,!_optionalChain([l, 'access', _9 => _9.data, 'optionalAccess', _10 => _10.length]))return;t.raw?yield l:yield l.data,u.page+=1}while(h.currentPage!==h.lastPage&&h.currentPage!==g);h.currentPage!==h.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})}};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())}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;
2
2
  //# sourceMappingURL=index.js.map
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 w,HttpStatuses as y}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 w;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 h=o.makeResponseDataObj();Object.keys(h).length>0&&(i.response=h)}let u=o.makeDurationText().build();o.makeStatus()>=y.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 E}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=>E(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 m}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,h={total:0,currentPage:0,lastPage:0,from:0,to:0,pageSize:0};do{let l=await this.common({...e,params:{...u,...a}});if(h=l.pagination,!l.data?.length)return;t.raw?yield l:yield l.data,u.page+=1}while(h.currentPage!==h.lastPage&&h.currentPage!==g);h.currentPage!==h.lastPage&&t.bulkCallback&&await t.bulkCallback(u.page)}search(e={}){return this.common({...e,method:m.GET})}bulkSearch(e={}){return this.bulkCommon({...e,method:m.GET})}async searchOne(e={}){return((await this.common({...e,method:m.GET,params:{pageSize:1,extended:!0,strict:!0,...e.params}})).data||[])[0]}get(e,t={}){return this.common({...t,method:m.GET,url:e})}create(e){return this.common({...e,method:m.POST})}bulkCreate(e){return this.common({...e,method:m.POST,url:"/bulk",data:{bulk:e.data}})}update(e,t){return this.common({...t,method:m.PUT,url:e})}bulkUpdate(e){return this.common({...e,method:m.PUT,url:"/bulk",data:{bulk:e.data}})}remove(e,t={}){return this.common({...t,method:m.DELETE,url:e})}};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())}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};
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","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":"+EAAA,OAAOA,MAAU,OAEjB,OAASC,sBAAAA,EAAoBC,wBAAAA,EAAsBC,gBAAAA,MAAoB,wBCFvE,OAASC,eAAAA,EAAaC,gBAAAA,MAAoB,wBAOnC,IAAKC,GAAAA,SAAAA,EAAAA,oGAAAA,QDFL,IAAMC,EAAN,KAAMA,CALb,MAKaA,CAAAA,EAAAA,eACHC,OAEAC,OAER,YAAYA,EAAgC,CAAC,EAAG,CAC9C,KAAKA,OAAS,CACZC,KAAM,GACNC,MAAOC,EAAaC,KACpB,GAAGJ,CACL,EAEA,IAAMK,EAAY,IAAIC,EAEtB,KAAKP,OAASQ,EACZ,CACEN,KAAM,KAAKD,OAAOC,KAClBC,MAAO,KAAKF,OAAOE,MACnBM,UAAW,EACb,EACAH,EAAUI,cAAa,CAAA,CAE3B,CAEAC,WAAWC,EAA6B,CACtC,IAAMC,EAAiB,IAAIC,EAAmB,CAC5CF,QAAAA,CACF,CAAA,EAEMG,EAAUF,EAAeG,eAAc,EAAGC,YAAW,EAAGC,MAAK,EAE7DC,EAAO,CAAC,EAERC,EAAcP,EAAeQ,mBAAkB,EAEjDC,OAAOC,KAAKH,CAAAA,EAAaI,OAAS,IACpCL,EAAK,QAAaC,GAGpB,KAAKpB,OAAOyB,MAAMN,EAAMJ,CAAAA,CAC1B,CAEAW,YAAYC,EAAyBC,EAAkB,CACrD,IAAMf,EAAiB,IAAIC,EAAmB,CAC5Ca,SAAAA,EACAC,SAAAA,CACF,CAAA,EAEAf,EAAeG,eAAc,EAAGC,YAAW,EAAGY,eAAc,EAE5D,IAAMV,EAAO,CAAC,EAERC,EAAcP,EAAeQ,mBAAkB,EAMrD,GAJIC,OAAOC,KAAKH,CAAAA,EAAaI,OAAS,IACpCL,EAAK,QAAaC,GAGhB,CAAChB,EAAa0B,MAAO1B,EAAa2B,OAAOC,SAAS,KAAK/B,OAAOE,KAAK,EAAG,CACxE,IAAM8B,EAAepB,EAAeqB,oBAAmB,EAEnDZ,OAAOC,KAAKU,CAAAA,EAAcT,OAAS,IACrCL,EAAK,SAAcc,EAEvB,CAEA,IAAMlB,EAAUF,EAAesB,iBAAgB,EAAGjB,MAAK,EAEvD,KAAKlB,OAAOoC,KAAKjB,EAAMJ,CAAAA,CACzB,CAEAsB,SAASzB,EAA6B0B,EAAmBV,EAAkB,CACzE,IAAMf,EAAiB,IAAIC,EAAmB,CAC5CF,QAAAA,EACA0B,MAAAA,EACAV,SAAAA,CACF,CAAA,EAEAf,EAAeG,eAAc,EAAGC,YAAW,EAAGY,eAAc,EAE5D,IAAMV,EAAO,CAAC,EAERC,EAAcP,EAAeQ,mBAAkB,EAMrD,GAJIC,OAAOC,KAAKH,CAAAA,EAAaI,OAAS,IACpCL,EAAK,QAAaC,GAGhB,CAAChB,EAAa0B,MAAO1B,EAAa2B,OAAOC,SAAS,KAAK/B,OAAOE,KAAK,EAAG,CACxE,IAAM8B,EAAepB,EAAeqB,oBAAmB,EAEnDZ,OAAOC,KAAKU,CAAAA,EAAcT,OAAS,IACrCL,EAAK,SAAcc,EAEvB,CAEA,IAAMlB,EAAUF,EAAesB,iBAAgB,EAAGjB,MAAK,EAExCL,EAAe0B,WAAU,GAE1BC,EAAaC,sBACzB,KAAKzC,OAAOsC,MAAMnB,EAAMJ,CAAAA,EAExB,KAAKf,OAAO0C,KAAKvB,EAAMJ,CAAAA,CAE3B,CAEA4B,aAAgBhB,EAAyB,CAOvC,OAN6B,IAAIb,EAAmB,CAClDa,SAAAA,CACF,CAAA,EAE0CgB,aAAY,CAGxD,CAEAC,kBAAqBN,EAAmB,CAOtC,OAN6B,IAAIxB,EAAmB,CAClDwB,MAAAA,CACF,CAAA,EAE+CK,aAAY,CAG7D,CACF,EEnIA,OAASE,aAAAA,MAAiB,KCInB,IAAKC,GAAAA,SAAAA,EAAAA,oFAAAA,QDAL,IAAMC,EAAN,KAAMA,CAJb,MAIaA,CAAAA,EAAAA,mBACHC,OAER,YAAYA,EAAoC,CAAC,EAAG,CAClD,KAAKA,OAAS,CACZC,YAAaC,EAAuBC,SACpC,GAAGH,CACL,CACF,CAEAI,WAAqC,CACnC,MAAO,CACLC,UAAWC,EAACC,GACHC,EAAUD,EAAQ,CACvBN,YAAa,KAAKD,OAAOC,YACzBQ,UAAW,EACb,CAAA,EAJS,YAMb,CACF,CACF,EExBA,OAASC,cAAAA,MAAkB,SAGpB,IAAMC,EAAN,KAAMA,CAHb,MAGaA,CAAAA,EAAAA,eACHC,OAER,YAAYA,EAAgC,CAAC,EAAG,CAC9C,KAAKA,OAAS,CACZC,UAAW,GACXC,OAAQ,cACR,GAAGF,CACL,CACF,CAEQG,KAAKC,EAAiB,CAC5B,IAAMC,EAAYC,KAAKC,MAAMC,KAAKC,IAAG,EAAK,GAAA,EACpCC,EAAU,GAAGL,CAAAA,IAAaD,CAAAA,GAE1BO,EAAYC,EAAW,SAAU,KAAKZ,OAAOC,SAAS,EAAEY,OAAOH,EAAS,MAAA,EAAQI,OAAO,KAAA,EAE7F,MAAO,KAAKT,CAAAA,OAAgBM,CAAAA,EAC9B,CAEAI,UAAUC,EAAc,CACtB,OAAK,KAAKhB,OAAOC,UAIV,CACL,CAAC,KAAKD,OAAOE,MAAM,EAAG,KAAKC,KAAKa,EAAOC,KAAKC,UAAUF,CAAAA,EAAQ,EAAA,CAChE,EALS,CAAC,CAMZ,CACF,EChCA,OAAOG,MAA0C,QACjD,OAASC,eAAAA,MAAmB,wBCA5B,OAASC,aAAAA,MAAiB,KAC1B,OAASC,eAAAA,MAAmB,wBAKrB,IAAMC,EAAN,KAAMA,CANb,MAMaA,CAAAA,EAAAA,uBACXC,kBACAC,cAEAC,OAEAC,OACAC,WAEA,YAAYC,EAAiF,CAC3F,KAAKL,kBAAoBK,EAAQL,kBACjC,KAAKC,cAAgBI,EAAQJ,cAE7B,KAAKC,OAAS,CACZI,QAASD,EAAQJ,cAAcK,SAAWD,EAAQL,kBAAkBM,QACpEC,aAAcF,EAAQJ,cAAcM,cAAgBF,EAAQL,kBAAkBO,aAC9EC,QAAS,CACPC,OAAQ,mBACR,eAAgB,mBAChB,GAAGJ,EAAQL,kBAAkBQ,QAC7B,GAAGH,EAAQJ,cAAcO,OAC3B,CACF,EAEA,KAAKL,OAAS,IAAIO,EAAO,KAAKV,kBAAkBG,MAAM,EACtD,KAAKC,WAAa,IAAIO,EAAW,KAAKX,kBAAkBI,UAAU,CACpE,CAEAQ,iBAAkB,CAChB,OAAI,KAAKX,cAAcY,WACrB,KAAKX,OAAS,CACZ,GAAG,KAAKA,OACRM,QAAS,CACP,GAAG,KAAKN,OAAOM,QACf,eAAgB,qBAClB,CACF,EAEO,MAGL,KAAKP,cAAca,YACrB,KAAKZ,OAAS,CACZ,GAAG,KAAKA,OACRM,QAAS,CACP,GAAG,KAAKN,OAAOM,QACf,eAAgB,mCAClB,CACF,EAEO,MAGL,KAAKP,cAAcc,KACrB,KAAKb,OAAS,CACZ,GAAG,KAAKA,OACRM,QAAS,CACP,GAAG,KAAKN,OAAOM,QACf,eAAgB,UAClB,CACF,EAEO,MAGF,IACT,CAEAQ,UAAW,CACT,IAAMC,EAAO,KAAKhB,cAAcgB,MAAQ,KAAKjB,kBAAkBiB,KAE/D,GAAIA,EACF,YAAKf,OAAS,CACZ,GAAG,KAAKA,OACRe,KAAAA,CACF,EAEO,KAGT,IAAMC,EAAc,KAAKjB,cAAciB,aAAe,KAAKlB,kBAAkBkB,YAE7E,GAAIA,EACF,YAAKhB,OAAS,CACZ,GAAG,KAAKA,OACRM,QAAS,CACP,GAAG,KAAKN,OAAOM,QACfW,cAAe,UAAUD,CAAAA,EAC3B,CACF,EAEO,KAGT,IAAME,EAAS,KAAKnB,cAAcmB,QAAU,KAAKpB,kBAAkBoB,OAEnE,OAAIA,GACF,KAAKlB,OAAS,CACZ,GAAG,KAAKA,OACRM,QAAS,CACP,GAAG,KAAKN,OAAOM,QACf,YAAaY,CACf,CACF,EAEO,MAGF,IACT,CAEAC,SAAU,CACR,IAAMC,EAAa,KAAKrB,cAAcqB,YAAc,KAAKtB,kBAAkBsB,WACrEC,EAAc,KAAKtB,cAAcsB,aAAe,KAAKvB,kBAAkBuB,YAEvEC,EAAW,CACfF,GAAcC,EAAcD,EAAWC,CAAAA,EAAe,KAAKvB,kBAAkByB,QAC7E,KAAKzB,kBAAkB0B,OACnB,KAAK1B,kBAAkBwB,UAAY,CAAA,EACvC,KAAKvB,cAAcwB,QACnB,KAAKxB,cAAcyB,OACf,KAAKzB,cAAcuB,UAAY,CAAA,GACnCG,IAAKC,GAAYA,GAASC,SAAAA,CAAAA,EAGtBC,EADmBN,EAASO,KAAMH,GAAYA,GAASI,SAAS,OAAA,CAAA,EAClC,QAAU,OAExCC,EAAiBT,EACpBU,OAAQN,GAAYA,CAAAA,EACpBD,IAAKC,GACGA,GAASO,QAAQ,gCAAiC,IAAA,CAC3D,EAEIT,EAAM,GAAGI,CAAAA,MAAcG,EAAeG,KAAK,GAAA,CAAA,GAEjD,YAAKlC,OAAS,CACZ,GAAG,KAAKA,OACRwB,IAAAA,CACF,EAEO,IACT,CAEAW,YAAa,CACX,YAAKnC,OAAS,CACZ,GAAG,KAAKA,OACRoC,OAAQ,KAAKrC,cAAcqC,MAC7B,EAEO,IACT,CAEAC,UAAW,CACT,OAAI,KAAKtC,cAAcqC,SAAWE,EAAYC,IACrC,KAGL,KAAKxC,cAAca,YACrB,KAAKZ,OAAS,CACZ,GAAG,KAAKA,OACRwC,KAAMC,EAAU,KAAK1C,cAAcyC,IAAI,CACzC,EAEO,OAGT,KAAKxC,OAAS,CACZ,GAAG,KAAKA,OACRwC,KAAM,KAAKzC,cAAcyC,IAC3B,EAEO,KACT,CAEAE,YAAa,CACX,YAAK1C,OAAS,CACZ,GAAG,KAAKA,OACR2C,OAAQ,KAAK5C,cAAc4C,MAC7B,EAEO,IACT,CAEAC,eAAgB,CACd,YAAK5C,OAAS,CACZ,GAAG,KAAKA,OACRM,QAAS,CACP,GAAG,KAAKN,OAAOM,QACf,GAAG,KAAKL,OAAO4C,UAAU,KAAK7C,OAAOwC,IAAI,CAC3C,CACF,EAEO,IACT,CAEAM,gBAAiB,CACf,YAAK9C,OAAS,CACZ,GAAG,KAAKA,OACR+C,iBAAkB,KAAK7C,WAAW2C,UAAS,CAC7C,EAEO,IACT,CAEAG,OAAQ,CACN,OAAO,KAAKhD,MACd,CACF,ED/MO,IAAMiD,EAAN,KAAMA,CAPb,MAOaA,CAAAA,EAAAA,0BAOXC,kBAEAC,OAEA,YAAYD,EAAsC,CAChD,KAAKA,kBAAoBA,EAEzB,KAAKC,OAAS,IAAIC,EAAO,KAAKF,kBAAkBC,MAAM,CACxD,CAWAE,OAAUC,EAA8BC,EAAiC,CAAC,EAAG,CAM3E,IAAMC,EALiB,IAAIC,EAAe,CACxCP,kBAAmB,KAAKA,kBACxBI,cAAAA,CACF,CAAA,EAGGI,gBAAe,EACfC,SAAQ,EACRC,QAAO,EACPC,WAAU,EACVC,WAAU,EACVC,SAAQ,EACRC,cAAa,EACbC,eAAc,EACdC,MAAK,EAER,KAAKf,OAAOgB,WAAWX,CAAAA,EAEvB,IAAMY,EAAYC,KAAKC,IAAG,EAE1B,OAAOC,EACJf,QAAQA,CAAAA,EACRgB,KAAMC,IACL,KAAKtB,OAAOuB,YAAYD,EAAUJ,KAAKC,IAAG,EAAKF,CAAAA,EAE3Cb,EAAeoB,IACV,KAAKxB,OAAOyB,aAAgBH,CAAAA,EAG9BA,EAASI,KAClB,EACCC,MAAOC,GAAAA,CAGN,GAFA,KAAK5B,OAAO6B,SAASxB,EAASuB,EAAOV,KAAKC,IAAG,EAAKF,CAAAA,EAE9Cb,EAAeoB,IACjB,OAAO,KAAKxB,OAAO8B,kBAAqBF,CAAAA,EAG1C,MAAMA,EAAMN,UAAUI,MAAQE,EAAMN,UAAY,IAAIS,MAAMH,EAAMI,OAAO,CACzE,CAAA,CACJ,CAWA,MAAOC,WAAc9B,EAA8BC,EAAiC,CAAC,EAAG,CACtF,GAAM,CAAE8B,KAAAA,EAAMC,SAAAA,EAAUC,SAAAA,EAAU,GAAGC,CAAAA,EAAclC,EAAcmC,QAAU,CAAC,EAEtEC,EAAgB,CACpBL,KAAMA,GAAQ,EACdC,SAAUA,GAAY,EACxB,EAEMK,EAAUJ,EAAWG,EAAcL,KAAO,EAAIE,EAAW,KAE3DK,EAAa,CACfC,MAAO,EACPC,YAAa,EACbC,SAAU,EACVC,KAAM,EACNC,GAAI,EACJX,SAAU,CACZ,EAEA,EAAG,CACD,IAAMb,EAAW,MAAM,KAAKpB,OAA8B,CACxD,GAAGC,EACHmC,OAAQ,CACN,GAAGC,EACH,GAAGF,CACL,CACF,CAAA,EAIA,GAFAI,EAAanB,EAASmB,WAElB,CAACnB,EAASI,MAAMqB,OAClB,OAGE3C,EAAeoB,IACjB,MAAMF,EAEN,MAAMA,EAASI,KAGjBa,EAAcL,MAAQ,CACxB,OAASO,EAAWE,cAAgBF,EAAWG,UAAYH,EAAWE,cAAgBH,GAElFC,EAAWE,cAAgBF,EAAWG,UACpCxC,EAAe4C,cACjB,MAAM5C,EAAe4C,aAAaT,EAAcL,IAAI,CAG1D,CAEAe,OAAOC,EAAuB,CAAC,EAAmB,CAChD,OAAO,KAAKhD,OAAuB,CACjC,GAAGgD,EACHC,OAAQC,EAAYC,GACtB,CAAA,CACF,CAEAC,WAAWJ,EAAuB,CAAC,EAAmB,CACpD,OAAO,KAAKjB,WAAmB,CAC7B,GAAGiB,EACHC,OAAQC,EAAYC,GACtB,CAAA,CACF,CAEA,MAAME,UAAUL,EAAuB,CAAC,EAAmB,CAczD,QAbiB,MAAM,KAAKhD,OAAuB,CACjD,GAAGgD,EACHC,OAAQC,EAAYC,IACpBf,OAAQ,CACNH,SAAU,EACVqB,SAAU,GACVC,OAAQ,GACR,GAAGP,EAAOZ,MACZ,CACF,CAAA,GAEsBZ,MAAQ,CAAA,GAElB,CAAA,CACd,CAEAgC,IAAIC,EAAqBT,EAAuB,CAAC,EAAmB,CAClE,OAAO,KAAKhD,OAAe,CACzB,GAAGgD,EACHC,OAAQC,EAAYC,IACpBO,IAAKD,CACP,CAAA,CACF,CAEAE,OAAOX,EAAsB,CAC3B,OAAO,KAAKhD,OAAe,CACzB,GAAGgD,EACHC,OAAQC,EAAYU,IACtB,CAAA,CACF,CAEAC,WAAWb,EAAuE,CAChF,OAAO,KAAKhD,OAAiB,CAC3B,GAAGgD,EACHC,OAAQC,EAAYU,KACpBF,IAAK,QACLlC,KAAM,CACJsC,KAAMd,EAAOxB,IACf,CACF,CAAA,CACF,CAEAuC,OAAON,EAAqBT,EAAsB,CAChD,OAAO,KAAKhD,OAAe,CACzB,GAAGgD,EACHC,OAAQC,EAAYc,IACpBN,IAAKD,CACP,CAAA,CACF,CAEAQ,WAAWjB,EAAuE,CAChF,OAAO,KAAKhD,OAAiB,CAC3B,GAAGgD,EACHC,OAAQC,EAAYc,IACpBN,IAAK,QACLlC,KAAM,CACJsC,KAAMd,EAAOxB,IACf,CACF,CAAA,CACF,CAEA0C,OAAOT,EAAqBT,EAAuB,CAAC,EAAmB,CACrE,OAAO,KAAKhD,OAAa,CACvB,GAAGgD,EACHC,OAAQC,EAAYiB,OACpBT,IAAKD,CACP,CAAA,CACF,CACF,EE1NO,IAAMW,EAAN,KAAMA,CAAb,MAAaA,CAAAA,EAAAA,sBACX,OAAOC,MAAMC,EAAiB,CAC5B,OAAO,IAAIC,QAASC,GAAAA,CAClBC,WAAWD,EAASF,EAAU,GAAA,CAChC,CAAA,CACF,CACF","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","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 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iamnnort/request",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "Request handler for Node.js - Fast - Interactive - Simple",
5
5
  "license": "MIT",
6
6
  "repository": {