dummie-tools
Version:
This is a set of my idea tools
3 lines • 4.53 kB
JavaScript
;var w=require('fs'),c=require('path'),v=require('readline'),googleTranslateApi=require('@vitalets/google-translate-api'),puppeteerCore=require('puppeteer-core');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var w__namespace=/*#__PURE__*/_interopNamespace(w);var c__namespace=/*#__PURE__*/_interopNamespace(c);var v__namespace=/*#__PURE__*/_interopNamespace(v);var C=new Set(["node_modules","next","dist","build",".git",".github"]),y=new Map;async function $(t){if(y.has(t))return y.get(t);let n=v__namespace.createInterface({input:process.stdin,output:process.stdout});return new Promise(i=>{n.question(`Skip directory "${t}"? (y/n): `,o=>{let e=o.toLowerCase().startsWith("y");y.set(t,e),n.close(),i(e);});})}async function D(t,n,i,o){let e=new Set(i);if(!o)return e;async function l(u,f=0){if(f>=n)return;let d;try{d=await w__namespace.promises.readdir(u);}catch{return}for(let p of d){let g=c__namespace.join(u,p);try{if((await w__namespace.promises.stat(g)).isDirectory()){let a=c__namespace.relative(t,g);C.has(p)&&!e.has(a)?await $(p)?e.add(a):await l(g,f+1):await l(g,f+1);}}catch{}}}return await l(t),e}async function S(t,n,i,o="",e=0){let l=c__namespace.basename(c__namespace.resolve(t));if(e===0&&console.log(l),e>=n)return;let u;try{u=await w__namespace.promises.readdir(t);}catch{return}let p=(await Promise.all(u.map(async r=>{let a=c__namespace.join(t,r);try{let m=await w__namespace.promises.stat(a);return {entry:r,fullPath:a,stats:m,isDirectory:m.isDirectory()}}catch{return null}}))).filter(r=>r!==null).sort((r,a)=>r.isDirectory&&!a.isDirectory?-1:!r.isDirectory&&a.isDirectory?1:r.entry.localeCompare(a.entry)).filter(({entry:r})=>!i.has(r)),g=p.length-1;for(let r=0;r<p.length;r++){let{entry:a,fullPath:m,isDirectory:k}=p[r],h=r===g,E=h?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",P=o+(h?" ":"\u2502 "),T=o+E;k?(console.log(`${T}${a}`),e+1===n?console.log(`${P}\u2514\u2500\u2500 [...]`):await S(m,n,i,P,e+1)):console.log(`${T}${a}`);}}async function I({dirPath:t,maxDepth:n,skipDirs:i=new Set,interactive:o=true}){let e=await D(t,n,i,o);await S(t,n,e);}var x=process.env.CHROME_PATH||(process.platform==="win32"?"C:/Program Files/Google/Chrome/Application/chrome.exe":process.platform==="darwin"?"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome":"/usr/bin/google-chrome"),H=process.env.DEBUG==="true"||process.argv.includes("--debug");function s(...t){H&&console.log("[DEBUG]",...t);}async function R(t,n="en",i="vi"){try{s(`Attempting translation via HTTP API: "${t}" from ${n} to ${i}`);let o=await googleTranslateApi.translate(t,{from:n,to:i});return s(`Received translation: "${o.text}"`),s("HTTP translation successful"),o.text}catch(o){s("HTTP translate failed, falling back to Puppeteer:",o),!process.env.QUIET&&!process.argv.includes("--quiet")&&console.warn("API translation failed, falling back to browser-based translation. This may take longer...");try{s(`Looking for Chrome at: ${x}`);let e=await puppeteerCore.launch({executablePath:x,headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-dev-shm-usage"]});try{s("Browser launched successfully");let l=await e.newPage();await l.setDefaultNavigationTimeout(3e4);let u=`https://translate.google.com/?sl=${n}&tl=${i}&text=${encodeURIComponent(t)}&op=translate`;s(`Navigating to: ${u}`),await l.goto(u,{waitUntil:"networkidle2"}),s("Page loaded, waiting for translation element"),await l.waitForSelector('span[jsname="W297wb"]',{timeout:1e4}),s("Translation element found, extracting result");let f=await l.evaluate(()=>document.querySelector('span[jsname="W297wb"]')?.textContent||"");if(!f)throw s("Empty translation result received"),new Error("Translation failed: Empty result received from Google Translate");return s(`Translation successful: "${f}"`),f}finally{s("Closing browser"),await e.close();}}catch(e){throw s("Browser translation failed:",e),new Error(`Translation failed: ${e instanceof Error?e.message:String(e)}`)}}}function L(t){return typeof t=="string"}function N(t){return typeof t=="number"&&!isNaN(t)}function W(t){return typeof t=="object"&&t!==null}
exports.isNumber=N;exports.isObject=W;exports.isString=L;exports.printTree=I;exports.translateText=R;//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map