@or-sdk/data-hub 0.4.0 → 0.7.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.
@@ -14,6 +14,17 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
17
28
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
29
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
30
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -50,6 +61,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
50
61
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
62
  }
52
63
  };
64
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
65
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
66
+ if (ar || !(i in from)) {
67
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
68
+ ar[i] = from[i];
69
+ }
70
+ }
71
+ return to.concat(ar || Array.prototype.slice.call(from));
72
+ };
53
73
  Object.defineProperty(exports, "__esModule", { value: true });
54
74
  exports.DataHub = void 0;
55
75
  var base_1 = require("@or-sdk/base");
@@ -89,12 +109,12 @@ var DataHub = (function (_super) {
89
109
  _a.sent();
90
110
  variables = {
91
111
  requestId: requestId,
92
- hash: (0, uuid_1.v4)()
112
+ hash: (0, uuid_1.v4)(),
93
113
  };
94
114
  data = {
95
115
  operationName: 'checkExecutionResult',
96
116
  query: constants_1.QUERY_CHECK_EXECUTION_RESULT,
97
- variables: variables
117
+ variables: variables,
98
118
  };
99
119
  return [4, this.makeRequest({
100
120
  method: 'POST',
@@ -118,6 +138,33 @@ var DataHub = (function (_super) {
118
138
  });
119
139
  });
120
140
  };
141
+ DataHub.prototype.getFullList = function (method, route, data) {
142
+ return __awaiter(this, void 0, void 0, function () {
143
+ var resultList, resultFullList, result;
144
+ return __generator(this, function (_a) {
145
+ switch (_a.label) {
146
+ case 0:
147
+ resultFullList = [];
148
+ _a.label = 1;
149
+ case 1: return [4, this.makeRequest({
150
+ method: method,
151
+ route: route,
152
+ data: data,
153
+ })];
154
+ case 2:
155
+ result = _a.sent();
156
+ resultList = result.data.list;
157
+ resultFullList = __spreadArray(__spreadArray([], resultFullList, true), resultList.records, true);
158
+ data.variables.params = __assign(__assign({}, data.variables.params), { last: resultList.last });
159
+ _a.label = 3;
160
+ case 3:
161
+ if (resultList.last) return [3, 1];
162
+ _a.label = 4;
163
+ case 4: return [2, (0, base_1.makeList)(resultFullList)];
164
+ }
165
+ });
166
+ });
167
+ };
121
168
  return DataHub;
122
169
  }(base_1.Base));
123
170
  exports.DataHub = DataHub;
