@or-sdk/data-hub 0.3.0 → 0.6.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.
@@ -14,10 +14,67 @@ 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
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (_) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
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
+ };
17
73
  Object.defineProperty(exports, "__esModule", { value: true });
18
74
  exports.DataHub = void 0;
19
75
  var base_1 = require("@or-sdk/base");
20
76
  var constants_1 = require("./constants");
77
+ var uuid_1 = require("uuid");
21
78
  var DataHub = (function (_super) {
22
79
  __extends(DataHub, _super);
23
80
  function DataHub(params) {
@@ -34,6 +91,80 @@ var DataHub = (function (_super) {
34
91
  DataHub.prototype.makeRequest = function (params) {
35
92
  return this.callApi(params);
36
93
  };
94
+ DataHub.prototype.subscribe = function (requestId) {
95
+ return __awaiter(this, void 0, void 0, function () {
96
+ var counter, variables, data, result;
97
+ return __generator(this, function (_a) {
98
+ switch (_a.label) {
99
+ case 0:
100
+ if (!requestId) {
101
+ throw new Error('subscription error: requestId is required');
102
+ }
103
+ counter = 0;
104
+ _a.label = 1;
105
+ case 1:
106
+ counter++;
107
+ return [4, (0, base_1.timeout)(1000)];
108
+ case 2:
109
+ _a.sent();
110
+ variables = {
111
+ requestId: requestId,
112
+ hash: (0, uuid_1.v4)(),
113
+ };
114
+ data = {
115
+ operationName: 'checkExecutionResult',
116
+ query: constants_1.QUERY_CHECK_EXECUTION_RESULT,
117
+ variables: variables,
118
+ };
119
+ return [4, this.makeRequest({
120
+ method: 'POST',
121
+ route: '/graphql',
122
+ data: data,
123
+ })];
124
+ case 3:
125
+ result = (_a.sent()).data.checkExecutionResult;
126
+ if (result.status !== 'pending') {
127
+ if (result.error) {
128
+ throw result.error;
129
+ }
130
+ return [2, result];
131
+ }
132
+ _a.label = 4;
133
+ case 4:
134
+ if (counter < 100) return [3, 1];
135
+ _a.label = 5;
136
+ case 5: throw new Error('subscription error: polling is too long');
137
+ }
138
+ });
139
+ });
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, resultFullList];
164
+ }
165
+ });
166
+ });
167
+ };
37
168
  return DataHub;
38
169
  }(base_1.Base));
39
170
  exports.DataHub = DataHub;
