@translated/lara 2.0.0-beta.11 → 2.0.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.mts +8 -2
- package/lib/index.d.ts +8 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.d.mts
CHANGED
|
@@ -97,6 +97,7 @@ type DocumentOptions = {
|
|
|
97
97
|
type DocumentUploadOptions = DocumentOptions & {
|
|
98
98
|
password?: string;
|
|
99
99
|
extractionParams?: DocxExtractionParams;
|
|
100
|
+
contentLength?: number;
|
|
100
101
|
};
|
|
101
102
|
type DocumentDownloadOptions = {
|
|
102
103
|
outputFormat?: string;
|
|
@@ -197,10 +198,10 @@ declare class Documents {
|
|
|
197
198
|
private readonly pollingInterval;
|
|
198
199
|
private readonly maxWaitTime;
|
|
199
200
|
constructor(client: AxiosInstance);
|
|
200
|
-
upload(file: UploadableFile, filename: string, source: string | undefined, target: string, options?: DocumentUploadOptions
|
|
201
|
+
upload(file: UploadableFile, filename: string, source: string | undefined, target: string, options?: DocumentUploadOptions): Promise<Document>;
|
|
201
202
|
status(id: string): Promise<Document>;
|
|
202
203
|
download(id: string, options?: DocumentDownloadOptions): Promise<DownloadResult>;
|
|
203
|
-
translate(file: UploadableFile, filenane: string, source: string | undefined, target: string, options?: DocumentTranslateOptions
|
|
204
|
+
translate(file: UploadableFile, filenane: string, source: string | undefined, target: string, options?: DocumentTranslateOptions): Promise<DownloadResult>;
|
|
204
205
|
}
|
|
205
206
|
|
|
206
207
|
declare class Translator {
|
|
@@ -212,10 +213,15 @@ declare class Translator {
|
|
|
212
213
|
readonly documents: Documents;
|
|
213
214
|
private token?;
|
|
214
215
|
private refreshToken?;
|
|
216
|
+
private authenticationPromise?;
|
|
215
217
|
private readonly options?;
|
|
216
218
|
private readonly client;
|
|
217
219
|
constructor(accessKey?: AccessKey, credentials?: Credentials, authToken?: AuthToken, options?: TranslatorOptions);
|
|
218
220
|
private authenticate;
|
|
221
|
+
private performAuthentication;
|
|
222
|
+
private refresh;
|
|
223
|
+
private authenticateWithAccessKey;
|
|
224
|
+
private authenticateWithCredentials;
|
|
219
225
|
translate<T extends string | string[] | TextBlock[]>(text: T, source: string | undefined, target: string, options?: TranslateOptions): Promise<TextResult<T>>;
|
|
220
226
|
getLanguages(): Promise<string[]>;
|
|
221
227
|
static getLoginUrl(serverUrl?: string): Promise<string>;
|
package/lib/index.d.ts
CHANGED
|
@@ -97,6 +97,7 @@ type DocumentOptions = {
|
|
|
97
97
|
type DocumentUploadOptions = DocumentOptions & {
|
|
98
98
|
password?: string;
|
|
99
99
|
extractionParams?: DocxExtractionParams;
|
|
100
|
+
contentLength?: number;
|
|
100
101
|
};
|
|
101
102
|
type DocumentDownloadOptions = {
|
|
102
103
|
outputFormat?: string;
|
|
@@ -197,10 +198,10 @@ declare class Documents {
|
|
|
197
198
|
private readonly pollingInterval;
|
|
198
199
|
private readonly maxWaitTime;
|
|
199
200
|
constructor(client: AxiosInstance);
|
|
200
|
-
upload(file: UploadableFile, filename: string, source: string | undefined, target: string, options?: DocumentUploadOptions
|
|
201
|
+
upload(file: UploadableFile, filename: string, source: string | undefined, target: string, options?: DocumentUploadOptions): Promise<Document>;
|
|
201
202
|
status(id: string): Promise<Document>;
|
|
202
203
|
download(id: string, options?: DocumentDownloadOptions): Promise<DownloadResult>;
|
|
203
|
-
translate(file: UploadableFile, filenane: string, source: string | undefined, target: string, options?: DocumentTranslateOptions
|
|
204
|
+
translate(file: UploadableFile, filenane: string, source: string | undefined, target: string, options?: DocumentTranslateOptions): Promise<DownloadResult>;
|
|
204
205
|
}
|
|
205
206
|
|
|
206
207
|
declare class Translator {
|
|
@@ -212,10 +213,15 @@ declare class Translator {
|
|
|
212
213
|
readonly documents: Documents;
|
|
213
214
|
private token?;
|
|
214
215
|
private refreshToken?;
|
|
216
|
+
private authenticationPromise?;
|
|
215
217
|
private readonly options?;
|
|
216
218
|
private readonly client;
|
|
217
219
|
constructor(accessKey?: AccessKey, credentials?: Credentials, authToken?: AuthToken, options?: TranslatorOptions);
|
|
218
220
|
private authenticate;
|
|
221
|
+
private performAuthentication;
|
|
222
|
+
private refresh;
|
|
223
|
+
private authenticateWithAccessKey;
|
|
224
|
+
private authenticateWithCredentials;
|
|
219
225
|
translate<T extends string | string[] | TextBlock[]>(text: T, source: string | undefined, target: string, options?: TranslateOptions): Promise<TextResult<T>>;
|
|
220
226
|
getLanguages(): Promise<string[]>;
|
|
221
227
|
static getLoginUrl(serverUrl?: string): Promise<string>;
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var V=Object.create;var k=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var ee=Object.getPrototypeOf,te=Object.prototype.hasOwnProperty;var re=(n,e)=>{for(var r in e)k(n,r,{get:e[r],enumerable:!0})},S=(n,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of W(e))!te.call(n,t)&&t!==r&&k(n,t,{get:()=>e[t],enumerable:!(s=J(e,t))||s.enumerable});return n};var b=(n,e,r)=>(r=n!=null?V(ee(n)):{},S(e||!n||!n.__esModule?k(r,"default",{value:n,enumerable:!0}):r,n)),ae=n=>S(k({},"__esModule",{value:!0}),n);var se={};re(se,{DocumentStatus:()=>O,LaraApiError:()=>y,LaraError:()=>T,LaraTimeoutError:()=>d,Translator:()=>F});module.exports=ae(se);var h=b(require("axios"));var T=class extends Error{},d=class extends T{},y=class extends T{constructor(e,r,s){super(r),this.statusCode=e,this.message=r,this.idTransaction=s}};var L=n=>{let e=new FormData;for(let[r,s]of Object.entries(n))if(!(!s||!s.value))if(Array.isArray(s.value))for(let t of s.value)e.append(r,t);else e.append(r,s.value);return[e,{}]};var _=b(require("form-data")),E=n=>{let e=new _.default;for(let[r,s]of Object.entries(n)){if(!s||!s.value)continue;let{value:t,length:a}=s;if(Array.isArray(t))for(let i of t)e.append(r,i);else e.append(r,t,a?{knownLength:a}:void 0)}return[e,{...e.getHeaders()}]};var U;typeof window!="undefined"?U=L:U=E;var f=U;var p=n=>new Promise(e=>setTimeout(e,n));var x=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,i,o,l,c){let m=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:u}=await this.client.put(m,{ids:Array.isArray(e)?e:void 0,source:r,target:s,sentence:t,translation:a,tuid:i,sentence_before:o,sentence_after:l},{headers:c});return u}async deleteTranslation(e,r,s,t,a,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:s,sentence:t,translation:a,tuid:i,sentence_before:o,sentence_after:l}});return m}async importTmx(e,r,s=!1){let[t,a]=f({tmx:r,compression:s?"gzip":void 0}),{data:i}=await this.client.post(`/v2/memories/${e}/import`,t,{headers:a});return i}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 d;await p(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 j="2.0.0-beta.11";var R=n=>Object.entries(n).reduce((e,[r,s])=>(s!=null&&e.push(`${encodeURIComponent(r)}=${encodeURIComponent(s)}`),e),[]).join("&");var I=typeof window=="undefined";var v=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]=f({csv:r,compression:s?"gzip":void 0}),{data:i}=await this.client.post(`/v2/glossaries/${e}/import`,t,{headers:a});return i}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 d;await p(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=R({content_type:r,source:s});if(I){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()}}};var H=b(require("axios"));var O=(o=>(o.INITIALIZED="initialized",o.ANALYZING="analyzing",o.PAUSED="paused",o.READY="ready",o.TRANSLATING="translating",o.TRANSLATED="translated",o.ERROR="error",o))(O||{});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,s]of Object.entries(n)){let t=r.replace(/([A-Z])/g,"_$1").toLowerCase();e[t]=$(s)}return e}return n},N=$;var K=b(require("axios")),z=async n=>{let{data:e}=await K.default.get(n,{responseType:"blob"});return e.stream()};var B=b(require("axios")),X=async n=>{let{data:e}=await B.default.get(n,{responseType:"stream"});return e};var M;I?M=X:M=z;var q=M;var D=class{constructor(e){this.pollingInterval=2e3;this.maxWaitTime=1e3*60*15;this.client=e}async upload(e,r,s,t,a,i){let{data:o}=await this.client.get(`/v2/documents/upload-url?filename=${encodeURIComponent(r)}`),{url:l,fields:c}=o,m=Object.entries(c).reduce((G,[Q,Y])=>(G[Q]={value:Y},G),{}),[u,g]=f({...m,file:{value:e,length:i}});await H.default.post(l,u,{headers:g});let w=a!=null&&a.noTrace?{"X-Lara-No-Trace":"true"}:void 0,{data:P}=await this.client.post("/v2/documents",{source:s,target:t,s3key:c.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?N(a.extractionParams):void 0},w?{headers:w}:void 0);return P}async status(e){let{data:r}=await this.client.get(`/v2/documents/${e}`);return r}async download(e,r){let s=R({output_format:r==null?void 0:r.outputFormat}),{data:t}=await this.client.get(`/v2/documents/${e}/download-url?${s}`);return await q(t.url)}async translate(e,r,s,t,a,i){let o={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:l}=await this.upload(e,r,s,t,o,i),c={outputFormat:a==null?void 0:a.outputFormat},m=Date.now();for(;Date.now()-m<this.maxWaitTime;){await p(this.pollingInterval);let{status:u,errorReason:g}=await this.status(l);if(u==="translated")return await this.download(l,c);if(u==="error")throw new y(500,g,"unknown")}throw new d}};var C=n=>{if(typeof n=="string")return n;if(Array.isArray(n))return n.map(C);if(typeof n=="object"&&n!==null){let e={};for(let[r,s]of Object.entries(n)){let t=r.replace(/_([a-z])/g,(a,i)=>i.toUpperCase());e[t]=C(s)}return e}return n},Z=C;var A="https://api.laratranslate.com",F=class n{constructor(e,r,s,t){var a;this.accessKey=e,this.credentials=r,this.authToken=s,this.options=t||{},this.client=h.default.create({baseURL:(a=t==null?void 0:t.serverUrl)!=null?a:A,headers:{"X-Lara-SDK-Name":"lara-node","X-Lara-SDK-Version":j,"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 i.headers.Authorization=`Bearer ${o}`,i},Promise.reject),this.client.interceptors.response.use(i=>(i.config.responseType!=="stream"&&i.data&&typeof i.data=="object"&&(i.data=Z(i.data)),i),async i=>{var l,c,m,u,g,w;let o=i.config;if(!o.isRetry&&i.response&&i.response.status===401&&i.response.data.message==="jwt expired"){this.token=void 0;let P=await this.authenticate();return o.isRetry=!0,o.headers.Authorization=`Bearer ${P}`,this.client(o)}return Promise.reject(new y((c=(l=i.response)==null?void 0:l.status)!=null?c:500,(g=(u=(m=i.response)==null?void 0:m.data)==null?void 0:u.message)!=null?g:i.message,(w=i.response)==null?void 0:w.headers["x-transaction-id"]))}),this.memories=new x(this.client),this.glossaries=new v(this.client),this.documents=new D(this.client)}async authenticate(){var e,r,s,t,a,i;if(this.token)return this.token;if(this.refreshToken){let{data:o,headers:l}=await h.default.post(`${(r=(e=this.options)==null?void 0:e.serverUrl)!=null?r:A}/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 h.default.post(`${(t=(s=this.options)==null?void 0:s.serverUrl)!=null?t:A}/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 h.default.post(`${(i=(a=this.options)==null?void 0:a.serverUrl)!=null?i:A}/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[o,l]of Object.entries(t.headers))a[o]=l;t!=null&&t.noTrace&&(a["X-No-Trace"]="true");let{data:i}=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},a);return i}async getLanguages(){let{data:e}=await this.client.get("/v2/languages");return e}static async getLoginUrl(e){let{data:r}=await h.default.get(`${e!=null?e:A}/v2/auth/login-page`);return r}static byAccessKey(e,r,s){return new n({id:e,secret:r},void 0,void 0,s)}static byCredentials(e,r,s){return new n(void 0,{email:e,password:r},void 0,s)}static byAuthToken(e,r,s){return new n(void 0,void 0,{token:e,refresh_token:r},s)}};0&&(module.exports={DocumentStatus,LaraApiError,LaraError,LaraTimeoutError,Translator});
|
|
1
|
+
"use strict";var Q=Object.create;var P=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var te=(n,e)=>{for(var r in e)P(n,r,{get:e[r],enumerable:!0})},L=(n,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of V(e))!ee.call(n,t)&&t!==r&&P(n,t,{get:()=>e[t],enumerable:!(s=Y(e,t))||s.enumerable});return n};var w=(n,e,r)=>(r=n!=null?Q(J(n)):{},L(e||!n||!n.__esModule?P(r,"default",{value:n,enumerable:!0}):r,n)),re=n=>L(P({},"__esModule",{value:!0}),n);var ae={};te(ae,{DocumentStatus:()=>O,LaraApiError:()=>y,LaraError:()=>b,LaraTimeoutError:()=>u,Translator:()=>F});module.exports=re(ae);var f=w(require("axios"));var b=class extends Error{},u=class extends b{},y=class extends b{constructor(e,r,s){super(r),this.statusCode=e,this.message=r,this.idTransaction=s}};var G=n=>{let e=new FormData;for(let[r,s]of Object.entries(n))if(!(!s||!s.value))if(Array.isArray(s.value))for(let t of s.value)e.append(r,t);else e.append(r,s.value);return[e,{}]};var S=w(require("form-data")),E=n=>{let e=new S.default;for(let[r,s]of Object.entries(n)){if(!s||!s.value)continue;let{value:t,length:a}=s;if(Array.isArray(t))for(let i of t)e.append(r,i);else e.append(r,t,a?{knownLength:a}:void 0)}return[e,{...e.getHeaders()}]};var U;typeof window!="undefined"?U=G:U=E;var h=U;var g=n=>new Promise(e=>setTimeout(e,n));var x=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,i,o,l,m){let c=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:d}=await this.client.put(c,{ids:Array.isArray(e)?e:void 0,source:r,target:s,sentence:t,translation:a,tuid:i,sentence_before:o,sentence_after:l},{headers:m});return d}async deleteTranslation(e,r,s,t,a,i,o,l){let m=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:c}=await this.client.delete(m,{data:{ids:Array.isArray(e)?e:void 0,source:r,target:s,sentence:t,translation:a,tuid:i,sentence_before:o,sentence_after:l}});return c}async importTmx(e,r,s=!1){let[t,a]=h({tmx:r,compression:s?"gzip":void 0}),{data:i}=await this.client.post(`/v2/memories/${e}/import`,t,{headers:a});return i}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 g(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 _="2.0.0-beta.13";var R=n=>Object.entries(n).reduce((e,[r,s])=>(s!=null&&e.push(`${encodeURIComponent(r)}=${encodeURIComponent(s)}`),e),[]).join("&");var I=typeof window=="undefined";var T=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]=h({csv:r,compression:s?"gzip":void 0}),{data:i}=await this.client.post(`/v2/glossaries/${e}/import`,t,{headers:a});return i}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 g(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=R({content_type:r,source:s});if(I){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()}}};var q=w(require("axios"));var O=(o=>(o.INITIALIZED="initialized",o.ANALYZING="analyzing",o.PAUSED="paused",o.READY="ready",o.TRANSLATING="translating",o.TRANSLATED="translated",o.ERROR="error",o))(O||{});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,s]of Object.entries(n)){let t=r.replace(/([A-Z])/g,"_$1").toLowerCase();e[t]=$(s)}return e}return n},j=$;var K=w(require("axios")),N=async n=>{let{data:e}=await K.default.get(n,{responseType:"blob"});return e.stream()};var z=w(require("axios")),B=async n=>{let{data:e}=await z.default.get(n,{responseType:"stream"});return e};var C;I?C=B:C=N;var X=C;var v=class{constructor(e){this.pollingInterval=2e3;this.maxWaitTime=1e3*60*15;this.client=e}async upload(e,r,s,t,a){let{data:i}=await this.client.get(`/v2/documents/upload-url?filename=${encodeURIComponent(r)}`),{url:o,fields:l}=i,m=Object.entries(l).reduce((k,[W,Z])=>(k[W]={value:Z},k),{}),[c,d]=h({...m,file:{value:e,length:a==null?void 0:a.contentLength}});await q.default.post(o,c,{headers:d});let p=a!=null&&a.noTrace?{"X-Lara-No-Trace":"true"}:void 0,{data:A}=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?j(a.extractionParams):void 0},p?{headers:p}:void 0);return A}async status(e){let{data:r}=await this.client.get(`/v2/documents/${e}`);return r}async download(e,r){let s=R({output_format:r==null?void 0:r.outputFormat}),{data:t}=await this.client.get(`/v2/documents/${e}/download-url?${s}`);return await X(t.url)}async translate(e,r,s,t,a){let i={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,contentLength:a==null?void 0:a.contentLength},{id:o}=await this.upload(e,r,s,t,i),l={outputFormat:a==null?void 0:a.outputFormat},m=Date.now();for(;Date.now()-m<this.maxWaitTime;){await g(this.pollingInterval);let{status:c,errorReason:d}=await this.status(o);if(c==="translated")return await this.download(o,l);if(c==="error")throw new y(500,d,"unknown")}throw new u}};var M=n=>{if(typeof n=="string")return n;if(Array.isArray(n))return n.map(M);if(typeof n=="object"&&n!==null){let e={};for(let[r,s]of Object.entries(n)){let t=r.replace(/_([a-z])/g,(a,i)=>i.toUpperCase());e[t]=M(s)}return e}return n},H=M;var D="https://api.laratranslate.com",F=class n{constructor(e,r,s,t){var a;this.accessKey=e,this.credentials=r,this.authToken=s,this.options=t||{},this.client=f.default.create({baseURL:(a=t==null?void 0:t.serverUrl)!=null?a:D,headers:{"X-Lara-SDK-Name":"lara-node","X-Lara-SDK-Version":_,"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 i.headers.Authorization=`Bearer ${o}`,i},Promise.reject),this.client.interceptors.response.use(i=>(i.config.responseType!=="stream"&&i.data&&typeof i.data=="object"&&(i.data=H(i.data)),i),async i=>{var l,m,c,d,p,A;let o=i.config;if(!o.isRetry&&i.response&&i.response.status===401&&i.response.data.message==="jwt expired"){this.token=void 0;let k=await this.authenticate();return o.isRetry=!0,o.headers.Authorization=`Bearer ${k}`,this.client(o)}return Promise.reject(new y((m=(l=i.response)==null?void 0:l.status)!=null?m:500,(p=(d=(c=i.response)==null?void 0:c.data)==null?void 0:d.message)!=null?p:i.message,(A=i.response)==null?void 0:A.headers["x-transaction-id"]))}),this.memories=new x(this.client),this.glossaries=new T(this.client),this.documents=new v(this.client)}async authenticate(){var e,r,s;if(this.token)return this.token;if(this.authenticationPromise)return this.authenticationPromise;this.authenticationPromise=this.performAuthentication();try{return await this.authenticationPromise}catch{this.authenticationPromise=this.performAuthentication();try{return await this.authenticationPromise}catch(a){throw new y((r=(e=a.response)==null?void 0:e.status)!=null?r:500,a.message,(s=a.response)==null?void 0:s.headers["x-transaction-id"])}finally{this.authenticationPromise=void 0}}finally{this.authenticationPromise=void 0}}async performAuthentication(){if(this.refreshToken)return await this.refresh();if(this.accessKey)return await this.authenticateWithAccessKey();if(this.credentials)return await this.authenticateWithCredentials();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 refresh(){var s,t;let{data:e,headers:r}=await f.default.post(`${(t=(s=this.options)==null?void 0:s.serverUrl)!=null?t:D}/v2/auth/refresh`,null,{headers:{authorization:`Bearer ${this.refreshToken}`,"X-Lara-Date":new Date().toUTCString()}});return this.token=e.token,this.refreshToken=r["x-lara-refresh-token"],this.token}async authenticateWithAccessKey(){var s,t;let{data:e,headers:r}=await f.default.post(`${(t=(s=this.options)==null?void 0:s.serverUrl)!=null?t:D}/v2/auth`,this.accessKey,{headers:{"X-Lara-Date":new Date().toUTCString()}});return this.token=e.token,this.refreshToken=r["x-lara-refresh-token"],this.token}async authenticateWithCredentials(){var s,t;let{data:e,headers:r}=await f.default.post(`${(t=(s=this.options)==null?void 0:s.serverUrl)!=null?t:D}/v2/auth/Unknown/login`,this.credentials,{headers:{"X-Lara-Date":new Date().toUTCString()}});return this.token=e.token,this.refreshToken=r["x-lara-refresh-token"],this.token}async translate(e,r,s,t){let a={};if(t!=null&&t.headers)for(let[o,l]of Object.entries(t.headers))a[o]=l;t!=null&&t.noTrace&&(a["X-No-Trace"]="true");let{data:i}=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},a);return i}async getLanguages(){let{data:e}=await this.client.get("/v2/languages");return e}static async getLoginUrl(e){let{data:r}=await f.default.get(`${e!=null?e:D}/v2/auth/login-page`);return r}static byAccessKey(e,r,s){return new n({id:e,secret:r},void 0,void 0,s)}static byCredentials(e,r,s){return new n(void 0,{email:e,password:r},void 0,s)}static byAuthToken(e,r,s){return new n(void 0,void 0,{token:e,refresh_token:r},s)}};0&&(module.exports={DocumentStatus,LaraApiError,LaraError,LaraTimeoutError,Translator});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +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 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 // 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 } = await this.client.post<TextResult<T>>(\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 },\n headers,\n );\n\n return data;\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, { value: any; length?: number }>) => {\n const formData = new FormData();\n for (const [key, element] of Object.entries(data)) {\n if (!element || !element.value) continue;\n if (Array.isArray(element.value)) {\n for (const v of element.value) formData.append(key, v);\n } else {\n formData.append(key, element.value);\n }\n }\n\n return [formData, {}];\n};\n","import FormData from 'form-data';\n\nexport default (data: Record<string, { value: any; length?: number }>): [FormData, { [key: string]: any }] => {\n const formData = new FormData();\n for (const [key, element] of Object.entries(data)) {\n if (!element || !element.value) continue;\n const { value, length } = element;\n if (Array.isArray(value)) {\n for (const v of value) formData.append(key, v);\n } else {\n formData.append(key, value, length ? { knownLength: length } : undefined);\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.11';\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 length?: number,\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 transformedFields = Object.entries(fields).reduce(\n (acc, [k, v]) => {\n acc[k] = { value: v };\n return acc;\n },\n {} as Record<string, { value: any; length?: number }>,\n );\n\n const [formData, headers] = toFormData({\n ...transformedFields,\n file: { value: file, length },\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 length?: number,\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, length);\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","element","v","import_form_data","node_default","data","formData","FormData","key","element","value","length","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","length","s3UploadUrlData","url","fields","transformedFields","acc","k","v","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","serverUrl","id","secret","email","password","refresh_token"]}
|
|
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, { AxiosError, 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 private authenticationPromise?: Promise<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 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 // 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 authentication is already in progress, wait for it\n if (this.authenticationPromise) {\n return this.authenticationPromise;\n }\n\n // Start new authentication with retry logic\n this.authenticationPromise = this.performAuthentication();\n\n try {\n const token = await this.authenticationPromise;\n return token;\n } catch (error) {\n // First attempt failed, try one more time\n this.authenticationPromise = this.performAuthentication();\n try {\n const token = await this.authenticationPromise;\n return token;\n } catch (error) {\n throw new LaraApiError(\n (error as AxiosError).response?.status ?? 500,\n (error as AxiosError).message,\n (error as AxiosError).response?.headers['x-transaction-id'],\n );\n } finally {\n this.authenticationPromise = undefined;\n }\n } finally {\n this.authenticationPromise = undefined;\n }\n }\n\n private async performAuthentication(): Promise<string> {\n // If we have a refresh token, use it to get a new token\n if (this.refreshToken) {\n return await this.refresh();\n } else if (this.accessKey) {\n return await this.authenticateWithAccessKey();\n } else if (this.credentials) {\n return await this.authenticateWithCredentials();\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 private async refresh(): Promise<string> {\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 }\n\n private async authenticateWithAccessKey(): Promise<string> {\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\n return this.token;\n }\n\n private async authenticateWithCredentials(): Promise<string> {\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 }\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 } = await this.client.post<TextResult<T>>(\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 },\n headers,\n );\n\n return data;\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, { value: any; length?: number }>) => {\n const formData = new FormData();\n for (const [key, element] of Object.entries(data)) {\n if (!element || !element.value) continue;\n if (Array.isArray(element.value)) {\n for (const v of element.value) formData.append(key, v);\n } else {\n formData.append(key, element.value);\n }\n }\n\n return [formData, {}];\n};\n","import FormData from 'form-data';\n\nexport default (data: Record<string, { value: any; length?: number }>): [FormData, { [key: string]: any }] => {\n const formData = new FormData();\n for (const [key, element] of Object.entries(data)) {\n if (!element || !element.value) continue;\n const { value, length } = element;\n if (Array.isArray(value)) {\n for (const v of value) formData.append(key, v);\n } else {\n formData.append(key, value, length ? { knownLength: length } : undefined);\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.13';\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 * as fs from 'fs';\nimport axios, { AxiosError, 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 transformedFields = Object.entries(fields).reduce(\n (acc, [k, v]) => {\n acc[k] = { value: v };\n return acc;\n },\n {} as Record<string, { value: any; length?: number }>,\n );\n\n const [formData, headers] = toFormData({\n ...transformedFields,\n file: { value: file, length: options?.contentLength },\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 contentLength: options?.contentLength,\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 // Optional length of the file in bytes, needed for some upload scenarios\n contentLength?: number;\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","element","v","import_form_data","node_default","data","formData","FormData","key","element","value","length","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","transformedFields","acc","k","v","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","serverUrl","id","secret","email","password","refresh_token"]}
|
package/lib/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import x from"axios";var D=class extends Error{},d=class extends D{},g=class extends D{constructor(e,r,s){super(r),this.statusCode=e,this.message=r,this.idTransaction=s}};var M=n=>{let e=new FormData;for(let[r,s]of Object.entries(n))if(!(!s||!s.value))if(Array.isArray(s.value))for(let t of s.value)e.append(r,t);else e.append(r,s.value);return[e,{}]};import B from"form-data";var C=n=>{let e=new B;for(let[r,s]of Object.entries(n)){if(!s||!s.value)continue;let{value:t,length:a}=s;if(Array.isArray(t))for(let i of t)e.append(r,i);else e.append(r,t,a?{knownLength:a}:void 0)}return[e,{...e.getHeaders()}]};var I;typeof window!="undefined"?I=M:I=C;var f=I;var p=n=>new Promise(e=>setTimeout(e,n));var w=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,i,o,l,c){let m=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:u}=await this.client.put(m,{ids:Array.isArray(e)?e:void 0,source:r,target:s,sentence:t,translation:a,tuid:i,sentence_before:o,sentence_after:l},{headers:c});return u}async deleteTranslation(e,r,s,t,a,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:s,sentence:t,translation:a,tuid:i,sentence_before:o,sentence_after:l}});return m}async importTmx(e,r,s=!1){let[t,a]=f({tmx:r,compression:s?"gzip":void 0}),{data:i}=await this.client.post(`/v2/memories/${e}/import`,t,{headers:a});return i}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 d;await p(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 F="2.0.0-beta.11";var A=n=>Object.entries(n).reduce((e,[r,s])=>(s!=null&&e.push(`${encodeURIComponent(r)}=${encodeURIComponent(s)}`),e),[]).join("&");var k=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:s}=await this.client.put(`/v2/glossaries/${e}`,{name:r});return s}async importCsv(e,r,s=!1){let[t,a]=f({csv:r,compression:s?"gzip":void 0}),{data:i}=await this.client.post(`/v2/glossaries/${e}/import`,t,{headers:a});return i}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 d;await p(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=A({content_type:r,source:s});if(k){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 H from"axios";var G=(o=>(o.INITIALIZED="initialized",o.ANALYZING="analyzing",o.PAUSED="paused",o.READY="ready",o.TRANSLATING="translating",o.TRANSLATED="translated",o.ERROR="error",o))(G||{});var P=n=>{if(typeof n=="string")return n;if(Array.isArray(n))return n.map(P);if(typeof n=="object"&&n!==null){let e={};for(let[r,s]of Object.entries(n)){let t=r.replace(/([A-Z])/g,"_$1").toLowerCase();e[t]=P(s)}return e}return n},S=P;import X from"axios";var L=async n=>{let{data:e}=await X.get(n,{responseType:"blob"});return e.stream()};import q from"axios";var _=async n=>{let{data:e}=await q.get(n,{responseType:"stream"});return e};var U;k?U=_:U=L;var E=U;var T=class{constructor(e){this.pollingInterval=2e3;this.maxWaitTime=1e3*60*15;this.client=e}async upload(e,r,s,t,a,i){let{data:o}=await this.client.get(`/v2/documents/upload-url?filename=${encodeURIComponent(r)}`),{url:l,fields:c}=o,m=Object.entries(c).reduce(($,[K,z])=>($[K]={value:z},$),{}),[u,y]=f({...m,file:{value:e,length:i}});await H.post(l,u,{headers:y});let h=a!=null&&a.noTrace?{"X-Lara-No-Trace":"true"}:void 0,{data:R}=await this.client.post("/v2/documents",{source:s,target:t,s3key:c.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?S(a.extractionParams):void 0},h?{headers:h}:void 0);return R}async status(e){let{data:r}=await this.client.get(`/v2/documents/${e}`);return r}async download(e,r){let s=A({output_format:r==null?void 0:r.outputFormat}),{data:t}=await this.client.get(`/v2/documents/${e}/download-url?${s}`);return await E(t.url)}async translate(e,r,s,t,a,i){let o={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:l}=await this.upload(e,r,s,t,o,i),c={outputFormat:a==null?void 0:a.outputFormat},m=Date.now();for(;Date.now()-m<this.maxWaitTime;){await p(this.pollingInterval);let{status:u,errorReason:y}=await this.status(l);if(u==="translated")return await this.download(l,c);if(u==="error")throw new g(500,y,"unknown")}throw new d}};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,s]of Object.entries(n)){let t=r.replace(/_([a-z])/g,(a,i)=>i.toUpperCase());e[t]=O(s)}return e}return n},j=O;var v="https://api.laratranslate.com",N=class n{constructor(e,r,s,t){var a;this.accessKey=e,this.credentials=r,this.authToken=s,this.options=t||{},this.client=x.create({baseURL:(a=t==null?void 0:t.serverUrl)!=null?a:v,headers:{"X-Lara-SDK-Name":"lara-node","X-Lara-SDK-Version":F,"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 i.headers.Authorization=`Bearer ${o}`,i},Promise.reject),this.client.interceptors.response.use(i=>(i.config.responseType!=="stream"&&i.data&&typeof i.data=="object"&&(i.data=j(i.data)),i),async i=>{var l,c,m,u,y,h;let o=i.config;if(!o.isRetry&&i.response&&i.response.status===401&&i.response.data.message==="jwt expired"){this.token=void 0;let R=await this.authenticate();return o.isRetry=!0,o.headers.Authorization=`Bearer ${R}`,this.client(o)}return Promise.reject(new g((c=(l=i.response)==null?void 0:l.status)!=null?c:500,(y=(u=(m=i.response)==null?void 0:m.data)==null?void 0:u.message)!=null?y:i.message,(h=i.response)==null?void 0:h.headers["x-transaction-id"]))}),this.memories=new w(this.client),this.glossaries=new b(this.client),this.documents=new T(this.client)}async authenticate(){var e,r,s,t,a,i;if(this.token)return this.token;if(this.refreshToken){let{data:o,headers:l}=await x.post(`${(r=(e=this.options)==null?void 0:e.serverUrl)!=null?r:v}/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 x.post(`${(t=(s=this.options)==null?void 0:s.serverUrl)!=null?t:v}/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 x.post(`${(i=(a=this.options)==null?void 0:a.serverUrl)!=null?i:v}/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[o,l]of Object.entries(t.headers))a[o]=l;t!=null&&t.noTrace&&(a["X-No-Trace"]="true");let{data:i}=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},a);return i}async getLanguages(){let{data:e}=await this.client.get("/v2/languages");return e}static async getLoginUrl(e){let{data:r}=await x.get(`${e!=null?e:v}/v2/auth/login-page`);return r}static byAccessKey(e,r,s){return new n({id:e,secret:r},void 0,void 0,s)}static byCredentials(e,r,s){return new n(void 0,{email:e,password:r},void 0,s)}static byAuthToken(e,r,s){return new n(void 0,void 0,{token:e,refresh_token:r},s)}};export{G as DocumentStatus,g as LaraApiError,D as LaraError,d as LaraTimeoutError,N as Translator};
|
|
1
|
+
import x from"axios";var A=class extends Error{},d=class extends A{},y=class extends A{constructor(e,r,s){super(r),this.statusCode=e,this.message=r,this.idTransaction=s}};var $=n=>{let e=new FormData;for(let[r,s]of Object.entries(n))if(!(!s||!s.value))if(Array.isArray(s.value))for(let t of s.value)e.append(r,t);else e.append(r,s.value);return[e,{}]};import z from"form-data";var C=n=>{let e=new z;for(let[r,s]of Object.entries(n)){if(!s||!s.value)continue;let{value:t,length:a}=s;if(Array.isArray(t))for(let i of t)e.append(r,i);else e.append(r,t,a?{knownLength:a}:void 0)}return[e,{...e.getHeaders()}]};var R;typeof window!="undefined"?R=$:R=C;var h=R;var g=n=>new Promise(e=>setTimeout(e,n));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,i,o,l,m){let c=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:u}=await this.client.put(c,{ids:Array.isArray(e)?e:void 0,source:r,target:s,sentence:t,translation:a,tuid:i,sentence_before:o,sentence_after:l},{headers:m});return u}async deleteTranslation(e,r,s,t,a,i,o,l){let m=Array.isArray(e)?"/v2/memories/content":`/v2/memories/${e}/content`,{data:c}=await this.client.delete(m,{data:{ids:Array.isArray(e)?e:void 0,source:r,target:s,sentence:t,translation:a,tuid:i,sentence_before:o,sentence_after:l}});return c}async importTmx(e,r,s=!1){let[t,a]=h({tmx:r,compression:s?"gzip":void 0}),{data:i}=await this.client.post(`/v2/memories/${e}/import`,t,{headers:a});return i}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 d;await g(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.13";var k=n=>Object.entries(n).reduce((e,[r,s])=>(s!=null&&e.push(`${encodeURIComponent(r)}=${encodeURIComponent(s)}`),e),[]).join("&");var P=typeof window=="undefined";var w=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]=h({csv:r,compression:s?"gzip":void 0}),{data:i}=await this.client.post(`/v2/glossaries/${e}/import`,t,{headers:a});return i}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 d;await g(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=k({content_type:r,source:s});if(P){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 q from"axios";var F=(o=>(o.INITIALIZED="initialized",o.ANALYZING="analyzing",o.PAUSED="paused",o.READY="ready",o.TRANSLATING="translating",o.TRANSLATED="translated",o.ERROR="error",o))(F||{});var I=n=>{if(typeof n=="string")return n;if(Array.isArray(n))return n.map(I);if(typeof n=="object"&&n!==null){let e={};for(let[r,s]of Object.entries(n)){let t=r.replace(/([A-Z])/g,"_$1").toLowerCase();e[t]=I(s)}return e}return n},L=I;import B from"axios";var G=async n=>{let{data:e}=await B.get(n,{responseType:"blob"});return e.stream()};import X from"axios";var S=async n=>{let{data:e}=await X.get(n,{responseType:"stream"});return e};var U;P?U=S:U=G;var E=U;var b=class{constructor(e){this.pollingInterval=2e3;this.maxWaitTime=1e3*60*15;this.client=e}async upload(e,r,s,t,a){let{data:i}=await this.client.get(`/v2/documents/upload-url?filename=${encodeURIComponent(r)}`),{url:o,fields:l}=i,m=Object.entries(l).reduce((D,[K,N])=>(D[K]={value:N},D),{}),[c,u]=h({...m,file:{value:e,length:a==null?void 0:a.contentLength}});await q.post(o,c,{headers:u});let f=a!=null&&a.noTrace?{"X-Lara-No-Trace":"true"}:void 0,{data:v}=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?L(a.extractionParams):void 0},f?{headers:f}:void 0);return v}async status(e){let{data:r}=await this.client.get(`/v2/documents/${e}`);return r}async download(e,r){let s=k({output_format:r==null?void 0:r.outputFormat}),{data:t}=await this.client.get(`/v2/documents/${e}/download-url?${s}`);return await E(t.url)}async translate(e,r,s,t,a){let i={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,contentLength:a==null?void 0:a.contentLength},{id:o}=await this.upload(e,r,s,t,i),l={outputFormat:a==null?void 0:a.outputFormat},m=Date.now();for(;Date.now()-m<this.maxWaitTime;){await g(this.pollingInterval);let{status:c,errorReason:u}=await this.status(o);if(c==="translated")return await this.download(o,l);if(c==="error")throw new y(500,u,"unknown")}throw new d}};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,s]of Object.entries(n)){let t=r.replace(/_([a-z])/g,(a,i)=>i.toUpperCase());e[t]=O(s)}return e}return n},_=O;var T="https://api.laratranslate.com",j=class n{constructor(e,r,s,t){var a;this.accessKey=e,this.credentials=r,this.authToken=s,this.options=t||{},this.client=x.create({baseURL:(a=t==null?void 0:t.serverUrl)!=null?a:T,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 i=>{let o=await this.authenticate();return i.headers.Authorization=`Bearer ${o}`,i},Promise.reject),this.client.interceptors.response.use(i=>(i.config.responseType!=="stream"&&i.data&&typeof i.data=="object"&&(i.data=_(i.data)),i),async i=>{var l,m,c,u,f,v;let o=i.config;if(!o.isRetry&&i.response&&i.response.status===401&&i.response.data.message==="jwt expired"){this.token=void 0;let D=await this.authenticate();return o.isRetry=!0,o.headers.Authorization=`Bearer ${D}`,this.client(o)}return Promise.reject(new y((m=(l=i.response)==null?void 0:l.status)!=null?m:500,(f=(u=(c=i.response)==null?void 0:c.data)==null?void 0:u.message)!=null?f:i.message,(v=i.response)==null?void 0:v.headers["x-transaction-id"]))}),this.memories=new p(this.client),this.glossaries=new w(this.client),this.documents=new b(this.client)}async authenticate(){var e,r,s;if(this.token)return this.token;if(this.authenticationPromise)return this.authenticationPromise;this.authenticationPromise=this.performAuthentication();try{return await this.authenticationPromise}catch{this.authenticationPromise=this.performAuthentication();try{return await this.authenticationPromise}catch(a){throw new y((r=(e=a.response)==null?void 0:e.status)!=null?r:500,a.message,(s=a.response)==null?void 0:s.headers["x-transaction-id"])}finally{this.authenticationPromise=void 0}}finally{this.authenticationPromise=void 0}}async performAuthentication(){if(this.refreshToken)return await this.refresh();if(this.accessKey)return await this.authenticateWithAccessKey();if(this.credentials)return await this.authenticateWithCredentials();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 refresh(){var s,t;let{data:e,headers:r}=await x.post(`${(t=(s=this.options)==null?void 0:s.serverUrl)!=null?t:T}/v2/auth/refresh`,null,{headers:{authorization:`Bearer ${this.refreshToken}`,"X-Lara-Date":new Date().toUTCString()}});return this.token=e.token,this.refreshToken=r["x-lara-refresh-token"],this.token}async authenticateWithAccessKey(){var s,t;let{data:e,headers:r}=await x.post(`${(t=(s=this.options)==null?void 0:s.serverUrl)!=null?t:T}/v2/auth`,this.accessKey,{headers:{"X-Lara-Date":new Date().toUTCString()}});return this.token=e.token,this.refreshToken=r["x-lara-refresh-token"],this.token}async authenticateWithCredentials(){var s,t;let{data:e,headers:r}=await x.post(`${(t=(s=this.options)==null?void 0:s.serverUrl)!=null?t:T}/v2/auth/Unknown/login`,this.credentials,{headers:{"X-Lara-Date":new Date().toUTCString()}});return this.token=e.token,this.refreshToken=r["x-lara-refresh-token"],this.token}async translate(e,r,s,t){let a={};if(t!=null&&t.headers)for(let[o,l]of Object.entries(t.headers))a[o]=l;t!=null&&t.noTrace&&(a["X-No-Trace"]="true");let{data:i}=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},a);return i}async getLanguages(){let{data:e}=await this.client.get("/v2/languages");return e}static async getLoginUrl(e){let{data:r}=await x.get(`${e!=null?e:T}/v2/auth/login-page`);return r}static byAccessKey(e,r,s){return new n({id:e,secret:r},void 0,void 0,s)}static byCredentials(e,r,s){return new n(void 0,{email:e,password:r},void 0,s)}static byAuthToken(e,r,s){return new n(void 0,void 0,{token:e,refresh_token:r},s)}};export{F as DocumentStatus,y as LaraApiError,A as LaraError,d as LaraTimeoutError,j as Translator};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../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":["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 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 // 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 } = await this.client.post<TextResult<T>>(\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 },\n headers,\n );\n\n return data;\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, { value: any; length?: number }>) => {\n const formData = new FormData();\n for (const [key, element] of Object.entries(data)) {\n if (!element || !element.value) continue;\n if (Array.isArray(element.value)) {\n for (const v of element.value) formData.append(key, v);\n } else {\n formData.append(key, element.value);\n }\n }\n\n return [formData, {}];\n};\n","import FormData from 'form-data';\n\nexport default (data: Record<string, { value: any; length?: number }>): [FormData, { [key: string]: any }] => {\n const formData = new FormData();\n for (const [key, element] of Object.entries(data)) {\n if (!element || !element.value) continue;\n const { value, length } = element;\n if (Array.isArray(value)) {\n for (const v of value) formData.append(key, v);\n } else {\n formData.append(key, value, length ? { knownLength: length } : undefined);\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.11';\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 length?: number,\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 transformedFields = Object.entries(fields).reduce(\n (acc, [k, v]) => {\n acc[k] = { value: v };\n return acc;\n },\n {} as Record<string, { value: any; length?: number }>,\n );\n\n const [formData, headers] = toFormData({\n ...transformedFields,\n file: { value: file, length },\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 length?: number,\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, length);\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":["axios","LaraError","LaraTimeoutError","LaraApiError","statusCode","message","idTransaction","browser_default","data","formData","key","element","v","FormData","node_default","data","formData","key","element","value","length","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","axios","DocumentStatus","toSnakeCase","content","result","key","value","snakeKey","toSnakeCase_default","axios","browser_default","url","data","axios","node_default","url","data","downloadFromS3","isNode_default","node_default","browser_default","downloadFromS3_default","Documents","client","file","filename","source","target","options","length","s3UploadUrlData","url","fields","transformedFields","acc","k","v","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","serverUrl","id","secret","email","password","refresh_token"]}
|
|
1
|
+
{"version":3,"sources":["../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":["import axios, { AxiosError, 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 private authenticationPromise?: Promise<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 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 // 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 authentication is already in progress, wait for it\n if (this.authenticationPromise) {\n return this.authenticationPromise;\n }\n\n // Start new authentication with retry logic\n this.authenticationPromise = this.performAuthentication();\n\n try {\n const token = await this.authenticationPromise;\n return token;\n } catch (error) {\n // First attempt failed, try one more time\n this.authenticationPromise = this.performAuthentication();\n try {\n const token = await this.authenticationPromise;\n return token;\n } catch (error) {\n throw new LaraApiError(\n (error as AxiosError).response?.status ?? 500,\n (error as AxiosError).message,\n (error as AxiosError).response?.headers['x-transaction-id'],\n );\n } finally {\n this.authenticationPromise = undefined;\n }\n } finally {\n this.authenticationPromise = undefined;\n }\n }\n\n private async performAuthentication(): Promise<string> {\n // If we have a refresh token, use it to get a new token\n if (this.refreshToken) {\n return await this.refresh();\n } else if (this.accessKey) {\n return await this.authenticateWithAccessKey();\n } else if (this.credentials) {\n return await this.authenticateWithCredentials();\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 private async refresh(): Promise<string> {\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 }\n\n private async authenticateWithAccessKey(): Promise<string> {\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\n return this.token;\n }\n\n private async authenticateWithCredentials(): Promise<string> {\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 }\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 } = await this.client.post<TextResult<T>>(\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 },\n headers,\n );\n\n return data;\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, { value: any; length?: number }>) => {\n const formData = new FormData();\n for (const [key, element] of Object.entries(data)) {\n if (!element || !element.value) continue;\n if (Array.isArray(element.value)) {\n for (const v of element.value) formData.append(key, v);\n } else {\n formData.append(key, element.value);\n }\n }\n\n return [formData, {}];\n};\n","import FormData from 'form-data';\n\nexport default (data: Record<string, { value: any; length?: number }>): [FormData, { [key: string]: any }] => {\n const formData = new FormData();\n for (const [key, element] of Object.entries(data)) {\n if (!element || !element.value) continue;\n const { value, length } = element;\n if (Array.isArray(value)) {\n for (const v of value) formData.append(key, v);\n } else {\n formData.append(key, value, length ? { knownLength: length } : undefined);\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.13';\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 * as fs from 'fs';\nimport axios, { AxiosError, 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 transformedFields = Object.entries(fields).reduce(\n (acc, [k, v]) => {\n acc[k] = { value: v };\n return acc;\n },\n {} as Record<string, { value: any; length?: number }>,\n );\n\n const [formData, headers] = toFormData({\n ...transformedFields,\n file: { value: file, length: options?.contentLength },\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 contentLength: options?.contentLength,\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 // Optional length of the file in bytes, needed for some upload scenarios\n contentLength?: number;\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":["axios","LaraError","LaraTimeoutError","LaraApiError","statusCode","message","idTransaction","browser_default","data","formData","key","element","v","FormData","node_default","data","formData","key","element","value","length","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","axios","DocumentStatus","toSnakeCase","content","result","key","value","snakeKey","toSnakeCase_default","axios","browser_default","url","data","axios","node_default","url","data","downloadFromS3","isNode_default","node_default","browser_default","downloadFromS3_default","Documents","client","file","filename","source","target","options","s3UploadUrlData","url","fields","transformedFields","acc","k","v","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","serverUrl","id","secret","email","password","refresh_token"]}
|