@@ -1 +1 @@
1
- {"version":3,"file":"DataHub.js","sourceRoot":"","sources":["../../src/DataHub.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA2D;AAM3D,yCAAwE;AACxE,6BAAoC;AASpC;IAA6B,2BAAI;IAS/B,iBAAY,MAAqB;QAAjC,iBASC;QARS,IAAA,KAAK,GAAmB,MAAM,MAAzB,EAAE,YAAY,GAAK,MAAM,aAAX,CAAY;QAEvC,QAAA,kBAAM;YACJ,KAAK,OAAA;YACL,YAAY,cAAA;YACZ,UAAU,EAAE,uBAAW;YACvB,gBAAgB,EAAE,IAAI;SACvB,CAAC,SAAC;;IACL,CAAC;IAEM,6BAAW,GAAlB,UAAsB,MAAoB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEY,2BAAS,GAAtB,UAAuB,SAAiB;;;;;;wBACtC,IAAI,CAAC,SAAS,EAAE;4BACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;yBAC9D;wBAEG,OAAO,GAAG,CAAC,CAAC;;;wBAGd,OAAO,EAAE,CAAC;wBACV,WAAM,IAAA,cAAO,EAAC,IAAI,CAAC,EAAA;;wBAAnB,SAAmB,CAAC;wBAEd,SAAS,GAAG;4BAChB,SAAS,WAAA;4BACT,IAAI,EAAE,IAAA,SAAM,GAAE;yBACf,CAAC;wBAEI,IAAI,GAAG;4BACX,aAAa,EAAE,sBAAsB;4BACrC,KAAK,EAAE,wCAA4B;4BACnC,SAAS,WAAA;yBACV,CAAC;wBAEkE,WAAM,IAAI,CAAC,WAAW,CAAC;gCACzF,MAAM,EAAE,MAAM;gCACd,KAAK,EAAE,UAAU;gCACjB,IAAI,MAAA;6BACL,CAAC,EAAA;;wBAJoC,MAAM,GAAwB,CAAA,SAIlE,CAAA,0BAJ0C;wBAM5C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;4BAC/B,IAAI,MAAM,CAAC,KAAK,EAAE;gCAChB,MAAM,MAAM,CAAC,KAAK,CAAC;6BACpB;4BAED,WAAO,MAAM,EAAE;yBAChB;;;4BAEM,OAAO,GAAG,GAAG;;4BAEtB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;;;;KAC5D;IAEH,cAAC;AAAD,CAAC,AAjED,CAA6B,WAAI,GAiEhC;AAjEY,0BAAO"}
1
+ {"version":3,"file":"DataHub.js","sourceRoot":"","sources":["../../src/DataHub.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA2E;AAO3E,yCAAwE;AACxE,6BAAoC;AASpC;IAA6B,2BAAI;IAO/B,iBAAY,MAAqB;QAAjC,iBASC;QARS,IAAA,KAAK,GAAmB,MAAM,MAAzB,EAAE,YAAY,GAAK,MAAM,aAAX,CAAY;QAEvC,QAAA,kBAAM;YACJ,KAAK,OAAA;YACL,YAAY,cAAA;YACZ,UAAU,EAAE,uBAAW;YACvB,gBAAgB,EAAE,IAAI;SACvB,CAAC,SAAC;;IACL,CAAC;IAaM,6BAAW,GAAlB,UAAsB,MAAoB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,CAAC,CAAC;IACjC,CAAC;IAQY,2BAAS,GAAtB,UAAuB,SAAiB;;;;;;wBACtC,IAAI,CAAC,SAAS,EAAE;4BACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;yBAC9D;wBAEG,OAAO,GAAG,CAAC,CAAC;;;wBAGd,OAAO,EAAE,CAAC;wBACV,WAAM,IAAA,cAAO,EAAC,IAAI,CAAC,EAAA;;wBAAnB,SAAmB,CAAC;wBAEd,SAAS,GAAG;4BAChB,SAAS,WAAA;4BACT,IAAI,EAAE,IAAA,SAAM,GAAE;yBACf,CAAC;wBAEI,IAAI,GAAG;4BACX,aAAa,EAAE,sBAAsB;4BACrC,KAAK,EAAE,wCAA4B;4BACnC,SAAS,WAAA;yBACV,CAAC;wBAEiD,WAAM,IAAI,CAAC,WAAW,CAAqD;gCAC5H,MAAM,EAAE,MAAM;gCACd,KAAK,EAAE,UAAU;gCACjB,IAAI,MAAA;6BACL,CAAC,EAAA;;wBAJoC,MAAM,GAAO,CAAA,SAIjD,CAAA,0BAJ0C;wBAM5C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;4BAC/B,IAAI,MAAM,CAAC,KAAK,EAAE;gCAChB,MAAM,MAAM,CAAC,KAAK,CAAC;6BACpB;4BAED,WAAO,MAAM,EAAC;yBACf;;;4BAEM,OAAO,GAAG,GAAG;;4BAEtB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;;;;KAC5D;IAQY,6BAAW,GAAxB,UAA4B,MAA8B,EAAE,KAAa,EAAE,IAAwB;;;;;;wBAE7F,cAAc,GAAQ,EAAE,CAAC;;4BAGZ,WAAM,IAAI,CAAC,WAAW,CAA6B;4BAChE,MAAM,QAAA;4BACN,KAAK,OAAA;4BACL,IAAI,MAAA;yBACL,CAAC,EAAA;;wBAJI,MAAM,GAAG,SAIb;wBAEF,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC9B,cAAc,mCAAO,cAAc,SAAK,UAAU,CAAC,OAAO,OAAC,CAAC;wBAE5D,IAAI,CAAC,SAAS,CAAC,MAAM,yBAChB,IAAI,CAAC,SAAS,CAAC,MAAM,KACxB,IAAI,EAAE,UAAU,CAAC,IAAI,GACtB,CAAC;;;4BAEK,UAAU,CAAC,IAAI;;4BAExB,WAAO,IAAA,eAAQ,EAAI,cAAc,CAAC,EAAC;;;;KACpC;IAEH,cAAC;AAAD,CAAC,AA9GD,CAA6B,WAAI,GA8GhC;AA9GY,0BAAO"}
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { Base, timeout } from '@or-sdk/base';
10
+ import { Base, timeout, makeList } from '@or-sdk/base';
11
11
  import { SERVICE_KEY, QUERY_CHECK_EXECUTION_RESULT } from './constants';
12
12
  import { v4 as uuidv4 } from 'uuid';
13
13
  export class DataHub extends Base {
@@ -34,12 +34,12 @@ export class DataHub extends Base {
34
34
  yield timeout(1000);
35
35
  const variables = {
36
36
  requestId,
37
- hash: uuidv4()
37
+ hash: uuidv4(),
38
38
  };
39
39
  const data = {
40
40
  operationName: 'checkExecutionResult',
41
41
  query: QUERY_CHECK_EXECUTION_RESULT,
42
- variables
42
+ variables,
43
43
  };
44
44
  const { data: { checkExecutionResult: result } } = yield this.makeRequest({
45
45
  method: 'POST',
@@ -56,5 +56,22 @@ export class DataHub extends Base {
56
56
  throw new Error('subscription error: polling is too long');
57
57
  });
58
58
  }
59
+ getFullList(method, route, data) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ let resultList;
62
+ let resultFullList = [];
63
+ do {
64
+ const result = yield this.makeRequest({
65
+ method,
66
+ route,
67
+ data,
68
+ });
69
+ resultList = result.data.list;
70
+ resultFullList = [...resultFullList, ...resultList.records];
71
+ data.variables.params = Object.assign(Object.assign({}, data.variables.params), { last: resultList.last });
72
+ } while (resultList.last);
73
+ return makeList(resultFullList);
74
+ });
75
+ }
59
76
  }
