@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 +22 -21
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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
|
|
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
|
|
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
|
package/dist/index.mjs.map
CHANGED
|
@@ -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":"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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","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"]}
|