anylang
Version:
A translator's kit that uses the free APIs of Google Translate, Yandex, Bing, ChatGPT, and other LLMs
67 lines (65 loc) • 7.21 kB
JavaScript
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());
});
};
/* eslint-disable class-methods-use-this */
/* eslint-disable @typescript-eslint/require-await */
import { BaseTranslator } from './BaseTranslator';
/**
* Fake translator for use in tests and debug
*/
export class FakeTranslator extends BaseTranslator {
static isSupportedAutoFrom() {
return false;
}
static getSupportedLanguages() {
return ['ru', 'en', 'de', 'ja'];
}
getLengthLimit() {
return 3000;
}
getRequestsTimeout() {
return 10;
}
checkDirection(from, to) {
return from == 'ru' && to == 'ja' ? false : true;
}
translate(text, from, to) {
const delay = this.options.delay === undefined
? 0
: this.options.delay === 'random'
? Math.floor(Math.random() * 1000)
: this.options.delay;
return new Promise((resolve) => {
setTimeout(() => {
resolve(`*[${from}-${to}]` + text);
}, delay);
});
}
translateBatch(text, from, to) {
return Promise.all(text.map((i) => this.translate(i, from, to).catch(() => null)));
}
}
FakeTranslator.translatorName = 'FakeTranslator';
/**
* Fake translator which always throw error for use in tests and debug
*/
export class ErrorFakeTranslator extends FakeTranslator {
translate(_text, _from, _to) {
return __awaiter(this, void 0, void 0, function* () {
throw new Error('Fake error for translate method');
});
}
translateBatch(_text, _from, _to) {
return __awaiter(this, void 0, void 0, function* () {
throw new Error('Fake error for translateBatch method');
});
}
}
ErrorFakeTranslator.translatorName = 'FakeTranslator';
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRyYW5zbGF0b3JzL0Zha2VUcmFuc2xhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDJDQUEyQztBQUMzQyxxREFBcUQ7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxjQUVsQztJQUdNLE1BQU0sQ0FBQyxtQkFBbUI7UUFDaEMsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLHFCQUFxQjtRQUNsQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGNBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRU0sa0JBQWtCO1FBQ3hCLE9BQU8sRUFBRSxDQUFDO0lBQ1gsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFZLEVBQUUsRUFBVTtRQUM3QyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEQsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQVU7UUFDdEQsTUFBTSxLQUFLLEdBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssU0FBUztZQUMvQixDQUFDLENBQUMsQ0FBQztZQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxRQUFRO2dCQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDeEIsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3RDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFjLEVBQUUsSUFBWSxFQUFFLEVBQVU7UUFDN0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzlELENBQUM7SUFDSCxDQUFDOztBQXhDc0IsNkJBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQTJDMUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsY0FBYztJQUd6QyxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxHQUFXOztZQUMvRCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztLQUFBO0lBRVksY0FBYyxDQUMxQixLQUFlLEVBQ2YsS0FBYSxFQUNiLEdBQVc7O1lBRVgsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ3pELENBQUM7S0FBQTs7QUFac0Isa0NBQWMsR0FBRyxnQkFBZ0IsQ0FBQyIsImZpbGUiOiJ0cmFuc2xhdG9ycy9GYWtlVHJhbnNsYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWF3YWl0ICovXG5pbXBvcnQgeyBCYXNlVHJhbnNsYXRvciB9IGZyb20gJy4vQmFzZVRyYW5zbGF0b3InO1xuXG4vKipcbiAqIEZha2UgdHJhbnNsYXRvciBmb3IgdXNlIGluIHRlc3RzIGFuZCBkZWJ1Z1xuICovXG5leHBvcnQgY2xhc3MgRmFrZVRyYW5zbGF0b3IgZXh0ZW5kcyBCYXNlVHJhbnNsYXRvcjx7XG5cdGRlbGF5PzogbnVtYmVyIHwgJ3JhbmRvbSc7XG59PiB7XG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHJhbnNsYXRvck5hbWUgPSAnRmFrZVRyYW5zbGF0b3InO1xuXG5cdHB1YmxpYyBzdGF0aWMgaXNTdXBwb3J0ZWRBdXRvRnJvbSgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIGdldFN1cHBvcnRlZExhbmd1YWdlcygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIFsncnUnLCAnZW4nLCAnZGUnLCAnamEnXTtcblx0fVxuXG5cdHB1YmxpYyBnZXRMZW5ndGhMaW1pdCgpIHtcblx0XHRyZXR1cm4gMzAwMDtcblx0fVxuXG5cdHB1YmxpYyBnZXRSZXF1ZXN0c1RpbWVvdXQoKSB7XG5cdFx0cmV0dXJuIDEwO1xuXHR9XG5cblx0cHVibGljIGNoZWNrRGlyZWN0aW9uKGZyb206IHN0cmluZywgdG86IHN0cmluZykge1xuXHRcdHJldHVybiBmcm9tID09ICdydScgJiYgdG8gPT0gJ2phJyA/IGZhbHNlIDogdHJ1ZTtcblx0fVxuXG5cdHB1YmxpYyB0cmFuc2xhdGUodGV4dDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcblx0XHRjb25zdCBkZWxheSA9XG5cdFx0XHR0aGlzLm9wdGlvbnMuZGVsYXkgPT09IHVuZGVmaW5lZFxuXHRcdFx0XHQ/IDBcblx0XHRcdFx0OiB0aGlzLm9wdGlvbnMuZGVsYXkgPT09ICdyYW5kb20nXG5cdFx0XHRcdFx0PyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxuXHRcdFx0XHRcdDogdGhpcy5vcHRpb25zLmRlbGF5O1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlKSA9PiB7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0cmVzb2x2ZShgKlske2Zyb219LSR7dG99XWAgKyB0ZXh0KTtcblx0XHRcdH0sIGRlbGF5KTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyB0cmFuc2xhdGVCYXRjaCh0ZXh0OiBzdHJpbmdbXSwgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIFByb21pc2UuYWxsKFxuXHRcdFx0dGV4dC5tYXAoKGkpID0+IHRoaXMudHJhbnNsYXRlKGksIGZyb20sIHRvKS5jYXRjaCgoKSA9PiBudWxsKSksXG5cdFx0KTtcblx0fVxufVxuXG4vKipcbiAqIEZha2UgdHJhbnNsYXRvciB3aGljaCBhbHdheXMgdGhyb3cgZXJyb3IgZm9yIHVzZSBpbiB0ZXN0cyBhbmQgZGVidWdcbiAqL1xuZXhwb3J0IGNsYXNzIEVycm9yRmFrZVRyYW5zbGF0b3IgZXh0ZW5kcyBGYWtlVHJhbnNsYXRvciB7XG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHJhbnNsYXRvck5hbWUgPSAnRmFrZVRyYW5zbGF0b3InO1xuXG5cdHB1YmxpYyBhc3luYyB0cmFuc2xhdGUoX3RleHQ6IHN0cmluZywgX2Zyb206IHN0cmluZywgX3RvOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdHRocm93IG5ldyBFcnJvcignRmFrZSBlcnJvciBmb3IgdHJhbnNsYXRlIG1ldGhvZCcpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIHRyYW5zbGF0ZUJhdGNoKFxuXHRcdF90ZXh0OiBzdHJpbmdbXSxcblx0XHRfZnJvbTogc3RyaW5nLFxuXHRcdF90bzogc3RyaW5nLFxuXHQpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdGYWtlIGVycm9yIGZvciB0cmFuc2xhdGVCYXRjaCBtZXRob2QnKTtcblx0fVxufVxuIl19