60
77
  //# sourceMappingURL=DataHub.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataHub.js","sourceRoot":"","sources":["../../src/DataHub.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAgB,OAAO,EAAE,MAAM,cAAc,CAAC;AAM3D,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AASpC,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAS/B,YAAY,MAAqB;QAC/B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAEvC,KAAK,CAAC;YACJ,KAAK;YACL,YAAY;YACZ,UAAU,EAAE,WAAW;YACvB,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAI,MAAoB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEY,SAAS,CAAC,SAAiB;;YACtC,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAC9D;YAED,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,GAAG;gBACD,OAAO,EAAE,CAAC;gBACV,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEpB,MAAM,SAAS,GAAG;oBAChB,SAAS;oBACT,IAAI,EAAE,MAAM,EAAE;iBACf,CAAC;gBAEF,MAAM,IAAI,GAAG;oBACX,aAAa,EAAE,sBAAsB;oBACrC,KAAK,EAAE,4BAA4B;oBACnC,SAAS;iBACV,CAAC;gBAEF,MAAM,EAAE,IAAI,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,GAAoB,MAAM,IAAI,CAAC,WAAW,CAAC;oBACzF,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,UAAU;oBACjB,IAAI;iBACL,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;oBAC/B,IAAI,MAAM,CAAC,KAAK,EAAE;wBAChB,MAAM,MAAM,CAAC,KAAK,CAAC;qBACpB;oBAED,OAAO,MAAM,CAAE;iBAChB;aAEF,QAAQ,OAAO,GAAG,GAAG,EAAE;YAExB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;KAAA;CAEF"}