@@ -1 +1 @@
1
- {"version":3,"file":"DataHub.js","sourceRoot":"","sources":["../../src/DataHub.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,qCAAkD;AAElD,yCAA0C;AAS1C;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;IACH,cAAC;AAAD,CAAC,AAvBD,CAA6B,WAAI,GAuBhC;AAvBY,0BAAO"}
1
+ {"version":3,"file":"DataHub.js","sourceRoot":"","sources":["../../src/DataHub.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA2D;AAS3D,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,CAAC,MAAM,CAAC,CAAC;IAC9B,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;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,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,CAAqB;4BACxD,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,cAAc,EAAC;;;;KACvB;IAEH,cAAC;AAAD,CAAC,AA9GD,CAA6B,WAAI,GA8GhC;AA9GY,0BAAO"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SERVICE_KEY = void 0;
4
- exports.SERVICE_KEY = 'datahub-api';
3
+ exports.QUERY_CHECK_EXECUTION_RESULT = exports.SERVICE_KEY = void 0;
4
+ exports.SERVICE_KEY = 'data-hub';
5
+ exports.QUERY_CHECK_EXECUTION_RESULT = "query checkExecutionResult($hash: ID!, $requestId: String!) {\n checkExecutionResult(requestId: $requestId, hash: $hash)\n}";
5
6
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,UAAU,CAAC;AAEzB,QAAA,4BAA4B,GAAG,8HAE1C,CAAC"}
@@ -1,5 +1,15 @@
1
- import { Base } from '@or-sdk/base';
2
- import { SERVICE_KEY } from './constants';
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Base, timeout } from '@or-sdk/base';
11
+ import { SERVICE_KEY, QUERY_CHECK_EXECUTION_RESULT } from './constants';
12
+ import { v4 as uuidv4 } from 'uuid';
3
13
  export class DataHub extends Base {
4
14
  constructor(params) {
5
15
  const { token, discoveryUrl } = params;
@@ -13,5 +23,55 @@ export class DataHub extends Base {
13
23
  makeRequest(params) {
14
24
  return this.callApi(params);
15
25
  }
26
+ subscribe(requestId) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ if (!requestId) {
29
+ throw new Error('subscription error: requestId is required');
30
+ }
31
+ let counter = 0;
32
+ do {
33
+ counter++;
34
+ yield timeout(1000);
35
+ const variables = {
36
+ requestId,
37
+ hash: uuidv4(),
38
+ };
39
+ const data = {
40
+ operationName: 'checkExecutionResult',
41
+ query: QUERY_CHECK_EXECUTION_RESULT,
42
+ variables,
43
+ };
44
+ const { data: { checkExecutionResult: result } } = yield this.makeRequest({
45
+ method: 'POST',
46
+ route: '/graphql',
47
+ data,
48
+ });
49
+ if (result.status !== 'pending') {
50
+ if (result.error) {
51
+ throw result.error;
52
+ }
53
+ return result;
54
+ }
55
+ } while (counter < 100);
56
+ throw new Error('subscription error: polling is too long');
57
+ });
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 resultFullList;
74
+ });
75
+ }
16
76
  }
17
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,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS1C,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;CACF"}
1
+ {"version":3,"file":"DataHub.js","sourceRoot":"","sources":["../../src/DataHub.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAgB,OAAO,EAAE,MAAM,cAAc,CAAC;AAS3D,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,CAAC,MAAM,CAAC,CAAC;IAC9B,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,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,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,CAAqB;oBACxD,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,cAAc,CAAC;QACxB,CAAC;KAAA;CAEF"}
@@ -1,2 +1,5 @@
1
- export const SERVICE_KEY = 'datahub-api';
1
+ export const SERVICE_KEY = 'data-hub';
2
+ export const QUERY_CHECK_EXECUTION_RESULT = `query checkExecutionResult($hash: ID!, $requestId: String!) {
3
+ checkExecutionResult(requestId: $requestId, hash: $hash)
4
+ }`;
2
5
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,4BAA4B,GAAG;;EAE1C,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { Base, CalApiParams } from '@or-sdk/base';
2
- import { DataHubConfig } from './types';
2
+ import { DataHubConfig, SubscribeResultData, GraphqlRequestData } 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>;
7
+ getFullList<T>(method: CalApiParams['method'], route: string, data: GraphqlRequestData): Promise<T[]>;
6
8
  }
@@ -1 +1,2 @@
1
- export declare const SERVICE_KEY = "datahub-api";
1
+ export declare const SERVICE_KEY = "data-hub";
2
+ export declare const QUERY_CHECK_EXECUTION_RESULT = "query checkExecutionResult($hash: ID!, $requestId: String!) {\n checkExecutionResult(requestId: $requestId, hash: $hash)\n}";
@@ -3,3 +3,41 @@ export declare type DataHubConfig = {
3
3
  token: Token;
4
4
  discoveryUrl: string;
5
5
  };
