@mahameru/cli 0.0.22 → 0.0.23

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/cli.js +57 -54
  2. package/package.json +1 -1
package/cli.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * ┌────────────────────────────────────────────┐
4
4
  * │ │
5
5
  * │ ▲ MahameruJS - CLI │
6
- * │ Version: 0.0.22
6
+ * │ Version: 0.0.23
7
7
  * │ Built: 2026 │
8
8
  * │ │
9
9
  * │ Copyright (c) Bintan <hello@bintvn.co> │
@@ -158,82 +158,85 @@ return new Promise((n,s)=>{const a=(0,r.spawn)(process.execPath,[e,...t],{stdio:
158
158
  var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}}
159
159
  ;Object.defineProperty(t,"__esModule",{value:!0
160
160
  }),t.startWatchedDevServer=async function({environment:e,host:t,port:o,version:r}){
161
- let $,M=null,_=!1,j=null,x=!1,E=!0,T=!1,A=0;const b=new Set,D=new Set;await(0,s.mkdir)(f,{recursive:!0});const O=(0,
162
- i.default)({text:`${c.default.cyan("[Mahameru]")} Starting TypeScript watch...`,spinner:"triangle"}).start(),R={dev:!0,
163
- host:t,port:o,rootPath:p}
164
- ;$=new d.App(R),M=await async function({environment:e,spinner:t,onBuildStart:o,onBuildSuccess:r,onBuildFailure:i}){
165
- const l=(0,
166
- a.resolve)((0,a.join)(p,"node_modules","typescript")),{createWatchCompilerHost:d,createWatchProgram:y,formatDiagnosticsWithColorAndContext:P,formatDiagnostic:$,sys:M,createEmitAndSemanticDiagnosticsBuilderProgram:_}=u(l),j={
167
- getCanonicalFileName:e=>e,getCurrentDirectory:()=>p,getNewLine:()=>M.newLine};let x=!1,E=!1,T=0
168
- ;const A=new Map,b=new Map;let D,O,R=Promise.resolve();const k=new Promise((e,t)=>{D=e,O=t}),C=d(g,{rootDir:h,outDir:f
169
- },M,_,e=>{E=!0;const t=e.file?P([e],j):$(e,j);process.stderr.write(t.endsWith("\n")?t:`${t}\n`)},e=>{
161
+ let u,_=null,j=!1,x=null,E=!1,T=!0,A=!1,b=0;const D=new Set,O=new Set;await(0,p.generateRouteTypes)((0,
162
+ a.join)(m,"src","routes"),(0,a.join)(h,"types","routes.d.ts")),await(0,p.generateDataSourceTypes)((0,
163
+ a.join)(m,"src","databases"),(0,a.join)(h,"types","dataSources.d.ts")),await(0,p.generateTypesBarrel)((0,
164
+ a.join)(h,"types","index.d.ts")),await(0,p.generateMahameruDts)((0,a.join)(m,"mahameru.d.ts")),await(0,s.mkdir)(h,{
165
+ recursive:!0});const R=(0,i.default)({text:`${c.default.cyan("[Mahameru]")} Starting TypeScript watch...`,
166
+ spinner:"triangle"}).start(),k={dev:!0,host:t,port:o,rootPath:m};u=new d.App(k),
167
+ _=await async function({environment:e,spinner:t,onBuildStart:o,onBuildSuccess:r,onBuildFailure:i}){const l=(0,
168
+ a.resolve)((0,
169
+ a.join)(m,"node_modules","typescript")),{createWatchCompilerHost:d,createWatchProgram:u,formatDiagnosticsWithColorAndContext:p,formatDiagnostic:P,sys:S,createEmitAndSemanticDiagnosticsBuilderProgram:_}=f(l),j={
170
+ getCanonicalFileName:e=>e,getCurrentDirectory:()=>m,getNewLine:()=>S.newLine};let x=!1,E=!1,T=0
171
+ ;const A=new Map,b=new Map;let D,O,R=Promise.resolve();const k=new Promise((e,t)=>{D=e,O=t}),C=d(v,{rootDir:y,outDir:h
172
+ },S,_,e=>{E=!0;const t=e.file?p([e],j):P(e,j);process.stderr.write(t.endsWith("\n")?t:`${t}\n`)},e=>{
170
173
  const t=e.messageText.toString().trim();(function(e){
171
174
  return e.includes("Starting compilation in watch mode...")||e.includes("File change detected. Starting incremental compilation...")
172
175
  })(t)&&(T+=1,A.set(T,Date.now()),b.set(T,{emittedRuntimeFiles:new Set,changedRuntimeSourceFiles:new Set}),E=!1,o()),
173
176
  function(e){
174
177
  return["Starting compilation in watch mode...","File change detected. Starting incremental compilation...","Found 0 errors. Watching for file changes.","Watching for file changes."].some(t=>e.includes(t))
175
- }(t)||console.log(`${c.default.yellow("[Mahameru TSC]")} ${t}`)}),N=w((0,a.resolve)((0,a.join)(f,"types"))),F=e=>{
176
- const t=w((0,a.resolve)(e));return t===N||t.startsWith(`${N}/`)},I=C.watchFile?.bind(C)
178
+ }(t)||console.log(`${c.default.yellow("[Mahameru TSC]")} ${t}`)}),N=$((0,a.resolve)((0,a.join)(h,"types"))),F=e=>{
179
+ const t=$((0,a.resolve)(e));return t===N||t.startsWith(`${N}/`)},I=C.watchFile?.bind(C)
177
180
  ;I&&(C.watchFile=(e,t,o,r)=>F(e)?{close(){}}:I(e,t,o,r));const H=C.watchDirectory?.bind(C)
178
- ;H&&(C.watchDirectory=(e,t,o,r)=>F(e)?{close(){}}:H(e,t,o,r));const W=C,J=W.writeFile?.bind(W)??M.writeFile.bind(M)
181
+ ;H&&(C.watchDirectory=(e,t,o,r)=>F(e)?{close(){}}:H(e,t,o,r));const W=C,J=W.writeFile?.bind(W)??S.writeFile.bind(S)
179
182
  ;W.writeFile=(e,t,o,r,n,s)=>{J?.(e,t,o,r,n,s),q(e,n)};const U=C.afterProgramCreate;C.afterProgramCreate=e=>{U?.(e)
180
183
  ;const t=0===T?1:T;T=t,R=R.then(()=>B(e,t)).catch(e=>{
181
- console.error(c.default.red("[Mahameru Dev] Build lifecycle failed.")),console.error(e)})};const L=y(C)
184
+ console.error(c.default.red("[Mahameru Dev] Build lifecycle failed.")),console.error(e)})};const L=u(C)
182
185
  ;async function B(e,o){const l=A.get(o)??Date.now(),d=b.get(o)??{emittedRuntimeFiles:new Set,
183
186
  changedRuntimeSourceFiles:new Set}
184
187
  ;if(E)return x||(x=!0,t.fail(`${c.default.red("[Mahameru]")} Initial TypeScript build failed.`),
185
188
  O(new Error("Initial TypeScript build failed."))),b.delete(o),A.delete(o),void i();try{if(x)await async function(e){
186
- if(0===e.length)return;const t=await async function(){if(!v){const e=(0,a.resolve)((0,
187
- a.join)(__dirname,"node_modules","tsc-alias")),{prepareSingleFileReplaceTscAliasPaths:t}=u(e);v=t({configFile:g,outDir:f
188
- })}return v}();for(const o of e){if(!(0,n.existsSync)(o))continue;const e=await(0,s.readFile)(o,"utf8"),r=t({
189
+ if(0===e.length)return;const t=await async function(){if(!w){const e=(0,a.resolve)((0,
190
+ a.join)(__dirname,"node_modules","tsc-alias")),{prepareSingleFileReplaceTscAliasPaths:t}=f(e);w=t({configFile:v,outDir:h
191
+ })}return w}();for(const o of e){if(!(0,n.existsSync)(o))continue;const e=await(0,s.readFile)(o,"utf8"),r=t({
189
192
  fileContents:e,filePath:o});r!==e&&await(0,s.writeFile)(o,r)}}([...d.emittedRuntimeFiles]);else{
190
- await async function(e=3e4){const t=Date.now();for(;Date.now()-t<e;){if((0,n.existsSync)(m))return void await S(200)
191
- ;await S(100)}throw new Error("Timed out waiting for emitted dev runtime artifacts.")}();const e=(0,a.resolve)((0,
192
- a.join)(__dirname,"node_modules","tsc-alias")),{replaceTscAliasPaths:t}=u(e);await t({configFile:g,outDir:f})}}catch(e){
193
+ await async function(e=3e4){const t=Date.now();for(;Date.now()-t<e;){if((0,n.existsSync)(g))return void await M(200)
194
+ ;await M(100)}throw new Error("Timed out waiting for emitted dev runtime artifacts.")}();const e=(0,a.resolve)((0,
195
+ a.join)(__dirname,"node_modules","tsc-alias")),{replaceTscAliasPaths:t}=f(e);await t({configFile:v,outDir:h})}}catch(e){
193
196
  return console.error(c.default.red("[Mahameru Alias] Alias rewrite failed.")),console.error(e),x||(x=!0,
194
197
  t.fail(`${c.default.red("[Mahameru]")} Initial alias rewrite failed.`),O(e instanceof Error?e:new Error(String(e)))),
195
- b.delete(o),A.delete(o),void i()}const p=Date.now()-l;try{await r({durationMs:p,
198
+ b.delete(o),A.delete(o),void i()}const u=Date.now()-l;try{await r({durationMs:u,
196
199
  emittedRuntimeFiles:[...d.emittedRuntimeFiles],changedRuntimeSourceFiles:[...d.changedRuntimeSourceFiles],
197
200
  initialBuild:!x})}catch(e){return console.error(c.default.red("[Mahameru Alias] Alias rewrite failed.")),
198
201
  console.error(e),void i()}finally{b.delete(o),A.delete(o)}x||(x=!0,D())}function q(e,t){const o=(0,
199
- a.resolve)(e),r=w(o),n=b.get(T);if(n&&function(e){const t=`${w((0,a.resolve)(m))}/`
202
+ a.resolve)(e),r=$(o),n=b.get(T);if(n&&function(e){const t=`${$((0,a.resolve)(g))}/`
200
203
  ;return e.startsWith(t)&&e.endsWith(".js")&&!e.endsWith(".d.ts")&&!e.endsWith(".map")}(r)){n.emittedRuntimeFiles.add(o)
201
- ;for(const e of function(e){if(!e)return[];const t=`${w((0,a.resolve)(h))}/`;return e.map(e=>(0,
202
- a.resolve)(e.fileName)).filter(e=>{const o=w(e);return o.startsWith(t)&&o.endsWith(".ts")&&!o.endsWith(".d.ts")})
203
- }(t))n.changedRuntimeSourceFiles.add(e)}}try{return await k,L}catch(e){throw L.close(),e}}({environment:e,spinner:O,
204
- onBuildStart:()=>{E=!0},
205
- onBuildSuccess:({durationMs:e,emittedRuntimeFiles:t,changedRuntimeSourceFiles:o,initialBuild:r})=>{if(A=e,E=!1,!r){
206
- for(const e of t)b.add(e);for(const e of o)D.add(e)}E||!$?.initialized||_||(x||T||0!==b.size)&&F()},onBuildFailure:()=>{
207
- E=!1,A=0,T=!1,b.clear(),D.clear(),j&&(clearTimeout(j),j=null)}
208
- }),O.succeed(`${c.default.green("[Mahameru]")} Initial build completed.\n`),await $.start()
209
- ;const k=new l.Watchman([f,y]),C=new l.Watchman(h);let N=Promise.resolve();const F=()=>{j&&clearTimeout(j),
210
- j=setTimeout(()=>{N=N.then(async()=>{if(_||!$)return;if(E)return void F();const e=[...b],t=[...D],o=T,r=x;if(x=!1,T=!1,
211
- b.clear(),
212
- D.clear(),j=null,r)return console.log(c.default.yellow("\n [Mahameru] Config file changed. Reloading server...\n")),
213
- await $.stop(),$=new d.App(R),console.clear(),void await $.start();if(0===e.length&&!o)return
214
- ;const n=e[e.length-1],s=t[t.length-1]??(n?P(n):(0,a.resolve)(h)),i=Date.now();o?await $.devHRM():await $.devHRM(n)
215
- ;const l=Date.now()-i,u=A+l;console.log(`${c.default.green("[Mahameru Dev]")} Rebuilt ${(0,
216
- a.relative)(p,s).replace(/\\/g,"/")} build: ${A}ms runtime: ${l}ms total: ${u}ms`)}).catch(e=>{
204
+ ;for(const e of function(e){if(!e)return[];const t=`${$((0,a.resolve)(y))}/`;return e.map(e=>(0,
205
+ a.resolve)(e.fileName)).filter(e=>{const o=$(e);return o.startsWith(t)&&o.endsWith(".ts")&&!o.endsWith(".d.ts")})
206
+ }(t))n.changedRuntimeSourceFiles.add(e)}}try{return await k,L}catch(e){throw L.close(),e}}({environment:e,spinner:R,
207
+ onBuildStart:()=>{T=!0},
208
+ onBuildSuccess:({durationMs:e,emittedRuntimeFiles:t,changedRuntimeSourceFiles:o,initialBuild:r})=>{if(b=e,T=!1,!r){
209
+ for(const e of t)D.add(e);for(const e of o)O.add(e)}T||!u?.initialized||j||(E||A||0!==D.size)&&I()},onBuildFailure:()=>{
210
+ T=!1,b=0,A=!1,D.clear(),O.clear(),x&&(clearTimeout(x),x=null)}
211
+ }),R.succeed(`${c.default.green("[Mahameru]")} Initial build completed.\n`),await u.start()
212
+ ;const C=new l.Watchman([h,P]),N=new l.Watchman(y);let F=Promise.resolve();const I=()=>{x&&clearTimeout(x),
213
+ x=setTimeout(()=>{F=F.then(async()=>{if(j||!u)return;if(T)return void I();const e=[...D],t=[...O],o=A,r=E;if(E=!1,A=!1,
214
+ D.clear(),
215
+ O.clear(),x=null,r)return console.log(c.default.yellow("\n [Mahameru] Config file changed. Reloading server...\n")),
216
+ await u.stop(),u=new d.App(k),console.clear(),void await u.start();if(0===e.length&&!o)return
217
+ ;const n=e[e.length-1],s=t[t.length-1]??(n?S(n):(0,a.resolve)(y)),i=Date.now();o?await u.devHRM():await u.devHRM(n)
218
+ ;const l=Date.now()-i,p=b+l;console.log(`${c.default.green("[Mahameru Dev]")} Rebuilt ${(0,
219
+ a.relative)(m,s).replace(/\\/g,"/")} build: ${b}ms runtime: ${l}ms total: ${p}ms`)}).catch(e=>{
217
220
  console.error(c.default.red("[Mahameru Dev] Hot reload failed.")),console.error(e)})},250)}
218
- ;k.on("all",({event:e,filePath:t})=>{const o=function(e){const t=(0,a.resolve)(e),o=w(t),r=w((0,a.resolve)(f)),n=w((0,
219
- a.resolve)(m)),s=w((0,a.resolve)(y));if(!o.startsWith(`${r}/`)&&o!==s)return null
221
+ ;C.on("all",({event:e,filePath:t})=>{const o=function(e){const t=(0,a.resolve)(e),o=$(t),r=$((0,a.resolve)(h)),n=$((0,
222
+ a.resolve)(g)),s=$((0,a.resolve)(P));if(!o.startsWith(`${r}/`)&&o!==s)return null
220
223
  ;if(o.endsWith(".d.ts")||o.endsWith(".map")||o.endsWith(".tsbuildinfo"))return null;if(o===s)return"config"
221
224
  ;if(!o.endsWith(".js"))return null;if(o.startsWith(`${n}/`))return"runtime";return null}(t)
222
- ;o&&("runtime"===o&&"delete"!==e&&"rename"!==e||((e,t)=>{"config"===e?x=!0:(b.add(t),D.add(P(t))),E||F()})(o,t))}),
223
- C.on("all",async({event:e,filePath:t,oldFilePath:o})=>{if("delete"!==e&&"rename"!==e)return;const r="rename"===e&&o?o:t
224
- ;(function(e){const t=`${w((0,a.resolve)(h))}/`;return w((0,a.resolve)(e)).startsWith(t)})(r)&&(await async function(e){
225
- const t=(0,a.resolve)(e),o=(0,a.relative)(h,t);if(o.startsWith(".."))return;if(/\.[^\\/]+$/.test(o)){
226
- const e=function(e){const t=(0,a.relative)(h,e);return(0,a.resolve)(m,t.replace(/\.ts$/i,".js"))}(t)
225
+ ;o&&("runtime"===o&&"delete"!==e&&"rename"!==e||((e,t)=>{"config"===e?E=!0:(D.add(t),O.add(S(t))),T||I()})(o,t))}),
226
+ N.on("all",async({event:e,filePath:t,oldFilePath:o})=>{if("delete"!==e&&"rename"!==e)return;const r="rename"===e&&o?o:t
227
+ ;(function(e){const t=`${$((0,a.resolve)(y))}/`;return $((0,a.resolve)(e)).startsWith(t)})(r)&&(await async function(e){
228
+ const t=(0,a.resolve)(e),o=(0,a.relative)(y,t);if(o.startsWith(".."))return;if(/\.[^\\/]+$/.test(o)){
229
+ const e=function(e){const t=(0,a.relative)(y,e);return(0,a.resolve)(g,t.replace(/\.ts$/i,".js"))}(t)
227
230
  ;return void await Promise.all([(0,s.rm)(e,{force:!0}).catch(()=>{}),(0,s.rm)(`${e}.map`,{force:!0}).catch(()=>{}),(0,
228
231
  s.rm)(e.replace(/\.js$/i,".d.ts"),{force:!0}).catch(()=>{}),(0,s.rm)(e.replace(/\.js$/i,".d.ts.map"),{force:!0
229
- }).catch(()=>{})])}await(0,s.rm)((0,a.resolve)(m,o),{recursive:!0,force:!0}).catch(()=>{})}(r),T=!0,D.add((0,
230
- a.resolve)(r)),E||F())}),await k.start(),await C.start();const I=async(e=0)=>{_||(_=!0,j&&(clearTimeout(j),j=null),
231
- k.stop(),C.stop(),await $.stop(),M?.close(),process.exit(e))};process.once("SIGINT",()=>{I(0)}),
232
- process.once("SIGTERM",()=>{I(0)}),await new Promise(()=>{})}
233
- ;const n=o(3024),s=o(1455),a=o(6760),i=r(o(8720)),c=r(o(5205)),l=o(6469),d=o(1205),u=(0,
234
- o(8995).createRequire)(__filename),p=process.cwd(),f=(0,a.join)(p,".mahameru"),m=f,h=(0,a.join)(p,"src"),g=(0,
235
- a.join)(p,"tsconfig.json"),y=(0,a.join)(p,"mahameru.config.ts");let v=null;function P(e){const t=(0,a.relative)(m,e)
236
- ;return(0,a.resolve)(h,t.replace(/\.js$/i,".ts"))}function w(e){return e.replace(/\\/g,"/")}function S(e){
232
+ }).catch(()=>{})])}await(0,s.rm)((0,a.resolve)(g,o),{recursive:!0,force:!0}).catch(()=>{})}(r),A=!0,O.add((0,
233
+ a.resolve)(r)),T||I())}),await C.start(),await N.start();const H=async(e=0)=>{j||(j=!0,x&&(clearTimeout(x),x=null),
234
+ C.stop(),N.stop(),await u.stop(),_?.close(),process.exit(e))};process.once("SIGINT",()=>{H(0)}),
235
+ process.once("SIGTERM",()=>{H(0)}),await new Promise(()=>{})}
236
+ ;const n=o(3024),s=o(1455),a=o(6760),i=r(o(8720)),c=r(o(5205)),l=o(6469),d=o(1205),u=o(8995),p=o(1855),f=(0,
237
+ u.createRequire)(__filename),m=process.cwd(),h=(0,a.join)(m,".mahameru"),g=h,y=(0,a.join)(m,"src"),v=(0,
238
+ a.join)(m,"tsconfig.json"),P=(0,a.join)(m,"mahameru.config.ts");let w=null;function S(e){const t=(0,a.relative)(g,e)
239
+ ;return(0,a.resolve)(y,t.replace(/\.js$/i,".ts"))}function $(e){return e.replace(/\\/g,"/")}function M(e){
237
240
  return new Promise(t=>{setTimeout(t,e)})}},5775(e,t,o){t.deleteDirIfExists=async function(e){return await(0,r.rm)(e,{
238
241
  recursive:!0,force:!0})},t.parsePort=function(e){const t=parseInt(e,10);return isNaN(t)?void 0:t}
239
242
  ;const r=o(1455),n=o(8161)},6469(e,t,o){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{
@@ -656,6 +659,6 @@ e.exports=require("ora")},5205(e){e.exports=require("picocolors")},6471(e){e.exp
656
659
  e.exports=require("node:cluster")},3024(e){e.exports=require("node:fs")},1455(e){e.exports=require("node:fs/promises")},
657
660
  7067(e){e.exports=require("node:http")},4708(e){e.exports=require("node:https")},8995(e){
658
661
  e.exports=require("node:module")},7030(e){e.exports=require("node:net")},8161(e){e.exports=require("node:os")},6760(e){
659
- e.exports=require("node:path")},6928(e){e.exports=require("path")},8330(e){e.exports={version:"0.0.22"}}};const t={}
662
+ e.exports=require("node:path")},6928(e){e.exports=require("path")},8330(e){e.exports={version:"0.0.23"}}};const t={}
660
663
  ;(function o(r){const n=t[r];if(void 0!==n)return n.exports;const s=t[r]={exports:{}}
661
664
  ;return e[r].call(s.exports,s,s.exports,o),s.exports})(8625)})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mahameru/cli",
3
- "version": "0.0.22",
3
+ "version": "0.0.23",
4
4
  "description": "MahameruJS CLI Utility - The command-line interface for running and building Mahameru-based applications",
5
5
  "bin": {
6
6
  "mahameru": "./cli.js"