UNPKG

anylang

Version:

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

81 lines (79 loc) 9.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Multiplexor = void 0; var _strings = require("./strings"); const tokens = ['tokenStart', 'tokenEnd', 'tokenClose']; /** * Util for pack multiple requests to one * * It's just encode/decode all texts with custom separation options */ class Multiplexor { // private readonly token: Array<Array<string>> = []; constructor(options) { this.options = { tokenStart: '<', tokenEnd: '>', tokenClose: '/' }; if (options !== undefined) { ['tokenStart', 'tokenEnd', 'tokenClose'].forEach(key => { const item = options[key]; if (item !== undefined && item.search(/&|:/) !== -1) { throw new Error(`Option ${key} has disallow characters (& or :)`); } }); for (const key in options) { this.options[key] = options[key]; } } } encode(data) { const { tokenStart: start = '', tokenEnd: end = '', tokenClose: close = '' } = this.options; return data.map(({ id, text }) => start + id + end + this.escape(text) + start + close + id + end).join(' '); } decode(text) { const { tokenStart: start = '', tokenEnd: end = '', tokenClose: close = '' } = this.options; const pattern = `${start}\\s*(\\d+)\\s*${end}([\\w\\W]+?)${start}\\s*${close}\\s*\\1\\s*${end}`; const matchSet = text.matchAll(new RegExp(pattern, 'gm')); const result = []; let match = matchSet.next(); while (!match.done) { result.push({ id: match.value[1], text: this.unescape(match.value[2]) }); match = matchSet.next(); } return result; } escape(text) { return tokens.reduce((text, tokenName, index) => { const token = this.options[tokenName]; if (!token) return text; return text.replace(new RegExp((0, _strings.escapeRegExp)(token), 'g'), `&${index + 1}:`); }, text); } unescape(text) { return tokens.reduce((text, tokenName, index) => { const token = this.options[tokenName]; if (!token) return text; return text.replace(new RegExp(`&${index + 1}:`, 'g'), token); }, text); } } exports.Multiplexor = Multiplexor; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMvTXVsdGlwbGV4b3IuanMiLCJuYW1lcyI6WyJfc3RyaW5ncyIsInJlcXVpcmUiLCJ0b2tlbnMiLCJNdWx0aXBsZXhvciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsInRva2VuU3RhcnQiLCJ0b2tlbkVuZCIsInRva2VuQ2xvc2UiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwia2V5IiwiaXRlbSIsInNlYXJjaCIsIkVycm9yIiwiZW5jb2RlIiwiZGF0YSIsInN0YXJ0IiwiZW5kIiwiY2xvc2UiLCJtYXAiLCJpZCIsInRleHQiLCJlc2NhcGUiLCJqb2luIiwiZGVjb2RlIiwicGF0dGVybiIsIm1hdGNoU2V0IiwibWF0Y2hBbGwiLCJSZWdFeHAiLCJyZXN1bHQiLCJtYXRjaCIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwidW5lc2NhcGUiLCJyZWR1Y2UiLCJ0b2tlbk5hbWUiLCJpbmRleCIsInRva2VuIiwicmVwbGFjZSIsImVzY2FwZVJlZ0V4cCIsImV4cG9ydHMiXSwic291cmNlcyI6WyJ1dGlscy9NdWx0aXBsZXhvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICcuL3N0cmluZ3MnO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG5cdHRva2VuU3RhcnQ/OiBzdHJpbmc7XG5cdHRva2VuRW5kPzogc3RyaW5nO1xuXHR0b2tlbkNsb3NlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVGV4dENvbnRhaW5lciB7XG5cdGlkOiBzdHJpbmc7XG5cdHRleHQ6IHN0cmluZztcbn1cblxuY29uc3QgdG9rZW5zID0gWyd0b2tlblN0YXJ0JywgJ3Rva2VuRW5kJywgJ3Rva2VuQ2xvc2UnXSBhcyBjb25zdDtcblxuLyoqXG4gKiBVdGlsIGZvciBwYWNrIG11bHRpcGxlIHJlcXVlc3RzIHRvIG9uZVxuICpcbiAqIEl0J3MganVzdCBlbmNvZGUvZGVjb2RlIGFsbCB0ZXh0cyB3aXRoIGN1c3RvbSBzZXBhcmF0aW9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIE11bHRpcGxleG9yIHtcblx0cHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBPcHRpb25zID0ge1xuXHRcdHRva2VuU3RhcnQ6ICc8Jyxcblx0XHR0b2tlbkVuZDogJz4nLFxuXHRcdHRva2VuQ2xvc2U6ICcvJyxcblx0fTtcblxuXHQvLyBwcml2YXRlIHJlYWRvbmx5IHRva2VuOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuXHRjb25zdHJ1Y3RvcihvcHRpb25zPzogT3B0aW9ucykge1xuXHRcdGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFsndG9rZW5TdGFydCcsICd0b2tlbkVuZCcsICd0b2tlbkNsb3NlJ10uZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRcdGNvbnN0IGl0ZW0gPSBvcHRpb25zW2tleSBhcyBrZXlvZiBPcHRpb25zXTtcblx0XHRcdFx0aWYgKGl0ZW0gIT09IHVuZGVmaW5lZCAmJiBpdGVtLnNlYXJjaCgvJnw6LykgIT09IC0xKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBPcHRpb24gJHtrZXl9IGhhcyBkaXNhbGxvdyBjaGFyYWN0ZXJzICgmIG9yIDopYCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRmb3IgKGNvbnN0IGtleSBpbiBvcHRpb25zKSB7XG5cdFx0XHRcdHRoaXMub3B0aW9uc1trZXkgYXMga2V5b2YgT3B0aW9uc10gPSBvcHRpb25zW2tleSBhcyBrZXlvZiBPcHRpb25zXTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZW5jb2RlKGRhdGE6IFRleHRDb250YWluZXJbXSkge1xuXHRcdGNvbnN0IHtcblx0XHRcdHRva2VuU3RhcnQ6IHN0YXJ0ID0gJycsXG5cdFx0XHR0b2tlbkVuZDogZW5kID0gJycsXG5cdFx0XHR0b2tlbkNsb3NlOiBjbG9zZSA9ICcnLFxuXHRcdH0gPSB0aGlzLm9wdGlvbnM7XG5cblx0XHRyZXR1cm4gZGF0YVxuXHRcdFx0Lm1hcChcblx0XHRcdFx0KHsgaWQsIHRleHQgfSkgPT5cblx0XHRcdFx0XHRzdGFydCArIGlkICsgZW5kICsgdGhpcy5lc2NhcGUodGV4dCkgKyBzdGFydCArIGNsb3NlICsgaWQgKyBlbmQsXG5cdFx0XHQpXG5cdFx0XHQuam9pbignICcpO1xuXHR9XG5cblx0cHVibGljIGRlY29kZSh0ZXh0OiBzdHJpbmcpIHtcblx0XHRjb25zdCB7XG5cdFx0XHR0b2tlblN0YXJ0OiBzdGFydCA9ICcnLFxuXHRcdFx0dG9rZW5FbmQ6IGVuZCA9ICcnLFxuXHRcdFx0dG9rZW5DbG9zZTogY2xvc2UgPSAnJyxcblx0XHR9ID0gdGhpcy5vcHRpb25zO1xuXG5cdFx0Y29uc3QgcGF0dGVybiA9IGAke3N0YXJ0fVxcXFxzKihcXFxcZCspXFxcXHMqJHtlbmR9KFtcXFxcd1xcXFxXXSs/KSR7c3RhcnR9XFxcXHMqJHtjbG9zZX1cXFxccypcXFxcMVxcXFxzKiR7ZW5kfWA7XG5cdFx0Y29uc3QgbWF0Y2hTZXQgPSB0ZXh0Lm1hdGNoQWxsKG5ldyBSZWdFeHAocGF0dGVybiwgJ2dtJykpO1xuXG5cdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cdFx0bGV0IG1hdGNoID0gbWF0Y2hTZXQubmV4dCgpO1xuXHRcdHdoaWxlICghbWF0Y2guZG9uZSkge1xuXHRcdFx0cmVzdWx0LnB1c2goe1xuXHRcdFx0XHRpZDogbWF0Y2gudmFsdWVbMV0sXG5cdFx0XHRcdHRleHQ6IHRoaXMudW5lc2NhcGUobWF0Y2gudmFsdWVbMl0pLFxuXHRcdFx0fSk7XG5cdFx0XHRtYXRjaCA9IG1hdGNoU2V0Lm5leHQoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0cHJpdmF0ZSBlc2NhcGUodGV4dDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRva2Vucy5yZWR1Y2UoKHRleHQsIHRva2VuTmFtZSwgaW5kZXgpID0+IHtcblx0XHRcdGNvbnN0IHRva2VuID0gdGhpcy5vcHRpb25zW3Rva2VuTmFtZV07XG5cblx0XHRcdGlmICghdG9rZW4pIHJldHVybiB0ZXh0O1xuXG5cdFx0XHRyZXR1cm4gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoZXNjYXBlUmVnRXhwKHRva2VuKSwgJ2cnKSwgYCYke2luZGV4ICsgMX06YCk7XG5cdFx0fSwgdGV4dCk7XG5cdH1cblxuXHRwcml2YXRlIHVuZXNjYXBlKHRleHQ6IHN0cmluZykge1xuXHRcdHJldHVybiB0b2tlbnMucmVkdWNlKCh0ZXh0LCB0b2tlbk5hbWUsIGluZGV4KSA9PiB7XG5cdFx0XHRjb25zdCB0b2tlbiA9IHRoaXMub3B0aW9uc1t0b2tlbk5hbWVdO1xuXG5cdFx0XHRpZiAoIXRva2VuKSByZXR1cm4gdGV4dDtcblxuXHRcdFx0cmV0dXJuIHRleHQucmVwbGFjZShuZXcgUmVnRXhwKGAmJHtpbmRleCArIDF9OmAsICdnJyksIHRva2VuKTtcblx0XHR9LCB0ZXh0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFhQSxNQUFNQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBVTtBQUVoRTs7Ozs7QUFLTSxNQUFPQyxXQUFXO0VBT3ZCO0VBQ0FDLFlBQVlDLE9BQWlCO0lBUFosS0FBQUEsT0FBTyxHQUFZO01BQ25DQyxVQUFVLEVBQUUsR0FBRztNQUNmQyxRQUFRLEVBQUUsR0FBRztNQUNiQyxVQUFVLEVBQUU7S0FDWjtJQUlBLElBQUlILE9BQU8sS0FBS0ksU0FBUyxFQUFFO01BQzFCLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQ0MsT0FBTyxDQUFFQyxHQUFHLElBQUk7UUFDeEQsTUFBTUMsSUFBSSxHQUFHUCxPQUFPLENBQUNNLEdBQW9CLENBQUM7UUFDMUMsSUFBSUMsSUFBSSxLQUFLSCxTQUFTLElBQUlHLElBQUksQ0FBQ0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1VBQ3BELE1BQU0sSUFBSUMsS0FBSyxDQUFDLFVBQVVILEdBQUcs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