@leancodepl/intl 9.7.2 → 9.7.3
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/CHANGELOG.md +28 -0
- package/LICENSE +201 -0
- package/README.md +68 -7
- package/{src → dist}/TranslationsServiceClient.d.ts +9 -1
- package/dist/TranslationsServiceClient.d.ts.map +1 -0
- package/dist/bin.cjs +2 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +103 -0
- package/{src → dist}/commands/diff.d.ts +3 -2
- package/dist/commands/diff.d.ts.map +1 -0
- package/{src → dist}/commands/download.d.ts +3 -2
- package/dist/commands/download.d.ts.map +1 -0
- package/{src → dist}/commands/local.d.ts +3 -2
- package/dist/commands/local.d.ts.map +1 -0
- package/{src → dist}/commands/sync.d.ts +3 -2
- package/dist/commands/sync.d.ts.map +1 -0
- package/{src → dist}/commands/upload.d.ts +3 -2
- package/dist/commands/upload.d.ts.map +1 -0
- package/{src → dist}/formatjs.d.ts +1 -0
- package/dist/formatjs.d.ts.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/loadConfig.d.ts +12 -0
- package/dist/loadConfig.d.ts.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/{src → dist}/mergeWithEnv.d.ts +1 -0
- package/dist/mergeWithEnv.d.ts.map +1 -0
- package/dist/mkTranslationsServiceClient-CYeFDsNC.cjs +5 -0
- package/dist/mkTranslationsServiceClient-D62VGNcU.js +1578 -0
- package/{src → dist}/mkTranslationsServiceClient.d.ts +2 -1
- package/dist/mkTranslationsServiceClient.d.ts.map +1 -0
- package/{src → dist}/poeditor/POEditorClient.d.ts +8 -2
- package/dist/poeditor/POEditorClient.d.ts.map +1 -0
- package/{src → dist}/poeditor/api.generated/api.d.ts +30 -41
- package/dist/poeditor/api.generated/api.d.ts.map +1 -0
- package/{src → dist}/poeditor/api.generated/base.d.ts +3 -13
- package/dist/poeditor/api.generated/base.d.ts.map +1 -0
- package/{src → dist}/poeditor/api.generated/common.d.ts +4 -14
- package/dist/poeditor/api.generated/common.d.ts.map +1 -0
- package/{src → dist}/poeditor/api.generated/configuration.d.ts +1 -0
- package/dist/poeditor/api.generated/configuration.d.ts.map +1 -0
- package/{src → dist}/poeditor/api.generated/index.d.ts +3 -2
- package/dist/poeditor/api.generated/index.d.ts.map +1 -0
- package/{src → dist}/poeditor/generatePoeditorClient.d.ts +1 -0
- package/dist/poeditor/generatePoeditorClient.d.ts.map +1 -0
- package/package.json +25 -7
- package/src/TranslationsServiceClient.js +0 -3
- package/src/TranslationsServiceClient.js.map +0 -1
- package/src/bin.d.ts +0 -2
- package/src/bin.js +0 -129
- package/src/bin.js.map +0 -1
- package/src/commands/diff.js +0 -35
- package/src/commands/diff.js.map +0 -1
- package/src/commands/download.js +0 -39
- package/src/commands/download.js.map +0 -1
- package/src/commands/local.js +0 -117
- package/src/commands/local.js.map +0 -1
- package/src/commands/sync.js +0 -34
- package/src/commands/sync.js.map +0 -1
- package/src/commands/upload.js +0 -32
- package/src/commands/upload.js.map +0 -1
- package/src/formatjs.js +0 -60
- package/src/formatjs.js.map +0 -1
- package/src/index.d.ts +0 -6
- package/src/index.js +0 -16
- package/src/index.js.map +0 -1
- package/src/mergeWithEnv.js +0 -14
- package/src/mergeWithEnv.js.map +0 -1
- package/src/mkTranslationsServiceClient.js +0 -14
- package/src/mkTranslationsServiceClient.js.map +0 -1
- package/src/poeditor/POEditorClient.js +0 -88
- package/src/poeditor/POEditorClient.js.map +0 -1
- package/src/poeditor/api.generated/api.js +0 -2654
- package/src/poeditor/api.generated/api.js.map +0 -1
- package/src/poeditor/api.generated/base.js +0 -69
- package/src/poeditor/api.generated/base.js.map +0 -1
- package/src/poeditor/api.generated/common.js +0 -146
- package/src/poeditor/api.generated/common.js.map +0 -1
- package/src/poeditor/api.generated/configuration.js +0 -100
- package/src/poeditor/api.generated/configuration.js.map +0 -1
- package/src/poeditor/api.generated/index.js +0 -18
- package/src/poeditor/api.generated/index.js.map +0 -1
- package/src/poeditor/generatePoeditorClient.js +0 -54
- package/src/poeditor/generatePoeditorClient.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
export declare const intlConfigSchema: z.ZodObject<{
|
|
3
|
+
srcPattern: z.ZodOptional<z.ZodString>;
|
|
4
|
+
outputDir: z.ZodOptional<z.ZodString>;
|
|
5
|
+
defaultLanguage: z.ZodOptional<z.ZodString>;
|
|
6
|
+
languages: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
7
|
+
poeditorApiToken: z.ZodOptional<z.ZodString>;
|
|
8
|
+
poeditorProjectId: z.ZodOptional<z.ZodNumber>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
export type IntlConfig = z.infer<typeof intlConfigSchema>;
|
|
11
|
+
export declare function loadConfig(configPath?: string): IntlConfig | undefined;
|
|
12
|
+
//# sourceMappingURL=loadConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../src/loadConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAI1B,eAAO,MAAM,gBAAgB;;;;;;;iBAO3B,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAMzD,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAUtE"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const logger: import('packages/logger/dist/lib/logger').Logger<{}, {
|
|
2
|
+
error: import('packages/logger/dist/lib/logger').MethodHandler<unknown>;
|
|
3
|
+
warn: import('packages/logger/dist/lib/logger').MethodHandler<unknown>;
|
|
4
|
+
success: import('packages/logger/dist/lib/logger').MethodHandler<unknown>;
|
|
5
|
+
info: import('packages/logger/dist/lib/logger').MethodHandler<unknown>;
|
|
6
|
+
verbose: import('packages/logger/dist/lib/logger').MethodHandler<unknown>;
|
|
7
|
+
debug: import('packages/logger/dist/lib/logger').MethodHandler<unknown>;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;EAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeWithEnv.d.ts","sourceRoot":"","sources":["../src/mergeWithEnv.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,SAAS;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9F,OAAO,EAAE,CAAC,GACT,CAAC,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CAW/D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";const M=require("@inquirer/checkbox"),N=require("@inquirer/confirm"),y=require("zod/v4"),J=require("lodash"),U=require("node:fs"),R=require("node:path"),X=require("@leancodepl/logger/cli"),q=require("node:child_process"),k=require("node:os"),O=require("axios");function E(a="src/**/*.{ts,tsx}"){const e=R.join(k.tmpdir(),`messages-${Date.now()}.json`);try{const t=["npx","@formatjs/cli","extract",`"${a}"`,"--out-file",`"${e}"`,"--preserve-whitespace","--extract-source-location"].join(" ");q.execSync(t);const s=U.readFileSync(e,"utf-8");return U.rmSync(e),JSON.parse(s)}catch(t){throw new Error(`Failed to extract messages. Error: ${t}`)}}function _({inputDir:a,outputDir:e,options:t={}}){const{ast:s=!0,format:r="simple"}=t;try{const o=["npx","@formatjs/cli","compile-folder",...s?["--ast"]:[],"--format",r,a,e].join(" ");q.execSync(o)}catch(o){throw new Error(`Failed to compile translations. Error: ${o}`)}}function F(a="intl-"){return U.mkdtempSync(R.join(k.tmpdir(),a))}function $({translations:a,language:e,tempDir:t}){const s=R.join(t,`${e}.json`);return U.writeFileSync(s,JSON.stringify(a,null,2)),s}const h=X.createCliLogger(),K=y.z.object({srcPattern:y.z.string()});async function Y({srcPattern:a,translationsServiceClient:e}){try{h.info("Analyzing differences between local and remote translations..."),h.info("Extracting local messages...");const t=E(a),s=new Set(Object.keys(t));h.info("Fetching remote terms...");const r=await e.downloadTerms(),c=[...new Set(r.map(i=>i.term))].filter(i=>!s.has(i)),n=await e.getTranslationsInDefaultLanguage(r);if(c.length>0){h.info(`
|
|
2
|
+
Terms in remote but not used locally (${c.length}):`);const i=await M({message:"Select terms to remove",choices:c.map(p=>{const m=n.find(f=>f.term===p)?.translation;return{name:`${p} $`,value:p}})});if(i.length===0||!await N({message:`Are you sure you want to remove these terms: ${i.join(", ")}?`}))return;const d=r.filter(p=>i.includes(p.term));h.info(`
|
|
3
|
+
Removing selected terms from remote...`),await e.removeTerms(d),h.success(`
|
|
4
|
+
Terms removed successfully`)}else h.info(`
|
|
5
|
+
No unused terms found in remote`)}catch(t){h.error("Error in diff command:",t),process.exit(1)}}const W=y.z.object({outputDir:y.z.string(),languages:y.z.array(y.z.string())});async function z({outputDir:a,languages:e,translationsServiceClient:t}){try{h.info("Starting download from translation service..."),h.info(`Downloading translations for languages: ${e.join(", ")}`);const s=F("download-");try{for(const r of e){h.info(`Downloading ${r} translations...`);const o=await t.downloadTranslations(r);$({translations:o,language:r,tempDir:s});const c=Object.keys(o).length;h.info(`Downloaded ${c} translations for ${r}`)}h.info("Compiling translations..."),U.mkdirSync(a,{recursive:!0}),_({inputDir:s,outputDir:a}),h.success(`Compiled translations saved to ${a}`)}finally{U.rmSync(s,{recursive:!0,force:!0})}}catch(s){h.error("Error in download command:",s),process.exit(1)}}const G=y.z.object({srcPattern:y.z.string(),outputDir:y.z.string(),defaultLanguage:y.z.string()});async function Z({defaultLanguage:a,outputDir:e,srcPattern:t,translationsServiceClient:s}){try{const r=ee({srcPattern:t,defaultLanguage:a}),o=s?await te({defaultLanguage:a,client:s}):void 0,c=se({extractedTranslations:r,downloadedTranslations:o});re({translations:c,outputDir:e,defaultLanguage:a})}catch(r){h.error("Error in local command:",r),process.exit(1)}}function ee({srcPattern:a,defaultLanguage:e}){h.info("Extracting messages from source files...");const t=E(a),s=Object.keys(t).length;if(h.info(`Extracted ${s} messages`),s===0)throw h.error("No messages found. Make sure your source files contain formatjs messages."),new Error("No messages found");const r=F("local-");try{const o={};for(const[n,i]of Object.entries(t))o[n]=i.defaultMessage;$({translations:o,language:e,tempDir:r}),h.info("Compiling extracted translations...");const c=F("compiled-");try{_({inputDir:r,outputDir:c});const n=R.join(c,`${e}.json`),i=U.readFileSync(n,"utf-8");return JSON.parse(i)}finally{U.rmSync(c,{recursive:!0,force:!0})}}finally{U.rmSync(r,{recursive:!0,force:!0})}}async function te({defaultLanguage:a,client:e}){try{h.info(`Downloading ${a} translations...`);const t=await e.downloadTranslations(a),s=Object.keys(t).length;if(h.info(`Downloaded ${s} translations`),s===0)return;const r=F("download-");try{$({translations:t,language:a,tempDir:r}),h.info("Compiling downloaded translations...");const o=F("download-compiled-");try{_({inputDir:r,outputDir:o});const c=R.join(o,`${a}.json`),n=U.readFileSync(c,"utf-8");return JSON.parse(n)}finally{U.rmSync(o,{recursive:!0,force:!0})}}finally{U.rmSync(r,{recursive:!0,force:!0})}}catch(t){h.warn(`Failed to download translations from translation service: ${t}`),h.info("Using extracted translations only");return}}function se({extractedTranslations:a,downloadedTranslations:e}){if(!e)return a;const t={...a,...e},s=Object.keys(a).filter(o=>!(o in e)).length,r=Object.keys(e).length;return h.info(`Merged ${s} extracted terms with ${r} downloaded translations`),t}function re({translations:a,outputDir:e,defaultLanguage:t}){U.mkdirSync(e,{recursive:!0});const s=J(a).toPairs().sortBy(0).fromPairs().value(),r=R.join(e,`${t}.json`);U.writeFileSync(r,JSON.stringify(s,null,2)),h.success(`Merged translations saved to ${e}`)}const ae=y.z.object({srcPattern:y.z.string(),defaultLanguage:y.z.string()});async function H({srcPattern:a,translationsServiceClient:e,defaultLanguage:t}){try{h.info("Extracting messages from source files...");const s=E(a),r=Object.keys(s).length;if(h.info(`Extracted ${r} messages`),r===0){h.warn("No messages found. Make sure your source files contain formatjs messages.");return}h.info("Uploading terms to translation service..."),await e.uploadTerms(s),h.info(`Uploading default translations (${t}) to translation service...`),await e.uploadTranslations(s,t),h.success("Upload completed successfully!")}catch(s){h.error("Error in upload command:",s),process.exit(1)}}const oe=y.z.object({srcPattern:y.z.string(),outputDir:y.z.string(),languages:y.z.array(y.z.string()),defaultLanguage:y.z.string()});async function ne({srcPattern:a,outputDir:e,languages:t,translationsServiceClient:s,defaultLanguage:r}){try{h.info("Starting sync operation..."),await H({srcPattern:a,translationsServiceClient:s,defaultLanguage:r}),await z({outputDir:e,languages:t,translationsServiceClient:s}),h.success("Sync completed successfully!")}catch(o){h.error("Error in sync command:",o),process.exit(1)}}const v="https://api.poeditor.com/v2".replace(/\/+$/,"");class B{constructor(e,t=v,s=O){this.basePath=t,this.axios=s,e&&(this.configuration=e,this.basePath=e.basePath??t)}configuration}class ie extends Error{constructor(e,t){super(t),this.field=e,this.name="RequiredError"}}const V={},x="https://example.com",u=function(a,e,t){if(t==null)throw new ie(e,`Required parameter ${e} was null or undefined when calling ${a}.`)};function L(a,e,t=""){e!=null&&(typeof e=="object"?Array.isArray(e)?e.forEach(s=>L(a,s,t)):Object.keys(e).forEach(s=>L(a,e[s],`${t}${t!==""?".":""}${s}`)):a.has(t)?a.append(t,e):a.set(t,e))}const j=function(a,...e){const t=new URLSearchParams(a.search);L(t,e),a.search=t.toString()},A=function(a){return a.pathname+a.search+a.hash},S=function(a,e,t,s){return(r=e,o=t)=>{const c={...a.options,url:(r.defaults.baseURL?"":s?.basePath??o)+a.url};return r.request(c)}},ce=function(a){return{projectsAdd:async(e,t,s,r={})=>{u("projectsAdd","name",e);const o="/projects/add",c=new URL(o,x);let n;a&&(n=a.baseOptions);const i={method:"POST",...n,...r},l={},d={},p=new URLSearchParams;t!==void 0&&p.set("api_token",t),e!==void 0&&p.set("name",e),s!==void 0&&p.set("description",s),l["Content-Type"]="application/x-www-form-urlencoded",j(c,d);let m=n&&n.headers?n.headers:{};return i.headers={...l,...m,...r.headers},i.data=p.toString(),{url:A(c),options:i}},projectsDelete:async(e,t,s={})=>{u("projectsDelete","id",e);const r="/projects/delete",o=new URL(r,x);let c;a&&(c=a.baseOptions);const n={method:"POST",...c,...s},i={},l={},d=new URLSearchParams;t!==void 0&&d.set("api_token",t),e!==void 0&&d.set("id",e),i["Content-Type"]="application/x-www-form-urlencoded",j(o,l);let p=c&&c.headers?c.headers:{};return n.headers={...i,...p,...s.headers},n.data=d.toString(),{url:A(o),options:n}},projectsExport:async(e,t,s,r,o,c,n,i,l={})=>{u("projectsExport","id",e),u("projectsExport","language",t),u("projectsExport","type",s);const d="/projects/export",p=new URL(d,x);let m;a&&(m=a.baseOptions);const f={method:"POST",...m,...l},w={},P={},b=new URLSearchParams;r!==void 0&&b.set("api_token",r),e!==void 0&&b.set("id",e),t!==void 0&&b.set("language",t),s!==void 0&&b.set("type",s),o!==void 0&&b.set("filters",o),c!==void 0&&b.set("order",c),n!==void 0&&b.set("tags",n),i!==void 0&&b.set("options",i),w["Content-Type"]="application/x-www-form-urlencoded",j(p,P);let C=m&&m.headers?m.headers:{};return f.headers={...w,...C,...l.headers},f.data=b.toString(),{url:A(p),options:f}},projectsList:async(e,t={})=>{u("projectsList","apiToken",e);const s="/projects/list",r=new URL(s,x);let o;a&&(o=a.baseOptions);const c={method:"POST",...o,...t},n={},i={},l=new URLSearchParams;e!==void 0&&l.set("api_token",e),n["Content-Type"]="application/x-www-form-urlencoded",j(r,i);let d=o&&o.headers?o.headers:{};return c.headers={...n,...d,...t.headers},c.data=l.toString(),{url:A(r),options:c}},projectsSync:async(e,t,s,r={})=>{u("projectsSync","id",e),u("projectsSync","data",t);const o="/projects/sync",c=new URL(o,x);let n;a&&(n=a.baseOptions);const i={method:"POST",...n,...r},l={},d={},p=new URLSearchParams;s!==void 0&&p.set("api_token",s),e!==void 0&&p.set("id",e),t!==void 0&&p.set("data",t),l["Content-Type"]="application/x-www-form-urlencoded",j(c,d);let m=n&&n.headers?n.headers:{};return i.headers={...l,...m,...r.headers},i.data=p.toString(),{url:A(c),options:i}},projectsUpdate:async(e,t,s,r,o,c,n={})=>{u("projectsUpdate","id",e);const i="/projects/update",l=new URL(i,x);let d;a&&(d=a.baseOptions);const p={method:"POST",...d,...n},m={},f={},w=new URLSearchParams;t!==void 0&&w.set("api_token",t),e!==void 0&&w.set("id",e),s!==void 0&&w.set("name",s),r!==void 0&&w.set("description",r),o!==void 0&&w.set("reference_language",o),c!==void 0&&w.set("fallback_language",c),m["Content-Type"]="application/x-www-form-urlencoded",j(l,f);let P=d&&d.headers?d.headers:{};return p.headers={...m,...P,...n.headers},p.data=w.toString(),{url:A(l),options:p}},projectsUpload:async(e,t,s,r,o,c,n,i,l,d,p={})=>{u("projectsUpload","updating",e),u("projectsUpload","file",t);const m="/projects/upload",f=new URL(m,x);let w;a&&(w=a.baseOptions);const P={method:"POST",...w,...p},b={},C={},g=new(a&&a.formDataCtor||FormData);s!==void 0&&g.append("api_token",s),r!==void 0&&g.append("id",r),e!==void 0&&g.append("updating",e),t!==void 0&&g.append("file",t),o!==void 0&&g.append("language",o),c!==void 0&&g.append("overwrite",c),n!==void 0&&g.append("sync_terms",n),i!==void 0&&g.append("tags",i),l!==void 0&&g.append("read_from_source",l),d!==void 0&&g.append("fuzzy_trigger",d),b["Content-Type"]="multipart/form-data",j(f,C);let Q=w&&w.headers?w.headers:{};return P.headers={...b,...Q,...p.headers},P.data=g,{url:A(f),options:P}},projectsView:async(e,t,s={})=>{u("projectsView","id",e);const r="/projects/view",o=new URL(r,x);let c;a&&(c=a.baseOptions);const n={method:"POST",...c,...s},i={},l={},d=new URLSearchParams;t!==void 0&&d.set("api_token",t),e!==void 0&&d.set("id",e),i["Content-Type"]="application/x-www-form-urlencoded",j(o,l);let p=c&&c.headers?c.headers:{};return n.headers={...i,...p,...s.headers},n.data=d.toString(),{url:A(o),options:n}}}},T=function(a){const e=ce(a);return{async projectsAdd(t,s,r,o){const c=await e.projectsAdd(t,s,r,o),n=a?.serverIndex??0,i=V["ProjectsApi.projectsAdd"]?.[n]?.url;return(l,d)=>S(c,O,v,a)(l,i||d)},async projectsDelete(t,s,r){const o=await e.projectsDelete(t,s,r),c=a?.serverIndex??0,n=V["ProjectsApi.projectsDelete"]?.[c]?.url;return(i,l)=>S(o,O,v,a)(i,n||l)},async projectsExport(t,s,r,o,c,n,i,l,d){const p=await e.projectsExport(t,s,r,o,c,n,i,l,d),m=a?.serverIndex??0,f=V["ProjectsApi.projectsExport"]?.[m]?.url;return(w,P)=>S(p,O,v,a)(w,f||P)},async projectsList(t,s){const r=await e.projectsList(t,s),o=a?.serverIndex??0,c=V["ProjectsApi.projectsList"]?.[o]?.url;return(n,i)=>S(r,O,v,a)(n,c||i)},async projectsSync(t,s,r,o){const c=await e.projectsSync(t,s,r,o),n=a?.serverIndex??0,i=V["ProjectsApi.projectsSync"]?.[n]?.url;return(l,d)=>S(c,O,v,a)(l,i||d)},async projectsUpdate(t,s,r,o,c,n,i){const l=await e.projectsUpdate(t,s,r,o,c,n,i),d=a?.serverIndex??0,p=V["ProjectsApi.projectsUpdate"]?.[d]?.url;return(m,f)=>S(l,O,v,a)(m,p||f)},async projectsUpload(t,s,r,o,c,n,i,l,d,p,m){const f=await e.projectsUpload(t,s,r,o,c,n,i,l,d,p,m),w=a?.serverIndex??0,P=V["ProjectsApi.projectsUpload"]?.[w]?.url;return(b,C)=>S(f,O,v,a)(b,P||C)},async projectsView(t,s,r){const o=await e.projectsView(t,s,r),c=a?.serverIndex??0,n=V["ProjectsApi.projectsView"]?.[c]?.url;return(i,l)=>S(o,O,v,a)(i,n||l)}}};class le extends B{projectsAdd(e,t,s,r){return T(this.configuration).projectsAdd(e,t,s,r).then(o=>o(this.axios,this.basePath))}projectsDelete(e,t,s){return T(this.configuration).projectsDelete(e,t,s).then(r=>r(this.axios,this.basePath))}projectsExport(e,t,s,r,o,c,n,i,l){return T(this.configuration).projectsExport(e,t,s,r,o,c,n,i,l).then(d=>d(this.axios,this.basePath))}projectsList(e,t){return T(this.configuration).projectsList(e,t).then(s=>s(this.axios,this.basePath))}projectsSync(e,t,s,r){return T(this.configuration).projectsSync(e,t,s,r).then(o=>o(this.axios,this.basePath))}projectsUpdate(e,t,s,r,o,c,n){return T(this.configuration).projectsUpdate(e,t,s,r,o,c,n).then(i=>i(this.axios,this.basePath))}projectsUpload(e,t,s,r,o,c,n,i,l,d,p){return T(this.configuration).projectsUpload(e,t,s,r,o,c,n,i,l,d,p).then(m=>m(this.axios,this.basePath))}projectsView(e,t,s){return T(this.configuration).projectsView(e,t,s).then(r=>r(this.axios,this.basePath))}}const de={Arb:"arb",Csv:"csv",Ini:"ini",KeyValueJson:"key_value_json",I18next:"i18next",Json:"json",Po:"po",Pot:"pot",Mo:"mo",Properties:"properties",Resw:"resw",Resx:"resx",Ts:"ts",AppleStrings:"apple_strings",Xliff:"xliff",Xliff12:"xliff_1_2",Xlf:"xlf",Xmb:"xmb",Xtb:"xtb",Rise360Xliff:"rise_360_xliff",Xls:"xls",Xlsx:"xlsx",AndroidStrings:"android_strings",Yml:"yml",Php:"php"},pe=function(a){return{termsAdd:async(e,t,s,r={})=>{u("termsAdd","id",e),u("termsAdd","data",t);const o="/terms/add",c=new URL(o,x);let n;a&&(n=a.baseOptions);const i={method:"POST",...n,...r},l={},d={},p=new URLSearchParams;s!==void 0&&p.set("api_token",s),e!==void 0&&p.set("id",e),t!==void 0&&p.set("data",t),l["Content-Type"]="application/x-www-form-urlencoded",j(c,d);let m=n&&n.headers?n.headers:{};return i.headers={...l,...m,...r.headers},i.data=p.toString(),{url:A(c),options:i}},termsAddComment:async(e,t,s,r={})=>{u("termsAddComment","id",e),u("termsAddComment","data",t);const o="/terms/add_comment",c=new URL(o,x);let n;a&&(n=a.baseOptions);const i={method:"POST",...n,...r},l={},d={},p=new URLSearchParams;s!==void 0&&p.set("api_token",s),e!==void 0&&p.set("id",e),t!==void 0&&p.set("data",t),l["Content-Type"]="application/x-www-form-urlencoded",j(c,d);let m=n&&n.headers?n.headers:{};return i.headers={...l,...m,...r.headers},i.data=p.toString(),{url:A(c),options:i}},termsDelete:async(e,t,s,r={})=>{u("termsDelete","id",e),u("termsDelete","data",t);const o="/terms/delete",c=new URL(o,x);let n;a&&(n=a.baseOptions);const i={method:"POST",...n,...r},l={},d={},p=new URLSearchParams;s!==void 0&&p.set("api_token",s),e!==void 0&&p.set("id",e),t!==void 0&&p.set("data",t),l["Content-Type"]="application/x-www-form-urlencoded",j(c,d);let m=n&&n.headers?n.headers:{};return i.headers={...l,...m,...r.headers},i.data=p.toString(),{url:A(c),options:i}},termsList:async(e,t,s,r={})=>{u("termsList","id",e);const o="/terms/list",c=new URL(o,x);let n;a&&(n=a.baseOptions);const i={method:"POST",...n,...r},l={},d={},p=new URLSearchParams;t!==void 0&&p.set("api_token",t),e!==void 0&&p.set("id",e),s!==void 0&&p.set("language",s),l["Content-Type"]="application/x-www-form-urlencoded",j(c,d);let m=n&&n.headers?n.headers:{};return i.headers={...l,...m,...r.headers},i.data=p.toString(),{url:A(c),options:i}},termsUpdate:async(e,t,s,r,o={})=>{u("termsUpdate","id",e),u("termsUpdate","data",t);const c="/terms/update",n=new URL(c,x);let i;a&&(i=a.baseOptions);const l={method:"POST",...i,...o},d={},p={},m=new URLSearchParams;s!==void 0&&m.set("api_token",s),e!==void 0&&m.set("id",e),t!==void 0&&m.set("data",t),r!==void 0&&m.set("fuzzy_trigger",r),d["Content-Type"]="application/x-www-form-urlencoded",j(n,p);let f=i&&i.headers?i.headers:{};return l.headers={...d,...f,...o.headers},l.data=m.toString(),{url:A(n),options:l}}}},I=function(a){const e=pe(a);return{async termsAdd(t,s,r,o){const c=await e.termsAdd(t,s,r,o),n=a?.serverIndex??0,i=V["TermsApi.termsAdd"]?.[n]?.url;return(l,d)=>S(c,O,v,a)(l,i||d)},async termsAddComment(t,s,r,o){const c=await e.termsAddComment(t,s,r,o),n=a?.serverIndex??0,i=V["TermsApi.termsAddComment"]?.[n]?.url;return(l,d)=>S(c,O,v,a)(l,i||d)},async termsDelete(t,s,r,o){const c=await e.termsDelete(t,s,r,o),n=a?.serverIndex??0,i=V["TermsApi.termsDelete"]?.[n]?.url;return(l,d)=>S(c,O,v,a)(l,i||d)},async termsList(t,s,r,o){const c=await e.termsList(t,s,r,o),n=a?.serverIndex??0,i=V["TermsApi.termsList"]?.[n]?.url;return(l,d)=>S(c,O,v,a)(l,i||d)},async termsUpdate(t,s,r,o,c){const n=await e.termsUpdate(t,s,r,o,c),i=a?.serverIndex??0,l=V["TermsApi.termsUpdate"]?.[i]?.url;return(d,p)=>S(n,O,v,a)(d,l||p)}}};class me extends B{termsAdd(e,t,s,r){return I(this.configuration).termsAdd(e,t,s,r).then(o=>o(this.axios,this.basePath))}termsAddComment(e,t,s,r){return I(this.configuration).termsAddComment(e,t,s,r).then(o=>o(this.axios,this.basePath))}termsDelete(e,t,s,r){return I(this.configuration).termsDelete(e,t,s,r).then(o=>o(this.axios,this.basePath))}termsList(e,t,s,r){return I(this.configuration).termsList(e,t,s,r).then(o=>o(this.axios,this.basePath))}termsUpdate(e,t,s,r,o){return I(this.configuration).termsUpdate(e,t,s,r,o).then(c=>c(this.axios,this.basePath))}}const he=function(a){return{translationsAdd:async(e,t,s,r,o={})=>{u("translationsAdd","id",e),u("translationsAdd","language",t),u("translationsAdd","data",s);const c="/translations/add",n=new URL(c,x);let i;a&&(i=a.baseOptions);const l={method:"POST",...i,...o},d={},p={},m=new URLSearchParams;r!==void 0&&m.set("api_token",r),e!==void 0&&m.set("id",e),t!==void 0&&m.set("language",t),s!==void 0&&m.set("data",s),d["Content-Type"]="application/x-www-form-urlencoded",j(n,p);let f=i&&i.headers?i.headers:{};return l.headers={...d,...f,...o.headers},l.data=m.toString(),{url:A(n),options:l}},translationsAutomatic:async(e,t,s,r,o,c,n,i={})=>{u("translationsAutomatic","id",e),u("translationsAutomatic","provider",t);const l="/translations/automatic",d=new URL(l,x);let p;a&&(p=a.baseOptions);const m={method:"POST",...p,...i},f={},w={},P=new URLSearchParams;s!==void 0&&P.set("api_token",s),e!==void 0&&P.set("id",e),r!==void 0&&P.set("source_language",r),o!==void 0&&P.set("provider_source_language",o),t!==void 0&&P.set("provider",t),c!==void 0&&P.set("target_languages",c),n!==void 0&&P.set("options",n),f["Content-Type"]="application/x-www-form-urlencoded",j(d,w);let b=p&&p.headers?p.headers:{};return m.headers={...f,...b,...i.headers},m.data=P.toString(),{url:A(d),options:m}},translationsDelete:async(e,t,s,r,o={})=>{u("translationsDelete","id",e),u("translationsDelete","language",t),u("translationsDelete","data",s);const c="/translations/delete",n=new URL(c,x);let i;a&&(i=a.baseOptions);const l={method:"POST",...i,...o},d={},p={},m=new URLSearchParams;r!==void 0&&m.set("api_token",r),e!==void 0&&m.set("id",e),t!==void 0&&m.set("language",t),s!==void 0&&m.set("data",s),d["Content-Type"]="application/x-www-form-urlencoded",j(n,p);let f=i&&i.headers?i.headers:{};return l.headers={...d,...f,...o.headers},l.data=m.toString(),{url:A(n),options:l}},translationsUpdate:async(e,t,s,r,o={})=>{u("translationsUpdate","id",e),u("translationsUpdate","language",t),u("translationsUpdate","data",s);const c="/translations/update",n=new URL(c,x);let i;a&&(i=a.baseOptions);const l={method:"POST",...i,...o},d={},p={},m=new URLSearchParams;r!==void 0&&m.set("api_token",r),e!==void 0&&m.set("id",e),t!==void 0&&m.set("language",t),s!==void 0&&m.set("data",s),d["Content-Type"]="application/x-www-form-urlencoded",j(n,p);let f=i&&i.headers?i.headers:{};return l.headers={...d,...f,...o.headers},l.data=m.toString(),{url:A(n),options:l}}}},D=function(a){const e=he(a);return{async translationsAdd(t,s,r,o,c){const n=await e.translationsAdd(t,s,r,o,c),i=a?.serverIndex??0,l=V["TranslationsApi.translationsAdd"]?.[i]?.url;return(d,p)=>S(n,O,v,a)(d,l||p)},async translationsAutomatic(t,s,r,o,c,n,i,l){const d=await e.translationsAutomatic(t,s,r,o,c,n,i,l),p=a?.serverIndex??0,m=V["TranslationsApi.translationsAutomatic"]?.[p]?.url;return(f,w)=>S(d,O,v,a)(f,m||w)},async translationsDelete(t,s,r,o,c){const n=await e.translationsDelete(t,s,r,o,c),i=a?.serverIndex??0,l=V["TranslationsApi.translationsDelete"]?.[i]?.url;return(d,p)=>S(n,O,v,a)(d,l||p)},async translationsUpdate(t,s,r,o,c){const n=await e.translationsUpdate(t,s,r,o,c),i=a?.serverIndex??0,l=V["TranslationsApi.translationsUpdate"]?.[i]?.url;return(d,p)=>S(n,O,v,a)(d,l||p)}}};class ue extends B{translationsAdd(e,t,s,r,o){return D(this.configuration).translationsAdd(e,t,s,r,o).then(c=>c(this.axios,this.basePath))}translationsAutomatic(e,t,s,r,o,c,n,i){return D(this.configuration).translationsAutomatic(e,t,s,r,o,c,n,i).then(l=>l(this.axios,this.basePath))}translationsDelete(e,t,s,r,o){return D(this.configuration).translationsDelete(e,t,s,r,o).then(c=>c(this.axios,this.basePath))}translationsUpdate(e,t,s,r,o){return D(this.configuration).translationsUpdate(e,t,s,r,o).then(c=>c(this.axios,this.basePath))}}class fe{apiKey;username;password;accessToken;basePath;serverIndex;baseOptions;formDataCtor;constructor(e={}){this.apiKey=e.apiKey,this.username=e.username,this.password=e.password,this.accessToken=e.accessToken,this.basePath=e.basePath,this.serverIndex=e.serverIndex,this.baseOptions=e.baseOptions,this.formDataCtor=e.formDataCtor}isJsonMime(e){const t=new RegExp("^(application/json|[^;/ ]+/[^;/ ]+[+]json)[ ]*(;.*)?$","i");return e!==null&&(t.test(e)||e.toLowerCase()==="application/json-patch+json")}}class we{apiToken;projectId;axiosInstance;projectsApi;termsApi;translationsApi;constructor(e){this.apiToken=e.apiToken,this.projectId=e.projectId,this.axiosInstance=O.create({baseURL:"https://api.poeditor.com/v2"});const t=new fe({apiKey:e.apiToken});this.projectsApi=new le(t,void 0,this.axiosInstance),this.termsApi=new me(t,void 0,this.axiosInstance),this.translationsApi=new ue(t,void 0,this.axiosInstance)}async downloadTranslations(e){try{const t=await this.projectsApi.projectsExport(this.projectId,e,de.KeyValueJson,this.apiToken);if(t.data.result?.url)return(await this.axiosInstance.get(t.data.result.url)).data||{};throw new Error("No download URL received from POEditor")}catch(t){throw new Error(`Failed to download translations for ${e}: ${t}`)}}async uploadTerms(e){try{const t=Object.entries(e).map(([s,r])=>({term:s,context:r.description,reference:r.file,comment:`Default: ${r.defaultMessage}`}));await this.termsApi.termsAdd(this.projectId,JSON.stringify(t),this.apiToken)}catch(t){throw new Error(`Failed to upload terms: ${t}`)}}async uploadTranslations(e,t){try{const s=Object.entries(e).map(([r,o])=>({term:r,translation:{content:o.defaultMessage,fuzzy:0}}));await this.translationsApi.translationsAdd(this.projectId,t,JSON.stringify(s),this.apiToken)}catch(s){throw new Error(`Failed to upload translations for ${t}: ${s}`)}}async downloadTerms(){try{const e=await this.termsApi.termsList(this.projectId,this.apiToken);return e.data.result?.terms?e.data.result.terms.map(t=>({term:t.term||"",context:t.context||"",reference:t.reference||"",comment:t.comment||""})):[]}catch(e){throw new Error(`Failed to get terms: ${e}`)}}async removeTerms(e){try{await this.termsApi.termsDelete(this.projectId,JSON.stringify(e),this.apiToken)}catch(t){throw new Error(`Failed to remove terms: ${t}`)}}async getTranslationsInDefaultLanguage(e){try{let t;const s=await this.projectsApi.projectsView(this.projectId,this.apiToken);if(s.data.result?.project&&(t=s.data.result.project.reference_language),!t)throw new Error("No reference language found");const r=await this.downloadTranslations(t);return e.map(o=>({term:o.term,translation:r[o.term]||""}))}catch(t){throw new Error(`Failed to get translations in default language: ${t}`)}}}function Pe({poeditorApiToken:a,poeditorProjectId:e}){if(a&&e)return new we({apiToken:a,projectId:e});throw new Error("No configuration for translations service client provided.")}exports.diff=Y;exports.diffCommandOptionsSchema=K;exports.download=z;exports.downloadCommandOptionsSchema=W;exports.local=Z;exports.localCommandOptionsSchema=G;exports.logger=h;exports.mkTranslationsServiceClient=Pe;exports.sync=ne;exports.syncCommandOptionsSchema=oe;exports.upload=H;exports.uploadCommandOptionsSchema=ae;
|