@translated/lara 1.8.5 โ 1.9.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/README.md +24 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -1
- package/lib/net/lara/browser-client.d.ts +1 -1
- package/lib/net/lara/browser-client.js +2 -1
- package/lib/net/lara/node-client.js +1 -0
- package/lib/styleguides.d.ts +15 -0
- package/lib/styleguides.js +24 -0
- package/lib/translator.d.ts +20 -0
- package/lib/translator.js +14 -1
- package/lib/utils/sdk-version.d.ts +1 -1
- package/lib/utils/sdk-version.js +1 -1
- package/lib_browser/lara.min.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -231,6 +231,30 @@ const detected = await lara.detect(
|
|
|
231
231
|
console.log(detected.language); // es
|
|
232
232
|
```
|
|
233
233
|
|
|
234
|
+
#### Quality Estimation
|
|
235
|
+
|
|
236
|
+
Use `qualityEstimation()` to score how well a translation matches its source. Pass a single sentence/translation pair to get a single result, or two parallel arrays to get one result per pair.
|
|
237
|
+
|
|
238
|
+
```javascript
|
|
239
|
+
// Single pair
|
|
240
|
+
const single = await lara.qualityEstimation(
|
|
241
|
+
"en-US",
|
|
242
|
+
"it-IT",
|
|
243
|
+
"Hello, how are you today?",
|
|
244
|
+
"Ciao, come stai oggi?"
|
|
245
|
+
);
|
|
246
|
+
console.log(single.score); // e.g. 0.768
|
|
247
|
+
|
|
248
|
+
// Batch
|
|
249
|
+
const batch = await lara.qualityEstimation(
|
|
250
|
+
"en-US",
|
|
251
|
+
"it-IT",
|
|
252
|
+
["Good morning.", "The weather is nice."],
|
|
253
|
+
["Buongiorno.", "Il tempo รจ bello."]
|
|
254
|
+
);
|
|
255
|
+
console.log(batch.map(r => r.score)); // e.g. [0.751, 0.713]
|
|
256
|
+
```
|
|
257
|
+
|
|
234
258
|
### ๐ Document Translation
|
|
235
259
|
#### Simple document translation
|
|
236
260
|
|
package/lib/index.d.ts
CHANGED
|
@@ -7,5 +7,6 @@ export { ImageParagraph, ImageTextResult, ImageTextTranslationOptions, ImageTran
|
|
|
7
7
|
export { Memories, Memory, MemoryImport, MemoryImportCallback } from "./memories";
|
|
8
8
|
export { MultiPartFile } from "./net/lara/client";
|
|
9
9
|
export type { LaraStream } from "./net/s3/laraStream";
|
|
10
|
-
export {
|
|
10
|
+
export { Styleguide, Styleguides } from "./styleguides";
|
|
11
|
+
export { DetectResult, NGGlossaryMatch, NGMemoryMatch, QualityEstimationResult, StyleguideChange, StyleguideResults, TextBlock, TextResult, TranslateOptions, Translator, TranslatorOptions } from "./translator";
|
|
11
12
|
export { version } from "./utils/sdk-version";
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.version = exports.Translator = exports.Memories = exports.ImageTranslator = exports.Glossaries = exports.TimeoutError = exports.LaraError = exports.LaraApiError = exports.Documents = exports.DocumentStatus = exports.Credentials = exports.AuthToken = exports.AccessKey = exports.VoiceGender = exports.AudioTranslator = exports.AudioStatus = void 0;
|
|
3
|
+
exports.version = exports.Translator = exports.Styleguides = exports.Memories = exports.ImageTranslator = exports.Glossaries = exports.TimeoutError = exports.LaraError = exports.LaraApiError = exports.Documents = exports.DocumentStatus = exports.Credentials = exports.AuthToken = exports.AccessKey = exports.VoiceGender = exports.AudioTranslator = exports.AudioStatus = void 0;
|
|
4
4
|
var audioTranslator_1 = require("./audioTranslator");
|
|
5
5
|
Object.defineProperty(exports, "AudioStatus", { enumerable: true, get: function () { return audioTranslator_1.AudioStatus; } });
|
|
6
6
|
Object.defineProperty(exports, "AudioTranslator", { enumerable: true, get: function () { return audioTranslator_1.AudioTranslator; } });
|
|
@@ -22,6 +22,8 @@ var imageTranslator_1 = require("./imageTranslator");
|
|
|
22
22
|
Object.defineProperty(exports, "ImageTranslator", { enumerable: true, get: function () { return imageTranslator_1.ImageTranslator; } });
|
|
23
23
|
var memories_1 = require("./memories");
|
|
24
24
|
Object.defineProperty(exports, "Memories", { enumerable: true, get: function () { return memories_1.Memories; } });
|
|
25
|
+
var styleguides_1 = require("./styleguides");
|
|
26
|
+
Object.defineProperty(exports, "Styleguides", { enumerable: true, get: function () { return styleguides_1.Styleguides; } });
|
|
25
27
|
var translator_1 = require("./translator");
|
|
26
28
|
Object.defineProperty(exports, "Translator", { enumerable: true, get: function () { return translator_1.Translator; } });
|
|
27
29
|
var sdk_version_1 = require("./utils/sdk-version");
|
|
@@ -4,7 +4,7 @@ import { type BaseURL, type ClientResponse, LaraClient, type MultiPartFile } fro
|
|
|
4
4
|
export declare class BrowserLaraClient extends LaraClient {
|
|
5
5
|
private readonly baseUrl;
|
|
6
6
|
private readonly timeout;
|
|
7
|
-
constructor(baseUrl: BaseURL, auth: AccessKey | AuthToken,
|
|
7
|
+
constructor(baseUrl: BaseURL, auth: AccessKey | AuthToken, _keepAlive: boolean, timeout?: number);
|
|
8
8
|
protected send(method: string, path: string, headers: Record<string, string>, body?: Record<string, any>, streamResponse?: boolean): Promise<ClientResponse>;
|
|
9
9
|
protected sendAndGetStream(method: string, path: string, headers: Record<string, string>, body?: Record<string, any>): AsyncGenerator<ClientResponse>;
|
|
10
10
|
protected wrapMultiPartFile(file: MultiPartFile): File;
|
|
@@ -8,7 +8,7 @@ function hasDefaultPort(port, secure) {
|
|
|
8
8
|
}
|
|
9
9
|
/** @internal */
|
|
10
10
|
class BrowserLaraClient extends client_1.LaraClient {
|
|
11
|
-
constructor(baseUrl, auth,
|
|
11
|
+
constructor(baseUrl, auth, _keepAlive, timeout) {
|
|
12
12
|
super(auth);
|
|
13
13
|
let url = `${baseUrl.secure ? "https" : "http"}://${baseUrl.hostname}`;
|
|
14
14
|
if (!hasDefaultPort(baseUrl.port, baseUrl.secure))
|
|
@@ -183,6 +183,7 @@ class BrowserLaraClient extends client_1.LaraClient {
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
exports.BrowserLaraClient = BrowserLaraClient;
|
|
186
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: used as a namespace for HTTP client methods
|
|
186
187
|
class BrowserClient {
|
|
187
188
|
static async get(url, headers) {
|
|
188
189
|
return BrowserClient.send("GET", url, headers);
|
|
@@ -280,6 +280,7 @@ class NodeLaraClient extends client_1.LaraClient {
|
|
|
280
280
|
}
|
|
281
281
|
}
|
|
282
282
|
exports.NodeLaraClient = NodeLaraClient;
|
|
283
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: used as a namespace for HTTP client methods
|
|
283
284
|
class NodeClient {
|
|
284
285
|
static get(url, headers) {
|
|
285
286
|
return NodeClient.send("GET", url, headers);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LaraClient } from "./net/lara";
|
|
2
|
+
export interface Styleguide {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
content?: string;
|
|
6
|
+
ownerId: string;
|
|
7
|
+
createdAt: Date;
|
|
8
|
+
updatedAt: Date;
|
|
9
|
+
}
|
|
10
|
+
export declare class Styleguides {
|
|
11
|
+
private readonly client;
|
|
12
|
+
constructor(client: LaraClient);
|
|
13
|
+
list(): Promise<Styleguide[]>;
|
|
14
|
+
get(id: string): Promise<Styleguide | null>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Styleguides = void 0;
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
|
+
class Styleguides {
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
async list() {
|
|
10
|
+
return await this.client.get("/v2/styleguides");
|
|
11
|
+
}
|
|
12
|
+
async get(id) {
|
|
13
|
+
try {
|
|
14
|
+
return await this.client.get(`/v2/styleguides/${id}`);
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
if (e instanceof errors_1.LaraApiError && e.statusCode === 404) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
throw e;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.Styleguides = Styleguides;
|
package/lib/translator.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { Glossaries } from "./glossaries";
|
|
|
5
5
|
import { ImageTranslator } from "./imageTranslator";
|
|
6
6
|
import { Memories } from "./memories";
|
|
7
7
|
import { type LaraClient } from "./net/lara";
|
|
8
|
+
import { Styleguides } from "./styleguides";
|
|
8
9
|
export type TranslatorOptions = {
|
|
9
10
|
serverUrl?: string;
|
|
10
11
|
connectionTimeoutMs?: number;
|
|
@@ -37,6 +38,16 @@ export interface TextBlock {
|
|
|
37
38
|
readonly text: string;
|
|
38
39
|
readonly translatable?: boolean;
|
|
39
40
|
}
|
|
41
|
+
export type StyleguideChange = {
|
|
42
|
+
id?: string;
|
|
43
|
+
originalTranslation: string;
|
|
44
|
+
refinedTranslation: string;
|
|
45
|
+
explanation: string;
|
|
46
|
+
};
|
|
47
|
+
export type StyleguideResults<T extends string | string[] | TextBlock[]> = {
|
|
48
|
+
originalTranslation: T;
|
|
49
|
+
changes: StyleguideChange[];
|
|
50
|
+
};
|
|
40
51
|
export interface TextResult<T extends string | string[] | TextBlock[]> {
|
|
41
52
|
readonly contentType: string;
|
|
42
53
|
readonly sourceLanguage: string;
|
|
@@ -46,6 +57,7 @@ export interface TextResult<T extends string | string[] | TextBlock[]> {
|
|
|
46
57
|
readonly adaptedToMatches?: NGMemoryMatch[] | NGMemoryMatch[][];
|
|
47
58
|
readonly glossariesMatches?: NGGlossaryMatch[] | NGGlossaryMatch[][];
|
|
48
59
|
readonly profanities?: ProfanityDetectResult | ProfanityDetectResult[];
|
|
60
|
+
readonly styleguideResults?: StyleguideResults<T>;
|
|
49
61
|
}
|
|
50
62
|
export type TranslateOptions = {
|
|
51
63
|
sourceHint?: string;
|
|
@@ -65,9 +77,15 @@ export type TranslateOptions = {
|
|
|
65
77
|
reasoning?: boolean;
|
|
66
78
|
metadata?: string | Record<string, unknown>;
|
|
67
79
|
profanityFilter?: ProfanityFilter;
|
|
80
|
+
styleguideId?: string;
|
|
81
|
+
styleguideReasoning?: boolean;
|
|
82
|
+
styleguideExplanationLanguage?: string;
|
|
68
83
|
};
|
|
69
84
|
export type TranslationStyle = "faithful" | "fluid" | "creative";
|
|
70
85
|
export type ProfanityFilter = "detect" | "avoid" | "hide";
|
|
86
|
+
export interface QualityEstimationResult {
|
|
87
|
+
score: number;
|
|
88
|
+
}
|
|
71
89
|
export interface DetectResult {
|
|
72
90
|
language: string;
|
|
73
91
|
contentType: string;
|
|
@@ -81,6 +99,7 @@ export declare class Translator {
|
|
|
81
99
|
readonly memories: Memories;
|
|
82
100
|
readonly documents: Documents;
|
|
83
101
|
readonly glossaries: Glossaries;
|
|
102
|
+
readonly styleguides: Styleguides;
|
|
84
103
|
readonly audio: AudioTranslator;
|
|
85
104
|
readonly images: ImageTranslator;
|
|
86
105
|
constructor(auth: AccessKey | AuthToken, options?: TranslatorOptions);
|
|
@@ -89,5 +108,6 @@ export declare class Translator {
|
|
|
89
108
|
translate<T extends string | string[] | TextBlock[]>(text: T, source: string | null, target: string, options?: TranslateOptions, callback?: (partialResult: TextResult<T>) => void): Promise<TextResult<T>>;
|
|
90
109
|
detect(text: string | string[], hint?: string, passlist?: string[]): Promise<DetectResult>;
|
|
91
110
|
detectProfanities(text: string, language: string, contentType: string): Promise<ProfanityDetectResult>;
|
|
111
|
+
qualityEstimation(source: string, target: string, sentence: string | string[], translation: string | string[]): Promise<QualityEstimationResult | QualityEstimationResult[]>;
|
|
92
112
|
static getLoginUrl(serverUrl?: string): Promise<string>;
|
|
93
113
|
}
|
package/lib/translator.js
CHANGED
|
@@ -40,6 +40,7 @@ const glossaries_1 = require("./glossaries");
|
|
|
40
40
|
const imageTranslator_1 = require("./imageTranslator");
|
|
41
41
|
const memories_1 = require("./memories");
|
|
42
42
|
const lara_1 = __importStar(require("./net/lara"));
|
|
43
|
+
const styleguides_1 = require("./styleguides");
|
|
43
44
|
const defaultBaseUrl_1 = require("./utils/defaultBaseUrl");
|
|
44
45
|
const sdk_version_1 = require("./utils/sdk-version");
|
|
45
46
|
class Translator {
|
|
@@ -48,6 +49,7 @@ class Translator {
|
|
|
48
49
|
this.memories = new memories_1.Memories(this.client);
|
|
49
50
|
this.documents = new documents_1.Documents(this.client);
|
|
50
51
|
this.glossaries = new glossaries_1.Glossaries(this.client);
|
|
52
|
+
this.styleguides = new styleguides_1.Styleguides(this.client);
|
|
51
53
|
this.audio = new audioTranslator_1.AudioTranslator(this.client);
|
|
52
54
|
this.images = new imageTranslator_1.ImageTranslator(this.client);
|
|
53
55
|
}
|
|
@@ -85,7 +87,10 @@ class Translator {
|
|
|
85
87
|
style: options === null || options === void 0 ? void 0 : options.style,
|
|
86
88
|
reasoning: options === null || options === void 0 ? void 0 : options.reasoning,
|
|
87
89
|
metadata: options === null || options === void 0 ? void 0 : options.metadata,
|
|
88
|
-
profanity_filter: options === null || options === void 0 ? void 0 : options.profanityFilter
|
|
90
|
+
profanity_filter: options === null || options === void 0 ? void 0 : options.profanityFilter,
|
|
91
|
+
styleguide_id: options === null || options === void 0 ? void 0 : options.styleguideId,
|
|
92
|
+
styleguide_reasoning: options === null || options === void 0 ? void 0 : options.styleguideReasoning,
|
|
93
|
+
styleguide_explanation_language: options === null || options === void 0 ? void 0 : options.styleguideExplanationLanguage
|
|
89
94
|
}, undefined, headers);
|
|
90
95
|
let lastResult;
|
|
91
96
|
for await (const partial of response) {
|
|
@@ -111,6 +116,14 @@ class Translator {
|
|
|
111
116
|
content_type: contentType
|
|
112
117
|
});
|
|
113
118
|
}
|
|
119
|
+
async qualityEstimation(source, target, sentence, translation) {
|
|
120
|
+
return await this.client.post("/v2/detect/quality-estimation", {
|
|
121
|
+
source,
|
|
122
|
+
target,
|
|
123
|
+
sentence,
|
|
124
|
+
translation
|
|
125
|
+
});
|
|
126
|
+
}
|
|
114
127
|
static async getLoginUrl(serverUrl) {
|
|
115
128
|
if (!serverUrl)
|
|
116
129
|
serverUrl = defaultBaseUrl_1.DEFAULT_BASE_URL;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "1.
|
|
1
|
+
export declare const version = "1.9.0";
|
package/lib/utils/sdk-version.js
CHANGED
package/lib_browser/lara.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Lara=e():t.Lara=e()}(this,()=>(()=>{"use strict";var t={50:function(t,e,r){var o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.Documents=e.DocumentStatus=void 0;const n=r(725),s=o(r(821)),i=o(r(841));var a;!function(t){t.INITIALIZED="initialized",t.ANALYZING="analyzing",t.PAUSED="paused",t.READY="ready",t.TRANSLATING="translating",t.TRANSLATED="translated",t.ERROR="error"}(a||(e.DocumentStatus=a={})),e.Documents=class{constructor(t){this.client=t,this.s3Client=(0,s.default)()}async upload(t,e,r,o,n){const{url:s,fields:a}=await this.client.get("/v2/documents/upload-url",{filename:e});await this.s3Client.upload(s,a,t,null==n?void 0:n.contentLength);const u=(null==n?void 0:n.noTrace)?{"X-No-Trace":"true"}:{};return this.client.post("/v2/documents",{source:r,target:o,s3key:a.key,adapt_to:null==n?void 0:n.adaptTo,glossaries:null==n?void 0:n.glossaries,style:null==n?void 0:n.style,password:null==n?void 0:n.password,extraction_params:(null==n?void 0:n.extractionParams)?(0,i.default)(n.extractionParams):void 0},void 0,u)}async status(t){return await this.client.get(`/v2/documents/${t}`)}async download(t,e){const{url:r}=await this.client.get(`/v2/documents/${t}/download-url`,{output_format:null==e?void 0:e.outputFormat});return await this.s3Client.download(r)}async downloadStream(t,e){const{url:r}=await this.client.get(`/v2/documents/${t}/download-url`,{output_format:null==e?void 0:e.outputFormat});return await this.s3Client.downloadStream(r)}async translate(t,e,r,o,s){const i={adaptTo:null==s?void 0:s.adaptTo,glossaries:null==s?void 0:s.glossaries,noTrace:null==s?void 0:s.noTrace,style:null==s?void 0:s.style,password:null==s?void 0:s.password,extractionParams:null==s?void 0:s.extractionParams,contentLength:null==s?void 0:s.contentLength},{id:u}=await this.upload(t,e,r,o,i),l=(null==s?void 0:s.outputFormat)?{outputFormat:s.outputFormat}:void 0,c=Date.now();for(;Date.now()-c<9e5;){await new Promise(t=>setTimeout(t,2e3));const{status:t,errorReason:e}=await this.status(u);if(t===a.TRANSLATED)return await this.download(u,l);if(t===a.ERROR)throw new n.LaraApiError(500,"DocumentError",e)}throw new n.TimeoutError}async translateStream(t,e,r,o,s){const i={adaptTo:null==s?void 0:s.adaptTo,glossaries:null==s?void 0:s.glossaries,noTrace:null==s?void 0:s.noTrace,style:null==s?void 0:s.style,password:null==s?void 0:s.password,extractionParams:null==s?void 0:s.extractionParams,contentLength:null==s?void 0:s.contentLength},{id:u}=await this.upload(t,e,r,o,i),l=(null==s?void 0:s.outputFormat)?{outputFormat:s.outputFormat}:void 0,c=Date.now();for(;Date.now()-c<9e5;){await new Promise(t=>setTimeout(t,2e3));const{status:t,errorReason:e}=await this.status(u);if(t===a.TRANSLATED)return await this.downloadStream(u,l);if(t===a.ERROR)throw new n.LaraApiError(500,"DocumentError",e)}throw new n.TimeoutError}}},221:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DEFAULT_BASE_URL=void 0,e.DEFAULT_BASE_URL="https://api.laratranslate.com"},311:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.version=void 0,e.version="1.8.5"},326:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return void 0===n&&(n=new o.BrowserCrypto),n};const o=r(780);let n},328:function(t,e,r){var o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.AudioTranslator=e.VoiceGender=e.AudioStatus=void 0;const n=r(725),s=o(r(821));var i,a;!function(t){t.INITIALIZED="initialized",t.ANALYZING="analyzing",t.PAUSED="paused",t.READY="ready",t.TRANSLATING="translating",t.TRANSLATED="translated",t.ERROR="error"}(i||(e.AudioStatus=i={})),function(t){t.MALE="male",t.FEMALE="female"}(a||(e.VoiceGender=a={})),e.AudioTranslator=class{constructor(t){this.client=t,this.s3Client=(0,s.default)()}async upload(t,e,r,o,n){const{url:s,fields:i}=await this.client.get("/v2/audio/upload-url",{filename:e});await this.s3Client.upload(s,i,t,null==n?void 0:n.contentLength);const a=(null==n?void 0:n.noTrace)?{"X-No-Trace":"true"}:{};return this.client.post("/v2/audio/translate",{source:r,target:o,s3key:i.key,adapt_to:null==n?void 0:n.adaptTo,glossaries:null==n?void 0:n.glossaries,style:null==n?void 0:n.style,voice_gender:null==n?void 0:n.voiceGender},void 0,a)}async status(t){return await this.client.get(`/v2/audio/${t}`)}async download(t){const{url:e}=await this.client.get(`/v2/audio/${t}/download-url`);return await this.s3Client.downloadStream(e)}async translate(t,e,r,o,s){const{id:a}=await this.upload(t,e,r,o,s),u=Date.now();for(;Date.now()-u<9e5;){await new Promise(t=>setTimeout(t,2e3));const{status:t,errorReason:e}=await this.status(a);if(t===i.TRANSLATED)return await this.download(a);if(t===i.ERROR)throw new n.LaraApiError(500,"AudioError",e)}throw new n.TimeoutError}}},343:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserS3Client=void 0;const o=r(364);class n extends o.S3Client{async _upload(t,e,r){const o=new FormData;for(const[t,r]of Object.entries(e))o.append(t,r);o.append("file",r),await fetch(t,{method:"POST",body:o})}async download(t){return(await fetch(t)).blob()}async downloadStream(t){const e=await fetch(t);if(!e.body)throw new Error("Response body is null");return e.body}wrapMultiPartFile(t){if(t instanceof File)return t;throw new TypeError(`Invalid file input in the browser. Expected an instance of File but received ${typeof t}.`)}}e.BrowserS3Client=n},364:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.S3Client=void 0,e.S3Client=class{async upload(t,e,r,o){return this._upload(t,e,this.wrapMultiPartFile(r),o)}}},412:function(t,e,r){var o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.LaraClient=void 0;const n=r(414),s=o(r(326)),i=r(725),a=r(741),u=r(311);e.LaraClient=class{constructor(t){if(this.crypto=(0,s.default)(),this.extraHeaders={},t instanceof n.AccessKey)this.accessKey=t;else{if(!(t instanceof n.AuthToken))throw new Error("Invalid authentication method provided");this.authToken=t}}setExtraHeader(t,e){this.extraHeaders[t]=e}get(t,e,r){return this.request("GET",this.buildPathWithQuery(t,e),void 0,void 0,r)}delete(t,e,r,o){return this.request("DELETE",this.buildPathWithQuery(t,e),r,void 0,o)}post(t,e,r,o,n){return this.request("POST",t,e,r,o,void 0,n)}async*postAndGetStream(t,e,r,o){for await(const n of this.requestStream("POST",t,e,r,o))yield n}put(t,e,r,o){return this.request("PUT",t,e,r,o)}async request(t,e,r,o,n,s=0,i){await this.ensureAuthenticated();const u=e.startsWith("/")?e:`/${e}`,l=await this.buildRequestHeaders(r,o,n),c=this.buildRequestBody(r,o);l.Authorization=`Bearer ${this.token}`;const d=await this.send(t,u,l,c,i);if(this.isSuccessResponse(d))return i?d.body:(0,a.parseContent)(d.body);if(401===d.statusCode&&s<1)return this.token=void 0,await this.refreshOrReauthenticate(),this.request(t,e,r,o,n,s+1,i);throw this.createApiError(d)}async*requestStream(t,e,r,o,n,s=0){await this.ensureAuthenticated();const i=e.startsWith("/")?e:`/${e}`,u=await this.buildRequestHeaders(r,o,n),l=this.buildRequestBody(r,o);u.Authorization=`Bearer ${this.token}`;for await(const c of this.sendAndGetStream(t,i,u,l)){if(401===c.statusCode&&s<1)return this.token=void 0,await this.refreshOrReauthenticate(),void(yield*this.requestStream(t,e,r,o,n,s+1));if(!this.isSuccessResponse(c))throw this.createApiError(c);yield(0,a.parseContent)(c.body.content||c.body)}}isTokenExpired(t=5e3){if(!this.token)return!0;try{const e=this.token.split(".");if(3!==e.length)return!0;let r=e[1].replace(/-/g,"+").replace(/_/g,"/");for(;r.length%4;)r+="=";const o="undefined"!=typeof Buffer?Buffer.from(r,"base64").toString("utf-8"):atob(r),{exp:n}=JSON.parse(o);return"number"==typeof n&&1e3*n<=Date.now()+t}catch{return!0}}async ensureAuthenticated(){if(!this.token||this.isTokenExpired()){if(this.token=void 0,this.authenticationPromise)return this.authenticationPromise;this.authenticationPromise=this.performAuthentication();try{await this.authenticationPromise,this.authenticationPromise=void 0}catch(t){if(this.authenticationPromise=void 0,t instanceof i.LaraApiError&&(401===t.statusCode||403===t.statusCode))throw t;try{this.authenticationPromise=this.performAuthentication(),await this.authenticationPromise,this.authenticationPromise=void 0}catch(t){throw this.authenticationPromise=void 0,t instanceof i.LaraApiError?t:new i.LaraApiError(500,"AuthenticationError",t.message)}}}}async performAuthentication(){return this.authToken?(this.token=this.authToken.token,this.refreshToken=this.authToken.refreshToken,void(this.authToken=void 0)):this.doRefreshOrReauthenticate()}refreshOrReauthenticate(){return this.refreshPromise||(this.refreshPromise=this.doRefreshOrReauthenticate().finally(()=>{this.refreshPromise=void 0})),this.refreshPromise}async doRefreshOrReauthenticate(){if(this.refreshToken)try{return void await this.refreshTokens()}catch(t){if(this.refreshToken=void 0,!this.accessKey)throw t}if(!this.accessKey)throw new Error("No authentication method available for token renewal");await this.authenticateWithAccessKey()}async refreshTokens(){const t={Authorization:`Bearer ${this.refreshToken}`,"X-Lara-Date":(new Date).toUTCString(),...this.extraHeaders},e=await this.send("POST","/v2/auth/refresh",t);this.handleAuthResponse(e)}async authenticateWithAccessKey(){if(!this.accessKey)throw new Error("No access key provided");const t={id:this.accessKey.id},e=await this.crypto.digestBase64(JSON.stringify(t)),r={"Content-Type":"application/json","X-Lara-Date":(new Date).toUTCString(),"Content-MD5":e,...this.extraHeaders};r.Authorization=`Lara:${await this.sign("POST","/v2/auth",r)}`;const o=await this.send("POST","/v2/auth",r,t);this.handleAuthResponse(o)}buildPathWithQuery(t,e){const r=this.filterNullish(e);return r?`${t}?${new URLSearchParams(r).toString()}`:t}async buildRequestHeaders(t,e,r){const o={"X-Lara-Date":(new Date).toUTCString(),"X-Lara-SDK-Name":"lara-node","X-Lara-SDK-Version":u.version,...this.filterNullish(this.extraHeaders),...this.filterNullish(r)},n=this.filterNullish(t);if(e)o["Content-Type"]="multipart/form-data";else if(n){o["Content-Type"]="application/json";const t=JSON.stringify(n,void 0,0);o["Content-Length"]=(new TextEncoder).encode(t).length.toString()}return o}buildRequestBody(t,e){const r=this.filterNullish(t);if(e){const t={};for(const[r,o]of Object.entries(e))t[r]=this.wrapMultiPartFile(o);return{...t,...r}}return r}filterNullish(t){if(!t)return;const e=Object.fromEntries(Object.entries(t).filter(([t,e])=>null!=e));return Object.keys(e).length>0?e:void 0}isSuccessResponse(t){return t.statusCode>=200&&t.statusCode<300}handleAuthResponse(t){if(this.isSuccessResponse(t)){this.token=t.body.token;const e=t.headers["x-lara-refresh-token"];return void(e&&(this.refreshToken=e))}throw this.createApiError(t)}createApiError(t){var e;const r=(null===(e=t.body)||void 0===e?void 0:e.error)||t.body||{};return new i.LaraApiError(t.statusCode,r.type||"UnknownError",r.message||"An unknown error occurred")}async sign(t,e,r){if(!this.accessKey)throw new Error("Access key not provided for signing");const o=r["X-Lara-Date"].trim(),n=(r["Content-MD5"]||"").trim(),s=(r["Content-Type"]||"").trim(),i=`${(r["X-HTTP-Method-Override"]||t).trim().toUpperCase()}\n${e}\n${n}\n${s}\n${o}`;return this.crypto.hmac(this.accessKey.secret,i)}}},414:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AuthToken=e.Credentials=e.AccessKey=void 0;class r{constructor(t,e){this.id=t,this.secret=e}}e.AccessKey=r,e.Credentials=class extends r{get accessKeyId(){return this.id}get accessKeySecret(){return this.secret}},e.AuthToken=class{constructor(t,e){this.token=t,this.refreshToken=e}}},514:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Glossaries=void 0;const o=r(725);e.Glossaries=class{constructor(t){this.client=t,this.pollingInterval=2e3}async list(){return await this.client.get("/v2/glossaries")}async create(t){return await this.client.post("/v2/glossaries",{name:t})}async get(t){try{return await this.client.get(`/v2/glossaries/${t}`)}catch(t){if(t instanceof o.LaraApiError&&404===t.statusCode)return null;throw t}}async delete(t){return await this.client.delete(`/v2/glossaries/${t}`)}async update(t,e){return await this.client.put(`/v2/glossaries/${t}`,{name:e})}async importCsv(t,e,r,o){let n=!1,s="csv/table-uni";return"boolean"==typeof r?n=r:"string"==typeof r&&(s=r,n=null!=o&&o),await this.client.post(`/v2/glossaries/${t}/import`,{compression:n?"gzip":void 0,content_type:s},{csv:e})}async getImportStatus(t){return await this.client.get(`/v2/glossaries/imports/${t}`)}async waitForImport(t,e,r){const n=Date.now();for(;t.progress<1;){if(r&&Date.now()-n>r)throw new o.TimeoutError;await new Promise(t=>setTimeout(t,this.pollingInterval)),t=await this.getImportStatus(t.id),e&&e(t)}return t}async counts(t){return await this.client.get(`/v2/glossaries/${t}/counts`)}async export(t,e,r){return await this.client.get(`/v2/glossaries/${t}/export`,{content_type:e,source:r})}async addOrReplaceEntry(t,e,r){return await this.client.put(`/v2/glossaries/${t}/content`,{terms:e,guid:r})}async deleteEntry(t,e,r){return await this.client.delete(`/v2/glossaries/${t}/content`,void 0,{term:e,guid:r})}}},629:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Memories=void 0;const o=r(725);e.Memories=class{constructor(t){this.client=t,this.pollingInterval=2e3}async list(){return await this.client.get("/v2/memories")}async create(t,e){return await this.client.post("/v2/memories",{name:t,external_id:e})}async get(t){try{return await this.client.get(`/v2/memories/${t}`)}catch(t){if(t instanceof o.LaraApiError&&404===t.statusCode)return null;throw t}}async delete(t){return await this.client.delete(`/v2/memories/${t}`)}async update(t,e){return await this.client.put(`/v2/memories/${t}`,{name:e})}async connect(t){const e=await this.client.post("/v2/memories/connect",{ids:Array.isArray(t)?t:[t]});return Array.isArray(t)?e:e[0]}async importTmx(t,e,r=!1){return await this.client.post(`/v2/memories/${t}/import`,{compression:r?"gzip":void 0},{tmx:e})}async addTranslation(t,e,r,o,n,s,i,a,u){const l={source:e,target:r,sentence:o,translation:n,tuid:s,sentence_before:i,sentence_after:a};return Array.isArray(t)?(l.ids=t,await this.client.put("/v2/memories/content",l,void 0,u)):await this.client.put(`/v2/memories/${t}/content`,l,void 0,u)}async deleteTranslation(t,e,r,o,n,s,i,a){const u={source:e,target:r,sentence:o,translation:n,tuid:s,sentence_before:i,sentence_after:a};return Array.isArray(t)?(u.ids=t,await this.client.delete("/v2/memories/content",void 0,u)):await this.client.delete(`/v2/memories/${t}/content`,void 0,u)}async getImportStatus(t){return await this.client.get(`/v2/memories/imports/${t}`)}async waitForImport(t,e,r){const n=Date.now();for(;t.progress<1;){if(r&&Date.now()-n>r)throw new o.TimeoutError;await new Promise(t=>setTimeout(t,this.pollingInterval)),t=await this.getImportStatus(t.id),e&&e(t)}return t}}},631:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserClient=e.BrowserLaraClient=void 0;const o=r(725),n=r(412);class s extends n.LaraClient{constructor(t,e,r,o){super(e);let n=`${t.secure?"https":"http"}://${t.hostname}`;var s,i;s=t.port,i=t.secure,80===s&&!i||443===s&&i||(n+=`:${t.port}`),this.baseUrl=n,this.timeout=o}async send(t,e,r,n,s){var i;let a;if(n)if("multipart/form-data"===r["Content-Type"]){delete r["Content-Type"];const t=new FormData;for(const[e,r]of Object.entries(n))if(r)if(Array.isArray(r))for(const o of r)t.append(e,o);else t.append(e,r);a=t}else a=JSON.stringify(n,void 0,0);const u=this.timeout&&this.timeout>0?AbortSignal.timeout(this.timeout):void 0;try{const o=await fetch(this.baseUrl+e,{headers:r,method:t,body:a,signal:u});return s&&o.status>=200&&o.status<300?{statusCode:o.status,body:o.body,headers:Object.fromEntries(o.headers)}:(null===(i=o.headers.get("Content-Type"))||void 0===i?void 0:i.includes("text/csv"))?{statusCode:o.status,body:{content:await o.text()},headers:Object.fromEntries(o.headers)}:{statusCode:o.status,body:await o.json(),headers:Object.fromEntries(o.headers)}}catch(t){if(t instanceof Error&&("AbortError"===t.name||"TimeoutError"===t.name))throw new o.TimeoutError(`Request timed out after ${this.timeout}ms`);throw t}}async*sendAndGetStream(t,e,r,n){let s;if(n)if("multipart/form-data"===r["Content-Type"]){delete r["Content-Type"];const t=new FormData;for(const[e,r]of Object.entries(n))if(r)if(Array.isArray(r))for(const o of r)t.append(e,o);else t.append(e,r);s=t}else s=JSON.stringify(n,void 0,0);const i=this.timeout&&this.timeout>0?AbortSignal.timeout(this.timeout):void 0;let a;try{a=await fetch(this.baseUrl+e,{headers:r,method:t,body:s,signal:i})}catch(t){if(t instanceof Error&&("AbortError"===t.name||"TimeoutError"===t.name))throw new o.TimeoutError(`Request timed out after ${this.timeout}ms`);throw t}if(!a.body)throw new Error("Response body is not available for streaming");const u=a.body.getReader(),l=new TextDecoder;let c="";try{for(;;){let t;try{t=await u.read()}catch(t){if(t instanceof Error&&("AbortError"===t.name||"TimeoutError"===t.name))throw new o.TimeoutError(`Request timed out after ${this.timeout}ms`);throw t}const{done:e,value:r}=t;if(e){if(c.trim())try{const t=JSON.parse(c);yield{statusCode:t.status||a.status,body:t.data||t,headers:Object.fromEntries(a.headers)}}catch(t){}break}c+=l.decode(r,{stream:!0});const n=c.split("\n");c=n.pop()||"";for(const t of n)if(t.trim())try{const e=JSON.parse(t);yield{statusCode:e.status||a.status,body:e.data||e,headers:Object.fromEntries(a.headers)}}catch(t){}}}finally{u.releaseLock()}}wrapMultiPartFile(t){if(t instanceof File)return t;throw new TypeError(`Invalid file input in the browser. Expected an instance of File but received ${typeof t}.`)}}e.BrowserLaraClient=s;class i{static async get(t,e){return i.send("GET",t,e)}static async send(t,e,r,o){var n;let s;if(o)if(r&&"multipart/form-data"===r["Content-Type"]){delete r["Content-Type"];const t=new FormData;for(const[e,r]of Object.entries(o))if(r)if(Array.isArray(r))for(const o of r)t.append(e,o);else t.append(e,r);s=t}else s=JSON.stringify(o,void 0,0);const i=await fetch(e,{headers:r,method:t,body:s});return{statusCode:i.status,headers:Object.fromEntries(i.headers),body:(null===(n=i.headers.get("Content-Type"))||void 0===n?void 0:n.includes("application/json"))?await i.json():await i.text()}}}e.BrowserClient=i},660:function(t,e,r){var o,n=this&&this.__createBinding||(Object.create?function(t,e,r,o){void 0===o&&(o=r);var n=Object.getOwnPropertyDescriptor(e,r);n&&!("get"in n?!e.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,o,n)}:function(t,e,r,o){void 0===o&&(o=r),t[o]=e[r]}),s=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),i=this&&this.__importStar||(o=function(t){return o=Object.getOwnPropertyNames||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[e.length]=r);return e},o(t)},function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r=o(t),i=0;i<r.length;i++)"default"!==r[i]&&n(e,t,r[i]);return s(e,t),e});Object.defineProperty(e,"__esModule",{value:!0}),e.Translator=void 0;const a=r(328),u=r(50),l=r(514),c=r(731),d=r(629),h=i(r(837)),f=r(221),p=r(311);e.Translator=class{constructor(t,e){this.client=(0,h.default)(t,null==e?void 0:e.serverUrl,null==e?void 0:e.keepAlive,null==e?void 0:e.connectionTimeoutMs),this.memories=new d.Memories(this.client),this.documents=new u.Documents(this.client),this.glossaries=new l.Glossaries(this.client),this.audio=new a.AudioTranslator(this.client),this.images=new c.ImageTranslator(this.client)}get version(){return p.version}async getLanguages(){return await this.client.get("/v2/languages")}async translate(t,e,r,o,n){const s={};if(null==o?void 0:o.headers)for(const[t,e]of Object.entries(o.headers))s[t]=e;(null==o?void 0:o.noTrace)&&(s["X-No-Trace"]="true");const i=this.client.postAndGetStream("/translate",{q:t,source:e,target:r,source_hint:null==o?void 0:o.sourceHint,content_type:null==o?void 0:o.contentType,multiline:!1!==(null==o?void 0:o.multiline),adapt_to:null==o?void 0:o.adaptTo,glossaries:null==o?void 0:o.glossaries,instructions:null==o?void 0:o.instructions,timeout:null==o?void 0:o.timeoutInMillis,priority:null==o?void 0:o.priority,use_cache:null==o?void 0:o.useCache,cache_ttl:null==o?void 0:o.cacheTTLSeconds,verbose:null==o?void 0:o.verbose,style:null==o?void 0:o.style,reasoning:null==o?void 0:o.reasoning,metadata:null==o?void 0:o.metadata,profanity_filter:null==o?void 0:o.profanityFilter},void 0,s);let a;for await(const t of i)(null==o?void 0:o.reasoning)&&n&&n(t),a=t;if(!a)throw new Error("No translation result received.");return a}async detect(t,e,r){return await this.client.post("/v2/detect/language",{q:t,hint:e,passlist:r})}async detectProfanities(t,e,r){return await this.client.post("/v2/detect/profanities",{text:t,language:e,content_type:r})}static async getLoginUrl(t){t||(t=f.DEFAULT_BASE_URL);const{body:e}=await h.HttpClient.get(`${t.replace(/\/+$/,"")}/v2/auth/login-page`);return e}}},725:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.LaraApiError=e.TimeoutError=e.LaraError=void 0;class r extends Error{}e.LaraError=r,e.TimeoutError=class extends r{},e.LaraApiError=class extends r{constructor(t,e,r,o){super(r),this.statusCode=t,this.type=e,this.message=r,this.idTransaction=o}}},731:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ImageTranslator=void 0,e.ImageTranslator=class{constructor(t){this.client=t}async translate(t,e,r,o){const n=(null==o?void 0:o.noTrace)?{"X-No-Trace":"true"}:{};return n["Content-Type"]="multipart/form-data",this.client.post("/v2/images/translate",{source:e,target:r,adapt_to:JSON.stringify(null==o?void 0:o.adaptTo),glossaries:JSON.stringify(null==o?void 0:o.glossaries),style:null==o?void 0:o.style,text_removal:null==o?void 0:o.textRemoval},{image:t},n,!0)}async translateText(t,e,r,o){const n=(null==o?void 0:o.noTrace)?{"X-No-Trace":"true"}:{};return n["Content-Type"]="multipart/form-data",this.client.post("/v2/images/translate-text",{source:e,target:r,adapt_to:JSON.stringify(null==o?void 0:o.adaptTo),glossaries:JSON.stringify(null==o?void 0:o.glossaries),style:null==o?void 0:o.style,verbose:JSON.stringify(null==o?void 0:o.verbose)},{image:t},n)}}},741:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseContent=function t(e){if(null==e)return e;if(Array.isArray(e))return e.map(t);if("string"==typeof e)return e.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.[0-9]{3}Z$/)?new Date(e):e;if("object"==typeof e){const r={};for(const[o,n]of Object.entries(e))r[o.replace(/_([a-z])/g,(t,e)=>e.toUpperCase())]=t(n);return r}return e}},780:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserCrypto=void 0,e.BrowserCrypto=class{constructor(){this.subtle=window.crypto.subtle}async digestBase64(t){const e=new TextEncoder,r=(await this.subtle.digest("sha-256",e.encode(t))).slice(0,16);return btoa(String.fromCharCode(...new Uint8Array(r)))}async hmac(t,e){const r=new TextEncoder;r.encode(e);const o=await this.subtle.importKey("raw",r.encode(t),{name:"hmac",hash:{name:"sha-256"}},!1,["sign"]),n=await this.subtle.sign("hmac",o,r.encode(e));return btoa(String.fromCharCode(...new Uint8Array(n)))}}},821:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return new o.BrowserS3Client};const o=r(343)},837:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.HttpClient=e.LaraClient=void 0,e.default=function(t,e,r,s){const i=new URL(e||o.DEFAULT_BASE_URL);if("https:"!==i.protocol&&"http:"!==i.protocol)throw new TypeError(`Invalid URL (protocol): ${i.protocol}`);const a={secure:"https:"===i.protocol,hostname:i.hostname,port:i.port?parseInt(i.port,10):"https:"===i.protocol?443:80};return new n.BrowserLaraClient(a,t,null==r||r,s)};const o=r(221),n=r(631);var s=r(412);Object.defineProperty(e,"LaraClient",{enumerable:!0,get:function(){return s.LaraClient}});var i=r(631);Object.defineProperty(e,"HttpClient",{enumerable:!0,get:function(){return i.BrowserClient}})},841:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0});const r=t=>{if("string"==typeof t)return t;if(Array.isArray(t))return t.map(r);if("object"==typeof t&&null!==t){const e={};for(const[o,n]of Object.entries(t))e[o.replace(/([A-Z])/g,"_$1").toLowerCase()]=r(n);return e}return t};e.default=r}},e={};function r(o){var n=e[o];if(void 0!==n)return n.exports;var s=e[o]={exports:{}};return t[o].call(s.exports,s,s.exports,r),s.exports}var o={};return(()=>{var t=o;Object.defineProperty(t,"__esModule",{value:!0}),t.version=t.Translator=t.Memories=t.ImageTranslator=t.Glossaries=t.TimeoutError=t.LaraError=t.LaraApiError=t.Documents=t.DocumentStatus=t.Credentials=t.AuthToken=t.AccessKey=t.VoiceGender=t.AudioTranslator=t.AudioStatus=void 0;var e=r(328);Object.defineProperty(t,"AudioStatus",{enumerable:!0,get:function(){return e.AudioStatus}}),Object.defineProperty(t,"AudioTranslator",{enumerable:!0,get:function(){return e.AudioTranslator}}),Object.defineProperty(t,"VoiceGender",{enumerable:!0,get:function(){return e.VoiceGender}});var n=r(414);Object.defineProperty(t,"AccessKey",{enumerable:!0,get:function(){return n.AccessKey}}),Object.defineProperty(t,"AuthToken",{enumerable:!0,get:function(){return n.AuthToken}}),Object.defineProperty(t,"Credentials",{enumerable:!0,get:function(){return n.Credentials}});var s=r(50);Object.defineProperty(t,"DocumentStatus",{enumerable:!0,get:function(){return s.DocumentStatus}}),Object.defineProperty(t,"Documents",{enumerable:!0,get:function(){return s.Documents}});var i=r(725);Object.defineProperty(t,"LaraApiError",{enumerable:!0,get:function(){return i.LaraApiError}}),Object.defineProperty(t,"LaraError",{enumerable:!0,get:function(){return i.LaraError}}),Object.defineProperty(t,"TimeoutError",{enumerable:!0,get:function(){return i.TimeoutError}});var a=r(514);Object.defineProperty(t,"Glossaries",{enumerable:!0,get:function(){return a.Glossaries}});var u=r(731);Object.defineProperty(t,"ImageTranslator",{enumerable:!0,get:function(){return u.ImageTranslator}});var l=r(629);Object.defineProperty(t,"Memories",{enumerable:!0,get:function(){return l.Memories}});var c=r(660);Object.defineProperty(t,"Translator",{enumerable:!0,get:function(){return c.Translator}});var d=r(311);Object.defineProperty(t,"version",{enumerable:!0,get:function(){return d.version}})})(),o})());
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Lara=e():t.Lara=e()}(this,()=>(()=>{"use strict";var t={50:function(t,e,r){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.Documents=e.DocumentStatus=void 0;const o=r(725),i=n(r(821)),s=n(r(841));var a;!function(t){t.INITIALIZED="initialized",t.ANALYZING="analyzing",t.PAUSED="paused",t.READY="ready",t.TRANSLATING="translating",t.TRANSLATED="translated",t.ERROR="error"}(a||(e.DocumentStatus=a={})),e.Documents=class{constructor(t){this.client=t,this.s3Client=(0,i.default)()}async upload(t,e,r,n,o){const{url:i,fields:a}=await this.client.get("/v2/documents/upload-url",{filename:e});await this.s3Client.upload(i,a,t,null==o?void 0:o.contentLength);const u=(null==o?void 0:o.noTrace)?{"X-No-Trace":"true"}:{};return this.client.post("/v2/documents",{source:r,target:n,s3key:a.key,adapt_to:null==o?void 0:o.adaptTo,glossaries:null==o?void 0:o.glossaries,style:null==o?void 0:o.style,password:null==o?void 0:o.password,extraction_params:(null==o?void 0:o.extractionParams)?(0,s.default)(o.extractionParams):void 0},void 0,u)}async status(t){return await this.client.get(`/v2/documents/${t}`)}async download(t,e){const{url:r}=await this.client.get(`/v2/documents/${t}/download-url`,{output_format:null==e?void 0:e.outputFormat});return await this.s3Client.download(r)}async downloadStream(t,e){const{url:r}=await this.client.get(`/v2/documents/${t}/download-url`,{output_format:null==e?void 0:e.outputFormat});return await this.s3Client.downloadStream(r)}async translate(t,e,r,n,i){const s={adaptTo:null==i?void 0:i.adaptTo,glossaries:null==i?void 0:i.glossaries,noTrace:null==i?void 0:i.noTrace,style:null==i?void 0:i.style,password:null==i?void 0:i.password,extractionParams:null==i?void 0:i.extractionParams,contentLength:null==i?void 0:i.contentLength},{id:u}=await this.upload(t,e,r,n,s),l=(null==i?void 0:i.outputFormat)?{outputFormat:i.outputFormat}:void 0,c=Date.now();for(;Date.now()-c<9e5;){await new Promise(t=>setTimeout(t,2e3));const{status:t,errorReason:e}=await this.status(u);if(t===a.TRANSLATED)return await this.download(u,l);if(t===a.ERROR)throw new o.LaraApiError(500,"DocumentError",e)}throw new o.TimeoutError}async translateStream(t,e,r,n,i){const s={adaptTo:null==i?void 0:i.adaptTo,glossaries:null==i?void 0:i.glossaries,noTrace:null==i?void 0:i.noTrace,style:null==i?void 0:i.style,password:null==i?void 0:i.password,extractionParams:null==i?void 0:i.extractionParams,contentLength:null==i?void 0:i.contentLength},{id:u}=await this.upload(t,e,r,n,s),l=(null==i?void 0:i.outputFormat)?{outputFormat:i.outputFormat}:void 0,c=Date.now();for(;Date.now()-c<9e5;){await new Promise(t=>setTimeout(t,2e3));const{status:t,errorReason:e}=await this.status(u);if(t===a.TRANSLATED)return await this.downloadStream(u,l);if(t===a.ERROR)throw new o.LaraApiError(500,"DocumentError",e)}throw new o.TimeoutError}}},221:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DEFAULT_BASE_URL=void 0,e.DEFAULT_BASE_URL="https://api.laratranslate.com"},311:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.version=void 0,e.version="1.9.0"},326:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return void 0===o&&(o=new n.BrowserCrypto),o};const n=r(780);let o},328:function(t,e,r){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.AudioTranslator=e.VoiceGender=e.AudioStatus=void 0;const o=r(725),i=n(r(821));var s,a;!function(t){t.INITIALIZED="initialized",t.ANALYZING="analyzing",t.PAUSED="paused",t.READY="ready",t.TRANSLATING="translating",t.TRANSLATED="translated",t.ERROR="error"}(s||(e.AudioStatus=s={})),function(t){t.MALE="male",t.FEMALE="female"}(a||(e.VoiceGender=a={})),e.AudioTranslator=class{constructor(t){this.client=t,this.s3Client=(0,i.default)()}async upload(t,e,r,n,o){const{url:i,fields:s}=await this.client.get("/v2/audio/upload-url",{filename:e});await this.s3Client.upload(i,s,t,null==o?void 0:o.contentLength);const a=(null==o?void 0:o.noTrace)?{"X-No-Trace":"true"}:{};return this.client.post("/v2/audio/translate",{source:r,target:n,s3key:s.key,adapt_to:null==o?void 0:o.adaptTo,glossaries:null==o?void 0:o.glossaries,style:null==o?void 0:o.style,voice_gender:null==o?void 0:o.voiceGender},void 0,a)}async status(t){return await this.client.get(`/v2/audio/${t}`)}async download(t){const{url:e}=await this.client.get(`/v2/audio/${t}/download-url`);return await this.s3Client.downloadStream(e)}async translate(t,e,r,n,i){const{id:a}=await this.upload(t,e,r,n,i),u=Date.now();for(;Date.now()-u<9e5;){await new Promise(t=>setTimeout(t,2e3));const{status:t,errorReason:e}=await this.status(a);if(t===s.TRANSLATED)return await this.download(a);if(t===s.ERROR)throw new o.LaraApiError(500,"AudioError",e)}throw new o.TimeoutError}}},343:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserS3Client=void 0;const n=r(364);class o extends n.S3Client{async _upload(t,e,r){const n=new FormData;for(const[t,r]of Object.entries(e))n.append(t,r);n.append("file",r),await fetch(t,{method:"POST",body:n})}async download(t){return(await fetch(t)).blob()}async downloadStream(t){const e=await fetch(t);if(!e.body)throw new Error("Response body is null");return e.body}wrapMultiPartFile(t){if(t instanceof File)return t;throw new TypeError(`Invalid file input in the browser. Expected an instance of File but received ${typeof t}.`)}}e.BrowserS3Client=o},364:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.S3Client=void 0,e.S3Client=class{async upload(t,e,r,n){return this._upload(t,e,this.wrapMultiPartFile(r),n)}}},412:function(t,e,r){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.LaraClient=void 0;const o=r(414),i=n(r(326)),s=r(725),a=r(741),u=r(311);e.LaraClient=class{constructor(t){if(this.crypto=(0,i.default)(),this.extraHeaders={},t instanceof o.AccessKey)this.accessKey=t;else{if(!(t instanceof o.AuthToken))throw new Error("Invalid authentication method provided");this.authToken=t}}setExtraHeader(t,e){this.extraHeaders[t]=e}get(t,e,r){return this.request("GET",this.buildPathWithQuery(t,e),void 0,void 0,r)}delete(t,e,r,n){return this.request("DELETE",this.buildPathWithQuery(t,e),r,void 0,n)}post(t,e,r,n,o){return this.request("POST",t,e,r,n,void 0,o)}async*postAndGetStream(t,e,r,n){for await(const o of this.requestStream("POST",t,e,r,n))yield o}put(t,e,r,n){return this.request("PUT",t,e,r,n)}async request(t,e,r,n,o,i=0,s){await this.ensureAuthenticated();const u=e.startsWith("/")?e:`/${e}`,l=await this.buildRequestHeaders(r,n,o),c=this.buildRequestBody(r,n);l.Authorization=`Bearer ${this.token}`;const d=await this.send(t,u,l,c,s);if(this.isSuccessResponse(d))return s?d.body:(0,a.parseContent)(d.body);if(401===d.statusCode&&i<1)return this.token=void 0,await this.refreshOrReauthenticate(),this.request(t,e,r,n,o,i+1,s);throw this.createApiError(d)}async*requestStream(t,e,r,n,o,i=0){await this.ensureAuthenticated();const s=e.startsWith("/")?e:`/${e}`,u=await this.buildRequestHeaders(r,n,o),l=this.buildRequestBody(r,n);u.Authorization=`Bearer ${this.token}`;for await(const c of this.sendAndGetStream(t,s,u,l)){if(401===c.statusCode&&i<1)return this.token=void 0,await this.refreshOrReauthenticate(),void(yield*this.requestStream(t,e,r,n,o,i+1));if(!this.isSuccessResponse(c))throw this.createApiError(c);yield(0,a.parseContent)(c.body.content||c.body)}}isTokenExpired(t=5e3){if(!this.token)return!0;try{const e=this.token.split(".");if(3!==e.length)return!0;let r=e[1].replace(/-/g,"+").replace(/_/g,"/");for(;r.length%4;)r+="=";const n="undefined"!=typeof Buffer?Buffer.from(r,"base64").toString("utf-8"):atob(r),{exp:o}=JSON.parse(n);return"number"==typeof o&&1e3*o<=Date.now()+t}catch{return!0}}async ensureAuthenticated(){if(!this.token||this.isTokenExpired()){if(this.token=void 0,this.authenticationPromise)return this.authenticationPromise;this.authenticationPromise=this.performAuthentication();try{await this.authenticationPromise,this.authenticationPromise=void 0}catch(t){if(this.authenticationPromise=void 0,t instanceof s.LaraApiError&&(401===t.statusCode||403===t.statusCode))throw t;try{this.authenticationPromise=this.performAuthentication(),await this.authenticationPromise,this.authenticationPromise=void 0}catch(t){throw this.authenticationPromise=void 0,t instanceof s.LaraApiError?t:new s.LaraApiError(500,"AuthenticationError",t.message)}}}}async performAuthentication(){return this.authToken?(this.token=this.authToken.token,this.refreshToken=this.authToken.refreshToken,void(this.authToken=void 0)):this.doRefreshOrReauthenticate()}refreshOrReauthenticate(){return this.refreshPromise||(this.refreshPromise=this.doRefreshOrReauthenticate().finally(()=>{this.refreshPromise=void 0})),this.refreshPromise}async doRefreshOrReauthenticate(){if(this.refreshToken)try{return void await this.refreshTokens()}catch(t){if(this.refreshToken=void 0,!this.accessKey)throw t}if(!this.accessKey)throw new Error("No authentication method available for token renewal");await this.authenticateWithAccessKey()}async refreshTokens(){const t={Authorization:`Bearer ${this.refreshToken}`,"X-Lara-Date":(new Date).toUTCString(),...this.extraHeaders},e=await this.send("POST","/v2/auth/refresh",t);this.handleAuthResponse(e)}async authenticateWithAccessKey(){if(!this.accessKey)throw new Error("No access key provided");const t={id:this.accessKey.id},e=await this.crypto.digestBase64(JSON.stringify(t)),r={"Content-Type":"application/json","X-Lara-Date":(new Date).toUTCString(),"Content-MD5":e,...this.extraHeaders};r.Authorization=`Lara:${await this.sign("POST","/v2/auth",r)}`;const n=await this.send("POST","/v2/auth",r,t);this.handleAuthResponse(n)}buildPathWithQuery(t,e){const r=this.filterNullish(e);return r?`${t}?${new URLSearchParams(r).toString()}`:t}async buildRequestHeaders(t,e,r){const n={"X-Lara-Date":(new Date).toUTCString(),"X-Lara-SDK-Name":"lara-node","X-Lara-SDK-Version":u.version,...this.filterNullish(this.extraHeaders),...this.filterNullish(r)},o=this.filterNullish(t);if(e)n["Content-Type"]="multipart/form-data";else if(o){n["Content-Type"]="application/json";const t=JSON.stringify(o,void 0,0);n["Content-Length"]=(new TextEncoder).encode(t).length.toString()}return n}buildRequestBody(t,e){const r=this.filterNullish(t);if(e){const t={};for(const[r,n]of Object.entries(e))t[r]=this.wrapMultiPartFile(n);return{...t,...r}}return r}filterNullish(t){if(!t)return;const e=Object.fromEntries(Object.entries(t).filter(([t,e])=>null!=e));return Object.keys(e).length>0?e:void 0}isSuccessResponse(t){return t.statusCode>=200&&t.statusCode<300}handleAuthResponse(t){if(this.isSuccessResponse(t)){this.token=t.body.token;const e=t.headers["x-lara-refresh-token"];return void(e&&(this.refreshToken=e))}throw this.createApiError(t)}createApiError(t){var e;const r=(null===(e=t.body)||void 0===e?void 0:e.error)||t.body||{};return new s.LaraApiError(t.statusCode,r.type||"UnknownError",r.message||"An unknown error occurred")}async sign(t,e,r){if(!this.accessKey)throw new Error("Access key not provided for signing");const n=r["X-Lara-Date"].trim(),o=(r["Content-MD5"]||"").trim(),i=(r["Content-Type"]||"").trim(),s=`${(r["X-HTTP-Method-Override"]||t).trim().toUpperCase()}\n${e}\n${o}\n${i}\n${n}`;return this.crypto.hmac(this.accessKey.secret,s)}}},414:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AuthToken=e.Credentials=e.AccessKey=void 0;class r{constructor(t,e){this.id=t,this.secret=e}}e.AccessKey=r,e.Credentials=class extends r{get accessKeyId(){return this.id}get accessKeySecret(){return this.secret}},e.AuthToken=class{constructor(t,e){this.token=t,this.refreshToken=e}}},514:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Glossaries=void 0;const n=r(725);e.Glossaries=class{constructor(t){this.client=t,this.pollingInterval=2e3}async list(){return await this.client.get("/v2/glossaries")}async create(t){return await this.client.post("/v2/glossaries",{name:t})}async get(t){try{return await this.client.get(`/v2/glossaries/${t}`)}catch(t){if(t instanceof n.LaraApiError&&404===t.statusCode)return null;throw t}}async delete(t){return await this.client.delete(`/v2/glossaries/${t}`)}async update(t,e){return await this.client.put(`/v2/glossaries/${t}`,{name:e})}async importCsv(t,e,r,n){let o=!1,i="csv/table-uni";return"boolean"==typeof r?o=r:"string"==typeof r&&(i=r,o=null!=n&&n),await this.client.post(`/v2/glossaries/${t}/import`,{compression:o?"gzip":void 0,content_type:i},{csv:e})}async getImportStatus(t){return await this.client.get(`/v2/glossaries/imports/${t}`)}async waitForImport(t,e,r){const o=Date.now();for(;t.progress<1;){if(r&&Date.now()-o>r)throw new n.TimeoutError;await new Promise(t=>setTimeout(t,this.pollingInterval)),t=await this.getImportStatus(t.id),e&&e(t)}return t}async counts(t){return await this.client.get(`/v2/glossaries/${t}/counts`)}async export(t,e,r){return await this.client.get(`/v2/glossaries/${t}/export`,{content_type:e,source:r})}async addOrReplaceEntry(t,e,r){return await this.client.put(`/v2/glossaries/${t}/content`,{terms:e,guid:r})}async deleteEntry(t,e,r){return await this.client.delete(`/v2/glossaries/${t}/content`,void 0,{term:e,guid:r})}}},629:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Memories=void 0;const n=r(725);e.Memories=class{constructor(t){this.client=t,this.pollingInterval=2e3}async list(){return await this.client.get("/v2/memories")}async create(t,e){return await this.client.post("/v2/memories",{name:t,external_id:e})}async get(t){try{return await this.client.get(`/v2/memories/${t}`)}catch(t){if(t instanceof n.LaraApiError&&404===t.statusCode)return null;throw t}}async delete(t){return await this.client.delete(`/v2/memories/${t}`)}async update(t,e){return await this.client.put(`/v2/memories/${t}`,{name:e})}async connect(t){const e=await this.client.post("/v2/memories/connect",{ids:Array.isArray(t)?t:[t]});return Array.isArray(t)?e:e[0]}async importTmx(t,e,r=!1){return await this.client.post(`/v2/memories/${t}/import`,{compression:r?"gzip":void 0},{tmx:e})}async addTranslation(t,e,r,n,o,i,s,a,u){const l={source:e,target:r,sentence:n,translation:o,tuid:i,sentence_before:s,sentence_after:a};return Array.isArray(t)?(l.ids=t,await this.client.put("/v2/memories/content",l,void 0,u)):await this.client.put(`/v2/memories/${t}/content`,l,void 0,u)}async deleteTranslation(t,e,r,n,o,i,s,a){const u={source:e,target:r,sentence:n,translation:o,tuid:i,sentence_before:s,sentence_after:a};return Array.isArray(t)?(u.ids=t,await this.client.delete("/v2/memories/content",void 0,u)):await this.client.delete(`/v2/memories/${t}/content`,void 0,u)}async getImportStatus(t){return await this.client.get(`/v2/memories/imports/${t}`)}async waitForImport(t,e,r){const o=Date.now();for(;t.progress<1;){if(r&&Date.now()-o>r)throw new n.TimeoutError;await new Promise(t=>setTimeout(t,this.pollingInterval)),t=await this.getImportStatus(t.id),e&&e(t)}return t}}},631:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserClient=e.BrowserLaraClient=void 0;const n=r(725),o=r(412);class i extends o.LaraClient{constructor(t,e,r,n){super(e);let o=`${t.secure?"https":"http"}://${t.hostname}`;var i,s;i=t.port,s=t.secure,80===i&&!s||443===i&&s||(o+=`:${t.port}`),this.baseUrl=o,this.timeout=n}async send(t,e,r,o,i){var s;let a;if(o)if("multipart/form-data"===r["Content-Type"]){delete r["Content-Type"];const t=new FormData;for(const[e,r]of Object.entries(o))if(r)if(Array.isArray(r))for(const n of r)t.append(e,n);else t.append(e,r);a=t}else a=JSON.stringify(o,void 0,0);const u=this.timeout&&this.timeout>0?AbortSignal.timeout(this.timeout):void 0;try{const n=await fetch(this.baseUrl+e,{headers:r,method:t,body:a,signal:u});return i&&n.status>=200&&n.status<300?{statusCode:n.status,body:n.body,headers:Object.fromEntries(n.headers)}:(null===(s=n.headers.get("Content-Type"))||void 0===s?void 0:s.includes("text/csv"))?{statusCode:n.status,body:{content:await n.text()},headers:Object.fromEntries(n.headers)}:{statusCode:n.status,body:await n.json(),headers:Object.fromEntries(n.headers)}}catch(t){if(t instanceof Error&&("AbortError"===t.name||"TimeoutError"===t.name))throw new n.TimeoutError(`Request timed out after ${this.timeout}ms`);throw t}}async*sendAndGetStream(t,e,r,o){let i;if(o)if("multipart/form-data"===r["Content-Type"]){delete r["Content-Type"];const t=new FormData;for(const[e,r]of Object.entries(o))if(r)if(Array.isArray(r))for(const n of r)t.append(e,n);else t.append(e,r);i=t}else i=JSON.stringify(o,void 0,0);const s=this.timeout&&this.timeout>0?AbortSignal.timeout(this.timeout):void 0;let a;try{a=await fetch(this.baseUrl+e,{headers:r,method:t,body:i,signal:s})}catch(t){if(t instanceof Error&&("AbortError"===t.name||"TimeoutError"===t.name))throw new n.TimeoutError(`Request timed out after ${this.timeout}ms`);throw t}if(!a.body)throw new Error("Response body is not available for streaming");const u=a.body.getReader(),l=new TextDecoder;let c="";try{for(;;){let t;try{t=await u.read()}catch(t){if(t instanceof Error&&("AbortError"===t.name||"TimeoutError"===t.name))throw new n.TimeoutError(`Request timed out after ${this.timeout}ms`);throw t}const{done:e,value:r}=t;if(e){if(c.trim())try{const t=JSON.parse(c);yield{statusCode:t.status||a.status,body:t.data||t,headers:Object.fromEntries(a.headers)}}catch(t){}break}c+=l.decode(r,{stream:!0});const o=c.split("\n");c=o.pop()||"";for(const t of o)if(t.trim())try{const e=JSON.parse(t);yield{statusCode:e.status||a.status,body:e.data||e,headers:Object.fromEntries(a.headers)}}catch(t){}}}finally{u.releaseLock()}}wrapMultiPartFile(t){if(t instanceof File)return t;throw new TypeError(`Invalid file input in the browser. Expected an instance of File but received ${typeof t}.`)}}e.BrowserLaraClient=i;class s{static async get(t,e){return s.send("GET",t,e)}static async send(t,e,r,n){var o;let i;if(n)if(r&&"multipart/form-data"===r["Content-Type"]){delete r["Content-Type"];const t=new FormData;for(const[e,r]of Object.entries(n))if(r)if(Array.isArray(r))for(const n of r)t.append(e,n);else t.append(e,r);i=t}else i=JSON.stringify(n,void 0,0);const s=await fetch(e,{headers:r,method:t,body:i});return{statusCode:s.status,headers:Object.fromEntries(s.headers),body:(null===(o=s.headers.get("Content-Type"))||void 0===o?void 0:o.includes("application/json"))?await s.json():await s.text()}}}e.BrowserClient=s},660:function(t,e,r){var n,o=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]}),i=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s=this&&this.__importStar||(n=function(t){return n=Object.getOwnPropertyNames||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[e.length]=r);return e},n(t)},function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r=n(t),s=0;s<r.length;s++)"default"!==r[s]&&o(e,t,r[s]);return i(e,t),e});Object.defineProperty(e,"__esModule",{value:!0}),e.Translator=void 0;const a=r(328),u=r(50),l=r(514),c=r(731),d=r(629),h=s(r(837)),f=r(816),p=r(221),y=r(311);e.Translator=class{constructor(t,e){this.client=(0,h.default)(t,null==e?void 0:e.serverUrl,null==e?void 0:e.keepAlive,null==e?void 0:e.connectionTimeoutMs),this.memories=new d.Memories(this.client),this.documents=new u.Documents(this.client),this.glossaries=new l.Glossaries(this.client),this.styleguides=new f.Styleguides(this.client),this.audio=new a.AudioTranslator(this.client),this.images=new c.ImageTranslator(this.client)}get version(){return y.version}async getLanguages(){return await this.client.get("/v2/languages")}async translate(t,e,r,n,o){const i={};if(null==n?void 0:n.headers)for(const[t,e]of Object.entries(n.headers))i[t]=e;(null==n?void 0:n.noTrace)&&(i["X-No-Trace"]="true");const s=this.client.postAndGetStream("/translate",{q:t,source:e,target:r,source_hint:null==n?void 0:n.sourceHint,content_type:null==n?void 0:n.contentType,multiline:!1!==(null==n?void 0:n.multiline),adapt_to:null==n?void 0:n.adaptTo,glossaries:null==n?void 0:n.glossaries,instructions:null==n?void 0:n.instructions,timeout:null==n?void 0:n.timeoutInMillis,priority:null==n?void 0:n.priority,use_cache:null==n?void 0:n.useCache,cache_ttl:null==n?void 0:n.cacheTTLSeconds,verbose:null==n?void 0:n.verbose,style:null==n?void 0:n.style,reasoning:null==n?void 0:n.reasoning,metadata:null==n?void 0:n.metadata,profanity_filter:null==n?void 0:n.profanityFilter,styleguide_id:null==n?void 0:n.styleguideId,styleguide_reasoning:null==n?void 0:n.styleguideReasoning,styleguide_explanation_language:null==n?void 0:n.styleguideExplanationLanguage},void 0,i);let a;for await(const t of s)(null==n?void 0:n.reasoning)&&o&&o(t),a=t;if(!a)throw new Error("No translation result received.");return a}async detect(t,e,r){return await this.client.post("/v2/detect/language",{q:t,hint:e,passlist:r})}async detectProfanities(t,e,r){return await this.client.post("/v2/detect/profanities",{text:t,language:e,content_type:r})}async qualityEstimation(t,e,r,n){return await this.client.post("/v2/detect/quality-estimation",{source:t,target:e,sentence:r,translation:n})}static async getLoginUrl(t){t||(t=p.DEFAULT_BASE_URL);const{body:e}=await h.HttpClient.get(`${t.replace(/\/+$/,"")}/v2/auth/login-page`);return e}}},725:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.LaraApiError=e.TimeoutError=e.LaraError=void 0;class r extends Error{}e.LaraError=r,e.TimeoutError=class extends r{},e.LaraApiError=class extends r{constructor(t,e,r,n){super(r),this.statusCode=t,this.type=e,this.message=r,this.idTransaction=n}}},731:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ImageTranslator=void 0,e.ImageTranslator=class{constructor(t){this.client=t}async translate(t,e,r,n){const o=(null==n?void 0:n.noTrace)?{"X-No-Trace":"true"}:{};return o["Content-Type"]="multipart/form-data",this.client.post("/v2/images/translate",{source:e,target:r,adapt_to:JSON.stringify(null==n?void 0:n.adaptTo),glossaries:JSON.stringify(null==n?void 0:n.glossaries),style:null==n?void 0:n.style,text_removal:null==n?void 0:n.textRemoval},{image:t},o,!0)}async translateText(t,e,r,n){const o=(null==n?void 0:n.noTrace)?{"X-No-Trace":"true"}:{};return o["Content-Type"]="multipart/form-data",this.client.post("/v2/images/translate-text",{source:e,target:r,adapt_to:JSON.stringify(null==n?void 0:n.adaptTo),glossaries:JSON.stringify(null==n?void 0:n.glossaries),style:null==n?void 0:n.style,verbose:JSON.stringify(null==n?void 0:n.verbose)},{image:t},o)}}},741:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseContent=function t(e){if(null==e)return e;if(Array.isArray(e))return e.map(t);if("string"==typeof e)return e.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.[0-9]{3}Z$/)?new Date(e):e;if("object"==typeof e){const r={};for(const[n,o]of Object.entries(e))r[n.replace(/_([a-z])/g,(t,e)=>e.toUpperCase())]=t(o);return r}return e}},780:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.BrowserCrypto=void 0,e.BrowserCrypto=class{constructor(){this.subtle=window.crypto.subtle}async digestBase64(t){const e=new TextEncoder,r=(await this.subtle.digest("sha-256",e.encode(t))).slice(0,16);return btoa(String.fromCharCode(...new Uint8Array(r)))}async hmac(t,e){const r=new TextEncoder;r.encode(e);const n=await this.subtle.importKey("raw",r.encode(t),{name:"hmac",hash:{name:"sha-256"}},!1,["sign"]),o=await this.subtle.sign("hmac",n,r.encode(e));return btoa(String.fromCharCode(...new Uint8Array(o)))}}},816:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Styleguides=void 0;const n=r(725);e.Styleguides=class{constructor(t){this.client=t}async list(){return await this.client.get("/v2/styleguides")}async get(t){try{return await this.client.get(`/v2/styleguides/${t}`)}catch(t){if(t instanceof n.LaraApiError&&404===t.statusCode)return null;throw t}}}},821:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return new n.BrowserS3Client};const n=r(343)},837:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.HttpClient=e.LaraClient=void 0,e.default=function(t,e,r,i){const s=new URL(e||n.DEFAULT_BASE_URL);if("https:"!==s.protocol&&"http:"!==s.protocol)throw new TypeError(`Invalid URL (protocol): ${s.protocol}`);const a={secure:"https:"===s.protocol,hostname:s.hostname,port:s.port?parseInt(s.port,10):"https:"===s.protocol?443:80};return new o.BrowserLaraClient(a,t,null==r||r,i)};const n=r(221),o=r(631);var i=r(412);Object.defineProperty(e,"LaraClient",{enumerable:!0,get:function(){return i.LaraClient}});var s=r(631);Object.defineProperty(e,"HttpClient",{enumerable:!0,get:function(){return s.BrowserClient}})},841:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0});const r=t=>{if("string"==typeof t)return t;if(Array.isArray(t))return t.map(r);if("object"==typeof t&&null!==t){const e={};for(const[n,o]of Object.entries(t))e[n.replace(/([A-Z])/g,"_$1").toLowerCase()]=r(o);return e}return t};e.default=r}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n].call(i.exports,i,i.exports,r),i.exports}var n={};return(()=>{var t=n;Object.defineProperty(t,"__esModule",{value:!0}),t.version=t.Translator=t.Styleguides=t.Memories=t.ImageTranslator=t.Glossaries=t.TimeoutError=t.LaraError=t.LaraApiError=t.Documents=t.DocumentStatus=t.Credentials=t.AuthToken=t.AccessKey=t.VoiceGender=t.AudioTranslator=t.AudioStatus=void 0;var e=r(328);Object.defineProperty(t,"AudioStatus",{enumerable:!0,get:function(){return e.AudioStatus}}),Object.defineProperty(t,"AudioTranslator",{enumerable:!0,get:function(){return e.AudioTranslator}}),Object.defineProperty(t,"VoiceGender",{enumerable:!0,get:function(){return e.VoiceGender}});var o=r(414);Object.defineProperty(t,"AccessKey",{enumerable:!0,get:function(){return o.AccessKey}}),Object.defineProperty(t,"AuthToken",{enumerable:!0,get:function(){return o.AuthToken}}),Object.defineProperty(t,"Credentials",{enumerable:!0,get:function(){return o.Credentials}});var i=r(50);Object.defineProperty(t,"DocumentStatus",{enumerable:!0,get:function(){return i.DocumentStatus}}),Object.defineProperty(t,"Documents",{enumerable:!0,get:function(){return i.Documents}});var s=r(725);Object.defineProperty(t,"LaraApiError",{enumerable:!0,get:function(){return s.LaraApiError}}),Object.defineProperty(t,"LaraError",{enumerable:!0,get:function(){return s.LaraError}}),Object.defineProperty(t,"TimeoutError",{enumerable:!0,get:function(){return s.TimeoutError}});var a=r(514);Object.defineProperty(t,"Glossaries",{enumerable:!0,get:function(){return a.Glossaries}});var u=r(731);Object.defineProperty(t,"ImageTranslator",{enumerable:!0,get:function(){return u.ImageTranslator}});var l=r(629);Object.defineProperty(t,"Memories",{enumerable:!0,get:function(){return l.Memories}});var c=r(816);Object.defineProperty(t,"Styleguides",{enumerable:!0,get:function(){return c.Styleguides}});var d=r(660);Object.defineProperty(t,"Translator",{enumerable:!0,get:function(){return d.Translator}});var h=r(311);Object.defineProperty(t,"version",{enumerable:!0,get:function(){return h.version}})})(),n})());
|