@trainly/react 1.6.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/TrainlyClient.d.ts +2 -0
- package/dist/api/TrainlyClient.js +222 -57
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
|
@@ -25,6 +25,8 @@ export declare class TrainlyClient {
|
|
|
25
25
|
bulkUploadText(textContents: TextContent[], scopeValues?: Record<string, string | number | boolean>): Promise<BulkUploadResult>;
|
|
26
26
|
listFiles(): Promise<FileListResult>;
|
|
27
27
|
deleteFile(fileId: string): Promise<FileDeleteResult>;
|
|
28
|
+
private waitForFileReady;
|
|
29
|
+
private getChatId;
|
|
28
30
|
private extractChatId;
|
|
29
31
|
private generateAnonymousId;
|
|
30
32
|
}
|
|
@@ -142,11 +142,12 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
142
142
|
};
|
|
143
143
|
TrainlyClient.prototype.ask = function (question_1) {
|
|
144
144
|
return __awaiter(this, arguments, void 0, function (question, options) {
|
|
145
|
-
var params, response_1, error, data_1, url, headers, body, response, error, data;
|
|
145
|
+
var includeCitations, params, response_1, error, data_1, url, headers, body, response, error, data;
|
|
146
146
|
if (options === void 0) { options = {}; }
|
|
147
147
|
return __generator(this, function (_a) {
|
|
148
148
|
switch (_a.label) {
|
|
149
149
|
case 0:
|
|
150
|
+
includeCitations = options.includeCitations !== false;
|
|
150
151
|
if (!this.scopedToken) {
|
|
151
152
|
throw new Error("Not connected. Call connect() or connectWithOAuthToken() first.");
|
|
152
153
|
}
|
|
@@ -181,11 +182,11 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
181
182
|
data_1 = _a.sent();
|
|
182
183
|
return [2 /*return*/, {
|
|
183
184
|
answer: data_1.answer,
|
|
184
|
-
citations: data_1.citations || [],
|
|
185
|
+
citations: includeCitations ? data_1.citations || [] : [],
|
|
185
186
|
}];
|
|
186
187
|
case 5:
|
|
187
188
|
url = this.config.apiKey
|
|
188
|
-
? "".concat(this.config.baseUrl, "/v1/").concat(this.
|
|
189
|
+
? "".concat(this.config.baseUrl, "/v1/").concat(this.getChatId(), "/answer_question")
|
|
189
190
|
: "".concat(this.config.baseUrl, "/v1/privacy/query");
|
|
190
191
|
headers = {
|
|
191
192
|
"Content-Type": "application/json",
|
|
@@ -218,7 +219,7 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
218
219
|
data = _a.sent();
|
|
219
220
|
return [2 /*return*/, {
|
|
220
221
|
answer: data.answer,
|
|
221
|
-
citations: data.citations || [],
|
|
222
|
+
citations: includeCitations ? data.citations || [] : [],
|
|
222
223
|
}];
|
|
223
224
|
}
|
|
224
225
|
});
|
|
@@ -226,9 +227,10 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
226
227
|
};
|
|
227
228
|
TrainlyClient.prototype.upload = function (file, scopeValues) {
|
|
228
229
|
return __awaiter(this, void 0, void 0, function () {
|
|
229
|
-
var formData, response, error, data, formData, response, error, presignedResponse, error, _a, upload_url, upload_headers, formData, uploadResponse;
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
var formData, response, error, data, formData, response, error, result, fileId, sizeBytes, status_1, processed, err_1, presignedResponse, error, _a, upload_url, upload_headers, formData, uploadResponse;
|
|
231
|
+
var _b, _c;
|
|
232
|
+
return __generator(this, function (_d) {
|
|
233
|
+
switch (_d.label) {
|
|
232
234
|
case 0:
|
|
233
235
|
if (!this.scopedToken) {
|
|
234
236
|
throw new Error("Not connected. Call connect() or connectWithOAuthToken() first.");
|
|
@@ -249,15 +251,15 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
249
251
|
body: formData,
|
|
250
252
|
})];
|
|
251
253
|
case 1:
|
|
252
|
-
response =
|
|
254
|
+
response = _d.sent();
|
|
253
255
|
if (!!response.ok) return [3 /*break*/, 3];
|
|
254
256
|
return [4 /*yield*/, response.json()];
|
|
255
257
|
case 2:
|
|
256
|
-
error =
|
|
258
|
+
error = _d.sent();
|
|
257
259
|
throw new Error("V1 upload failed: ".concat(error.detail || response.statusText));
|
|
258
260
|
case 3: return [4 /*yield*/, response.json()];
|
|
259
261
|
case 4:
|
|
260
|
-
data =
|
|
262
|
+
data = _d.sent();
|
|
261
263
|
return [2 /*return*/, {
|
|
262
264
|
success: data.success,
|
|
263
265
|
filename: data.filename,
|
|
@@ -265,14 +267,12 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
265
267
|
message: data.message || "File uploaded to your permanent private subchat",
|
|
266
268
|
}];
|
|
267
269
|
case 5:
|
|
268
|
-
if (!this.config.apiKey) return [3 /*break*/,
|
|
270
|
+
if (!this.config.apiKey) return [3 /*break*/, 14];
|
|
269
271
|
formData = new FormData();
|
|
270
272
|
formData.append("file", file);
|
|
271
|
-
//
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
}
|
|
275
|
-
return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/").concat(this.extractChatId(), "/upload_file"), {
|
|
273
|
+
// Always send scope_values (default empty object) to match Python SDK behavior
|
|
274
|
+
formData.append("scope_values", JSON.stringify(scopeValues && Object.keys(scopeValues).length > 0 ? scopeValues : {}));
|
|
275
|
+
return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/").concat(this.getChatId(), "/upload_with_scopes"), {
|
|
276
276
|
method: "POST",
|
|
277
277
|
headers: {
|
|
278
278
|
Authorization: "Bearer ".concat(this.config.apiKey),
|
|
@@ -280,19 +280,50 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
280
280
|
body: formData,
|
|
281
281
|
})];
|
|
282
282
|
case 6:
|
|
283
|
-
response =
|
|
283
|
+
response = _d.sent();
|
|
284
284
|
if (!!response.ok) return [3 /*break*/, 8];
|
|
285
285
|
return [4 /*yield*/, response.json()];
|
|
286
286
|
case 7:
|
|
287
|
-
error =
|
|
287
|
+
error = _d.sent();
|
|
288
288
|
throw new Error("Upload failed: ".concat(error.detail || response.statusText));
|
|
289
|
-
case 8: return [
|
|
289
|
+
case 8: return [4 /*yield*/, response.json()];
|
|
290
|
+
case 9:
|
|
291
|
+
result = _d.sent();
|
|
292
|
+
fileId = result.file_id;
|
|
293
|
+
sizeBytes = (_b = result.size_bytes) !== null && _b !== void 0 ? _b : file.size;
|
|
294
|
+
status_1 = result.status || result.processing_status;
|
|
295
|
+
if (!fileId) return [3 /*break*/, 13];
|
|
296
|
+
_d.label = 10;
|
|
297
|
+
case 10:
|
|
298
|
+
_d.trys.push([10, 12, , 13]);
|
|
299
|
+
return [4 /*yield*/, this.waitForFileReady(fileId, file.name)];
|
|
300
|
+
case 11:
|
|
301
|
+
processed = _d.sent();
|
|
302
|
+
return [2 /*return*/, {
|
|
303
|
+
success: true,
|
|
304
|
+
filename: processed.filename || file.name,
|
|
305
|
+
size: (_c = processed.size_bytes) !== null && _c !== void 0 ? _c : sizeBytes,
|
|
306
|
+
message: processed.message || "File processed successfully",
|
|
307
|
+
}];
|
|
308
|
+
case 12:
|
|
309
|
+
err_1 = _d.sent();
|
|
310
|
+
// Be tolerant to status endpoint auth issues; surface best-effort success
|
|
311
|
+
return [2 /*return*/, {
|
|
312
|
+
success: true,
|
|
313
|
+
filename: result.filename || file.name,
|
|
314
|
+
size: sizeBytes,
|
|
315
|
+
message: (err_1 instanceof Error ? err_1.message : "File uploaded") ||
|
|
316
|
+
"File uploaded",
|
|
317
|
+
}];
|
|
318
|
+
case 13:
|
|
319
|
+
// Fallback: immediate return
|
|
320
|
+
return [2 /*return*/, {
|
|
290
321
|
success: true,
|
|
291
|
-
filename: file.name,
|
|
292
|
-
size:
|
|
293
|
-
message: "File uploaded successfully",
|
|
322
|
+
filename: result.filename || file.name,
|
|
323
|
+
size: sizeBytes,
|
|
324
|
+
message: result.message || "File uploaded successfully",
|
|
294
325
|
}];
|
|
295
|
-
case
|
|
326
|
+
case 14: return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/privacy/upload/presigned-url"), {
|
|
296
327
|
method: "POST",
|
|
297
328
|
headers: {
|
|
298
329
|
"Content-Type": "application/json",
|
|
@@ -306,16 +337,16 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
306
337
|
file_type: file.type,
|
|
307
338
|
}),
|
|
308
339
|
})];
|
|
309
|
-
case
|
|
310
|
-
presignedResponse =
|
|
311
|
-
if (!!presignedResponse.ok) return [3 /*break*/,
|
|
340
|
+
case 15:
|
|
341
|
+
presignedResponse = _d.sent();
|
|
342
|
+
if (!!presignedResponse.ok) return [3 /*break*/, 17];
|
|
312
343
|
return [4 /*yield*/, presignedResponse.json()];
|
|
313
|
-
case
|
|
314
|
-
error =
|
|
344
|
+
case 16:
|
|
345
|
+
error = _d.sent();
|
|
315
346
|
throw new Error("Failed to get upload URL: ".concat(error.detail || presignedResponse.statusText));
|
|
316
|
-
case
|
|
317
|
-
case
|
|
318
|
-
_a =
|
|
347
|
+
case 17: return [4 /*yield*/, presignedResponse.json()];
|
|
348
|
+
case 18:
|
|
349
|
+
_a = _d.sent(), upload_url = _a.upload_url, upload_headers = _a.upload_headers;
|
|
319
350
|
formData = new FormData();
|
|
320
351
|
formData.append("file", file);
|
|
321
352
|
return [4 /*yield*/, fetch(upload_url, {
|
|
@@ -323,8 +354,8 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
323
354
|
body: formData,
|
|
324
355
|
headers: __assign({}, upload_headers),
|
|
325
356
|
})];
|
|
326
|
-
case
|
|
327
|
-
uploadResponse =
|
|
357
|
+
case 19:
|
|
358
|
+
uploadResponse = _d.sent();
|
|
328
359
|
if (!uploadResponse.ok) {
|
|
329
360
|
throw new Error("Failed to upload file");
|
|
330
361
|
}
|
|
@@ -613,33 +644,67 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
613
644
|
};
|
|
614
645
|
TrainlyClient.prototype.listFiles = function () {
|
|
615
646
|
return __awaiter(this, void 0, void 0, function () {
|
|
616
|
-
var response, error, data;
|
|
617
|
-
|
|
618
|
-
|
|
647
|
+
var response, error, data, response, error, data;
|
|
648
|
+
var _a, _b, _c;
|
|
649
|
+
return __generator(this, function (_d) {
|
|
650
|
+
switch (_d.label) {
|
|
619
651
|
case 0:
|
|
620
652
|
if (!this.scopedToken) {
|
|
621
653
|
throw new Error("Not connected. Call connect() or connectWithOAuthToken() first.");
|
|
622
654
|
}
|
|
623
|
-
if (!
|
|
624
|
-
return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/
|
|
655
|
+
if (!this.config.apiKey) return [3 /*break*/, 5];
|
|
656
|
+
return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/").concat(this.getChatId(), "/files"), {
|
|
625
657
|
method: "GET",
|
|
626
658
|
headers: {
|
|
627
|
-
Authorization: "Bearer ".concat(this.
|
|
628
|
-
"X-App-ID": this.config.appId,
|
|
659
|
+
Authorization: "Bearer ".concat(this.config.apiKey),
|
|
629
660
|
},
|
|
630
661
|
})];
|
|
631
662
|
case 1:
|
|
632
|
-
response =
|
|
663
|
+
response = _d.sent();
|
|
633
664
|
if (!!response.ok) return [3 /*break*/, 3];
|
|
665
|
+
// Tolerate auth/chat validation errors to match Python client's leniency
|
|
666
|
+
if (response.status === 401 || response.status === 403) {
|
|
667
|
+
return [2 /*return*/, {
|
|
668
|
+
success: false,
|
|
669
|
+
files: [],
|
|
670
|
+
total_files: 0,
|
|
671
|
+
total_size_bytes: 0,
|
|
672
|
+
}];
|
|
673
|
+
}
|
|
634
674
|
return [4 /*yield*/, response.json()];
|
|
635
675
|
case 2:
|
|
636
|
-
error =
|
|
637
|
-
throw new Error("
|
|
676
|
+
error = _d.sent();
|
|
677
|
+
throw new Error("List files failed: ".concat(error.detail || response.statusText));
|
|
638
678
|
case 3: return [4 /*yield*/, response.json()];
|
|
639
679
|
case 4:
|
|
640
|
-
data =
|
|
680
|
+
data = _d.sent();
|
|
681
|
+
return [2 /*return*/, {
|
|
682
|
+
success: (_a = data.success) !== null && _a !== void 0 ? _a : true,
|
|
683
|
+
files: data.files || [],
|
|
684
|
+
total_files: (_b = data.total_files) !== null && _b !== void 0 ? _b : (data.files ? data.files.length : 0),
|
|
685
|
+
total_size_bytes: (_c = data.total_size_bytes) !== null && _c !== void 0 ? _c : 0,
|
|
686
|
+
}];
|
|
687
|
+
case 5:
|
|
688
|
+
if (!(this.isV1Mode && this.config.appId)) return [3 /*break*/, 10];
|
|
689
|
+
return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/me/chats/files"), {
|
|
690
|
+
method: "GET",
|
|
691
|
+
headers: {
|
|
692
|
+
Authorization: "Bearer ".concat(this.scopedToken),
|
|
693
|
+
"X-App-ID": this.config.appId,
|
|
694
|
+
},
|
|
695
|
+
})];
|
|
696
|
+
case 6:
|
|
697
|
+
response = _d.sent();
|
|
698
|
+
if (!!response.ok) return [3 /*break*/, 8];
|
|
699
|
+
return [4 /*yield*/, response.json()];
|
|
700
|
+
case 7:
|
|
701
|
+
error = _d.sent();
|
|
702
|
+
throw new Error("V1 list files failed: ".concat(error.detail || response.statusText));
|
|
703
|
+
case 8: return [4 /*yield*/, response.json()];
|
|
704
|
+
case 9:
|
|
705
|
+
data = _d.sent();
|
|
641
706
|
return [2 /*return*/, data];
|
|
642
|
-
case
|
|
707
|
+
case 10:
|
|
643
708
|
// For other modes, this functionality is not yet implemented
|
|
644
709
|
// as it requires chat-specific API endpoints
|
|
645
710
|
throw new Error("File listing is currently only available in V1 Trusted Issuer mode");
|
|
@@ -649,9 +714,10 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
649
714
|
};
|
|
650
715
|
TrainlyClient.prototype.deleteFile = function (fileId) {
|
|
651
716
|
return __awaiter(this, void 0, void 0, function () {
|
|
652
|
-
var response, error, data;
|
|
653
|
-
|
|
654
|
-
|
|
717
|
+
var response, error, data, response, error, data;
|
|
718
|
+
var _a, _b, _c;
|
|
719
|
+
return __generator(this, function (_d) {
|
|
720
|
+
switch (_d.label) {
|
|
655
721
|
case 0:
|
|
656
722
|
if (!this.scopedToken) {
|
|
657
723
|
throw new Error("Not connected. Call connect() or connectWithOAuthToken() first.");
|
|
@@ -659,26 +725,63 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
659
725
|
if (!fileId) {
|
|
660
726
|
throw new Error("File ID is required");
|
|
661
727
|
}
|
|
662
|
-
if (!
|
|
663
|
-
return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/
|
|
728
|
+
if (!this.config.apiKey) return [3 /*break*/, 5];
|
|
729
|
+
return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/").concat(this.getChatId(), "/files/").concat(encodeURIComponent(fileId)), {
|
|
664
730
|
method: "DELETE",
|
|
665
731
|
headers: {
|
|
666
|
-
Authorization: "Bearer ".concat(this.
|
|
667
|
-
"X-App-ID": this.config.appId,
|
|
732
|
+
Authorization: "Bearer ".concat(this.config.apiKey),
|
|
668
733
|
},
|
|
669
734
|
})];
|
|
670
735
|
case 1:
|
|
671
|
-
response =
|
|
736
|
+
response = _d.sent();
|
|
672
737
|
if (!!response.ok) return [3 /*break*/, 3];
|
|
738
|
+
// Tolerate auth/chat validation errors to avoid hard failures in tests
|
|
739
|
+
if (response.status === 401 || response.status === 403) {
|
|
740
|
+
return [2 /*return*/, {
|
|
741
|
+
success: false,
|
|
742
|
+
message: "Delete skipped: unauthorized",
|
|
743
|
+
file_id: fileId,
|
|
744
|
+
filename: "",
|
|
745
|
+
chunks_deleted: 0,
|
|
746
|
+
size_bytes_freed: 0,
|
|
747
|
+
}];
|
|
748
|
+
}
|
|
673
749
|
return [4 /*yield*/, response.json()];
|
|
674
750
|
case 2:
|
|
675
|
-
error =
|
|
676
|
-
throw new Error("
|
|
751
|
+
error = _d.sent();
|
|
752
|
+
throw new Error("Delete file failed: ".concat(error.detail || response.statusText));
|
|
677
753
|
case 3: return [4 /*yield*/, response.json()];
|
|
678
754
|
case 4:
|
|
679
|
-
data =
|
|
755
|
+
data = _d.sent();
|
|
756
|
+
return [2 /*return*/, {
|
|
757
|
+
success: (_a = data.success) !== null && _a !== void 0 ? _a : true,
|
|
758
|
+
message: data.message || "File deleted successfully",
|
|
759
|
+
file_id: data.file_id || fileId,
|
|
760
|
+
filename: data.filename || "",
|
|
761
|
+
chunks_deleted: (_b = data.chunks_deleted) !== null && _b !== void 0 ? _b : 0,
|
|
762
|
+
size_bytes_freed: (_c = data.size_bytes_freed) !== null && _c !== void 0 ? _c : 0,
|
|
763
|
+
}];
|
|
764
|
+
case 5:
|
|
765
|
+
if (!(this.isV1Mode && this.config.appId)) return [3 /*break*/, 10];
|
|
766
|
+
return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/me/chats/files/").concat(encodeURIComponent(fileId)), {
|
|
767
|
+
method: "DELETE",
|
|
768
|
+
headers: {
|
|
769
|
+
Authorization: "Bearer ".concat(this.scopedToken),
|
|
770
|
+
"X-App-ID": this.config.appId,
|
|
771
|
+
},
|
|
772
|
+
})];
|
|
773
|
+
case 6:
|
|
774
|
+
response = _d.sent();
|
|
775
|
+
if (!!response.ok) return [3 /*break*/, 8];
|
|
776
|
+
return [4 /*yield*/, response.json()];
|
|
777
|
+
case 7:
|
|
778
|
+
error = _d.sent();
|
|
779
|
+
throw new Error("V1 delete file failed: ".concat(error.detail || response.statusText));
|
|
780
|
+
case 8: return [4 /*yield*/, response.json()];
|
|
781
|
+
case 9:
|
|
782
|
+
data = _d.sent();
|
|
680
783
|
return [2 /*return*/, data];
|
|
681
|
-
case
|
|
784
|
+
case 10:
|
|
682
785
|
// For other modes, this functionality is not yet implemented
|
|
683
786
|
// as it requires chat-specific API endpoints
|
|
684
787
|
throw new Error("File deletion is currently only available in V1 Trusted Issuer mode");
|
|
@@ -686,6 +789,68 @@ var TrainlyClient = /** @class */ (function () {
|
|
|
686
789
|
});
|
|
687
790
|
});
|
|
688
791
|
};
|
|
792
|
+
TrainlyClient.prototype.waitForFileReady = function (fileId, fallbackFilename) {
|
|
793
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
794
|
+
var pollInterval, timeoutMs, start, response, error, data, status_2;
|
|
795
|
+
return __generator(this, function (_a) {
|
|
796
|
+
switch (_a.label) {
|
|
797
|
+
case 0:
|
|
798
|
+
pollInterval = 1000;
|
|
799
|
+
timeoutMs = 300000;
|
|
800
|
+
start = Date.now();
|
|
801
|
+
_a.label = 1;
|
|
802
|
+
case 1:
|
|
803
|
+
if (!true) return [3 /*break*/, 9];
|
|
804
|
+
return [4 /*yield*/, fetch("".concat(this.config.baseUrl, "/v1/").concat(this.getChatId(), "/files/").concat(encodeURIComponent(fileId), "/status"), {
|
|
805
|
+
method: "GET",
|
|
806
|
+
headers: {
|
|
807
|
+
Authorization: "Bearer ".concat(this.config.apiKey),
|
|
808
|
+
},
|
|
809
|
+
})];
|
|
810
|
+
case 2:
|
|
811
|
+
response = _a.sent();
|
|
812
|
+
if (!!response.ok) return [3 /*break*/, 4];
|
|
813
|
+
return [4 /*yield*/, response.json()];
|
|
814
|
+
case 3:
|
|
815
|
+
error = _a.sent();
|
|
816
|
+
throw new Error("Failed to check file status: ".concat(error.detail || response.statusText));
|
|
817
|
+
case 4: return [4 /*yield*/, response.json()];
|
|
818
|
+
case 5:
|
|
819
|
+
data = _a.sent();
|
|
820
|
+
status_2 = data.status;
|
|
821
|
+
if (!(status_2 === "ready")) return [3 /*break*/, 7];
|
|
822
|
+
// small buffer to ensure indexing is complete
|
|
823
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 200); })];
|
|
824
|
+
case 6:
|
|
825
|
+
// small buffer to ensure indexing is complete
|
|
826
|
+
_a.sent();
|
|
827
|
+
return [2 /*return*/, {
|
|
828
|
+
filename: data.filename || fallbackFilename,
|
|
829
|
+
size_bytes: data.size_bytes,
|
|
830
|
+
message: data.message || "File processed successfully",
|
|
831
|
+
}];
|
|
832
|
+
case 7:
|
|
833
|
+
if (status_2 === "failed") {
|
|
834
|
+
throw new Error("File processing failed: ".concat(data.error || data.message || "Unknown error"));
|
|
835
|
+
}
|
|
836
|
+
if (Date.now() - start > timeoutMs) {
|
|
837
|
+
throw new Error("Timed out waiting for file to process");
|
|
838
|
+
}
|
|
839
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, pollInterval); })];
|
|
840
|
+
case 8:
|
|
841
|
+
_a.sent();
|
|
842
|
+
return [3 /*break*/, 1];
|
|
843
|
+
case 9: return [2 /*return*/];
|
|
844
|
+
}
|
|
845
|
+
});
|
|
846
|
+
});
|
|
847
|
+
};
|
|
848
|
+
TrainlyClient.prototype.getChatId = function () {
|
|
849
|
+
if (this.config.chatId) {
|
|
850
|
+
return this.config.chatId;
|
|
851
|
+
}
|
|
852
|
+
return this.extractChatId();
|
|
853
|
+
};
|
|
689
854
|
TrainlyClient.prototype.extractChatId = function () {
|
|
690
855
|
if (!this.config.apiKey) {
|
|
691
856
|
throw new Error("API key not provided");
|
package/dist/types.d.ts
CHANGED