UNPKG

anylang

Version:

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

63 lines (61 loc) 8.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepExploreArray = deepExploreArray; exports.visitArrayItems = exports.parseXMLResponse = exports.encodeForBatch = void 0; var _xpath = _interopRequireDefault(require("xpath")); var _xmldom = require("@xmldom/xmldom"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const encodeForBatch = textList => { return textList.map((text, i) => `<pre><a i="${i}">${text}</a></pre>`); }; exports.encodeForBatch = encodeForBatch; const parseXMLResponse = text => { let doc; try { doc = new _xmldom.DOMParser().parseFromString(text, _xmldom.MIME_TYPE.XML_APPLICATION); } catch (err) { console.error(err); return null; } const nodesWithTranslation = _xpath.default.select('//pre/*[not(self::i)]', doc); if (!nodesWithTranslation) return null; if (!Array.isArray(nodesWithTranslation)) throw new Error('Unexpected XML parsed result'); return nodesWithTranslation.map(node => { // Select text in child nodes or in self const textNodes = _xpath.default.select('descendant-or-self::*/text()', node); if (!Array.isArray(textNodes)) return ''; if (textNodes.length > 1) { console.debug('More than one text node found'); } return textNodes.length === 0 ? '' : textNodes.map(node => node.nodeValue).join(' '); }).join(' '); }; exports.parseXMLResponse = parseXMLResponse; function deepExploreArray(obj, depth) { let currentDepth = 0; let currentObj = obj; while (depth > currentDepth) { if (!Array.isArray(currentObj)) { throw new TypeError('Error while explore array on depth #' + String(currentDepth)); } currentObj = currentObj[0]; currentDepth++; } return currentObj; } /** * Visit each item in array recursively */ const visitArrayItems = (arr, visitor) => { arr.forEach(obj => { if (Array.isArray(obj)) { visitArrayItems(obj, visitor); } else { visitor(obj); } }); }; exports.visitArrayItems = visitArrayItems; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvcnMvR29vZ2xlVHJhbnNsYXRvci91dGlscy5qcyIsIm5hbWVzIjpbIl94cGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3htbGRvbSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImVuY29kZUZvckJhdGNoIiwidGV4dExpc3QiLCJtYXAiLCJ0ZXh0IiwiaSIsImV4cG9ydHMiLCJwYXJzZVhNTFJlc3BvbnNlIiwiZG9jIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwiTUlNRV9UWVBFIiwiWE1MX0FQUExJQ0FUSU9OIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwibm9kZXNXaXRoVHJhbnNsYXRpb24iLCJ4cGF0aCIsInNlbGVjdCIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwibm9kZSIsInRleHROb2RlcyIsImxlbmd0aCIsImRlYnVnIiwibm9kZVZhbHVlIiwiam9pbiIsImRlZXBFeHBsb3JlQXJyYXkiLCJvYmoiLCJkZXB0aCIsImN1cnJlbnREZXB0aCIsImN1cnJlbnRPYmoiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJ2aXNpdEFycmF5SXRlbXMiLCJhcnIiLCJ2aXNpdG9yIiwiZm9yRWFjaCJdLCJzb3VyY2VzIjpbInRyYW5zbGF0b3JzL0dvb2dsZVRyYW5zbGF0b3IvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHhwYXRoIGZyb20gJ3hwYXRoJztcbmltcG9ydCB7IERvY3VtZW50LCBET01QYXJzZXIsIE1JTUVfVFlQRSB9IGZyb20gJ0B4bWxkb20veG1sZG9tJztcblxuZXhwb3J0IGNvbnN0IGVuY29kZUZvckJhdGNoID0gKHRleHRMaXN0OiBzdHJpbmdbXSkgPT4ge1xuXHRyZXR1cm4gdGV4dExpc3QubWFwKCh0ZXh0LCBpKSA9PiBgPHByZT48YSBpPVwiJHtpfVwiPiR7dGV4dH08L2E+PC9wcmU+YCk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VYTUxSZXNwb25zZSA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcblx0bGV0IGRvYzogRG9jdW1lbnQ7XG5cdHRyeSB7XG5cdFx0ZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh0ZXh0LCBNSU1FX1RZUEUuWE1MX0FQUExJQ0FUSU9OKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Y29uc3Qgbm9kZXNXaXRoVHJhbnNsYXRpb24gPSB4cGF0aC5zZWxlY3QoXG5cdFx0Jy8vcHJlLypbbm90KHNlbGY6OmkpXScsXG5cdFx0ZG9jIGFzIHVua25vd24gYXMgTm9kZSxcblx0KTtcblxuXHRpZiAoIW5vZGVzV2l0aFRyYW5zbGF0aW9uKSByZXR1cm4gbnVsbDtcblxuXHRpZiAoIUFycmF5LmlzQXJyYXkobm9kZXNXaXRoVHJhbnNsYXRpb24pKVxuXHRcdHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBYTUwgcGFyc2VkIHJlc3VsdCcpO1xuXG5cdHJldHVybiBub2Rlc1dpdGhUcmFuc2xhdGlvblxuXHRcdC5tYXAoKG5vZGUpID0+IHtcblx0XHRcdC8vIFNlbGVjdCB0ZXh0IGluIGNoaWxkIG5vZGVzIG9yIGluIHNlbGZcblx0XHRcdGNvbnN0IHRleHROb2RlcyA9IHhwYXRoLnNlbGVjdCgnZGVzY2VuZGFudC1vci1zZWxmOjoqL3RleHQoKScsIG5vZGUpO1xuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHRleHROb2RlcykpIHJldHVybiAnJztcblxuXHRcdFx0aWYgKHRleHROb2Rlcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdGNvbnNvbGUuZGVidWcoJ01vcmUgdGhhbiBvbmUgdGV4dCBub2RlIGZvdW5kJyk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0ZXh0Tm9kZXMubGVuZ3RoID09PSAwXG5cdFx0XHRcdD8gJydcblx0XHRcdFx0OiB0ZXh0Tm9kZXMubWFwKChub2RlKSA9PiBub2RlLm5vZGVWYWx1ZSkuam9pbignICcpO1xuXHRcdH0pXG5cdFx0LmpvaW4oJyAnKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXhwbG9yZUFycmF5KG9iajogdW5rbm93biwgZGVwdGg6IG51bWJlcikge1xuXHRsZXQgY3VycmVudERlcHRoID0gMDtcblx0bGV0IGN1cnJlbnRPYmogPSBvYmo7XG5cdHdoaWxlIChkZXB0aCA+IGN1cnJlbnREZXB0aCkge1xuXHRcdGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50T2JqKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcblx0XHRcdFx0J0Vycm9yIHdoaWxlIGV4cGxvcmUgYXJyYXkgb24gZGVwdGggIycgKyBTdHJpbmcoY3VycmVudERlcHRoKSxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Y3VycmVudE9iaiA9IGN1cnJlbnRPYmpbMF07XG5cdFx0Y3VycmVudERlcHRoKys7XG5cdH1cblxuXHRyZXR1cm4gY3VycmVudE9iajtcbn1cblxuLyoqXG4gKiBWaXNpdCBlYWNoIGl0ZW0gaW4gYXJyYXkgcmVjdXJzaXZlbHlcbiAqL1xuZXhwb3J0IGNvbnN0IHZpc2l0QXJyYXlJdGVtcyA9IChhcnI6IHVua25vd25bXSwgdmlzaXRvcjogKG9iajogdW5rbm93bikgPT4gdm9pZCkgPT4ge1xuXHRhcnIuZm9yRWFjaCgob2JqKSA9PiB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHRcdFx0dmlzaXRBcnJheUl0ZW1zKG9iaiwgdmlzaXRvcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZpc2l0b3Iob2JqKTtcblx0XHR9XG5cdH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUFnRSxTQUFBRCx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUV6RCxN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