6
+ export declare type SubscribeResultData = {
7
+ status?: string;
8
+ __deleted__?: {
9
+ deletedDate: number;
10
+ isCascade: {
11
+ BOOL: boolean;
12
+ };
13
+ isOrphan: {
14
+ BOOL: boolean;
15
+ };
16
+ };
17
+ error?: string;
18
+ stack?: string;
19
+ };
20
+ export declare type SubscribeResult = {
21
+ data: {
22
+ checkExecutionResult: SubscribeResultData;
23
+ };
24
+ };
25
+ export declare type GraphqlRequestData = {
26
+ operationName: string;
27
+ query: string;
28
+ variables: {
29
+ params: {
30
+ [key: string]: unknown;
31
+ };
32
+ [key: string]: unknown;
33
+ };
34
+ };
35
+ export declare type GraphqlResponseList<T> = {
36
+ last?: string;
37
+ records: T[];
38
+ };
39
+ export declare type GraphqlResponse<T> = {
40
+ data: {
41
+ list: GraphqlResponseList<T>;
42
+ };
43
+ };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.0",
2
+ "version": "0.6.1",
3
3
  "name": "@or-sdk/data-hub",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
@@ -16,6 +16,7 @@
16
16
  "clean": "rm -rf ./dist"
17
17
  },
18
18
  "devDependencies": {
19
+ "@types/uuid": "^8.3.1",
19
20
  "concurrently": "^6.4.0",
20
21
  "typescript": "^4.4.4"
21
22
  },
@@ -23,7 +24,8 @@
23
24
  "access": "public"
24
25
  },
25
26
  "dependencies": {
26
- "@or-sdk/base": "^0.3.0"
27
+ "@or-sdk/base": "^0.6.1",
28
+ "uuid": "^8.3.2"
27
29
  },
28
- "gitHead": "a7ddb3f61e4494ec231393491425018f971dd90f"
30
+ "gitHead": "8d62765e47f5f3f77f26a45053694b6b561ac8f5"
29
31
  }
package/src/DataHub.ts CHANGED
@@ -1,10 +1,18 @@
1
- import { Base, CalApiParams } from '@or-sdk/base';
2
- import { DataHubConfig } from './types';
3
- import { SERVICE_KEY } from './constants';
1
+ import { Base, CalApiParams, timeout } from '@or-sdk/base';
2
+ import {
3
+ DataHubConfig,
4
+ SubscribeResult,
5
+ SubscribeResultData,
6
+ GraphqlRequestData,
7
+ GraphqlResponseList,
8
+ GraphqlResponse,
9
+ } from './types';
10
+ import { SERVICE_KEY, QUERY_CHECK_EXECUTION_RESULT } from './constants';
11
+ import { v4 as uuidv4 } from 'uuid';
4
12
 
5
13
  /**
6
14
  * OneReach DataHub service client
7
- * ## Installation:
15
+ * ## Installation:
8
16
  * ```
9
17
  * $ npm i @or-sdk/data-hub
10
18
  * ```
@@ -12,10 +20,8 @@ import { SERVICE_KEY } from './constants';
12
20
  export class DataHub extends Base {
13
21
  /**
14
22
  * ```typescript
15
- *
16
23
  * import { DataHub } from '@or-sdk/data-hub'
17
24
  * const dataHub = new DataHub({token: 'my-account-token-string', discoveryUrl: 'http://example.tables/endpoint'});
18
- *
19
25
  * ```
20
26
  */
21
27
  constructor(params: DataHubConfig) {
@@ -29,7 +35,96 @@ export class DataHub extends Base {
29
35
  });
30
36
  }
31
37
 
38
+ /**
39
+ * Make request
40
+ * ```typescript
41
+ * const result = await dataHub.makeRequest({
42
+ * route: '/route',
43
+ * method: 'GET',
44
+ * data: requestData,
45
+ * params: queryParams,
46
+ * });
47
+ * ```
48
+ */
32
49
  public makeRequest<T>(params: CalApiParams): Promise<T> {
33
50
  return this.callApi(params);
34
51
  }
