@deeplx/core 0.1.2 → 0.2.0

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.
package/lib/index.cjs CHANGED
@@ -1,91 +1,129 @@
1
1
  'use strict';
2
2
 
3
- var whatlangNode = require('whatlang-node');
3
+ var node_crypto = require('node:crypto');
4
+ var proxy = require('node-fetch-native/proxy');
4
5
  var xFetch = require('x-fetch');
5
6
 
7
+ var __defProp$1 = Object.defineProperty;
8
+ var __defProps = Object.defineProperties;
9
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
+ var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
11
+ var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues$1 = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp$1.call(b, prop))
17
+ __defNormalProp$1(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols$1)
19
+ for (var prop of __getOwnPropSymbols$1(b)) {
20
+ if (__propIsEnum$1.call(b, prop))
21
+ __defNormalProp$1(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
6
26
  const SUPPORTED_LANGUAGES = [
27
+ { code: "AR", language: "Arabic" },
7
28
  { code: "BG", language: "Bulgarian" },
8
- { code: "ZH", language: "Chinese" },
9
29
  { code: "CS", language: "Czech" },
10
30
  { code: "DA", language: "Danish" },
11
- { code: "NL", language: "Dutch" },
31
+ { code: "DE", language: "German" },
32
+ { code: "EL", language: "Greek" },
12
33
  { code: "EN", language: "English" },
34
+ { code: "EN-GB", language: "English (British)" },
35
+ { code: "EN-US", language: "English (American)" },
36
+ { code: "ES", language: "Spanish" },
37
+ { code: "ES-419", language: "Spanish (Latin American)" },
13
38
  { code: "ET", language: "Estonian" },
14
39
  { code: "FI", language: "Finnish" },
15
40
  { code: "FR", language: "French" },
16
- { code: "DE", language: "German" },
17
- { code: "EL", language: "Greek" },
41
+ { code: "HE", language: "Hebrew" },
18
42
  { code: "HU", language: "Hungarian" },
43
+ { code: "ID", language: "Indonesian" },
19
44
  { code: "IT", language: "Italian" },
20
45
  { code: "JA", language: "Japanese" },
21
- { code: "LV", language: "Latvian" },
46
+ { code: "KO", language: "Korean" },
22
47
  { code: "LT", language: "Lithuanian" },
48
+ { code: "LV", language: "Latvian" },
49
+ { code: "NB", language: "Norwegian Bokm\xE5l" },
50
+ { code: "NL", language: "Dutch" },
23
51
  { code: "PL", language: "Polish" },
24
52
  { code: "PT", language: "Portuguese" },
53
+ { code: "PT-BR", language: "Portuguese (Brazilian)" },
54
+ { code: "PT-PT", language: "Portuguese (European)" },
25
55
  { code: "RO", language: "Romanian" },
26
56
  { code: "RU", language: "Russian" },
27
57
  { code: "SK", language: "Slovak" },
28
58
  { code: "SL", language: "Slovenian" },
29
- { code: "ES", language: "Spanish" },
30
59
  { code: "SV", language: "Swedish" },
31
60
  { code: "TR", language: "Turkish" },
32
- { code: "ID", language: "Indonesian" },
33
- { code: "UK", language: "Ukrainian" }
61
+ { code: "UK", language: "Ukrainian" },
62
+ { code: "VI", language: "Vietnamese" },
63
+ { code: "ZH", language: "Chinese" },
64
+ { code: "ZH-HANS", language: "Chinese (Simplified)" },
65
+ { code: "ZH-HANT", language: "Chinese (Traditional)" }
34
66
  ];
35
- const FORMALITY_TONES = /* @__PURE__ */ new Set([
36
- "formal",
37
- "informal",
38
- "undefined"
39
- ]);
40
- const API_URL = "https://www2.deepl.com/jsonrpc";
67
+ const ONESHOT_FREE_ENDPOINT = "https://oneshot-free.www.deepl.com/v1/translate";
68
+ const ONESHOT_PRO_ENDPOINT = "https://oneshot-pro.www.deepl.com/v1/translate";
69
+ const IMPERSONATED_CHROME_MAJOR = "120";
70
+ const CHROME_EXTENSION_VERSION = "1.86.0";
71
+ const CHROME_EXTENSION_ID = "cofdbpoegempjloogbagkncekinflcnj";
72
+ const MAX_FREE_TEXT_LENGTH = 1500;
41
73
  const HTTP_STATUS_OK = 200;
42
74
  const HTTP_STATUS_BAD_REQUEST = 400;
43
75
  const HTTP_STATUS_NOT_FOUND = 404;
44
76
  const HTTP_STATUS_NOT_ALLOWED = 405;
77
+ const HTTP_STATUS_PAYLOAD_TOO_LARGE = 413;
78
+ const HTTP_STATUS_TOO_MANY_REQUESTS = 429;
45
79
  const HTTP_STATUS_INTERNAL_ERROR = 500;
46
80
  const HTTP_STATUS_SERVICE_UNAVAILABLE = 503;
47
- const COMMON_HEADERS = {
48
- "Content-Type": "application/json",
49
- "User-Agent": "DeepL/1627620 CFNetwork/3826.500.62.2.1 Darwin/24.4.0",
50
- Accept: "*/*",
51
- "X-App-Os-Name": "iOS",
52
- "X-App-Os-Version": "18.4.0",
53
- "Accept-Language": "en-US,en;q=0.9",
54
- "Accept-Encoding": "gzip, deflate, br",
55
- // Keep this!
56
- "X-App-Device": "iPhone16,2",
57
- Referer: "https://www.deepl.com/",
58
- "X-Product": "translator",
59
- "X-App-Build": "1627620",
60
- "X-App-Version": "25.1"
81
+ const TARGET_LANG_MAP = {
82
+ AR: "ar",
83
+ BG: "bg",
84
+ CS: "cs",
85
+ DA: "da",
86
+ DE: "de",
87
+ EL: "el",
88
+ "EN-GB": "en-GB",
89
+ "EN-US": "en-US",
90
+ ES: "es",
91
+ "ES-419": "es-419",
92
+ ET: "et",
93
+ FI: "fi",
94
+ FR: "fr",
95
+ HE: "he",
96
+ HU: "hu",
97
+ ID: "id",
98
+ IT: "it",
99
+ JA: "ja",
100
+ KO: "ko",
101
+ LT: "lt",
102
+ LV: "lv",
103
+ NB: "nb",
104
+ NL: "nl",
105
+ PL: "pl",
106
+ "PT-BR": "pt-BR",
107
+ "PT-PT": "pt-PT",
108
+ RO: "ro",
109
+ RU: "ru",
110
+ SK: "sk",
111
+ SL: "sl",
112
+ SV: "sv",
113
+ TR: "tr",
114
+ UK: "uk",
115
+ VI: "vi",
116
+ ZH: "zh-Hans",
117
+ "ZH-HANS": "zh-Hans",
118
+ "ZH-HANT": "zh-Hant",
119
+ EN: "en-US",
120
+ PT: "pt-BR"
61
121
  };
122
+ const SOURCE_LANG_MAP = __spreadProps(__spreadValues$1({}, TARGET_LANG_MAP), {
123
+ EN: "en",
124
+ PT: "pt"
125
+ });
62
126
 
63
- const getICount = (translateText) => {
64
- return (translateText.match(/i/g) || []).length;
65
- };
66
- const getRandomNumber = () => {
67
- const base = Math.floor(Math.random() * 99999) + 83e5;
68
- return base * 1e3;
69
- };
70
- const getTimeStamp = (iCount) => {
71
- const ts = Date.now();
72
- if (iCount !== 0) {
73
- const adjustedCount = iCount + 1;
74
- return ts - ts % adjustedCount + adjustedCount;
75
- }
76
- return ts;
77
- };
78
- const formatPostString = (postData) => {
79
- const postStr = JSON.stringify(postData);
80
- const shouldAddSpace = (
81
- // eslint-disable-next-line @typescript-eslint/no-magic-numbers
82
- (postData.id + 5) % 29 === 0 || (postData.id + 3) % 13 === 0
83
- );
84
- return postStr.replaceAll(
85
- '"method":"',
86
- shouldAddSpace ? `"method" : "` : `"method": "`
87
- );
88
- };
89
127
  let abbreviateLanguageDictionary;
90
128
  function getAbbreviateLanguages() {
91
129
  return abbreviateLanguageDictionary != null ? abbreviateLanguageDictionary : abbreviateLanguageDictionary = SUPPORTED_LANGUAGES.reduce(
@@ -102,8 +140,6 @@ function abbreviateLanguage(language) {
102
140
  }
103
141
 
104
142
  var __defProp = Object.defineProperty;
105
- var __defProps = Object.defineProperties;
106
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
107
143
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
108
144
  var __hasOwnProp = Object.prototype.hasOwnProperty;
109
145
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -119,7 +155,6 @@ var __spreadValues = (a, b) => {
119
155
  }
120
156
  return a;
121
157
  };
122
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
123
158
  var __async$1 = (__this, __arguments, generator) => {
124
159
  return new Promise((resolve, reject) => {
125
160
  var fulfilled = (value) => {
@@ -140,145 +175,179 @@ var __async$1 = (__this, __arguments, generator) => {
140
175
  step((generator = generator.apply(__this, __arguments)).next());
141
176
  });
142
177
  };
143
- const makeRequest = (postData, _proxyUrl, dlSession) => __async$1(void 0, null, function* () {
144
- return xFetch.fetchApi(API_URL, {
145
- method: "POST",
146
- body: formatPostString(postData),
147
- headers: dlSession ? __spreadProps(__spreadValues({}, COMMON_HEADERS), { Cookie: `dl_session=${dlSession}` }) : COMMON_HEADERS
148
- });
149
- });
150
- const splitAndProcess = (text) => text.split("\n").map((line) => line.trim() === "" ? "\n" : line);
151
- const translateByDeepLX = (sourceLang, targetLang, text, formal, tagHandling = "plaintext", proxyUrl, dlSession) => __async$1(void 0, null, function* () {
152
- var _a, _b;
153
- if (!text) {
154
- return { code: HTTP_STATUS_NOT_FOUND, message: "No text to translate" };
155
- }
156
- const textParts = splitAndProcess(text);
157
- const translatedParts = [];
158
- const allAlternatives = [];
159
- for (const part of textParts) {
160
- if (!part.trim()) {
161
- translatedParts.push("");
162
- allAlternatives.push([""]);
163
- continue;
164
- }
165
- if (!sourceLang || sourceLang === "auto") {
166
- sourceLang = whatlangNode.detectLang(part, true);
167
- }
168
- const sourceLangCode = (_a = abbreviateLanguage(sourceLang)) != null ? _a : sourceLang.toUpperCase();
169
- const jobs = [
170
- {
171
- kind: "default",
172
- preferred_num_beams: 4,
173
- raw_en_context_before: [],
174
- raw_en_context_after: [],
175
- sentences: [{ prefix: "", text: part, id: 0 }]
176
- }
177
- ];
178
- let hasRegionalVariant = false;
179
- let targetLangCode = (_b = abbreviateLanguage(targetLang)) != null ? _b : targetLang.toUpperCase();
180
- const targetLangParts = targetLang.split("-");
181
- if (targetLangParts.length > 1) {
182
- targetLangCode = targetLangParts[0];
183
- hasRegionalVariant = true;
184
- }
185
- const id = getRandomNumber();
186
- const postData = {
187
- jsonrpc: "2.0",
188
- method: "LMT_handle_jobs",
189
- id,
190
- params: {
191
- commonJobParams: __spreadValues({
192
- mode: "translate",
193
- formality: (
194
- // eslint-disable-next-line sonarjs/no-nested-conditional
195
- formal == null ? "undefined" : formal ? "formal" : "informal"
196
- ),
197
- transcribe_as: "romanize",
198
- advancedMode: false,
199
- textType: tagHandling,
200
- wasSpoken: false
201
- }, hasRegionalVariant && { regionalVariant: targetLang }),
202
- lang: {
203
- source_lang_user_selected: "auto",
204
- target_lang: targetLangCode,
205
- source_lang_computed: sourceLangCode
206
- },
207
- jobs,
208
- timestamp: getTimeStamp(getICount(part))
209
- }
210
- };
211
- let translations;
212
- try {
213
- const { result } = yield makeRequest(postData, proxyUrl, dlSession);
214
- translations = result.translations;
215
- } catch (error) {
216
- return {
217
- code: HTTP_STATUS_SERVICE_UNAVAILABLE,
218
- message: String(error)
219
- };
178
+ let instanceID_;
179
+ function getInstanceID() {
180
+ return instanceID_ != null ? instanceID_ : instanceID_ = node_crypto.randomUUID();
181
+ }
182
+ let sharedCookies = "";
183
+ let warmupPromise = null;
184
+ function warmCookies(proxyUrl) {
185
+ return __async$1(this, null, function* () {
186
+ if (warmupPromise !== null) {
187
+ return warmupPromise;
220
188
  }
221
- let partTranslation = "";
222
- const partAlternatives = [];
223
- if (translations.length > 0) {
224
- for (const translation of translations) {
225
- partTranslation += translation.beams[0].sentences[0].text + " ";
226
- }
227
- partTranslation = partTranslation.trim();
228
- const numBeams = translations[0].beams.length;
229
- for (let i = 1; i < numBeams; i++) {
230
- let altText = "";
231
- for (const translation of translations) {
232
- const beams = translation.beams;
233
- if (i < beams.length) {
234
- altText += beams[i].sentences[0].text + " ";
189
+ warmupPromise = (() => __async$1(null, null, function* () {
190
+ try {
191
+ const res = yield xFetch.xfetch("https://www.deepl.com/translator", __spreadValues({
192
+ type: null
193
+ }, proxy.createProxy({ url: proxyUrl })));
194
+ const setCookie = res.headers.get("set-cookie");
195
+ if (setCookie) {
196
+ const cookies = [];
197
+ const userCountryMatch = /userCountry=[^;]+/.exec(setCookie);
198
+ if (userCountryMatch) {
199
+ cookies.push(userCountryMatch[0]);
200
+ }
201
+ const verifiedBotMatch = /verifiedBot=[^;]+/.exec(setCookie);
202
+ if (verifiedBotMatch) {
203
+ cookies.push(verifiedBotMatch[0]);
204
+ }
205
+ if (cookies.length > 0) {
206
+ sharedCookies = cookies.join("; ");
235
207
  }
236
208
  }
237
- if (altText) {
238
- partAlternatives.push(altText.trim());
239
- }
209
+ } catch (e) {
210
+ warmupPromise = null;
240
211
  }
212
+ }))();
213
+ return warmupPromise;
214
+ });
215
+ }
216
+ function resolveLang(code, kind) {
217
+ if (!code || code.toLowerCase() === "auto") {
218
+ if (kind === "target") {
219
+ return { success: false, error: 'target_lang cannot be "auto" or empty' };
241
220
  }
242
- if (!partTranslation) {
243
- return {
244
- code: HTTP_STATUS_SERVICE_UNAVAILABLE,
245
- message: "Translation failed"
246
- };
247
- }
248
- translatedParts.push(partTranslation);
249
- allAlternatives.push(partAlternatives);
221
+ return { success: true, value: void 0 };
250
222
  }
251
- const translatedText = translatedParts.join("\n");
252
- const combinedAlternatives = [];
253
- let maxAlts = 0;
254
- for (const alts of allAlternatives) {
255
- if (alts.length > maxAlts) {
256
- maxAlts = alts.length;
223
+ const langMap = kind === "target" ? TARGET_LANG_MAP : SOURCE_LANG_MAP;
224
+ const upperCode = code.toUpperCase();
225
+ let mapped = langMap[upperCode];
226
+ if (!mapped) {
227
+ const abbreviated = abbreviateLanguage(code);
228
+ if (abbreviated) {
229
+ mapped = langMap[abbreviated.toUpperCase()];
257
230
  }
258
231
  }
259
- for (let i = 0; i < maxAlts; i++) {
260
- const altParts = [];
261
- for (const [j, alts] of allAlternatives.entries()) {
262
- if (i < alts.length) {
263
- altParts.push(alts[i]);
264
- } else if (translatedParts[j].length === 0) {
265
- altParts.push("");
266
- } else {
267
- altParts.push(translatedParts[j]);
268
- }
232
+ if (!mapped) {
233
+ return { success: false, error: `unsupported ${kind}_lang "${code}"` };
234
+ }
235
+ return { success: true, value: mapped };
236
+ }
237
+ function parseTranslationError(error, reqId) {
238
+ if (error instanceof xFetch.ResponseError) {
239
+ const status = error.response.status;
240
+ if (status === HTTP_STATUS_TOO_MANY_REQUESTS) {
241
+ return { code: status, id: reqId, message: "too many requests, ..." };
269
242
  }
270
- combinedAlternatives.push(altParts.join("\n"));
243
+ return { code: status, id: reqId, message: error.message };
271
244
  }
245
+ return {
246
+ code: HTTP_STATUS_SERVICE_UNAVAILABLE,
247
+ id: reqId,
248
+ message: String(error)
249
+ };
250
+ }
251
+ function buildHeaders(dlSession) {
252
+ const authValue = dlSession ? `Bearer ${dlSession}` : "None";
253
+ const headers = {
254
+ "Content-Type": "application/json",
255
+ Accept: "*/*",
256
+ Authorization: authValue,
257
+ Origin: `chrome-extension://${CHROME_EXTENSION_ID}`,
258
+ "Sec-Fetch-Site": "cross-site",
259
+ "Sec-Fetch-Mode": "cors",
260
+ "Sec-Fetch-Dest": "empty",
261
+ "Accept-Encoding": "gzip, deflate, br",
262
+ "User-Agent": `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${IMPERSONATED_CHROME_MAJOR}.0.0.0 Safari/537.36`
263
+ };
264
+ if (sharedCookies) {
265
+ headers["Cookie"] = sharedCookies;
266
+ }
267
+ return headers;
268
+ }
269
+ function processTranslationResponse(response, reqId, sourceLang, targetLang, dlSession) {
270
+ if (!(response == null ? void 0 : response.translations) || response.translations.length === 0) {
271
+ return {
272
+ code: HTTP_STATUS_SERVICE_UNAVAILABLE,
273
+ id: reqId,
274
+ message: "Translation failed"
275
+ };
276
+ }
277
+ const mainTranslation = response.translations[0];
278
+ if (!mainTranslation.text) {
279
+ return {
280
+ code: HTTP_STATUS_SERVICE_UNAVAILABLE,
281
+ id: reqId,
282
+ message: "Translation failed"
283
+ };
284
+ }
285
+ const detectedLang = mainTranslation.detected_source_language ? mainTranslation.detected_source_language.toUpperCase() : sourceLang || "auto";
272
286
  return {
273
287
  code: HTTP_STATUS_OK,
274
- id: getRandomNumber(),
275
- // Using new ID for the complete translation
276
- data: translatedText,
277
- alternatives: combinedAlternatives,
278
- sourceLang,
288
+ id: reqId,
289
+ data: mainTranslation.text,
290
+ alternatives: [],
291
+ sourceLang: detectedLang,
279
292
  targetLang,
280
293
  method: dlSession ? "Pro" : "Free"
281
294
  };
295
+ }
296
+ const translateByDeepLX = (sourceLang, targetLang, text, proxyUrl, dlSession) => __async$1(null, null, function* () {
297
+ if (!text) {
298
+ return { code: HTTP_STATUS_NOT_FOUND, message: "No text to translate" };
299
+ }
300
+ if ([...text].length > MAX_FREE_TEXT_LENGTH) {
301
+ return {
302
+ code: HTTP_STATUS_PAYLOAD_TOO_LARGE,
303
+ // Payload Too Large
304
+ message: `text exceeds maximum length: ${[...text].length} characters (anonymous oneshot limit is ${MAX_FREE_TEXT_LENGTH})`
305
+ };
306
+ }
307
+ if (!dlSession) {
308
+ yield warmCookies(proxyUrl);
309
+ }
310
+ const targetResult = resolveLang(targetLang, "target");
311
+ if (!targetResult.success) {
312
+ return { code: HTTP_STATUS_BAD_REQUEST, message: targetResult.error };
313
+ }
314
+ const sourceResult = resolveLang(sourceLang, "source");
315
+ if (!sourceResult.success) {
316
+ return { code: HTTP_STATUS_BAD_REQUEST, message: sourceResult.error };
317
+ }
318
+ const reqData = {
319
+ text: [text],
320
+ target_lang: targetResult.value,
321
+ source_lang: sourceResult.value,
322
+ usage_type: "Translate",
323
+ app_information: {
324
+ os: "brex_macOS",
325
+ os_version: `brex_chrome_${IMPERSONATED_CHROME_MAJOR}.0.0.0`,
326
+ app_version: CHROME_EXTENSION_VERSION,
327
+ app_build: "chrome_web_store",
328
+ instance_id: getInstanceID()
329
+ }
330
+ };
331
+ const reqId = Date.now();
332
+ try {
333
+ const response = yield xFetch.xfetch(
334
+ dlSession ? ONESHOT_PRO_ENDPOINT : ONESHOT_FREE_ENDPOINT,
335
+ __spreadValues({
336
+ method: "POST",
337
+ body: reqData,
338
+ headers: buildHeaders(dlSession)
339
+ }, proxy.createProxy({ url: proxyUrl }))
340
+ );
341
+ return processTranslationResponse(
342
+ response,
343
+ reqId,
344
+ sourceLang,
345
+ targetLang,
346
+ dlSession
347
+ );
348
+ } catch (error) {
349
+ return parseTranslationError(error, reqId);
350
+ }
282
351
  });
283
352
 
284
353
  var __async = (__this, __arguments, generator) => {
@@ -301,28 +370,37 @@ var __async = (__this, __arguments, generator) => {
301
370
  step((generator = generator.apply(__this, __arguments)).next());
302
371
  });
303
372
  };
304
- const translate = (text, targetLang, sourceLang, formal) => __async(void 0, null, function* () {
305
- const result = yield translateByDeepLX(sourceLang, targetLang, text, formal);
373
+ const translate = (text, targetLang, sourceLang, options) => __async(null, null, function* () {
374
+ const result = yield translateByDeepLX(
375
+ sourceLang,
376
+ targetLang,
377
+ text,
378
+ options == null ? void 0 : options.proxyUrl,
379
+ options == null ? void 0 : options.dlSession
380
+ );
306
381
  if ("message" in result) {
307
382
  throw new Error(result.message, { cause: result });
308
383
  }
309
384
  return result.data;
310
385
  });
311
386
 
312
- exports.API_URL = API_URL;
313
- exports.COMMON_HEADERS = COMMON_HEADERS;
314
- exports.FORMALITY_TONES = FORMALITY_TONES;
387
+ exports.CHROME_EXTENSION_ID = CHROME_EXTENSION_ID;
388
+ exports.CHROME_EXTENSION_VERSION = CHROME_EXTENSION_VERSION;
315
389
  exports.HTTP_STATUS_BAD_REQUEST = HTTP_STATUS_BAD_REQUEST;
316
390
  exports.HTTP_STATUS_INTERNAL_ERROR = HTTP_STATUS_INTERNAL_ERROR;
317
391
  exports.HTTP_STATUS_NOT_ALLOWED = HTTP_STATUS_NOT_ALLOWED;
318
392
  exports.HTTP_STATUS_NOT_FOUND = HTTP_STATUS_NOT_FOUND;
319
393
  exports.HTTP_STATUS_OK = HTTP_STATUS_OK;
394
+ exports.HTTP_STATUS_PAYLOAD_TOO_LARGE = HTTP_STATUS_PAYLOAD_TOO_LARGE;
320
395
  exports.HTTP_STATUS_SERVICE_UNAVAILABLE = HTTP_STATUS_SERVICE_UNAVAILABLE;
396
+ exports.HTTP_STATUS_TOO_MANY_REQUESTS = HTTP_STATUS_TOO_MANY_REQUESTS;
397
+ exports.IMPERSONATED_CHROME_MAJOR = IMPERSONATED_CHROME_MAJOR;
398
+ exports.MAX_FREE_TEXT_LENGTH = MAX_FREE_TEXT_LENGTH;
399
+ exports.ONESHOT_FREE_ENDPOINT = ONESHOT_FREE_ENDPOINT;
400
+ exports.ONESHOT_PRO_ENDPOINT = ONESHOT_PRO_ENDPOINT;
401
+ exports.SOURCE_LANG_MAP = SOURCE_LANG_MAP;
321
402
  exports.SUPPORTED_LANGUAGES = SUPPORTED_LANGUAGES;
403
+ exports.TARGET_LANG_MAP = TARGET_LANG_MAP;
322
404
  exports.abbreviateLanguage = abbreviateLanguage;
323
- exports.formatPostString = formatPostString;
324
- exports.getICount = getICount;
325
- exports.getRandomNumber = getRandomNumber;
326
- exports.getTimeStamp = getTimeStamp;
327
405
  exports.translate = translate;
328
406
  exports.translateByDeepLX = translateByDeepLX;
@@ -1,3 +1,3 @@
1
1
  import { type SourceLanguage, type TargetLanguage } from './constants.ts';
2
2
  import type { DeepLXTranslationResult } from './types.ts';
3
- export declare const translateByDeepLX: (sourceLang: SourceLanguage | undefined, targetLang: TargetLanguage, text: string, formal?: boolean, tagHandling?: string, proxyUrl?: string, dlSession?: string) => Promise<DeepLXTranslationResult>;
3
+ export declare const translateByDeepLX: (sourceLang: SourceLanguage | undefined, targetLang: TargetLanguage, text: string, proxyUrl?: string, dlSession?: string) => Promise<DeepLXTranslationResult>;