@yxw007/translate 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- // translate v0.4.0 Copyright (c) 2025 Potter<aa4790139@gmail.com> and contributors
1
+ // translate v0.4.1 Copyright (c) 2025 Potter<aa4790139@gmail.com> and contributors
2
2
  import 'fs/promises';
3
3
  import 'fs';
4
4
  import 'path';
@@ -206,7 +206,7 @@ function isOverMaxCharacterNum(text, max_character_num) {
206
206
  return total > max_character_num;
207
207
  }
208
208
 
209
- function google$1(options) {
209
+ function google(options) {
210
210
  const base = "https://translate.googleapis.com/translate_a/single";
211
211
  return {
212
212
  name: "google",
@@ -257,7 +257,7 @@ function google$1(options) {
257
257
  /**
258
258
  * Azure translate documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/translator/reference/v3-0-translate
259
259
  */
260
- function azure$2(options) {
260
+ function azure$1(options) {
261
261
  const { key, region } = options;
262
262
  const name = "azure";
263
263
  const checkOptions = () => {
@@ -307,8 +307,8 @@ function azure$2(options) {
307
307
  },
308
308
  async checkLanguage(text) {
309
309
  checkOptions();
310
- const detectUrl = "https://api.cognitive.microsofttranslator.com/detect?api-version=3.0";
311
- const res = await fetch(detectUrl, {
310
+ const url = `${base}&to=en`;
311
+ const res = await fetch(url, {
312
312
  method: "POST",
313
313
  headers: {
314
314
  "Content-Type": "application/json; charset=UTF-8",
@@ -320,20 +320,23 @@ function azure$2(options) {
320
320
  if (!res.ok) {
321
321
  throw await throwResponseError(this.name, res);
322
322
  }
323
- const response = await res.json();
324
- if (!response || !Array.isArray(response) || response.length === 0) {
325
- throw new TranslationError(this.name, "Check language fail! No result returned");
323
+ const bodyRes = await res.json();
324
+ if (bodyRes.error) {
325
+ throw new CheckLanguageError(this.name, `checkLanguage fail ! code: ${bodyRes.error.code}, message: ${bodyRes.error.message} \n Go to https://learn.microsoft.com/zh-cn/azure/ai-services/translator/text-translation/reference/v3/translate view details`);
326
326
  }
327
- const detection = response[0];
328
- if (!detection.language) {
329
- throw new TranslationError(this.name, "Check language fail! Language not detected");
327
+ if (!bodyRes || !Array.isArray(bodyRes) || bodyRes.length === 0) {
328
+ throw new CheckLanguageError(this.name, "Check language fail! No result returned");
330
329
  }
331
- return detection.language;
330
+ const detectedLanguage = bodyRes[0]?.detectedLanguage?.language;
331
+ if (!detectedLanguage) {
332
+ throw new CheckLanguageError(this.name, "Check language fail! Language not detected");
333
+ }
334
+ return detectedLanguage;
332
335
  },
333
336
  };
334
337
  }
335
338
 
336
- function amazon$2(options) {
339
+ function amazon$1(options) {
337
340
  const { region, accessKeyId, secretAccessKey } = options;
338
341
  const name = "amazon";
339
342
  const checkOptions = () => {
@@ -1591,7 +1594,7 @@ function baidu$2(options) {
1591
1594
  };
1592
1595
  }
1593
1596
 
1594
- function deepl$3(options) {
1597
+ function deepl$2(options) {
1595
1598
  const { key } = options;
1596
1599
  const name = "deepl";
1597
1600
  const checkOptions = () => {
@@ -1805,7 +1808,7 @@ function buildAuthorization({ secretId, secretKey, service, host, payload, httpR
1805
1808
  headers["X-TC-Region"] = region;
1806
1809
  return headers;
1807
1810
  }
1808
- function tencent$3(options) {
1811
+ function tencent$2(options) {
1809
1812
  const { secretId, secretKey, region = "ap-guangzhou" } = options;
1810
1813
  const name = "tencent";
1811
1814
  const host = "tmt.tencentcloudapi.com";
@@ -1870,7 +1873,9 @@ function tencent$3(options) {
1870
1873
  async checkLanguage(text) {
1871
1874
  checkOptions();
1872
1875
  const payloadObj = {
1873
- Text: text,
1876
+ SourceText: text,
1877
+ Source: "auto",
1878
+ Target: "en",
1874
1879
  ProjectId: 0,
1875
1880
  };
1876
1881
  const payload = JSON.stringify(payloadObj);
@@ -1881,7 +1886,7 @@ function tencent$3(options) {
1881
1886
  host,
1882
1887
  payload,
1883
1888
  httpRequestMethod: "POST",
1884
- action: "LanguageDetect",
1889
+ action,
1885
1890
  apiVersion,
1886
1891
  region,
1887
1892
  });
@@ -1896,9 +1901,9 @@ function tencent$3(options) {
1896
1901
  }
1897
1902
  const data = await res.json();
1898
1903
  if (data.Response?.Error) {
1899
- throw new CheckLanguageError(name, `Tencent language detect fail: ${data.Response.Error.Code}, ${data.Response.Error.Message} \n Go to https://cloud.tencent.com/document/product/551/15620 view details`);
1904
+ throw new CheckLanguageError(name, `Tencent language detect fail: ${data.Response.Error.Code}, ${data.Response.Error.Message} \n Go to https://cloud.tencent.com/document/product/551/15619 view details`);
1900
1905
  }
1901
- const detectedLanguage = data.Response?.Lang;
1906
+ const detectedLanguage = data.Response?.Source;
1902
1907
  if (!detectedLanguage) {
1903
1908
  throw new CheckLanguageError(name, "Language detect fail! No result returned");
1904
1909
  }
@@ -1914,16 +1919,16 @@ function tencent$3(options) {
1914
1919
  }
1915
1920
 
1916
1921
  const engines = {
1917
- google: google$1,
1918
- azure: azure$2,
1919
- amazon: amazon$2,
1922
+ google,
1923
+ azure: azure$1,
1924
+ amazon: amazon$1,
1920
1925
  baidu: baidu$2,
1921
- deepl: deepl$3,
1926
+ deepl: deepl$2,
1922
1927
  openai: openai$1,
1923
- tencent: tencent$3,
1928
+ tencent: tencent$2,
1924
1929
  };
1925
1930
 
1926
- var azure$1 = {
1931
+ var azure = {
1927
1932
  Afrikaans: "af",
1928
1933
  Albanian: "sq",
1929
1934
  Amharic: "am",
@@ -2518,7 +2523,7 @@ var baidu$1 = {
2518
2523
  Zulu: "zul",
2519
2524
  };
2520
2525
 
2521
- var deepl$2 = {
2526
+ var deepl$1 = {
2522
2527
  English: "en",
2523
2528
  Bulgarian: "bg",
2524
2529
  Chinese: "zh",
@@ -2554,7 +2559,7 @@ var deepl$2 = {
2554
2559
  Ukrainian: "uk",
2555
2560
  };
2556
2561
 
2557
- var tencent$2 = {
2562
+ var tencent$1 = {
2558
2563
  Auto: "auto",
2559
2564
  Chinese: "zh",
2560
2565
  TraditionalChinese: "zh-TW",
@@ -2576,7 +2581,7 @@ var tencent$2 = {
2576
2581
  Hindi: "hi",
2577
2582
  };
2578
2583
 
2579
- var amazon$1 = {
2584
+ var amazon = {
2580
2585
  Afrikaans: "af",
2581
2586
  Albanian: "sq",
2582
2587
  Amharic: "am",
@@ -2655,16 +2660,16 @@ var amazon$1 = {
2655
2660
  };
2656
2661
 
2657
2662
  const originLanguages = {
2658
- azure: azure$1,
2663
+ azure: azure,
2659
2664
  google: openai,
2660
2665
  baidu: baidu$1,
2661
- deepl: deepl$2,
2662
- amazon: amazon$1,
2666
+ deepl: deepl$1,
2667
+ amazon: amazon,
2663
2668
  openai: openai,
2664
- tencent: tencent$2,
2669
+ tencent: tencent$1,
2665
2670
  };
2666
2671
 
2667
- var deepl$1 = {
2672
+ var deepl = {
2668
2673
  "American English": "en-US",
2669
2674
  "Brazilian Portuguese": "pt-BR",
2670
2675
  "British English": "en-GB",
@@ -2703,7 +2708,7 @@ var deepl$1 = {
2703
2708
  Ukrainian: "uk",
2704
2709
  };
2705
2710
 
2706
- var tencent$1 = {
2711
+ var tencent = {
2707
2712
  "Simplified Chinese": "zh",
2708
2713
  "Traditional Chinese": "zh-TW",
2709
2714
  English: "en",
@@ -2725,13 +2730,13 @@ var tencent$1 = {
2725
2730
  };
2726
2731
 
2727
2732
  const targetLanguages = {
2728
- azure: azure$1,
2733
+ azure: azure,
2729
2734
  google: openai,
2730
2735
  baidu: baidu$1,
2731
- deepl: deepl$1,
2732
- amazon: amazon$1,
2736
+ deepl: deepl,
2737
+ amazon: amazon,
2733
2738
  openai: openai,
2734
- tencent: tencent$1,
2739
+ tencent: tencent,
2735
2740
  };
2736
2741
 
2737
2742
  var baidu = {
@@ -2743,180 +2748,9 @@ var baidu = {
2743
2748
  Russian: "ru",
2744
2749
  };
2745
2750
 
2746
- var tencent = {
2747
- Chinese: "zh",
2748
- English: "en",
2749
- Japanese: "jp",
2750
- Korean: "kr",
2751
- German: "de",
2752
- French: "fr",
2753
- Spanish: "es",
2754
- Italian: "it",
2755
- Turkish: "tr",
2756
- Russian: "ru",
2757
- Portuguese: "pt",
2758
- Vietnamese: "vi",
2759
- Indonesian: "id",
2760
- Malay: "ms",
2761
- Thai: "th",
2762
- };
2763
-
2764
- var azure = {
2765
- Arabic: "ar",
2766
- Bengali: "bn",
2767
- Bulgarian: "bg",
2768
- Catalan: "ca",
2769
- Chinese: "zh-Hans",
2770
- "Chinese (Traditional)": "zh-Hant",
2771
- Croatian: "hr",
2772
- Czech: "cs",
2773
- Danish: "da",
2774
- Dutch: "nl",
2775
- English: "en",
2776
- Finnish: "fi",
2777
- French: "fr",
2778
- German: "de",
2779
- Greek: "el",
2780
- Hebrew: "he",
2781
- Hindi: "hi",
2782
- Hungarian: "hu",
2783
- Indonesian: "id",
2784
- Italian: "it",
2785
- Japanese: "ja",
2786
- Korean: "ko",
2787
- Malay: "ms",
2788
- "Norwegian Bokmål": "nb",
2789
- Persian: "fa",
2790
- Polish: "pl",
2791
- "Portugal (Brazil)": "pt",
2792
- Romanian: "ro",
2793
- Russian: "ru",
2794
- Slovak: "sk",
2795
- Spanish: "es",
2796
- Swedish: "sv",
2797
- Thai: "th",
2798
- Turkish: "tr",
2799
- Ukrainian: "uk",
2800
- Urdu: "ur",
2801
- Vietnamese: "vi",
2802
- };
2803
-
2804
- var amazon = {
2805
- Arabic: "ar",
2806
- Bengali: "bn",
2807
- Bulgarian: "bg",
2808
- Catalan: "ca",
2809
- Chinese: "zh-Hans",
2810
- "Chinese (Traditional)": "zh-Hant",
2811
- Croatian: "hr",
2812
- Czech: "cs",
2813
- Danish: "da",
2814
- Dutch: "nl",
2815
- English: "en",
2816
- Finnish: "fi",
2817
- French: "fr",
2818
- German: "de",
2819
- Greek: "el",
2820
- Hebrew: "he",
2821
- Hindi: "hi",
2822
- Hungarian: "hu",
2823
- Indonesian: "id",
2824
- Italian: "it",
2825
- Japanese: "ja",
2826
- Korean: "ko",
2827
- Malay: "ms",
2828
- Persian: "fa",
2829
- Polish: "pl",
2830
- "Portugal (Brazil)": "pt",
2831
- Romanian: "ro",
2832
- Russian: "ru",
2833
- Slovak: "sk",
2834
- Spanish: "es",
2835
- Swedish: "sv",
2836
- Thai: "th",
2837
- Turkish: "tr",
2838
- Ukrainian: "uk",
2839
- Urdu: "ur",
2840
- Vietnamese: "vi",
2841
- };
2842
-
2843
- var deepl = {
2844
- "American English": "en",
2845
- Bulgarian: "bg",
2846
- Chinese: "zh",
2847
- Czech: "cs",
2848
- Danish: "da",
2849
- Dutch: "nl",
2850
- Estonian: "et",
2851
- Finnish: "fi",
2852
- French: "fr",
2853
- German: "de",
2854
- Greek: "el",
2855
- Hungarian: "hu",
2856
- Icelandic: "is",
2857
- Indonesian: "id",
2858
- Irish: "ga",
2859
- Italian: "it",
2860
- Japanese: "ja",
2861
- Korean: "ko",
2862
- Latvian: "lv",
2863
- Lithuanian: "lt",
2864
- Maltese: "mt",
2865
- Norwegian: "nb",
2866
- Polish: "pl",
2867
- Portuguese: "pt",
2868
- Romanian: "ro",
2869
- Russian: "ru",
2870
- Slovak: "sk",
2871
- Slovenian: "sl",
2872
- Spanish: "es",
2873
- Swedish: "sv",
2874
- Turkish: "tr",
2875
- Ukrainian: "uk",
2876
- };
2877
-
2878
- var google = {
2879
- English: "en",
2880
- Bulgarian: "bg",
2881
- Chinese: "zh-cn",
2882
- Czech: "cs",
2883
- Danish: "da",
2884
- Dutch: "nl",
2885
- Estonian: "et",
2886
- Finnish: "fi",
2887
- French: "fr",
2888
- German: "de",
2889
- Greek: "el",
2890
- Hungarian: "hu",
2891
- Icelandic: "is",
2892
- Indonesian: "id",
2893
- Irish: "ga",
2894
- Italian: "it",
2895
- Japanese: "ja",
2896
- Korean: "ko",
2897
- Latvian: "lv",
2898
- Lithuanian: "lt",
2899
- Maltese: "mt",
2900
- Polish: "pl",
2901
- Portuguese: "pt",
2902
- Romanian: "ro",
2903
- Russian: "ru",
2904
- Slovak: "sk",
2905
- Slovenian: "sl",
2906
- Spanish: "es",
2907
- Swedish: "sv",
2908
- Turkish: "tr",
2909
- Ukrainian: "uk",
2910
- };
2911
-
2912
- const checkLanguages = {
2751
+ const checkLanguages = Object.assign(Object.assign({}, originLanguages), {
2913
2752
  baidu: baidu,
2914
- tencent: tencent,
2915
- azure: azure,
2916
- amazon: amazon,
2917
- deepl: deepl,
2918
- google: google,
2919
- };
2753
+ });
2920
2754
 
2921
2755
  function normalFromLanguage(from, engine) {
2922
2756
  if (from === "auto") {
@@ -3131,4 +2965,3 @@ var index = {
3131
2965
  };
3132
2966
 
3133
2967
  export { Cache, CheckLanguageError, OPEN_AI_MODELS, TranslationError, Translator, checkLanguages, index as default, engines, getLanguage, normalFromLanguage, normalToLanguage, originLanguages, targetLanguages, translator };
3134
- //# sourceMappingURL=index.esm.js.map
@@ -1,2 +1 @@
1
- import"fs/promises";import"fs";import"path";import{TranslateClient as a,TranslateTextCommand as e}from"@aws-sdk/client-translate";import n from"crypto";class t extends Error{region;constructor(a,e){super(e),this.region=a,Error.captureStackTrace(this,this.constructor)}}class i extends Error{region;constructor(a,e){super(e),this.region=a,Error.captureStackTrace(this,this.constructor)}}const r=["o1-preview","o1-preview-2024-09-12","o1-mini-2024-09-12","o1-mini","dall-e-2","gpt-3.5-turbo","gpt-3.5-turbo-0125","babbage-002","davinci-002","dall-e-3","text-embedding-3-large","gpt-3.5-turbo-16k","tts-1-hd-1106","text-embedding-ada-002","text-embedding-3-small","tts-1-hd","whisper-1","gpt-3.5-turbo-1106","gpt-3.5-turbo-instruct","gpt-4o-mini-2024-07-18","gpt-4o-mini","tts-1","tts-1-1106","gpt-3.5-turbo-instruct-0914"];class o{cache;constructor(){this.cache=new Map}set(a,e,n){if(n<=0)throw new Error("time must be greater than 0");const t=this.cache.get(a);t&&clearTimeout(t.timeout);const i={value:e,expire:Date.now()+n};isNaN(i.expire)||(i.timeout=setTimeout(()=>this.del(a),n)),this.cache.set(a,i)}get(a){return this.cache.get(a)}delete(a){let e=!0;const n=this.cache.get(a);return n?!isNaN(n.expire)&&n.expire<Date.now()?e=!1:clearTimeout(n.timeout):e=!1,e&&this.del(a),e}del(a){this.cache.delete(a)}clear(){for(const[,a]of this.cache.entries())clearTimeout(a.timeout);this.cache.clear()}}function s(a=""){return{log(...a){this.info(...a)},info(...e){console.log(`[translate ${a}]`,...e)},error(...e){console.error(`[translate ${a}]`,...e)},warn(...e){console.warn(`[translate ${a}]`,...e)}}}function c(){return"-".repeat(20)}function l(a,e="Translate fail ! "){return a instanceof TypeError?e+(a.cause?.message??a.message):e+a.message}async function h(a,e){let n=null;try{n=await e.json()}catch(a){}return new t(a,`Translate fail ! ${e.status}: ${e.statusText} ${n?.message??""}`)}var u="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function g(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}function d(a){if(a.__esModule)return a;var e=a.default;if("function"==typeof e){var n=function a(){return this instanceof a?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(a).forEach(function(e){var t=Object.getOwnPropertyDescriptor(a,e);Object.defineProperty(n,e,t.get?t:{enumerable:!0,get:function(){return a[e]}})}),n}var m={exports:{}};var p,f,w={exports:{}},y=d(Object.freeze({__proto__:null,default:{}}));function k(){return p||(p=1,w.exports=(a=a||function(a,e){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==u&&u.crypto&&(n=u.crypto),!n)try{n=y}catch(a){}var t=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(a){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(a){}}throw new Error("Native crypto module could not be used to get secure random number.")},i=Object.create||function(){function a(){}return function(e){var n;return a.prototype=e,n=new a,a.prototype=null,n}}(),r={},o=r.lib={},s=o.Base={extend:function(a){var e=i(this);return a&&e.mixIn(a),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var a=this.extend();return a.init.apply(a,arguments),a},init:function(){},mixIn:function(a){for(var e in a)a.hasOwnProperty(e)&&(this[e]=a[e]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},c=o.WordArray=s.extend({init:function(a,n){a=this.words=a||[],this.sigBytes=n!=e?n:4*a.length},toString:function(a){return(a||h).stringify(this)},concat:function(a){var e=this.words,n=a.words,t=this.sigBytes,i=a.sigBytes;if(this.clamp(),t%4)for(var r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;e[t+r>>>2]|=o<<24-(t+r)%4*8}else for(var s=0;s<i;s+=4)e[t+s>>>2]=n[s>>>2];return this.sigBytes+=i,this},clamp:function(){var e=this.words,n=this.sigBytes;e[n>>>2]&=4294967295<<32-n%4*8,e.length=a.ceil(n/4)},clone:function(){var a=s.clone.call(this);return a.words=this.words.slice(0),a},random:function(a){for(var e=[],n=0;n<a;n+=4)e.push(t());return new c.init(e,a)}}),l=r.enc={},h=l.Hex={stringify:function(a){for(var e=a.words,n=a.sigBytes,t=[],i=0;i<n;i++){var r=e[i>>>2]>>>24-i%4*8&255;t.push((r>>>4).toString(16)),t.push((15&r).toString(16))}return t.join("")},parse:function(a){for(var e=a.length,n=[],t=0;t<e;t+=2)n[t>>>3]|=parseInt(a.substr(t,2),16)<<24-t%8*4;return new c.init(n,e/2)}},g=l.Latin1={stringify:function(a){for(var e=a.words,n=a.sigBytes,t=[],i=0;i<n;i++){var r=e[i>>>2]>>>24-i%4*8&255;t.push(String.fromCharCode(r))}return t.join("")},parse:function(a){for(var e=a.length,n=[],t=0;t<e;t++)n[t>>>2]|=(255&a.charCodeAt(t))<<24-t%4*8;return new c.init(n,e)}},d=l.Utf8={stringify:function(a){try{return decodeURIComponent(escape(g.stringify(a)))}catch(a){throw new Error("Malformed UTF-8 data")}},parse:function(a){return g.parse(unescape(encodeURIComponent(a)))}},m=o.BufferedBlockAlgorithm=s.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=d.parse(a)),this._data.concat(a),this._nDataBytes+=a.sigBytes},_process:function(e){var n,t=this._data,i=t.words,r=t.sigBytes,o=this.blockSize,s=r/(4*o),l=(s=e?a.ceil(s):a.max((0|s)-this._minBufferSize,0))*o,h=a.min(4*l,r);if(l){for(var u=0;u<l;u+=o)this._doProcessBlock(i,u);n=i.splice(0,l),t.sigBytes-=h}return new c.init(n,h)},clone:function(){var a=s.clone.call(this);return a._data=this._data.clone(),a},_minBufferSize:0});o.Hasher=m.extend({cfg:s.extend(),init:function(a){this.cfg=this.cfg.extend(a),this.reset()},reset:function(){m.reset.call(this),this._doReset()},update:function(a){return this._append(a),this._process(),this},finalize:function(a){return a&&this._append(a),this._doFinalize()},blockSize:16,_createHelper:function(a){return function(e,n){return new a.init(n).finalize(e)}},_createHmacHelper:function(a){return function(e,n){return new p.HMAC.init(a,n).finalize(e)}}});var p=r.algo={};return r}(Math),a)),w.exports;var a}var b=g(m.exports=(f=k(),function(a){var e=f,n=e.lib,t=n.WordArray,i=n.Hasher,r=e.algo,o=[];!function(){for(var e=0;e<64;e++)o[e]=4294967296*a.abs(a.sin(e+1))|0}();var s=r.MD5=i.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(a,e){for(var n=0;n<16;n++){var t=e+n,i=a[t];a[t]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var r=this._hash.words,s=a[e+0],g=a[e+1],d=a[e+2],m=a[e+3],p=a[e+4],f=a[e+5],w=a[e+6],y=a[e+7],k=a[e+8],b=a[e+9],T=a[e+10],S=a[e+11],v=a[e+12],C=a[e+13],$=a[e+14],A=a[e+15],z=r[0],B=r[1],M=r[2],j=r[3];z=c(z,B,M,j,s,7,o[0]),j=c(j,z,B,M,g,12,o[1]),M=c(M,j,z,B,d,17,o[2]),B=c(B,M,j,z,m,22,o[3]),z=c(z,B,M,j,p,7,o[4]),j=c(j,z,B,M,f,12,o[5]),M=c(M,j,z,B,w,17,o[6]),B=c(B,M,j,z,y,22,o[7]),z=c(z,B,M,j,k,7,o[8]),j=c(j,z,B,M,b,12,o[9]),M=c(M,j,z,B,T,17,o[10]),B=c(B,M,j,z,S,22,o[11]),z=c(z,B,M,j,v,7,o[12]),j=c(j,z,B,M,C,12,o[13]),M=c(M,j,z,B,$,17,o[14]),z=l(z,B=c(B,M,j,z,A,22,o[15]),M,j,g,5,o[16]),j=l(j,z,B,M,w,9,o[17]),M=l(M,j,z,B,S,14,o[18]),B=l(B,M,j,z,s,20,o[19]),z=l(z,B,M,j,f,5,o[20]),j=l(j,z,B,M,T,9,o[21]),M=l(M,j,z,B,A,14,o[22]),B=l(B,M,j,z,p,20,o[23]),z=l(z,B,M,j,b,5,o[24]),j=l(j,z,B,M,$,9,o[25]),M=l(M,j,z,B,m,14,o[26]),B=l(B,M,j,z,k,20,o[27]),z=l(z,B,M,j,C,5,o[28]),j=l(j,z,B,M,d,9,o[29]),M=l(M,j,z,B,y,14,o[30]),z=h(z,B=l(B,M,j,z,v,20,o[31]),M,j,f,4,o[32]),j=h(j,z,B,M,k,11,o[33]),M=h(M,j,z,B,S,16,o[34]),B=h(B,M,j,z,$,23,o[35]),z=h(z,B,M,j,g,4,o[36]),j=h(j,z,B,M,p,11,o[37]),M=h(M,j,z,B,y,16,o[38]),B=h(B,M,j,z,T,23,o[39]),z=h(z,B,M,j,C,4,o[40]),j=h(j,z,B,M,s,11,o[41]),M=h(M,j,z,B,m,16,o[42]),B=h(B,M,j,z,w,23,o[43]),z=h(z,B,M,j,b,4,o[44]),j=h(j,z,B,M,v,11,o[45]),M=h(M,j,z,B,A,16,o[46]),z=u(z,B=h(B,M,j,z,d,23,o[47]),M,j,s,6,o[48]),j=u(j,z,B,M,y,10,o[49]),M=u(M,j,z,B,$,15,o[50]),B=u(B,M,j,z,f,21,o[51]),z=u(z,B,M,j,v,6,o[52]),j=u(j,z,B,M,m,10,o[53]),M=u(M,j,z,B,T,15,o[54]),B=u(B,M,j,z,g,21,o[55]),z=u(z,B,M,j,k,6,o[56]),j=u(j,z,B,M,A,10,o[57]),M=u(M,j,z,B,w,15,o[58]),B=u(B,M,j,z,C,21,o[59]),z=u(z,B,M,j,p,6,o[60]),j=u(j,z,B,M,S,10,o[61]),M=u(M,j,z,B,d,15,o[62]),B=u(B,M,j,z,b,21,o[63]),r[0]=r[0]+z|0,r[1]=r[1]+B|0,r[2]=r[2]+M|0,r[3]=r[3]+j|0},_doFinalize:function(){var e=this._data,n=e.words,t=8*this._nDataBytes,i=8*e.sigBytes;n[i>>>5]|=128<<24-i%32;var r=a.floor(t/4294967296),o=t;n[15+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),n[14+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),e.sigBytes=4*(n.length+1),this._process();for(var s=this._hash,c=s.words,l=0;l<4;l++){var h=c[l];c[l]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return s},clone:function(){var a=i.clone.call(this);return a._hash=this._hash.clone(),a}});function c(a,e,n,t,i,r,o){var s=a+(e&n|~e&t)+i+o;return(s<<r|s>>>32-r)+e}function l(a,e,n,t,i,r,o){var s=a+(e&t|n&~t)+i+o;return(s<<r|s>>>32-r)+e}function h(a,e,n,t,i,r,o){var s=a+(e^n^t)+i+o;return(s<<r|s>>>32-r)+e}function u(a,e,n,t,i,r,o){var s=a+(n^(e|~t))+i+o;return(s<<r|s>>>32-r)+e}e.MD5=i._createHelper(s),e.HmacMD5=i._createHmacHelper(s)}(Math),f.MD5));const T=s("openai");function S(a,e="",t){return t?n.createHmac("sha256",e).update(a).digest(t):n.createHmac("sha256",e).update(a).digest()}function v(a,e="hex"){return n.createHash("sha256").update(a).digest(e)}function C({secretId:a,secretKey:e,service:n,host:t,payload:i,httpRequestMethod:r,action:o,apiVersion:s,region:c}){const l=Math.floor(Date.now()/1e3),h=function(a){const e=new Date(1e3*a);return`${e.getUTCFullYear()}-${("0"+(e.getUTCMonth()+1)).slice(-2)}-${("0"+e.getUTCDate()).slice(-2)}`}(l),u="content-type:application/json; charset=utf-8\nhost:"+t+"\n",g="content-type;host",d=v(i),m="TC3-HMAC-SHA256",p=`${h}/${n}/tc3_request`,f=[m,l,p,v([r,"/","",u,g,d].join("\n"))].join("\n"),w=S(h,"TC3"+e),y=S(n,w),k=S("tc3_request",y),b={Authorization:`${m} Credential=${a}/${p}, SignedHeaders=${g}, Signature=${S(f,k,"hex")}`,"Content-Type":"application/json; charset=utf-8",Host:t,"X-TC-Action":o,"X-TC-Timestamp":l,"X-TC-Version":s};return c&&(b["X-TC-Region"]=c),b}const $={google:function(a){const e="https://translate.googleapis.com/translate_a/single";return{name:"google",async translate(a,n){const{from:i="auto",to:r}=n;Array.isArray(a)||(a=[a]);const o=a.join("\n"),s=`${e}?client=gtx&sl=${i}&tl=${r}&dt=t&q=${encodeURI(o)}`,c=await fetch(s);if(!c.ok)throw await h(this.name,c);const l=await c.json();if(!l||0===l.length)throw new t(this.name,"Translate fail ! translate's result is null or empty");const u=[];for(let a=0;l[0]&&a<l[0].length;a++){const e=l[0][a];e&&0!=e.length&&Array.isArray(e)&&e[0]&&u.push(e[0].replaceAll("\n",""))}return u},async checkLanguage(a){const n=`${e}?client=gtx&sl=auto&tl=en&dt=t&q=${encodeURI(a)}`,t=await fetch(n);if(!t.ok)throw await h(this.name,t);const r=await t.json();if(!r||r.length<3)throw new i(this.name,"Check language fail! No result returned");const o=r[2];if(!o)throw new i(this.name,"Check language fail! Language not detected");return o}}},azure:function(a){const{key:e,region:n}=a,i="azure",r=()=>{if(!e||!n)throw new t(i,`${i} key and region is required`)};return r(),{name:i,async translate(a,i){r();const{from:o,to:s}=i,c=`https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=${s}${o&&"auto"!==o?`&from=${o}`:""}`;Array.isArray(a)||(a=[a]);const l=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8","Ocp-Apim-Subscription-Key":e,"Ocp-Apim-Subscription-Region":n},body:JSON.stringify(a.map(a=>({Text:a})))});if(!l.ok)throw await h(this.name,l);const u=await l.json();if(u.error)throw new t(this.name,`Translate fail ! code: ${u.error.code}, message: ${u.error.message} \n Go to https://learn.microsoft.com/zh-cn/azure/ai-services/translator/text-translation/reference/v3/translate view details`);const g=u;if(!g||0===g.length)throw new t(this.name,"Translate fail ! translate's result is null or empty");const d=[];for(const a of g)a.translations&&0!=a.translations.length&&d.push(...a.translations.map(a=>a.text));return d},async checkLanguage(a){r();const i=await fetch("https://api.cognitive.microsofttranslator.com/detect?api-version=3.0",{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8","Ocp-Apim-Subscription-Key":e,"Ocp-Apim-Subscription-Region":n},body:JSON.stringify([{Text:a}])});if(!i.ok)throw await h(this.name,i);const o=await i.json();if(!o||!Array.isArray(o)||0===o.length)throw new t(this.name,"Check language fail! No result returned");const s=o[0];if(!s.language)throw new t(this.name,"Check language fail! Language not detected");return s.language}}},amazon:function(n){const{region:i,accessKeyId:r,secretAccessKey:o}=n,s="amazon",c=()=>{if(!i||!r||!o)throw new t(s,`${s} region, accessKeyId ,secretAccessKey is required`)};return c(),{name:s,async translate(n,t){c();const{from:s="auto",to:l}=t,h=new a({region:i,credentials:{accessKeyId:r,secretAccessKey:o}});Array.isArray(n)||(n=[n]);const u=new e({SourceLanguageCode:s,TargetLanguageCode:l,Text:n.join("\n")}),g=await h.send(u),d=[];if(g.TranslatedText){const a=g.TranslatedText??"";d.push(...a.split("\n"))}return d},async checkLanguage(n){c();const l=new a({region:i,credentials:{accessKeyId:r,secretAccessKey:o}}),h=new e({SourceLanguageCode:"auto",TargetLanguageCode:"en",Text:n});try{const a=await l.send(h);if(!a.SourceLanguageCode)throw new t(s,"Check language fail! Source language not detected");return a.SourceLanguageCode}catch(a){throw new t(s,`Check language fail! ${a.message||a}`)}}}},baidu:function(a){const{appId:e,secretKey:n}=a,r="baidu",o=()=>{if(!e||!n)throw new t(r,`${r} appId and secretKey is required`)};return o(),{name:r,async translate(a,i){o();const{to:r,from:s="auto",domain:c="it"}=i;Array.isArray(a)||(a=[a]);const l=a.join("\n"),u=Date.now(),g=b(`${e}${l}${u}${c}${n}`).toString(),d=new URLSearchParams;d.append("q",l),d.append("from",s),d.append("to",r),d.append("appid",e),d.append("salt",u.toString()),d.append("domain",c),d.append("sign",g);const m=await fetch("https://fanyi-api.baidu.com/api/trans/vip/fieldtranslate",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:d.toString()});if(!m.ok)throw await h(this.name,m);const p=await m.json();if(!p||p.error_code||!p.trans_result||0===p.trans_result.length)throw new t(this.name,`Translate fail ! error_code:${p.error_code}, error_msg: ${p.error_msg} \n Go to https://fanyi-api.baidu.com/product/123 view details`);const f=[];for(const a of p.trans_result)a.dst&&f.push(a.dst);return f},async checkLanguage(a){o();const t=Date.now(),r=b(`${e}${a}${t}${n}`).toString(),s=new URLSearchParams;s.append("q",a),s.append("appid",e),s.append("salt",t.toString()),s.append("sign",r);const c=await fetch("https://fanyi-api.baidu.com/api/trans/vip/language",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()});if(!c.ok)throw await h(this.name,c);const l=await c.json();if(!l||0!=l.error_code)throw new i(this.name,`Check language fail ! error_code:${l.error_code}, error_msg: ${l.error_msg} \n Go to https://fanyi-api.baidu.com/product/143 view details`);return l.data.src}}},deepl:function(a){const{key:e}=a,n="deepl",r=()=>{if(!e)throw new t(n,`${n} key is required`)};r();const o="https://api-free.deepl.com/v2/translate";return{name:n,async translate(a,n){r();const{to:i,from:s}=n;Array.isArray(a)||(a=[a]);const c=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8",Authorization:`DeepL-Auth-Key ${e}`,Accept:"*/*",Host:"api-free.deepl.com",Connection:"keep-alive"},body:JSON.stringify({text:a,source_lang:"auto"===s?void 0:s,target_lang:i})});if(!c.ok)throw await h(this.name,c);const l=await c.json();if(l.error)throw new t(this.name,`Translate fail ! code: ${l.error.code}, message: ${l.error.message}`);const u=l.translations;if(!u||0===u.length)throw new t(this.name,"Translate fail ! translate's result is null or empty");return u.map(a=>a.text)},async checkLanguage(a){r();const n=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8",Authorization:`DeepL-Auth-Key ${e}`,Accept:"*/*",Host:"api-free.deepl.com",Connection:"keep-alive"},body:JSON.stringify({text:[a],target_lang:"EN"})});if(!n.ok)throw await h(this.name,n);const t=await n.json();if(t.error)throw new i(this.name,`Check language fail ! code: ${t.error.code}, message: ${t.error.message}`);const s=t.translations;if(!s||0===s.length)throw new i(this.name,"Check language fail! No result returned");const c=s[0].detected_source_language;if(!c)throw new i(this.name,"Check language fail! Language not detected");return c}}},openai:function(a){const{apiKey:e,model:n,maxTokens:i=2e3,outputLog:o=!1}=a,s="openai",c=()=>{if(!e)throw new t(s,`${s} apiKey is required`);if(!r.includes(n))throw new t(s,`${s} model=${n} is invalid`)};return c(),{name:s,async translate(a,r){c();const{from:s,to:l}=r;Array.isArray(a)||(a=[a]);const u={role:"user",content:`\n 满足以下4点翻译要求:\n 1.将每段文本从${s}翻译为${l}\n 2.文本内容以换行符\n进行段落分割,并以段落分割顺序进行翻译\n 3.仅翻译分割出的段落,其他任何不相关的内容都移除,比如:段落前后的空格、所有标点符号\n\n 4.仅返回要翻译的文本内容,不要返回任何其他内容\n\n 如何提取翻译文本,满足以下2点要求:\n 1.翻译从-$s$-字符标记开始至-$e$-字符标记结束,提取-$s$-至-$e$-之间的内容\n 2.-$s$-和-$e$-这2个标记不要返回,只是用来标记翻译的起始和结束位置\n\n -$s$-\n ${a.join("\n")} \n -$e$-\n `},g=await fetch("https://api.openai.com/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({model:n,messages:[{role:"system",content:"You are a professional translator"},u],max_tokens:i,temperature:0})});if(!g.ok)throw await h(this.name,g);const d=await g.json();if(d.error)throw new t(this.name,`Translate fail! message: ${d.error.message}`);if(!d||!d.choices||0===d.choices.length||!d.choices[0]?.message?.content)throw new t(this.name,"Translate fail ! translate's result is null or empty");const m=d.choices[0].message.content,p=["-$s$-","-$e$-"],f=m.trim().split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>!p.includes(a));return o&&(T.info("prompt:",JSON.stringify(u,null,2)),T.info("translations:",JSON.stringify(f,null,2))),f}}},tencent:function(a){const{secretId:e,secretKey:n,region:r="ap-guangzhou"}=a,o="tencent",s="tmt.tencentcloudapi.com",c=`https://${s}/`,l="2018-03-21";function h(){if(!e||!n)throw new t(o,`${o} secretId and secretKey are required`)}return{name:o,async translate(a,i){h();const{from:u="auto",to:g}=i,d="auto"===u?"auto":u,m={SourceText:Array.isArray(a)?a.join("\n"):a,Source:d,Target:g,ProjectId:0},p=JSON.stringify(m),f=C({secretId:e,secretKey:n,service:"tmt",host:s,payload:p,httpRequestMethod:"POST",action:"TextTranslate",apiVersion:l,region:r});try{const a=await fetch(c,{method:"POST",headers:f,body:p});if(!a.ok)throw new t(o,`HTTP ${a.status}: ${await a.text()}`);const e=await a.json();if(e.Response?.Error)throw new t(o,`Tencent translate fail: ${e.Response.Error.Code}, ${e.Response.Error.Message} \n Go to https://cloud.tencent.com/document/product/551/15619 view details`);const n=e.Response?.TargetText.split("\n")??[];if(!Array.isArray(n)||0===n.length)throw new t(o,"Translate fail! No result returned");return n}catch(a){if(a instanceof t)throw a;throw new t(o,`Translation failed: ${a}`)}},async checkLanguage(a){h();const t={Text:a,ProjectId:0},u=JSON.stringify(t),g=C({secretId:e,secretKey:n,service:"tmt",host:s,payload:u,httpRequestMethod:"POST",action:"LanguageDetect",apiVersion:l,region:r});try{const a=await fetch(c,{method:"POST",headers:g,body:u});if(!a.ok)throw new i(o,`HTTP ${a.status}: ${await a.text()}`);const e=await a.json();if(e.Response?.Error)throw new i(o,`Tencent language detect fail: ${e.Response.Error.Code}, ${e.Response.Error.Message} \n Go to https://cloud.tencent.com/document/product/551/15620 view details`);const n=e.Response?.Lang;if(!n)throw new i(o,"Language detect fail! No result returned");return n}catch(a){if(a instanceof i)throw a;throw new i(o,`Language detection failed: ${a}`)}}}}};var A={Afrikaans:"af",Albanian:"sq",Amharic:"am",Arabic:"ar",Armenian:"hy",Assamese:"as",Azerbaijani:"az",Bashkir:"ba",Basque:"eu",Bengali:"bn",Bhojpuri:"bho",Bosnian:"bs",Bulgarian:"bg",Burmese:"my","Cantonese (Traditional)":"yue",Catalan:"ca",Chhattisgarhi:"hne",Chinese:"zh-Hans","Chinese (Literary)":"lzh","Chinese (Traditional)":"zh-Hant",Croatian:"hr",Czech:"cs",Danish:"da",Dari:"prs",Dhivehi:"dv",Dogri:"doi",Double:"lug",Dutch:"nl",English:"en",Estonian:"et","FYRO Macedonian":"mk",Faroese:"fo",Fijian:"fj",Filipino:"fil",Finnish:"fi",French:"fr","French (Canada)":"fr-CA",Galician:"gl",Georgian:"ka",German:"de",Greek:"el",Gujarati:"gu","Haitian Creole":"ht",Hausa:"ha",Hebrew:"he",Hindi:"hi",Hmong:"mww",Hungarian:"hu",Icelandic:"is",Igbo:"ig",Indonesian:"id",Inuinnaqtun:"ikt",Inuktitut:"iu","Inuktitut (Latin)":"iu-Latn",Irish:"ga",Italian:"it",Japanese:"ja",Kannada:"kn",Kashmiri:"ks",Kazakh:"kk",Khmer:"km",Kikwanda:"rw","Klingon (Latin)":"tlh-Latn","Klingon (pIqaD)":"tlh-Piqd",Konkani:"gom",Korean:"ko","Kurdish (Medium)":"ku","Kurdish (North)":"kmr",Kyrgyz:"ky",Lao:"lo",Latvian:"lv",Lingala:"ln",Lithuanian:"lt","Lower Sorbian language":"dsb",Maithili:"mai",Malagasian:"mg",Malay:"ms",Malayalam:"ml",Maltese:"mt",Manipuri:"mni",Marathi:"mr","Mongolian (Cyrillic)":"mn-Cyrl","Mongolian (Traditional)":"mn-Mong","Māori":"mi",Nepali:"ne","Norwegian Bokmål":"nb",Nyanja:"nya",Oriya:"or",Pashto:"ps",Persian:"fa",Polish:"pl","Portugal (Brazil)":"pt","Portugal (Portugal)":"pt-PT",Punjabi:"pa","Querétaro Ottomi":"otq",Romanian:"ro",Rounds:"run",Russian:"ru",Samoan:"sm","Serbia (Latin)":"sr-Latn","Serbian (Cyrillic)":"sr-Cyrl",Sesotho:"st","Sesotho at Leboa":"nso",Setswana:"tn",Shona:"sn",Sindhi:"sd",Sinhalese:"si",Slovak:"sk",Slovenian:"sl",Somali:"so",Spanish:"es",Swahili:"sw",Swedish:"sv",Tahiti:"ty",Tamil:"ta",Tatar:"tt",Telugu:"te",Thai:"th",Tibetan:"bo",Tigrinya:"ti",Tongan:"to",Turkish:"tr",Turkmen:"tk",Uighur:"ug",Ukrainian:"uk","Upper Sorbian":"hsb",Urdu:"ur",Uzbek:"uz",Vietnamese:"vi",Welsh:"cy",Will:"brx",Xhosa:"xh",Yoruba:"yo","Yucatec Maya":"yua",Zulu:"zu"},z={Abkhazian:"ab",Acehnese:"ace","Acholi language":"ach",Afar:"aa",Afrikaans:"af",Albanian:"sq",Alur:"alz",Amharic:"am",Arabic:"ar",Armenian:"hy",Assamese:"as",Avar:"av",Awadhi:"awa",Aymara:"ay",Azerbaijani:"az",Badawi:"bew",Balinese:"ban",Balochi:"bal",Bambara:"bm",Bangasinan:"pag",Bashkir:"ba",Basque:"eu",Batakkalo:"btx","Bataksi Marungon":"bts",Bataktoba:"bbc",Baure:"bci",Belarusian:"be",Bengali:"bn",Bhojpuri:"bho",Bikol:"bik",Bosnian:"bs",Breton:"br",Bulgarian:"bg",Burmese:"my","Buryat language":"bua",Cantonese:"yue",Casey:"kha",Catalan:"ca",Cebuano:"ceb","Chamorro language":"ch",Chechen:"ce",Chevi:"ak",Chicheva:"ny",Chiga:"cgg",Chinese:"zh-CN","Chinese (Traditional)":"zh-TW",Chuk:"chk",Chuvash:"cv",Conga:"ts",Corsican:"co","Crimean Tatar":"crh",Croatian:"hr",Czech:"cs",Danish:"da",Dari:"fa-AF",Dhivehi:"dv",Dinka:"din",Dogra:"doi",Dutch:"nl",Dyula:"dyu",Dzongka:"dz",Elocano:"ilo",English:"en",Esperanto:"eo",Estonian:"et",Ewe:"ee","FYRO Macedonian":"mk",Faroese:"fo","Feng language":"fon",Fijian:"fj",Filipino:"tl",Finnish:"fi",French:"fr",Frisian:"fy",Friulian:"fur",Fulani:"ff",Ga:"gaa",Galician:"gl",Georgian:"ka",German:"de",Gongen:"gom",Gorkbojok:"trp","Grace and Taoism":"ndc-ZW",Greek:"el",Greenlandic:"kl",Guarani:"gn",Gujarati:"gu","Haitian Creole":"ht",Hakachin:"cnh",Hausa:"ha",Hawaiian:"haw",Hebrew:"iw",Heligaignon:"hil",Hindi:"hi",Hmong:"hmn",Hungarian:"hu","Hunsrück":"hrx",Iban:"iba",Icelandic:"is",Igbo:"ig",Indonesian:"id",Irish:"ga",Italian:"it","Jamaica vernacular":"jam",Japanese:"ja",Javanese:"jw","Jingpo language":"kac",Kannada:"kn",Kanuri:"kr",Kazakh:"kk",Kekchi:"kek",Khmer:"km",Kikwanda:"rw",Kithuba:"ktu","Komi language":"kv",Kongo:"kg",Korean:"ko","Kurdish (Kurmanji)":"ku","Kurdish (Solani)":"ckb",Kyrgyz:"ky",Lao:"lo",Latin:"la",Latvian:"lv",Ligurian:"lij",Limburg:"li",Lingala:"ln",Lithuanian:"lt",Lombard:"lmo",Luganda:"lg",Luo:"luo",Luxembourg:"lb",Madura:"mad",Maithili:"mai",Makassar:"mak",Malagasian:"mg",Malay:"ms","Malay, Jawi":"ms-Arab",Malayalam:"ml",Maltese:"mt","Malwadi language":"mwr",Mamu:"mam",Manx:"gv",Marathi:"mr",Marshallese:"mh","Mauritius Scrio whispers":"mfe","Meitei (Manipur)":"mni-Mtei",Minan:"min",Mizo:"lus",Mongolian:"mn","Māori":"mi","Nahuatl (Eastern Vastka)":"nhe","Ndebele (Southern)":"nr",Ndombe:"dov","Nepal Language (Newar)":"new",Nepali:"ne","Nko alphabet (West African written script)":"bm-Nkoo","Northern Sotho":"nso",Norwegian:"no",Nuer:"nus",Occitan:"oc",Oriya:"or","Oromo language":"om",Ossetian:"os",Pampangja:"pam",Papiamento:"pap",Pashto:"ps",Pemba:"bem",Persian:"fa",Polish:"pl","Portugal (Brazil)":"pt","Portugal (Portugal)":"pt-PT","Punjabi (Gurumuchi)":"pa","Punjabi (Shamuki)":"pa-Arab",Quechua:"qu",Ratgale:"ltg",Romani:"rom",Romanian:"ro",Rondi:"rn",Russian:"ru",Sabatec:"zap",Sakha:"sah",Samoan:"sm",Sango:"sg",Sanskrit:"sa",Santali:"sat-Latn","Schuna language":"sn","Scottish Gaelic":"gd",Serbian:"sr","Seychellois Creole":"crs",Shan:"shn",Sicilian:"scn","Sierra Leonean Creole":"kri",Silesian:"szl",Sindhi:"sd",Sinhalese:"si",Slovak:"sk",Slovenian:"sl",Somali:"so","South Sotho":"st",Spanish:"es","Steppe Mali":"chm",Sundanese:"su","Susu language":"sus",Swahili:"sw",Swat:"ss",Swedish:"sv","Sámi (North)":"se",Tahiti:"ty",Tajik:"tg",Tamaset:"ber-Latn","Tamazight (Tifinaven)":"ber",Tamil:"ta",Tatar:"tt",Telugu:"te",Tetum:"tet",Thai:"th",Tibetan:"bo","Tiff language":"tiv",Tigrinya:"ti","Tok Pisin":"tpi",Tongan:"to",Tswana:"tn",Tulu:"tcy","Tumbuka language":"tum",Turkish:"tr",Turkmen:"tk",Tuvan:"tyv",Udmurtic:"udm",Uighur:"ug",Ukrainian:"uk",Urdu:"ur",Uzbek:"uz",Venda:"ve",Venetian:"vec",Vietnamese:"vi","Wari language":"war",Welsh:"cy","Wolof language":"wo",Xhosa:"xh",Yiddish:"yi",Yoruba:"yo","Yucatan Maya":"yua",Zulu:"zu"},B={Achinese:"ach",Afrikaans:"afr",Akan:"aka",Albanian:"alb","Algerian Arabic":"arq",Amharic:"amh","Ancient Greek":"gra",Arabic:"ara",Aragonese:"arg",Armenian:"arm",Assamese:"asm",Asturian:"ast",Aymara:"aym",Azerbaijani:"aze",Baluchi:"bal",BasaSunda:"sun",Bashkir:"bak",Basque:"baq",Belarusian:"bel",Bemba:"bem",Bengali:"ben","Berber languages":"ber",Bhojpuri:"bho",Bislama:"bis",Blin:"bli","Bokmål":"nob",Bosnian:"bos","Brazilian Portuguese":"pot",Breton:"bre",Bulgarian:"bul",Buriat:"bui",Burmese:"bur","Canadian French":"frn",Cantonese:"yue",Catalan:"cat",Cebuano:"ceb",Chechen:"che",Cherokee:"chr",Chichewa:"nya",Chinese:"zh",Chuvash:"chv","Classical Chinese":"wyw",Cornish:"cor",Corsican:"cos",Creek:"cre","Crimean Tatar":"cri",Croatian:"hrv",Czech:"cs",Danish:"dan",Divehi:"div",Dutch:"nl",Dzongkha:"dzo",English:"en",Esperanto:"epo",Estonian:"est",Faroese:"fao",Filipino:"fil",Finnish:"fin",French:"fra",Friulian:"fri",Fulani:"ful",Gaelic:"gla",Galician:"glg",Georgian:"geo",German:"de",Greek:"el",Guarani:"grn",Gujarati:"guj","Haitian Creole":"ht","Hakha Chin":"hak",Hausa:"hau",Hawaiian:"haw",Hebrew:"heb",Hiligaynon:"hil",Hindi:"hi",Hmong:"hmn",Hungarian:"hu",Hupa:"hup",Icelandic:"ice",Ido:"ido",Igbo:"ibo",Indonesian:"id",Ingush:"ing","Interlingua ":"ina",Inuktitut:"iku",Irish:"gle",Italian:"it",Japanese:"jp",Javanese:"jav",Kabyle:"kab",Kalaallisut:"kal",Kalmyk:"kam",Kannada:"kan",Kanuri:"kau",Kashmiri:"kas",Kashubian:"kah",Khmer:"hkm",Kinyarwanda:"kin",Klingon:"kli",Kongo:"kon",Konkani:"kok",Korean:"kor",Kurdish:"kur",Kyrgyz:"kir",Lao:"lao",Latgalian:"lag",Latin:"lat",Latvian:"lav",Limburgish:"lim",Lingala:"lin",Lithuanian:"lit",Lojban:"loj","Low German":"log","Lower Sorbian":"los",Luganda:"lug",Luxembourgish:"ltz",Macedonian:"mac",Maithili:"mai",Malagasy:"mg",Malay:"may",Malayalam:"mal",Maltese:"mlt",Manx:"glv",Maori:"mao",Marathi:"mar",Marshallese:"mah","Mauritian Creole":"mau","Middle French":"frm",Mongolian:"moc",Montenegrin:"mot","N'Ko":"nqo",Neapolitan:"nea",Nepali:"nep","Northern Sami":"sme","Northern Sotho":"ped",Norwegian:"nor",Nynorsk:"nno",Occitan:"oci",Ojibwa:"oji","Old English":"eno",Oriya:"ori",Oromo:"orm",Ossetian:"oss",Pampanga:"pam",Papiamento:"pap",Pashto:"pus",Persian:"per",Polish:"pl",Portuguese:"pt",Punjabi:"pan",Quechua:"que",Romanian:"rom",Romansh:"roh",Romany:"ro",Russian:"ru",Rusyn:"ruy",Samoan:"sm",Sanskrit:"san",Sardinian:"srd",Scots:"sco","Serb(Cyrillic)":"src",Serbian:"srp","Serbo-Croatian":"sec",Shan:"sha",Shona:"sna",Silesian:"sil",Sindhi:"snd",Sinhala:"sin",Slovak:"sk",Slovenian:"slo",Somali:"som","Songhai languages":"sol","Southern Ndebele":"nbl","Southern Sotho":"sot",Spanish:"spa",Swahili:"swa",Swedish:"swe",Syriac:"syr",Tagalog:"tgl",Tajik:"tgk",Tamil:"tam",Tatar:"tat",Telugu:"tel",Tetum:"tet",Thai:"th",Tibetan:"tib",Tigrinya:"tir","Traditional Chinese":"cht",Tsonga:"tso","Tunisian Arabic":"tua",Turkish:"tr",Turkmen:"tuk",Twi:"twi",Ukrainian:"ukr","Upper Sorbian":"ups",Urdu:"urd",Uyghur:"uig",Venda:"ven",Vietnamese:"vie",Walloon:"wln",Welsh:"wel","Western Frisian":"fry",Wolof:"wol",Xhosa:"xho",Yiddish:"yid",Yoruba:"yor",Zaza:"zaz",Zulu:"zul"},M={Afrikaans:"af",Albanian:"sq",Amharic:"am",Arabic:"ar",Armenian:"hy",Azerbaijani:"az",Bengali:"bn",Bosnian:"bs",Bulgarian:"bg",Catalan:"ca","Chinese (Simplified)":"zh","Chinese (Traditional)":"zh-TW",Croatian:"hr",Czech:"cs",Danish:"da",Dari:"fa-AF",Dutch:"nl",English:"en",Estonian:"et","Farsi (Persian)":"fa","Filipino, Tagalog":"tl",Finnish:"fi",French:"fr","French (Canada)":"fr-CA",Georgian:"ka",German:"de",Greek:"el",Gujarati:"gu","Haitian Creole":"ht",Hausa:"ha",Hebrew:"he",Hindi:"hi",Hungarian:"hu",Icelandic:"is",Indonesian:"id",Irish:"ga",Italian:"it",Japanese:"ja",Kannada:"kn",Kazakh:"kk",Korean:"ko",Latvian:"lv",Lithuanian:"lt",Macedonian:"mk",Malay:"ms",Malayalam:"ml",Maltese:"mt",Marathi:"mr",Mongolian:"mn","Norwegian (Bokmål)":"no",Pashto:"ps",Polish:"pl","Portuguese (Brazil)":"pt","Portuguese (Portugal)":"pt-PT",Punjabi:"pa",Romanian:"ro",Russian:"ru",Serbian:"sr",Sinhala:"si",Slovak:"sk",Slovenian:"sl",Somali:"so",Spanish:"es","Spanish (Mexico)":"es-MX",Swahili:"sw",Swedish:"sv",Tamil:"ta",Telugu:"te",Thai:"th",Turkish:"tr",Ukrainian:"uk",Urdu:"ur",Uzbek:"uz",Vietnamese:"vi",Welsh:"cy"};const j={azure:A,google:z,baidu:B,deepl:{English:"en",Bulgarian:"bg",Chinese:"zh",Croatian:"hr",Czech:"cs",Danish:"da",Dutch:"nl",Estonian:"et",Finnish:"fi",French:"fr",German:"de",Greek:"el",Hungarian:"hu",Icelandic:"is",Indonesian:"id",Irish:"ga",Italian:"it",Japanese:"ja",Korean:"ko",Latvian:"lv",Lithuanian:"lt",Maltese:"mt",Norwegian:"nb",Polish:"pl",Portuguese:"pt",Romanian:"ro",Russian:"ru",Slovak:"sk",Slovenian:"sl",Spanish:"es",Swedish:"sv",Turkish:"tr",Ukrainian:"uk"},amazon:M,openai:z,tencent:{Auto:"auto",Chinese:"zh",TraditionalChinese:"zh-TW",English:"en",Japanese:"ja",Korean:"ko",French:"fr",Spanish:"es",Italian:"it",German:"de",Turkish:"tr",Russian:"ru",Portuguese:"pt",Vietnamese:"vi",Indonesian:"id",Thai:"th",Malay:"ms",Arabic:"ar",Hindi:"hi"}};const x={azure:A,google:z,baidu:B,deepl:{"American English":"en-US","Brazilian Portuguese":"pt-BR","British English":"en-GB",Bulgarian:"bg",Chinese:"zh",Croatian:"hr",Czech:"cs",Danish:"da",Dutch:"nl",Estonian:"et","European Portuguese":"pt-PT",Finnish:"fi",French:"fr",German:"de",Greek:"el",Hungarian:"hu",Icelandic:"is",Indonesian:"id",Irish:"ga",Italian:"it",Japanese:"ja",Korean:"ko",Latvian:"lv",Lithuanian:"lt",Maltese:"mt",Norwegian:"nb",Polish:"pl",Portuguese:"pt",Romanian:"ro",Russian:"ru",Slovak:"sk",Slovenian:"sl",Spanish:"es",Swedish:"sv",Turkish:"tr",Ukrainian:"uk"},amazon:M,openai:z,tencent:{"Simplified Chinese":"zh","Traditional Chinese":"zh-TW",English:"en",Japanese:"ja",Korean:"ko",French:"fr",Spanish:"es",Italian:"it",German:"de",Turkish:"tr",Russian:"ru",Portuguese:"pt",Vietnamese:"vi",Indonesian:"id",Thai:"th",Malay:"ms",Arabic:"ar",Hindi:"hi"}};const P={baidu:{Chinese:"zh",English:"en",Japanese:"jp",Korean:"kor",Thai:"th",Russian:"ru"},tencent:{Chinese:"zh",English:"en",Japanese:"jp",Korean:"kr",German:"de",French:"fr",Spanish:"es",Italian:"it",Turkish:"tr",Russian:"ru",Portuguese:"pt",Vietnamese:"vi",Indonesian:"id",Malay:"ms",Thai:"th"},azure:{Arabic:"ar",Bengali:"bn",Bulgarian:"bg",Catalan:"ca",Chinese:"zh-Hans","Chinese (Traditional)":"zh-Hant",Croatian:"hr",Czech:"cs",Danish:"da",Dutch:"nl",English:"en",Finnish:"fi",French:"fr",German:"de",Greek:"el",Hebrew:"he",Hindi:"hi",Hungarian:"hu",Indonesian:"id",Italian:"it",Japanese:"ja",Korean:"ko",Malay:"ms","Norwegian Bokmål":"nb",Persian:"fa",Polish:"pl","Portugal (Brazil)":"pt",Romanian:"ro",Russian:"ru",Slovak:"sk",Spanish:"es",Swedish:"sv",Thai:"th",Turkish:"tr",Ukrainian:"uk",Urdu:"ur",Vietnamese:"vi"},amazon:{Arabic:"ar",Bengali:"bn",Bulgarian:"bg",Catalan:"ca",Chinese:"zh-Hans","Chinese (Traditional)":"zh-Hant",Croatian:"hr",Czech:"cs",Danish:"da",Dutch:"nl",English:"en",Finnish:"fi",French:"fr",German:"de",Greek:"el",Hebrew:"he",Hindi:"hi",Hungarian:"hu",Indonesian:"id",Italian:"it",Japanese:"ja",Korean:"ko",Malay:"ms",Persian:"fa",Polish:"pl","Portugal (Brazil)":"pt",Romanian:"ro",Russian:"ru",Slovak:"sk",Spanish:"es",Swedish:"sv",Thai:"th",Turkish:"tr",Ukrainian:"uk",Urdu:"ur",Vietnamese:"vi"},deepl:{"American English":"en",Bulgarian:"bg",Chinese:"zh",Czech:"cs",Danish:"da",Dutch:"nl",Estonian:"et",Finnish:"fi",French:"fr",German:"de",Greek:"el",Hungarian:"hu",Icelandic:"is",Indonesian:"id",Irish:"ga",Italian:"it",Japanese:"ja",Korean:"ko",Latvian:"lv",Lithuanian:"lt",Maltese:"mt",Norwegian:"nb",Polish:"pl",Portuguese:"pt",Romanian:"ro",Russian:"ru",Slovak:"sk",Slovenian:"sl",Spanish:"es",Swedish:"sv",Turkish:"tr",Ukrainian:"uk"},google:{English:"en",Bulgarian:"bg",Chinese:"zh-cn",Czech:"cs",Danish:"da",Dutch:"nl",Estonian:"et",Finnish:"fi",French:"fr",German:"de",Greek:"el",Hungarian:"hu",Icelandic:"is",Indonesian:"id",Irish:"ga",Italian:"it",Japanese:"ja",Korean:"ko",Latvian:"lv",Lithuanian:"lt",Maltese:"mt",Polish:"pl",Portuguese:"pt",Romanian:"ro",Russian:"ru",Slovak:"sk",Slovenian:"sl",Spanish:"es",Swedish:"sv",Turkish:"tr",Ukrainian:"uk"}};function L(a,e){if("auto"===a)return"auto";const n=j[e];if(!n)throw new Error(`Engine ${e} not found`);if(Object.keys(j[e]).includes(a))return n[a];if(Object.values(j[e]).includes(a))return a;throw new Error(`Invalid from language ${e} ${a}`)}function I(a,e){const n=x[e];if(!n)throw new Error(`Engine ${e} not found`);if(Object.keys(x[e]).includes(a))return n[a];if(Object.values(x[e]).includes(a))return a;throw new Error(`Invalid to language ${e} ${a}`)}function K(a){return{from:j[a],to:x[a]}}const H="Translate",_=1e3,E=s(),R=new o;class F{engines;cache_time;concurrencyMax;concurrencyDelay;constructor(a=6e4,e=4,n=20){this.engines=new Map,this.cache_time=a,this.concurrencyMax=e,this.concurrencyDelay=n}use(a){this.addEngine(a)}addEngine(a){this.engines.has(a.name)?E.warn("Engine already exists"):this.engines.set(a.name,a)}removeEngine(a){if(!a||!this.engines.has(a))return E.warn("Engine name is required or not found"),!1;this.engines.delete(a)}isSupportCheckLanguage(a){if(!a||!this.engines.has(a))return E.warn("Engine name is required or not found"),!1;const e=this.engines.get(a);return e?!!e.checkLanguage:(E.warn(`Engine ${a} not found`),!1)}async checkLanguage(a,e){const{engine:n="google",max_character_num:r=_}=e;if(!this.engines.has(n))throw new i(H,`Engine ${n} not found`);const o=this.engines.get(n);if(!o)throw new i(H,`Engine ${n} is null`);if(!o.checkLanguage)throw new i(H,`Engine ${n} does not support checkLanguage method`);const s=r>0?a.substring(0,r):a;if(s.length<=0)throw new t(H,"Text is empty or too short to check language");return o.checkLanguage(s).then(a=>a).catch(e=>{throw E.error(`${H} Failed to check language for text: \n${c()}\n${a}\n${c()}\n error: ${l(e)}`),e})}async translate(a,e){const{engine:n="google",cache_time:i=6e4}=e;let{from:r="auto",to:o}=e;if(r=e.from=L(r,n),o=e.to=I(o,n),!this.engines.has(n))throw new t(H,`Engine ${n} not found`);const s=this.engines.get(n);if(!s)throw new t(H,`Engine ${n} is null`);if(!r)throw new t(H,`Invalid origin language ${r}`);if(!o)throw new t(H,`Invalid target language ${o}`);const h=`${r}:${o}:${n}:${a}`;return R.get(h)?Promise.resolve(R.get(h)?.value):this.concurrencyHandle(s,a,e).then(a=>(R.set(h,a,i??this.cache_time),a)).catch(e=>{throw E.error(`${H} Failed: from=${r},to=${o},engine=${n},translate text: \n${c()}\n${a}\n${c()}\n error: ${l(e)}`),e instanceof t?e:new t(H,l(e))})}async concurrencyHandle(a,e,n){const{max_character_num:i=_}=n,r=i>0?i:_;if(Array.isArray(e)){if(function(a,e){return!(!a||a.length<=0)&&a.reduce((a,e)=>a+e.length,0)>e}(e,i))throw new t(H,"String arrays do not support automatic character splitting, and the total number of characters in a string array exceeds the limit on the number of translated characters.");return a.translate(e,n)}return this.concurrencyTranslate(a,e,n,r)}async concurrencyTranslate(a,e,n,t){const i=function(a,e){const n=[/\n\n+/,/[.。!??!\n]/,/[;;]/,/[,,]/g,/\s/],t=[];for(;a.length>0;){const i=a.slice(0,e);if(a.length<=e){t.push(a);break}let r=-1;for(const a of n){const n=new RegExp(a.source+"(?=[^]*)","g");let t,o;for(;null!==(t=n.exec(i));)t.index===n.lastIndex&&n.lastIndex++,o=null!=o?t.index>o.index?t:o:t;if(void 0!==o?.index&&o.index>=.7*e){r=o.index;break}}-1===r&&(r=i.lastIndexOf(" ",e),r=-1===r?e:r),0==r?a=a.slice(r+1):(t.push(a.slice(0,r)),a=a.slice(r))}return t}(e,t).map((a,e)=>({content:a,index:e})),r=[];let o=0;const s=this.concurrencyDelay,c=this.concurrencyMax;return new Promise((e,t)=>(function l(){for(;o<c&&i.length>0;){const{content:c,index:h}=i.shift();o++,a.translate(c,n).then(a=>{r.push({translated:a,index:h})}).catch(a=>t(a)).finally(async()=>{if(o--,0===o&&i.length<=0){r.sort((a,e)=>a.index-e.index);const a=r.reduce((a,e)=>a.concat(e.translated),[]);return e([a.join("")])}var a;await(a=s,new Promise(e=>setTimeout(e,a))),l()})}}(),r))}}const D=new F;var O={engines:$,translator:D,Translator:F,Cache:o,getLanguage:K};export{o as Cache,i as CheckLanguageError,r as OPEN_AI_MODELS,t as TranslationError,F as Translator,P as checkLanguages,O as default,$ as engines,K as getLanguage,L as normalFromLanguage,I as normalToLanguage,j as originLanguages,x as targetLanguages,D as translator};
2
- //# sourceMappingURL=index.esm.min.js.map
1
+ import"fs/promises";import"fs";import"path";import{TranslateClient as e,TranslateTextCommand as a}from"@aws-sdk/client-translate";import n from"crypto";class t extends Error{region;constructor(e,a){super(a),this.region=e,Error.captureStackTrace(this,this.constructor)}}class i extends Error{region;constructor(e,a){super(a),this.region=e,Error.captureStackTrace(this,this.constructor)}}const r=["o1-preview","o1-preview-2024-09-12","o1-mini-2024-09-12","o1-mini","dall-e-2","gpt-3.5-turbo","gpt-3.5-turbo-0125","babbage-002","davinci-002","dall-e-3","text-embedding-3-large","gpt-3.5-turbo-16k","tts-1-hd-1106","text-embedding-ada-002","text-embedding-3-small","tts-1-hd","whisper-1","gpt-3.5-turbo-1106","gpt-3.5-turbo-instruct","gpt-4o-mini-2024-07-18","gpt-4o-mini","tts-1","tts-1-1106","gpt-3.5-turbo-instruct-0914"];class o{cache;constructor(){this.cache=new Map}set(e,a,n){if(n<=0)throw new Error("time must be greater than 0");const t=this.cache.get(e);t&&clearTimeout(t.timeout);const i={value:a,expire:Date.now()+n};isNaN(i.expire)||(i.timeout=setTimeout(()=>this.del(e),n)),this.cache.set(e,i)}get(e){return this.cache.get(e)}delete(e){let a=!0;const n=this.cache.get(e);return n?!isNaN(n.expire)&&n.expire<Date.now()?a=!1:clearTimeout(n.timeout):a=!1,a&&this.del(e),a}del(e){this.cache.delete(e)}clear(){for(const[,e]of this.cache.entries())clearTimeout(e.timeout);this.cache.clear()}}function s(e=""){return{log(...e){this.info(...e)},info(...a){console.log(`[translate ${e}]`,...a)},error(...a){console.error(`[translate ${e}]`,...a)},warn(...a){console.warn(`[translate ${e}]`,...a)}}}function c(){return"-".repeat(20)}function l(e,a="Translate fail ! "){return e instanceof TypeError?a+(e.cause?.message??e.message):a+e.message}async function u(e,a){let n=null;try{n=await a.json()}catch(e){}return new t(e,`Translate fail ! ${a.status}: ${a.statusText} ${n?.message??""}`)}var h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function g(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function d(e){if(e.__esModule)return e;var a=e.default;if("function"==typeof a){var n=function e(){return this instanceof e?Reflect.construct(a,arguments,this.constructor):a.apply(this,arguments)};n.prototype=a.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(a){var t=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(n,a,t.get?t:{enumerable:!0,get:function(){return e[a]}})}),n}var m={exports:{}};var p,f,w={exports:{}},y=d(Object.freeze({__proto__:null,default:{}}));function k(){return p||(p=1,w.exports=(e=e||function(e,a){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==h&&h.crypto&&(n=h.crypto),!n)try{n=y}catch(e){}var t=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},i=Object.create||function(){function e(){}return function(a){var n;return e.prototype=a,n=new e,e.prototype=null,n}}(),r={},o=r.lib={},s=o.Base={extend:function(e){var a=i(this);return e&&a.mixIn(e),a.hasOwnProperty("init")&&this.init!==a.init||(a.init=function(){a.$super.init.apply(this,arguments)}),a.init.prototype=a,a.$super=this,a},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var a in e)e.hasOwnProperty(a)&&(this[a]=e[a]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},c=o.WordArray=s.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=a?n:4*e.length},toString:function(e){return(e||u).stringify(this)},concat:function(e){var a=this.words,n=e.words,t=this.sigBytes,i=e.sigBytes;if(this.clamp(),t%4)for(var r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;a[t+r>>>2]|=o<<24-(t+r)%4*8}else for(var s=0;s<i;s+=4)a[t+s>>>2]=n[s>>>2];return this.sigBytes+=i,this},clamp:function(){var a=this.words,n=this.sigBytes;a[n>>>2]&=4294967295<<32-n%4*8,a.length=e.ceil(n/4)},clone:function(){var e=s.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var a=[],n=0;n<e;n+=4)a.push(t());return new c.init(a,e)}}),l=r.enc={},u=l.Hex={stringify:function(e){for(var a=e.words,n=e.sigBytes,t=[],i=0;i<n;i++){var r=a[i>>>2]>>>24-i%4*8&255;t.push((r>>>4).toString(16)),t.push((15&r).toString(16))}return t.join("")},parse:function(e){for(var a=e.length,n=[],t=0;t<a;t+=2)n[t>>>3]|=parseInt(e.substr(t,2),16)<<24-t%8*4;return new c.init(n,a/2)}},g=l.Latin1={stringify:function(e){for(var a=e.words,n=e.sigBytes,t=[],i=0;i<n;i++){var r=a[i>>>2]>>>24-i%4*8&255;t.push(String.fromCharCode(r))}return t.join("")},parse:function(e){for(var a=e.length,n=[],t=0;t<a;t++)n[t>>>2]|=(255&e.charCodeAt(t))<<24-t%4*8;return new c.init(n,a)}},d=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(g.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return g.parse(unescape(encodeURIComponent(e)))}},m=o.BufferedBlockAlgorithm=s.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(a){var n,t=this._data,i=t.words,r=t.sigBytes,o=this.blockSize,s=r/(4*o),l=(s=a?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*o,u=e.min(4*l,r);if(l){for(var h=0;h<l;h+=o)this._doProcessBlock(i,h);n=i.splice(0,l),t.sigBytes-=u}return new c.init(n,u)},clone:function(){var e=s.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});o.Hasher=m.extend({cfg:s.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){m.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(a,n){return new e.init(n).finalize(a)}},_createHmacHelper:function(e){return function(a,n){return new p.HMAC.init(e,n).finalize(a)}}});var p=r.algo={};return r}(Math),e)),w.exports;var e}var b=g(m.exports=(f=k(),function(e){var a=f,n=a.lib,t=n.WordArray,i=n.Hasher,r=a.algo,o=[];!function(){for(var a=0;a<64;a++)o[a]=4294967296*e.abs(e.sin(a+1))|0}();var s=r.MD5=i.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,a){for(var n=0;n<16;n++){var t=a+n,i=e[t];e[t]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var r=this._hash.words,s=e[a+0],g=e[a+1],d=e[a+2],m=e[a+3],p=e[a+4],f=e[a+5],w=e[a+6],y=e[a+7],k=e[a+8],b=e[a+9],T=e[a+10],S=e[a+11],v=e[a+12],C=e[a+13],$=e[a+14],A=e[a+15],x=r[0],z=r[1],M=r[2],j=r[3];x=c(x,z,M,j,s,7,o[0]),j=c(j,x,z,M,g,12,o[1]),M=c(M,j,x,z,d,17,o[2]),z=c(z,M,j,x,m,22,o[3]),x=c(x,z,M,j,p,7,o[4]),j=c(j,x,z,M,f,12,o[5]),M=c(M,j,x,z,w,17,o[6]),z=c(z,M,j,x,y,22,o[7]),x=c(x,z,M,j,k,7,o[8]),j=c(j,x,z,M,b,12,o[9]),M=c(M,j,x,z,T,17,o[10]),z=c(z,M,j,x,S,22,o[11]),x=c(x,z,M,j,v,7,o[12]),j=c(j,x,z,M,C,12,o[13]),M=c(M,j,x,z,$,17,o[14]),x=l(x,z=c(z,M,j,x,A,22,o[15]),M,j,g,5,o[16]),j=l(j,x,z,M,w,9,o[17]),M=l(M,j,x,z,S,14,o[18]),z=l(z,M,j,x,s,20,o[19]),x=l(x,z,M,j,f,5,o[20]),j=l(j,x,z,M,T,9,o[21]),M=l(M,j,x,z,A,14,o[22]),z=l(z,M,j,x,p,20,o[23]),x=l(x,z,M,j,b,5,o[24]),j=l(j,x,z,M,$,9,o[25]),M=l(M,j,x,z,m,14,o[26]),z=l(z,M,j,x,k,20,o[27]),x=l(x,z,M,j,C,5,o[28]),j=l(j,x,z,M,d,9,o[29]),M=l(M,j,x,z,y,14,o[30]),x=u(x,z=l(z,M,j,x,v,20,o[31]),M,j,f,4,o[32]),j=u(j,x,z,M,k,11,o[33]),M=u(M,j,x,z,S,16,o[34]),z=u(z,M,j,x,$,23,o[35]),x=u(x,z,M,j,g,4,o[36]),j=u(j,x,z,M,p,11,o[37]),M=u(M,j,x,z,y,16,o[38]),z=u(z,M,j,x,T,23,o[39]),x=u(x,z,M,j,C,4,o[40]),j=u(j,x,z,M,s,11,o[41]),M=u(M,j,x,z,m,16,o[42]),z=u(z,M,j,x,w,23,o[43]),x=u(x,z,M,j,b,4,o[44]),j=u(j,x,z,M,v,11,o[45]),M=u(M,j,x,z,A,16,o[46]),x=h(x,z=u(z,M,j,x,d,23,o[47]),M,j,s,6,o[48]),j=h(j,x,z,M,y,10,o[49]),M=h(M,j,x,z,$,15,o[50]),z=h(z,M,j,x,f,21,o[51]),x=h(x,z,M,j,v,6,o[52]),j=h(j,x,z,M,m,10,o[53]),M=h(M,j,x,z,T,15,o[54]),z=h(z,M,j,x,g,21,o[55]),x=h(x,z,M,j,k,6,o[56]),j=h(j,x,z,M,A,10,o[57]),M=h(M,j,x,z,w,15,o[58]),z=h(z,M,j,x,C,21,o[59]),x=h(x,z,M,j,p,6,o[60]),j=h(j,x,z,M,S,10,o[61]),M=h(M,j,x,z,d,15,o[62]),z=h(z,M,j,x,b,21,o[63]),r[0]=r[0]+x|0,r[1]=r[1]+z|0,r[2]=r[2]+M|0,r[3]=r[3]+j|0},_doFinalize:function(){var a=this._data,n=a.words,t=8*this._nDataBytes,i=8*a.sigBytes;n[i>>>5]|=128<<24-i%32;var r=e.floor(t/4294967296),o=t;n[15+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),n[14+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),a.sigBytes=4*(n.length+1),this._process();for(var s=this._hash,c=s.words,l=0;l<4;l++){var u=c[l];c[l]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}return s},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});function c(e,a,n,t,i,r,o){var s=e+(a&n|~a&t)+i+o;return(s<<r|s>>>32-r)+a}function l(e,a,n,t,i,r,o){var s=e+(a&t|n&~t)+i+o;return(s<<r|s>>>32-r)+a}function u(e,a,n,t,i,r,o){var s=e+(a^n^t)+i+o;return(s<<r|s>>>32-r)+a}function h(e,a,n,t,i,r,o){var s=e+(n^(a|~t))+i+o;return(s<<r|s>>>32-r)+a}a.MD5=i._createHelper(s),a.HmacMD5=i._createHmacHelper(s)}(Math),f.MD5));const T=s("openai");function S(e,a="",t){return t?n.createHmac("sha256",a).update(e).digest(t):n.createHmac("sha256",a).update(e).digest()}function v(e,a="hex"){return n.createHash("sha256").update(e).digest(a)}function C({secretId:e,secretKey:a,service:n,host:t,payload:i,httpRequestMethod:r,action:o,apiVersion:s,region:c}){const l=Math.floor(Date.now()/1e3),u=function(e){const a=new Date(1e3*e);return`${a.getUTCFullYear()}-${("0"+(a.getUTCMonth()+1)).slice(-2)}-${("0"+a.getUTCDate()).slice(-2)}`}(l),h="content-type:application/json; charset=utf-8\nhost:"+t+"\n",g="content-type;host",d=v(i),m="TC3-HMAC-SHA256",p=`${u}/${n}/tc3_request`,f=[m,l,p,v([r,"/","",h,g,d].join("\n"))].join("\n"),w=S(u,"TC3"+a),y=S(n,w),k=S("tc3_request",y),b={Authorization:`${m} Credential=${e}/${p}, SignedHeaders=${g}, Signature=${S(f,k,"hex")}`,"Content-Type":"application/json; charset=utf-8",Host:t,"X-TC-Action":o,"X-TC-Timestamp":l,"X-TC-Version":s};return c&&(b["X-TC-Region"]=c),b}const $={google:function(e){const a="https://translate.googleapis.com/translate_a/single";return{name:"google",async translate(e,n){const{from:i="auto",to:r}=n;Array.isArray(e)||(e=[e]);const o=e.join("\n"),s=`${a}?client=gtx&sl=${i}&tl=${r}&dt=t&q=${encodeURI(o)}`,c=await fetch(s);if(!c.ok)throw await u(this.name,c);const l=await c.json();if(!l||0===l.length)throw new t(this.name,"Translate fail ! translate's result is null or empty");const h=[];for(let e=0;l[0]&&e<l[0].length;e++){const a=l[0][e];a&&0!=a.length&&Array.isArray(a)&&a[0]&&h.push(a[0].replaceAll("\n",""))}return h},async checkLanguage(e){const n=`${a}?client=gtx&sl=auto&tl=en&dt=t&q=${encodeURI(e)}`,t=await fetch(n);if(!t.ok)throw await u(this.name,t);const r=await t.json();if(!r||r.length<3)throw new i(this.name,"Check language fail! No result returned");const o=r[2];if(!o)throw new i(this.name,"Check language fail! Language not detected");return o}}},azure:function(e){const{key:a,region:n}=e,r="azure",o=()=>{if(!a||!n)throw new t(r,`${r} key and region is required`)};o();const s="https://api.cognitive.microsofttranslator.com/translate?api-version=3.0";return{name:r,async translate(e,i){o();const{from:r,to:c}=i,l=`${s}&to=${c}${r&&"auto"!==r?`&from=${r}`:""}`;Array.isArray(e)||(e=[e]);const h=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8","Ocp-Apim-Subscription-Key":a,"Ocp-Apim-Subscription-Region":n},body:JSON.stringify(e.map(e=>({Text:e})))});if(!h.ok)throw await u(this.name,h);const g=await h.json();if(g.error)throw new t(this.name,`Translate fail ! code: ${g.error.code}, message: ${g.error.message} \n Go to https://learn.microsoft.com/zh-cn/azure/ai-services/translator/text-translation/reference/v3/translate view details`);const d=g;if(!d||0===d.length)throw new t(this.name,"Translate fail ! translate's result is null or empty");const m=[];for(const e of d)e.translations&&0!=e.translations.length&&m.push(...e.translations.map(e=>e.text));return m},async checkLanguage(e){o();const t=`${s}&to=en`,r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8","Ocp-Apim-Subscription-Key":a,"Ocp-Apim-Subscription-Region":n},body:JSON.stringify([{Text:e}])});if(!r.ok)throw await u(this.name,r);const c=await r.json();if(c.error)throw new i(this.name,`checkLanguage fail ! code: ${c.error.code}, message: ${c.error.message} \n Go to https://learn.microsoft.com/zh-cn/azure/ai-services/translator/text-translation/reference/v3/translate view details`);if(!c||!Array.isArray(c)||0===c.length)throw new i(this.name,"Check language fail! No result returned");const l=c[0]?.detectedLanguage?.language;if(!l)throw new i(this.name,"Check language fail! Language not detected");return l}}},amazon:function(n){const{region:i,accessKeyId:r,secretAccessKey:o}=n,s="amazon",c=()=>{if(!i||!r||!o)throw new t(s,`${s} region, accessKeyId ,secretAccessKey is required`)};return c(),{name:s,async translate(n,t){c();const{from:s="auto",to:l}=t,u=new e({region:i,credentials:{accessKeyId:r,secretAccessKey:o}});Array.isArray(n)||(n=[n]);const h=new a({SourceLanguageCode:s,TargetLanguageCode:l,Text:n.join("\n")}),g=await u.send(h),d=[];if(g.TranslatedText){const e=g.TranslatedText??"";d.push(...e.split("\n"))}return d},async checkLanguage(n){c();const l=new e({region:i,credentials:{accessKeyId:r,secretAccessKey:o}}),u=new a({SourceLanguageCode:"auto",TargetLanguageCode:"en",Text:n});try{const e=await l.send(u);if(!e.SourceLanguageCode)throw new t(s,"Check language fail! Source language not detected");return e.SourceLanguageCode}catch(e){throw new t(s,`Check language fail! ${e.message||e}`)}}}},baidu:function(e){const{appId:a,secretKey:n}=e,r="baidu",o=()=>{if(!a||!n)throw new t(r,`${r} appId and secretKey is required`)};return o(),{name:r,async translate(e,i){o();const{to:r,from:s="auto",domain:c="it"}=i;Array.isArray(e)||(e=[e]);const l=e.join("\n"),h=Date.now(),g=b(`${a}${l}${h}${c}${n}`).toString(),d=new URLSearchParams;d.append("q",l),d.append("from",s),d.append("to",r),d.append("appid",a),d.append("salt",h.toString()),d.append("domain",c),d.append("sign",g);const m=await fetch("https://fanyi-api.baidu.com/api/trans/vip/fieldtranslate",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:d.toString()});if(!m.ok)throw await u(this.name,m);const p=await m.json();if(!p||p.error_code||!p.trans_result||0===p.trans_result.length)throw new t(this.name,`Translate fail ! error_code:${p.error_code}, error_msg: ${p.error_msg} \n Go to https://fanyi-api.baidu.com/product/123 view details`);const f=[];for(const e of p.trans_result)e.dst&&f.push(e.dst);return f},async checkLanguage(e){o();const t=Date.now(),r=b(`${a}${e}${t}${n}`).toString(),s=new URLSearchParams;s.append("q",e),s.append("appid",a),s.append("salt",t.toString()),s.append("sign",r);const c=await fetch("https://fanyi-api.baidu.com/api/trans/vip/language",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()});if(!c.ok)throw await u(this.name,c);const l=await c.json();if(!l||0!=l.error_code)throw new i(this.name,`Check language fail ! error_code:${l.error_code}, error_msg: ${l.error_msg} \n Go to https://fanyi-api.baidu.com/product/143 view details`);return l.data.src}}},deepl:function(e){const{key:a}=e,n="deepl",r=()=>{if(!a)throw new t(n,`${n} key is required`)};r();const o="https://api-free.deepl.com/v2/translate";return{name:n,async translate(e,n){r();const{to:i,from:s}=n;Array.isArray(e)||(e=[e]);const c=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8",Authorization:`DeepL-Auth-Key ${a}`,Accept:"*/*",Host:"api-free.deepl.com",Connection:"keep-alive"},body:JSON.stringify({text:e,source_lang:"auto"===s?void 0:s,target_lang:i})});if(!c.ok)throw await u(this.name,c);const l=await c.json();if(l.error)throw new t(this.name,`Translate fail ! code: ${l.error.code}, message: ${l.error.message}`);const h=l.translations;if(!h||0===h.length)throw new t(this.name,"Translate fail ! translate's result is null or empty");return h.map(e=>e.text)},async checkLanguage(e){r();const n=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8",Authorization:`DeepL-Auth-Key ${a}`,Accept:"*/*",Host:"api-free.deepl.com",Connection:"keep-alive"},body:JSON.stringify({text:[e],target_lang:"EN"})});if(!n.ok)throw await u(this.name,n);const t=await n.json();if(t.error)throw new i(this.name,`Check language fail ! code: ${t.error.code}, message: ${t.error.message}`);const s=t.translations;if(!s||0===s.length)throw new i(this.name,"Check language fail! No result returned");const c=s[0].detected_source_language;if(!c)throw new i(this.name,"Check language fail! Language not detected");return c}}},openai:function(e){const{apiKey:a,model:n,maxTokens:i=2e3,outputLog:o=!1}=e,s="openai",c=()=>{if(!a)throw new t(s,`${s} apiKey is required`);if(!r.includes(n))throw new t(s,`${s} model=${n} is invalid`)};return c(),{name:s,async translate(e,r){c();const{from:s,to:l}=r;Array.isArray(e)||(e=[e]);const h={role:"user",content:`\n 满足以下4点翻译要求:\n 1.将每段文本从${s}翻译为${l}\n 2.文本内容以换行符\n进行段落分割,并以段落分割顺序进行翻译\n 3.仅翻译分割出的段落,其他任何不相关的内容都移除,比如:段落前后的空格、所有标点符号\n\n 4.仅返回要翻译的文本内容,不要返回任何其他内容\n\n 如何提取翻译文本,满足以下2点要求:\n 1.翻译从-$s$-字符标记开始至-$e$-字符标记结束,提取-$s$-至-$e$-之间的内容\n 2.-$s$-和-$e$-这2个标记不要返回,只是用来标记翻译的起始和结束位置\n\n -$s$-\n ${e.join("\n")} \n -$e$-\n `},g=await fetch("https://api.openai.com/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify({model:n,messages:[{role:"system",content:"You are a professional translator"},h],max_tokens:i,temperature:0})});if(!g.ok)throw await u(this.name,g);const d=await g.json();if(d.error)throw new t(this.name,`Translate fail! message: ${d.error.message}`);if(!d||!d.choices||0===d.choices.length||!d.choices[0]?.message?.content)throw new t(this.name,"Translate fail ! translate's result is null or empty");const m=d.choices[0].message.content,p=["-$s$-","-$e$-"],f=m.trim().split("\n").map(e=>e.trim()).filter(Boolean).filter(e=>!p.includes(e));return o&&(T.info("prompt:",JSON.stringify(h,null,2)),T.info("translations:",JSON.stringify(f,null,2))),f}}},tencent:function(e){const{secretId:a,secretKey:n,region:r="ap-guangzhou"}=e,o="tencent",s="tmt.tencentcloudapi.com",c=`https://${s}/`,l="2018-03-21",u="TextTranslate";function h(){if(!a||!n)throw new t(o,`${o} secretId and secretKey are required`)}return{name:o,async translate(e,i){h();const{from:g="auto",to:d}=i,m="auto"===g?"auto":g,p={SourceText:Array.isArray(e)?e.join("\n"):e,Source:m,Target:d,ProjectId:0},f=JSON.stringify(p),w=C({secretId:a,secretKey:n,service:"tmt",host:s,payload:f,httpRequestMethod:"POST",action:u,apiVersion:l,region:r});try{const e=await fetch(c,{method:"POST",headers:w,body:f});if(!e.ok)throw new t(o,`HTTP ${e.status}: ${await e.text()}`);const a=await e.json();if(a.Response?.Error)throw new t(o,`Tencent translate fail: ${a.Response.Error.Code}, ${a.Response.Error.Message} \n Go to https://cloud.tencent.com/document/product/551/15619 view details`);const n=a.Response?.TargetText.split("\n")??[];if(!Array.isArray(n)||0===n.length)throw new t(o,"Translate fail! No result returned");return n}catch(e){if(e instanceof t)throw e;throw new t(o,`Translation failed: ${e}`)}},async checkLanguage(e){h();const t={SourceText:e,Source:"auto",Target:"en",ProjectId:0},g=JSON.stringify(t),d=C({secretId:a,secretKey:n,service:"tmt",host:s,payload:g,httpRequestMethod:"POST",action:u,apiVersion:l,region:r});try{const e=await fetch(c,{method:"POST",headers:d,body:g});if(!e.ok)throw new i(o,`HTTP ${e.status}: ${await e.text()}`);const a=await e.json();if(a.Response?.Error)throw new i(o,`Tencent language detect fail: ${a.Response.Error.Code}, ${a.Response.Error.Message} \n Go to https://cloud.tencent.com/document/product/551/15619 view details`);const n=a.Response?.Source;if(!n)throw new i(o,"Language detect fail! No result returned");return n}catch(e){if(e instanceof i)throw e;throw new i(o,`Language detection failed: ${e}`)}}}}};var A={Afrikaans:"af",Albanian:"sq",Amharic:"am",Arabic:"ar",Armenian:"hy",Assamese:"as",Azerbaijani:"az",Bashkir:"ba",Basque:"eu",Bengali:"bn",Bhojpuri:"bho",Bosnian:"bs",Bulgarian:"bg",Burmese:"my","Cantonese (Traditional)":"yue",Catalan:"ca",Chhattisgarhi:"hne",Chinese:"zh-Hans","Chinese (Literary)":"lzh","Chinese (Traditional)":"zh-Hant",Croatian:"hr",Czech:"cs",Danish:"da",Dari:"prs",Dhivehi:"dv",Dogri:"doi",Double:"lug",Dutch:"nl",English:"en",Estonian:"et","FYRO Macedonian":"mk",Faroese:"fo",Fijian:"fj",Filipino:"fil",Finnish:"fi",French:"fr","French (Canada)":"fr-CA",Galician:"gl",Georgian:"ka",German:"de",Greek:"el",Gujarati:"gu","Haitian Creole":"ht",Hausa:"ha",Hebrew:"he",Hindi:"hi",Hmong:"mww",Hungarian:"hu",Icelandic:"is",Igbo:"ig",Indonesian:"id",Inuinnaqtun:"ikt",Inuktitut:"iu","Inuktitut (Latin)":"iu-Latn",Irish:"ga",Italian:"it",Japanese:"ja",Kannada:"kn",Kashmiri:"ks",Kazakh:"kk",Khmer:"km",Kikwanda:"rw","Klingon (Latin)":"tlh-Latn","Klingon (pIqaD)":"tlh-Piqd",Konkani:"gom",Korean:"ko","Kurdish (Medium)":"ku","Kurdish (North)":"kmr",Kyrgyz:"ky",Lao:"lo",Latvian:"lv",Lingala:"ln",Lithuanian:"lt","Lower Sorbian language":"dsb",Maithili:"mai",Malagasian:"mg",Malay:"ms",Malayalam:"ml",Maltese:"mt",Manipuri:"mni",Marathi:"mr","Mongolian (Cyrillic)":"mn-Cyrl","Mongolian (Traditional)":"mn-Mong","Māori":"mi",Nepali:"ne","Norwegian Bokmål":"nb",Nyanja:"nya",Oriya:"or",Pashto:"ps",Persian:"fa",Polish:"pl","Portugal (Brazil)":"pt","Portugal (Portugal)":"pt-PT",Punjabi:"pa","Querétaro Ottomi":"otq",Romanian:"ro",Rounds:"run",Russian:"ru",Samoan:"sm","Serbia (Latin)":"sr-Latn","Serbian (Cyrillic)":"sr-Cyrl",Sesotho:"st","Sesotho at Leboa":"nso",Setswana:"tn",Shona:"sn",Sindhi:"sd",Sinhalese:"si",Slovak:"sk",Slovenian:"sl",Somali:"so",Spanish:"es",Swahili:"sw",Swedish:"sv",Tahiti:"ty",Tamil:"ta",Tatar:"tt",Telugu:"te",Thai:"th",Tibetan:"bo",Tigrinya:"ti",Tongan:"to",Turkish:"tr",Turkmen:"tk",Uighur:"ug",Ukrainian:"uk","Upper Sorbian":"hsb",Urdu:"ur",Uzbek:"uz",Vietnamese:"vi",Welsh:"cy",Will:"brx",Xhosa:"xh",Yoruba:"yo","Yucatec Maya":"yua",Zulu:"zu"},x={Abkhazian:"ab",Acehnese:"ace","Acholi language":"ach",Afar:"aa",Afrikaans:"af",Albanian:"sq",Alur:"alz",Amharic:"am",Arabic:"ar",Armenian:"hy",Assamese:"as",Avar:"av",Awadhi:"awa",Aymara:"ay",Azerbaijani:"az",Badawi:"bew",Balinese:"ban",Balochi:"bal",Bambara:"bm",Bangasinan:"pag",Bashkir:"ba",Basque:"eu",Batakkalo:"btx","Bataksi Marungon":"bts",Bataktoba:"bbc",Baure:"bci",Belarusian:"be",Bengali:"bn",Bhojpuri:"bho",Bikol:"bik",Bosnian:"bs",Breton:"br",Bulgarian:"bg",Burmese:"my","Buryat language":"bua",Cantonese:"yue",Casey:"kha",Catalan:"ca",Cebuano:"ceb","Chamorro language":"ch",Chechen:"ce",Chevi:"ak",Chicheva:"ny",Chiga:"cgg",Chinese:"zh-CN","Chinese (Traditional)":"zh-TW",Chuk:"chk",Chuvash:"cv",Conga:"ts",Corsican:"co","Crimean Tatar":"crh",Croatian:"hr",Czech:"cs",Danish:"da",Dari:"fa-AF",Dhivehi:"dv",Dinka:"din",Dogra:"doi",Dutch:"nl",Dyula:"dyu",Dzongka:"dz",Elocano:"ilo",English:"en",Esperanto:"eo",Estonian:"et",Ewe:"ee","FYRO Macedonian":"mk",Faroese:"fo","Feng language":"fon",Fijian:"fj",Filipino:"tl",Finnish:"fi",French:"fr",Frisian:"fy",Friulian:"fur",Fulani:"ff",Ga:"gaa",Galician:"gl",Georgian:"ka",German:"de",Gongen:"gom",Gorkbojok:"trp","Grace and Taoism":"ndc-ZW",Greek:"el",Greenlandic:"kl",Guarani:"gn",Gujarati:"gu","Haitian Creole":"ht",Hakachin:"cnh",Hausa:"ha",Hawaiian:"haw",Hebrew:"iw",Heligaignon:"hil",Hindi:"hi",Hmong:"hmn",Hungarian:"hu","Hunsrück":"hrx",Iban:"iba",Icelandic:"is",Igbo:"ig",Indonesian:"id",Irish:"ga",Italian:"it","Jamaica vernacular":"jam",Japanese:"ja",Javanese:"jw","Jingpo language":"kac",Kannada:"kn",Kanuri:"kr",Kazakh:"kk",Kekchi:"kek",Khmer:"km",Kikwanda:"rw",Kithuba:"ktu","Komi language":"kv",Kongo:"kg",Korean:"ko","Kurdish (Kurmanji)":"ku","Kurdish (Solani)":"ckb",Kyrgyz:"ky",Lao:"lo",Latin:"la",Latvian:"lv",Ligurian:"lij",Limburg:"li",Lingala:"ln",Lithuanian:"lt",Lombard:"lmo",Luganda:"lg",Luo:"luo",Luxembourg:"lb",Madura:"mad",Maithili:"mai",Makassar:"mak",Malagasian:"mg",Malay:"ms","Malay, Jawi":"ms-Arab",Malayalam:"ml",Maltese:"mt","Malwadi language":"mwr",Mamu:"mam",Manx:"gv",Marathi:"mr",Marshallese:"mh","Mauritius Scrio whispers":"mfe","Meitei (Manipur)":"mni-Mtei",Minan:"min",Mizo:"lus",Mongolian:"mn","Māori":"mi","Nahuatl (Eastern Vastka)":"nhe","Ndebele (Southern)":"nr",Ndombe:"dov","Nepal Language (Newar)":"new",Nepali:"ne","Nko alphabet (West African written script)":"bm-Nkoo","Northern Sotho":"nso",Norwegian:"no",Nuer:"nus",Occitan:"oc",Oriya:"or","Oromo language":"om",Ossetian:"os",Pampangja:"pam",Papiamento:"pap",Pashto:"ps",Pemba:"bem",Persian:"fa",Polish:"pl","Portugal (Brazil)":"pt","Portugal (Portugal)":"pt-PT","Punjabi (Gurumuchi)":"pa","Punjabi (Shamuki)":"pa-Arab",Quechua:"qu",Ratgale:"ltg",Romani:"rom",Romanian:"ro",Rondi:"rn",Russian:"ru",Sabatec:"zap",Sakha:"sah",Samoan:"sm",Sango:"sg",Sanskrit:"sa",Santali:"sat-Latn","Schuna language":"sn","Scottish Gaelic":"gd",Serbian:"sr","Seychellois Creole":"crs",Shan:"shn",Sicilian:"scn","Sierra Leonean Creole":"kri",Silesian:"szl",Sindhi:"sd",Sinhalese:"si",Slovak:"sk",Slovenian:"sl",Somali:"so","South Sotho":"st",Spanish:"es","Steppe Mali":"chm",Sundanese:"su","Susu language":"sus",Swahili:"sw",Swat:"ss",Swedish:"sv","Sámi (North)":"se",Tahiti:"ty",Tajik:"tg",Tamaset:"ber-Latn","Tamazight (Tifinaven)":"ber",Tamil:"ta",Tatar:"tt",Telugu:"te",Tetum:"tet",Thai:"th",Tibetan:"bo","Tiff language":"tiv",Tigrinya:"ti","Tok Pisin":"tpi",Tongan:"to",Tswana:"tn",Tulu:"tcy","Tumbuka language":"tum",Turkish:"tr",Turkmen:"tk",Tuvan:"tyv",Udmurtic:"udm",Uighur:"ug",Ukrainian:"uk",Urdu:"ur",Uzbek:"uz",Venda:"ve",Venetian:"vec",Vietnamese:"vi","Wari language":"war",Welsh:"cy","Wolof language":"wo",Xhosa:"xh",Yiddish:"yi",Yoruba:"yo","Yucatan Maya":"yua",Zulu:"zu"},z={Achinese:"ach",Afrikaans:"afr",Akan:"aka",Albanian:"alb","Algerian Arabic":"arq",Amharic:"amh","Ancient Greek":"gra",Arabic:"ara",Aragonese:"arg",Armenian:"arm",Assamese:"asm",Asturian:"ast",Aymara:"aym",Azerbaijani:"aze",Baluchi:"bal",BasaSunda:"sun",Bashkir:"bak",Basque:"baq",Belarusian:"bel",Bemba:"bem",Bengali:"ben","Berber languages":"ber",Bhojpuri:"bho",Bislama:"bis",Blin:"bli","Bokmål":"nob",Bosnian:"bos","Brazilian Portuguese":"pot",Breton:"bre",Bulgarian:"bul",Buriat:"bui",Burmese:"bur","Canadian French":"frn",Cantonese:"yue",Catalan:"cat",Cebuano:"ceb",Chechen:"che",Cherokee:"chr",Chichewa:"nya",Chinese:"zh",Chuvash:"chv","Classical Chinese":"wyw",Cornish:"cor",Corsican:"cos",Creek:"cre","Crimean Tatar":"cri",Croatian:"hrv",Czech:"cs",Danish:"dan",Divehi:"div",Dutch:"nl",Dzongkha:"dzo",English:"en",Esperanto:"epo",Estonian:"est",Faroese:"fao",Filipino:"fil",Finnish:"fin",French:"fra",Friulian:"fri",Fulani:"ful",Gaelic:"gla",Galician:"glg",Georgian:"geo",German:"de",Greek:"el",Guarani:"grn",Gujarati:"guj","Haitian Creole":"ht","Hakha Chin":"hak",Hausa:"hau",Hawaiian:"haw",Hebrew:"heb",Hiligaynon:"hil",Hindi:"hi",Hmong:"hmn",Hungarian:"hu",Hupa:"hup",Icelandic:"ice",Ido:"ido",Igbo:"ibo",Indonesian:"id",Ingush:"ing","Interlingua ":"ina",Inuktitut:"iku",Irish:"gle",Italian:"it",Japanese:"jp",Javanese:"jav",Kabyle:"kab",Kalaallisut:"kal",Kalmyk:"kam",Kannada:"kan",Kanuri:"kau",Kashmiri:"kas",Kashubian:"kah",Khmer:"hkm",Kinyarwanda:"kin",Klingon:"kli",Kongo:"kon",Konkani:"kok",Korean:"kor",Kurdish:"kur",Kyrgyz:"kir",Lao:"lao",Latgalian:"lag",Latin:"lat",Latvian:"lav",Limburgish:"lim",Lingala:"lin",Lithuanian:"lit",Lojban:"loj","Low German":"log","Lower Sorbian":"los",Luganda:"lug",Luxembourgish:"ltz",Macedonian:"mac",Maithili:"mai",Malagasy:"mg",Malay:"may",Malayalam:"mal",Maltese:"mlt",Manx:"glv",Maori:"mao",Marathi:"mar",Marshallese:"mah","Mauritian Creole":"mau","Middle French":"frm",Mongolian:"moc",Montenegrin:"mot","N'Ko":"nqo",Neapolitan:"nea",Nepali:"nep","Northern Sami":"sme","Northern Sotho":"ped",Norwegian:"nor",Nynorsk:"nno",Occitan:"oci",Ojibwa:"oji","Old English":"eno",Oriya:"ori",Oromo:"orm",Ossetian:"oss",Pampanga:"pam",Papiamento:"pap",Pashto:"pus",Persian:"per",Polish:"pl",Portuguese:"pt",Punjabi:"pan",Quechua:"que",Romanian:"rom",Romansh:"roh",Romany:"ro",Russian:"ru",Rusyn:"ruy",Samoan:"sm",Sanskrit:"san",Sardinian:"srd",Scots:"sco","Serb(Cyrillic)":"src",Serbian:"srp","Serbo-Croatian":"sec",Shan:"sha",Shona:"sna",Silesian:"sil",Sindhi:"snd",Sinhala:"sin",Slovak:"sk",Slovenian:"slo",Somali:"som","Songhai languages":"sol","Southern Ndebele":"nbl","Southern Sotho":"sot",Spanish:"spa",Swahili:"swa",Swedish:"swe",Syriac:"syr",Tagalog:"tgl",Tajik:"tgk",Tamil:"tam",Tatar:"tat",Telugu:"tel",Tetum:"tet",Thai:"th",Tibetan:"tib",Tigrinya:"tir","Traditional Chinese":"cht",Tsonga:"tso","Tunisian Arabic":"tua",Turkish:"tr",Turkmen:"tuk",Twi:"twi",Ukrainian:"ukr","Upper Sorbian":"ups",Urdu:"urd",Uyghur:"uig",Venda:"ven",Vietnamese:"vie",Walloon:"wln",Welsh:"wel","Western Frisian":"fry",Wolof:"wol",Xhosa:"xho",Yiddish:"yid",Yoruba:"yor",Zaza:"zaz",Zulu:"zul"},M={Afrikaans:"af",Albanian:"sq",Amharic:"am",Arabic:"ar",Armenian:"hy",Azerbaijani:"az",Bengali:"bn",Bosnian:"bs",Bulgarian:"bg",Catalan:"ca","Chinese (Simplified)":"zh","Chinese (Traditional)":"zh-TW",Croatian:"hr",Czech:"cs",Danish:"da",Dari:"fa-AF",Dutch:"nl",English:"en",Estonian:"et","Farsi (Persian)":"fa","Filipino, Tagalog":"tl",Finnish:"fi",French:"fr","French (Canada)":"fr-CA",Georgian:"ka",German:"de",Greek:"el",Gujarati:"gu","Haitian Creole":"ht",Hausa:"ha",Hebrew:"he",Hindi:"hi",Hungarian:"hu",Icelandic:"is",Indonesian:"id",Irish:"ga",Italian:"it",Japanese:"ja",Kannada:"kn",Kazakh:"kk",Korean:"ko",Latvian:"lv",Lithuanian:"lt",Macedonian:"mk",Malay:"ms",Malayalam:"ml",Maltese:"mt",Marathi:"mr",Mongolian:"mn","Norwegian (Bokmål)":"no",Pashto:"ps",Polish:"pl","Portuguese (Brazil)":"pt","Portuguese (Portugal)":"pt-PT",Punjabi:"pa",Romanian:"ro",Russian:"ru",Serbian:"sr",Sinhala:"si",Slovak:"sk",Slovenian:"sl",Somali:"so",Spanish:"es","Spanish (Mexico)":"es-MX",Swahili:"sw",Swedish:"sv",Tamil:"ta",Telugu:"te",Thai:"th",Turkish:"tr",Ukrainian:"uk",Urdu:"ur",Uzbek:"uz",Vietnamese:"vi",Welsh:"cy"};const j={azure:A,google:x,baidu:z,deepl:{English:"en",Bulgarian:"bg",Chinese:"zh",Croatian:"hr",Czech:"cs",Danish:"da",Dutch:"nl",Estonian:"et",Finnish:"fi",French:"fr",German:"de",Greek:"el",Hungarian:"hu",Icelandic:"is",Indonesian:"id",Irish:"ga",Italian:"it",Japanese:"ja",Korean:"ko",Latvian:"lv",Lithuanian:"lt",Maltese:"mt",Norwegian:"nb",Polish:"pl",Portuguese:"pt",Romanian:"ro",Russian:"ru",Slovak:"sk",Slovenian:"sl",Spanish:"es",Swedish:"sv",Turkish:"tr",Ukrainian:"uk"},amazon:M,openai:x,tencent:{Auto:"auto",Chinese:"zh",TraditionalChinese:"zh-TW",English:"en",Japanese:"ja",Korean:"ko",French:"fr",Spanish:"es",Italian:"it",German:"de",Turkish:"tr",Russian:"ru",Portuguese:"pt",Vietnamese:"vi",Indonesian:"id",Thai:"th",Malay:"ms",Arabic:"ar",Hindi:"hi"}};const B={azure:A,google:x,baidu:z,deepl:{"American English":"en-US","Brazilian Portuguese":"pt-BR","British English":"en-GB",Bulgarian:"bg",Chinese:"zh",Croatian:"hr",Czech:"cs",Danish:"da",Dutch:"nl",Estonian:"et","European Portuguese":"pt-PT",Finnish:"fi",French:"fr",German:"de",Greek:"el",Hungarian:"hu",Icelandic:"is",Indonesian:"id",Irish:"ga",Italian:"it",Japanese:"ja",Korean:"ko",Latvian:"lv",Lithuanian:"lt",Maltese:"mt",Norwegian:"nb",Polish:"pl",Portuguese:"pt",Romanian:"ro",Russian:"ru",Slovak:"sk",Slovenian:"sl",Spanish:"es",Swedish:"sv",Turkish:"tr",Ukrainian:"uk"},amazon:M,openai:x,tencent:{"Simplified Chinese":"zh","Traditional Chinese":"zh-TW",English:"en",Japanese:"ja",Korean:"ko",French:"fr",Spanish:"es",Italian:"it",German:"de",Turkish:"tr",Russian:"ru",Portuguese:"pt",Vietnamese:"vi",Indonesian:"id",Thai:"th",Malay:"ms",Arabic:"ar",Hindi:"hi"}};const L=Object.assign(Object.assign({},j),{baidu:{Chinese:"zh",English:"en",Japanese:"jp",Korean:"kor",Thai:"th",Russian:"ru"}});function P(e,a){if("auto"===e)return"auto";const n=j[a];if(!n)throw new Error(`Engine ${a} not found`);if(Object.keys(j[a]).includes(e))return n[e];if(Object.values(j[a]).includes(e))return e;throw new Error(`Invalid from language ${a} ${e}`)}function _(e,a){const n=B[a];if(!n)throw new Error(`Engine ${a} not found`);if(Object.keys(B[a]).includes(e))return n[e];if(Object.values(B[a]).includes(e))return e;throw new Error(`Invalid to language ${a} ${e}`)}function K(e){return{from:j[e],to:B[e]}}const I="Translate",H=1e3,E=s(),O=new o;class R{engines;cache_time;concurrencyMax;concurrencyDelay;constructor(e=6e4,a=4,n=20){this.engines=new Map,this.cache_time=e,this.concurrencyMax=a,this.concurrencyDelay=n}use(e){this.addEngine(e)}addEngine(e){this.engines.has(e.name)?E.warn("Engine already exists"):this.engines.set(e.name,e)}removeEngine(e){if(!e||!this.engines.has(e))return E.warn("Engine name is required or not found"),!1;this.engines.delete(e)}isSupportCheckLanguage(e){if(!e||!this.engines.has(e))return E.warn("Engine name is required or not found"),!1;const a=this.engines.get(e);return a?!!a.checkLanguage:(E.warn(`Engine ${e} not found`),!1)}async checkLanguage(e,a){const{engine:n="google",max_character_num:r=H}=a;if(!this.engines.has(n))throw new i(I,`Engine ${n} not found`);const o=this.engines.get(n);if(!o)throw new i(I,`Engine ${n} is null`);if(!o.checkLanguage)throw new i(I,`Engine ${n} does not support checkLanguage method`);const s=r>0?e.substring(0,r):e;if(s.length<=0)throw new t(I,"Text is empty or too short to check language");return o.checkLanguage(s).then(e=>e).catch(a=>{throw E.error(`${I} Failed to check language for text: \n${c()}\n${e}\n${c()}\n error: ${l(a)}`),a})}async translate(e,a){const{engine:n="google",cache_time:i=6e4}=a;let{from:r="auto",to:o}=a;if(r=a.from=P(r,n),o=a.to=_(o,n),!this.engines.has(n))throw new t(I,`Engine ${n} not found`);const s=this.engines.get(n);if(!s)throw new t(I,`Engine ${n} is null`);if(!r)throw new t(I,`Invalid origin language ${r}`);if(!o)throw new t(I,`Invalid target language ${o}`);const u=`${r}:${o}:${n}:${e}`;return O.get(u)?Promise.resolve(O.get(u)?.value):this.concurrencyHandle(s,e,a).then(e=>(O.set(u,e,i??this.cache_time),e)).catch(a=>{throw E.error(`${I} Failed: from=${r},to=${o},engine=${n},translate text: \n${c()}\n${e}\n${c()}\n error: ${l(a)}`),a instanceof t?a:new t(I,l(a))})}async concurrencyHandle(e,a,n){const{max_character_num:i=H}=n,r=i>0?i:H;if(Array.isArray(a)){if(function(e,a){return!(!e||e.length<=0)&&e.reduce((e,a)=>e+a.length,0)>a}(a,i))throw new t(I,"String arrays do not support automatic character splitting, and the total number of characters in a string array exceeds the limit on the number of translated characters.");return e.translate(a,n)}return this.concurrencyTranslate(e,a,n,r)}async concurrencyTranslate(e,a,n,t){const i=function(e,a){const n=[/\n\n+/,/[.。!??!\n]/,/[;;]/,/[,,]/g,/\s/],t=[];for(;e.length>0;){const i=e.slice(0,a);if(e.length<=a){t.push(e);break}let r=-1;for(const e of n){const n=new RegExp(e.source+"(?=[^]*)","g");let t,o;for(;null!==(t=n.exec(i));)t.index===n.lastIndex&&n.lastIndex++,o=null!=o?t.index>o.index?t:o:t;if(void 0!==o?.index&&o.index>=.7*a){r=o.index;break}}-1===r&&(r=i.lastIndexOf(" ",a),r=-1===r?a:r),0==r?e=e.slice(r+1):(t.push(e.slice(0,r)),e=e.slice(r))}return t}(a,t).map((e,a)=>({content:e,index:a})),r=[];let o=0;const s=this.concurrencyDelay,c=this.concurrencyMax;return new Promise((a,t)=>(function l(){for(;o<c&&i.length>0;){const{content:c,index:u}=i.shift();o++,e.translate(c,n).then(e=>{r.push({translated:e,index:u})}).catch(e=>t(e)).finally(async()=>{if(o--,0===o&&i.length<=0){r.sort((e,a)=>e.index-a.index);const e=r.reduce((e,a)=>e.concat(a.translated),[]);return a([e.join("")])}var e;await(e=s,new Promise(a=>setTimeout(a,e))),l()})}}(),r))}}const F=new R;var N={engines:$,translator:F,Translator:R,Cache:o,getLanguage:K};export{o as Cache,i as CheckLanguageError,r as OPEN_AI_MODELS,t as TranslationError,R as Translator,L as checkLanguages,N as default,$ as engines,K as getLanguage,P as normalFromLanguage,_ as normalToLanguage,j as originLanguages,B as targetLanguages,F as translator};