@kelvininc/web-client-sdk 7.0.0 → 7.0.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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [7.0.1](https://bitbucket.org/kelvininc/kelvinjs/compare/v7.0.0...v7.0.1) (2022-02-10)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **http-adapter:** solving issue for data stream responses [SA-598] ([785cea1](https://bitbucket.org/kelvininc/kelvinjs/commits/785cea1ca95b19030b0ced5dd27d62441161d243))
12
+
13
+
14
+
15
+
16
+
6
17
  # [7.0.0](https://bitbucket.org/kelvininc/kelvinjs/compare/v6.2.0...v7.0.0) (2022-02-01)
7
18
 
8
19
 
@@ -62,7 +62,11 @@ class HttpAdapter {
62
62
  handleRequest(response, isChunked, config) {
63
63
  const { data, status, statusText, headers } = response;
64
64
  let bodyParsed = data;
65
- if (isChunked) {
65
+ /**
66
+ * typeof bodyParsed == 'string' fixes a bug when the stream
67
+ * comes with only one array the axios framework parses it automatically
68
+ */
69
+ if (isChunked && typeof bodyParsed === 'string') {
66
70
  try {
67
71
  bodyParsed = bodyParsed ? JSON.parse(data.replace(/\]\n\[/g, ',')) : [];
68
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http-adapter.js","sourceRoot":"","sources":["../../../src/adapters/http-adapter.ts"],"names":[],"mappings":";;;AAAA,4DAAkI;AAElI,+BAA2C;AAE3C,MAAa,WAAW;IAEvB,YAAoB,UAAyB;QAAzB,eAAU,GAAV,UAAU,CAAe;IAAI,CAAC;IAElD,OAAO,CAAC,cAA8B;;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC;QACzE,MAAM,SAAS,GAAG,SAAS,KAAK,gCAAgB,CAAC,UAAU,CAAC;QAC5D,MAAM,YAAY,GAAG,CAAC,SAAS,IAAI,CAAC,SAAS,KAAK,gCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAE3F,IAAI,oBAAoB,GAAuB;YAC9C,MAAM;YACN,GAAG;YACH,OAAO;YACP,IAAI;YACJ,YAAY;YACZ,MAAM;SACN,CAAC;QAEF,MAAM,gBAAgB,GAAG,IAAI,cAAO,EAAmB,CAAC;QACxD,UAAI,cAAc,CAAC,OAAO,0CAAE,cAAc,EAAE;YAC3C,oBAAoB,mCAChB,oBAAoB,KACvB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE;oBAChC,gBAAgB,CAAC,IAAI,CAAC;wBACrB,YAAY,EAAE,QAAQ;wBACtB,IAAI,EAAE,mCAAmB,CAAC,gBAAgB;wBAC1C,MAAM,EAAE,cAAc;qBACtB,CAAC,CAAC;gBACJ,CAAC,EACD,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE;oBAC9B,gBAAgB,CAAC,IAAI,CAAC;wBACrB,YAAY,EAAE,QAAQ;wBACtB,IAAI,EAAE,mCAAmB,CAAC,cAAc;wBACxC,MAAM,EAAE,cAAc;qBACtB,CAAC,CAAC;gBACJ,CAAC,GACD,CAAC;SACF;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC;aAC3C,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YACjC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;YAC/E,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAChB,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QACJ,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,GAAe,EAAE,MAAsB;;QAClD,MAAM,KAAK,GAAG,GAAG;YAChB,CAAC,CAAC;gBACD,MAAM,EAAE,GAAG,CAAC,IAAI;gBAChB,UAAU,EAAE,GAAG,CAAC,OAAO;gBACvB,OAAO,QAAE,GAAG,CAAC,QAAQ,0CAAE,OAAO;gBAC9B,MAAM;gBACN,YAAY,EAAE,GAAG,CAAC,QAAQ;aAC1B;YACD,CAAC,CAAC,GAAG,CAAC;QAEP,OAAO,KAAK,CAAC;IACd,CAAC;IAED,aAAa,CAAC,QAAuB,EAAE,SAAkB,EAAE,MAAsB;QAChF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QACvD,IAAI,UAAU,GAAG,IAAI,CAAC;QAEtB,IAAI,SAAS,EAAE;YACd,IAAI;gBACH,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACxE;YAAC,OAAO,KAAK,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACjD,UAAU,GAAG,EAAE,CAAC;aAChB;SACD;QAED,OAAO;YACN,IAAI,EAAE,mCAAmB,CAAC,QAAQ;YAClC,IAAI,EAAE,UAAU;YAChB,MAAM;YACN,UAAU;YACV,OAAO;YACP,MAAM;YACN,YAAY,EAAE,KAAK;SACnB,CAAC;IACH,CAAC;CACD;AAvFD,kCAuFC","sourcesContent":["import { EKvHttpMediaType, EKvHttpResponseType, IKvHttpAdapter, IKvHttpRequest, IKvHttpResponse } from '@kelvininc/js-client-sdk';\nimport { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { Observable, Subject } from 'rxjs';\n\nexport class HttpAdapter implements IKvHttpAdapter {\n\n\tconstructor(private httpClient: AxiosInstance) { }\n\n\trequest(requestPayload: IKvHttpRequest): Observable<IKvHttpResponse> {\n\t\tconst { method, url, data, headers, params, mediaType } = requestPayload;\n\t\tconst isChunked = mediaType === EKvHttpMediaType.jsonStream;\n\t\tconst responseType = !mediaType || (mediaType === EKvHttpMediaType.json) ? 'json' : 'text';\n\n\t\tlet mappedRequestPayload: AxiosRequestConfig = {\n\t\t\tmethod,\n\t\t\turl,\n\t\t\theaders,\n\t\t\tdata,\n\t\t\tresponseType,\n\t\t\tparams\n\t\t};\n\n\t\tconst requestInstance$ = new Subject<IKvHttpResponse>();\n\t\tif (requestPayload.options?.reportProgress) {\n\t\t\tmappedRequestPayload = {\n\t\t\t\t...mappedRequestPayload,\n\t\t\t\tonDownloadProgress: (progress) => {\n\t\t\t\t\trequestInstance$.next({\n\t\t\t\t\t\thttpResponse: progress,\n\t\t\t\t\t\ttype: EKvHttpResponseType.DownloadProgress,\n\t\t\t\t\t\tconfig: requestPayload\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tonUploadProgress: (progress) => {\n\t\t\t\t\trequestInstance$.next({\n\t\t\t\t\t\thttpResponse: progress,\n\t\t\t\t\t\ttype: EKvHttpResponseType.UploadProgress,\n\t\t\t\t\t\tconfig: requestPayload\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tthis.httpClient.request(mappedRequestPayload)\n\t\t\t.then((response: AxiosResponse) => {\n\t\t\t\trequestInstance$.next(this.handleRequest(response, isChunked, requestPayload));\n\t\t\t\trequestInstance$.complete();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\trequestInstance$.error(this.handleError(error, requestPayload));\n\t\t\t});\n\t\treturn requestInstance$;\n\t}\n\n\thandleError(err: AxiosError, config: IKvHttpRequest) {\n\t\tconst error = err\n\t\t\t? {\n\t\t\t\tstatus: err.code,\n\t\t\t\tstatusText: err.message,\n\t\t\t\theaders: err.response?.headers,\n\t\t\t\tconfig,\n\t\t\t\thttpResponse: err.response\n\t\t\t}\n\t\t\t: err;\n\n\t\treturn error;\n\t}\n\n\thandleRequest(response: AxiosResponse, isChunked: boolean, config: IKvHttpRequest): IKvHttpResponse {\n\t\tconst { data, status, statusText, headers } = response;\n\t\tlet bodyParsed = data;\n\n\t\tif (isChunked) {\n\t\t\ttry {\n\t\t\t\tbodyParsed = bodyParsed ? JSON.parse(data.replace(/\\]\\n\\[/g, ',')) : [];\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error during parsing chunk data');\n\t\t\t\tbodyParsed = [];\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttype: EKvHttpResponseType.Response,\n\t\t\tbody: bodyParsed,\n\t\t\tstatus,\n\t\t\tstatusText,\n\t\t\theaders,\n\t\t\tconfig,\n\t\t\thttpResponse: event\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"http-adapter.js","sourceRoot":"","sources":["../../../src/adapters/http-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { EKvHttpMediaType, EKvHttpResponseType, IKvHttpAdapter, IKvHttpRequest, IKvHttpResponse } from '@kelvininc/js-client-sdk';\nimport { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { Observable, Subject } from 'rxjs';\n\nexport class HttpAdapter implements IKvHttpAdapter {\n\n\tconstructor(private httpClient: AxiosInstance) { }\n\n\trequest(requestPayload: IKvHttpRequest): Observable<IKvHttpResponse> {\n\t\tconst { method, url, data, headers, params, mediaType } = requestPayload;\n\t\tconst isChunked = mediaType === EKvHttpMediaType.jsonStream;\n\t\tconst responseType = !mediaType || (mediaType === EKvHttpMediaType.json) ? 'json' : 'text';\n\n\t\tlet mappedRequestPayload: AxiosRequestConfig = {\n\t\t\tmethod,\n\t\t\turl,\n\t\t\theaders,\n\t\t\tdata,\n\t\t\tresponseType,\n\t\t\tparams\n\t\t};\n\n\t\tconst requestInstance$ = new Subject<IKvHttpResponse>();\n\t\tif (requestPayload.options?.reportProgress) {\n\t\t\tmappedRequestPayload = {\n\t\t\t\t...mappedRequestPayload,\n\t\t\t\tonDownloadProgress: (progress) => {\n\t\t\t\t\trequestInstance$.next({\n\t\t\t\t\t\thttpResponse: progress,\n\t\t\t\t\t\ttype: EKvHttpResponseType.DownloadProgress,\n\t\t\t\t\t\tconfig: requestPayload\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tonUploadProgress: (progress) => {\n\t\t\t\t\trequestInstance$.next({\n\t\t\t\t\t\thttpResponse: progress,\n\t\t\t\t\t\ttype: EKvHttpResponseType.UploadProgress,\n\t\t\t\t\t\tconfig: requestPayload\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tthis.httpClient.request(mappedRequestPayload)\n\t\t\t.then((response: AxiosResponse) => {\n\t\t\t\trequestInstance$.next(this.handleRequest(response, isChunked, requestPayload));\n\t\t\t\trequestInstance$.complete();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\trequestInstance$.error(this.handleError(error, requestPayload));\n\t\t\t});\n\t\treturn requestInstance$;\n\t}\n\n\thandleError(err: AxiosError, config: IKvHttpRequest) {\n\t\tconst error = err\n\t\t\t? {\n\t\t\t\tstatus: err.code,\n\t\t\t\tstatusText: err.message,\n\t\t\t\theaders: err.response?.headers,\n\t\t\t\tconfig,\n\t\t\t\thttpResponse: err.response\n\t\t\t}\n\t\t\t: err;\n\n\t\treturn error;\n\t}\n\n\thandleRequest(response: AxiosResponse, isChunked: boolean, config: IKvHttpRequest): IKvHttpResponse {\n\t\tconst { data, status, statusText, headers } = response;\n\t\tlet bodyParsed = data;\n\t\t/**\n\t\t * typeof bodyParsed == 'string' fixes a bug when the stream \n\t\t * comes with only one array the axios framework parses it automatically\n\t\t */\n\t\tif (isChunked && typeof bodyParsed === 'string') {\n\t\t\ttry {\n\t\t\t\tbodyParsed = bodyParsed ? JSON.parse(data.replace(/\\]\\n\\[/g, ',')) : [];\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error during parsing chunk data');\n\t\t\t\tbodyParsed = [];\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttype: EKvHttpResponseType.Response,\n\t\t\tbody: bodyParsed,\n\t\t\tstatus,\n\t\t\tstatusText,\n\t\t\theaders,\n\t\t\tconfig,\n\t\t\thttpResponse: event\n\t\t};\n\t}\n}\n"]}
@@ -59,7 +59,11 @@ export class HttpAdapter {
59
59
  handleRequest(response, isChunked, config) {
60
60
  const { data, status, statusText, headers } = response;
61
61
  let bodyParsed = data;
62
- if (isChunked) {
62
+ /**
63
+ * typeof bodyParsed == 'string' fixes a bug when the stream
64
+ * comes with only one array the axios framework parses it automatically
65
+ */
66
+ if (isChunked && typeof bodyParsed === 'string') {
63
67
  try {
64
68
  bodyParsed = bodyParsed ? JSON.parse(data.replace(/\]\n\[/g, ',')) : [];
65
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http-adapter.js","sourceRoot":"","sources":["../../../src/adapters/http-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { EKvHttpMediaType, EKvHttpResponseType, IKvHttpAdapter, IKvHttpRequest, IKvHttpResponse } from '@kelvininc/js-client-sdk';\nimport { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { Observable, Subject } from 'rxjs';\n\nexport class HttpAdapter implements IKvHttpAdapter {\n\n\tconstructor(private httpClient: AxiosInstance) { }\n\n\trequest(requestPayload: IKvHttpRequest): Observable<IKvHttpResponse> {\n\t\tconst { method, url, data, headers, params, mediaType } = requestPayload;\n\t\tconst isChunked = mediaType === EKvHttpMediaType.jsonStream;\n\t\tconst responseType = !mediaType || (mediaType === EKvHttpMediaType.json) ? 'json' : 'text';\n\n\t\tlet mappedRequestPayload: AxiosRequestConfig = {\n\t\t\tmethod,\n\t\t\turl,\n\t\t\theaders,\n\t\t\tdata,\n\t\t\tresponseType,\n\t\t\tparams\n\t\t};\n\n\t\tconst requestInstance$ = new Subject<IKvHttpResponse>();\n\t\tif (requestPayload.options?.reportProgress) {\n\t\t\tmappedRequestPayload = {\n\t\t\t\t...mappedRequestPayload,\n\t\t\t\tonDownloadProgress: (progress) => {\n\t\t\t\t\trequestInstance$.next({\n\t\t\t\t\t\thttpResponse: progress,\n\t\t\t\t\t\ttype: EKvHttpResponseType.DownloadProgress,\n\t\t\t\t\t\tconfig: requestPayload\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tonUploadProgress: (progress) => {\n\t\t\t\t\trequestInstance$.next({\n\t\t\t\t\t\thttpResponse: progress,\n\t\t\t\t\t\ttype: EKvHttpResponseType.UploadProgress,\n\t\t\t\t\t\tconfig: requestPayload\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tthis.httpClient.request(mappedRequestPayload)\n\t\t\t.then((response: AxiosResponse) => {\n\t\t\t\trequestInstance$.next(this.handleRequest(response, isChunked, requestPayload));\n\t\t\t\trequestInstance$.complete();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\trequestInstance$.error(this.handleError(error, requestPayload));\n\t\t\t});\n\t\treturn requestInstance$;\n\t}\n\n\thandleError(err: AxiosError, config: IKvHttpRequest) {\n\t\tconst error = err\n\t\t\t? {\n\t\t\t\tstatus: err.code,\n\t\t\t\tstatusText: err.message,\n\t\t\t\theaders: err.response?.headers,\n\t\t\t\tconfig,\n\t\t\t\thttpResponse: err.response\n\t\t\t}\n\t\t\t: err;\n\n\t\treturn error;\n\t}\n\n\thandleRequest(response: AxiosResponse, isChunked: boolean, config: IKvHttpRequest): IKvHttpResponse {\n\t\tconst { data, status, statusText, headers } = response;\n\t\tlet bodyParsed = data;\n\n\t\tif (isChunked) {\n\t\t\ttry {\n\t\t\t\tbodyParsed = bodyParsed ? JSON.parse(data.replace(/\\]\\n\\[/g, ',')) : [];\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error during parsing chunk data');\n\t\t\t\tbodyParsed = [];\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttype: EKvHttpResponseType.Response,\n\t\t\tbody: bodyParsed,\n\t\t\tstatus,\n\t\t\tstatusText,\n\t\t\theaders,\n\t\t\tconfig,\n\t\t\thttpResponse: event\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"http-adapter.js","sourceRoot":"","sources":["../../../src/adapters/http-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { EKvHttpMediaType, EKvHttpResponseType, IKvHttpAdapter, IKvHttpRequest, IKvHttpResponse } from '@kelvininc/js-client-sdk';\nimport { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { Observable, Subject } from 'rxjs';\n\nexport class HttpAdapter implements IKvHttpAdapter {\n\n\tconstructor(private httpClient: AxiosInstance) { }\n\n\trequest(requestPayload: IKvHttpRequest): Observable<IKvHttpResponse> {\n\t\tconst { method, url, data, headers, params, mediaType } = requestPayload;\n\t\tconst isChunked = mediaType === EKvHttpMediaType.jsonStream;\n\t\tconst responseType = !mediaType || (mediaType === EKvHttpMediaType.json) ? 'json' : 'text';\n\n\t\tlet mappedRequestPayload: AxiosRequestConfig = {\n\t\t\tmethod,\n\t\t\turl,\n\t\t\theaders,\n\t\t\tdata,\n\t\t\tresponseType,\n\t\t\tparams\n\t\t};\n\n\t\tconst requestInstance$ = new Subject<IKvHttpResponse>();\n\t\tif (requestPayload.options?.reportProgress) {\n\t\t\tmappedRequestPayload = {\n\t\t\t\t...mappedRequestPayload,\n\t\t\t\tonDownloadProgress: (progress) => {\n\t\t\t\t\trequestInstance$.next({\n\t\t\t\t\t\thttpResponse: progress,\n\t\t\t\t\t\ttype: EKvHttpResponseType.DownloadProgress,\n\t\t\t\t\t\tconfig: requestPayload\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tonUploadProgress: (progress) => {\n\t\t\t\t\trequestInstance$.next({\n\t\t\t\t\t\thttpResponse: progress,\n\t\t\t\t\t\ttype: EKvHttpResponseType.UploadProgress,\n\t\t\t\t\t\tconfig: requestPayload\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tthis.httpClient.request(mappedRequestPayload)\n\t\t\t.then((response: AxiosResponse) => {\n\t\t\t\trequestInstance$.next(this.handleRequest(response, isChunked, requestPayload));\n\t\t\t\trequestInstance$.complete();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\trequestInstance$.error(this.handleError(error, requestPayload));\n\t\t\t});\n\t\treturn requestInstance$;\n\t}\n\n\thandleError(err: AxiosError, config: IKvHttpRequest) {\n\t\tconst error = err\n\t\t\t? {\n\t\t\t\tstatus: err.code,\n\t\t\t\tstatusText: err.message,\n\t\t\t\theaders: err.response?.headers,\n\t\t\t\tconfig,\n\t\t\t\thttpResponse: err.response\n\t\t\t}\n\t\t\t: err;\n\n\t\treturn error;\n\t}\n\n\thandleRequest(response: AxiosResponse, isChunked: boolean, config: IKvHttpRequest): IKvHttpResponse {\n\t\tconst { data, status, statusText, headers } = response;\n\t\tlet bodyParsed = data;\n\t\t/**\n\t\t * typeof bodyParsed == 'string' fixes a bug when the stream \n\t\t * comes with only one array the axios framework parses it automatically\n\t\t */\n\t\tif (isChunked && typeof bodyParsed === 'string') {\n\t\t\ttry {\n\t\t\t\tbodyParsed = bodyParsed ? JSON.parse(data.replace(/\\]\\n\\[/g, ',')) : [];\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error during parsing chunk data');\n\t\t\t\tbodyParsed = [];\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttype: EKvHttpResponseType.Response,\n\t\t\tbody: bodyParsed,\n\t\t\tstatus,\n\t\t\tstatusText,\n\t\t\theaders,\n\t\t\tconfig,\n\t\t\thttpResponse: event\n\t\t};\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kelvininc/web-client-sdk",
3
- "version": "7.0.0",
3
+ "version": "7.0.1",
4
4
  "description": "Kelvin SDK Client for modern frontend Javascript frameworks, like Vue or React",
5
5
  "homepage": "https://docs.kelvininc.com",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -44,5 +44,5 @@
44
44
  "axios": "^0.21.1",
45
45
  "rxjs": "~6.6.7"
46
46
  },
47
- "gitHead": "c018cb299cba0b7b217696432bd970dca1d831cd"
47
+ "gitHead": "e127471132cfa0216d1160e9e6aa54f2d5b326a8"
48
48
  }