UNPKG

woolball-client

Version:

Client-side library for Woolball enabling secure browser resource sharing for distributed AI task processing

54 lines (53 loc) 2.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.translation = translation; async function translation(data) { const { input, model, srcLang, tgtLang, provider, ...options } = data; if (!input || !srcLang || !tgtLang) { throw new Error("Required parameters: input, srcLang and tgtLang"); } if (provider === 'prompt-api' && 'Translator' in self) { try { const translatorCapabilities = await self.Translator.availability({ sourceLanguage: srcLang, targetLanguage: tgtLang, }); if (translatorCapabilities === 'available' || translatorCapabilities === 'downloadable') { const translator = await self.Translator.create({ sourceLanguage: srcLang, targetLanguage: tgtLang, monitor(m) { m.addEventListener('downloadprogress', (e) => { console.log(`Downloaded ${e.loaded * 100}%`); }); }, }); const translatedText = await translator.translate(input); return { translatedText }; } } catch (error) { console.error('Chrome Translator API error:', error); } } const { pipeline, env } = await import('@huggingface/transformers'); env.allowLocalModels = false; const { getTransformersDevice } = await import('../../../utils/environment.js'); const pipe = await pipeline('translation', model, { dtype: data.dtype, device: getTransformersDevice('wasm'), }); const translationOptions = { ...options }; translationOptions.src_lang = srcLang; translationOptions.tgt_lang = tgtLang; const result = await pipe(input, translationOptions); let translatedText = ''; if (Array.isArray(result) && result.length > 0) { const firstResult = result[0]; translatedText = firstResult.translation_text || ''; } await pipe.dispose(); return { translatedText }; }