UNPKG

anylang

Version:

A translator's kit that uses the free APIs of Google Translate, Yandex, Bing, ChatGPT, and other LLMs

93 lines (91 loc) 10.9 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import queryString from 'query-string'; import z from 'zod'; import { BaseTranslator } from '../../BaseTranslator'; export class LibreTranslateTranslator extends BaseTranslator { static getSupportedLanguages() { // eslint-disable // prettier-ignore return [ "en", "ar", "az", "zh", "cs", "nl", "eo", "fi", "fr", "de", "el", "hi", "hu", "id", "ga", "it", "ja", "ko", "fa", "pl", "pt", "ru", "sk", "es", "sv", "tr", "uk", "vi" ]; // eslint-enable } constructor(options) { var _a; super(options); this.apiHost = (_a = options.apiHost) !== null && _a !== void 0 ? _a : 'https://translate.terraprint.co/translate'; } getLengthLimit() { return 5000; } getRequestsTimeout() { return 300; } checkLimitExceeding(text) { if (Array.isArray(text)) { const arrayLen = text.reduce((acc, text) => acc + text.length, 0); const extra = arrayLen - this.getLengthLimit(); return extra > 0 ? extra : 0; } else { const extra = text.length - this.getLengthLimit(); return extra > 0 ? extra : 0; } } translate(text, from, to) { return __awaiter(this, void 0, void 0, function* () { const requestData = { q: text, source: from, target: to, format: 'text', }; if (this.options.apiKey) { requestData['api_key'] = this.options.apiKey; } return this.fetch(this.apiHost, { responseType: 'json', method: 'POST', headers: { 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0', Accept: '*/*', 'Accept-Language': 'en-US,en;q=0.5', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'Content-Type': 'application/x-www-form-urlencoded', }, body: queryString.stringify(requestData), }).then((rsp) => { return z .object({ translatedText: z.string(), }) .parse(rsp.data, { error: () => 'Unexpected data' }).translatedText; }); }); } translateBatch(texts, from, to) { return __awaiter(this, void 0, void 0, function* () { return Promise.all(texts.map((text) => this.translate(text, from, to))); }); } } LibreTranslateTranslator.translatorName = 'LibreTranslateTranslator'; LibreTranslateTranslator.isRequiredKey = () => false; LibreTranslateTranslator.isSupportedAutoFrom = () => true; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRyYW5zbGF0b3JzL3Vuc3RhYmxlL0xpYnJlVHJhbnNsYXRlVHJhbnNsYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBRXBCLE9BQU8sRUFBRSxjQUFjLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFFekUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGNBQWM7SUFPcEQsTUFBTSxDQUFDLHFCQUFxQjtRQUNsQyxpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLE9BQU87WUFDTixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUM1QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUM1QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUM1QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUM1QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUM1QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7U0FDaEIsQ0FBQztRQUNGLGdCQUFnQjtJQUNqQixDQUFDO0lBTUQsWUFBWSxPQUEwQjs7UUFDckMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFBLE9BQU8sQ0FBQyxPQUFPLG1DQUFJLDJDQUEyQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVNLGtCQUFrQjtRQUN4QixPQUFPLEdBQUcsQ0FBQztJQUNaLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxJQUF1QjtRQUNqRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEUsTUFBTSxLQUFLLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMvQyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbEQsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0YsQ0FBQztJQUVZLFNBQVMsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQVU7O1lBQzVELE1BQU0sV0FBVyxHQUEyQjtnQkFDM0MsQ0FBQyxFQUFFLElBQUk7Z0JBQ1AsTUFBTSxFQUFFLElBQUk7Z0JBQ1osTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLE1BQU07YUFDZCxDQUFDO1lBRUYsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN6QixXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDOUMsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUMvQixZQUFZLEVBQUUsTUFBTTtnQkFDcEIsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsT0FBTyxFQUFFO29CQUNSLFlBQVksRUFDWCw4RUFBOEU7b0JBQy9FLE1BQU0sRUFBRSxLQUFLO29CQUNiLGlCQUFpQixFQUFFLGdCQUFnQjtvQkFDbkMsZ0JBQWdCLEVBQUUsT0FBTztvQkFDekIsZ0JBQWdCLEVBQUUsTUFBTTtvQkFDeEIsZ0JBQWdCLEVBQUUsYUFBYTtvQkFDL0IsY0FBYyxFQUFFLG1DQUFtQztpQkFDbkQ7Z0JBQ0QsSUFBSSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO2FBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDZixPQUFPLENBQUM7cUJBQ04sTUFBTSxDQUFDO29CQUNQLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO2lCQUMxQixDQUFDO3FCQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFDdEUsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDO0tBQUE7SUFFWSxjQUFjLENBQUMsS0FBZSxFQUFFLElBQVksRUFBRSxFQUFVOztZQUNwRSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO0tBQUE7O0FBdEZzQix1Q0FBYyxHQUFHLDBCQUEwQixDQUFDO0FBRXJELHNDQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBRTVCLDRDQUFtQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyIsImZpbGUiOiJ0cmFuc2xhdG9ycy91bnN0YWJsZS9MaWJyZVRyYW5zbGF0ZVRyYW5zbGF0b3IvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcXVlcnlTdHJpbmcgZnJvbSAncXVlcnktc3RyaW5nJztcbmltcG9ydCB6IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7IEJhc2VUcmFuc2xhdG9yLCBUcmFuc2xhdG9yT3B0aW9ucyB9IGZyb20gJy4uLy4uL0Jhc2VUcmFuc2xhdG9yJztcblxuZXhwb3J0IGNsYXNzIExpYnJlVHJhbnNsYXRlVHJhbnNsYXRvciBleHRlbmRzIEJhc2VUcmFuc2xhdG9yIHtcblx0cHVibGljIHN0YXRpYyByZWFkb25seSB0cmFuc2xhdG9yTmFtZSA9ICdMaWJyZVRyYW5zbGF0ZVRyYW5zbGF0b3InO1xuXG5cdHB1YmxpYyBzdGF0aWMgaXNSZXF1aXJlZEtleSA9ICgpID0+IGZhbHNlO1xuXG5cdHB1YmxpYyBzdGF0aWMgaXNTdXBwb3J0ZWRBdXRvRnJvbSA9ICgpID0+IHRydWU7XG5cblx0cHVibGljIHN0YXRpYyBnZXRTdXBwb3J0ZWRMYW5ndWFnZXMoKTogc3RyaW5nW10ge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlXG5cdFx0Ly8gcHJldHRpZXItaWdub3JlXG5cdFx0cmV0dXJuIFtcblx0XHRcdFwiZW5cIiwgXCJhclwiLCBcImF6XCIsIFwiemhcIiwgXCJjc1wiLFxuXHRcdFx0XCJubFwiLCBcImVvXCIsIFwiZmlcIiwgXCJmclwiLCBcImRlXCIsXG5cdFx0XHRcImVsXCIsIFwiaGlcIiwgXCJodVwiLCBcImlkXCIsIFwiZ2FcIixcblx0XHRcdFwiaXRcIiwgXCJqYVwiLCBcImtvXCIsIFwiZmFcIiwgXCJwbFwiLFxuXHRcdFx0XCJwdFwiLCBcInJ1XCIsIFwic2tcIiwgXCJlc1wiLCBcInN2XCIsXG5cdFx0XHRcInRyXCIsIFwidWtcIiwgXCJ2aVwiXG5cdFx0XTtcblx0XHQvLyBlc2xpbnQtZW5hYmxlXG5cdH1cblxuXHQvLyBVUkwgb2YgeW91ciBpbnN0YW5jZSBvZiBMaWJyZVRyYW5zbGF0ZVxuXHQvLyBmb3IgbG9jYWwgaW5zdGFuY2UgdXNlIFVSTCBcImh0dHA6Ly9sb2NhbGhvc3QvdHJhbnNsYXRlXCJcblx0cHJpdmF0ZSByZWFkb25seSBhcGlIb3N0O1xuXG5cdGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRyYW5zbGF0b3JPcHRpb25zKSB7XG5cdFx0c3VwZXIob3B0aW9ucyk7XG5cblx0XHR0aGlzLmFwaUhvc3QgPSBvcHRpb25zLmFwaUhvc3QgPz8gJ2h0dHBzOi8vdHJhbnNsYXRlLnRlcnJhcHJpbnQuY28vdHJhbnNsYXRlJztcblx0fVxuXG5cdHB1YmxpYyBnZXRMZW5ndGhMaW1pdCgpIHtcblx0XHRyZXR1cm4gNTAwMDtcblx0fVxuXG5cdHB1YmxpYyBnZXRSZXF1ZXN0c1RpbWVvdXQoKSB7XG5cdFx0cmV0dXJuIDMwMDtcblx0fVxuXG5cdHB1YmxpYyBjaGVja0xpbWl0RXhjZWVkaW5nKHRleHQ6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGV4dCkpIHtcblx0XHRcdGNvbnN0IGFycmF5TGVuID0gdGV4dC5yZWR1Y2UoKGFjYywgdGV4dCkgPT4gYWNjICsgdGV4dC5sZW5ndGgsIDApO1xuXHRcdFx0Y29uc3QgZXh0cmEgPSBhcnJheUxlbiAtIHRoaXMuZ2V0TGVuZ3RoTGltaXQoKTtcblx0XHRcdHJldHVybiBleHRyYSA+IDAgPyBleHRyYSA6IDA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGV4dHJhID0gdGV4dC5sZW5ndGggLSB0aGlzLmdldExlbmd0aExpbWl0KCk7XG5cdFx0XHRyZXR1cm4gZXh0cmEgPiAwID8gZXh0cmEgOiAwO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyB0cmFuc2xhdGUodGV4dDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcblx0XHRjb25zdCByZXF1ZXN0RGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcblx0XHRcdHE6IHRleHQsXG5cdFx0XHRzb3VyY2U6IGZyb20sXG5cdFx0XHR0YXJnZXQ6IHRvLFxuXHRcdFx0Zm9ybWF0OiAndGV4dCcsXG5cdFx0fTtcblxuXHRcdGlmICh0aGlzLm9wdGlvbnMuYXBpS2V5KSB7XG5cdFx0XHRyZXF1ZXN0RGF0YVsnYXBpX2tleSddID0gdGhpcy5vcHRpb25zLmFwaUtleTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5mZXRjaCh0aGlzLmFwaUhvc3QsIHtcblx0XHRcdHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuXHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdCdVc2VyLUFnZW50Jzpcblx0XHRcdFx0XHQnTW96aWxsYS81LjAgKFgxMTsgVWJ1bnR1OyBMaW51eCB4ODZfNjQ7IHJ2Ojk5LjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvOTkuMCcsXG5cdFx0XHRcdEFjY2VwdDogJyovKicsXG5cdFx0XHRcdCdBY2NlcHQtTGFuZ3VhZ2UnOiAnZW4tVVMsZW47cT0wLjUnLFxuXHRcdFx0XHQnU2VjLUZldGNoLURlc3QnOiAnZW1wdHknLFxuXHRcdFx0XHQnU2VjLUZldGNoLU1vZGUnOiAnY29ycycsXG5cdFx0XHRcdCdTZWMtRmV0Y2gtU2l0ZSc6ICdzYW1lLW9yaWdpbicsXG5cdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcblx0XHRcdH0sXG5cdFx0XHRib2R5OiBxdWVyeVN0cmluZy5zdHJpbmdpZnkocmVxdWVzdERhdGEpLFxuXHRcdH0pLnRoZW4oKHJzcCkgPT4ge1xuXHRcdFx0cmV0dXJuIHpcblx0XHRcdFx0Lm9iamVjdCh7XG5cdFx0XHRcdFx0dHJhbnNsYXRlZFRleHQ6IHouc3RyaW5nKCksXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5wYXJzZShyc3AuZGF0YSwgeyBlcnJvcjogKCkgPT4gJ1VuZXhwZWN0ZWQgZGF0YScgfSkudHJhbnNsYXRlZFRleHQ7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgdHJhbnNsYXRlQmF0Y2godGV4dHM6IHN0cmluZ1tdLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwodGV4dHMubWFwKCh0ZXh0KSA9PiB0aGlzLnRyYW5zbGF0ZSh0ZXh0LCBmcm9tLCB0bykpKTtcblx0fVxufVxuIl19