summaryrefslogtreecommitdiff
path: root/utilities/node_modules/translatte/token.js
diff options
context:
space:
mode:
Diffstat (limited to 'utilities/node_modules/translatte/token.js')
-rwxr-xr-xutilities/node_modules/translatte/token.js120
1 files changed, 120 insertions, 0 deletions
diff --git a/utilities/node_modules/translatte/token.js b/utilities/node_modules/translatte/token.js
new file mode 100755
index 0000000..71f360b
--- /dev/null
+++ b/utilities/node_modules/translatte/token.js
@@ -0,0 +1,120 @@
+/**
+ * Last update: 2018/11/24
+ * https://translate.google.com/translate/releases/twsfe_w_20160620_RC00/r/js/desktop_module_main.js
+ *
+ * Everything between 'BEGIN' and 'END' was copied from the url above.
+ */
+
+var got = require('got');
+var Configstore = require('configstore');
+
+/* eslint-disable */
+// BEGIN
+
+function sM(a) {
+ var b;
+ if (null !== yr)
+ b = yr;
+ else {
+ b = wr(String.fromCharCode(84));
+ var c = wr(String.fromCharCode(75));
+ b = [b(), b()];
+ b[1] = c();
+ b = (yr = window[b.join(c())] || "") || ""
+ }
+ var d = wr(String.fromCharCode(116))
+ , c = wr(String.fromCharCode(107))
+ , d = [d(), d()];
+ d[1] = c();
+ c = "&" + d.join("") + "=";
+ d = b.split(".");
+ b = Number(d[0]) || 0;
+ for (var e = [], f = 0, g = 0; g < a.length; g++) {
+ var l = a.charCodeAt(g);
+ 128 > l ? e[f++] = l : (2048 > l ? e[f++] = l >> 6 | 192 : (55296 === (l & 64512) && g + 1 < a.length && 56320 === (a.charCodeAt(g + 1) & 64512) ? (l = 65536 + ((l & 1023) << 10) + (a.charCodeAt(++g) & 1023),
+ e[f++] = l >> 18 | 240,
+ e[f++] = l >> 12 & 63 | 128) : e[f++] = l >> 12 | 224,
+ e[f++] = l >> 6 & 63 | 128),
+ e[f++] = l & 63 | 128)
+ }
+ a = b;
+ for (f = 0; f < e.length; f++)
+ a += e[f],
+ a = xr(a, "+-a^+6");
+ a = xr(a, "+-3^+b+-f");
+ a ^= Number(d[1]) || 0;
+ 0 > a && (a = (a & 2147483647) + 2147483648);
+ a %= 1E6;
+ return c + (a.toString() + "." + (a ^ b))
+}
+
+var yr = null;
+var wr = function (a) {
+ return function () {
+ return a
+ }
+}
+ , xr = function (a, b) {
+ for (var c = 0; c < b.length - 2; c += 3) {
+ var d = b.charAt(c + 2)
+ , d = "a" <= d ? d.charCodeAt(0) - 87 : Number(d)
+ , d = "+" === b.charAt(c + 1) ? a >>> d : a << d;
+ a = "+" === b.charAt(c) ? a + d & 4294967295 : a ^ d
+ }
+ return a
+};
+
+// END
+/* eslint-enable */
+
+var config = new Configstore('google-translate-api');
+
+var window = {
+ TKK: config.get('TKK') || '422854.923862967'
+};
+
+function updateTKK(opts) {
+ opts = opts || {tld: 'com', proxy: {}, headers: {}};
+ return new Promise(function (resolve, reject) {
+ var now = Math.floor(Date.now() / 3600000);
+
+ if (Number(window.TKK.split('.')[0]) === now) {
+ resolve();
+ } else {
+ got('https://translate.google.' + opts.tld, {...opts.proxy, headers: opts.headers, timeout: 2000, retry: 0}).then(function (res) {
+ var code = res.body.match(/TKK='.*?';/g);
+
+ if (code) {
+ eval(code[0]);
+ /* eslint-disable no-undef */
+ if (typeof TKK !== 'undefined') {
+ window.TKK = TKK;
+ config.set('TKK', TKK);
+ }
+ /* eslint-enable no-undef */
+ }
+
+ /**
+ * Note: If the regex or the eval fail, there is no need to worry. The server will accept
+ * relatively old seeds.
+ */
+
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ }
+ });
+}
+
+function get(text, opts) {
+ return updateTKK(opts).then(function () {
+ var tk = sM(text);
+ tk = tk.replace('&tk=', '');
+ return {name: 'tk', value: tk};
+ }).catch(function () {
+ return null;
+ });
+}
+
+module.exports.get = get; \ No newline at end of file