@shopify/shopify-api 4.2.0 → 5.0.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 (64) hide show
  1. package/CHANGELOG.md +11 -4
  2. package/dist/auth/oauth/oauth.d.ts.map +1 -1
  3. package/dist/auth/oauth/oauth.js +7 -5
  4. package/dist/auth/session/storage/custom.d.ts.map +1 -1
  5. package/dist/auth/session/storage/custom.js +5 -2
  6. package/dist/auth/session/storage/memory.d.ts.map +1 -1
  7. package/dist/auth/session/storage/memory.js +4 -2
  8. package/dist/auth/session/storage/mongodb.d.ts.map +1 -1
  9. package/dist/auth/session/storage/mongodb.js +4 -2
  10. package/dist/auth/session/storage/mysql.d.ts.map +1 -1
  11. package/dist/auth/session/storage/mysql.js +4 -2
  12. package/dist/auth/session/storage/postgresql.d.ts.map +1 -1
  13. package/dist/auth/session/storage/postgresql.js +4 -2
  14. package/dist/auth/session/storage/redis.d.ts +2 -1
  15. package/dist/auth/session/storage/redis.d.ts.map +1 -1
  16. package/dist/auth/session/storage/redis.js +5 -5
  17. package/dist/auth/session/storage/sqlite.d.ts.map +1 -1
  18. package/dist/auth/session/storage/sqlite.js +6 -3
  19. package/dist/base-types.d.ts +1 -0
  20. package/dist/base-types.d.ts.map +1 -1
  21. package/dist/clients/graphql/graphql_client.d.ts.map +1 -1
  22. package/dist/clients/graphql/graphql_client.js +25 -14
  23. package/dist/clients/http_client/http_client.js +1 -1
  24. package/dist/context.d.ts.map +1 -1
  25. package/dist/context.js +3 -0
  26. package/dist/error.d.ts +13 -0
  27. package/dist/error.d.ts.map +1 -1
  28. package/dist/error.js +20 -1
  29. package/dist/index.d.ts +2 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/utils/delete-offline-session.d.ts.map +1 -1
  32. package/dist/utils/delete-offline-session.js +4 -2
  33. package/dist/utils/get-embedded-app-url.d.ts.map +1 -1
  34. package/dist/utils/get-embedded-app-url.js +2 -1
  35. package/dist/utils/index.d.ts +3 -2
  36. package/dist/utils/index.d.ts.map +1 -1
  37. package/dist/utils/index.js +3 -2
  38. package/dist/utils/load-offline-session.d.ts.map +1 -1
  39. package/dist/utils/load-offline-session.js +4 -2
  40. package/dist/utils/setup-jest.d.ts.map +1 -1
  41. package/dist/utils/setup-jest.js +1 -0
  42. package/dist/utils/shop-validator.d.ts +12 -3
  43. package/dist/utils/shop-validator.d.ts.map +1 -1
  44. package/dist/utils/shop-validator.js +39 -7
  45. package/dist/version.d.ts +1 -1
  46. package/dist/version.js +1 -1
  47. package/dist/webhooks/registry.d.ts.map +1 -1
  48. package/dist/webhooks/registry.js +21 -18
  49. package/package.json +1 -1
  50. package/dist/__tests__/fake-resource-with-custom-prefix.d.ts +0 -21
  51. package/dist/__tests__/fake-resource-with-custom-prefix.d.ts.map +0 -1
  52. package/dist/__tests__/fake-resource-with-custom-prefix.js +0 -46
  53. package/dist/__tests__/fake-resource.d.ts +0 -41
  54. package/dist/__tests__/fake-resource.d.ts.map +0 -1
  55. package/dist/__tests__/fake-resource.js +0 -122
  56. package/dist/auth/session/storage/__tests__/battery-of-tests.d.ts +0 -3
  57. package/dist/auth/session/storage/__tests__/battery-of-tests.d.ts.map +0 -1
  58. package/dist/auth/session/storage/__tests__/battery-of-tests.js +0 -315
  59. package/dist/auth/session/storage/__tests__/session-test-utils.d.ts +0 -3
  60. package/dist/auth/session/storage/__tests__/session-test-utils.d.ts.map +0 -1
  61. package/dist/auth/session/storage/__tests__/session-test-utils.js +0 -46
  62. package/dist/auth/session/storage/__tests__/utils.d.ts +0 -10
  63. package/dist/auth/session/storage/__tests__/utils.d.ts.map +0 -1
  64. package/dist/auth/session/storage/__tests__/utils.js +0 -87
