@translated/lara 2.0.0-beta.0 → 2.0.0-beta.10

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.
Files changed (45) hide show
  1. package/lib/index.d.mts +240 -0
  2. package/lib/index.d.ts +240 -2
  3. package/lib/index.js +3 -2
  4. package/lib/index.js.map +1 -0
  5. package/lib/index.mjs +3 -0
  6. package/lib/index.mjs.map +1 -0
  7. package/package.json +10 -5
  8. package/lib/Documents.d.ts +0 -12
  9. package/lib/Documents.js +0 -71
  10. package/lib/Glossaries.d.ts +0 -17
  11. package/lib/Glossaries.js +0 -68
  12. package/lib/Memories.d.ts +0 -18
  13. package/lib/Memories.js +0 -95
  14. package/lib/Translator.d.ts +0 -24
  15. package/lib/Translator.js +0 -152
  16. package/lib/models/Authentication.d.ts +0 -12
  17. package/lib/models/Authentication.js +0 -1
  18. package/lib/models/UploadableFile.d.ts +0 -1
  19. package/lib/models/UploadableFile.js +0 -1
  20. package/lib/models/documents.d.ts +0 -51
  21. package/lib/models/documents.js +0 -10
  22. package/lib/models/glossaries.d.ts +0 -19
  23. package/lib/models/glossaries.js +0 -1
  24. package/lib/models/index.d.ts +0 -6
  25. package/lib/models/index.js +0 -6
  26. package/lib/models/memories.d.ts +0 -19
  27. package/lib/models/memories.js +0 -1
  28. package/lib/models/translator.d.ts +0 -48
  29. package/lib/models/translator.js +0 -1
  30. package/lib/sdk-version.d.ts +0 -1
  31. package/lib/sdk-version.js +0 -1
  32. package/lib/utils/errors.d.ts +0 -10
  33. package/lib/utils/errors.js +0 -12
  34. package/lib/utils/formdata/browser.d.ts +0 -2
  35. package/lib/utils/formdata/browser.js +0 -15
  36. package/lib/utils/formdata/index.d.ts +0 -4
  37. package/lib/utils/formdata/index.js +0 -10
  38. package/lib/utils/formdata/node.d.ts +0 -5
  39. package/lib/utils/formdata/node.js +0 -16
  40. package/lib/utils/sleep.d.ts +0 -2
  41. package/lib/utils/sleep.js +0 -1
  42. package/lib/utils/toCamelCase.d.ts +0 -2
  43. package/lib/utils/toCamelCase.js +0 -16
  44. package/lib/utils/toSnakeCase.d.ts +0 -2
  45. package/lib/utils/toSnakeCase.js +0 -16
