@dittowords/cli 5.0.0-beta.5 → 5.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bin/ditto.js +4 -4
  2. package/package.json +1 -1
package/bin/ditto.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="23571d17-fe75-53c1-b0d6-409474e4a897")}catch(e){}}();
4
- var Nr=Object.create;var se=Object.defineProperty;var _r=Object.getOwnPropertyDescriptor;var Mr=Object.getOwnPropertyNames;var Rr=Object.getPrototypeOf,$r=Object.prototype.hasOwnProperty;var We=t=>{throw TypeError(t)};var r=(t,e)=>se(t,"name",{value:e,configurable:!0});var Lr=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Mr(e))!$r.call(t,s)&&s!==o&&se(t,s,{get:()=>e[s],enumerable:!(n=_r(e,s))||n.enumerable});return t};var l=(t,e,o)=>(o=t!=null?Nr(Rr(t)):{},Lr(e||!t||!t.__esModule?se(o,"default",{value:t,enumerable:!0}):o,t));var He=(t,e,o)=>e.has(t)||We("Cannot "+o);var E=(t,e,o)=>(He(t,e,"read from private field"),o?o.call(t):e.get(t)),J=(t,e,o)=>e.has(t)?We("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,o),N=(t,e,o,n)=>(He(t,e,"write to private field"),n?n.call(t,o):e.set(t,o),o);var vr=l(require("@sentry/node"));var st="5.0.0-beta.5";var U=require("commander");var go=l(require("boxen")),qt=l(require("chalk"));var uo=l(require("ora"));var no=l(require("axios"));var V=l(require("fs")),Qe=l(require("path")),to=l(require("url")),at=l(require("js-yaml")),eo=l(require("@sentry/node"));var Xe=require("os"),it=l(require("path")),u=new class{get API_HOST(){return process.env.DITTO_API_HOST||"https://api.dittowords.com"}get CONFIG_FILE(){return process.env.DITTO_CONFIG_FILE||it.default.join((0,Xe.homedir)(),".config","ditto")}get PROJECT_CONFIG_FILE(){return it.default.normalize(it.default.join("ditto","config.yml"))}get TEXT_DIR(){return process.env.DITTO_TEXT_DIR||"ditto"}get TEXT_FILE(){return it.default.normalize(it.default.join(this.TEXT_DIR,"text.json"))}};function Ze(t){if(typeof t!="object")return{};let e={};for(let o in t){let n=o,s=t[n];e[n]=typeof s=="object"||Array.isArray(s)?JSON.stringify(s):s}return e}r(Ze,"createSentryContext");var Vr={sources:{components:!0},variants:!0,format:"flat"},oo=at.default.dump(Vr);function Ct(t,e){let o=Qe.default.dirname(t);V.default.existsSync(o)||V.default.mkdirSync(o),V.default.existsSync(t)||V.default.writeFileSync(t,e||"","utf-8")}r(Ct,"createFileIfMissing");function Yr(t){return typeof t=="object"}r(Yr,"jsonIsConfigYAML");function Br(t){return!!t&&typeof t=="object"&&Object.values(t).every(e=>e.every&&e.every(o=>typeof o=="object"&&Object.keys(o).includes("token")))}r(Br,"jsonIsGlobalYAML");function ie(t=u.PROJECT_CONFIG_FILE,e={}){Ct(t,oo);let o=V.default.readFileSync(t,"utf8"),n=at.default.load(o);return Yr(n)?n:e}r(ie,"readProjectConfigData");function It(t=u.CONFIG_FILE,e={}){Ct(t);let o=V.default.readFileSync(t,"utf8"),n=at.default.load(o);return Br(n)?n:e}r(It,"readGlobalConfigData");function Gr(t,e){Ct(t,oo);let o=ie(t),n={...o,...e,sources:{...o.sources,...e.sources}},s=at.default.dump(n);V.default.writeFileSync(t,s,"utf8")}r(Gr,"writeProjectConfigData");function ae(t,e){Ct(t);let o=It(t),n=at.default.dump({...o,...e});V.default.writeFileSync(t,n,"utf8")}r(ae,"writeGlobalConfigData");function Yt(t){return t.includes("://")?to.default.parse(t).hostname||"":t}r(Yt,"justTheHost");function qr(t,e){let o=It(t),n=Yt(e);o[n]=[],o[n][0]={token:""},ae(t,o)}r(qr,"deleteToken");function Ur(t,e,o){let n=It(t),s=Yt(e);n[s]=[],n[s][0]={token:o},ae(t,n)}r(Ur,"saveToken");function ro(){return process.env.DITTO_API_KEY}r(ro,"getTokenFromEnv");function zr(t,e){let o=ro();if(o)return o;let s=It(t)[Yt(e)];if(!s)return;let{length:i}=s;return s[i-1].token}r(zr,"getToken");var Ke=/-(\d+$)/;function Wr(t,e){let o=e;if(t.has(o))for(;t.has(o);){let[n,s]=o.match(Ke)||[];s&&!isNaN(parseInt(s))?o=`${o.replace(Ke,"")}-${parseInt(s)+1}`:o=`${o}-1`}return o}r(Wr,"dedupeProjectName");function Hr(t){let{sources:e,variants:o,format:n,status:s,richText:i,iosLocales:a,projects:c,components:m,disableJsDriver:y}=ie(t),f=e?.projects||[],d=new Set,S=[],x=!1;(f||[]).forEach(P=>{if(P.id&&P.name){if(P.id==="ditto_component_library"){x=!0;return}P.fileName=Wr(d,P.name),d.add(P.fileName),S.push(P)}});let C=!!e?.components,_=typeof e?.components=="object"?e.components.root:void 0,F=typeof e?.components=="object"?e.components.folders:void 0,v={hasSourceData:!!S.length||C,validProjects:S,shouldFetchComponentLibrary:C,variants:o||!1,format:n,status:s,richText:i,hasTopLevelProjectsField:!!c,hasTopLevelComponentsField:!!m,hasComponentLibraryInProjects:x,componentRoot:_,componentFolders:F,localeByVariantApiId:a?a.reduce((P,rt)=>({...P,...rt}),{}):void 0,disableJsDriver:y};return eo.setContext("config",Ze(v)),v}r(Hr,"parseSourceInformation");var w={createFileIfMissing:Ct,readProjectConfigData:ie,readGlobalConfigData:It,writeGlobalConfigData:ae,writeProjectConfigData:Gr,justTheHost:Yt,saveToken:Ur,deleteToken:qr,getToken:zr,getTokenFromEnv:ro,parseSourceInformation:Hr};function j(t){return no.default.create({baseURL:u.API_HOST,headers:{Authorization:`token ${t||w.getToken(u.CONFIG_FILE,u.API_HOST)}`,"x-ditto-cli":!0}})}r(j,"createApiClient");var G=l(require("chalk"));var Xr=r(t=>G.default.magenta(t),"errorText"),Zr=r(t=>G.default.yellow(t),"warnText"),Kr=r(t=>G.default.blueBright(t),"info"),Qr=r(t=>G.default.green(t),"success"),tn=r(t=>G.default.blueBright.underline(t),"url"),en=r(t=>G.default.grey(t),"subtle"),on=r(t=>G.default.white(t),"write"),rn=r(()=>console.log(`
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1836cf2c-6885-5fd1-8537-366fbd32d4d4")}catch(e){}}();
4
+ var Nr=Object.create;var se=Object.defineProperty;var _r=Object.getOwnPropertyDescriptor;var Mr=Object.getOwnPropertyNames;var Rr=Object.getPrototypeOf,$r=Object.prototype.hasOwnProperty;var We=t=>{throw TypeError(t)};var r=(t,e)=>se(t,"name",{value:e,configurable:!0});var Lr=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Mr(e))!$r.call(t,s)&&s!==o&&se(t,s,{get:()=>e[s],enumerable:!(n=_r(e,s))||n.enumerable});return t};var l=(t,e,o)=>(o=t!=null?Nr(Rr(t)):{},Lr(e||!t||!t.__esModule?se(o,"default",{value:t,enumerable:!0}):o,t));var He=(t,e,o)=>e.has(t)||We("Cannot "+o);var E=(t,e,o)=>(He(t,e,"read from private field"),o?o.call(t):e.get(t)),J=(t,e,o)=>e.has(t)?We("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,o),N=(t,e,o,n)=>(He(t,e,"write to private field"),n?n.call(t,o):e.set(t,o),o);var vr=l(require("@sentry/node"));var st="5.0.0-beta.6";var U=require("commander");var go=l(require("boxen")),qt=l(require("chalk"));var uo=l(require("ora"));var no=l(require("axios"));var V=l(require("fs")),Qe=l(require("path")),to=l(require("url")),at=l(require("js-yaml")),eo=l(require("@sentry/node"));var Xe=require("os"),it=l(require("path")),u=new class{get API_HOST(){return process.env.DITTO_API_HOST||"https://api.dittowords.com"}get CONFIG_FILE(){return process.env.DITTO_CONFIG_FILE||it.default.join((0,Xe.homedir)(),".config","ditto")}get PROJECT_CONFIG_FILE(){return it.default.normalize(it.default.join("ditto","config.yml"))}get TEXT_DIR(){return process.env.DITTO_TEXT_DIR||"ditto"}get TEXT_FILE(){return it.default.normalize(it.default.join(this.TEXT_DIR,"text.json"))}};function Ze(t){if(typeof t!="object")return{};let e={};for(let o in t){let n=o,s=t[n];e[n]=typeof s=="object"||Array.isArray(s)?JSON.stringify(s):s}return e}r(Ze,"createSentryContext");var Vr={sources:{components:!0},variants:!0,format:"flat"},oo=at.default.dump(Vr);function Ct(t,e){let o=Qe.default.dirname(t);V.default.existsSync(o)||V.default.mkdirSync(o),V.default.existsSync(t)||V.default.writeFileSync(t,e||"","utf-8")}r(Ct,"createFileIfMissing");function Yr(t){return typeof t=="object"}r(Yr,"jsonIsConfigYAML");function Br(t){return!!t&&typeof t=="object"&&Object.values(t).every(e=>e.every&&e.every(o=>typeof o=="object"&&Object.keys(o).includes("token")))}r(Br,"jsonIsGlobalYAML");function ie(t=u.PROJECT_CONFIG_FILE,e={}){Ct(t,oo);let o=V.default.readFileSync(t,"utf8"),n=at.default.load(o);return Yr(n)?n:e}r(ie,"readProjectConfigData");function It(t=u.CONFIG_FILE,e={}){Ct(t);let o=V.default.readFileSync(t,"utf8"),n=at.default.load(o);return Br(n)?n:e}r(It,"readGlobalConfigData");function Gr(t,e){Ct(t,oo);let o=ie(t),n={...o,...e,sources:{...o.sources,...e.sources}},s=at.default.dump(n);V.default.writeFileSync(t,s,"utf8")}r(Gr,"writeProjectConfigData");function ae(t,e){Ct(t);let o=It(t),n=at.default.dump({...o,...e});V.default.writeFileSync(t,n,"utf8")}r(ae,"writeGlobalConfigData");function Yt(t){return t.includes("://")?to.default.parse(t).hostname||"":t}r(Yt,"justTheHost");function qr(t,e){let o=It(t),n=Yt(e);o[n]=[],o[n][0]={token:""},ae(t,o)}r(qr,"deleteToken");function Ur(t,e,o){let n=It(t),s=Yt(e);n[s]=[],n[s][0]={token:o},ae(t,n)}r(Ur,"saveToken");function ro(){return process.env.DITTO_API_KEY}r(ro,"getTokenFromEnv");function zr(t,e){let o=ro();if(o)return o;let s=It(t)[Yt(e)];if(!s)return;let{length:i}=s;return s[i-1].token}r(zr,"getToken");var Ke=/-(\d+$)/;function Wr(t,e){let o=e;if(t.has(o))for(;t.has(o);){let[n,s]=o.match(Ke)||[];s&&!isNaN(parseInt(s))?o=`${o.replace(Ke,"")}-${parseInt(s)+1}`:o=`${o}-1`}return o}r(Wr,"dedupeProjectName");function Hr(t){let{sources:e,variants:o,format:n,status:s,richText:i,iosLocales:a,projects:c,components:m,disableJsDriver:y}=ie(t),f=e?.projects||[],d=new Set,S=[],x=!1;(f||[]).forEach(P=>{if(P.id&&P.name){if(P.id==="ditto_component_library"){x=!0;return}P.fileName=Wr(d,P.name),d.add(P.fileName),S.push(P)}});let C=!!e?.components,_=typeof e?.components=="object"?e.components.root:void 0,F=typeof e?.components=="object"?e.components.folders:void 0,v={hasSourceData:!!S.length||C,validProjects:S,shouldFetchComponentLibrary:C,variants:o||!1,format:n,status:s,richText:i,hasTopLevelProjectsField:!!c,hasTopLevelComponentsField:!!m,hasComponentLibraryInProjects:x,componentRoot:_,componentFolders:F,localeByVariantApiId:a?a.reduce((P,rt)=>({...P,...rt}),{}):void 0,disableJsDriver:y};return eo.setContext("config",Ze(v)),v}r(Hr,"parseSourceInformation");var w={createFileIfMissing:Ct,readProjectConfigData:ie,readGlobalConfigData:It,writeGlobalConfigData:ae,writeProjectConfigData:Gr,justTheHost:Yt,saveToken:Ur,deleteToken:qr,getToken:zr,getTokenFromEnv:ro,parseSourceInformation:Hr};function j(t){return no.default.create({baseURL:u.API_HOST,headers:{Authorization:`token ${t||w.getToken(u.CONFIG_FILE,u.API_HOST)}`,"x-ditto-cli":!0}})}r(j,"createApiClient");var G=l(require("chalk"));var Xr=r(t=>G.default.magenta(t),"errorText"),Zr=r(t=>G.default.yellow(t),"warnText"),Kr=r(t=>G.default.blueBright(t),"info"),Qr=r(t=>G.default.green(t),"success"),tn=r(t=>G.default.blueBright.underline(t),"url"),en=r(t=>G.default.grey(t),"subtle"),on=r(t=>G.default.white(t),"write"),rn=r(()=>console.log(`
5
5
  `),"nl"),p={errorText:Xr,warnText:Zr,info:Kr,success:Qr,url:tn,subtle:en,write:on,nl:rn};var io=l(require("fs")),ao=l(require("@sentry/node")),co=l(require("chalk")),po=require("enquirer");var so=l(require("@sentry/node"));async function b(t,e=2){t&&console.log(`
6
6
  ${t}
7
7
  `),await so.flush(),process.exit(e)}r(b,"quit");var lo=require("axios");var ce=r((t,e=u.API_HOST)=>{if(w.getTokenFromEnv())return!1;let o=t||u.CONFIG_FILE;if(!io.default.existsSync(o))return!0;let n=w.readGlobalConfigData(o);return!n[w.justTheHost(e)]||n[w.justTheHost(e)][0].token===""},"needsToken");async function nn(t){let e=j(t),o="/token-check",n;try{n=await e.get(o)}catch(s){if(!(s instanceof lo.AxiosError))return{success:!1,output:[p.warnText("Sorry! We're having trouble reaching the Ditto API.")]};if(s.code==="ENOTFOUND")return{success:!1,output:[p.errorText(`Can't connect to API: ${p.url(u.API_HOST)}`)]};if(s.response?.status===401||s.response?.status===404)return{success:!1,output:[p.errorText("This API key isn't valid. Please try another.")]}}return typeof n=="string"?{success:!1,output:[n]}:n?.status===200?{success:!0}:{success:!1,output:[p.errorText("This API key isn't valid. Please try another.")]}}r(nn,"verifyTokenUsingTokenCheck");async function sn(t){let e=await nn(t);return e.success?!0:e.output.join(`
@@ -115,7 +115,7 @@ ${t}
115
115
  `)||"Invalid API key"},"validate");async function Je(){return await(0,yr.prompt)({type:"input",name:"token",message:"What is your API key?",validate:ks})}r(Je,"promptForApiToken");async function Ve(){let t=T.url("https://app.dittowords.com/account/devtools"),e=T.bold(T.info("API Keys")),o=`To get started, you'll need your Ditto API key. You can find this at: ${t} under "${e}".`;return T.writeLine(o),(await Je()).token}r(Ve,"collectToken");var hr=l(require("url"));function Vt(t){return t.includes("://")?hr.default.parse(t).hostname||"":t}r(Vt,"getURLHostname");async function Tt(t=h.apiHost){try{let e=await Ve();T.writeLine(`Thanks for authenticating. We'll save the key to: ${T.info(h.configFile)}
116
116
  `);let o=Vt(t);return dr(h.configFile,o,e),h.setApiToken(e),e}catch(e){if(e==="")return await ht("",0),"";let o=xr.captureException(e),n=`
117
117
 
118
- Error ID: ${T.info(o)}`;return await ht(T.errorText("Something went wrong. Please contact support or try again later.")+n),""}}r(Tt,"collectAndSaveToken");async function ee(t){return(await Jt(t)).success?t:await Tt()}r(ee,"validateToken");async function Ye(){if(h.apiToken)return await ee(h.apiToken);if(!Tr.default.existsSync(h.configFile))return await Tt();let t=Qt(h.configFile),e=Vt(h.apiHost);return!t[e]||!t[e][0]||t[e][0].token===""?await Tt(e):await ee(t[e][0].token)}r(Ye,"initAPIToken");var Ds=[{name:"pull",description:"Sync copy from Ditto",flags:{"-c, --config [value]":{description:"Relative path to the project config file. Defaults to `./ditto/config.yml`. Alternatively, you can set the DITTO_PROJECT_CONFIG_FILE environment variable."}}}],As=r(()=>{St.program.name("ditto-cli"),Ds.forEach(t=>{let e=St.program.command(t.name).description(t.description).action(o=>_s(t.name,o));t.flags&&Object.entries(t.flags).forEach(([o,{description:n,processor:s}])=>{s?e.option(o,n,s):e.option(o,n)})})},"setupCommands"),Ns=r(()=>{St.program.option("-l, --legacy","Run in legacy mode"),St.program.version(st,"-v, --version","Output the current version")},"setupOptions"),_s=r(async(t,e)=>{try{let o=e.opts(),n=await Ye();switch(h.setApiToken(n),await nr(o),t){case"none":case"pull":return await ur();default:{await ht(`Invalid command: ${t}. Exiting Ditto CLI...`);return}}}catch(o){process.env.DEBUG==="true"&&console.error(T.info(`Development stack trace:
118
+ Error ID: ${T.info(o)}`;return await ht(T.errorText("Something went wrong. Please contact support or try again later.")+n),""}}r(Tt,"collectAndSaveToken");async function ee(t){return(await Jt(t)).success?t:await Tt()}r(ee,"validateToken");async function Ye(){if(h.apiToken)return await ee(h.apiToken);if(!Tr.default.existsSync(h.configFile))return await Tt();let t=Qt(h.configFile),e=Vt(h.apiHost);return!t[e]||!t[e][0]||t[e][0].token===""?await Tt(e):await ee(t[e][0].token)}r(Ye,"initAPIToken");var Ds=[{name:"pull",description:"Sync copy from Ditto",flags:{"-c, --config [value]":{description:"Relative path to the project config file. Defaults to `./ditto/config.yml`. Alternatively, you can set the DITTO_PROJECT_CONFIG_FILE environment variable."}}}],As=r(()=>{St.program.name("ditto-cli"),Ds.forEach(t=>{let e=St.program.command(t.name).description(t.description).action(o=>_s(t.name,o));t.flags&&Object.entries(t.flags).forEach(([o,{description:n,processor:s}])=>{s?e.option(o,n,s):e.option(o,n)})})},"setupCommands"),Ns=r(()=>{St.program.option("--legacy","Run in legacy mode"),St.program.version(st,"-v, --version","Output the current version")},"setupOptions"),_s=r(async(t,e)=>{try{let o=e.opts(),n=await Ye();switch(h.setApiToken(n),await nr(o),t){case"none":case"pull":return await ur();default:{await ht(`Invalid command: ${t}. Exiting Ditto CLI...`);return}}}catch(o){process.env.DEBUG==="true"&&console.error(T.info(`Development stack trace:
119
119
  `),o);let n,s,i="Something went wrong. Please contact support or try again later.";er(o)&&(s=o.exitCode,Se(o,"ConfigYamlLoadError")?i=o.message:Se(o,"ConfigParseError")&&(i=`${o.data.messagePrefix}
120
120
 
121
121
  ${o.data.formattedError}`),n={extra:{message:i,...o.data||{}}});let a=Sr.captureException(o,n),c=`
@@ -124,4 +124,4 @@ Error ID: ${T.info(a)}`;return await ht(T.errorText(i)+c,s)}},"executeCommand"),
124
124
  Ditto CLI is running in legacy mode. This mode is deprecated and will be removed in a future release.
125
125
  `)),Ho()):wr()},"main");$s();
126
126
 
127
- //# debugId=23571d17-fe75-53c1-b0d6-409474e4a897
127
+ //# debugId=1836cf2c-6885-5fd1-8537-366fbd32d4d4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dittowords/cli",
3
- "version": "5.0.0-beta.5",
3
+ "version": "5.0.0-beta.6",
4
4
  "description": "Command Line Interface for Ditto (dittowords.com).",
5
5
  "license": "MIT",
6
6
  "main": "bin/ditto.js",