@@ -1,315 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.batteryOfTests = void 0;
4
- var tslib_1 = require("tslib");
5
- var context_1 = require("../../../../context");
6
- var session_1 = require("../../session");
7
- var session_utils_1 = require("../../session-utils");
8
- var session_test_utils_1 = require("./session-test-utils");
9
- function batteryOfTests(storageFactory) {
10
- var _this = this;
11
- it('can store and delete all kinds of sessions', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
12
- var sessionFactories, sessionId, storage, sessionFactories_1, sessionFactories_1_1, factory, session, _a, _b, loadedSession, e_1_1;
13
- var e_1, _c;
14
- var _this = this;
15
- return tslib_1.__generator(this, function (_d) {
16
- switch (_d.label) {
17
- case 0:
18
- sessionFactories = [
19
- function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
20
- var session;
21
- return tslib_1.__generator(this, function (_a) {
22
- session = new session_1.Session(sessionId, 'shop', 'state', false);
23
- session.scope = context_1.Context.SCOPES.toString();
24
- session.accessToken = '123';
25
- return [2 /*return*/, session];
26
- });
27
- }); },
28
- function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
29
- var session, expiryDate;
30
- return tslib_1.__generator(this, function (_a) {
31
- session = new session_1.Session(sessionId, 'shop', 'state', false);
32
- expiryDate = new Date();
33
- expiryDate.setMinutes(expiryDate.getMinutes() + 60);
34
- session.expires = expiryDate;
35
- session.accessToken = '123';
36
- session.scope = context_1.Context.SCOPES.toString();
37
- return [2 /*return*/, session];
38
- });
39
- }); },
40
- function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
41
- var session;
42
- return tslib_1.__generator(this, function (_a) {
43
- session = new session_1.Session(sessionId, 'shop', 'state', false);
44
- session.expires = null;
45
- session.scope = context_1.Context.SCOPES.toString();
46
- session.accessToken = '123';
47
- return [2 /*return*/, session];
48
- });
49
- }); },
50
- function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
51
- var session;
52
- return tslib_1.__generator(this, function (_a) {
53
- session = new session_1.Session(sessionId, 'shop', 'state', false);
54
- session.expires = undefined;
55
- session.scope = context_1.Context.SCOPES.toString();
56
- session.accessToken = '123';
57
- return [2 /*return*/, session];
58
- });
59
- }); },
60
- function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
61
- var session;
62
- return tslib_1.__generator(this, function (_a) {
63
- session = new session_1.Session(sessionId, 'shop', 'state', false);
64
- // eslint-disable-next-line @typescript-eslint/naming-convention
65
- session.onlineAccessInfo = { associated_user: {} };
66
- session.onlineAccessInfo.associated_user.id = 123;
67
- session.scope = context_1.Context.SCOPES.toString();
68
- session.accessToken = '123';
69
- return [2 /*return*/, session];
70
- });
71
- }); },
72
- ];
73
- sessionId = 'test_session';
74
- return [4 /*yield*/, storageFactory()];
75
- case 1:
76
- storage = _d.sent();
77
- _d.label = 2;
78
- case 2:
79
- _d.trys.push([2, 14, 15, 16]);
80
- sessionFactories_1 = tslib_1.__values(sessionFactories), sessionFactories_1_1 = sessionFactories_1.next();
81
- _d.label = 3;
82
- case 3:
83
- if (!!sessionFactories_1_1.done) return [3 /*break*/, 13];
84
- factory = sessionFactories_1_1.value;
85
- return [4 /*yield*/, factory()];
86
- case 4:
87
- session = _d.sent();
88
- return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
89
- case 5:
90
- _d.sent();
91
- _a = expect;
92
- _b = session_utils_1.sessionEqual;
93
- return [4 /*yield*/, storage.loadSession(sessionId)];
94
- case 6:
95
- _a.apply(void 0, [_b.apply(void 0, [_d.sent(), session])]).toBe(true);
96
- return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
97
- case 7:
98
- _d.sent();
99
- return [4 /*yield*/, storage.loadSession(sessionId)];
100
- case 8:
101
- loadedSession = _d.sent();
102
- expect((0, session_utils_1.sessionEqual)(loadedSession, session)).toBe(true);
103
- expect(loadedSession === null || loadedSession === void 0 ? void 0 : loadedSession.isActive()).toBe(true);
104
- return [4 /*yield*/, expect(storage.deleteSession(sessionId)).resolves.toBe(true)];
105
- case 9:
106
- _d.sent();
107
- return [4 /*yield*/, expect(storage.loadSession(sessionId)).resolves.toBeUndefined()];
108
- case 10:
109
- _d.sent();
110
- // Deleting a non-existing session should work
111
- return [4 /*yield*/, expect(storage.deleteSession(sessionId)).resolves.toBe(true)];
112
- case 11:
113
- // Deleting a non-existing session should work
114
- _d.sent();
115
- _d.label = 12;
116
- case 12:
117
- sessionFactories_1_1 = sessionFactories_1.next();
118
- return [3 /*break*/, 3];
119
- case 13: return [3 /*break*/, 16];
120
- case 14:
121
- e_1_1 = _d.sent();
122
- e_1 = { error: e_1_1 };
123
- return [3 /*break*/, 16];
124
- case 15:
125
- try {
126
- if (sessionFactories_1_1 && !sessionFactories_1_1.done && (_c = sessionFactories_1.return)) _c.call(sessionFactories_1);
127
- }
128
- finally { if (e_1) throw e_1.error; }
129
- return [7 /*endfinally*/];
130
- case 16: return [2 /*return*/];
131
- }
132
- });
133
- }); });
134
- it('can store sessions with unexpected fields', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
135
- var storage, sessionId, session, _a, _b;
136
- return tslib_1.__generator(this, function (_c) {
137
- switch (_c.label) {
138
- case 0: return [4 /*yield*/, storageFactory()];
139
- case 1:
140
- storage = _c.sent();
141
- sessionId = 'test_session';
142
- session = new session_1.Session(sessionId, 'shop', 'state', true);
143
- session.someField = 'lol';
144
- return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
145
- case 2:
146
- _c.sent();
147
- _a = expect;
148
- _b = session_utils_1.sessionEqual;
149
- return [4 /*yield*/, storage.loadSession(sessionId)];
150
- case 3:
151
- _a.apply(void 0, [_b.apply(void 0, [_c.sent(), session])]).toBe(true);
152
- return [2 /*return*/];
153
- }
154
- });
155
- }); });
156
- it('can store and delete sessions with online tokens', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
157
- var storage, sessionId, session, _a, _b;
158
- return tslib_1.__generator(this, function (_c) {
159
- switch (_c.label) {
160
- case 0: return [4 /*yield*/, storageFactory()];
161
- case 1:
162
- storage = _c.sent();
163
- sessionId = 'test_session';
164
- session = new session_1.Session(sessionId, 'shop', 'state', true);
165
- return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
166
- case 2:
167
- _c.sent();
168
- _a = expect;
169
- _b = session_utils_1.sessionEqual;
170
- return [4 /*yield*/, storage.loadSession(sessionId)];
171
- case 3:
172
- _a.apply(void 0, [_b.apply(void 0, [_c.sent(), session])]).toBe(true);
173
- return [2 /*return*/];
174
- }
175
- });
176
- }); });
177
- it('wrong ids return null sessions', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
178
- var storage;
179
- return tslib_1.__generator(this, function (_a) {
180
- switch (_a.label) {
181
- case 0: return [4 /*yield*/, storageFactory()];
182
- case 1:
183
- storage = _a.sent();
184
- return [4 /*yield*/, expect(storage.loadSession('not_a_session_id')).resolves.toBeUndefined()];
185
- case 2:
186
- _a.sent();
187
- return [2 /*return*/];
188
- }
189
- });
190
- }); });
191
- it('can find all the sessions for a given shop', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
192
- var storage, prefix, sessions, sessions_1, sessions_1_1, session, e_2_1, shop1Sessions;
193
- var e_2, _a;
194
- return tslib_1.__generator(this, function (_b) {
195
- switch (_b.label) {
196
- case 0: return [4 /*yield*/, storageFactory()];
197
- case 1:
198
- storage = _b.sent();
199
- prefix = 'find_sessions';
200
- sessions = [
201
- new session_1.Session("".concat(prefix, "_1"), 'find-shop1-sessions', 'state', true),
202
- new session_1.Session("".concat(prefix, "_2"), 'do-not-find-shop2-sessions', 'state', true),
203
- new session_1.Session("".concat(prefix, "_3"), 'find-shop1-sessions', 'state', true),
204
- new session_1.Session("".concat(prefix, "_4"), 'do-not-find-shop3-sessions', 'state', true),
205
- ];
206
- _b.label = 2;
207
- case 2:
208
- _b.trys.push([2, 7, 8, 9]);
209
- sessions_1 = tslib_1.__values(sessions), sessions_1_1 = sessions_1.next();
210
- _b.label = 3;
211
- case 3:
212
- if (!!sessions_1_1.done) return [3 /*break*/, 6];
213
- session = sessions_1_1.value;
214
- return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
215
- case 4:
216
- _b.sent();
217
- _b.label = 5;
218
- case 5:
219
- sessions_1_1 = sessions_1.next();
220
- return [3 /*break*/, 3];
221
- case 6: return [3 /*break*/, 9];
222
- case 7:
223
- e_2_1 = _b.sent();
224
- e_2 = { error: e_2_1 };
225
- return [3 /*break*/, 9];
226
- case 8:
227
- try {
228
- if (sessions_1_1 && !sessions_1_1.done && (_a = sessions_1.return)) _a.call(sessions_1);
229
- }
230
- finally { if (e_2) throw e_2.error; }
231
- return [7 /*endfinally*/];
232
- case 9:
233
- expect(storage.findSessionsByShop).toBeDefined();
234
- if (!storage.findSessionsByShop) return [3 /*break*/, 11];
235
- return [4 /*yield*/, storage.findSessionsByShop('find-shop1-sessions')];
236
- case 10:
237
- shop1Sessions = _b.sent();
238
- expect(shop1Sessions).toBeDefined();
239
- if (shop1Sessions) {
240
- expect(shop1Sessions.length).toBe(2);
241
- expect((0, session_test_utils_1.sessionArraysEqual)(shop1Sessions, [
242
- sessions[0],
243
- sessions[2],
244
- ])).toBe(true);
245
- }
246
- _b.label = 11;
247
- case 11: return [2 /*return*/];
248
- }
249
- });
250
- }); });
251
- it('can delete the sessions for a given array of ids', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
252
- var storage, prefix, sessions, sessions_2, sessions_2_1, session, e_3_1, shop1Sessions, idsToDelete;
253
- var e_3, _a;
254
- return tslib_1.__generator(this, function (_b) {
255
- switch (_b.label) {
256
- case 0: return [4 /*yield*/, storageFactory()];
257
- case 1:
258
- storage = _b.sent();
259
- prefix = 'delete_sessions';
260
- sessions = [
261
- new session_1.Session("".concat(prefix, "_1"), 'delete-shop1-sessions', 'state', true),
262
- new session_1.Session("".concat(prefix, "_2"), 'do-not-delete-shop2-sessions', 'state', true),
263
- new session_1.Session("".concat(prefix, "_3"), 'delete-shop1-sessions', 'state', true),
264
- new session_1.Session("".concat(prefix, "_4"), 'do-not-delete-shop3-sessions', 'state', true),
265
- ];
266
- _b.label = 2;
267
- case 2:
268
- _b.trys.push([2, 7, 8, 9]);
269
- sessions_2 = tslib_1.__values(sessions), sessions_2_1 = sessions_2.next();
270
- _b.label = 3;
271
- case 3:
272
- if (!!sessions_2_1.done) return [3 /*break*/, 6];
273
- session = sessions_2_1.value;
274
- return [4 /*yield*/, expect(storage.storeSession(session)).resolves.toBe(true)];
275
- case 4:
276
- _b.sent();
277
- _b.label = 5;
278
- case 5:
279
- sessions_2_1 = sessions_2.next();
280
- return [3 /*break*/, 3];
281
- case 6: return [3 /*break*/, 9];
282
- case 7:
283
- e_3_1 = _b.sent();
284
- e_3 = { error: e_3_1 };
285
- return [3 /*break*/, 9];
286
- case 8:
287
- try {
288
- if (sessions_2_1 && !sessions_2_1.done && (_a = sessions_2.return)) _a.call(sessions_2);
289
- }
290
- finally { if (e_3) throw e_3.error; }
291
- return [7 /*endfinally*/];
292
- case 9:
293
- expect(storage.deleteSessions).toBeDefined();
294
- if (!(storage.deleteSessions && storage.findSessionsByShop)) return [3 /*break*/, 13];
295
- return [4 /*yield*/, storage.findSessionsByShop('delete-shop1-sessions')];
296
- case 10:
297
- shop1Sessions = _b.sent();
298
- expect(shop1Sessions).toBeDefined();
299
- if (!shop1Sessions) return [3 /*break*/, 13];
300
- expect(shop1Sessions.length).toBe(2);
301
- idsToDelete = shop1Sessions.map(function (session) { return session.id; });
302
- return [4 /*yield*/, expect(storage.deleteSessions(idsToDelete)).resolves.toBe(true)];
303
- case 11:
304
- _b.sent();
305
- return [4 /*yield*/, storage.findSessionsByShop('delete-shop1-sessions')];
306
- case 12:
307
- shop1Sessions = _b.sent();
308
- expect(shop1Sessions).toEqual([]);
309
- _b.label = 13;
310
- case 13: return [2 /*return*/];
311
- }
312
- });
313
- }); });
314
- }
315
- exports.batteryOfTests = batteryOfTests;
@@ -1,3 +0,0 @@
1
- import { SessionInterface } from '../../types';
2
- export declare function sessionArraysEqual(sessionArray1: SessionInterface[], sessionArray2: SessionInterface[]): boolean;
3
- //# sourceMappingURL=session-test-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-test-utils.d.ts","sourceRoot":"","sources":["../../../../../src/auth/session/storage/__tests__/session-test-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAI7C,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,gBAAgB,EAAE,EACjC,aAAa,EAAE,gBAAgB,EAAE,GAChC,OAAO,CAgBT"}
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sessionArraysEqual = void 0;
4
- var tslib_1 = require("tslib");
5
- var session_utils_1 = require("../../session-utils");
6
- // compare two arrays of sessions that should contain
7
- // the same sessions but may be in a different order
8
- function sessionArraysEqual(sessionArray1, sessionArray2) {
9
- var e_1, _a, e_2, _b;
10
- if (sessionArray1.length !== sessionArray2.length) {
11
- return false;
12
- }
13
- try {
14
- for (var sessionArray1_1 = tslib_1.__values(sessionArray1), sessionArray1_1_1 = sessionArray1_1.next(); !sessionArray1_1_1.done; sessionArray1_1_1 = sessionArray1_1.next()) {
15
- var session1 = sessionArray1_1_1.value;
16
- var found = false;
17
- try {
18
- for (var sessionArray2_1 = (e_2 = void 0, tslib_1.__values(sessionArray2)), sessionArray2_1_1 = sessionArray2_1.next(); !sessionArray2_1_1.done; sessionArray2_1_1 = sessionArray2_1.next()) {
19
- var session2 = sessionArray2_1_1.value;
20
- if ((0, session_utils_1.sessionEqual)(session1, session2)) {
21
- found = true;
22
- continue;
23
- }
24
- }
25
- }
26
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
27
- finally {
28
- try {
29
- if (sessionArray2_1_1 && !sessionArray2_1_1.done && (_b = sessionArray2_1.return)) _b.call(sessionArray2_1);
30
- }
31
- finally { if (e_2) throw e_2.error; }
32
- }
33
- if (!found)
34
- return false;
35
- }
36
- }
37
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
38
- finally {
39
- try {
40
- if (sessionArray1_1_1 && !sessionArray1_1_1.done && (_a = sessionArray1_1.return)) _a.call(sessionArray1_1);
41
- }
42
- finally { if (e_1) throw e_1.error; }
43
- }
44
- return true;
45
- }
46
- exports.sessionArraysEqual = sessionArraysEqual;
@@ -1,10 +0,0 @@
1
- /// <reference types="node" />
2
- import { Socket, SocketConnectOpts } from 'net';
3
- export declare function wait(ms: number): Promise<void>;
4
- export declare function poll(func: () => Promise<boolean>, { interval, timeout }?: {
5
- interval?: number | undefined;
6
- timeout?: number | undefined;
7
- }): Promise<void>;
8
- export declare function waitForData(socket: Socket): Promise<string>;
9
- export declare function connectSocket(socket: Socket, opts: SocketConnectOpts): Promise<void>;
10
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/auth/session/storage/__tests__/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAE,iBAAiB,EAAC,MAAM,KAAK,CAAC;AAE9C,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9C;AAED,wBAAsB,IAAI,CACxB,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC5B,EAAC,QAAc,EAAE,OAAc,EAAC;;;CAAK,iBAiBtC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB3D;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.connectSocket = exports.waitForData = exports.poll = exports.wait = void 0;
4
- var tslib_1 = require("tslib");
5
- function wait(ms) {
6
- return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, ms); });
7
- }
8
- exports.wait = wait;
9
- function poll(func, _a) {
10
- var _b = _a === void 0 ? {} : _a, _c = _b.interval, interval = _c === void 0 ? 100 : _c, _d = _b.timeout, timeout = _d === void 0 ? 5000 : _d;
11
- return tslib_1.__awaiter(this, void 0, void 0, function () {
12
- var start, elapsed, success, _e;
13
- return tslib_1.__generator(this, function (_f) {
14
- switch (_f.label) {
15
- case 0:
16
- start = Date.now();
17
- _f.label = 1;
18
- case 1:
19
- if (!true) return [3 /*break*/, 7];
20
- elapsed = Date.now() - start;
21
- if (elapsed > timeout) {
22
- throw Error('Timeout');
23
- }
24
- _f.label = 2;
25
- case 2:
26
- _f.trys.push([2, 4, , 5]);
27
- return [4 /*yield*/, func()];
28
- case 3:
29
- success = _f.sent();
30
- if (success)
31
- return [2 /*return*/];
32
- return [3 /*break*/, 5];
33
- case 4:
34
- _e = _f.sent();
35
- return [3 /*break*/, 5];
36
- case 5: return [4 /*yield*/, wait(interval)];
37
- case 6:
38
- _f.sent();
39
- return [3 /*break*/, 1];
40
- case 7: return [2 /*return*/];
41
- }
42
- });
43
- });
44
- }
45
- exports.poll = poll;
46
- function waitForData(socket) {
47
- return new Promise(function (resolve, reject) {
48
- function data() {
49
- resolve('data');
50
- cleanup();
51
- }
52
- function error(err) {
53
- reject(err);
54
- cleanup();
55
- }
56
- function close() {
57
- resolve('no data');
58
- cleanup();
59
- }
60
- function cleanup() {
61
- socket.off('data', data);
62
- socket.off('error', error);
63
- socket.off('close', close);
64
- }
65
- socket.on('data', data);
66
- socket.on('error', error);
67
- socket.on('close', close);
68
- });
69
- }
70
- exports.waitForData = waitForData;
71
- function connectSocket(socket, opts) {
72
- return new Promise(function (resolve, reject) {
73
- function error(err) {
74
- reject(err);
75
- cleanup();
76
- }
77
- function cleanup() {
78
- socket.off('error', error);
79
- }
80
- socket.on('error', error);
81
- socket.connect(opts, function () {
82
- resolve();
83
- cleanup();
84
- });
85
- });
86
- }
87
- exports.connectSocket = connectSocket;