@kelvininc/node-client-sdk 7.18.0 → 7.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/cjs/adapters/http/config.d.ts +5 -0
  3. package/dist/cjs/adapters/http/config.js +11 -0
  4. package/dist/cjs/adapters/http/config.js.map +1 -0
  5. package/dist/cjs/adapters/http/fetch-http.d.ts +4 -0
  6. package/dist/cjs/adapters/http/fetch-http.js +11 -0
  7. package/dist/cjs/adapters/http/fetch-http.js.map +1 -0
  8. package/dist/cjs/adapters/http/http-requester.d.ts +8 -0
  9. package/dist/cjs/adapters/http/http-requester.js +25 -0
  10. package/dist/cjs/adapters/http/http-requester.js.map +1 -0
  11. package/dist/cjs/adapters/http/node-fetch-http.d.ts +5 -0
  12. package/dist/cjs/adapters/http/node-fetch-http.js +15 -0
  13. package/dist/cjs/adapters/http/node-fetch-http.js.map +1 -0
  14. package/dist/cjs/adapters/http/util.d.ts +10 -0
  15. package/dist/cjs/adapters/http/util.js +144 -0
  16. package/dist/cjs/adapters/http/util.js.map +1 -0
  17. package/dist/cjs/index.d.ts +1 -0
  18. package/dist/cjs/index.js +1 -0
  19. package/dist/cjs/index.js.map +1 -1
  20. package/dist/cjs/kelvin-node-sdk.d.ts +2 -1
  21. package/dist/cjs/kelvin-node-sdk.js +4 -3
  22. package/dist/cjs/kelvin-node-sdk.js.map +1 -1
  23. package/dist/cjs/models.d.ts +1 -0
  24. package/dist/cjs/models.js +14 -0
  25. package/dist/cjs/models.js.map +1 -0
  26. package/dist/cjs/types.d.ts +12 -0
  27. package/dist/cjs/types.js +9 -0
  28. package/dist/cjs/types.js.map +1 -0
  29. package/dist/esm/adapters/http/config.d.ts +5 -0
  30. package/dist/esm/adapters/http/config.js +8 -0
  31. package/dist/esm/adapters/http/config.js.map +1 -0
  32. package/dist/esm/adapters/http/fetch-http.d.ts +4 -0
  33. package/dist/esm/adapters/http/fetch-http.js +7 -0
  34. package/dist/esm/adapters/http/fetch-http.js.map +1 -0
  35. package/dist/esm/adapters/http/http-requester.d.ts +8 -0
  36. package/dist/esm/adapters/http/http-requester.js +21 -0
  37. package/dist/esm/adapters/http/http-requester.js.map +1 -0
  38. package/dist/esm/adapters/http/node-fetch-http.d.ts +5 -0
  39. package/dist/esm/adapters/http/node-fetch-http.js +8 -0
  40. package/dist/esm/adapters/http/node-fetch-http.js.map +1 -0
  41. package/dist/esm/adapters/http/util.d.ts +10 -0
  42. package/dist/esm/adapters/http/util.js +141 -0
  43. package/dist/esm/adapters/http/util.js.map +1 -0
  44. package/dist/esm/index.d.ts +1 -0
  45. package/dist/esm/index.js +1 -0
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/kelvin-node-sdk.d.ts +2 -1
  48. package/dist/esm/kelvin-node-sdk.js +4 -3
  49. package/dist/esm/kelvin-node-sdk.js.map +1 -1
  50. package/dist/esm/models.d.ts +1 -0
  51. package/dist/esm/models.js +2 -0
  52. package/dist/esm/models.js.map +1 -0
  53. package/dist/esm/types.d.ts +12 -0
  54. package/dist/esm/types.js +6 -0
  55. package/dist/esm/types.js.map +1 -0
  56. package/package.json +21 -6
  57. package/dist/cjs/adapters/http.d.ts +0 -7
  58. package/dist/cjs/adapters/http.js +0 -67
  59. package/dist/cjs/adapters/http.js.map +0 -1
  60. package/dist/esm/adapters/http.d.ts +0 -7
  61. package/dist/esm/adapters/http.js +0 -60
  62. package/dist/esm/adapters/http.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,45 @@
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.21.0](https://bitbucket.org/kelvininc/kelvinjs/compare/v7.20.0...v7.21.0) (2023-09-26)
7
+
8
+
9
+ ### Features
10
+
11
+ * **kelvin-node-sdk:** added support to report upload progress [KMAPS-1236] ([2b74727](https://bitbucket.org/kelvininc/kelvinjs/commits/2b7472712e1d31e75b554f2633c4db7014d569ff))
12
+ * **model-exports:** export kelvin models in separate path [KMAPS-1195] ([ce04514](https://bitbucket.org/kelvininc/kelvinjs/commits/ce0451483f46bddd52067808ef4e82d5c7811822))
13
+
14
+
15
+
16
+
17
+
18
+ # [7.20.0](https://bitbucket.org/kelvininc/kelvinjs/compare/v7.19.1...v7.20.0) (2023-09-01)
19
+
20
+
21
+ ### Features
22
+
23
+ * **kelvin-node-sdk:** adds support to native fetch [KMAPS-1193] ([42ab78d](https://bitbucket.org/kelvininc/kelvinjs/commits/42ab78d7ed9cda127fce0f9990c14026502f62d2))
24
+
25
+
26
+
27
+
28
+
29
+ ## [7.19.1](https://bitbucket.org/kelvininc/kelvinjs/compare/v7.19.0...v7.19.1) (2023-08-01)
30
+
31
+ **Note:** Version bump only for package @kelvininc/node-client-sdk
32
+
33
+
34
+
35
+
36
+
37
+ # [7.19.0](https://bitbucket.org/kelvininc/kelvinjs/compare/v7.18.0...v7.19.0) (2023-07-21)
38
+
39
+ **Note:** Version bump only for package @kelvininc/node-client-sdk
40
+
41
+
42
+
43
+
44
+
6
45
  # [7.18.0](https://bitbucket.org/kelvininc/kelvinjs/compare/v7.17.0...v7.18.0) (2023-07-04)
7
46
 
8
47
  **Note:** Version bump only for package @kelvininc/node-client-sdk
@@ -0,0 +1,5 @@
1
+ import { IKvHttpAdapter } from '@kelvininc/js-client-sdk';
2
+ import { EHttpAdapterType } from '../../types';
3
+ export declare const HTTP_ADAPTER: {
4
+ [key in EHttpAdapterType]: IKvHttpAdapter;
5
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HTTP_ADAPTER = void 0;
4
+ const types_1 = require("../../types");
5
+ const node_fetch_http_1 = require("./node-fetch-http");
6
+ const fetch_http_1 = require("./fetch-http");
7
+ exports.HTTP_ADAPTER = {
8
+ [types_1.EHttpAdapterType.NodeFetch]: new node_fetch_http_1.NodeFetchHttpAdapter(),
9
+ [types_1.EHttpAdapterType.Fetch]: new fetch_http_1.FetchHttpAdapter()
10
+ };
11
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/adapters/http/config.ts"],"names":[],"mappings":";;;AACA,uCAA+C;AAC/C,uDAAyD;AACzD,6CAAgD;AAEnC,QAAA,YAAY,GAAkD;IAC1E,CAAC,wBAAgB,CAAC,SAAS,CAAC,EAAE,IAAI,sCAAoB,EAAE;IACxD,CAAC,wBAAgB,CAAC,KAAK,CAAC,EAAE,IAAI,6BAAgB,EAAE;CAChD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { HTTPRequester } from './http-requester';
2
+ export declare class FetchHttpAdapter extends HTTPRequester {
3
+ requestAdapter(url: string, init?: RequestInit): Promise<Response>;
4
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FetchHttpAdapter = void 0;
4
+ const http_requester_1 = require("./http-requester");
5
+ class FetchHttpAdapter extends http_requester_1.HTTPRequester {
6
+ requestAdapter(url, init) {
7
+ return fetch(url, init);
8
+ }
9
+ }
10
+ exports.FetchHttpAdapter = FetchHttpAdapter;
11
+ //# sourceMappingURL=fetch-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-http.js","sourceRoot":"","sources":["../../../../src/adapters/http/fetch-http.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AAEjD,MAAa,gBAAiB,SAAQ,8BAAa;IAClD,cAAc,CAAC,GAAW,EAAE,IAAkB;QAC7C,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;CACD;AAJD,4CAIC"}
@@ -0,0 +1,8 @@
1
+ import { IKvHttpAdapter, IKvHttpResponse } from '@kelvininc/js-client-sdk';
2
+ import { Observable } from 'rxjs';
3
+ import { IKvNodeHttpRequest } from 'src/types';
4
+ import { Response as NF_Response, ResponseInit as NF_RequestInit } from 'node-fetch';
5
+ export declare abstract class HTTPRequester implements IKvHttpAdapter {
6
+ request<L = {}>(requestPayload: IKvNodeHttpRequest<L>): Observable<IKvHttpResponse>;
7
+ abstract requestAdapter(url: string, requestOptions: RequestInit | NF_RequestInit): Promise<Response | NF_Response>;
8
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HTTPRequester = void 0;
4
+ const js_client_sdk_1 = require("@kelvininc/js-client-sdk");
5
+ const rxjs_1 = require("rxjs");
6
+ const util_1 = require("./util");
7
+ class HTTPRequester {
8
+ request(requestPayload) {
9
+ const { options, data, method } = requestPayload;
10
+ /**
11
+ * fetch/node-fetch doesn't support progress report for upload.
12
+ * switched to XHR api.
13
+ * */
14
+ if ((options === null || options === void 0 ? void 0 : options.reportProgress) &&
15
+ data instanceof FormData &&
16
+ method === js_client_sdk_1.EKvHttpMethod.POST) {
17
+ return util_1.handleUploadWithProgress(requestPayload);
18
+ }
19
+ const requestInitConfig = util_1.buildFetchRequestInit(requestPayload);
20
+ const requestInstance$ = rxjs_1.from(this.requestAdapter(util_1.buildFetchUrl(requestPayload), Object.assign({}, requestInitConfig)));
21
+ return util_1.handleFetchResponse(requestPayload, requestInstance$);
22
+ }
23
+ }
24
+ exports.HTTPRequester = HTTPRequester;
25
+ //# sourceMappingURL=http-requester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-requester.js","sourceRoot":"","sources":["../../../../src/adapters/http/http-requester.ts"],"names":[],"mappings":";;;AAAA,4DAIkC;AAClC,+BAAwC;AAExC,iCAKgB;AAMhB,MAAsB,aAAa;IAClC,OAAO,CACN,cAAqC;QAErC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;QAEjD;;;aAGK;QACL,IACC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc;YACvB,IAAI,YAAY,QAAQ;YACxB,MAAM,KAAK,6BAAa,CAAC,IAAI,EAC5B;YACD,OAAO,+BAAwB,CAAI,cAAc,CAAC,CAAC;SACnD;QAED,MAAM,iBAAiB,GAAG,4BAAqB,CAAC,cAAc,CAAC,CAAC;QAChE,MAAM,gBAAgB,GAAG,WAAI,CAC5B,IAAI,CAAC,cAAc,CAAC,oBAAa,CAAC,cAAc,CAAC,oBAC7C,iBAAiB,EACnB,CACF,CAAC;QAEF,OAAO,0BAAmB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC9D,CAAC;CAMD;AAhCD,sCAgCC"}
@@ -0,0 +1,5 @@
1
+ import { RequestInit, Response } from 'node-fetch';
2
+ import { HTTPRequester } from './http-requester';
3
+ export declare class NodeFetchHttpAdapter extends HTTPRequester {
4
+ requestAdapter(url: string, init?: RequestInit): Promise<Response>;
5
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NodeFetchHttpAdapter = void 0;
7
+ const node_fetch_1 = __importDefault(require("node-fetch"));
8
+ const http_requester_1 = require("./http-requester");
9
+ class NodeFetchHttpAdapter extends http_requester_1.HTTPRequester {
10
+ requestAdapter(url, init) {
11
+ return node_fetch_1.default(url, init);
12
+ }
13
+ }
14
+ exports.NodeFetchHttpAdapter = NodeFetchHttpAdapter;
15
+ //# sourceMappingURL=node-fetch-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-fetch-http.js","sourceRoot":"","sources":["../../../../src/adapters/http/node-fetch-http.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA0D;AAC1D,qDAAiD;AAEjD,MAAa,oBAAqB,SAAQ,8BAAa;IACtD,cAAc,CAAC,GAAW,EAAE,IAAkB;QAC7C,OAAO,oBAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;CACD;AAJD,oDAIC"}
@@ -0,0 +1,10 @@
1
+ import { IKvHttpRequest, IKvHttpResponse } from '@kelvininc/js-client-sdk';
2
+ import { Observable } from 'rxjs';
3
+ import { Response as NF_Response, ResponseInit as NF_RequestInit } from 'node-fetch';
4
+ import { IKvNodeHttpRequest } from '../../types';
5
+ export declare const handleFetchError: (response: Response | NF_Response, request: IKvHttpRequest) => Observable<IKvHttpResponse>;
6
+ export declare const handleFetchRequest: (response: Response | NF_Response, request: IKvHttpRequest) => Observable<IKvHttpResponse>;
7
+ export declare const buildFetchUrl: ({ url, params }: IKvHttpRequest) => string;
8
+ export declare const buildFetchRequestInit: ({ method, data, headers: requestHeaders, options }: IKvHttpRequest) => RequestInit | NF_RequestInit;
9
+ export declare const handleFetchResponse: (request: IKvHttpRequest, response$: Observable<Response | NF_Response>) => Observable<IKvHttpResponse>;
10
+ export declare const handleUploadWithProgress: <L>(requestPayload: IKvNodeHttpRequest<L>) => Observable<IKvHttpResponse>;
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleUploadWithProgress = exports.handleFetchResponse = exports.buildFetchRequestInit = exports.buildFetchUrl = exports.handleFetchRequest = exports.handleFetchError = void 0;
4
+ const js_client_sdk_1 = require("@kelvininc/js-client-sdk");
5
+ const rxjs_1 = require("rxjs");
6
+ const operators_1 = require("rxjs/operators");
7
+ const rxjs_2 = require("rxjs");
8
+ const isObject = (value) => {
9
+ const type = typeof value;
10
+ return value !== null && (type === 'object' || type === 'function');
11
+ };
12
+ const handleResponse = (response) => {
13
+ try {
14
+ return JSON.parse(response);
15
+ }
16
+ catch (error) {
17
+ return response;
18
+ }
19
+ };
20
+ const transformXHRHeaders = (headers) => {
21
+ const mappedHeaders = headers
22
+ .trim()
23
+ .split('\n')
24
+ .map((header) => header.trim().split(':'));
25
+ return new Headers(mappedHeaders);
26
+ };
27
+ const transformToSuccessResponse = (httpResponse, body, config) => {
28
+ const { status, headers, statusText } = httpResponse;
29
+ return {
30
+ type: js_client_sdk_1.EKvHttpResponseType.Response,
31
+ body,
32
+ status,
33
+ statusText,
34
+ headers,
35
+ config,
36
+ httpResponse
37
+ };
38
+ };
39
+ exports.handleFetchError = (response, request) => {
40
+ const { statusText, status, headers } = response;
41
+ const error = {
42
+ status,
43
+ statusText,
44
+ headers,
45
+ config: request
46
+ };
47
+ return rxjs_1.from(response.text()).pipe(operators_1.map((data) => handleResponse(data)), operators_1.switchMap((httpResponse) => rxjs_1.throwError(Object.assign(Object.assign({}, error), { httpResponse }))));
48
+ };
49
+ const handleReponseData = (response, request) => {
50
+ switch (request.mediaType) {
51
+ case js_client_sdk_1.EKvHttpMediaType.json:
52
+ return response.json();
53
+ case js_client_sdk_1.EKvHttpMediaType.jsonStream:
54
+ return response.text();
55
+ case js_client_sdk_1.EKvHttpMediaType.zip:
56
+ return response.blob();
57
+ default:
58
+ return response.json();
59
+ }
60
+ };
61
+ exports.handleFetchRequest = (response, request) => {
62
+ const data = handleReponseData(response, request);
63
+ return rxjs_1.from(data).pipe(operators_1.map((data) => {
64
+ const isChunked = request.mediaType === js_client_sdk_1.EKvHttpMediaType.jsonStream;
65
+ let parsedData = data;
66
+ if (isChunked) {
67
+ try {
68
+ parsedData = parsedData
69
+ ? JSON.parse(parsedData.replace(/\]\n\[/g, ','))
70
+ : [];
71
+ }
72
+ catch (error) {
73
+ console.error('Error during parsing chunk data');
74
+ parsedData = [];
75
+ }
76
+ }
77
+ return transformToSuccessResponse(response, parsedData, request);
78
+ }));
79
+ };
80
+ exports.buildFetchUrl = ({ url, params }) => {
81
+ return params
82
+ ? `${url}?${new URLSearchParams(params).toString()}`
83
+ : url;
84
+ };
85
+ exports.buildFetchRequestInit = ({ method, data, headers: requestHeaders, options = {} }) => {
86
+ const isFormData = data instanceof FormData;
87
+ const isDataObject = isObject(data) && !isFormData;
88
+ const headers = isDataObject
89
+ ? Object.assign({ 'Content-Type': js_client_sdk_1.EKvHttpMediaType.json }, requestHeaders) : requestHeaders;
90
+ const body = isDataObject ? JSON.stringify(data) : data;
91
+ return Object.assign({ method,
92
+ headers,
93
+ body, redirect: 'error' }, options);
94
+ };
95
+ exports.handleFetchResponse = (request, response$) => {
96
+ return response$.pipe(operators_1.switchMap((response) => response.ok
97
+ ? exports.handleFetchRequest(response, request)
98
+ : exports.handleFetchError(response, request)));
99
+ };
100
+ const transformXHRError = (xhr, config) => {
101
+ const { status, statusText, responseText } = xhr;
102
+ return {
103
+ type: js_client_sdk_1.EKvHttpResponseType.Response,
104
+ httpResponse: this,
105
+ config,
106
+ status,
107
+ statusText,
108
+ body: handleResponse(responseText)
109
+ };
110
+ };
111
+ exports.handleUploadWithProgress = (requestPayload) => {
112
+ const xhr = new XMLHttpRequest();
113
+ const response$ = new rxjs_2.Subject();
114
+ xhr.onload = function () {
115
+ const { status, response } = this;
116
+ if (status >= js_client_sdk_1.EKvHttpStatusCode.SUCCESS &&
117
+ status < js_client_sdk_1.EKvHttpStatusCode.MULTIPLE_CHOICES) {
118
+ const data = handleResponse(response);
119
+ const headers = transformXHRHeaders(this.getAllResponseHeaders());
120
+ response$.next(transformToSuccessResponse(Object.assign(Object.assign({}, this), { headers }), data, requestPayload));
121
+ response$.complete();
122
+ }
123
+ else {
124
+ response$.error(transformXHRError(this, requestPayload));
125
+ }
126
+ };
127
+ xhr.upload.onprogress = function (httpResponse) {
128
+ response$.next({
129
+ type: js_client_sdk_1.EKvHttpResponseType.UploadProgress,
130
+ config: requestPayload,
131
+ httpResponse
132
+ });
133
+ };
134
+ xhr.onerror = function () {
135
+ response$.error(transformXHRError(this, requestPayload));
136
+ };
137
+ xhr.open(js_client_sdk_1.EKvHttpMethod.POST, requestPayload.url, true);
138
+ if (requestPayload.headers) {
139
+ Object.entries(requestPayload.headers).forEach(([key, value]) => xhr.setRequestHeader(key, value));
140
+ }
141
+ xhr.send(requestPayload.data);
142
+ return response$;
143
+ };
144
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/adapters/http/util.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from '@kelvininc/js-client-sdk';
2
2
  export * from './kelvin-node-sdk';
3
+ export * from './types';
package/dist/cjs/index.js CHANGED
@@ -12,4 +12,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("@kelvininc/js-client-sdk"), exports);
14
14
  __exportStar(require("./kelvin-node-sdk"), exports);
15
+ __exportStar(require("./types"), exports);
15
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAyC;AACzC,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAyC;AACzC,oDAAkC;AAClC,0CAAwB"}
@@ -1,4 +1,5 @@
1
1
  import { IKvEnvironmentConfig } from '@kelvininc/js-client-sdk';
2
+ import { EHttpAdapterType } from './types';
2
3
  export declare class KelvinSDK {
3
- static initialize(configuration: IKvEnvironmentConfig): void;
4
+ static initialize(configuration: IKvEnvironmentConfig, adapter?: EHttpAdapterType): void;
4
5
  }
@@ -2,11 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.KelvinSDK = void 0;
4
4
  const js_client_sdk_1 = require("@kelvininc/js-client-sdk");
5
- const http_1 = require("./adapters/http");
6
5
  const storage_1 = require("./adapters/storage");
6
+ const types_1 = require("./types");
7
+ const config_1 = require("./adapters/http/config");
7
8
  class KelvinSDK {
8
- static initialize(configuration) {
9
- js_client_sdk_1.init(Object.assign(Object.assign({}, configuration), { httpAdapter: new http_1.NodeHttpAdapter(), storageAdapter: new storage_1.NodeStorageAdapter() }));
9
+ static initialize(configuration, adapter = types_1.EHttpAdapterType.NodeFetch) {
10
+ js_client_sdk_1.init(Object.assign(Object.assign({}, configuration), { httpAdapter: config_1.HTTP_ADAPTER[adapter], storageAdapter: new storage_1.NodeStorageAdapter() }));
10
11
  }
11
12
  }
12
13
  exports.KelvinSDK = KelvinSDK;
@@ -1 +1 @@
1
- {"version":3,"file":"kelvin-node-sdk.js","sourceRoot":"","sources":["../../src/kelvin-node-sdk.ts"],"names":[],"mappings":";;;AAAA,4DAGkC;AAClC,0CAAkD;AAClD,gDAAwD;AAExD,MAAa,SAAS;IACrB,MAAM,CAAC,UAAU,CAAC,aAAmC;QACpD,oBAAc,iCACV,aAAa,KAChB,WAAW,EAAE,IAAI,sBAAe,EAAE,EAClC,cAAc,EAAE,IAAI,4BAAkB,EAAE,IACvC,CAAC;IACJ,CAAC;CACD;AARD,8BAQC"}
1
+ {"version":3,"file":"kelvin-node-sdk.js","sourceRoot":"","sources":["../../src/kelvin-node-sdk.ts"],"names":[],"mappings":";;;AAAA,4DAGkC;AAClC,gDAAwD;AACxD,mCAA2C;AAC3C,mDAAsD;AAEtD,MAAa,SAAS;IACrB,MAAM,CAAC,UAAU,CAChB,aAAmC,EACnC,OAAO,GAAG,wBAAgB,CAAC,SAAS;QAEpC,oBAAc,iCACV,aAAa,KAChB,WAAW,EAAE,qBAAY,CAAC,OAAO,CAAC,EAClC,cAAc,EAAE,IAAI,4BAAkB,EAAE,IACvC,CAAC;IACJ,CAAC;CACD;AAXD,8BAWC"}
@@ -0,0 +1 @@
1
+ export * from '@kelvininc/js-client-sdk/models';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("@kelvininc/js-client-sdk/models"), exports);
14
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kEAAgD"}
@@ -0,0 +1,12 @@
1
+ import { IKvHttpRequest, IKvHttpRequestOptions } from '@kelvininc/js-client-sdk';
2
+ export declare enum EHttpAdapterType {
3
+ Fetch = "fetch",
4
+ NodeFetch = "node-fetch"
5
+ }
6
+ export declare type KvNodeHttpRequestOptions<L extends RequestInit> = L & IKvHttpRequestOptions;
7
+ export interface IKvNodeHttpRequest<L extends {}> extends IKvHttpRequest {
8
+ options?: KvNodeHttpRequestOptions<L>;
9
+ }
10
+ export declare type XHRResponseHeaders = XMLHttpRequest & {
11
+ headers: Headers;
12
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EHttpAdapterType = void 0;
4
+ var EHttpAdapterType;
5
+ (function (EHttpAdapterType) {
6
+ EHttpAdapterType["Fetch"] = "fetch";
7
+ EHttpAdapterType["NodeFetch"] = "node-fetch";
8
+ })(EHttpAdapterType = exports.EHttpAdapterType || (exports.EHttpAdapterType = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAKA,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC3B,mCAAe,CAAA;IACf,4CAAwB,CAAA;AACzB,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B"}
@@ -0,0 +1,5 @@
1
+ import { IKvHttpAdapter } from '@kelvininc/js-client-sdk';
2
+ import { EHttpAdapterType } from '../../types';
3
+ export declare const HTTP_ADAPTER: {
4
+ [key in EHttpAdapterType]: IKvHttpAdapter;
5
+ };
@@ -0,0 +1,8 @@
1
+ import { EHttpAdapterType } from '../../types';
2
+ import { NodeFetchHttpAdapter } from './node-fetch-http';
3
+ import { FetchHttpAdapter } from './fetch-http';
4
+ export const HTTP_ADAPTER = {
5
+ [EHttpAdapterType.NodeFetch]: new NodeFetchHttpAdapter(),
6
+ [EHttpAdapterType.Fetch]: new FetchHttpAdapter()
7
+ };
8
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/adapters/http/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,YAAY,GAAkD;IAC1E,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,IAAI,oBAAoB,EAAE;IACxD,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,IAAI,gBAAgB,EAAE;CAChD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { HTTPRequester } from './http-requester';
2
+ export declare class FetchHttpAdapter extends HTTPRequester {
3
+ requestAdapter(url: string, init?: RequestInit): Promise<Response>;
4
+ }
@@ -0,0 +1,7 @@
1
+ import { HTTPRequester } from './http-requester';
2
+ export class FetchHttpAdapter extends HTTPRequester {
3
+ requestAdapter(url, init) {
4
+ return fetch(url, init);
5
+ }
6
+ }
7
+ //# sourceMappingURL=fetch-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-http.js","sourceRoot":"","sources":["../../../../src/adapters/http/fetch-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IAClD,cAAc,CAAC,GAAW,EAAE,IAAkB;QAC7C,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;CACD"}
@@ -0,0 +1,8 @@
1
+ import { IKvHttpAdapter, IKvHttpResponse } from '@kelvininc/js-client-sdk';
2
+ import { Observable } from 'rxjs';
3
+ import { IKvNodeHttpRequest } from 'src/types';
4
+ import { Response as NF_Response, ResponseInit as NF_RequestInit } from 'node-fetch';
5
+ export declare abstract class HTTPRequester implements IKvHttpAdapter {
6
+ request<L = {}>(requestPayload: IKvNodeHttpRequest<L>): Observable<IKvHttpResponse>;
7
+ abstract requestAdapter(url: string, requestOptions: RequestInit | NF_RequestInit): Promise<Response | NF_Response>;
8
+ }
@@ -0,0 +1,21 @@
1
+ import { EKvHttpMethod } from '@kelvininc/js-client-sdk';
2
+ import { from } from 'rxjs';
3
+ import { buildFetchRequestInit, buildFetchUrl, handleFetchResponse, handleUploadWithProgress } from './util';
4
+ export class HTTPRequester {
5
+ request(requestPayload) {
6
+ const { options, data, method } = requestPayload;
7
+ /**
8
+ * fetch/node-fetch doesn't support progress report for upload.
9
+ * switched to XHR api.
10
+ * */
11
+ if ((options === null || options === void 0 ? void 0 : options.reportProgress) &&
12
+ data instanceof FormData &&
13
+ method === EKvHttpMethod.POST) {
14
+ return handleUploadWithProgress(requestPayload);
15
+ }
16
+ const requestInitConfig = buildFetchRequestInit(requestPayload);
17
+ const requestInstance$ = from(this.requestAdapter(buildFetchUrl(requestPayload), Object.assign({}, requestInitConfig)));
18
+ return handleFetchResponse(requestPayload, requestInstance$);
19
+ }
20
+ }
21
+ //# sourceMappingURL=http-requester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-requester.js","sourceRoot":"","sources":["../../../../src/adapters/http/http-requester.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAc,IAAI,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,EACN,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACxB,MAAM,QAAQ,CAAC;AAMhB,MAAM,OAAgB,aAAa;IAClC,OAAO,CACN,cAAqC;QAErC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;QAEjD;;;aAGK;QACL,IACC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc;YACvB,IAAI,YAAY,QAAQ;YACxB,MAAM,KAAK,aAAa,CAAC,IAAI,EAC5B;YACD,OAAO,wBAAwB,CAAI,cAAc,CAAC,CAAC;SACnD;QAED,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAChE,MAAM,gBAAgB,GAAG,IAAI,CAC5B,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,oBAC7C,iBAAiB,EACnB,CACF,CAAC;QAEF,OAAO,mBAAmB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC9D,CAAC;CAMD"}
@@ -0,0 +1,5 @@
1
+ import { RequestInit, Response } from 'node-fetch';
2
+ import { HTTPRequester } from './http-requester';
3
+ export declare class NodeFetchHttpAdapter extends HTTPRequester {
4
+ requestAdapter(url: string, init?: RequestInit): Promise<Response>;
5
+ }
@@ -0,0 +1,8 @@
1
+ import fetch from 'node-fetch';
2
+ import { HTTPRequester } from './http-requester';
3
+ export class NodeFetchHttpAdapter extends HTTPRequester {
4
+ requestAdapter(url, init) {
5
+ return fetch(url, init);
6
+ }
7
+ }
8
+ //# sourceMappingURL=node-fetch-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-fetch-http.js","sourceRoot":"","sources":["../../../../src/adapters/http/node-fetch-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IACtD,cAAc,CAAC,GAAW,EAAE,IAAkB;QAC7C,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;CACD"}
@@ -0,0 +1,10 @@
1
+ import { IKvHttpRequest, IKvHttpResponse } from '@kelvininc/js-client-sdk';
2
+ import { Observable } from 'rxjs';
3
+ import { Response as NF_Response, ResponseInit as NF_RequestInit } from 'node-fetch';
4
+ import { IKvNodeHttpRequest } from '../../types';
5
+ export declare const handleFetchError: (response: Response | NF_Response, request: IKvHttpRequest) => Observable<IKvHttpResponse>;
6
+ export declare const handleFetchRequest: (response: Response | NF_Response, request: IKvHttpRequest) => Observable<IKvHttpResponse>;
7
+ export declare const buildFetchUrl: ({ url, params }: IKvHttpRequest) => string;
8
+ export declare const buildFetchRequestInit: ({ method, data, headers: requestHeaders, options }: IKvHttpRequest) => RequestInit | NF_RequestInit;
9
+ export declare const handleFetchResponse: (request: IKvHttpRequest, response$: Observable<Response | NF_Response>) => Observable<IKvHttpResponse>;
10
+ export declare const handleUploadWithProgress: <L>(requestPayload: IKvNodeHttpRequest<L>) => Observable<IKvHttpResponse>;
@@ -0,0 +1,141 @@
1
+ import { EKvHttpMediaType, EKvHttpMethod, EKvHttpResponseType, EKvHttpStatusCode } from '@kelvininc/js-client-sdk';
2
+ import { from, throwError } from 'rxjs';
3
+ import { map, switchMap } from 'rxjs/operators';
4
+ import { Subject } from 'rxjs';
5
+ const isObject = (value) => {
6
+ const type = typeof value;
7
+ return value !== null && (type === 'object' || type === 'function');
8
+ };
9
+ const handleResponse = (response) => {
10
+ try {
11
+ return JSON.parse(response);
12
+ }
13
+ catch (error) {
14
+ return response;
15
+ }
16
+ };
17
+ const transformXHRHeaders = (headers) => {
18
+ const mappedHeaders = headers
19
+ .trim()
20
+ .split('\n')
21
+ .map((header) => header.trim().split(':'));
22
+ return new Headers(mappedHeaders);
23
+ };
24
+ const transformToSuccessResponse = (httpResponse, body, config) => {
25
+ const { status, headers, statusText } = httpResponse;
26
+ return {
27
+ type: EKvHttpResponseType.Response,
28
+ body,
29
+ status,
30
+ statusText,
31
+ headers,
32
+ config,
33
+ httpResponse
34
+ };
35
+ };
36
+ export const handleFetchError = (response, request) => {
37
+ const { statusText, status, headers } = response;
38
+ const error = {
39
+ status,
40
+ statusText,
41
+ headers,
42
+ config: request
43
+ };
44
+ return from(response.text()).pipe(map((data) => handleResponse(data)), switchMap((httpResponse) => throwError(Object.assign(Object.assign({}, error), { httpResponse }))));
45
+ };
46
+ const handleReponseData = (response, request) => {
47
+ switch (request.mediaType) {
48
+ case EKvHttpMediaType.json:
49
+ return response.json();
50
+ case EKvHttpMediaType.jsonStream:
51
+ return response.text();
52
+ case EKvHttpMediaType.zip:
53
+ return response.blob();
54
+ default:
55
+ return response.json();
56
+ }
57
+ };
58
+ export const handleFetchRequest = (response, request) => {
59
+ const data = handleReponseData(response, request);
60
+ return from(data).pipe(map((data) => {
61
+ const isChunked = request.mediaType === EKvHttpMediaType.jsonStream;
62
+ let parsedData = data;
63
+ if (isChunked) {
64
+ try {
65
+ parsedData = parsedData
66
+ ? JSON.parse(parsedData.replace(/\]\n\[/g, ','))
67
+ : [];
68
+ }
69
+ catch (error) {
70
+ console.error('Error during parsing chunk data');
71
+ parsedData = [];
72
+ }
73
+ }
74
+ return transformToSuccessResponse(response, parsedData, request);
75
+ }));
76
+ };
77
+ export const buildFetchUrl = ({ url, params }) => {
78
+ return params
79
+ ? `${url}?${new URLSearchParams(params).toString()}`
80
+ : url;
81
+ };
82
+ export const buildFetchRequestInit = ({ method, data, headers: requestHeaders, options = {} }) => {
83
+ const isFormData = data instanceof FormData;
84
+ const isDataObject = isObject(data) && !isFormData;
85
+ const headers = isDataObject
86
+ ? Object.assign({ 'Content-Type': EKvHttpMediaType.json }, requestHeaders) : requestHeaders;
87
+ const body = isDataObject ? JSON.stringify(data) : data;
88
+ return Object.assign({ method,
89
+ headers,
90
+ body, redirect: 'error' }, options);
91
+ };
92
+ export const handleFetchResponse = (request, response$) => {
93
+ return response$.pipe(switchMap((response) => response.ok
94
+ ? handleFetchRequest(response, request)
95
+ : handleFetchError(response, request)));
96
+ };
97
+ const transformXHRError = (xhr, config) => {
98
+ const { status, statusText, responseText } = xhr;
99
+ return {
100
+ type: EKvHttpResponseType.Response,
101
+ httpResponse: this,
102
+ config,
103
+ status,
104
+ statusText,
105
+ body: handleResponse(responseText)
106
+ };
107
+ };
108
+ export const handleUploadWithProgress = (requestPayload) => {
109
+ const xhr = new XMLHttpRequest();
110
+ const response$ = new Subject();
111
+ xhr.onload = function () {
112
+ const { status, response } = this;
113
+ if (status >= EKvHttpStatusCode.SUCCESS &&
114
+ status < EKvHttpStatusCode.MULTIPLE_CHOICES) {
115
+ const data = handleResponse(response);
116
+ const headers = transformXHRHeaders(this.getAllResponseHeaders());
117
+ response$.next(transformToSuccessResponse(Object.assign(Object.assign({}, this), { headers }), data, requestPayload));
118
+ response$.complete();
119
+ }
120
+ else {
121
+ response$.error(transformXHRError(this, requestPayload));
122
+ }
123
+ };
124
+ xhr.upload.onprogress = function (httpResponse) {
125
+ response$.next({
126
+ type: EKvHttpResponseType.UploadProgress,
127
+ config: requestPayload,
128
+ httpResponse
129
+ });
130
+ };
131
+ xhr.onerror = function () {
132
+ response$.error(transformXHRError(this, requestPayload));
133
+ };
134
+ xhr.open(EKvHttpMethod.POST, requestPayload.url, true);
135
+ if (requestPayload.headers) {
136
+ Object.entries(requestPayload.headers).forEach(([key, value]) => xhr.setRequestHeader(key, value));
137
+ }
138
+ xhr.send(requestPayload.data);
139
+ return response$;
140
+ };
141
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/adapters/http/util.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from '@kelvininc/js-client-sdk';
2
2
  export * from './kelvin-node-sdk';
3
+ export * from './types';
package/dist/esm/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from '@kelvininc/js-client-sdk';
2
2
  export * from './kelvin-node-sdk';
3
+ export * from './types';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { IKvEnvironmentConfig } from '@kelvininc/js-client-sdk';
2
+ import { EHttpAdapterType } from './types';
2
3
  export declare class KelvinSDK {
3
- static initialize(configuration: IKvEnvironmentConfig): void;
4
+ static initialize(configuration: IKvEnvironmentConfig, adapter?: EHttpAdapterType): void;
4
5
  }
@@ -1,9 +1,10 @@
1
1
  import { init as initKelvinCore } from '@kelvininc/js-client-sdk';
2
- import { NodeHttpAdapter } from './adapters/http';
3
2
  import { NodeStorageAdapter } from './adapters/storage';
3
+ import { EHttpAdapterType } from './types';
4
+ import { HTTP_ADAPTER } from './adapters/http/config';
4
5
  export class KelvinSDK {
5
- static initialize(configuration) {
6
- initKelvinCore(Object.assign(Object.assign({}, configuration), { httpAdapter: new NodeHttpAdapter(), storageAdapter: new NodeStorageAdapter() }));
6
+ static initialize(configuration, adapter = EHttpAdapterType.NodeFetch) {
7
+ initKelvinCore(Object.assign(Object.assign({}, configuration), { httpAdapter: HTTP_ADAPTER[adapter], storageAdapter: new NodeStorageAdapter() }));
7
8
  }
8
9
  }
9
10
  //# sourceMappingURL=kelvin-node-sdk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kelvin-node-sdk.js","sourceRoot":"","sources":["../../src/kelvin-node-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,IAAI,IAAI,cAAc,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,OAAO,SAAS;IACrB,MAAM,CAAC,UAAU,CAAC,aAAmC;QACpD,cAAc,iCACV,aAAa,KAChB,WAAW,EAAE,IAAI,eAAe,EAAE,EAClC,cAAc,EAAE,IAAI,kBAAkB,EAAE,IACvC,CAAC;IACJ,CAAC;CACD"}
1
+ {"version":3,"file":"kelvin-node-sdk.js","sourceRoot":"","sources":["../../src/kelvin-node-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,IAAI,IAAI,cAAc,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,OAAO,SAAS;IACrB,MAAM,CAAC,UAAU,CAChB,aAAmC,EACnC,OAAO,GAAG,gBAAgB,CAAC,SAAS;QAEpC,cAAc,iCACV,aAAa,KAChB,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,EAClC,cAAc,EAAE,IAAI,kBAAkB,EAAE,IACvC,CAAC;IACJ,CAAC;CACD"}
@@ -0,0 +1 @@
1
+ export * from '@kelvininc/js-client-sdk/models';
@@ -0,0 +1,2 @@
1
+ export * from '@kelvininc/js-client-sdk/models';
2
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { IKvHttpRequest, IKvHttpRequestOptions } from '@kelvininc/js-client-sdk';
2
+ export declare enum EHttpAdapterType {
3
+ Fetch = "fetch",
4
+ NodeFetch = "node-fetch"
5
+ }
6
+ export declare type KvNodeHttpRequestOptions<L extends RequestInit> = L & IKvHttpRequestOptions;
7
+ export interface IKvNodeHttpRequest<L extends {}> extends IKvHttpRequest {
8
+ options?: KvNodeHttpRequestOptions<L>;
9
+ }
10
+ export declare type XHRResponseHeaders = XMLHttpRequest & {
11
+ headers: Headers;
12
+ };
@@ -0,0 +1,6 @@
1
+ export var EHttpAdapterType;
2
+ (function (EHttpAdapterType) {
3
+ EHttpAdapterType["Fetch"] = "fetch";
4
+ EHttpAdapterType["NodeFetch"] = "node-fetch";
5
+ })(EHttpAdapterType || (EHttpAdapterType = {}));
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC3B,mCAAe,CAAA;IACf,4CAAwB,CAAA;AACzB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kelvininc/node-client-sdk",
3
- "version": "7.18.0",
3
+ "version": "7.21.0",
4
4
  "description": "Kelvin SDK Client for Node applications",
5
5
  "homepage": "https://docs.kelvininc.com",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -10,7 +10,7 @@
10
10
  "kelvin node client"
11
11
  ],
12
12
  "author": {
13
- "name": "Kevin Inc.",
13
+ "name": "Kelvin Inc.",
14
14
  "email": "support@kelvininc.com",
15
15
  "url": "https://kelvininc.com"
16
16
  },
@@ -21,29 +21,44 @@
21
21
  "type": "module",
22
22
  "main": "dist/cjs/index.js",
23
23
  "module": "dist/esm/index.js",
24
+ "exports": {
25
+ ".": {
26
+ "require": "./dist/cjs/index.js",
27
+ "import": "./dist/esm/index.js",
28
+ "types": "./dist/index.d.ts"
29
+ },
30
+ "./models": {
31
+ "require": "./dist/cjs/models.js",
32
+ "import": "./dist/esm/models.js",
33
+ "types": "./dist/esm/models.d.ts"
34
+ }
35
+ },
24
36
  "files": [
25
37
  "dist"
26
38
  ],
27
39
  "scripts": {
28
40
  "clean": "rm -f -r node_modules dist",
29
41
  "build": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json && cp package-cjs.json dist/cjs/package.json",
42
+ "build:watch": "tsc -p tsconfig.json --watch",
30
43
  "tslint": "tslint",
31
44
  "lint:fix": "tslint -p tsconfig.json --fix",
32
45
  "test": "echo \"Error: run tests from root\" && exit 1"
33
46
  },
34
47
  "dependencies": {
35
- "@kelvininc/js-client-sdk": "^7.18.0"
48
+ "@kelvininc/js-client-sdk": "^7.21.0",
49
+ "encoding": "^0.1.0",
50
+ "node-fetch": "^2.6.7"
36
51
  },
37
52
  "devDependencies": {
38
- "@types/node-fetch": "^2.5.7",
53
+ "@types/node": "17.0.41",
54
+ "@types/node-fetch": "2.6.1",
39
55
  "rxjs": "~6.6.7",
40
56
  "tslint": "^6.1.2",
41
57
  "tslint-defocus": "^2.0.6",
42
58
  "typescript": "^3.9.7"
43
59
  },
44
60
  "peerDependencies": {
45
- "node-fetch": "^2.6.0",
46
61
  "rxjs": "~6.6.7"
47
62
  },
48
- "gitHead": "57fedbf26d4f679b5bd220d20680584e7ea995c3"
63
+ "gitHead": "fbe0f93f29d4f423b20574095f83ed8b527fee39"
49
64
  }
@@ -1,7 +0,0 @@
1
- import { IKvHttpAdapter, IKvHttpRequest, IKvHttpResponse } from '@kelvininc/js-client-sdk';
2
- import { Observable } from 'rxjs';
3
- export declare class NodeHttpAdapter implements IKvHttpAdapter {
4
- request(requestPayload: IKvHttpRequest): Observable<IKvHttpResponse>;
5
- private handleRequest;
6
- private handleError;
7
- }
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.NodeHttpAdapter = void 0;
7
- const js_client_sdk_1 = require("@kelvininc/js-client-sdk");
8
- const node_fetch_1 = __importDefault(require("node-fetch"));
9
- const rxjs_1 = require("rxjs");
10
- const operators_1 = require("rxjs/operators");
11
- class NodeHttpAdapter {
12
- request(requestPayload) {
13
- const { method, url, data, headers: requestHeaders, params, mediaType } = requestPayload;
14
- const isChunked = mediaType === js_client_sdk_1.EKvHttpMediaType.jsonStream;
15
- const isJSONObject = !mediaType || mediaType === js_client_sdk_1.EKvHttpMediaType.json;
16
- const headers = data instanceof Object
17
- ? Object.assign({ 'Content-Type': js_client_sdk_1.EKvHttpMediaType.json }, requestHeaders) : requestHeaders;
18
- const urlRequest = params
19
- ? `${url}?${new URLSearchParams(params).toString()}`
20
- : url;
21
- const requestInstance$ = rxjs_1.from(node_fetch_1.default(urlRequest, {
22
- method,
23
- headers,
24
- body: data instanceof Object ? JSON.stringify(data) : data
25
- }));
26
- return requestInstance$.pipe(operators_1.switchMap(response => response.ok
27
- ? this.handleRequest(response, requestPayload, isChunked, isJSONObject)
28
- : this.handleError(response, requestPayload)));
29
- }
30
- handleRequest(response, request, isChunked, isJSONObject) {
31
- return rxjs_1.from(isJSONObject ? response.json() : response.text())
32
- .pipe(operators_1.map(data => {
33
- const { headers, status, statusText, body: httpResponse } = response;
34
- let parsedData = data;
35
- if (isChunked) {
36
- try {
37
- parsedData = parsedData ? JSON.parse(parsedData.replace(/\]\n\[/g, ',')) : [];
38
- }
39
- catch (error) {
40
- console.error('Error during parsing chunk data');
41
- parsedData = [];
42
- }
43
- }
44
- return {
45
- type: js_client_sdk_1.EKvHttpResponseType.Response,
46
- body: parsedData,
47
- status,
48
- statusText,
49
- headers,
50
- config: request,
51
- httpResponse
52
- };
53
- }));
54
- }
55
- handleError({ statusText, status, headers, body }, request) {
56
- const error = {
57
- status,
58
- statusText,
59
- headers,
60
- config: request,
61
- httpResponse: body
62
- };
63
- return rxjs_1.throwError(error);
64
- }
65
- }
66
- exports.NodeHttpAdapter = NodeHttpAdapter;
67
- //# sourceMappingURL=http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/adapters/http.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAkI;AAClI,4DAA6C;AAC7C,+BAAoD;AACpD,8CAAgD;AAEhD,MAAa,eAAe;IAE3B,OAAO,CAAC,cAA8B;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC;QACzF,MAAM,SAAS,GAAG,SAAS,KAAK,gCAAgB,CAAC,UAAU,CAAC;QAC5D,MAAM,YAAY,GAAG,CAAC,SAAS,IAAI,SAAS,KAAK,gCAAgB,CAAC,IAAI,CAAC;QAEvE,MAAM,OAAO,GAAG,IAAI,YAAY,MAAM;YACrC,CAAC,iBAAG,cAAc,EAAE,gCAAgB,CAAC,IAAI,IAAK,cAAc,EAC5D,CAAC,CAAC,cAAc,CAAC;QAElB,MAAM,UAAU,GAAW,MAAM;YAChC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpD,CAAC,CAAC,GAAa,CAAC;QAEjB,MAAM,gBAAgB,GAAG,WAAI,CAAC,oBAAK,CAAC,UAAU,EAAE;YAC/C,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SAC1D,CAAC,CAAC,CAAC;QAEJ,OAAO,gBAAgB,CAAC,IAAI,CAC3B,qBAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;YAChC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC;YACvE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAC9C,CAAC;IACH,CAAC;IAEO,aAAa,CACpB,QAAkB,EAClB,OAAuB,EACvB,SAAkB,EAClB,YAAqB;QAErB,OAAO,WAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aAC3D,IAAI,CACJ,eAAG,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;YACrE,IAAI,UAAU,GAAG,IAAI,CAAC;YAEtB,IAAI,SAAS,EAAE;gBACd,IAAI;oBACH,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9E;gBAAC,OAAO,KAAK,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;oBACjD,UAAU,GAAG,EAAE,CAAC;iBAChB;aACD;YAED,OAAO;gBACN,IAAI,EAAE,mCAAmB,CAAC,QAAQ;gBAClC,IAAI,EAAE,UAAU;gBAChB,MAAM;gBACN,UAAU;gBACV,OAAO;gBACP,MAAM,EAAE,OAAO;gBACf,YAAY;aACO,CAAC;QACtB,CAAC,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAY,EAAE,OAAuB;QAC3F,MAAM,KAAK,GAAG;YACb,MAAM;YACN,UAAU;YACV,OAAO;YACP,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,IAAI;SAClB,CAAC;QAEF,OAAO,iBAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;CACD;AAzED,0CAyEC"}
@@ -1,7 +0,0 @@
1
- import { IKvHttpAdapter, IKvHttpRequest, IKvHttpResponse } from '@kelvininc/js-client-sdk';
2
- import { Observable } from 'rxjs';
3
- export declare class NodeHttpAdapter implements IKvHttpAdapter {
4
- request(requestPayload: IKvHttpRequest): Observable<IKvHttpResponse>;
5
- private handleRequest;
6
- private handleError;
7
- }
@@ -1,60 +0,0 @@
1
- import { EKvHttpMediaType, EKvHttpResponseType } from '@kelvininc/js-client-sdk';
2
- import fetch from 'node-fetch';
3
- import { from, throwError } from 'rxjs';
4
- import { map, switchMap } from 'rxjs/operators';
5
- export class NodeHttpAdapter {
6
- request(requestPayload) {
7
- const { method, url, data, headers: requestHeaders, params, mediaType } = requestPayload;
8
- const isChunked = mediaType === EKvHttpMediaType.jsonStream;
9
- const isJSONObject = !mediaType || mediaType === EKvHttpMediaType.json;
10
- const headers = data instanceof Object
11
- ? Object.assign({ 'Content-Type': EKvHttpMediaType.json }, requestHeaders) : requestHeaders;
12
- const urlRequest = params
13
- ? `${url}?${new URLSearchParams(params).toString()}`
14
- : url;
15
- const requestInstance$ = from(fetch(urlRequest, {
16
- method,
17
- headers,
18
- body: data instanceof Object ? JSON.stringify(data) : data
19
- }));
20
- return requestInstance$.pipe(switchMap(response => response.ok
21
- ? this.handleRequest(response, requestPayload, isChunked, isJSONObject)
22
- : this.handleError(response, requestPayload)));
23
- }
24
- handleRequest(response, request, isChunked, isJSONObject) {
25
- return from(isJSONObject ? response.json() : response.text())
26
- .pipe(map(data => {
27
- const { headers, status, statusText, body: httpResponse } = response;
28
- let parsedData = data;
29
- if (isChunked) {
30
- try {
31
- parsedData = parsedData ? JSON.parse(parsedData.replace(/\]\n\[/g, ',')) : [];
32
- }
33
- catch (error) {
34
- console.error('Error during parsing chunk data');
35
- parsedData = [];
36
- }
37
- }
38
- return {
39
- type: EKvHttpResponseType.Response,
40
- body: parsedData,
41
- status,
42
- statusText,
43
- headers,
44
- config: request,
45
- httpResponse
46
- };
47
- }));
48
- }
49
- handleError({ statusText, status, headers, body }, request) {
50
- const error = {
51
- status,
52
- statusText,
53
- headers,
54
- config: request,
55
- httpResponse: body
56
- };
57
- return throwError(error);
58
- }
59
- }
60
- //# sourceMappingURL=http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/adapters/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAmD,MAAM,0BAA0B,CAAC;AAClI,OAAO,KAAmB,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAc,UAAU,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,OAAO,eAAe;IAE3B,OAAO,CAAC,cAA8B;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC;QACzF,MAAM,SAAS,GAAG,SAAS,KAAK,gBAAgB,CAAC,UAAU,CAAC;QAC5D,MAAM,YAAY,GAAG,CAAC,SAAS,IAAI,SAAS,KAAK,gBAAgB,CAAC,IAAI,CAAC;QAEvE,MAAM,OAAO,GAAG,IAAI,YAAY,MAAM;YACrC,CAAC,iBAAG,cAAc,EAAE,gBAAgB,CAAC,IAAI,IAAK,cAAc,EAC5D,CAAC,CAAC,cAAc,CAAC;QAElB,MAAM,UAAU,GAAW,MAAM;YAChC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpD,CAAC,CAAC,GAAa,CAAC;QAEjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC/C,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SAC1D,CAAC,CAAC,CAAC;QAEJ,OAAO,gBAAgB,CAAC,IAAI,CAC3B,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;YAChC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC;YACvE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAC9C,CAAC;IACH,CAAC;IAEO,aAAa,CACpB,QAAkB,EAClB,OAAuB,EACvB,SAAkB,EAClB,YAAqB;QAErB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aAC3D,IAAI,CACJ,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;YACrE,IAAI,UAAU,GAAG,IAAI,CAAC;YAEtB,IAAI,SAAS,EAAE;gBACd,IAAI;oBACH,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9E;gBAAC,OAAO,KAAK,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;oBACjD,UAAU,GAAG,EAAE,CAAC;iBAChB;aACD;YAED,OAAO;gBACN,IAAI,EAAE,mBAAmB,CAAC,QAAQ;gBAClC,IAAI,EAAE,UAAU;gBAChB,MAAM;gBACN,UAAU;gBACV,OAAO;gBACP,MAAM,EAAE,OAAO;gBACf,YAAY;aACO,CAAC;QACtB,CAAC,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAY,EAAE,OAAuB;QAC3F,MAAM,KAAK,GAAG;YACb,MAAM;YACN,UAAU;YACV,OAAO;YACP,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,IAAI;SAClB,CAAC;QAEF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;CACD"}