@@ -0,0 +1,240 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import * as stream from 'stream';
3
+
4
+ type AccessKey = {
5
+ id: string;
6
+ secret: string;
7
+ };
8
+ type AuthToken = {
9
+ token: string;
10
+ refresh_token: string;
11
+ };
12
+ type Credentials = {
13
+ email: string;
14
+ password: string;
15
+ };
16
+ type AuthenticationResponse = {
17
+ token: string;
18
+ };
19
+
20
+ interface TranslatorOptions {
21
+ serverUrl?: string;
22
+ extraHeaders?: Record<string, any>;
23
+ }
24
+ interface TextBlock {
25
+ readonly text: string;
26
+ readonly translatable?: boolean;
27
+ }
28
+ type TranslationStyle = 'faithful' | 'fluid' | 'creative';
29
+ type TranslateOptions = {
30
+ sourceHint?: string;
31
+ adaptTo?: string[];
32
+ instructions?: string[];
33
+ glossaries?: string[];
34
+ contentType?: string;
35
+ multiline?: boolean;
36
+ timeoutInMillis?: number;
37
+ priority?: 'normal' | 'background';
38
+ useCache?: boolean | 'overwrite';
39
+ cacheTTLSeconds?: number;
40
+ noTrace?: boolean;
41
+ verbose?: boolean;
42
+ headers?: Record<string, string>;
43
+ style?: TranslationStyle;
44
+ reasoning?: boolean;
45
+ };
46
+ interface NGMemoryMatch {
47
+ memory: string;
48
+ tuid?: string;
49
+ language: [string, string];
50
+ sentence: string;
51
+ translation: string;
52
+ score: number;
53
+ }
54
+ interface NGGlossaryMatch {
55
+ glossary: string;
56
+ language: [string, string];
57
+ term: string;
58
+ translation: string;
59
+ }
60
+ interface TextResult<T extends string | string[] | TextBlock[]> {
61
+ readonly contentType: string;
62
+ readonly sourceLanguage: string;
63
+ readonly translation: T;
64
+ readonly adaptedTo?: string[];
65
+ readonly glossaries?: string[];
66
+ readonly adaptedToMatches?: NGMemoryMatch[] | NGMemoryMatch[][];
67
+ readonly glossariesMatches?: NGGlossaryMatch[] | NGGlossaryMatch[][];
68
+ }
69
+
70
+ interface Document {
71
+ readonly id: string;
72
+ readonly status: DocumentStatus;
73
+ readonly source?: string;
74
+ readonly target: string;
75
+ readonly filename: string;
76
+ readonly createdAt: Date;
77
+ readonly updatedAt: Date;
78
+ readonly options?: DocumentOptions;
79
+ readonly translatedChars?: number;
80
+ readonly totalChars?: number;
81
+ readonly errorReason?: string;
82
+ }
83
+ declare enum DocumentStatus {
84
+ INITIALIZED = "initialized",// just been created
85
+ ANALYZING = "analyzing",// being analyzed for language detection and chars count
86
+ PAUSED = "paused",// paused after analysis, needs user confirm
87
+ READY = "ready",// ready to be translated
88
+ TRANSLATING = "translating",
89
+ TRANSLATED = "translated",
90
+ ERROR = "error"
91
+ }
92
+ type DocumentOptions = {
93
+ adaptTo?: string[];
94
+ glossaries?: string[];
95
+ noTrace?: boolean;
96
+ style?: TranslationStyle;
97
+ };
98
+ type DocumentUploadOptions = DocumentOptions & {
99
+ password?: string;
100
+ extractionParams?: DocxExtractionParams;
101
+ };
102
+ type DocumentDownloadOptions = {
103
+ outputFormat?: string;
104
+ };
105
+ type DocumentTranslateOptions = DocumentUploadOptions & DocumentDownloadOptions;
106
+ interface DocxExtractionParams {
107
+ extractComments?: boolean;
108
+ accepsRevisions?: boolean;
109
+ }
110
+ interface S3UploadFields {
111
+ acl: string;
112
+ bucket: string;
113
+ key: string;
114
+ }
115
+ interface UploadUrlData {
116
+ url: string;
117
+ fields: S3UploadFields;
118
+ }
119
+
120
+ interface Glossary {
121
+ readonly id: string;
122
+ readonly name: string;
123
+ readonly ownerId: string;
124
+ readonly createdAt: Date;
125
+ readonly updatedAt: Date;
126
+ }
127
+ interface GlossaryImport {
128
+ readonly id: string;
129
+ readonly begin: number;
130
+ readonly end: number;
131
+ readonly channel: number;
132
+ readonly size: number;
133
+ readonly progress: number;
134
+ }
135
+ interface GlossaryCounts {
136
+ unidirectional?: Record<string, number>;
137
+ multidirectional?: number;
138
+ }
139
+
140
+ interface Memory {
141
+ readonly id: string;
142
+ readonly createdAt: Date;
143
+ readonly updatedAt: Date;
144
+ readonly sharedAt: Date;
145
+ readonly name: string;
146
+ readonly externalId?: string;
147
+ readonly secret?: string;
148
+ readonly ownerId: string;
149
+ readonly collaboratorsCount: number;
150
+ }
151
+ interface MemoryImport {
152
+ readonly id: string;
153
+ readonly begin: number;
154
+ readonly end: number;
155
+ readonly channel: number;
156
+ readonly size: number;
157
+ readonly progress: number;
158
+ }
159
+
160
+ type UploadableFile = File | stream.Readable;
161
+ type DownloadResult = ReadableStream<Uint8Array> | stream.Readable;
162
+
163
+ declare class Memories {
164
+ private readonly client;
165
+ private readonly pollingInterval;
166
+ constructor(client: AxiosInstance);
167
+ list(): Promise<Memory[]>;
168
+ create(name: string, externalId?: string): Promise<Memory>;
169
+ get(id: string): Promise<Memory>;
170
+ delete(id: string): Promise<Memory>;
171
+ update(id: string, name: string): Promise<Memory>;
172
+ addTranslation(id: string | string[], source: string, target: string, sentence: string, translation: string, tuid?: string, sentenceBefore?: string, sentenceAfter?: string, headers?: Record<string, any>): Promise<MemoryImport>;
173
+ deleteTranslation(id: string | string[], source: string, target: string, sentence?: string, translation?: string, tuid?: string, sentenceBefore?: string, sentenceAfter?: string): Promise<MemoryImport>;
174
+ importTmx(id: string, tmx: UploadableFile, gzip?: boolean): Promise<MemoryImport>;
175
+ getImportStatus(id: string): Promise<MemoryImport>;
176
+ waitForImport(mImport: MemoryImport, updateCallback?: (mImport: MemoryImport) => void, maxWaitTime?: number): Promise<MemoryImport>;
177
+ connect<T extends string | string[]>(ids: T): Promise<T extends string ? Memory : Memory[]>;
178
+ }
179
+
180
+ declare class Glossaries {
181
+ private readonly client;
182
+ private readonly pollingInterval;
183
+ constructor(client: AxiosInstance);
184
+ list(): Promise<Glossary[]>;
185
+ create(name: string): Promise<Glossary>;
186
+ get(id: string): Promise<Glossary>;
187
+ delete(id: string): Promise<Glossary>;
188
+ update(id: string, name: string): Promise<Glossary>;
189
+ importCsv(id: string, csv: UploadableFile, gzip?: boolean): Promise<GlossaryImport>;
190
+ getImportStatus(id: string): Promise<GlossaryImport>;
191
+ waitForImport(gImport: GlossaryImport, updateCallback?: (mImport: GlossaryImport) => void, maxWaitTime?: number): Promise<GlossaryImport>;
192
+ counts(id: string): Promise<GlossaryCounts>;
193
+ export(id: string, contentType: 'csv/table-uni', source?: string): Promise<DownloadResult>;
194
+ }
195
+
196
+ declare class Documents {
197
+ private readonly client;
198
+ private readonly pollingInterval;
199
+ private readonly maxWaitTime;
200
+ constructor(client: AxiosInstance);
201
+ upload(file: UploadableFile, filename: string, source: string | undefined, target: string, options?: DocumentUploadOptions): Promise<Document>;
202
+ status(id: string): Promise<Document>;
203
+ download(id: string, options?: DocumentDownloadOptions): Promise<DownloadResult>;
204
+ translate(file: UploadableFile, filenane: string, source: string | undefined, target: string, options?: DocumentTranslateOptions): Promise<DownloadResult>;
205
+ }
206
+
207
+ declare class Translator {
208
+ private readonly accessKey?;
209
+ private readonly credentials?;
210
+ private authToken?;
211
+ readonly memories: Memories;
212
+ readonly glossaries: Glossaries;
213
+ readonly documents: Documents;
214
+ private token?;
215
+ private refreshToken?;
216
+ private readonly options?;
217
+ private readonly client;
218
+ constructor(accessKey?: AccessKey, credentials?: Credentials, authToken?: AuthToken, options?: TranslatorOptions);
219
+ private authenticate;
220
+ translate<T extends string | string[] | TextBlock[]>(text: T, source: string | undefined, target: string, options?: TranslateOptions): Promise<TextResult<T>>;
221
+ private parseResponseStream;
222
+ getLanguages(): Promise<string[]>;
223
+ static getLoginUrl(serverUrl?: string): Promise<string>;
224
+ static byAccessKey(id: string, secret: string, options?: TranslatorOptions): Translator;
225
+ static byCredentials(email: string, password: string, options?: TranslatorOptions): Translator;
226
+ static byAuthToken(token: string, refresh_token: string, options?: TranslatorOptions): Translator;
227
+ }
228
+
229
+ declare class LaraError extends Error {
230
+ }
231
+ declare class LaraTimeoutError extends LaraError {
232
+ }
233
+ declare class LaraApiError extends LaraError {
234
+ readonly statusCode: number;
235
+ readonly message: string;
236
+ readonly idTransaction: string;
237
+ constructor(statusCode: number, message: string, idTransaction: string);
238
+ }
239
+
240
+ export { type AccessKey, type AuthToken, type AuthenticationResponse, type Credentials, type Document, type DocumentDownloadOptions, type DocumentOptions, DocumentStatus, type DocumentTranslateOptions, type DocumentUploadOptions, type DocxExtractionParams, type DownloadResult, type Glossary, type GlossaryCounts, type GlossaryImport, LaraApiError, LaraError, LaraTimeoutError, type Memory, type MemoryImport, type NGGlossaryMatch, type NGMemoryMatch, type TextBlock, type TextResult, type TranslateOptions, type TranslationStyle, Translator, type TranslatorOptions, type UploadUrlData, type UploadableFile };
package/lib/index.d.ts CHANGED
@@ -1,2 +1,240 @@
1
- export * from './Translator';
2
- export * from './models';
1
+ import { AxiosInstance } from 'axios';
2
+ import * as stream from 'stream';
3
+
4
+ type AccessKey = {
5
+ id: string;
6
+ secret: string;
7
+ };
8
+ type AuthToken = {
9
+ token: string;
10
+ refresh_token: string;
11
+ };
12
+ type Credentials = {
13
+ email: string;
14
+ password: string;
15
+ };
16
+ type AuthenticationResponse = {
17
+ token: string;
18
+ };
19
+
20
+ interface TranslatorOptions {
21
+ serverUrl?: string;
22
+ extraHeaders?: Record<string, any>;
23
+ }
24
+ interface TextBlock {
25
+ readonly text: string;
26
+ readonly translatable?: boolean;
27
+ }
28
+ type TranslationStyle = 'faithful' | 'fluid' | 'creative';
29
+ type TranslateOptions = {
30
+ sourceHint?: string;
31
+ adaptTo?: string[];
32
+ instructions?: string[];
33
+ glossaries?: string[];
34
+ contentType?: string;
35
+ multiline?: boolean;
36
+ timeoutInMillis?: number;
37
+ priority?: 'normal' | 'background';
38
+ useCache?: boolean | 'overwrite';
39
+ cacheTTLSeconds?: number;
40
+ noTrace?: boolean;
41
+ verbose?: boolean;
42
+ headers?: Record<string, string>;
43
+ style?: TranslationStyle;
44
+ reasoning?: boolean;
45
+ };
46
+ interface NGMemoryMatch {
47
+ memory: string;
48
+ tuid?: string;
49
+ language: [string, string];
50
+ sentence: string;
51
+ translation: string;
52
+ score: number;
53
+ }
54
+ interface NGGlossaryMatch {
55
+ glossary: string;
56
+ language: [string, string];
57
+ term: string;
58
+ translation: string;
59
+ }
60
+ interface TextResult<T extends string | string[] | TextBlock[]> {
61
+ readonly contentType: string;
62
+ readonly sourceLanguage: string;
63
+ readonly translation: T;
64
+ readonly adaptedTo?: string[];
65
+ readonly glossaries?: string[];
66
+ readonly adaptedToMatches?: NGMemoryMatch[] | NGMemoryMatch[][];
67
+ readonly glossariesMatches?: NGGlossaryMatch[] | NGGlossaryMatch[][];
68
+ }
69
+
70
+ interface Document {
71
+ readonly id: string;
72
+ readonly status: DocumentStatus;
73
+ readonly source?: string;
74
+ readonly target: string;
75
+ readonly filename: string;
76
+ readonly createdAt: Date;
77
+ readonly updatedAt: Date;
78
+ readonly options?: DocumentOptions;
79
+ readonly translatedChars?: number;
80
+ readonly totalChars?: number;
81
+ readonly errorReason?: string;
82
+ }
83
+ declare enum DocumentStatus {
84
+ INITIALIZED = "initialized",// just been created
85
+ ANALYZING = "analyzing",// being analyzed for language detection and chars count
86
+ PAUSED = "paused",// paused after analysis, needs user confirm
87
+ READY = "ready",// ready to be translated
88
+ TRANSLATING = "translating",
89
+ TRANSLATED = "translated",
90
+ ERROR = "error"
91
+ }
92
+ type DocumentOptions = {
93
+ adaptTo?: string[];
94
+ glossaries?: string[];
95
+ noTrace?: boolean;
96
+ style?: TranslationStyle;
97
+ };
98
+ type DocumentUploadOptions = DocumentOptions & {
99
+ password?: string;
100
+ extractionParams?: DocxExtractionParams;
101
+ };
102
+ type DocumentDownloadOptions = {
103
+ outputFormat?: string;
104
+ };
105
+ type DocumentTranslateOptions = DocumentUploadOptions & DocumentDownloadOptions;
106
+ interface DocxExtractionParams {
107
+ extractComments?: boolean;
108
+ accepsRevisions?: boolean;
109
+ }
110
+ interface S3UploadFields {
111
+ acl: string;
112
+ bucket: string;
113
+ key: string;
114
+ }
115
+ interface UploadUrlData {
116
+ url: string;
117
+ fields: S3UploadFields;
118
+ }
119
+
120
+ interface Glossary {
121
+ readonly id: string;
122
+ readonly name: string;
123
+ readonly ownerId: string;
124
+ readonly createdAt: Date;
125
+ readonly updatedAt: Date;
126
+ }
127
+ interface GlossaryImport {
128
+ readonly id: string;
129
+ readonly begin: number;
130
+ readonly end: number;
131
+ readonly channel: number;
132
+ readonly size: number;
133
+ readonly progress: number;
134
+ }
135
+ interface GlossaryCounts {
136
+ unidirectional?: Record<string, number>;
137
+ multidirectional?: number;
138
+ }
139
+
140
+ interface Memory {
141
+ readonly id: string;
142
+ readonly createdAt: Date;
143
+ readonly updatedAt: Date;
144
+ readonly sharedAt: Date;
145
+ readonly name: string;
146
+ readonly externalId?: string;
147
+ readonly secret?: string;
148
+ readonly ownerId: string;
149
+ readonly collaboratorsCount: number;
150
+ }
151
+ interface MemoryImport {
152
+ readonly id: string;
153
+ readonly begin: number;
154
+ readonly end: number;
155
+ readonly channel: number;
156
+ readonly size: number;
157
+ readonly progress: number;
158
+ }
159
+
160
+ type UploadableFile = File | stream.Readable;
161
+ type DownloadResult = ReadableStream<Uint8Array> | stream.Readable;
162
+
163
+ declare class Memories {
164
+ private readonly client;
165
+ private readonly pollingInterval;
166
+ constructor(client: AxiosInstance);
167
+ list(): Promise<Memory[]>;
168
+ create(name: string, externalId?: string): Promise<Memory>;
169
+ get(id: string): Promise<Memory>;
170
+ delete(id: string): Promise<Memory>;
171
+ update(id: string, name: string): Promise<Memory>;
172
+ addTranslation(id: string | string[], source: string, target: string, sentence: string, translation: string, tuid?: string, sentenceBefore?: string, sentenceAfter?: string, headers?: Record<string, any>): Promise<MemoryImport>;
173
+ deleteTranslation(id: string | string[], source: string, target: string, sentence?: string, translation?: string, tuid?: string, sentenceBefore?: string, sentenceAfter?: string): Promise<MemoryImport>;
174
+ importTmx(id: string, tmx: UploadableFile, gzip?: boolean): Promise<MemoryImport>;
175
+ getImportStatus(id: string): Promise<MemoryImport>;
176
+ waitForImport(mImport: MemoryImport, updateCallback?: (mImport: MemoryImport) => void, maxWaitTime?: number): Promise<MemoryImport>;
177
+ connect<T extends string | string[]>(ids: T): Promise<T extends string ? Memory : Memory[]>;
178
+ }
179
+
180
+ declare class Glossaries {
181
+ private readonly client;
182
+ private readonly pollingInterval;
183
+ constructor(client: AxiosInstance);
184
+ list(): Promise<Glossary[]>;
185
+ create(name: string): Promise<Glossary>;
186
+ get(id: string): Promise<Glossary>;
187
+ delete(id: string): Promise<Glossary>;
188
+ update(id: string, name: string): Promise<Glossary>;
189
+ importCsv(id: string, csv: UploadableFile, gzip?: boolean): Promise<GlossaryImport>;
190
+ getImportStatus(id: string): Promise<GlossaryImport>;
191
+ waitForImport(gImport: GlossaryImport, updateCallback?: (mImport: GlossaryImport) => void, maxWaitTime?: number): Promise<GlossaryImport>;
192
+ counts(id: string): Promise<GlossaryCounts>;
193
+ export(id: string, contentType: 'csv/table-uni', source?: string): Promise<DownloadResult>;
194
+ }
195
+
196
+ declare class Documents {
197
+ private readonly client;
198
+ private readonly pollingInterval;
199
+ private readonly maxWaitTime;
200
+ constructor(client: AxiosInstance);
201
+ upload(file: UploadableFile, filename: string, source: string | undefined, target: string, options?: DocumentUploadOptions): Promise<Document>;
202
+ status(id: string): Promise<Document>;
203
+ download(id: string, options?: DocumentDownloadOptions): Promise<DownloadResult>;
204
+ translate(file: UploadableFile, filenane: string, source: string | undefined, target: string, options?: DocumentTranslateOptions): Promise<DownloadResult>;
205
+ }
206
+
207
+ declare class Translator {
208
+ private readonly accessKey?;
209
+ private readonly credentials?;
210
+ private authToken?;
211
+ readonly memories: Memories;
212
+ readonly glossaries: Glossaries;
213
+ readonly documents: Documents;
214
+ private token?;
215
+ private refreshToken?;
216
+ private readonly options?;
217
+ private readonly client;
218
+ constructor(accessKey?: AccessKey, credentials?: Credentials, authToken?: AuthToken, options?: TranslatorOptions);
219
+ private authenticate;
220
+ translate<T extends string | string[] | TextBlock[]>(text: T, source: string | undefined, target: string, options?: TranslateOptions): Promise<TextResult<T>>;
221
+ private parseResponseStream;
222
+ getLanguages(): Promise<string[]>;
223
+ static getLoginUrl(serverUrl?: string): Promise<string>;
224
+ static byAccessKey(id: string, secret: string, options?: TranslatorOptions): Translator;
225
+ static byCredentials(email: string, password: string, options?: TranslatorOptions): Translator;
226
+ static byAuthToken(token: string, refresh_token: string, options?: TranslatorOptions): Translator;
227
+ }
228
+
229
+ declare class LaraError extends Error {
230
+ }
231
+ declare class LaraTimeoutError extends LaraError {
232
+ }
233
+ declare class LaraApiError extends LaraError {
234
+ readonly statusCode: number;
235
+ readonly message: string;
236
+ readonly idTransaction: string;
237
+ constructor(statusCode: number, message: string, idTransaction: string);
238
+ }
239
+
240
+ export { type AccessKey, type AuthToken, type AuthenticationResponse, type Credentials, type Document, type DocumentDownloadOptions, type DocumentOptions, DocumentStatus, type DocumentTranslateOptions, type DocumentUploadOptions, type DocxExtractionParams, type DownloadResult, type Glossary, type GlossaryCounts, type GlossaryImport, LaraApiError, LaraError, LaraTimeoutError, type Memory, type MemoryImport, type NGGlossaryMatch, type NGMemoryMatch, type TextBlock, type TextResult, type TranslateOptions, type TranslationStyle, Translator, type TranslatorOptions, type UploadUrlData, type UploadableFile };
package/lib/index.js CHANGED
@@ -1,2 +1,3 @@
1
- export * from './Translator';
2
- export * from './models';
1
+ "use strict";var Z=Object.create;var A=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var W=(n,e)=>{for(var r in e)A(n,r,{get:e[r],enumerable:!0})},F=(n,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of Q(e))!V.call(n,t)&&t!==r&&A(n,t,{get:()=>e[t],enumerable:!(a=J(e,t))||a.enumerable});return n};var h=(n,e,r)=>(r=n!=null?Z(Y(n)):{},F(e||!n||!n.__esModule?A(r,"default",{value:n,enumerable:!0}):r,n)),ee=n=>F(A({},"__esModule",{value:!0}),n);var te={};W(te,{DocumentStatus:()=>P,LaraApiError:()=>y,LaraError:()=>w,LaraTimeoutError:()=>u,Translator:()=>M});module.exports=ee(te);var p=h(require("axios"));var w=class extends Error{},u=class extends w{},y=class extends w{constructor(e,r,a){super(r),this.statusCode=e,this.message=r,this.idTransaction=a}};var G=n=>{let e=new FormData;for(let[r,a]of Object.entries(n))if(a)if(Array.isArray(a))for(let t of a)e.append(r,t);else e.append(r,a);return[e,{}]};var L=h(require("form-data")),_=n=>{let e=new L.default;for(let[r,a]of Object.entries(n))if(a)if(Array.isArray(a))for(let t of a)e.append(r,t);else e.append(r,a);return[e,{...e.getHeaders()}]};var I;typeof window!="undefined"?I=G:I=_;var g=I;var f=n=>new Promise(e=>setTimeout(e,n));var T=class{constructor(e){this.pollingInterval=2e3;this.client=e}async list(){let{data:e}=await this.client.get("/v2/memories");return e}async create(e,r){let{data:a}=await this.client.post("/v2/memories",{name:e,external_id:r});return a}async get(e){let{data:r}=await this.client.get(`/v2/memories/${e}`);return r}async delete(e){let{data:r}=await this.client.delete(`/v2/memories/${e}`);return r}async update(e,r){let{data:a}=await this.client.put(`/v2/memories/${e}`,{name:r});return a}async addTranslation(e,r,a,t,s,i,o,l,c){let m=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:d}=await this.client.put(m,{ids:Array.isArray(e)?e:void 0,source:r,target:a,sentence:t,translation:s,tuid:i,sentence_before:o,sentence_after:l},{headers:c});return d}async deleteTranslation(e,r,a,t,s,i,o,l){let c=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:m}=await this.client.delete(c,{data:{ids:Array.isArray(e)?e:void 0,source:r,target:a,sentence:t,translation:s,tuid:i,sentence_before:o,sentence_after:l}});return m}async importTmx(e,r,a=!1){let[t,s]=g({tmx:r,compression:a?"gzip":void 0}),{data:i}=await this.client.post(`/v2/memories/${e}/import`,t,{headers:s});return i}async getImportStatus(e){let{data:r}=await this.client.get(`/v2/memories/imports/${e}`);return r}async waitForImport(e,r,a){let t=Date.now();for(;e.progress<1;){if(a&&Date.now()-t>a)throw new u;await f(this.pollingInterval),e=await this.getImportStatus(e.id),r&&r(e)}return e}async connect(e){let{data:r}=await this.client.post("/v2/memories/connect",{ids:Array.isArray(e)?e:[e]});return Array.isArray(e)?r:r[0]}};var E="2.0.0-beta.9";var k=n=>Object.entries(n).reduce((e,[r,a])=>(a!=null&&e.push(`${encodeURIComponent(r)}=${encodeURIComponent(a)}`),e),[]).join("&");var R=typeof window=="undefined";var b=class{constructor(e){this.pollingInterval=2e3;this.client=e}async list(){let{data:e}=await this.client.get("/v2/glossaries");return e}async create(e){let{data:r}=await this.client.post("/v2/glossaries",{name:e});return r}async get(e){let{data:r}=await this.client.get(`/v2/glossaries/${e}`);return r}async delete(e){let{data:r}=await this.client.delete(`/v2/glossaries/${e}`);return r}async update(e,r){let{data:a}=await this.client.put(`/v2/glossaries/${e}`,{name:r});return a}async importCsv(e,r,a=!1){let[t,s]=g({csv:r,compression:a?"gzip":void 0}),{data:i}=await this.client.post(`/v2/glossaries/${e}/import`,t,{headers:s});return i}async getImportStatus(e){let{data:r}=await this.client.get(`/v2/glossaries/imports/${e}`);return r}async waitForImport(e,r,a){let t=Date.now();for(;e.progress<1;){if(a&&Date.now()-t>a)throw new u;await f(this.pollingInterval),e=await this.getImportStatus(e.id),r&&r(e)}return e}async counts(e){let{data:r}=await this.client.get(`/v2/glossaries/${e}/counts`);return r}async export(e,r,a){let t=k({content_type:r,source:a});if(R){let{data:s}=await this.client.get(`/v2/glossaries/${e}/export?${t}`,{responseType:"stream"});return s}else{let{data:s}=await this.client.get(`/v2/glossaries/${e}/export?${t}`,{responseType:"blob"});return s.stream()}}};var H=h(require("axios"));var P=(o=>(o.INITIALIZED="initialized",o.ANALYZING="analyzing",o.PAUSED="paused",o.READY="ready",o.TRANSLATING="translating",o.TRANSLATED="translated",o.ERROR="error",o))(P||{});var O=n=>{if(typeof n=="string")return n;if(Array.isArray(n))return n.map(O);if(typeof n=="object"&&n!==null){let e={};for(let[r,a]of Object.entries(n)){let t=r.replace(/([A-Z])/g,"_$1").toLowerCase();e[t]=O(a)}return e}return n},N=O;var j=h(require("axios")),K=async n=>{let{data:e}=await j.default.get(n,{responseType:"blob"});return e.stream()};var B=h(require("axios")),z=async n=>{let{data:e}=await B.default.get(n,{responseType:"stream"});return e};var U;R?U=z:U=K;var X=U;var x=class{constructor(e){this.pollingInterval=2e3;this.maxWaitTime=1e3*60*15;this.client=e}async upload(e,r,a,t,s){let{data:i}=await this.client.get(`/v2/documents/upload-url?filename=${encodeURIComponent(r)}`),{url:o,fields:l}=i,[c,m]=g({...l,file:e});await H.default.post(o,c,{headers:m});let d=s!=null&&s.noTrace?{"X-Lara-No-Trace":"true"}:void 0,{data:v}=await this.client.post("/v2/documents",{source:a,target:t,s3key:l.key,adapt_to:s==null?void 0:s.adaptTo,glossaries:s==null?void 0:s.glossaries,style:s==null?void 0:s.style,password:s==null?void 0:s.password,extraction_params:s!=null&&s.extractionParams?N(s.extractionParams):void 0},d?{headers:d}:void 0);return v}async status(e){let{data:r}=await this.client.get(`/v2/documents/${e}`);return r}async download(e,r){let a=k({output_format:r==null?void 0:r.outputFormat}),{data:t}=await this.client.get(`/v2/documents/${e}/download-url?${a}`);return await X(t.url)}async translate(e,r,a,t,s){let i={adaptTo:s==null?void 0:s.adaptTo,glossaries:s==null?void 0:s.glossaries,noTrace:s==null?void 0:s.noTrace,style:s==null?void 0:s.style,password:s==null?void 0:s.password,extractionParams:s==null?void 0:s.extractionParams},{id:o}=await this.upload(e,r,a,t,i),l={outputFormat:s==null?void 0:s.outputFormat},c=Date.now();for(;Date.now()-c<this.maxWaitTime;){await f(this.pollingInterval);let{status:m,errorReason:d}=await this.status(o);if(m==="translated")return await this.download(o,l);if(m==="error")throw new y(500,d,"unknown")}throw new u}};var $=n=>{if(typeof n=="string")return n;if(Array.isArray(n))return n.map($);if(typeof n=="object"&&n!==null){let e={};for(let[r,a]of Object.entries(n)){let t=r.replace(/_([a-z])/g,(s,i)=>i.toUpperCase());e[t]=$(a)}return e}return n},S=$;var D="https://api.laratranslate.com",M=class n{constructor(e,r,a,t){var s;this.accessKey=e,this.credentials=r,this.authToken=a,this.options=t||{},this.client=p.default.create({baseURL:(s=t==null?void 0:t.serverUrl)!=null?s:D,headers:{"X-Lara-SDK-Name":"lara-node","X-Lara-SDK-Version":E,"X-Lara-Date":new Date().toUTCString(),...(t==null?void 0:t.extraHeaders)||{}}}),this.client.interceptors.request.use(async i=>{let o=await this.authenticate();return console.log("request",i.url,i.method),i.headers.Authorization=`Bearer ${o}`,i},Promise.reject),this.client.interceptors.response.use(i=>(console.log(i.config.responseType),i.config.responseType!=="stream"&&i.data&&typeof i.data=="object"&&(i.data=S(i.data)),i),async i=>{var l,c,m,d,v,C;let o=i.config;if(!o.isRetry&&i.response&&i.response.status===401&&i.response.data.message==="jwt expired"){this.token=void 0;let q=await this.authenticate();return o.isRetry=!0,o.headers.Authorization=`Bearer ${q}`,this.client(o)}return Promise.reject(new y((c=(l=i.response)==null?void 0:l.status)!=null?c:500,(v=(d=(m=i.response)==null?void 0:m.data)==null?void 0:d.message)!=null?v:i.message,(C=i.response)==null?void 0:C.headers["x-transaction-id"]))}),this.memories=new T(this.client),this.glossaries=new b(this.client),this.documents=new x(this.client)}async authenticate(){var e,r,a,t,s,i;if(this.token)return this.token;if(this.refreshToken){let{data:o,headers:l}=await p.default.post(`${(r=(e=this.options)==null?void 0:e.serverUrl)!=null?r:D}/v2/auth/refresh`,null,{headers:{authorization:`Bearer ${this.refreshToken}`,"X-Lara-Date":new Date().toUTCString()}});return this.token=o.token,this.refreshToken=l["x-lara-refresh-token"],this.token}else if(this.accessKey){let{data:o,headers:l}=await p.default.post(`${(t=(a=this.options)==null?void 0:a.serverUrl)!=null?t:D}/v2/auth`,this.accessKey,{headers:{"X-Lara-Date":new Date().toUTCString()}});return this.token=o.token,this.refreshToken=l["x-lara-refresh-token"],this.token}else if(this.credentials){let{data:o,headers:l}=await p.default.post(`${(i=(s=this.options)==null?void 0:s.serverUrl)!=null?i:D}/v2/auth/Unknown/login`,this.credentials,{headers:{"X-Lara-Date":new Date().toUTCString()}});return this.token=o.token,this.refreshToken=l["x-lara-refresh-token"],this.token}else{if(this.authToken)return this.token=this.authToken.token,this.refreshToken=this.authToken.refresh_token,this.authToken=void 0,this.token;throw new Error("No authentication method provided")}}async translate(e,r,a,t){let s={};if(t!=null&&t.headers)for(let[l,c]of Object.entries(t.headers))s[l]=c;t!=null&&t.noTrace&&(s["X-No-Trace"]="true");let{data:i}=await this.client.post("/v2/translate",{q:e,source:r||void 0,target:a,source_hint:t==null?void 0:t.sourceHint,content_type:t==null?void 0:t.contentType,multiline:(t==null?void 0:t.multiline)!==!1,adapt_to:t==null?void 0:t.adaptTo,glossaries:t==null?void 0:t.glossaries,instructions:t==null?void 0:t.instructions,timeout:t==null?void 0:t.timeoutInMillis,priority:t==null?void 0:t.priority,use_cache:t==null?void 0:t.useCache,cache_ttl:t==null?void 0:t.cacheTTLSeconds,verbose:t==null?void 0:t.verbose,style:t==null?void 0:t.style,reasoning:t==null?void 0:t.reasoning},{headers:s,responseType:"stream"}),o;for await(let l of this.parseResponseStream(i))o=l;if(!o)throw new Error("No translation received from the server");return o}async*parseResponseStream(e){let r=t=>{if(typeof t=="string")try{t=S(JSON.parse(t))}catch{}return t},a="";for await(let t of e){a+=t.toString();let s;for(;(s=a.indexOf(`
2
+ `))!==-1;){let i=a.substring(0,s).trim();a=a.substring(s+1),i&&(yield r(i))}}a.trim()&&(yield r(a.trim()))}async getLanguages(){let{data:e}=await this.client.get("/v2/languages");return e}static async getLoginUrl(e){let{data:r}=await p.default.get(`${e!=null?e:D}/v2/auth/login-page`);return r}static byAccessKey(e,r,a){return new n({id:e,secret:r},void 0,void 0,a)}static byCredentials(e,r,a){return new n(void 0,{email:e,password:r},void 0,a)}static byAuthToken(e,r,a){return new n(void 0,void 0,{token:e,refresh_token:r},a)}};0&&(module.exports={DocumentStatus,LaraApiError,LaraError,LaraTimeoutError,Translator});
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/Translator.ts","../src/utils/errors.ts","../src/utils/formdata/browser.ts","../src/utils/formdata/node.ts","../src/utils/formdata/index.ts","../src/utils/sleep.ts","../src/Memories.ts","../src/sdk-version.ts","../src/utils/toQueryString.ts","../src/utils/isNode.ts","../src/Glossaries.ts","../src/Documents.ts","../src/models/documents.ts","../src/utils/toSnakeCase.ts","../src/utils/downloadFromS3/browser.ts","../src/utils/downloadFromS3/node.ts","../src/utils/downloadFromS3/index.ts","../src/utils/toCamelCase.ts"],"sourcesContent":["export * from './Translator';\nexport * from './models';\nexport * from './utils/errors';\n","import axios, { AxiosInstance } from 'axios';\nimport {\n AccessKey,\n Credentials,\n AuthToken,\n TranslatorOptions,\n TextBlock,\n TranslateOptions,\n TextResult,\n AuthenticationResponse,\n} from './models';\nimport Memories from './Memories';\nimport { version } from './sdk-version';\nimport Glossaries from './Glossaries';\nimport Documents from './Documents';\nimport toCamelCase from './utils/toCamelCase';\nimport { LaraApiError } from './utils/errors';\n\nconst DEFAULT_BASE_URL = 'https://api.laratranslate.com';\n\nexport class Translator {\n private readonly accessKey?: AccessKey;\n private readonly credentials?: Credentials;\n private authToken?: AuthToken;\n\n public readonly memories: Memories;\n public readonly glossaries: Glossaries;\n public readonly documents: Documents;\n\n private token?: string;\n private refreshToken?: string;\n\n private readonly options?: TranslatorOptions;\n\n private readonly client: AxiosInstance;\n\n constructor(accessKey?: AccessKey, credentials?: Credentials, authToken?: AuthToken, options?: TranslatorOptions) {\n this.accessKey = accessKey;\n this.credentials = credentials;\n this.authToken = authToken;\n\n this.options = options || {};\n\n this.client = axios.create({\n baseURL: options?.serverUrl ?? DEFAULT_BASE_URL,\n headers: {\n 'X-Lara-SDK-Name': 'lara-node',\n 'X-Lara-SDK-Version': version,\n 'X-Lara-Date': new Date().toUTCString(),\n ...(options?.extraHeaders || {}),\n },\n });\n\n // Intercept request to add authentication header\n this.client.interceptors.request.use(async (request) => {\n const token = await this.authenticate();\n\n console.log('request', request.url, request.method);\n\n request.headers.Authorization = `Bearer ${token}`;\n return request;\n }, Promise.reject);\n\n // Intercepts errors to handle authentication errors\n this.client.interceptors.response.use(\n (response) => {\n console.log(response.config.responseType);\n // Convert payload in camel case if needed\n if (response.config.responseType !== 'stream' && response.data && typeof response.data === 'object') {\n response.data = toCamelCase(response.data);\n }\n\n return response;\n },\n async (error) => {\n const originalRequest = error.config;\n\n if (!originalRequest.isRetry && error.response && error.response.status === 401 && error.response.data.message === 'jwt expired') {\n this.token = undefined;\n const token = await this.authenticate();\n originalRequest.isRetry = true;\n originalRequest.headers.Authorization = `Bearer ${token}`;\n return this.client(originalRequest);\n }\n\n return Promise.reject(\n new LaraApiError(\n error.response?.status ?? 500,\n error.response?.data?.message ?? error.message,\n error.response?.headers['x-transaction-id'],\n ),\n );\n },\n );\n\n this.memories = new Memories(this.client);\n this.glossaries = new Glossaries(this.client);\n this.documents = new Documents(this.client);\n }\n\n private async authenticate(): Promise<string> {\n // If the token is set, return it\n if (this.token) return this.token;\n\n // If we have a refresh token, use it to get a new token\n if (this.refreshToken) {\n const { data, headers } = await axios.post<AuthenticationResponse>(\n `${this.options?.serverUrl ?? DEFAULT_BASE_URL}/v2/auth/refresh`,\n null,\n {\n headers: {\n authorization: `Bearer ${this.refreshToken}`,\n 'X-Lara-Date': new Date().toUTCString(),\n },\n },\n );\n\n this.token = data.token;\n this.refreshToken = headers['x-lara-refresh-token'];\n return this.token;\n } else if (this.accessKey) {\n // Use access key to get a new token\n const { data, headers } = await axios.post<AuthenticationResponse>(\n `${this.options?.serverUrl ?? DEFAULT_BASE_URL}/v2/auth`,\n this.accessKey,\n {\n headers: {\n 'X-Lara-Date': new Date().toUTCString(),\n },\n },\n );\n\n this.token = data.token;\n this.refreshToken = headers['x-lara-refresh-token'];\n return this.token;\n } else if (this.credentials) {\n // Use credentials to get a new token\n const { data, headers } = await axios.post<AuthenticationResponse>(\n //FIXME: client id should be set\n `${this.options?.serverUrl ?? DEFAULT_BASE_URL}/v2/auth/Unknown/login`,\n this.credentials,\n {\n headers: {\n 'X-Lara-Date': new Date().toUTCString(),\n },\n },\n );\n\n this.token = data.token;\n this.refreshToken = headers['x-lara-refresh-token'];\n return this.token;\n } else if (this.authToken) {\n // Use the provided auth token\n this.token = this.authToken.token;\n this.refreshToken = this.authToken.refresh_token;\n this.authToken = undefined;\n return this.token;\n } else {\n throw new Error('No authentication method provided');\n }\n }\n\n async translate<T extends string | string[] | TextBlock[]>(\n text: T,\n source: string | undefined,\n target: string,\n options?: TranslateOptions,\n ): Promise<TextResult<T>> {\n const headers: Record<string, string> = {};\n\n if (options?.headers) {\n for (const [name, value] of Object.entries(options.headers)) {\n headers[name] = value;\n }\n }\n\n if (options?.noTrace) headers['X-No-Trace'] = 'true';\n\n const { data: stream } = await this.client.post(\n `/v2/translate`,\n {\n q: text,\n source: !!source ? source : undefined,\n target,\n source_hint: options?.sourceHint,\n content_type: options?.contentType,\n multiline: options?.multiline !== false,\n adapt_to: options?.adaptTo,\n glossaries: options?.glossaries,\n instructions: options?.instructions,\n timeout: options?.timeoutInMillis,\n priority: options?.priority,\n use_cache: options?.useCache,\n cache_ttl: options?.cacheTTLSeconds,\n verbose: options?.verbose,\n style: options?.style,\n reasoning: options?.reasoning,\n },\n { headers, responseType: 'stream' },\n );\n\n let lastResult: TextResult<T> | undefined;\n\n for await (const partialResult of this.parseResponseStream(stream)) {\n lastResult = partialResult as TextResult<T>;\n }\n\n if (!lastResult) {\n throw new Error('No translation received from the server');\n }\n\n return lastResult;\n }\n\n private async *parseResponseStream(stream: NodeJS.ReadableStream): AsyncGenerator<TextResult<string | string[] | TextBlock[]>> {\n const parseResponse = (data: any) => {\n if (typeof data === 'string') {\n try {\n data = toCamelCase(JSON.parse(data));\n } catch (e) {\n // DO NOTHING\n }\n }\n return data;\n };\n\n let buffer = '';\n\n for await (const chunk of stream) {\n buffer += chunk.toString();\n let newlineIndex;\n while ((newlineIndex = buffer.indexOf('\\n')) !== -1) {\n const line = buffer.substring(0, newlineIndex).trim();\n buffer = buffer.substring(newlineIndex + 1);\n if (line) {\n yield parseResponse(line);\n }\n }\n }\n\n if (buffer.trim()) {\n yield parseResponse(buffer.trim());\n }\n }\n\n async getLanguages(): Promise<string[]> {\n const { data } = await this.client.get<string[]>(`/v2/languages`);\n return data;\n }\n\n static async getLoginUrl(serverUrl?: string): Promise<string> {\n const { data } = await axios.get<string>(`${serverUrl ?? DEFAULT_BASE_URL}/v2/auth/login-page`);\n return data;\n }\n\n static byAccessKey(id: string, secret: string, options?: TranslatorOptions): Translator {\n return new Translator({ id, secret }, undefined, undefined, options);\n }\n\n static byCredentials(email: string, password: string, options?: TranslatorOptions): Translator {\n return new Translator(undefined, { email, password }, undefined, options);\n }\n\n static byAuthToken(token: string, refresh_token: string, options?: TranslatorOptions): Translator {\n return new Translator(undefined, undefined, { token, refresh_token }, options);\n }\n}\n","export class LaraError extends Error {}\n\nexport class LaraTimeoutError extends LaraError {}\n\nexport class LaraApiError extends LaraError {\n public readonly statusCode: number;\n public readonly message: string;\n public readonly idTransaction: string;\n\n constructor(statusCode: number, message: string, idTransaction: string) {\n super(message);\n this.statusCode = statusCode;\n this.message = message;\n this.idTransaction = idTransaction;\n }\n}\n","export default (data: Record<string, any>) => {\n const formData = new FormData();\n for (const [key, value] of Object.entries(data)) {\n if (!value) continue;\n if (Array.isArray(value)) {\n for (const v of value) formData.append(key, v);\n } else {\n formData.append(key, value);\n }\n }\n\n return [formData, {}];\n};\n","import FormData from 'form-data';\n\nexport default (data: Record<string, any>): [FormData, { [key: string]: any }] => {\n const formData = new FormData();\n for (const [key, value] of Object.entries(data)) {\n if (!value) continue;\n if (Array.isArray(value)) {\n for (const v of value) formData.append(key, v);\n } else {\n formData.append(key, value);\n }\n }\n\n return [formData, { ...formData.getHeaders() }];\n};\n","import browserForm from './browser.js';\nimport nodeForm from './node.js';\n\nlet form;\n\nif (typeof window !== 'undefined') {\n form = browserForm;\n} else {\n form = nodeForm;\n}\n\nexport default form as (data: Record<string, any>) => [any, { [key: string]: any }];\n","export default (millis: number) => new Promise((resolve) => setTimeout(resolve, millis));\n","import { AxiosInstance } from 'axios';\nimport { LaraTimeoutError } from './utils/errors';\nimport { Memory, MemoryImport, UploadableFile } from './models';\nimport toFormData from './utils/formdata';\nimport sleep from './utils/sleep';\n\nexport default class Memories {\n private readonly client: AxiosInstance;\n private readonly pollingInterval: number = 2000;\n\n constructor(client: AxiosInstance) {\n this.client = client;\n }\n\n public async list(): Promise<Memory[]> {\n const { data } = await this.client.get<Memory[]>('/v2/memories');\n return data;\n }\n\n public async create(name: string, externalId?: string): Promise<Memory> {\n const { data } = await this.client.post<Memory>('/v2/memories', {\n name,\n external_id: externalId,\n });\n return data;\n }\n\n public async get(id: string): Promise<Memory> {\n const { data } = await this.client.get<Memory>(`/v2/memories/${id}`);\n return data;\n }\n\n public async delete(id: string): Promise<Memory> {\n const { data } = await this.client.delete<Memory>(`/v2/memories/${id}`);\n return data;\n }\n\n public async update(id: string, name: string): Promise<Memory> {\n const { data } = await this.client.put<Memory>(`/v2/memories/${id}`, { name });\n return data;\n }\n\n public async addTranslation(\n id: string | string[],\n source: string,\n target: string,\n sentence: string,\n translation: string,\n tuid?: string,\n sentenceBefore?: string,\n sentenceAfter?: string,\n headers?: Record<string, any>,\n ): Promise<MemoryImport> {\n const url = Array.isArray(id) ? '/v2/memories/content' : `/v2/memories/${id}/content`;\n const { data } = await this.client.put<MemoryImport>(\n url,\n {\n ids: Array.isArray(id) ? id : undefined,\n source,\n target,\n sentence,\n translation,\n tuid,\n sentence_before: sentenceBefore,\n sentence_after: sentenceAfter,\n },\n {\n headers,\n },\n );\n return data;\n }\n\n public async deleteTranslation(\n id: string | string[],\n source: string,\n target: string,\n sentence?: string,\n translation?: string,\n tuid?: string,\n sentenceBefore?: string,\n sentenceAfter?: string,\n ): Promise<MemoryImport> {\n const url = Array.isArray(id) ? '/v2/memories/content' : `/v2/memories/${id}/content`;\n const { data } = await this.client.delete<MemoryImport>(url, {\n data: {\n ids: Array.isArray(id) ? id : undefined,\n source,\n target,\n sentence,\n translation,\n tuid,\n sentence_before: sentenceBefore,\n sentence_after: sentenceAfter,\n },\n });\n return data;\n }\n\n public async importTmx(id: string, tmx: UploadableFile, gzip: boolean = false) {\n const [formData, headers] = toFormData({\n tmx,\n compression: gzip ? 'gzip' : undefined,\n });\n\n const { data } = await this.client.post<MemoryImport>(`/v2/memories/${id}/import`, formData, {\n headers,\n });\n\n return data;\n }\n\n public async getImportStatus(id: string): Promise<MemoryImport> {\n const { data } = await this.client.get(`/v2/memories/imports/${id}`);\n return data;\n }\n\n public async waitForImport(\n mImport: MemoryImport,\n updateCallback?: (mImport: MemoryImport) => void,\n maxWaitTime?: number,\n ): Promise<MemoryImport> {\n const start = Date.now();\n\n while (mImport.progress < 1.0) {\n if (maxWaitTime && Date.now() - start > maxWaitTime) throw new LaraTimeoutError();\n\n await sleep(this.pollingInterval);\n\n mImport = await this.getImportStatus(mImport.id);\n\n updateCallback && updateCallback(mImport);\n }\n\n return mImport;\n }\n\n public async connect<T extends string | string[]>(ids: T): Promise<T extends string ? Memory : Memory[]> {\n const { data } = await this.client.post<Memory[]>('/v2/memories/connect', {\n ids: Array.isArray(ids) ? ids : [ids],\n });\n\n return (Array.isArray(ids) ? data : data[0]) as T extends string ? Memory : Memory[];\n }\n}\n","export const version = '2.0.0-beta.9';\n","export default (params: Record<string, any>): string =>\n Object.entries(params)\n .reduce((acc, [key, value]) => {\n if (value !== undefined && value !== null) {\n acc.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n }\n return acc;\n }, [] as string[])\n .join('&');\n","export default typeof window === 'undefined';\n","import { Readable } from 'node:stream';\nimport { blob } from 'stream/consumers';\nimport { AxiosInstance } from 'axios';\nimport { LaraTimeoutError } from './utils/errors';\nimport { DownloadResult, Glossary, GlossaryCounts, GlossaryImport, UploadableFile } from './models';\nimport toFormData from './utils/formdata';\nimport sleep from './utils/sleep';\nimport toQueryString from './utils/toQueryString';\nimport isNode from './utils/isNode';\n\nexport default class Glossaries {\n private readonly client: AxiosInstance;\n private readonly pollingInterval: number = 2000;\n\n constructor(client: AxiosInstance) {\n this.client = client;\n }\n\n public async list(): Promise<Glossary[]> {\n const { data } = await this.client.get<Glossary[]>('/v2/glossaries');\n return data;\n }\n\n public async create(name: string): Promise<Glossary> {\n const { data } = await this.client.post<Glossary>('/v2/glossaries', {\n name,\n });\n return data;\n }\n\n public async get(id: string): Promise<Glossary> {\n const { data } = await this.client.get<Glossary>(`/v2/glossaries/${id}`);\n return data;\n }\n\n public async delete(id: string): Promise<Glossary> {\n const { data } = await this.client.delete<Glossary>(`/v2/glossaries/${id}`);\n return data;\n }\n\n public async update(id: string, name: string): Promise<Glossary> {\n const { data } = await this.client.put<Glossary>(`/v2/glossaries/${id}`, { name });\n return data;\n }\n\n public async importCsv(id: string, csv: UploadableFile, gzip: boolean = false): Promise<GlossaryImport> {\n const [formData, headers] = toFormData({\n csv,\n compression: gzip ? 'gzip' : undefined,\n });\n\n const { data } = await this.client.post<GlossaryImport>(`/v2/glossaries/${id}/import`, formData, { headers });\n return data;\n }\n\n public async getImportStatus(id: string): Promise<GlossaryImport> {\n const { data } = await this.client.get<GlossaryImport>(`/v2/glossaries/imports/${id}`);\n return data;\n }\n\n public async waitForImport(\n gImport: GlossaryImport,\n updateCallback?: (mImport: GlossaryImport) => void,\n maxWaitTime?: number,\n ): Promise<GlossaryImport> {\n const start = Date.now();\n\n while (gImport.progress < 1.0) {\n if (maxWaitTime && Date.now() - start > maxWaitTime) throw new LaraTimeoutError();\n\n await sleep(this.pollingInterval);\n\n gImport = await this.getImportStatus(gImport.id);\n\n updateCallback && updateCallback(gImport);\n }\n\n return gImport;\n }\n\n public async counts(id: string): Promise<GlossaryCounts> {\n const { data } = await this.client.get<GlossaryCounts>(`/v2/glossaries/${id}/counts`);\n return data;\n }\n\n public async export(id: string, contentType: 'csv/table-uni', source?: string): Promise<DownloadResult> {\n const queryString = toQueryString({\n content_type: contentType,\n source,\n });\n\n if (isNode) {\n const { data } = await this.client.get<Readable>(`/v2/glossaries/${id}/export?${queryString}`, {\n responseType: 'stream',\n });\n return data;\n } else {\n const { data } = await this.client.get<Blob>(`/v2/glossaries/${id}/export?${queryString}`, {\n responseType: 'blob',\n });\n return data.stream();\n }\n }\n}\n","import axios, { AxiosInstance } from 'axios';\nimport {\n Document,\n DocumentDownloadOptions,\n DocumentStatus,\n DocumentTranslateOptions,\n DocumentUploadOptions,\n DownloadResult,\n UploadableFile,\n UploadUrlData,\n} from './models';\nimport toFormData from './utils/formdata';\nimport toSnakeCase from './utils/toSnakeCase';\nimport sleep from './utils/sleep';\nimport { LaraApiError, LaraTimeoutError } from './utils/errors';\nimport toQueryString from './utils/toQueryString';\nimport downloadFromS3 from './utils/downloadFromS3';\n\nexport default class Documents {\n private readonly client: AxiosInstance;\n private readonly pollingInterval: number = 2000;\n private readonly maxWaitTime: number = 1000 * 60 * 15; // 15 minutes\n\n constructor(client: AxiosInstance) {\n this.client = client;\n }\n\n public async upload(\n file: UploadableFile,\n filename: string,\n source: string | undefined,\n target: string,\n options?: DocumentUploadOptions,\n ): Promise<Document> {\n const { data: s3UploadUrlData } = await this.client.get<UploadUrlData>(\n `/v2/documents/upload-url?filename=${encodeURIComponent(filename)}`,\n );\n const { url, fields } = s3UploadUrlData;\n\n const [formData, headers] = toFormData({\n ...fields,\n file,\n });\n\n await axios.post(url, formData, { headers });\n\n const noTraceHeader = options?.noTrace ? { 'X-Lara-No-Trace': 'true' } : undefined;\n\n const { data } = await this.client.post<Document>(\n `/v2/documents`,\n {\n source,\n target,\n s3key: fields.key,\n adapt_to: options?.adaptTo,\n glossaries: options?.glossaries,\n style: options?.style,\n password: options?.password,\n extraction_params: options?.extractionParams ? toSnakeCase(options.extractionParams) : undefined,\n },\n noTraceHeader ? { headers: noTraceHeader } : undefined,\n );\n\n return data;\n }\n\n public async status(id: string): Promise<Document> {\n const { data } = await this.client.get<Document>(`/v2/documents/${id}`);\n return data;\n }\n\n public async download(id: string, options?: DocumentDownloadOptions): Promise<DownloadResult> {\n const queryString = toQueryString({\n output_format: options?.outputFormat,\n });\n\n const { data } = await this.client.get<{ url: string }>(`/v2/documents/${id}/download-url?${queryString}`);\n\n return await downloadFromS3(data.url);\n }\n\n public async translate(\n file: UploadableFile,\n filenane: string,\n source: string | undefined,\n target: string,\n options?: DocumentTranslateOptions,\n ): Promise<DownloadResult> {\n const uploadOptions: DocumentUploadOptions = {\n adaptTo: options?.adaptTo,\n glossaries: options?.glossaries,\n noTrace: options?.noTrace,\n style: options?.style,\n password: options?.password,\n extractionParams: options?.extractionParams,\n };\n\n const { id } = await this.upload(file, filenane, source, target, uploadOptions);\n\n const downloadOptions: DocumentDownloadOptions = {\n outputFormat: options?.outputFormat,\n };\n\n const start = Date.now();\n\n while (Date.now() - start < this.maxWaitTime) {\n await sleep(this.pollingInterval);\n\n const { status, errorReason } = await this.status(id);\n\n if (status === DocumentStatus.TRANSLATED) return await this.download(id, downloadOptions);\n if (status === DocumentStatus.ERROR) throw new LaraApiError(500, errorReason as string, 'unknown');\n }\n\n throw new LaraTimeoutError();\n }\n}\n","import { TranslationStyle } from './translator';\n\nexport interface Document {\n readonly id: string;\n readonly status: DocumentStatus;\n readonly source?: string;\n readonly target: string;\n readonly filename: string;\n readonly createdAt: Date;\n readonly updatedAt: Date;\n readonly options?: DocumentOptions;\n readonly translatedChars?: number;\n readonly totalChars?: number;\n readonly errorReason?: string;\n}\n\nexport enum DocumentStatus {\n INITIALIZED = 'initialized', // just been created\n ANALYZING = 'analyzing', // being analyzed for language detection and chars count\n PAUSED = 'paused', // paused after analysis, needs user confirm\n READY = 'ready', // ready to be translated\n TRANSLATING = 'translating',\n TRANSLATED = 'translated',\n ERROR = 'error',\n}\nexport type DocumentOptions = {\n adaptTo?: string[];\n glossaries?: string[];\n noTrace?: boolean;\n style?: TranslationStyle;\n};\n\nexport type DocumentUploadOptions = DocumentOptions & {\n password?: string;\n extractionParams?: DocxExtractionParams;\n};\n\nexport type DocumentDownloadOptions = {\n outputFormat?: string;\n};\n\nexport type DocumentTranslateOptions = DocumentUploadOptions & DocumentDownloadOptions;\n\nexport interface DocxExtractionParams {\n extractComments?: boolean;\n accepsRevisions?: boolean;\n}\n\ninterface S3UploadFields {\n acl: string;\n bucket: string;\n key: string;\n}\n\nexport interface UploadUrlData {\n url: string;\n fields: S3UploadFields;\n}\n","const toSnakeCase = (content: any): any => {\n if (typeof content === 'string') return content;\n if (Array.isArray(content)) return content.map(toSnakeCase);\n\n if (typeof content === 'object' && content !== null) {\n const result: Record<string, any> = {};\n for (const [key, value] of Object.entries(content)) {\n const snakeKey = key.replace(/([A-Z])/g, '_$1').toLowerCase();\n result[snakeKey] = toSnakeCase(value);\n }\n return result;\n }\n\n return content;\n};\n\nexport default toSnakeCase;\n","import axios from 'axios';\n\nexport default async (url: string) => {\n const { data } = await axios.get<Blob>(url, {\n responseType: 'blob',\n });\n return data.stream();\n};\n","import { Readable } from 'node:stream';\nimport axios from 'axios';\n\nexport default async (url: string) => {\n const { data } = await axios.get<Readable>(url, {\n responseType: 'stream',\n });\n return data;\n};\n","import isNode from '../isNode';\nimport { DownloadResult } from '../../models';\nimport browserDownload from './browser';\nimport nodeDownload from './node';\n\nlet downloadFromS3;\n\nif (isNode) {\n downloadFromS3 = nodeDownload;\n} else {\n downloadFromS3 = browserDownload;\n}\n\nexport default downloadFromS3 as (url: string) => Promise<DownloadResult>;\n","const toCamelCase = (content: any): any => {\n if (typeof content === 'string') return content;\n if (Array.isArray(content)) return content.map(toCamelCase);\n\n if (typeof content === 'object' && content !== null) {\n const result: Record<string, any> = {};\n for (const [key, value] of Object.entries(content)) {\n const camelKey = key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n result[camelKey] = toCamelCase(value);\n }\n return result;\n }\n\n return content;\n};\n\nexport default toCamelCase;\n"],"mappings":"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","names":["index_exports","__export","DocumentStatus","LaraApiError","LaraError","LaraTimeoutError","Translator","__toCommonJS","import_axios","LaraError","LaraTimeoutError","LaraApiError","statusCode","message","idTransaction","browser_default","data","formData","key","value","v","import_form_data","node_default","data","formData","FormData","key","value","v","form","browser_default","node_default","formdata_default","sleep_default","millis","resolve","Memories","client","data","name","externalId","id","source","target","sentence","translation","tuid","sentenceBefore","sentenceAfter","headers","url","tmx","gzip","formData","formdata_default","mImport","updateCallback","maxWaitTime","start","LaraTimeoutError","sleep_default","ids","version","toQueryString_default","params","acc","key","value","isNode_default","Glossaries","client","data","name","id","csv","gzip","formData","headers","formdata_default","gImport","updateCallback","maxWaitTime","start","LaraTimeoutError","sleep_default","contentType","source","queryString","toQueryString_default","isNode_default","import_axios","DocumentStatus","toSnakeCase","content","result","key","value","snakeKey","toSnakeCase_default","import_axios","browser_default","url","data","axios","import_axios","node_default","url","data","axios","downloadFromS3","isNode_default","node_default","browser_default","downloadFromS3_default","Documents","client","file","filename","source","target","options","s3UploadUrlData","url","fields","formData","headers","formdata_default","axios","noTraceHeader","data","toSnakeCase_default","id","queryString","toQueryString_default","downloadFromS3_default","filenane","uploadOptions","downloadOptions","start","sleep_default","status","errorReason","LaraApiError","LaraTimeoutError","toCamelCase","content","result","key","value","camelKey","_","letter","toCamelCase_default","DEFAULT_BASE_URL","Translator","_Translator","accessKey","credentials","authToken","options","_a","axios","version","request","token","response","toCamelCase_default","error","_b","_c","_d","_e","_f","originalRequest","LaraApiError","Memories","Glossaries","Documents","data","headers","text","source","target","name","value","stream","lastResult","partialResult","parseResponse","buffer","chunk","newlineIndex","line","serverUrl","id","secret","email","password","refresh_token"]}
package/lib/index.mjs ADDED
@@ -0,0 +1,3 @@
1
+ import T from"axios";var D=class extends Error{},u=class extends D{},y=class extends D{constructor(e,r,s){super(r),this.statusCode=e,this.message=r,this.idTransaction=s}};var $=i=>{let e=new FormData;for(let[r,s]of Object.entries(i))if(s)if(Array.isArray(s))for(let t of s)e.append(r,t);else e.append(r,s);return[e,{}]};import j from"form-data";var S=i=>{let e=new j;for(let[r,s]of Object.entries(i))if(s)if(Array.isArray(s))for(let t of s)e.append(r,t);else e.append(r,s);return[e,{...e.getHeaders()}]};var k;typeof window!="undefined"?k=$:k=S;var g=k;var f=i=>new Promise(e=>setTimeout(e,i));var p=class{constructor(e){this.pollingInterval=2e3;this.client=e}async list(){let{data:e}=await this.client.get("/v2/memories");return e}async create(e,r){let{data:s}=await this.client.post("/v2/memories",{name:e,external_id:r});return s}async get(e){let{data:r}=await this.client.get(`/v2/memories/${e}`);return r}async delete(e){let{data:r}=await this.client.delete(`/v2/memories/${e}`);return r}async update(e,r){let{data:s}=await this.client.put(`/v2/memories/${e}`,{name:r});return s}async addTranslation(e,r,s,t,a,n,o,l,c){let m=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:d}=await this.client.put(m,{ids:Array.isArray(e)?e:void 0,source:r,target:s,sentence:t,translation:a,tuid:n,sentence_before:o,sentence_after:l},{headers:c});return d}async deleteTranslation(e,r,s,t,a,n,o,l){let c=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:m}=await this.client.delete(c,{data:{ids:Array.isArray(e)?e:void 0,source:r,target:s,sentence:t,translation:a,tuid:n,sentence_before:o,sentence_after:l}});return m}async importTmx(e,r,s=!1){let[t,a]=g({tmx:r,compression:s?"gzip":void 0}),{data:n}=await this.client.post(`/v2/memories/${e}/import`,t,{headers:a});return n}async getImportStatus(e){let{data:r}=await this.client.get(`/v2/memories/imports/${e}`);return r}async waitForImport(e,r,s){let t=Date.now();for(;e.progress<1;){if(s&&Date.now()-t>s)throw new u;await f(this.pollingInterval),e=await this.getImportStatus(e.id),r&&r(e)}return e}async connect(e){let{data:r}=await this.client.post("/v2/memories/connect",{ids:Array.isArray(e)?e:[e]});return Array.isArray(e)?r:r[0]}};var M="2.0.0-beta.9";var v=i=>Object.entries(i).reduce((e,[r,s])=>(s!=null&&e.push(`${encodeURIComponent(r)}=${encodeURIComponent(s)}`),e),[]).join("&");var A=typeof window=="undefined";var h=class{constructor(e){this.pollingInterval=2e3;this.client=e}async list(){let{data:e}=await this.client.get("/v2/glossaries");return e}async create(e){let{data:r}=await this.client.post("/v2/glossaries",{name:e});return r}async get(e){let{data:r}=await this.client.get(`/v2/glossaries/${e}`);return r}async delete(e){let{data:r}=await this.client.delete(`/v2/glossaries/${e}`);return r}async update(e,r){let{data:s}=await this.client.put(`/v2/glossaries/${e}`,{name:r});return s}async importCsv(e,r,s=!1){let[t,a]=g({csv:r,compression:s?"gzip":void 0}),{data:n}=await this.client.post(`/v2/glossaries/${e}/import`,t,{headers:a});return n}async getImportStatus(e){let{data:r}=await this.client.get(`/v2/glossaries/imports/${e}`);return r}async waitForImport(e,r,s){let t=Date.now();for(;e.progress<1;){if(s&&Date.now()-t>s)throw new u;await f(this.pollingInterval),e=await this.getImportStatus(e.id),r&&r(e)}return e}async counts(e){let{data:r}=await this.client.get(`/v2/glossaries/${e}/counts`);return r}async export(e,r,s){let t=v({content_type:r,source:s});if(A){let{data:a}=await this.client.get(`/v2/glossaries/${e}/export?${t}`,{responseType:"stream"});return a}else{let{data:a}=await this.client.get(`/v2/glossaries/${e}/export?${t}`,{responseType:"blob"});return a.stream()}}};import z from"axios";var C=(o=>(o.INITIALIZED="initialized",o.ANALYZING="analyzing",o.PAUSED="paused",o.READY="ready",o.TRANSLATING="translating",o.TRANSLATED="translated",o.ERROR="error",o))(C||{});var R=i=>{if(typeof i=="string")return i;if(Array.isArray(i))return i.map(R);if(typeof i=="object"&&i!==null){let e={};for(let[r,s]of Object.entries(i)){let t=r.replace(/([A-Z])/g,"_$1").toLowerCase();e[t]=R(s)}return e}return i},F=R;import K from"axios";var G=async i=>{let{data:e}=await K.get(i,{responseType:"blob"});return e.stream()};import B from"axios";var L=async i=>{let{data:e}=await B.get(i,{responseType:"stream"});return e};var I;A?I=L:I=G;var _=I;var w=class{constructor(e){this.pollingInterval=2e3;this.maxWaitTime=1e3*60*15;this.client=e}async upload(e,r,s,t,a){let{data:n}=await this.client.get(`/v2/documents/upload-url?filename=${encodeURIComponent(r)}`),{url:o,fields:l}=n,[c,m]=g({...l,file:e});await z.post(o,c,{headers:m});let d=a!=null&&a.noTrace?{"X-Lara-No-Trace":"true"}:void 0,{data:x}=await this.client.post("/v2/documents",{source:s,target:t,s3key:l.key,adapt_to:a==null?void 0:a.adaptTo,glossaries:a==null?void 0:a.glossaries,style:a==null?void 0:a.style,password:a==null?void 0:a.password,extraction_params:a!=null&&a.extractionParams?F(a.extractionParams):void 0},d?{headers:d}:void 0);return x}async status(e){let{data:r}=await this.client.get(`/v2/documents/${e}`);return r}async download(e,r){let s=v({output_format:r==null?void 0:r.outputFormat}),{data:t}=await this.client.get(`/v2/documents/${e}/download-url?${s}`);return await _(t.url)}async translate(e,r,s,t,a){let n={adaptTo:a==null?void 0:a.adaptTo,glossaries:a==null?void 0:a.glossaries,noTrace:a==null?void 0:a.noTrace,style:a==null?void 0:a.style,password:a==null?void 0:a.password,extractionParams:a==null?void 0:a.extractionParams},{id:o}=await this.upload(e,r,s,t,n),l={outputFormat:a==null?void 0:a.outputFormat},c=Date.now();for(;Date.now()-c<this.maxWaitTime;){await f(this.pollingInterval);let{status:m,errorReason:d}=await this.status(o);if(m==="translated")return await this.download(o,l);if(m==="error")throw new y(500,d,"unknown")}throw new u}};var P=i=>{if(typeof i=="string")return i;if(Array.isArray(i))return i.map(P);if(typeof i=="object"&&i!==null){let e={};for(let[r,s]of Object.entries(i)){let t=r.replace(/_([a-z])/g,(a,n)=>n.toUpperCase());e[t]=P(s)}return e}return i},O=P;var b="https://api.laratranslate.com",E=class i{constructor(e,r,s,t){var a;this.accessKey=e,this.credentials=r,this.authToken=s,this.options=t||{},this.client=T.create({baseURL:(a=t==null?void 0:t.serverUrl)!=null?a:b,headers:{"X-Lara-SDK-Name":"lara-node","X-Lara-SDK-Version":M,"X-Lara-Date":new Date().toUTCString(),...(t==null?void 0:t.extraHeaders)||{}}}),this.client.interceptors.request.use(async n=>{let o=await this.authenticate();return console.log("request",n.url,n.method),n.headers.Authorization=`Bearer ${o}`,n},Promise.reject),this.client.interceptors.response.use(n=>(console.log(n.config.responseType),n.config.responseType!=="stream"&&n.data&&typeof n.data=="object"&&(n.data=O(n.data)),n),async n=>{var l,c,m,d,x,U;let o=n.config;if(!o.isRetry&&n.response&&n.response.status===401&&n.response.data.message==="jwt expired"){this.token=void 0;let N=await this.authenticate();return o.isRetry=!0,o.headers.Authorization=`Bearer ${N}`,this.client(o)}return Promise.reject(new y((c=(l=n.response)==null?void 0:l.status)!=null?c:500,(x=(d=(m=n.response)==null?void 0:m.data)==null?void 0:d.message)!=null?x:n.message,(U=n.response)==null?void 0:U.headers["x-transaction-id"]))}),this.memories=new p(this.client),this.glossaries=new h(this.client),this.documents=new w(this.client)}async authenticate(){var e,r,s,t,a,n;if(this.token)return this.token;if(this.refreshToken){let{data:o,headers:l}=await T.post(`${(r=(e=this.options)==null?void 0:e.serverUrl)!=null?r:b}/v2/auth/refresh`,null,{headers:{authorization:`Bearer ${this.refreshToken}`,"X-Lara-Date":new Date().toUTCString()}});return this.token=o.token,this.refreshToken=l["x-lara-refresh-token"],this.token}else if(this.accessKey){let{data:o,headers:l}=await T.post(`${(t=(s=this.options)==null?void 0:s.serverUrl)!=null?t:b}/v2/auth`,this.accessKey,{headers:{"X-Lara-Date":new Date().toUTCString()}});return this.token=o.token,this.refreshToken=l["x-lara-refresh-token"],this.token}else if(this.credentials){let{data:o,headers:l}=await T.post(`${(n=(a=this.options)==null?void 0:a.serverUrl)!=null?n:b}/v2/auth/Unknown/login`,this.credentials,{headers:{"X-Lara-Date":new Date().toUTCString()}});return this.token=o.token,this.refreshToken=l["x-lara-refresh-token"],this.token}else{if(this.authToken)return this.token=this.authToken.token,this.refreshToken=this.authToken.refresh_token,this.authToken=void 0,this.token;throw new Error("No authentication method provided")}}async translate(e,r,s,t){let a={};if(t!=null&&t.headers)for(let[l,c]of Object.entries(t.headers))a[l]=c;t!=null&&t.noTrace&&(a["X-No-Trace"]="true");let{data:n}=await this.client.post("/v2/translate",{q:e,source:r||void 0,target:s,source_hint:t==null?void 0:t.sourceHint,content_type:t==null?void 0:t.contentType,multiline:(t==null?void 0:t.multiline)!==!1,adapt_to:t==null?void 0:t.adaptTo,glossaries:t==null?void 0:t.glossaries,instructions:t==null?void 0:t.instructions,timeout:t==null?void 0:t.timeoutInMillis,priority:t==null?void 0:t.priority,use_cache:t==null?void 0:t.useCache,cache_ttl:t==null?void 0:t.cacheTTLSeconds,verbose:t==null?void 0:t.verbose,style:t==null?void 0:t.style,reasoning:t==null?void 0:t.reasoning},{headers:a,responseType:"stream"}),o;for await(let l of this.parseResponseStream(n))o=l;if(!o)throw new Error("No translation received from the server");return o}async*parseResponseStream(e){let r=t=>{if(typeof t=="string")try{t=O(JSON.parse(t))}catch{}return t},s="";for await(let t of e){s+=t.toString();let a;for(;(a=s.indexOf(`
2
+ `))!==-1;){let n=s.substring(0,a).trim();s=s.substring(a+1),n&&(yield r(n))}}s.trim()&&(yield r(s.trim()))}async getLanguages(){let{data:e}=await this.client.get("/v2/languages");return e}static async getLoginUrl(e){let{data:r}=await T.get(`${e!=null?e:b}/v2/auth/login-page`);return r}static byAccessKey(e,r,s){return new i({id:e,secret:r},void 0,void 0,s)}static byCredentials(e,r,s){return new i(void 0,{email:e,password:r},void 0,s)}static byAuthToken(e,r,s){return new i(void 0,void 0,{token:e,refresh_token:r},s)}};export{C as DocumentStatus,y as LaraApiError,D as LaraError,u as LaraTimeoutError,E as Translator};
3
+ //# sourceMappingURL=index.mjs.map