1
+ {"version":3,"file":"DataHub.js","sourceRoot":"","sources":["../../src/DataHub.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAgB,OAAO,EAAQ,QAAQ,EAAE,MAAM,cAAc,CAAC;AAO3E,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AASpC,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAO/B,YAAY,MAAqB;QAC/B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAEvC,KAAK,CAAC;YACJ,KAAK;YACL,YAAY;YACZ,UAAU,EAAE,WAAW;YACvB,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;IAaM,WAAW,CAAI,MAAoB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,CAAC,CAAC;IACjC,CAAC;IAQY,SAAS,CAAC,SAAiB;;YACtC,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAC9D;YAED,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,GAAG;gBACD,OAAO,EAAE,CAAC;gBACV,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEpB,MAAM,SAAS,GAAG;oBAChB,SAAS;oBACT,IAAI,EAAE,MAAM,EAAE;iBACf,CAAC;gBAEF,MAAM,IAAI,GAAG;oBACX,aAAa,EAAE,sBAAsB;oBACrC,KAAK,EAAE,4BAA4B;oBACnC,SAAS;iBACV,CAAC;gBAEF,MAAM,EAAE,IAAI,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAqD;oBAC5H,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,UAAU;oBACjB,IAAI;iBACL,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;oBAC/B,IAAI,MAAM,CAAC,KAAK,EAAE;wBAChB,MAAM,MAAM,CAAC,KAAK,CAAC;qBACpB;oBAED,OAAO,MAAM,CAAC;iBACf;aAEF,QAAQ,OAAO,GAAG,GAAG,EAAE;YAExB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;KAAA;IAQY,WAAW,CAAI,MAA8B,EAAE,KAAa,EAAE,IAAwB;;YACjG,IAAI,UAAkC,CAAC;YACvC,IAAI,cAAc,GAAQ,EAAE,CAAC;YAE7B,GAAG;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAA6B;oBAChE,MAAM;oBACN,KAAK;oBACL,IAAI;iBACL,CAAC,CAAC;gBAEH,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,cAAc,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBAE5D,IAAI,CAAC,SAAS,CAAC,MAAM,mCAChB,IAAI,CAAC,SAAS,CAAC,MAAM,KACxB,IAAI,EAAE,UAAU,CAAC,IAAI,GACtB,CAAC;aAEH,QAAQ,UAAU,CAAC,IAAI,EAAE;YAE1B,OAAO,QAAQ,CAAI,cAAc,CAAC,CAAC;QACrC,CAAC;KAAA;CAEF"}
@@ -1,7 +1,8 @@
1
- import { Base, CalApiParams } from '@or-sdk/base';
2
- import { DataHubConfig, SubscribeResultData } from './types';
1
+ import { Base, CalApiParams, List } from '@or-sdk/base';
2
+ import { DataHubConfig, GraphqlRequestData, GraphqlResponseCheckExecution } from './types';
3
3
  export declare class DataHub extends Base {
4
4
  constructor(params: DataHubConfig);
5
5
  makeRequest<T>(params: CalApiParams): Promise<T>;
6
- subscribe(requestId: string): Promise<SubscribeResultData>;
6
+ subscribe(requestId: string): Promise<GraphqlResponseCheckExecution>;
7
+ getFullList<T>(method: CalApiParams['method'], route: string, data: GraphqlRequestData): Promise<List<T>>;
7
8
  }
@@ -3,7 +3,24 @@ export declare type DataHubConfig = {
3
3
  token: Token;
4
4
  discoveryUrl: string;
5
5
  };
6
- export declare type SubscribeResultData = {
6
+ export declare type GraphqlRequestData = {
7
+ operationName: string;
8
+ query: string;
9
+ variables: {
10
+ params: {
11
+ [key: string]: unknown;
12
+ };
13
+ [key: string]: unknown;
14
+ };
15
+ };
16
+ export declare type GraphqlResponseList<T> = {
17
+ last?: string;
18
+ records: T[];
19
+ };
20
+ export declare type GraphqlResponseDelete = {
21
+ requestId: string;
22
+ };
23
+ export declare type GraphqlResponseCheckExecution = {
7
24
  status?: string;
8
25
  __deleted__?: {
9
26
  deletedDate: number;
@@ -17,8 +34,27 @@ export declare type SubscribeResultData = {
17
34
  error?: string;
18
35
  stack?: string;
19
36
  };
20
- export declare type SubscribeResult = {
21
- data: {
22
- checkExecutionResult: SubscribeResultData;
37
+ interface GraphqlResponseVariations<T> {
38
+ list: {
39
+ list: GraphqlResponseList<T>;
40
+ };
41
+ get: {
42
+ get: T;
43
+ };
44
+ create: {
45
+ create: T;
46
+ };
47
+ update: {
48
+ update: T;
49
+ };
50
+ deleteTemporarily: {
51
+ deleteTemporarily: GraphqlResponseDelete;
52
+ };
53
+ checkExecutionResult: {
54
+ checkExecutionResult: GraphqlResponseCheckExecution;
23
55
  };
56
+ }
57
+ export declare type GraphqlResponse<key extends keyof GraphqlResponseVariations<void>, T> = {
58
+ data: GraphqlResponseVariations<T>[key];
24
59
  };
60
+ export {};
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.4.0",
2
+ "version": "0.7.0",
3
3
  "name": "@or-sdk/data-hub",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
@@ -24,8 +24,8 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "@or-sdk/base": "^0.4.0",
27
+ "@or-sdk/base": "^0.7.0",
28
28
  "uuid": "^8.3.2"
29
29
  },
30
- "gitHead": "1ff2df6f74e5cc7ceacdc3f8eafeeed9f417a882"
30
+ "gitHead": "836cfcb137cdc452b1ee3088fec811d1f4901255"
31
31
  }
package/src/DataHub.ts CHANGED
@@ -1,15 +1,16 @@
1
- import { Base, CalApiParams, timeout } from '@or-sdk/base';
1
+ import { Base, CalApiParams, timeout, List, makeList } from '@or-sdk/base';
2
2
  import {
3
3
  DataHubConfig,
4
- SubscribeResult,
5
- SubscribeResultData
4
+ GraphqlRequestData,
5
+ GraphqlResponseList,
6
+ GraphqlResponse, GraphqlResponseCheckExecution,
6
7
  } from './types';
7
8
  import { SERVICE_KEY, QUERY_CHECK_EXECUTION_RESULT } from './constants';
8
9
  import { v4 as uuidv4 } from 'uuid';
9
10
 
10
11
  /**
11
12
  * OneReach DataHub service client
12
- * ## Installation:
13
+ * ## Installation:
13
14
  * ```
14
15
  * $ npm i @or-sdk/data-hub
15
16
  * ```
@@ -17,10 +18,8 @@ import { v4 as uuidv4 } from 'uuid';
17
18
  export class DataHub extends Base {
18
19
  /**
19
20
  * ```typescript
20
- *
21
21
  * import { DataHub } from '@or-sdk/data-hub'
22
22
  * const dataHub = new DataHub({token: 'my-account-token-string', discoveryUrl: 'http://example.tables/endpoint'});
23
- *
24
23
  * ```
25
24
  */
26
25
  constructor(params: DataHubConfig) {
@@ -34,11 +33,28 @@ export class DataHub extends Base {
34
33
  });
35
34
  }
36
35
 
36
+ /**
37
+ * Make request
38
+ * ```typescript
39
+ * const result = await dataHub.makeRequest({
40
+ * route: '/route',
41
+ * method: 'GET',
42
+ * data: requestData,
43
+ * params: queryParams,
44
+ * });
45
+ * ```
46
+ */
37
47
  public makeRequest<T>(params: CalApiParams): Promise<T> {
38
- return this.callApi(params);
48
+ return this.callApi<T>(params);
39
49
  }
40
50
 
41
- public async subscribe(requestId: string): Promise<SubscribeResultData> {
51
+ /**
52
+ * Subscribe for result
53
+ * ```typescript
54
+ * const result = await dataHub.subscribe('request-id');
55
+ * ```
56
+ */
57
+ public async subscribe(requestId: string): Promise<GraphqlResponseCheckExecution> {
42
58
  if (!requestId) {
43
59
  throw new Error('subscription error: requestId is required');
44
60
  }
@@ -51,16 +67,16 @@ export class DataHub extends Base {
51
67
 
52
68
  const variables = {
53
69
  requestId,
54
- hash: uuidv4()
70
+ hash: uuidv4(),
55
71
  };
56
72
 
57
73
  const data = {
58
74
  operationName: 'checkExecutionResult',
59
75
  query: QUERY_CHECK_EXECUTION_RESULT,
60
- variables
76
+ variables,
61
77
  };
62
78
 
63
- const { data: { checkExecutionResult: result } }: SubscribeResult = await this.makeRequest({
79
+ const { data: { checkExecutionResult: result } } = await this.makeRequest<GraphqlResponse<'checkExecutionResult', undefined>>({
64
80
  method: 'POST',
65
81
  route: '/graphql',
66
82
  data,
@@ -71,7 +87,7 @@ export class DataHub extends Base {
71
87
  throw result.error;
72
88
  }
73
89
 
74
- return result ;
90
+ return result;
75
91
  }
76
92
 
77
93
  } while (counter < 100);
@@ -79,4 +95,34 @@ export class DataHub extends Base {
79
95
  throw new Error('subscription error: polling is too long');
80
96
  }
81
97
 
98
+ /**
99
+ * Get full list from paginated request
100
+ * ```typescript
101
+ * const result = await dataHub.getFullList('POST', '/route', requestData);
102
+ * ```
103
+ */
104
+ public async getFullList<T>(method: CalApiParams['method'], route: string, data: GraphqlRequestData): Promise<List<T>> {
105
+ let resultList: GraphqlResponseList<T>;
106
+ let resultFullList: T[] = [];
107
+
108
+ do {
109
+ const result = await this.makeRequest<GraphqlResponse<'list', T>>({
110
+ method,
111
+ route,
112
+ data,
113
+ });
114
+
115
+ resultList = result.data.list;
116
+ resultFullList = [...resultFullList, ...resultList.records];
117
+
118
+ data.variables.params = {
119
+ ...data.variables.params,
120
+ last: resultList.last,
121
+ };
122
+
123
+ } while (resultList.last);
124
+
125
+ return makeList<T>(resultFullList);
126
+ }
127
+
82
128
  }
package/src/types.ts CHANGED
@@ -12,7 +12,27 @@ export type DataHubConfig = {
12
12
  discoveryUrl: string;
13
13
  };
14
14
 
15
- export type SubscribeResultData = {
15
+ export type GraphqlRequestData = {
16
+ operationName: string;
17
+ query: string;
18
+ variables: {
19
+ params: {
20
+ [key: string]: unknown;
21
+ };
22
+ [key: string]: unknown;
23
+ };
24
+ };
25
+
26
+ export type GraphqlResponseList<T> = {
27
+ last?: string;
28
+ records: T[];
29
+ };
30
+
31
+ export type GraphqlResponseDelete = {
32
+ requestId: string;
33
+ };
34
+
35
+ export type GraphqlResponseCheckExecution = {
16
36
  status?: string;
17
37
  __deleted__?: {
18
38
  deletedDate: number;
@@ -21,14 +41,21 @@ export type SubscribeResultData = {
21
41
  };
22
42
  isOrphan: {
23
43
  BOOL: boolean;
24
- }
44
+ };
25
45
  };
26
46
  error?: string;
27
47
  stack?: string;
28
48
  };
29
49
 
30
- export type SubscribeResult = {
31
- data: {
32
- checkExecutionResult: SubscribeResultData
33
- };
50
+ interface GraphqlResponseVariations<T> {
51
+ list: { list: GraphqlResponseList<T>; };
52
+ get: { get: T; };
53
+ create: { create: T; };
54
+ update: { update: T; };
55
+ deleteTemporarily: { deleteTemporarily: GraphqlResponseDelete; };
56
+ checkExecutionResult: { checkExecutionResult: GraphqlResponseCheckExecution; };
57
+ }
58
+
59
+ export type GraphqlResponse<key extends keyof GraphqlResponseVariations<void>, T> = {
60
+ data: GraphqlResponseVariations<T>[key];
34
61
  };