52
+
53
+ /**
54
+ * Subscribe for result
55
+ * ```typescript
56
+ * const result = await dataHub.subscribe('request-id');
57
+ * ```
58
+ */
59
+ public async subscribe(requestId: string): Promise<SubscribeResultData> {
60
+ if (!requestId) {
61
+ throw new Error('subscription error: requestId is required');
62
+ }
63
+
64
+ let counter = 0;
65
+
66
+ do {
67
+ counter++;
68
+ await timeout(1000);
69
+
70
+ const variables = {
71
+ requestId,
72
+ hash: uuidv4(),
73
+ };
74
+
75
+ const data = {
76
+ operationName: 'checkExecutionResult',
77
+ query: QUERY_CHECK_EXECUTION_RESULT,
78
+ variables,
79
+ };
80
+
81
+ const { data: { checkExecutionResult: result } }: SubscribeResult = await this.makeRequest({
82
+ method: 'POST',
83
+ route: '/graphql',
84
+ data,
85
+ });
86
+
87
+ if (result.status !== 'pending') {
88
+ if (result.error) {
89
+ throw result.error;
90
+ }
91
+
92
+ return result;
93
+ }
94
+
95
+ } while (counter < 100);
96
+
97
+ throw new Error('subscription error: polling is too long');
98
+ }
99
+
100
+ /**
101
+ * Get full list from paginated request
102
+ * ```typescript
103
+ * const result = await dataHub.getFullList('POST', '/route', requestData);
104
+ * ```
105
+ */
106
+ public async getFullList<T>(method: CalApiParams['method'], route: string, data: GraphqlRequestData): Promise<T[]> {
107
+ let resultList: GraphqlResponseList<T>;
108
+ let resultFullList: T[] = [];
109
+
110
+ do {
111
+ const result = await this.makeRequest<GraphqlResponse<T>>({
112
+ method,
113
+ route,
114
+ data,
115
+ });
116
+
117
+ resultList = result.data.list;
118
+ resultFullList = [...resultFullList, ...resultList.records];
119
+
120
+ data.variables.params = {
121
+ ...data.variables.params,
122
+ last: resultList.last,
123
+ };
124
+
125
+ } while (resultList.last);
126
+
127
+ return resultFullList;
128
+ }
129
+
35
130
  }
package/src/constants.ts CHANGED
@@ -1 +1,5 @@
1
- export const SERVICE_KEY = 'datahub-api';
1
+ export const SERVICE_KEY = 'data-hub';
2
+
3
+ export const QUERY_CHECK_EXECUTION_RESULT = `query checkExecutionResult($hash: ID!, $requestId: String!) {
4
+ checkExecutionResult(requestId: $requestId, hash: $hash)
5
+ }`;
package/src/types.ts CHANGED
@@ -5,8 +5,52 @@ export type DataHubConfig = {
5
5
  * token
6
6
  */
7
7
  token: Token;
8
+
8
9
  /**
9
- * function which return token
10
+ * Url of OneReach service discovery api
10
11
  */
11
12
  discoveryUrl: string;
12
13
  };
14
+
15
+ export type SubscribeResultData = {
16
+ status?: string;
17
+ __deleted__?: {
18
+ deletedDate: number;
19
+ isCascade: {
20
+ BOOL: boolean;
21
+ };
22
+ isOrphan: {
23
+ BOOL: boolean;
24
+ };
25
+ };
26
+ error?: string;
27
+ stack?: string;
28
+ };
29
+
30
+ export type SubscribeResult = {
31
+ data: {
32
+ checkExecutionResult: SubscribeResultData;
33
+ };
34
+ };
35
+
36
+ export type GraphqlRequestData = {
37
+ operationName: string;
38
+ query: string;
39
+ variables: {
40
+ params: {
41
+ [key: string]: unknown;
42
+ };
43
+ [key: string]: unknown;
44
+ };
45
+ };
46
+
47
+ export type GraphqlResponseList<T> = {
48
+ last?: string;
49
+ records: T[];
50
+ };
51
+
52
+ export type GraphqlResponse<T> = {
53
+ data: {
54
+ list: GraphqlResponseList<T>;
55
+ };
56
+ };