@terai/dev 0.0.0-dev-20261017191430 → 0.0.0-dev-20261017203019

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.
@@ -82,7 +82,7 @@ let n=t.platform===`win32`?`\r
82
82
  Try running with %s or get access `,U.cyan(`sudo`))+`
83
83
  to the local update config store via
84
84
  `+U.cyan((0,_.format)(` sudo chown -R $USER:$(id -gn $USER) %s `,Ze));d.default.on(`exit`,()=>{console.error(Za(t,{textAlignment:`center`}))})}}check(){!this.config||this.config.get(`optOut`)||this.#r||(this.update=this.config.get(`update`),this.update&&(this.update.current=this.#t,this.config.delete(`update`)),!(Date.now()-this.config.get(`lastUpdateCheck`)<this.#n)&&(0,m.spawn)(d.default.execPath,[g.default.join(io,`check.js`),JSON.stringify(this.#e)],{detached:!0,stdio:`ignore`}).unref())}async fetchInfo(){let{distTag:e}=this.#e,t=await hi(this._packageName,{version:e});return{latest:t,current:this.#t,type:(0,hn.default)(this.#t,t)??e,name:this._packageName}}notify(e){let t=!this._shouldNotifyInNpmScript&&bi;if(!d.default.stdout.isTTY||t||!this.update||!(0,gn.default)(this.update.latest,this.update.current))return this;e={isGlobal:Ni,...e};let n=e.isGlobal?`npm i -g ${this._packageName}`:`npm i ${this._packageName}`,r=`Update available `+U.dim(`{currentVersion}`)+U.reset(` → `)+U.green(`{latestVersion}`)+`
85
- Run `+U.cyan(`{updateCommand}`)+` to update`,i=e.message||r;e.boxenOptions??={padding:1,margin:1,textAlignment:`center`,borderColor:`yellow`,borderStyle:`round`};let a=Za(ro(i,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:n}),e.boxenOptions);return e.defer===!1?console.error(a):d.default.on(`exit`,()=>{console.error(a)}),this}};function oo(e){let t=new ao(e);return t.check(),t}var so={name:`@terai/dev`,version:`0.0.0-dev-20261017191430`,description:`The user-facing package for Terai`,engines:{node:`>=22.13.0`},main:`./dist/index.cjs`,module:`./dist/index.mjs`,types:`./dist/index.d.mts`,repository:{type:`git`,url:`git+https://github.com/terai-labs/terai.git`,directory:`packages/dev`},private:!1,author:`Hugo Corta <corta.hugo@gmail.com>`,bin:{terai:`bin.js`},scripts:{dev:`tsdown --format=esm --no-dts --watch`,build:`tsdown`},files:[`bin.js`,`dist`],sideEffects:!1,publishConfig:{access:`public`},exports:{".":{import:{types:`./dist/index.d.mts`,default:`./dist/index.mjs`},require:{types:`./dist/index.d.cts`,default:`./dist/index.cjs`}}},dependencies:{"@inquirer/prompts":`^8.7.3`,"@terai/extractor":`workspace:*`,"@terai/runtime":`workspace:*`,"@terai/translator":`workspace:*`,"@terai/types":`workspace:*`,"@terai/utils":`workspace:*`,cac:`^7.1.0`,dotenv:`^18.0.8`,inquirer:`^14.2.3`,kleur:`^4.1.5`,"perfect-debounce":`^2.1.0`,"preferred-pm":`^5.0.1`},devDependencies:{"@terai/generator":`workspace:*`,"@terai/logger":`workspace:*`,"@types/update-notifier":`^6.0.8`,"update-notifier":`^7.3.1`}},co=(/* @__PURE__ */ o(((e,t)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.outdent=void 0;function n(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}function r(){return typeof WeakMap<`u`?/* @__PURE__ */ new WeakMap:i()}function i(){return{add:n,delete:n,get:n,set:n,has:function(e){return!1}}}var a=Object.prototype.hasOwnProperty,o=function(e,t){return a.call(e,t)};function s(e,t){for(var n in t)o(t,n)&&(e[n]=t[n]);return e}var c=/^[ \t]*(?:\r\n|\r|\n)/,l=/(?:\r\n|\r|\n)[ \t]*$/,u=/^(?:[\r\n]|$)/,d=/(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/,f=/^[ \t]*[\r\n][ \t\r\n]*$/;function p(e,t,n){var r=0,i=e[0].match(d);i&&(r=i[1].length);var a=`(\\r\\n|\\r|\\n).{0,`+r+`}`,o=new RegExp(a,`g`);t&&(e=e.slice(1));var s=n.newline,u=n.trimLeadingNewline,f=n.trimTrailingNewline,p=typeof s==`string`,m=e.length;return e.map(function(e,t){return e=e.replace(o,`$1`),t===0&&u&&(e=e.replace(c,``)),t===m-1&&f&&(e=e.replace(l,``)),p&&(e=e.replace(/\r\n|\n|\r/g,function(e){return s})),e})}function m(e,t){for(var n=``,r=0,i=e.length;r<i;r++)n+=e[r],r<i-1&&(n+=t[r]);return n}function h(e){return o(e,`raw`)&&o(e,`length`)}function g(e){var t=r(),n=r();function i(r){for(var a=[],o=1;o<arguments.length;o++)a[o-1]=arguments[o];if(h(r)){var c=r,l=(a[0]===i||a[0]===_)&&f.test(c[0])&&u.test(c[1]),d=l?n:t,v=d.get(c);return v||(v=p(c,l,e),d.set(c,v)),a.length===0?v[0]:m(v,l?a.slice(1):a)}return g(s(s({},e),r||{}))}return s(i,{string:function(t){return p([t],!1,e)[0]}})}var _=g({trimLeadingNewline:!0,trimTrailingNewline:!0});if(e.outdent=_,e.default=_,t!==void 0)try{t.exports=_,Object.defineProperty(_,"__esModule",{value:!0}),_.default=_,_.outdent=_}catch{}})))();function lo(e,t){return e.command(`init`,`Initialize config file`).option(`-f, --force`,`Force overwrite existing config files`).option(`--cwd <cwd>`,`Current working directory`,{default:t}).action(uo)}async function uo({cwd:e,force:t}){j.heading(`init`,`Initialize config file`);let n=(0,u.findConfig)({cwd:e}),r=(await(0,S.preferredPM)(e))?.name??`npm`,i=r===`npm`?`npm run`:r;if(n&&!t)return j.log(co.outdent`
85
+ Run `+U.cyan(`{updateCommand}`)+` to update`,i=e.message||r;e.boxenOptions??={padding:1,margin:1,textAlignment:`center`,borderColor:`yellow`,borderStyle:`round`};let a=Za(ro(i,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:n}),e.boxenOptions);return e.defer===!1?console.error(a):d.default.on(`exit`,()=>{console.error(a)}),this}};function oo(e){let t=new ao(e);return t.check(),t}var so={name:`@terai/dev`,version:`0.0.0-dev-20261017203019`,description:`The user-facing package for Terai`,engines:{node:`>=22.13.0`},main:`./dist/index.cjs`,module:`./dist/index.mjs`,types:`./dist/index.d.mts`,repository:{type:`git`,url:`git+https://github.com/terai-labs/terai.git`,directory:`packages/dev`},private:!1,author:`Hugo Corta <corta.hugo@gmail.com>`,bin:{terai:`bin.js`},scripts:{dev:`tsdown --format=esm --no-dts --watch`,build:`tsdown`},files:[`bin.js`,`dist`],sideEffects:!1,publishConfig:{access:`public`},exports:{".":{import:{types:`./dist/index.d.mts`,default:`./dist/index.mjs`},require:{types:`./dist/index.d.cts`,default:`./dist/index.cjs`}}},dependencies:{"@inquirer/prompts":`^8.7.3`,"@terai/extractor":`workspace:*`,"@terai/runtime":`workspace:*`,"@terai/translator":`workspace:*`,"@terai/types":`workspace:*`,"@terai/utils":`workspace:*`,cac:`^7.1.0`,dotenv:`^18.0.8`,inquirer:`^14.2.3`,kleur:`^4.1.5`,"perfect-debounce":`^2.1.0`,"preferred-pm":`^5.0.1`},devDependencies:{"@terai/generator":`workspace:*`,"@terai/logger":`workspace:*`,"@types/update-notifier":`^6.0.8`,"update-notifier":`^7.3.1`}},co=(/* @__PURE__ */ o(((e,t)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.outdent=void 0;function n(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]}function r(){return typeof WeakMap<`u`?/* @__PURE__ */ new WeakMap:i()}function i(){return{add:n,delete:n,get:n,set:n,has:function(e){return!1}}}var a=Object.prototype.hasOwnProperty,o=function(e,t){return a.call(e,t)};function s(e,t){for(var n in t)o(t,n)&&(e[n]=t[n]);return e}var c=/^[ \t]*(?:\r\n|\r|\n)/,l=/(?:\r\n|\r|\n)[ \t]*$/,u=/^(?:[\r\n]|$)/,d=/(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/,f=/^[ \t]*[\r\n][ \t\r\n]*$/;function p(e,t,n){var r=0,i=e[0].match(d);i&&(r=i[1].length);var a=`(\\r\\n|\\r|\\n).{0,`+r+`}`,o=new RegExp(a,`g`);t&&(e=e.slice(1));var s=n.newline,u=n.trimLeadingNewline,f=n.trimTrailingNewline,p=typeof s==`string`,m=e.length;return e.map(function(e,t){return e=e.replace(o,`$1`),t===0&&u&&(e=e.replace(c,``)),t===m-1&&f&&(e=e.replace(l,``)),p&&(e=e.replace(/\r\n|\n|\r/g,function(e){return s})),e})}function m(e,t){for(var n=``,r=0,i=e.length;r<i;r++)n+=e[r],r<i-1&&(n+=t[r]);return n}function h(e){return o(e,`raw`)&&o(e,`length`)}function g(e){var t=r(),n=r();function i(r){for(var a=[],o=1;o<arguments.length;o++)a[o-1]=arguments[o];if(h(r)){var c=r,l=(a[0]===i||a[0]===_)&&f.test(c[0])&&u.test(c[1]),d=l?n:t,v=d.get(c);return v||(v=p(c,l,e),d.set(c,v)),a.length===0?v[0]:m(v,l?a.slice(1):a)}return g(s(s({},e),r||{}))}return s(i,{string:function(t){return p([t],!1,e)[0]}})}var _=g({trimLeadingNewline:!0,trimTrailingNewline:!0});if(e.outdent=_,e.default=_,t!==void 0)try{t.exports=_,Object.defineProperty(_,"__esModule",{value:!0}),_.default=_,_.outdent=_}catch{}})))();function lo(e,t){return e.command(`init`,`Initialize config file`).option(`-f, --force`,`Force overwrite existing config files`).option(`--cwd <cwd>`,`Current working directory`,{default:t}).action(uo)}async function uo({cwd:e,force:t}){j.heading(`init`,`Initialize config file`);let n=(0,u.findConfig)({cwd:e}),r=(await(0,S.preferredPM)(e))?.name??`npm`,i=r===`npm`?`npm run`:r;if(n&&!t)return j.log(co.outdent`
86
86
  It looks like you already have a config file created.
87
87
  You can now run ${j.colors.cyan(`'${i} terai extract --watch'`)}
88
88
  `);let a=await(0,x.input)({message:`What locale do you use in your project messages?`,default:`en-US`,validate:e=>e.trim().length!==0||`Please provide a valid locale`}),o=await(0,x.input)({message:`What locales do you want to support? (comma separated)`,default:`fr-FR,es-ES,de-DE`,validate:e=>e.trim().length!==0||`Please provide at least one locale`,transformer:e=>e.split(`,`).map(e=>e.trim()).join(`,`)}),s=await(0,x.input)({message:`Where do you want to place your generated files?`,default:`./locale`}),c=j.time.success();await(0,u.setupConfig)({cwd:e,projectLocale:a,outDir:s,outLocales:o.split(`,`)}),c(`Config file created`),j.log(`🚀 You are set up to start using Terai! Thanks for choosing it.`)}async function fo({dictionaries:e,locale:t,cwd:n,outDir:r}){let i=u.runtime.path.resolve(n,r,t),a=[];for(let t in e){let n=u.runtime.path.resolve(i,`${t}.json`),r=e[t],o=(0,w.stringify)(r);u.runtime.fs.write(n,o),a.push(o)}return a}function po(e,t){return e.command(`extract`,`Statically extract messages from your project`).option(`-w, --watch`,`Watch files and rebuild`).option(`--cwd <cwd>`,`Current working directory`,{default:t}).action(mo)}async function mo(e){j.heading(`extract`,`Statically extract messages from your project`);let t=j.time.success(),n=await(0,u.loadConfig)(e),r=u.runtime.fs.glob({...n,cwd:e.cwd}),i=u.runtime.path.resolve(e.cwd,n.outDir),a=u.runtime.path.resolve(i,n.projectLocale),o=u.runtime.path.resolve(i,`.terai`,`locale-manifest.json`);j.info(`Scan:`,`Processing files...`);async function s(t=r){let i=await(0,ee.extract)({...n,filesPaths:t,cwd:e.cwd}),s=(0,w.convertExtractedMessagesToDictionary)(i),c={messages:i},l=(0,w.groupDictionaryByChunks)(s,c,n.projectLocale);return u.runtime.fs.remove(u.runtime.path.resolve(a)),await fo({...n,dictionaries:l,locale:n.projectLocale,cwd:e.cwd}),u.runtime.fs.write(o,(0,w.stringify)(c)),Object.keys(s).length}j.info(`Extraction:`,`Extracting messages...`);try{t(`Extracted ${await s()} messages`)}catch(t){if(j.error(`extract`,t instanceof Error?t.message:String(t)),process.exitCode=1,!e.watch)return}e.watch&&(j.log(``),j.info(`Watch:`,`Watching files for changes...
@@ -82,7 +82,7 @@ let n=t.platform===`win32`?`\r
82
82
  Try running with %s or get access `,U.cyan(`sudo`))+`
83
83
  to the local update config store via
84
84
  `+U.cyan(p(` sudo chown -R $USER:$(id -gn $USER) %s `,st));o.on(`exit`,()=>{console.error(mo(t,{textAlignment:`center`}))})}}check(){!this.config||this.config.get(`optOut`)||this.#r||(this.update=this.config.get(`update`),this.update&&(this.update.current=this.#t,this.config.delete(`update`)),!(Date.now()-this.config.get(`lastUpdateCheck`)<this.#n)&&u(o.execPath,[f.join(xo,`check.js`),JSON.stringify(this.#e)],{detached:!0,stdio:`ignore`}).unref())}async fetchInfo(){let{distTag:e}=this.#e,t=await ji(this._packageName,{version:e});return{latest:t,current:this.#t,type:(0,Dn.default)(this.#t,t)??e,name:this._packageName}}notify(e){let t=!this._shouldNotifyInNpmScript&&Ii;if(!o.stdout.isTTY||t||!this.update||!(0,On.default)(this.update.latest,this.update.current))return this;e={isGlobal:Yi,...e};let n=e.isGlobal?`npm i -g ${this._packageName}`:`npm i ${this._packageName}`,r=`Update available `+U.dim(`{currentVersion}`)+U.reset(` → `)+U.green(`{latestVersion}`)+`
85
- Run `+U.cyan(`{updateCommand}`)+` to update`,i=e.message||r;e.boxenOptions??={padding:1,margin:1,textAlignment:`center`,borderColor:`yellow`,borderStyle:`round`};let a=mo(bo(i,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:n}),e.boxenOptions);return e.defer===!1?console.error(a):o.on(`exit`,()=>{console.error(a)}),this}};function Co(e){let t=new So(e);return t.check(),t}var wo={name:`@terai/dev`,version:`0.0.0-dev-20261017191430`,description:`The user-facing package for Terai`,engines:{node:`>=22.13.0`},main:`./dist/index.cjs`,module:`./dist/index.mjs`,types:`./dist/index.d.mts`,repository:{type:`git`,url:`git+https://github.com/terai-labs/terai.git`,directory:`packages/dev`},private:!1,author:`Hugo Corta <corta.hugo@gmail.com>`,bin:{terai:`bin.js`},scripts:{dev:`tsdown --format=esm --no-dts --watch`,build:`tsdown`},files:[`bin.js`,`dist`],sideEffects:!1,publishConfig:{access:`public`},exports:{".":{import:{types:`./dist/index.d.mts`,default:`./dist/index.mjs`},require:{types:`./dist/index.d.cts`,default:`./dist/index.cjs`}}},dependencies:{"@inquirer/prompts":`^8.7.3`,"@terai/extractor":`workspace:*`,"@terai/runtime":`workspace:*`,"@terai/translator":`workspace:*`,"@terai/types":`workspace:*`,"@terai/utils":`workspace:*`,cac:`^7.1.0`,dotenv:`^18.0.8`,inquirer:`^14.2.3`,kleur:`^4.1.5`,"perfect-debounce":`^2.1.0`,"preferred-pm":`^5.0.1`},devDependencies:{"@terai/generator":`workspace:*`,"@terai/logger":`workspace:*`,"@types/update-notifier":`^6.0.8`,"update-notifier":`^7.3.1`}},To=(/* @__PURE__ */ T(((e,t)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.outdent=void 0;function n(){}function r(){return typeof WeakMap<`u`?/* @__PURE__ */ new WeakMap:i()}function i(){return{add:n,delete:n,get:n,set:n,has:function(e){return!1}}}var a=Object.prototype.hasOwnProperty,o=function(e,t){return a.call(e,t)};function s(e,t){for(var n in t)o(t,n)&&(e[n]=t[n]);return e}var c=/^[ \t]*(?:\r\n|\r|\n)/,l=/(?:\r\n|\r|\n)[ \t]*$/,u=/^(?:[\r\n]|$)/,d=/(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/,f=/^[ \t]*[\r\n][ \t\r\n]*$/;function p(e,t,n){var r=0,i=e[0].match(d);i&&(r=i[1].length);var a=`(\\r\\n|\\r|\\n).{0,`+r+`}`,o=new RegExp(a,`g`);t&&(e=e.slice(1));var s=n.newline,u=n.trimLeadingNewline,f=n.trimTrailingNewline,p=typeof s==`string`,m=e.length;return e.map(function(e,t){return e=e.replace(o,`$1`),t===0&&u&&(e=e.replace(c,``)),t===m-1&&f&&(e=e.replace(l,``)),p&&(e=e.replace(/\r\n|\n|\r/g,function(e){return s})),e})}function m(e,t){for(var n=``,r=0,i=e.length;r<i;r++)n+=e[r],r<i-1&&(n+=t[r]);return n}function h(e){return o(e,`raw`)&&o(e,`length`)}function g(e){var t=r(),n=r();function i(r){var a=[...arguments].slice(1);if(h(r)){var o=r,c=(a[0]===i||a[0]===_)&&f.test(o[0])&&u.test(o[1]),l=c?n:t,d=l.get(o);return d||(d=p(o,c,e),l.set(o,d)),a.length===0?d[0]:m(d,c?a.slice(1):a)}return g(s(s({},e),r||{}))}return s(i,{string:function(t){return p([t],!1,e)[0]}})}var _=g({trimLeadingNewline:!0,trimTrailingNewline:!0});if(e.outdent=_,e.default=_,t!==void 0)try{t.exports=_,Object.defineProperty(_,"__esModule",{value:!0}),_.default=_,_.outdent=_}catch{}})))();function Eo(e,t){return e.command(`init`,`Initialize config file`).option(`-f, --force`,`Force overwrite existing config files`).option(`--cwd <cwd>`,`Current working directory`,{default:t}).action(Do)}async function Do({cwd:e,force:t}){N.heading(`init`,`Initialize config file`);let r=n({cwd:e}),i=(await y(e))?.name??`npm`,o=i===`npm`?`npm run`:i;if(r&&!t)return N.log(To.outdent`
85
+ Run `+U.cyan(`{updateCommand}`)+` to update`,i=e.message||r;e.boxenOptions??={padding:1,margin:1,textAlignment:`center`,borderColor:`yellow`,borderStyle:`round`};let a=mo(bo(i,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:n}),e.boxenOptions);return e.defer===!1?console.error(a):o.on(`exit`,()=>{console.error(a)}),this}};function Co(e){let t=new So(e);return t.check(),t}var wo={name:`@terai/dev`,version:`0.0.0-dev-20261017203019`,description:`The user-facing package for Terai`,engines:{node:`>=22.13.0`},main:`./dist/index.cjs`,module:`./dist/index.mjs`,types:`./dist/index.d.mts`,repository:{type:`git`,url:`git+https://github.com/terai-labs/terai.git`,directory:`packages/dev`},private:!1,author:`Hugo Corta <corta.hugo@gmail.com>`,bin:{terai:`bin.js`},scripts:{dev:`tsdown --format=esm --no-dts --watch`,build:`tsdown`},files:[`bin.js`,`dist`],sideEffects:!1,publishConfig:{access:`public`},exports:{".":{import:{types:`./dist/index.d.mts`,default:`./dist/index.mjs`},require:{types:`./dist/index.d.cts`,default:`./dist/index.cjs`}}},dependencies:{"@inquirer/prompts":`^8.7.3`,"@terai/extractor":`workspace:*`,"@terai/runtime":`workspace:*`,"@terai/translator":`workspace:*`,"@terai/types":`workspace:*`,"@terai/utils":`workspace:*`,cac:`^7.1.0`,dotenv:`^18.0.8`,inquirer:`^14.2.3`,kleur:`^4.1.5`,"perfect-debounce":`^2.1.0`,"preferred-pm":`^5.0.1`},devDependencies:{"@terai/generator":`workspace:*`,"@terai/logger":`workspace:*`,"@types/update-notifier":`^6.0.8`,"update-notifier":`^7.3.1`}},To=(/* @__PURE__ */ T(((e,t)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.outdent=void 0;function n(){}function r(){return typeof WeakMap<`u`?/* @__PURE__ */ new WeakMap:i()}function i(){return{add:n,delete:n,get:n,set:n,has:function(e){return!1}}}var a=Object.prototype.hasOwnProperty,o=function(e,t){return a.call(e,t)};function s(e,t){for(var n in t)o(t,n)&&(e[n]=t[n]);return e}var c=/^[ \t]*(?:\r\n|\r|\n)/,l=/(?:\r\n|\r|\n)[ \t]*$/,u=/^(?:[\r\n]|$)/,d=/(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/,f=/^[ \t]*[\r\n][ \t\r\n]*$/;function p(e,t,n){var r=0,i=e[0].match(d);i&&(r=i[1].length);var a=`(\\r\\n|\\r|\\n).{0,`+r+`}`,o=new RegExp(a,`g`);t&&(e=e.slice(1));var s=n.newline,u=n.trimLeadingNewline,f=n.trimTrailingNewline,p=typeof s==`string`,m=e.length;return e.map(function(e,t){return e=e.replace(o,`$1`),t===0&&u&&(e=e.replace(c,``)),t===m-1&&f&&(e=e.replace(l,``)),p&&(e=e.replace(/\r\n|\n|\r/g,function(e){return s})),e})}function m(e,t){for(var n=``,r=0,i=e.length;r<i;r++)n+=e[r],r<i-1&&(n+=t[r]);return n}function h(e){return o(e,`raw`)&&o(e,`length`)}function g(e){var t=r(),n=r();function i(r){var a=[...arguments].slice(1);if(h(r)){var o=r,c=(a[0]===i||a[0]===_)&&f.test(o[0])&&u.test(o[1]),l=c?n:t,d=l.get(o);return d||(d=p(o,c,e),l.set(o,d)),a.length===0?d[0]:m(d,c?a.slice(1):a)}return g(s(s({},e),r||{}))}return s(i,{string:function(t){return p([t],!1,e)[0]}})}var _=g({trimLeadingNewline:!0,trimTrailingNewline:!0});if(e.outdent=_,e.default=_,t!==void 0)try{t.exports=_,Object.defineProperty(_,"__esModule",{value:!0}),_.default=_,_.outdent=_}catch{}})))();function Eo(e,t){return e.command(`init`,`Initialize config file`).option(`-f, --force`,`Force overwrite existing config files`).option(`--cwd <cwd>`,`Current working directory`,{default:t}).action(Do)}async function Do({cwd:e,force:t}){N.heading(`init`,`Initialize config file`);let r=n({cwd:e}),i=(await y(e))?.name??`npm`,o=i===`npm`?`npm run`:i;if(r&&!t)return N.log(To.outdent`
86
86
  It looks like you already have a config file created.
87
87
  You can now run ${N.colors.cyan(`'${o} terai extract --watch'`)}
88
88
  `);let s=await v({message:`What locale do you use in your project messages?`,default:`en-US`,validate:e=>e.trim().length!==0||`Please provide a valid locale`}),c=await v({message:`What locales do you want to support? (comma separated)`,default:`fr-FR,es-ES,de-DE`,validate:e=>e.trim().length!==0||`Please provide at least one locale`,transformer:e=>e.split(`,`).map(e=>e.trim()).join(`,`)}),l=await v({message:`Where do you want to place your generated files?`,default:`./locale`}),u=N.time.success();await a({cwd:e,projectLocale:s,outDir:l,outLocales:c.split(`,`)}),u(`Config file created`),N.log(`🚀 You are set up to start using Terai! Thanks for choosing it.`)}async function Oo({dictionaries:e,locale:t,cwd:n,outDir:r}){let a=i.path.resolve(n,r,t),o=[];for(let t in e){let n=i.path.resolve(a,`${t}.json`),r=e[t],s=te(r);i.fs.write(n,s),o.push(s)}return o}function ko(e,t){return e.command(`extract`,`Statically extract messages from your project`).option(`-w, --watch`,`Watch files and rebuild`).option(`--cwd <cwd>`,`Current working directory`,{default:t}).action(Ao)}async function Ao(e){N.heading(`extract`,`Statically extract messages from your project`);let t=N.time.success(),n=await r(e),a=i.fs.glob({...n,cwd:e.cwd}),o=i.path.resolve(e.cwd,n.outDir),s=i.path.resolve(o,n.projectLocale),c=i.path.resolve(o,`.terai`,`locale-manifest.json`);N.info(`Scan:`,`Processing files...`);async function l(t=a){let r=await x({...n,filesPaths:t,cwd:e.cwd}),o=S(r),l={messages:r},u=C(o,l,n.projectLocale);return i.fs.remove(i.path.resolve(s)),await Oo({...n,dictionaries:u,locale:n.projectLocale,cwd:e.cwd}),i.fs.write(c,te(l)),Object.keys(o).length}N.info(`Extraction:`,`Extracting messages...`);try{t(`Extracted ${await l()} messages`)}catch(t){if(N.error(`extract`,t instanceof Error?t.message:String(t)),process.exitCode=1,!e.watch)return}e.watch&&(N.log(``),N.info(`Watch:`,`Watching files for changes...
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terai/dev",
3
- "version": "0.0.0-dev-20261017191430",
3
+ "version": "0.0.0-dev-20261017203019",
4
4
  "description": "The user-facing package for Terai",
5
5
  "engines": {
6
6
  "node": ">=22.13.0"
@@ -46,17 +46,17 @@
46
46
  "kleur": "^4.1.5",
47
47
  "perfect-debounce": "^2.1.0",
48
48
  "preferred-pm": "^5.0.1",
49
- "@terai/extractor": "0.0.0-dev-20261017191430",
50
- "@terai/runtime": "0.0.0-dev-20261017191430",
51
- "@terai/translator": "0.0.0-dev-20261017191430",
52
- "@terai/types": "0.0.0-dev-20261017191430",
53
- "@terai/utils": "0.0.0-dev-20261017191430"
49
+ "@terai/extractor": "0.0.0-dev-20261017203019",
50
+ "@terai/translator": "0.0.0-dev-20261017203019",
51
+ "@terai/types": "0.0.0-dev-20261017203019",
52
+ "@terai/runtime": "0.0.0-dev-20261017203019",
53
+ "@terai/utils": "0.0.0-dev-20261017203019"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/update-notifier": "^6.0.8",
57
57
  "update-notifier": "^7.3.1",
58
- "@terai/generator": "0.0.0-dev-20261017191430",
59
- "@terai/logger": "0.0.0-dev-20261017191430"
58
+ "@terai/generator": "0.0.0-dev-20261017203019",
59
+ "@terai/logger": "0.0.0-dev-20261017203019"
60
60
  },
61
61
  "scripts": {
62
62
  "dev": "tsdown --format=esm --no-dts --watch",