@h3ravel/console 11.2.0 → 11.2.1

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/bin/fire.cjs CHANGED
@@ -1,2 +1,70 @@
1
1
  #!/usr/bin/env node
2
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require(`tsx/esm`);let c=require(`@h3ravel/core`);c=s(c);let l=require(`@h3ravel/console`);l=s(l);let u=require(`node:fs/promises`);u=s(u);let d=require(`node:path`);d=s(d);let f=require(`@h3ravel/http`);f=s(f);let p=require(`@h3ravel/router`);p=s(p);let m=require(`@h3ravel/database`);m=s(m);let h=require(`@h3ravel/cache`);h=s(h);let g=require(`@h3ravel/queue`);g=s(g);let _=require(`@h3ravel/mail`);_=s(_);let v=require(`@h3ravel/config`);v=s(v);var y=[f.HttpServiceProvider,v.ConfigServiceProvider,p.RouteServiceProvider,p.AssetsServiceProvider,m.DatabaseServiceProvider,h.CacheServiceProvider,g.QueueServiceProvider,_.MailServiceProvider],b=class{async fire(){let e=new c.Application(process.cwd()),t=app_path(`Providers/*.js`).replace(`/src/`,`/.h3ravel/serve/`);for await(let e of(0,u.glob)(t)){let t=d.default.basename(e).replace(`.js`,``);try{y.push((await import(e))[t])}catch{}}y.push(l.ConsoleServiceProvider),e.registerProviders(y),await e.registerConfiguredProviders(),await e.boot()}};new b().fire();
2
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require(`tsx/esm`);let c=require(`@h3ravel/core`);c=s(c);let l=require(`@h3ravel/shared`);l=s(l);let u=require(`fs/promises`);u=s(u);let d=require(`path`);d=s(d);let f=require(`fs`);f=s(f);let p=require(`node:fs/promises`);p=s(p);let m=require(`@h3ravel/support`);m=s(m);let h=require(`dayjs`);h=s(h);let g=require(`node:fs`);g=s(g);let _=require(`node:path`);_=s(_);let v=require(`@h3ravel/http`);v=s(v);let y=require(`@h3ravel/router`);y=s(y);let b=require(`@h3ravel/database`);b=s(b);let x=require(`@h3ravel/cache`);x=s(x);let S=require(`@h3ravel/queue`);S=s(S);let C=require(`@h3ravel/mail`);C=s(C);let w=require(`@h3ravel/config`);w=s(w);let T=require(`commander`);T=s(T);let E=require(`child_process`);E=s(E);let D=require(`tsdown`);D=s(D);var O=class extends c.ConsoleCommand{};const k=String.raw`
3
+ 111
4
+ 111111111
5
+ 1111111111 111111
6
+ 111111 111 111111
7
+ 111111 111 111111
8
+ 11111 111 11111
9
+ 1111111 111 1111111
10
+ 111 11111 111 111111 111 1111 1111 11111111 1111
11
+ 111 11111 1111 111111 111 1111 1111 1111 11111 1111
12
+ 111 11111 11111 111 1111 1111 111111111111 111111111111 1111 1111111 1111
13
+ 111 111111 1111 111 111111111111 111111 11111 1111 111 1111 11111111 1111 1111
14
+ 111 111 11111111 111 1101 1101 111111111 11111111 1111 1111111111111111101
15
+ 111 1111111111111111 1111 111 1111 1111 111 11111011 1111 111 1111111 1101 1111
16
+ 111 11111 1110111111111111 111 1111 1111 1111111101 1111 111111111 1111011 111111111 1111
17
+ 1111111 111110111110 111 1111 1111 111111 1111 11011101 10111 11111 1111
18
+ 11011 111111 11 11111
19
+ 111111 11101 111111
20
+ 111111 111 111111
21
+ 111111 111 111111
22
+ 111111111
23
+ 110
24
+ `,A=String.raw`
25
+ _ _ _____ _
26
+ | | | |___ / _ __ __ ___ _____| |
27
+ | |_| | |_ \| '__/ _ \ \ / / _ \ |
28
+ | _ |___) | | | (_| |\ V / __/ |
29
+ |_| |_|____/|_| \__,_| \_/ \___|_|
30
+
31
+ `;var j=class extends O{signature=`list`;description=`List all available commands`;async handle(){let e=[{short:`-h`,long:`--help`,description:`Display help for the given command. When no command is given display help for the list command`}].concat(this.program.options).map(e=>l.Logger.describe(l.Logger.log(` `+[e.short,e.long].filter(e=>!!e).join(`, `),`green`,!1),e.description,25,!1).join(``)),t=this.program.commands.map(e=>l.Logger.describe(l.Logger.log(` `+e.name(),`green`,!1),e.description(),25,!1).join(``)).reduce((e,t)=>{let n=t.replace(/\x1b\[\d+m/g,``),r=n.includes(`:`)?n.split(`:`)[0].trim():`__root__`;return e[r]??=[],e[r].push(t),e},{}),n=Object.entries(t).map(([e,t])=>{let n=e===`__root__`?``:e;return[l.Logger.log(n,`yellow`,!1),t.join(`
32
+ `)].join(`
33
+ `)});l.Logger.log([[`H3ravel Framework`,`white`],[this.kernel.modulePackage.version,`green`]],` `),console.log(``),console.log(A),console.log(``),l.Logger.log(`Usage:`,`yellow`),l.Logger.log(` command [options] [arguments]`,`white`),console.log(``),l.Logger.log(`Options:`,`yellow`),console.log(e.join(`
34
+ `).trim()),console.log(``),l.Logger.log(`Available Commands:`,`yellow`),console.log(n.join(`
35
+
36
+ `).trim())}};function M(e,t){let n=(0,d.resolve)(`.`,e),r;for((0,f.statSync)(n).isDirectory()||(n=(0,d.dirname)(n));;){if(r=t(n,(0,f.readdirSync)(n)),r)return(0,d.resolve)(n,r);if(n=(0,d.dirname)(r=n),r===n)break}}var N=class{static findModulePkg(e,t){let n=e.replace(/\\/g,`/`).split(`/`),r=``;n.length>0&&n[0][0]===`@`&&(r+=n.shift()+`/`),r+=n.shift();let i=d.default.join(t??process.cwd(),`node_modules`,r),a=this.findUpConfig(i,`package`,[`json`]);if(a)return d.default.join(d.default.dirname(a),n.join(`/`))}static async fileExists(e){try{return await(0,u.access)(e),!0}catch{return!1}}static findUpConfig(e,t,n){return M(e,(e,r)=>{for(let e of n){let n=`${t}.${e}`;if(r.includes(n))return n}return!1})}},P=class e{static CREATE_PATTERNS=[/^create_(\w+)_table$/,/^create_(\w+)$/];static CHANGE_PATTERNS=[/.+_(to|from|in)_(\w+)_table$/,/.+_(to|from|in)_(\w+)$/];static guess(t){for(let n of e.CREATE_PATTERNS){let e=t.match(n);if(e)return[e[1],!0]}for(let n of e.CHANGE_PATTERNS){let e=t.match(n);if(e)return[e[2],!1]}return[]}},F=class{static findModulePkg(e,t){let n=e.replace(/\\/g,`/`).split(`/`),r=``;n.length>0&&n[0][0]===`@`&&(r+=n.shift()+`/`),r+=n.shift();let i=d.default.join(t??process.cwd(),`node_modules`,r),a=this.findUpConfig(i,`package`,[`json`]);if(a)return d.default.join(d.default.dirname(a),n.join(`/`))}static async fileExists(e){try{return await(0,u.access)(e),!0}catch{return!1}}static findUpConfig(e,t,n){return M(e,(e,r)=>{for(let e of n){let n=`${t}.${e}`;if(r.includes(n))return n}return!1})}},I=class extends O{signature=`#make:
37
+ {controller : Create a new controller class.
38
+ | {--a|api : Exclude the create and edit methods from the controller}
39
+ | {--m|model= : Generate a resource controller for the given model}
40
+ | {--r|resource : Generate a resource controller class}
41
+ | {--force : Create the controller even if it already exists}
42
+ }
43
+ {resource : Create a new resource.
44
+ | {--c|collection : Create a resource collection}
45
+ | {--force : Create the resource even if it already exists}
46
+ }
47
+ {migration : Generates a new database migration class.
48
+ | {--l|type=ts : The file type to generate}
49
+ | {--t|table : The table to migrate}
50
+ | {--c|create : The table to be created}
51
+ }
52
+ {factory : Create a new model factory.}
53
+ {seeder : Create a new seeder class.}
54
+ {view : Create a new view.
55
+ | {--force : Create the view even if it already exists}
56
+ }
57
+ {model : Create a new Eloquent model class.
58
+ | {--api : Indicates if the generated controller should be an API resource controller}
59
+ | {--c|controller : Create a new controller for the model}
60
+ | {--f|factory : Create a new factory for the model}
61
+ | {--m|migration : Create a new migration file for the model}
62
+ | {--r|resource : Indicates if the generated controller should be a resource controller}
63
+ | {--a|all : Generate a migration, seeder, factory, policy, resource controller, and form request classes for the model}
64
+ | {--s|seed : Create a new seeder for the model}
65
+ | {--t|type=ts : The file type to generate}
66
+ | {--force : Create the model even if it already exists}
67
+ }
68
+ {^name : The name of the [name] to generate}
69
+ `;description=`Generate component classes`;async handle(){let e=this.dictionary.baseCommand??this.dictionary.name,t={controller:`makeController`,resource:`makeResource`,migration:`makeMigration`,factory:`makeFactory`,seeder:`makeSeeder`,model:`makeModel`,view:`makeView`};try{await this?.[t[e]]()}catch(e){l.Logger.error(e)}}async makeController(){let e=this.option(`api`)?`-resource`:``,t=this.argument(`name`),n=this.option(`force`),r=_.default.join(app_path(`Http/Controllers`),t+`.ts`),i=F.findModulePkg(`@h3ravel/http`,this.kernel.cwd)??``,a=_.default.join(i,`dist/stubs/controller${e}.stub`);!n&&(0,g.existsSync)(r)&&l.Logger.error(`ERORR: ${t} controller already exists`);let o=await(0,p.readFile)(a,`utf-8`);o=o.replace(/{{ name }}/g,t),await(0,p.writeFile)(r,o),l.Logger.split(`INFO: Controller Created`,l.Logger.log(_.default.basename(r),`gray`,!1))}makeResource(){l.Logger.success(`Resource support is not yet available`)}async makeMigration(){let e=this.argument(`name`),t=(0,h.default)().format(`YYYY_MM_DD_HHmmss`),n=_.default.join(database_path(`migrations`),`${t}_${e}.ts`),r=N.findModulePkg(`@h3ravel/database`,this.kernel.cwd)??``,i=this.option(`create`,!1),a=this.option(`table`);if(!a&&typeof i==`string`&&(a=i,i=!0),!a){let t=P.guess(e);a=t[0],i=!!t[1]}let o=_.default.join(r,this.getMigrationStubName(a,i)),s=await(0,p.readFile)(o,`utf-8`);a!==null&&(s=s.replace(/DummyTable|{{\s*table\s*}}/g,a)),l.Logger.info(`INFO: Creating Migration`),await this.kernel.ensureDirectoryExists(_.default.dirname(n)),await(0,p.writeFile)(n,s),l.Logger.split(`INFO: Migration Created`,l.Logger.log(_.default.basename(n),`gray`,!1))}makeFactory(){l.Logger.success(`Factory support is not yet available`)}makeSeeder(){l.Logger.success(`Seeder support is not yet available`)}async makeModel(){let e=this.option(`type`,`ts`),t=this.argument(`name`),n=this.argument(`force`),r=_.default.join(app_path(`Models`),t.toLowerCase(),`.`+e);!n&&(0,g.existsSync)(r)&&l.Logger.error(`ERORR: ${t} view already exists`);let i=N.findModulePkg(`@h3ravel/database`,this.kernel.cwd)??``,a=_.default.join(i,`dist/stubs/model-${e}.stub`),o=await(0,p.readFile)(a,`utf-8`);o=o.replace(/{{ name }}/g,t),await(0,p.writeFile)(r,o),l.Logger.split(`INFO: Model Created`,l.Logger.log(_.default.basename(r),`gray`,!1))}async makeView(){let e=this.argument(`name`),t=this.option(`force`),n=_.default.join(base_path(`src/resources/views`),e+`.edge`);e.includes(`/`)&&await(0,p.mkdir)((0,m.beforeLast)(n,`/`),{recursive:!0}),!t&&(0,g.existsSync)(n)&&l.Logger.error(`ERORR: ${e} view already exists`),await(0,p.writeFile)(n,`{{-- src/resources/views/${e}.edge --}}`),l.Logger.split(`INFO: View Created`,l.Logger.log(`src/resources/views/${e}.edge`,`gray`,!1))}getMigrationStubName(e,t=!1,n=`ts`){let r;return r=e?t?`migration.create-${n}.stub`:`migration.update-${n}.stub`:`migration-${n}.stub`,`dist/stubs/`+r}},L=[v.HttpServiceProvider,w.ConfigServiceProvider,y.RouteServiceProvider,y.AssetsServiceProvider,b.DatabaseServiceProvider,x.CacheServiceProvider,S.QueueServiceProvider,C.MailServiceProvider],R=class e{static parseOptions(t){let n=[],r=/\{([^{}]+(?:\{[^{}]*\}[^{}]*)*)\}/g,i;for(;(i=r.exec(t))!==null;){let t=i[1][0]===`^`||/:[#^]/.test(i[1]),r=([`#`,`^`].includes(i[1][0])||/:[#^]/.test(i[1]))&&!t,a=i[1].trim().replace(/[#^]/,``),o=a.indexOf(`:`);if(o===-1){n.push({name:a});continue}let s=a.substring(0,o).trim(),c=a.substring(o+1).trim(),l=c,u,d=c.indexOf(`|`);if(d!==-1){l=c.substring(0,d).trim();let t=c.substring(d+1).trim().replace(/^\{/,``).trim();u=e.parseOptions(`{`+t+`}`)}else l=l.trim();let f=s,p=/[^a-zA-Z0-9_|-]/.test(f),m=!1;f.endsWith(`?*`)?(p=!1,m=!0,f=f.slice(0,-2)):f.endsWith(`*`)?(m=!0,f=f.slice(0,-1)):f.endsWith(`?`)&&(p=!1,f=f.slice(0,-1));let h=f.startsWith(`--`),g,_;if(h){let e=f.split(`|`).map(e=>e.trim());g=[];for(let t of e){t.startsWith(`--`)&&t.slice(2).length===1?t=`-`+t.slice(2):t.startsWith(`-`)&&!t.startsWith(`--`)&&t.slice(1).length>1?t=`--`+t.slice(1):!t.startsWith(`-`)&&t.slice(1).length>1&&(t=`--`+t);let e=t.indexOf(`=`);if(e!==-1){g.push(t.substring(0,e));let n=t.substring(e+1);_=n===`*`?[]:n===`true`||n===`false`||!n&&!p?n===`true`:isNaN(Number(n))?n:Number(n)}else g.push(t)}}n.push({name:h?g[g.length-1]:f,required:p,multiple:m,description:l,flags:g,shared:t,isFlag:h,isHidden:r,defaultValue:_,nestedOptions:u})}return n}static parseSignature(t,n){let r=t.split(`
70
+ `).map(e=>e.trim()).filter(e=>e.length>0),i=[`#`,`^`].includes(r[0][0])||/:[#^]/.test(r[0]),a=r[0].replace(/[^\w=:-]/g,``),o=n.getDescription(),s=a.endsWith(`:`),c=r.slice(1).join(` `),l=e.parseOptions(c);return s?{baseCommand:a.slice(0,-1),isNamespaceCommand:s,subCommands:l.filter(e=>!e.flags&&!e.isHidden),description:o,commandClass:n,options:l.filter(e=>!!e.flags),isHidden:i}:{baseCommand:a,isNamespaceCommand:s,options:l,description:o,commandClass:n,isHidden:i}}};function z(e={}){let t,n,r=e.args||[],i=e.allowRestarts||!1,a=e.input,o=e.options||e;return delete o.args,delete o.allowRestarts,{name:`run`,buildStart(e){let n=a??e.input;if(typeof n==`string`&&(n=[n]),typeof n==`object`&&(n=Object.values(n)),n.length>1)throw Error("@rollup/plugin-run must have a single entry point; consider setting the `input` option");t=(0,d.resolve)(n[0])},generateBundle(e,t,n){n||this.error(`@rollup/plugin-run currently only works with bundles that are written to disk`)},writeBundle(e,a){let s=(e,t)=>{n&&n.kill(),n=(0,E.fork)((0,d.join)(e,t),r,o)},c=e.dir||(0,d.dirname)(e.file),l=Object.keys(a).find(e=>{let n=a[e];return n.isEntry&&n.facadeModuleId===t});l?(s(c,l),i&&(process.stdin.resume(),process.stdin.setEncoding(`utf8`),process.stdin.on(`data`,e=>{let t=e.toString().trim().toLowerCase();t===`rs`||t===`restart`||e.toString().charCodeAt(0)===11?s(c,l):(t===`cls`||t===`clear`||e.toString().charCodeAt(0)===12)&&console.clear()}))):this.error(`@rollup/plugin-run could not find output chunk`)}}}const B=process.env.NODE_ENV||`development`,V=B===`development`?`.h3ravel/serve`:`dist`,H={outDir:V,entry:[`src/**/*.ts`],format:[`esm`],target:`node22`,sourcemap:B===`development`,clean:!0,shims:!0,copy:[{from:`public`,to:V},`src/resources`,`src/database`],env:B===`development`?{NODE_ENV:B,SRC_PATH:V}:{},watch:B===`development`&&process.env.CLI_BUILD!==`true`?[`.env`,`.env.*`,`src`,`../../packages`]:!1,dts:!1,logLevel:`silent`,nodeProtocol:!0,skipNodeModulesBundle:!0,plugins:B===`development`&&process.env.CLI_BUILD!==`true`?[z({env:Object.assign({},process.env,{NODE_ENV:B,SRC_PATH:V}),execArgv:[`-r`,`source-map-support/register`],allowRestarts:!1,input:process.cwd()+`/src/server.ts`})]:[]};var U=H,W=class e{commands=[];constructor(e,t){this.app=e,this.kernel=t}async build(){return this.loadBaseCommands(),await this.loadDiscoveredCommands(),this.initialize()}loadBaseCommands(){[new I(this.app,this.kernel),new j(this.app,this.kernel)].forEach(e=>this.addCommand(e))}async loadDiscoveredCommands(){let e=[...this.app.registeredCommands.map(e=>new e(this.app,this.kernel))],t=app_path(`Console/Commands/*.js`).replace(`/src/`,`/.h3ravel/serve/`);for await(let n of(0,p.glob)(t)){let t=_.default.basename(n).replace(`.js`,``);try{let r=(await import(n))[t];e.push(new r(this.app,this.kernel))}catch{}}e.forEach(e=>this.addCommand(e))}addCommand(e){this.commands.push(R.parseSignature(e.getSignature(),e))}initialize(){let e=l.Logger.parse([[`Musket CLI:`,`white`],[this.kernel.consolePackage.version,`green`]],` `,!1),t=l.Logger.parse([[`H3ravel Framework:`,`white`],[this.kernel.modulePackage.version,`green`]],` `,!1),n={quiet:[`-q, --quiet`,`Do not output any message`],silent:[`--silent`,`Do not output any message`],verbose:[`-v, --verbose <number>`,`Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug`],lock:[`--lock`,`Locked and loaded, do not ask any interactive question`]};T.program.name(`musket`).version(`${e}\n${t}`).description(A).addOption(new T.Option(n.quiet[0],n.quiet[1]).implies({silent:!0})).addOption(new T.Option(n.silent[0],n.silent[1]).implies({quiet:!0})).addOption(new T.Option(n.verbose[0],n.verbose[1]).choices([`1`,`2`,`3`])).addOption(new T.Option(n.lock[0],n.lock[1])).action(async()=>{let e=new j(this.app,this.kernel);e.setInput(T.program.opts(),T.program.args,T.program.registeredArguments,{},T.program),e.handle()}),T.program.command(`init`).description(`Initialize H3ravel.`).action(async()=>{l.Logger.success(`Initialized: H3ravel has been initialized!`)});for(let e=0;e<this.commands.length;e++){let t=this.commands[e],r=t.commandClass;if(t.isNamespaceCommand&&t.subCommands){let e=t.isHidden?T.program:T.program.command(t.baseCommand).description(t.description??``).addOption(new T.Option(n.quiet[0],n.quiet[1]).implies({silent:!0})).addOption(new T.Option(n.silent[0],n.silent[1]).implies({quiet:!0})).addOption(new T.Option(n.verbose[0],n.verbose[1]).choices([`1`,`2`,`3`])).addOption(new T.Option(n.lock[0],n.lock[1])).action(async()=>{r.setInput(e.opts(),e.args,e.registeredArguments,t,T.program),await r.handle()});(t.options?.length??0)>0&&t.options?.filter((e,t,n)=>n.findIndex(t=>t.name===e.name)===t).forEach(t=>{this.makeOption(t,e)}),t.subCommands.filter((e,t,n)=>!e.shared&&n.findIndex(t=>t.name===e.name)===t).forEach(e=>{let i=T.program.command(`${t.baseCommand}:${e.name}`).description(e.description||``).addOption(new T.Option(n.quiet[0],n.quiet[1]).implies({silent:!0})).addOption(new T.Option(n.silent[0],n.silent[1]).implies({quiet:!0})).addOption(new T.Option(n.verbose[0],n.verbose[1]).choices([`1`,`2`,`3`])).addOption(new T.Option(n.lock[0],n.lock[1])).action(async()=>{r.setInput(i.opts(),i.args,i.registeredArguments,e,T.program),await r.handle()});t.subCommands?.filter(e=>e.shared).forEach(t=>{this.makeOption(t,i,!1,e)}),t.options?.filter(e=>e.shared).forEach(t=>{this.makeOption(t,i,!1,e)}),e.nestedOptions&&e.nestedOptions.filter((e,t,n)=>n.findIndex(t=>t.name===e.name)===t).forEach(e=>{this.makeOption(e,i)})})}else{let e=T.program.command(t.baseCommand).description(t.description??``);t?.options?.filter((e,t,n)=>n.findIndex(t=>t.name===e.name)===t).forEach(t=>{this.makeOption(t,e,!0)}),e.action(async()=>{r.setInput(e.opts(),e.args,e.registeredArguments,t,T.program),await r.handle()})}}return T.program.hook(`preAction`,async(e,t)=>{t.name()!==`fire`&&await(0,D.build)({...U,watch:!1,plugins:[]})}),T.program}makeOption(e,t,n,r){let i=e.description?.replace(/\[(\w+)\]/g,(e,t)=>r?.[t]??`[${t}]`)??``,a=e.name.replaceAll(`-`,``);if(e.isFlag)if(n){let n=e.flags?.map(e=>e.length===1?`-${e}`:`--${e}`).join(`, `).replaceAll(`----`,`--`).replaceAll(`---`,`-`);t.option(n||``,i,String(e.defaultValue)||void 0)}else t.option(e.flags?.join(`, `)+(e.required?` <${a}>`:``),i,e.defaultValue);else t.argument(e.required?`<${e.name}>`:`[${e.name}]`,i,e.defaultValue)}static async parse(t){return(await new e(t.app,t).build()).parseAsync()}},G=class e extends c.ConsoleKernel{constructor(e){super(e),this.app=e}static init(t){let n=new e(t);Promise.all([n.loadRequirements()]).then(([e])=>e.run())}async run(){await W.parse(this),process.exit(0)}async loadRequirements(){this.cwd=_.default.join(process.cwd(),this.basePath),this.modulePath=F.findModulePkg(`@h3ravel/core`,this.cwd)??``,this.consolePath=F.findModulePkg(`@h3ravel/console`,this.cwd)??``;try{this.modulePackage=await import(_.default.join(this.modulePath,`package.json`))}catch{this.modulePackage={version:`N/A`}}try{this.consolePackage=await import(_.default.join(this.consolePath,`package.json`))}catch{this.consolePackage={version:`N/A`}}return this}},K=class extends c.ServiceProvider{static priority=992;static console=!0;register(){}boot(){G.init(this.app),process.on(`SIGINT`,()=>{process.exit(0)}),process.on(`SIGTERM`,()=>{process.exit(0)})}},q=class{async fire(){let e=new c.Application(process.cwd()),t=app_path(`Providers/*.js`).replace(`/src/`,`/.h3ravel/serve/`);for await(let e of(0,p.glob)(t)){let t=_.default.basename(e).replace(`.js`,``);try{L.push((await import(e))[t])}catch{}}L.push(K),e.registerProviders(L),await e.registerConfiguredProviders(),await e.boot()}};new q().fire();
package/bin/fire.js CHANGED
@@ -1,2 +1,70 @@
1
1
  #!/usr/bin/env node
2
- import"tsx/esm";import{Application as e}from"@h3ravel/core";import{ConsoleServiceProvider as t}from"@h3ravel/console";import{glob as n}from"node:fs/promises";import r from"node:path";import{HttpServiceProvider as i}from"@h3ravel/http";import{AssetsServiceProvider as a,RouteServiceProvider as o}from"@h3ravel/router";import{DatabaseServiceProvider as s}from"@h3ravel/database";import{CacheServiceProvider as c}from"@h3ravel/cache";import{QueueServiceProvider as l}from"@h3ravel/queue";import{MailServiceProvider as u}from"@h3ravel/mail";import{ConfigServiceProvider as d}from"@h3ravel/config";var f=[i,d,o,a,s,c,l,u];new class{async fire(){let i=new e(process.cwd()),a=(app_path(`Providers/*.js`).replace(`/src/`,`/.h3ravel/serve/`));for await(let e of n(a)){let t=(r.basename(e).replace(`.js`,``));try{f.push((await import(e))[t])}catch{}}f.push(t),i.registerProviders(f),await i.registerConfiguredProviders(),await i.boot()}}().fire();export{};
2
+ import"tsx/esm";import{Application as e,ConsoleCommand as t,ConsoleKernel as n,ServiceProvider as r}from"@h3ravel/core";import{Logger as i}from"@h3ravel/shared";import{access as a}from"fs/promises";import o,{dirname as s,join as c,resolve as l}from"path";import{readdirSync as u,statSync as d}from"fs";import{glob as f,mkdir as p,readFile as m,writeFile as h}from"node:fs/promises";import{beforeLast as g}from"@h3ravel/support";import _ from"dayjs";import{existsSync as v}from"node:fs";import y from"node:path";import{HttpServiceProvider as b}from"@h3ravel/http";import{AssetsServiceProvider as x,RouteServiceProvider as S}from"@h3ravel/router";import{DatabaseServiceProvider as C}from"@h3ravel/database";import{CacheServiceProvider as w}from"@h3ravel/cache";import{QueueServiceProvider as T}from"@h3ravel/queue";import{MailServiceProvider as E}from"@h3ravel/mail";import{ConfigServiceProvider as D}from"@h3ravel/config";import{Option as O,program as k}from"commander";import{fork as A}from"child_process";import{build as j}from"tsdown";var M=class extends t{};String.raw`
3
+ 111
4
+ 111111111
5
+ 1111111111 111111
6
+ 111111 111 111111
7
+ 111111 111 111111
8
+ 11111 111 11111
9
+ 1111111 111 1111111
10
+ 111 11111 111 111111 111 1111 1111 11111111 1111
11
+ 111 11111 1111 111111 111 1111 1111 1111 11111 1111
12
+ 111 11111 11111 111 1111 1111 111111111111 111111111111 1111 1111111 1111
13
+ 111 111111 1111 111 111111111111 111111 11111 1111 111 1111 11111111 1111 1111
14
+ 111 111 11111111 111 1101 1101 111111111 11111111 1111 1111111111111111101
15
+ 111 1111111111111111 1111 111 1111 1111 111 11111011 1111 111 1111111 1101 1111
16
+ 111 11111 1110111111111111 111 1111 1111 1111111101 1111 111111111 1111011 111111111 1111
17
+ 1111111 111110111110 111 1111 1111 111111 1111 11011101 10111 11111 1111
18
+ 11011 111111 11 11111
19
+ 111111 11101 111111
20
+ 111111 111 111111
21
+ 111111 111 111111
22
+ 111111111
23
+ 110
24
+ `;const N=String.raw`
25
+ _ _ _____ _
26
+ | | | |___ / _ __ __ ___ _____| |
27
+ | |_| | |_ \| '__/ _ \ \ / / _ \ |
28
+ | _ |___) | | | (_| |\ V / __/ |
29
+ |_| |_|____/|_| \__,_| \_/ \___|_|
30
+
31
+ `;var P=class extends M{signature=`list`;description=`List all available commands`;async handle(){let e=[{short:`-h`,long:`--help`,description:`Display help for the given command. When no command is given display help for the list command`}].concat(this.program.options).map(e=>i.describe(i.log(` `+[e.short,e.long].filter(e=>!!e).join(`, `),`green`,!1),e.description,25,!1).join(``)),t=this.program.commands.map(e=>i.describe(i.log(` `+e.name(),`green`,!1),e.description(),25,!1).join(``)).reduce((e,t)=>{let n=t.replace(/\x1b\[\d+m/g,``),r=n.includes(`:`)?n.split(`:`)[0].trim():`__root__`;return e[r]??=[],e[r].push(t),e},{}),n=Object.entries(t).map(([e,t])=>{let n=e===`__root__`?``:e;return[i.log(n,`yellow`,!1),t.join(`
32
+ `)].join(`
33
+ `)});i.log([[`H3ravel Framework`,`white`],[this.kernel.modulePackage.version,`green`]],` `),console.log(``),console.log(N),console.log(``),i.log(`Usage:`,`yellow`),i.log(` command [options] [arguments]`,`white`),console.log(``),i.log(`Options:`,`yellow`),console.log(e.join(`
34
+ `).trim()),console.log(``),i.log(`Available Commands:`,`yellow`),console.log(n.join(`
35
+
36
+ `).trim())}};function F(e,t){let n=l(`.`,e),r;for(d(n).isDirectory()||(n=s(n));;){if(r=t(n,u(n)),r)return l(n,r);if(n=s(r=n),r===n)break}}var I=class{static findModulePkg(e,t){let n=e.replace(/\\/g,`/`).split(`/`),r=``;n.length>0&&n[0][0]===`@`&&(r+=n.shift()+`/`),r+=n.shift();let i=o.join(t??process.cwd(),`node_modules`,r),a=this.findUpConfig(i,`package`,[`json`]);if(a)return o.join(o.dirname(a),n.join(`/`))}static async fileExists(e){try{return await a(e),!0}catch{return!1}}static findUpConfig(e,t,n){return F(e,(e,r)=>{for(let e of n){let n=`${t}.${e}`;if(r.includes(n))return n}return!1})}},L=class e{static CREATE_PATTERNS=[/^create_(\w+)_table$/,/^create_(\w+)$/];static CHANGE_PATTERNS=[/.+_(to|from|in)_(\w+)_table$/,/.+_(to|from|in)_(\w+)$/];static guess(t){for(let n of e.CREATE_PATTERNS){let e=t.match(n);if(e)return[e[1],!0]}for(let n of e.CHANGE_PATTERNS){let e=t.match(n);if(e)return[e[2],!1]}return[]}},R=class{static findModulePkg(e,t){let n=e.replace(/\\/g,`/`).split(`/`),r=``;n.length>0&&n[0][0]===`@`&&(r+=n.shift()+`/`),r+=n.shift();let i=o.join(t??process.cwd(),`node_modules`,r),a=this.findUpConfig(i,`package`,[`json`]);if(a)return o.join(o.dirname(a),n.join(`/`))}static async fileExists(e){try{return await a(e),!0}catch{return!1}}static findUpConfig(e,t,n){return F(e,(e,r)=>{for(let e of n){let n=`${t}.${e}`;if(r.includes(n))return n}return!1})}},z=class extends M{signature=`#make:
37
+ {controller : Create a new controller class.
38
+ | {--a|api : Exclude the create and edit methods from the controller}
39
+ | {--m|model= : Generate a resource controller for the given model}
40
+ | {--r|resource : Generate a resource controller class}
41
+ | {--force : Create the controller even if it already exists}
42
+ }
43
+ {resource : Create a new resource.
44
+ | {--c|collection : Create a resource collection}
45
+ | {--force : Create the resource even if it already exists}
46
+ }
47
+ {migration : Generates a new database migration class.
48
+ | {--l|type=ts : The file type to generate}
49
+ | {--t|table : The table to migrate}
50
+ | {--c|create : The table to be created}
51
+ }
52
+ {factory : Create a new model factory.}
53
+ {seeder : Create a new seeder class.}
54
+ {view : Create a new view.
55
+ | {--force : Create the view even if it already exists}
56
+ }
57
+ {model : Create a new Eloquent model class.
58
+ | {--api : Indicates if the generated controller should be an API resource controller}
59
+ | {--c|controller : Create a new controller for the model}
60
+ | {--f|factory : Create a new factory for the model}
61
+ | {--m|migration : Create a new migration file for the model}
62
+ | {--r|resource : Indicates if the generated controller should be a resource controller}
63
+ | {--a|all : Generate a migration, seeder, factory, policy, resource controller, and form request classes for the model}
64
+ | {--s|seed : Create a new seeder for the model}
65
+ | {--t|type=ts : The file type to generate}
66
+ | {--force : Create the model even if it already exists}
67
+ }
68
+ {^name : The name of the [name] to generate}
69
+ `;description=`Generate component classes`;async handle(){let e=this.dictionary.baseCommand??this.dictionary.name,t={controller:`makeController`,resource:`makeResource`,migration:`makeMigration`,factory:`makeFactory`,seeder:`makeSeeder`,model:`makeModel`,view:`makeView`};try{await this?.[t[e]]()}catch(e){i.error(e)}}async makeController(){let e=this.option(`api`)?`-resource`:``,t=this.argument(`name`),n=this.option(`force`),r=y.join(app_path(`Http/Controllers`),t+`.ts`),a=R.findModulePkg(`@h3ravel/http`,this.kernel.cwd)??``,o=y.join(a,`dist/stubs/controller${e}.stub`);!n&&v(r)&&i.error(`ERORR: ${t} controller already exists`);let s=await m(o,`utf-8`);s=s.replace(/{{ name }}/g,t),await h(r,s),i.split(`INFO: Controller Created`,i.log(y.basename(r),`gray`,!1))}makeResource(){i.success(`Resource support is not yet available`)}async makeMigration(){let e=this.argument(`name`),t=_().format(`YYYY_MM_DD_HHmmss`),n=y.join(database_path(`migrations`),`${t}_${e}.ts`),r=I.findModulePkg(`@h3ravel/database`,this.kernel.cwd)??``,a=this.option(`create`,!1),o=this.option(`table`);if(!o&&typeof a==`string`&&(o=a,a=!0),!o){let t=L.guess(e);o=t[0],a=!!t[1]}let s=y.join(r,this.getMigrationStubName(o,a)),c=await m(s,`utf-8`);o!==null&&(c=c.replace(/DummyTable|{{\s*table\s*}}/g,o)),i.info(`INFO: Creating Migration`),await this.kernel.ensureDirectoryExists(y.dirname(n)),await h(n,c),i.split(`INFO: Migration Created`,i.log(y.basename(n),`gray`,!1))}makeFactory(){i.success(`Factory support is not yet available`)}makeSeeder(){i.success(`Seeder support is not yet available`)}async makeModel(){let e=this.option(`type`,`ts`),t=this.argument(`name`),n=this.argument(`force`),r=y.join(app_path(`Models`),t.toLowerCase(),`.`+e);!n&&v(r)&&i.error(`ERORR: ${t} view already exists`);let a=I.findModulePkg(`@h3ravel/database`,this.kernel.cwd)??``,o=y.join(a,`dist/stubs/model-${e}.stub`),s=await m(o,`utf-8`);s=s.replace(/{{ name }}/g,t),await h(r,s),i.split(`INFO: Model Created`,i.log(y.basename(r),`gray`,!1))}async makeView(){let e=this.argument(`name`),t=this.option(`force`),n=y.join(base_path(`src/resources/views`),e+`.edge`);e.includes(`/`)&&await p(g(n,`/`),{recursive:!0}),!t&&v(n)&&i.error(`ERORR: ${e} view already exists`),await h(n,`{{-- src/resources/views/${e}.edge --}}`),i.split(`INFO: View Created`,i.log(`src/resources/views/${e}.edge`,`gray`,!1))}getMigrationStubName(e,t=!1,n=`ts`){let r;return r=e?t?`migration.create-${n}.stub`:`migration.update-${n}.stub`:`migration-${n}.stub`,`dist/stubs/`+r}},B=[b,D,S,x,C,w,T,E],V=class e{static parseOptions(t){let n=[],r=/\{([^{}]+(?:\{[^{}]*\}[^{}]*)*)\}/g,i;for(;(i=r.exec(t))!==null;){let t=i[1][0]===`^`||/:[#^]/.test(i[1]),r=([`#`,`^`].includes(i[1][0])||/:[#^]/.test(i[1]))&&!t,a=i[1].trim().replace(/[#^]/,``),o=a.indexOf(`:`);if(o===-1){n.push({name:a});continue}let s=a.substring(0,o).trim(),c=a.substring(o+1).trim(),l=c,u,d=c.indexOf(`|`);if(d!==-1){l=c.substring(0,d).trim();let t=c.substring(d+1).trim().replace(/^\{/,``).trim();u=e.parseOptions(`{`+t+`}`)}else l=l.trim();let f=s,p=/[^a-zA-Z0-9_|-]/.test(f),m=!1;f.endsWith(`?*`)?(p=!1,m=!0,f=f.slice(0,-2)):f.endsWith(`*`)?(m=!0,f=f.slice(0,-1)):f.endsWith(`?`)&&(p=!1,f=f.slice(0,-1));let h=f.startsWith(`--`),g,_;if(h){let e=f.split(`|`).map(e=>e.trim());g=[];for(let t of e){t.startsWith(`--`)&&t.slice(2).length===1?t=`-`+t.slice(2):t.startsWith(`-`)&&!t.startsWith(`--`)&&t.slice(1).length>1?t=`--`+t.slice(1):!t.startsWith(`-`)&&t.slice(1).length>1&&(t=`--`+t);let e=t.indexOf(`=`);if(e!==-1){g.push(t.substring(0,e));let n=t.substring(e+1);_=n===`*`?[]:n===`true`||n===`false`||!n&&!p?n===`true`:isNaN(Number(n))?n:Number(n)}else g.push(t)}}n.push({name:h?g[g.length-1]:f,required:p,multiple:m,description:l,flags:g,shared:t,isFlag:h,isHidden:r,defaultValue:_,nestedOptions:u})}return n}static parseSignature(t,n){let r=t.split(`
70
+ `).map(e=>e.trim()).filter(e=>e.length>0),i=[`#`,`^`].includes(r[0][0])||/:[#^]/.test(r[0]),a=r[0].replace(/[^\w=:-]/g,``),o=n.getDescription(),s=a.endsWith(`:`),c=r.slice(1).join(` `),l=e.parseOptions(c);return s?{baseCommand:a.slice(0,-1),isNamespaceCommand:s,subCommands:l.filter(e=>!e.flags&&!e.isHidden),description:o,commandClass:n,options:l.filter(e=>!!e.flags),isHidden:i}:{baseCommand:a,isNamespaceCommand:s,options:l,description:o,commandClass:n,isHidden:i}}};function H(e={}){let t,n,r=e.args||[],i=e.allowRestarts||!1,a=e.input,o=e.options||e;return delete o.args,delete o.allowRestarts,{name:`run`,buildStart(e){let n=a??e.input;if(typeof n==`string`&&(n=[n]),typeof n==`object`&&(n=Object.values(n)),n.length>1)throw Error("@rollup/plugin-run must have a single entry point; consider setting the `input` option");t=l(n[0])},generateBundle(e,t,n){n||this.error(`@rollup/plugin-run currently only works with bundles that are written to disk`)},writeBundle(e,a){let l=(e,t)=>{n&&n.kill(),n=A(c(e,t),r,o)},u=e.dir||s(e.file),d=Object.keys(a).find(e=>{let n=a[e];return n.isEntry&&n.facadeModuleId===t});d?(l(u,d),i&&(process.stdin.resume(),process.stdin.setEncoding(`utf8`),process.stdin.on(`data`,e=>{let t=e.toString().trim().toLowerCase();t===`rs`||t===`restart`||e.toString().charCodeAt(0)===11?l(u,d):(t===`cls`||t===`clear`||e.toString().charCodeAt(0)===12)&&console.clear()}))):this.error(`@rollup/plugin-run could not find output chunk`)}}}const U=process.env.NODE_ENV||`development`,W=U===`development`?`.h3ravel/serve`:`dist`;var G={outDir:W,entry:[`src/**/*.ts`],format:[`esm`],target:`node22`,sourcemap:U===`development`,clean:!0,shims:!0,copy:[{from:`public`,to:W},`src/resources`,`src/database`],env:U===`development`?{NODE_ENV:U,SRC_PATH:W}:{},watch:U===`development`&&process.env.CLI_BUILD!==`true`?[`.env`,`.env.*`,`src`,`../../packages`]:!1,dts:!1,logLevel:`silent`,nodeProtocol:!0,skipNodeModulesBundle:!0,plugins:U===`development`&&process.env.CLI_BUILD!==`true`?[H({env:Object.assign({},process.env,{NODE_ENV:U,SRC_PATH:W}),execArgv:[`-r`,`source-map-support/register`],allowRestarts:!1,input:process.cwd()+`/src/server.ts`})]:[]},K=class e{commands=[];constructor(e,t){this.app=e,this.kernel=t}async build(){return this.loadBaseCommands(),await this.loadDiscoveredCommands(),this.initialize()}loadBaseCommands(){[new z(this.app,this.kernel),new P(this.app,this.kernel)].forEach(e=>this.addCommand(e))}async loadDiscoveredCommands(){let e=[...this.app.registeredCommands.map(e=>new e(this.app,this.kernel))],t=app_path(`Console/Commands/*.js`).replace(`/src/`,`/.h3ravel/serve/`);for await(let n of f(t)){let t=y.basename(n).replace(`.js`,``);try{let r=(await import(n))[t];e.push(new r(this.app,this.kernel))}catch{}}e.forEach(e=>this.addCommand(e))}addCommand(e){this.commands.push(V.parseSignature(e.getSignature(),e))}initialize(){let e=i.parse([[`Musket CLI:`,`white`],[this.kernel.consolePackage.version,`green`]],` `,!1),t=i.parse([[`H3ravel Framework:`,`white`],[this.kernel.modulePackage.version,`green`]],` `,!1),n={quiet:[`-q, --quiet`,`Do not output any message`],silent:[`--silent`,`Do not output any message`],verbose:[`-v, --verbose <number>`,`Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug`],lock:[`--lock`,`Locked and loaded, do not ask any interactive question`]};k.name(`musket`).version(`${e}\n${t}`).description(N).addOption(new O(n.quiet[0],n.quiet[1]).implies({silent:!0})).addOption(new O(n.silent[0],n.silent[1]).implies({quiet:!0})).addOption(new O(n.verbose[0],n.verbose[1]).choices([`1`,`2`,`3`])).addOption(new O(n.lock[0],n.lock[1])).action(async()=>{let e=new P(this.app,this.kernel);e.setInput(k.opts(),k.args,k.registeredArguments,{},k),e.handle()}),k.command(`init`).description(`Initialize H3ravel.`).action(async()=>{i.success(`Initialized: H3ravel has been initialized!`)});for(let e=0;e<this.commands.length;e++){let t=this.commands[e],r=t.commandClass;if(t.isNamespaceCommand&&t.subCommands){let e=t.isHidden?k:k.command(t.baseCommand).description(t.description??``).addOption(new O(n.quiet[0],n.quiet[1]).implies({silent:!0})).addOption(new O(n.silent[0],n.silent[1]).implies({quiet:!0})).addOption(new O(n.verbose[0],n.verbose[1]).choices([`1`,`2`,`3`])).addOption(new O(n.lock[0],n.lock[1])).action(async()=>{r.setInput(e.opts(),e.args,e.registeredArguments,t,k),await r.handle()});(t.options?.length??0)>0&&t.options?.filter((e,t,n)=>n.findIndex(t=>t.name===e.name)===t).forEach(t=>{this.makeOption(t,e)}),t.subCommands.filter((e,t,n)=>!e.shared&&n.findIndex(t=>t.name===e.name)===t).forEach(e=>{let i=k.command(`${t.baseCommand}:${e.name}`).description(e.description||``).addOption(new O(n.quiet[0],n.quiet[1]).implies({silent:!0})).addOption(new O(n.silent[0],n.silent[1]).implies({quiet:!0})).addOption(new O(n.verbose[0],n.verbose[1]).choices([`1`,`2`,`3`])).addOption(new O(n.lock[0],n.lock[1])).action(async()=>{r.setInput(i.opts(),i.args,i.registeredArguments,e,k),await r.handle()});t.subCommands?.filter(e=>e.shared).forEach(t=>{this.makeOption(t,i,!1,e)}),t.options?.filter(e=>e.shared).forEach(t=>{this.makeOption(t,i,!1,e)}),e.nestedOptions&&e.nestedOptions.filter((e,t,n)=>n.findIndex(t=>t.name===e.name)===t).forEach(e=>{this.makeOption(e,i)})})}else{let e=k.command(t.baseCommand).description(t.description??``);t?.options?.filter((e,t,n)=>n.findIndex(t=>t.name===e.name)===t).forEach(t=>{this.makeOption(t,e,!0)}),e.action(async()=>{r.setInput(e.opts(),e.args,e.registeredArguments,t,k),await r.handle()})}}return k.hook(`preAction`,async(e,t)=>{t.name()!==`fire`&&await j({...G,watch:!1,plugins:[]})}),k}makeOption(e,t,n,r){let i=e.description?.replace(/\[(\w+)\]/g,(e,t)=>r?.[t]??`[${t}]`)??``,a=e.name.replaceAll(`-`,``);if(e.isFlag)if(n){let n=e.flags?.map(e=>e.length===1?`-${e}`:`--${e}`).join(`, `).replaceAll(`----`,`--`).replaceAll(`---`,`-`);t.option(n||``,i,String(e.defaultValue)||void 0)}else t.option(e.flags?.join(`, `)+(e.required?` <${a}>`:``),i,e.defaultValue);else t.argument(e.required?`<${e.name}>`:`[${e.name}]`,i,e.defaultValue)}static async parse(t){return(await new e(t.app,t).build()).parseAsync()}},q=class e extends n{constructor(e){super(e),this.app=e}static init(t){let n=new e(t);Promise.all([n.loadRequirements()]).then(([e])=>e.run())}async run(){await K.parse(this),process.exit(0)}async loadRequirements(){this.cwd=y.join(process.cwd(),this.basePath),this.modulePath=R.findModulePkg(`@h3ravel/core`,this.cwd)??``,this.consolePath=R.findModulePkg(`@h3ravel/console`,this.cwd)??``;try{this.modulePackage=await import(y.join(this.modulePath,`package.json`))}catch{this.modulePackage={version:`N/A`}}try{this.consolePackage=await import(y.join(this.consolePath,`package.json`))}catch{this.consolePackage={version:`N/A`}}return this}},J=class extends r{static priority=992;static console=!0;register(){}boot(){q.init(this.app),process.on(`SIGINT`,()=>{process.exit(0)}),process.on(`SIGTERM`,()=>{process.exit(0)})}};new class{async fire(){let t=new e(process.cwd()),n=(app_path(`Providers/*.js`).replace(`/src/`,`/.h3ravel/serve/`));for await(let e of f(n)){let t=(y.basename(e).replace(`.js`,``));try{B.push((await import(e))[t])}catch{}}B.push(J),t.registerProviders(B),await t.registerConfiguredProviders(),await t.boot()}}().fire();export{};
package/dist/index.cjs CHANGED
@@ -17,7 +17,6 @@ let node_fs = require("node:fs");
17
17
  node_fs = require_Utils.__toESM(node_fs);
18
18
  let node_path = require("node:path");
19
19
  node_path = require_Utils.__toESM(node_path);
20
- require("@h3ravel/console");
21
20
  require("@h3ravel/http");
22
21
  require("@h3ravel/router");
23
22
  require("@h3ravel/database");
@@ -366,7 +365,7 @@ var Signature = class Signature {
366
365
  continue;
367
366
  }
368
367
  const namePart = content.substring(0, colonIndex).trim();
369
- let rest = content.substring(colonIndex + 1).trim();
368
+ const rest = content.substring(colonIndex + 1).trim();
370
369
  /**
371
370
  * Check for nested options after '|'
372
371
  */
@@ -640,10 +639,14 @@ var Musket = class Musket {
640
639
  quiet: ["-q, --quiet", "Do not output any message"],
641
640
  silent: ["--silent", "Do not output any message"],
642
641
  verbose: ["-v, --verbose <number>", "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug"],
643
- interaction: ["-n, --no-interaction", "Do not ask any interactive question"]
642
+ lock: ["--lock", "Locked and loaded, do not ask any interactive question"]
644
643
  };
645
644
  /** Init Commander */
646
- commander.program.name("musket").version(`${cliVersion}\n${localVersion}`).addOption(new commander.Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).option(additional.quiet[0], additional.quiet[1]).option(additional.verbose[0], additional.verbose[1]).option(additional.interaction[0], additional.interaction[1]).description(altLogo).action(async () => {
645
+ commander.program.name("musket").version(`${cliVersion}\n${localVersion}`).description(altLogo).addOption(new commander.Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true })).addOption(new commander.Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).addOption(new commander.Option(additional.verbose[0], additional.verbose[1]).choices([
646
+ "1",
647
+ "2",
648
+ "3"
649
+ ])).addOption(new commander.Option(additional.lock[0], additional.lock[1])).action(async () => {
647
650
  const instance = new ListCommand(this.app, this.kernel);
648
651
  instance.setInput(commander.program.opts(), commander.program.args, commander.program.registeredArguments, {}, commander.program);
649
652
  instance.handle();
@@ -660,7 +663,11 @@ var Musket = class Musket {
660
663
  /**
661
664
  * Initialize the base command
662
665
  */
663
- const cmd = command.isHidden ? commander.program : commander.program.command(command.baseCommand).description(command.description ?? "").addOption(new commander.Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).option(additional.quiet[0], additional.quiet[1]).option(additional.verbose[0], additional.verbose[1]).option(additional.interaction[0], additional.interaction[1]).action(async () => {
666
+ const cmd = command.isHidden ? commander.program : commander.program.command(command.baseCommand).description(command.description ?? "").addOption(new commander.Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true })).addOption(new commander.Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).addOption(new commander.Option(additional.verbose[0], additional.verbose[1]).choices([
667
+ "1",
668
+ "2",
669
+ "3"
670
+ ])).addOption(new commander.Option(additional.lock[0], additional.lock[1])).action(async () => {
664
671
  instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, commander.program);
665
672
  await instance.handle();
666
673
  });
@@ -674,7 +681,11 @@ var Musket = class Musket {
674
681
  * Initialize the sub commands
675
682
  */
676
683
  command.subCommands.filter((v, i$1, a) => !v.shared && a.findIndex((t) => t.name === v.name) === i$1).forEach((sub) => {
677
- const cmd$1 = commander.program.command(`${command.baseCommand}:${sub.name}`).description(sub.description || "").addOption(new commander.Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).option(additional.quiet[0], additional.quiet[1]).option(additional.verbose[0], additional.verbose[1]).option(additional.interaction[0], additional.interaction[1]).action(async () => {
684
+ const cmd$1 = commander.program.command(`${command.baseCommand}:${sub.name}`).description(sub.description || "").addOption(new commander.Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true })).addOption(new commander.Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).addOption(new commander.Option(additional.verbose[0], additional.verbose[1]).choices([
685
+ "1",
686
+ "2",
687
+ "3"
688
+ ])).addOption(new commander.Option(additional.lock[0], additional.lock[1])).action(async () => {
678
689
  instance.setInput(cmd$1.opts(), cmd$1.args, cmd$1.registeredArguments, sub, commander.program);
679
690
  await instance.handle();
680
691
  });
@@ -701,7 +712,7 @@ var Musket = class Musket {
701
712
  /**
702
713
  * Initialize command with options
703
714
  */
704
- const cmd = commander.program.command(command.baseCommand).description(command.description ?? "").addOption(new commander.Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).option(additional.quiet[0], additional.quiet[1]).option(additional.verbose[0], additional.verbose[1]).option(additional.interaction[0], additional.interaction[1]);
715
+ const cmd = commander.program.command(command.baseCommand).description(command.description ?? "");
705
716
  command?.options?.filter((v, i$1, a) => a.findIndex((t) => t.name === v.name) === i$1).forEach((opt) => {
706
717
  this.makeOption(opt, cmd, true);
707
718
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["ConsoleCommand","Logger","e","path$1","escalade","path","nodepath","Logger","Utils","TableGuesser","stub: string","options: CommandOption[]","nestedOptions: CommandOption[] | undefined","flags: string[] | undefined","defaultValue: string | number | boolean | undefined | string[]","dir","entryFileName","TsDownConfig: Options","app: Application","kernel: Kernel","commands: Command[]","path","Logger","Option","program","i","cmd","TsDownConfig","ConsoleKernel","app: Application","path","ServiceProvider"],"sources":["../src/Commands/Command.ts","../src/logo.ts","../src/Commands/ListCommand.ts","../../filesystem/dist/index.js","../src/Commands/MakeCommand.ts","../src/Signature.ts","../../../node_modules/.pnpm/@rollup+plugin-run@3.1.0/node_modules/@rollup/plugin-run/dist/es/index.js","../src/TsdownConfig.ts","../src/Musket.ts","../src/Kernel.ts","../src/Providers/ConsoleServiceProvider.ts"],"sourcesContent":["import { ConsoleCommand } from '@h3ravel/core'\n\nexport class Command extends ConsoleCommand { }\n","export const logo = String.raw`\n 111 \n 111111111 \n 1111111111 111111 \n 111111 111 111111 \n 111111 111 111111 \n11111 111 11111 \n1111111 111 1111111 \n111 11111 111 111111 111 1111 1111 11111111 1111\n111 11111 1111 111111 111 1111 1111 1111 11111 1111\n111 11111 11111 111 1111 1111 111111111111 111111111111 1111 1111111 1111\n111 111111 1111 111 111111111111 111111 11111 1111 111 1111 11111111 1111 1111\n111 111 11111111 111 1101 1101 111111111 11111111 1111 1111111111111111101\n111 1111111111111111 1111 111 1111 1111 111 11111011 1111 111 1111111 1101 1111\n111 11111 1110111111111111 111 1111 1111 1111111101 1111 111111111 1111011 111111111 1111\n1111111 111110111110 111 1111 1111 111111 1111 11011101 10111 11111 1111\n11011 111111 11 11111 \n 111111 11101 111111 \n 111111 111 111111 \n 111111 111 111111 \n 111111111 \n 110 \n`\n\nexport const altLogo = String.raw`\n _ _ _____ _ \n| | | |___ / _ __ __ ___ _____| |\n| |_| | |_ \\| '__/ _ \\ \\ / / _ \\ |\n| _ |___) | | | (_| |\\ V / __/ |\n|_| |_|____/|_| \\__,_| \\_/ \\___|_|\n\n`\n","import { Command } from './Command'\nimport { Logger } from '@h3ravel/shared'\nimport { Option } from 'commander'\n/* eslint-disable no-control-regex */\nimport { altLogo } from '../logo'\n\nexport class ListCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = 'list'\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'List all available commands'\n\n public async handle () {\n const options = [\n {\n short: '-h',\n long: '--help',\n description: 'Display help for the given command. When no command is given display help for the list command'\n } as Option\n ]\n .concat(this.program.options)\n .map(e => {\n const desc = Logger.describe(Logger.log(\n ' ' + [e.short, e.long].filter(e => !!e).join(', '), 'green', false\n ), e.description, 25, false)\n return desc.join('')\n })\n\n /** Get the program commands */\n const commands = this.program.commands.map(e => {\n const desc = Logger.describe(Logger.log(' ' + e.name(), 'green', false), e.description(), 25, false)\n return desc.join('')\n })\n\n const grouped = commands.reduce<Record<string, string[]>>((acc, cmd) => {\n /** strip colors before checking prefix */\n const clean = cmd.replace(/\\x1b\\[\\d+m/g, '')\n const prefix = clean.includes(':') ? clean.split(':')[0].trim() : '__root__'\n acc[prefix] ??= []\n /** keep original with colors */\n acc[prefix].push(cmd)\n return acc\n }, {})\n\n const list = Object.entries(grouped).map(([group, cmds]) => {\n const label = group === '__root__' ? '' : group\n return [Logger.log(label, 'yellow', false), cmds.join('\\n')].join('\\n')\n })\n\n /** Ootput the app version */\n Logger.log([['H3ravel Framework', 'white'], [this.kernel.modulePackage.version, 'green']], ' ')\n\n console.log('')\n\n console.log(altLogo)\n\n console.log('')\n\n Logger.log('Usage:', 'yellow')\n Logger.log(' command [options] [arguments]', 'white')\n\n console.log('')\n\n /** Ootput the options */\n Logger.log('Options:', 'yellow')\n console.log(options.join('\\n').trim())\n\n console.log('')\n\n /** Ootput the commands */\n Logger.log('Available Commands:', 'yellow')\n console.log(list.join('\\n\\n').trim())\n }\n}\n","import { ServiceProvider } from \"@h3ravel/core\";\nimport { access } from \"fs/promises\";\nimport escalade from \"escalade/sync\";\nimport path from \"path\";\n\n//#region src/Providers/FilesystemProvider.ts\n/**\n* Sets up Filesystem management and lifecycle.\n* \n*/\nvar FilesystemProvider = class extends ServiceProvider {\n\tstatic priority = 997;\n\tregister() {}\n};\n\n//#endregion\n//#region src/Utils/Helpers.ts\nvar Helpers = class {\n\tstatic findModulePkg(moduleId, cwd) {\n\t\tconst parts = moduleId.replace(/\\\\/g, \"/\").split(\"/\");\n\t\tlet packageName = \"\";\n\t\tif (parts.length > 0 && parts[0][0] === \"@\") packageName += parts.shift() + \"/\";\n\t\tpackageName += parts.shift();\n\t\tconst packageJson = path.join(cwd ?? process.cwd(), \"node_modules\", packageName);\n\t\tconst resolved = this.findUpConfig(packageJson, \"package\", [\"json\"]);\n\t\tif (!resolved) return;\n\t\treturn path.join(path.dirname(resolved), parts.join(\"/\"));\n\t}\n\t/**\n\t* Check if file exists\n\t* \n\t* @param path \n\t* @returns \n\t*/\n\tstatic async fileExists(path$1) {\n\t\ttry {\n\t\t\tawait access(path$1);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\tstatic findUpConfig(cwd, name, extensions) {\n\t\treturn escalade(cwd, (_dir, names) => {\n\t\t\tfor (const ext of extensions) {\n\t\t\t\tconst filename = `${name}.${ext}`;\n\t\t\t\tif (names.includes(filename)) return filename;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n};\n\n//#endregion\nexport { FilesystemProvider, Helpers };\n//# sourceMappingURL=index.js.map","import { TableGuesser, Utils } from '../Utils'\nimport { mkdir, readFile, writeFile } from 'node:fs/promises'\n\nimport { Command } from './Command'\nimport { Helpers } from '@h3ravel/filesystem'\nimport { Logger } from '@h3ravel/shared'\nimport { beforeLast } from '@h3ravel/support'\nimport dayjs from 'dayjs'\nimport { existsSync } from 'node:fs'\nimport nodepath from 'node:path'\n\nexport class MakeCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `#make:\n {controller : Create a new controller class. \n | {--a|api : Exclude the create and edit methods from the controller} \n | {--m|model= : Generate a resource controller for the given model} \n | {--r|resource : Generate a resource controller class} \n | {--force : Create the controller even if it already exists}\n }\n {resource : Create a new resource. \n | {--c|collection : Create a resource collection}\n | {--force : Create the resource even if it already exists}\n }\n {migration : Generates a new database migration class. \n | {--l|type=ts : The file type to generate} \n | {--t|table : The table to migrate} \n | {--c|create : The table to be created} \n }\n {factory : Create a new model factory.}\n {seeder : Create a new seeder class.}\n {view : Create a new view.\n | {--force : Create the view even if it already exists}\n }\n {model : Create a new Eloquent model class. \n | {--api : Indicates if the generated controller should be an API resource controller} \n | {--c|controller : Create a new controller for the model} \n | {--f|factory : Create a new factory for the model} \n | {--m|migration : Create a new migration file for the model} \n | {--r|resource : Indicates if the generated controller should be a resource controller} \n | {--a|all : Generate a migration, seeder, factory, policy, resource controller, and form request classes for the model} \n | {--s|seed : Create a new seeder for the model} \n | {--t|type=ts : The file type to generate}\n | {--force : Create the model even if it already exists}\n } \n {^name : The name of the [name] to generate}\n `\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Generate component classes'\n\n public async handle () {\n const command = (this.dictionary.baseCommand ?? this.dictionary.name) as never\n\n const methods = {\n controller: 'makeController',\n resource: 'makeResource',\n migration: 'makeMigration',\n factory: 'makeFactory',\n seeder: 'makeSeeder',\n model: 'makeModel',\n view: 'makeView',\n } as const\n\n try {\n await (this as any)?.[methods[command]]()\n } catch (e) {\n Logger.error(e as any)\n }\n }\n\n /**\n * Create a new controller class.\n */\n protected async makeController () {\n const type = this.option('api') ? '-resource' : ''\n const name = this.argument('name')\n const force = this.option('force')\n\n const path = nodepath.join(app_path('Http/Controllers'), name + '.ts')\n const crtlrPath = Helpers.findModulePkg('@h3ravel/http', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/controller${type}.stub`)\n\n /** Check if the controller already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} controller already exists`)\n }\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n Logger.split('INFO: Controller Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n protected makeResource () {\n Logger.success('Resource support is not yet available')\n }\n\n /**\n * Generate a new database migration class\n */\n protected async makeMigration () {\n const name = this.argument('name')\n const datePrefix = dayjs().format('YYYY_MM_DD_HHmmss')\n const path = nodepath.join(database_path('migrations'), `${datePrefix}_${name}.ts`)\n\n const crtlrPath = Utils.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n\n let create = this.option('create', false)\n let table = this.option('table')\n if (!table && typeof create === 'string') {\n table = create\n create = true\n }\n\n if (!table) {\n const guessed = TableGuesser.guess(name)\n table = guessed[0]\n create = !!guessed[1]\n }\n\n const stubPath = nodepath.join(crtlrPath, this.getMigrationStubName(table, create))\n let stub = await readFile(stubPath, 'utf-8')\n\n if (table !== null) {\n stub = stub.replace(/DummyTable|{{\\s*table\\s*}}/g, table)\n }\n\n Logger.info('INFO: Creating Migration')\n\n await this.kernel.ensureDirectoryExists(nodepath.dirname(path))\n await writeFile(path, stub)\n\n Logger.split('INFO: Migration Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n /**\n * Create a new model factory\n */\n protected makeFactory () {\n Logger.success('Factory support is not yet available')\n }\n\n /**\n * Create a new seeder class\n */\n protected makeSeeder () {\n Logger.success('Seeder support is not yet available')\n }\n\n /**\n * Generate a new Arquebus model class\n */\n protected async makeModel () {\n const type = this.option('type', 'ts')\n const name = this.argument('name')\n const force = this.argument('force')\n\n const path = nodepath.join(app_path('Models'), name.toLowerCase(), '.' + type)\n\n /** Check if the model already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} view already exists`)\n }\n\n const crtlrPath = Utils.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/model-${type}.stub`)\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n Logger.split('INFO: Model Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n /**\n * Create a new view.\n */\n protected async makeView () {\n const name = this.argument('name')\n const force = this.option('force')\n\n const path = nodepath.join(base_path('src/resources/views'), name + '.edge')\n\n if (name.includes('/')) {\n await mkdir(beforeLast(path, '/'), { recursive: true })\n }\n\n /** Check if the view already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} view already exists`)\n }\n\n await writeFile(path, `{{-- src/resources/views/${name}.edge --}}`)\n Logger.split('INFO: View Created', Logger.log(`src/resources/views/${name}.edge`, 'gray', false))\n }\n\n /**\n * Ge the database migration file name\n * \n * @param table \n * @param create \n * @param type \n * @returns \n */\n getMigrationStubName (table?: string, create: boolean = false, type: 'ts' | 'js' = 'ts') {\n let stub: string\n if (!table) {\n stub = `migration-${type}.stub`\n }\n else if (create) {\n stub = `migration.create-${type}.stub`\n }\n else {\n stub = `migration.update-${type}.stub`\n }\n return 'dist/stubs/' + stub\n }\n}\n","import { CommandOption, ParsedCommand } from \"./Contracts/ICommand\";\n\nimport { Command } from \"./Commands/Command\";\n\nexport class Signature {\n /**\n * Helper to parse options inside a block of text\n * \n * @param block \n * @returns \n */\n static parseOptions (block: string): CommandOption[] {\n const options: CommandOption[] = [];\n /**\n * Match { ... } blocks at top level \n */\n const regex = /\\{([^{}]+(?:\\{[^{}]*\\}[^{}]*)*)\\}/g;\n let match;\n\n while ((match = regex.exec(block)) !== null) {\n const shared = '^' === match[1][0]! || /:[#^]/.test(match[1]);\n const isHidden = (['#', '^'].includes(match[1][0]!) || /:[#^]/.test(match[1])) && !shared;\n const content = match[1].trim().replace(/[#^]/, '');\n /**\n * Split by first ':' to separate name and description+nested\n */\n const colonIndex = content.indexOf(':');\n if (colonIndex === -1) {\n /**\n * No description, treat whole as name\n */\n options.push({ name: content });\n continue;\n }\n\n const namePart = content.substring(0, colonIndex).trim();\n let rest = content.substring(colonIndex + 1).trim();\n\n /**\n * Check for nested options after '|'\n */\n let description = rest;\n let nestedOptions: CommandOption[] | undefined;\n\n const pipeIndex = rest.indexOf('|');\n if (pipeIndex !== -1) {\n description = rest.substring(0, pipeIndex).trim();\n const nestedText = rest.substring(pipeIndex + 1).trim();\n /**\n * nestedText should start with '{' and end with ')', clean it\n * Also Remove trailing ')' if present\n */\n const cleanedNestedText = nestedText.replace(/^\\{/, '').trim();\n\n /**\n * Parse nested options recursively\n */\n nestedOptions = Signature.parseOptions('{' + cleanedNestedText + '}');\n } else {\n /**\n * Trim the string\n */\n description = description.trim();\n }\n\n /**\n * Parse name modifiers (?, *, ?*)\n */\n let name = namePart;\n let required = /[^a-zA-Z0-9_|-]/.test(name);\n let multiple = false;\n\n if (name.endsWith('?*')) {\n required = false;\n multiple = true;\n name = name.slice(0, -2);\n } else if (name.endsWith('*')) {\n multiple = true;\n name = name.slice(0, -1);\n } else if (name.endsWith('?')) {\n required = false;\n name = name.slice(0, -1);\n }\n\n /**\n * Check if it's a flag option (starts with --)\n */\n const isFlag = name.startsWith('--');\n let flags: string[] | undefined;\n let defaultValue: string | number | boolean | undefined | string[];\n\n if (isFlag) {\n /**\n * Parse flags and default values\n */\n const flagParts = name.split('|').map(s => s.trim());\n\n flags = [];\n\n for (let part of flagParts) {\n if (part.startsWith('--') && part.slice(2).length === 1) {\n part = '-' + part.slice(2);\n } else if (part.startsWith('-') && !part.startsWith('--') && part.slice(1).length > 1) {\n part = '--' + part.slice(1);\n } else if (!part.startsWith('-') && part.slice(1).length > 1) {\n part = '--' + part\n }\n\n const eqIndex = part.indexOf('=');\n if (eqIndex !== -1) {\n flags.push(part.substring(0, eqIndex));\n const val = part.substring(eqIndex + 1);\n if (val === '*') {\n defaultValue = [];\n } else if (val === 'true' || val === 'false' || (!val && !required)) {\n defaultValue = val === 'true';\n } else if (!isNaN(Number(val))) {\n defaultValue = Number(val);\n } else {\n defaultValue = val;\n }\n } else {\n flags.push(part);\n }\n }\n }\n\n options.push({\n name: isFlag ? flags![flags!.length - 1] : name,\n required,\n multiple,\n description,\n flags,\n shared,\n isFlag,\n isHidden,\n defaultValue,\n nestedOptions,\n });\n }\n\n return options;\n }\n\n /**\n * Helper to parse a command's signature\n * \n * @param signature \n * @param commandClass \n * @returns \n */\n static parseSignature (signature: string, commandClass: Command): ParsedCommand {\n const lines = signature.split('\\n').map(l => l.trim()).filter(l => l.length > 0);\n const isHidden = ['#', '^'].includes(lines[0][0]!) || /:[#^]/.test(lines[0]);\n const baseCommand = lines[0].replace(/[^\\w=:-]/g, '')\n const description = commandClass.getDescription()\n const isNamespaceCommand = baseCommand.endsWith(':');\n\n /**\n * Join the rest lines to a single string for parsing\n */\n const rest = lines.slice(1).join(' ');\n\n /**\n * Parse all top-level options/subcommands\n */\n const allOptions = Signature.parseOptions(rest);\n\n if (isNamespaceCommand) {\n /**\n * Separate subcommands (those without flags) and base options (flags)\n * Here we assume subcommands are those without flags (isFlag false)\n * and base options are flags or options after subcommands\n\n * For simplicity, treat all top-level options as subcommands\n * and assume base command options come after subcommands in signature (not shown in example)\n */\n\n return {\n baseCommand: baseCommand.slice(0, -1),\n isNamespaceCommand,\n subCommands: allOptions.filter(e => !e.flags && !e.isHidden),\n description,\n commandClass,\n options: allOptions.filter(e => !!e.flags),\n isHidden,\n };\n } else {\n return {\n baseCommand,\n isNamespaceCommand,\n options: allOptions,\n description,\n commandClass,\n isHidden,\n };\n }\n }\n}\n","import { dirname, join, resolve } from 'path';\n\nimport { fork } from 'child_process';\n\nfunction run (opts = {}) {\n let input;\n let proc;\n const args = opts.args || [];\n const allowRestarts = opts.allowRestarts || false;\n const overrideInput = opts.input;\n const forkOptions = opts.options || opts;\n delete forkOptions.args;\n delete forkOptions.allowRestarts;\n return {\n name: 'run',\n buildStart (options) {\n let inputs = overrideInput !== null && overrideInput !== void 0 ? overrideInput : options.input;\n if (typeof inputs === 'string') {\n inputs = [inputs];\n }\n if (typeof inputs === 'object') {\n inputs = Object.values(inputs);\n }\n if (inputs.length > 1) {\n throw new Error(`@rollup/plugin-run must have a single entry point; consider setting the \\`input\\` option`);\n }\n input = resolve(inputs[0]);\n },\n generateBundle (_outputOptions, _bundle, isWrite) {\n if (!isWrite) {\n this.error(`@rollup/plugin-run currently only works with bundles that are written to disk`);\n }\n },\n writeBundle (outputOptions, bundle) {\n const forkBundle = (dir, entryFileName) => {\n if (proc)\n proc.kill();\n proc = fork(join(dir, entryFileName), args, forkOptions);\n };\n const dir = outputOptions.dir || dirname(outputOptions.file);\n const entryFileName = Object.keys(bundle).find((fileName) => {\n const chunk = bundle[fileName];\n return chunk.isEntry && chunk.facadeModuleId === input;\n });\n if (entryFileName) {\n forkBundle(dir, entryFileName);\n if (allowRestarts) {\n process.stdin.resume();\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', (data) => {\n const line = data.toString().trim().toLowerCase();\n if (line === 'rs' || line === 'restart' || data.toString().charCodeAt(0) === 11) {\n forkBundle(dir, entryFileName);\n }\n else if (line === 'cls' || line === 'clear' || data.toString().charCodeAt(0) === 12) {\n // eslint-disable-next-line no-console\n console.clear();\n }\n });\n }\n }\n else {\n this.error(`@rollup/plugin-run could not find output chunk`);\n }\n }\n };\n}\n\nexport { run as default };\n//# sourceMappingURL=index.js.map\n","import { Options } from 'tsdown'\nimport run from '@rollup/plugin-run'\n\nconst env = process.env.NODE_ENV || 'development'\nconst outDir = env === 'development' ? '.h3ravel/serve' : 'dist'\n\nexport const TsDownConfig: Options = {\n outDir,\n entry: ['src/**/*.ts'],\n format: ['esm'],//, 'cjs'],\n target: 'node22',\n sourcemap: env === 'development',\n clean: true,\n shims: true,\n copy: [{ from: 'public', to: outDir }, 'src/resources', 'src/database'],\n env: env === 'development' ? {\n NODE_ENV: env,\n SRC_PATH: outDir,\n } : {},\n watch:\n env === 'development' && process.env.CLI_BUILD !== 'true'\n ? ['.env', '.env.*', 'src', '../../packages']\n : false,\n dts: false,\n logLevel: 'silent',\n nodeProtocol: true,\n skipNodeModulesBundle: true,\n plugins: env === 'development' && process.env.CLI_BUILD !== 'true' ? [\n run({\n env: Object.assign({}, process.env, {\n NODE_ENV: env,\n SRC_PATH: outDir,\n }),\n execArgv: ['-r', 'source-map-support/register'],\n allowRestarts: false,\n input: process.cwd() + '/src/server.ts'//\n })\n ] : [],\n}\n\nexport default TsDownConfig\n","import { CommandOption, ParsedCommand } from './Contracts/ICommand'\nimport { Option, program } from 'commander'\n\nimport { Application } from '@h3ravel/core'\nimport { Command } from './Commands/Command'\nimport { Kernel } from './Kernel'\nimport { ListCommand } from './Commands/ListCommand'\nimport { Logger } from '@h3ravel/shared'\nimport { MakeCommand } from './Commands/MakeCommand'\nimport { Signature } from './Signature'\nimport TsDownConfig from './TsdownConfig'\nimport { altLogo } from './logo'\nimport { build } from 'tsdown'\nimport { glob } from 'node:fs/promises'\nimport path from 'node:path'\n\n/**\n * Musket is H3ravel's CLI tool\n */\nexport class Musket {\n private commands: ParsedCommand[] = []\n\n constructor(private app: Application, private kernel: Kernel) { }\n\n async build () {\n this.loadBaseCommands()\n await this.loadDiscoveredCommands()\n return this.initialize()\n }\n\n private loadBaseCommands () {\n const commands: Command[] = [\n new MakeCommand(this.app, this.kernel),\n new ListCommand(this.app, this.kernel),\n ]\n\n commands.forEach(e => this.addCommand(e))\n }\n\n private async loadDiscoveredCommands () {\n const commands: Command[] = [\n ...this.app.registeredCommands.map(cmd => new cmd(this.app, this.kernel))\n ]\n\n /**\n * Musket Commands auto registration\n */\n const providers_path = app_path('Console/Commands/*.js').replace('/src/', '/.h3ravel/serve/')\n\n /** Add the App Commands */\n for await (const cmd of glob(providers_path)) {\n const name = path.basename(cmd).replace('.js', '')\n try {\n const cmdClass = (await import(cmd))[name]\n commands.push(new cmdClass(this.app, this.kernel))\n } catch { /** */ }\n }\n\n commands.forEach(e => this.addCommand(e))\n }\n\n addCommand (command: Command) {\n this.commands.push(Signature.parseSignature(command.getSignature(), command))\n }\n\n private initialize () {\n /** Init the Musket Version */\n const cliVersion = Logger.parse([\n ['Musket CLI:', 'white'],\n [this.kernel.consolePackage.version, 'green']\n ], ' ', false)\n\n /** Init the App Version */\n const localVersion = Logger.parse([\n ['H3ravel Framework:', 'white'],\n [this.kernel.modulePackage.version, 'green']\n ], ' ', false)\n\n const additional = {\n quiet: ['-q, --quiet', 'Do not output any message'],\n silent: ['--silent', 'Do not output any message'],\n verbose: ['-v, --verbose <number>', 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'],\n interaction: ['-n, --no-interaction', 'Do not ask any interactive question'],\n }\n\n /** Init Commander */\n program\n .name('musket')\n .version(`${cliVersion}\\n${localVersion}`)\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .option(additional.quiet[0], additional.quiet[1])\n .option(additional.verbose[0], additional.verbose[1])\n .option(additional.interaction[0], additional.interaction[1])\n .description(altLogo)\n .action(async () => {\n const instance = new ListCommand(this.app, this.kernel)\n instance.setInput(program.opts(), program.args, program.registeredArguments, {}, program)\n instance.handle()\n })\n\n /** Create the init Command */\n program\n .command('init')\n .description('Initialize H3ravel.')\n .action(async () => {\n Logger.success('Initialized: H3ravel has been initialized!')\n })\n\n /** Loop through all the available commands */\n for (let i = 0; i < this.commands.length; i++) {\n const command = this.commands[i]\n const instance = command.commandClass\n\n if (command.isNamespaceCommand && command.subCommands) {\n /**\n * Initialize the base command\n */\n const cmd = command.isHidden\n ? program\n : program\n .command(command.baseCommand)\n .description(command.description ?? '')\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .option(additional.quiet[0], additional.quiet[1])\n .option(additional.verbose[0], additional.verbose[1])\n .option(additional.interaction[0], additional.interaction[1])\n .action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, program)\n await instance.handle()\n })\n\n /**\n * Add options to the base command if it has any\n */\n if ((command.options?.length ?? 0) > 0) {\n command.options\n ?.filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd)\n })\n }\n\n /**\n * Initialize the sub commands\n */\n command\n .subCommands\n .filter((v, i, a) => !v.shared && a.findIndex(t => t.name === v.name) === i)\n .forEach(sub => {\n const cmd = program\n .command(`${command.baseCommand}:${sub.name}`)\n .description(sub.description || '')\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .option(additional.quiet[0], additional.quiet[1])\n .option(additional.verbose[0], additional.verbose[1])\n .option(additional.interaction[0], additional.interaction[1])\n .action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, sub, program)\n await instance.handle()\n })\n\n /**\n * Add the shared arguments here\n */\n command.subCommands?.filter(e => e.shared).forEach(opt => {\n this.makeOption(opt, cmd, false, sub)\n })\n\n /**\n * Add the shared options here\n */\n command.options?.filter(e => e.shared).forEach(opt => {\n this.makeOption(opt, cmd, false, sub)\n })\n\n /**\n * Add options to the sub command if it has any\n */\n if (sub.nestedOptions) {\n sub.nestedOptions\n .filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd)\n })\n }\n })\n } else {\n /**\n * Initialize command with options\n */\n const cmd = program\n .command(command.baseCommand)\n .description(command.description ?? '')\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .option(additional.quiet[0], additional.quiet[1])\n .option(additional.verbose[0], additional.verbose[1])\n .option(additional.interaction[0], additional.interaction[1])\n\n command\n ?.options\n ?.filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd, true)\n })\n\n cmd.action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, program)\n await instance.handle()\n })\n }\n }\n\n /** Rebuild the app on every command except fire so we wont need TS */\n program.hook('preAction', async (_, cmd) => {\n if (cmd.name() !== 'fire') {\n await build({\n ...TsDownConfig,\n watch: false,\n plugins: []\n })\n }\n })\n\n return program\n }\n\n makeOption (opt: CommandOption, cmd: typeof program, parse?: boolean, parent?: any) {\n const description = opt.description?.replace(/\\[(\\w+)\\]/g, (_, k) => parent?.[k] ?? `[${k}]`) ?? ''\n const type = opt.name.replaceAll('-', '')\n\n if (opt.isFlag) {\n if (parse) {\n const flags = opt.flags\n ?.map(f => (f.length === 1 ? `-${f}` : `--${f}`)).join(', ')!\n .replaceAll('----', '--')\n .replaceAll('---', '-')\n\n cmd.option(flags || '', description!, String(opt.defaultValue) || undefined)\n } else {\n cmd.option(\n opt.flags?.join(', ') + (opt.required ? ` <${type}>` : ''),\n description!,\n opt.defaultValue as any\n )\n }\n } else {\n cmd.argument(\n opt.required ? `<${opt.name}>` : `[${opt.name}]`,\n description,\n opt.defaultValue\n )\n }\n }\n\n static async parse (kernel: Kernel) {\n return (await new Musket(kernel.app, kernel).build()).parseAsync()\n }\n}\n","import { Application, ConsoleKernel } from '@h3ravel/core'\n\nimport { Helpers } from '@h3ravel/filesystem'\nimport { Musket } from './Musket'\nimport path from 'node:path'\n\nexport class Kernel extends ConsoleKernel {\n constructor(public app: Application) {\n super(app)\n }\n\n static init (app: Application) {\n const instance = new Kernel(app)\n\n Promise.all([instance.loadRequirements()])\n .then(([e]) => e.run())\n }\n\n\n private async run () {\n await Musket.parse(this)\n process.exit(0)\n }\n\n private async loadRequirements () {\n this.cwd = path.join(process.cwd(), this.basePath)\n this.modulePath = Helpers.findModulePkg('@h3ravel/core', this.cwd) ?? ''\n this.consolePath = Helpers.findModulePkg('@h3ravel/console', this.cwd) ?? ''\n\n try {\n this.modulePackage = await import(path.join(this.modulePath, 'package.json'))\n } catch {\n this.modulePackage = { version: 'N/A' }\n }\n\n try {\n this.consolePackage = await import(path.join(this.consolePath, 'package.json'))\n } catch {\n this.consolePackage = { version: 'N/A' }\n }\n\n return this\n }\n}\n","/// <reference path=\"../../../core/src/app.globals.d.ts\" />\n\nimport { Kernel } from '../Kernel'\nimport { ServiceProvider } from '@h3ravel/core'\n/**\n * Handles CLI commands and tooling.\n * \n * Register DatabaseManager and QueryBuilder.\n * Set up ORM models and relationships.\n * Register migration and seeder commands.\n * \n * Auto-Registered when in CLI mode\n */\nexport class ConsoleServiceProvider extends ServiceProvider {\n public static priority = 992\n\n /**\n * Indicate that this service provider only runs in console\n */\n public static console = true\n\n register () {\n }\n\n boot () {\n Kernel.init(this.app)\n\n process.on('SIGINT', () => {\n process.exit(0)\n })\n process.on('SIGTERM', () => {\n process.exit(0)\n })\n }\n}\n"],"x_google_ignoreList":[6],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["ConsoleCommand","Logger","e","path$1","escalade","path","nodepath","Logger","Utils","TableGuesser","stub: string","options: CommandOption[]","nestedOptions: CommandOption[] | undefined","flags: string[] | undefined","defaultValue: string | number | boolean | undefined | string[]","dir","entryFileName","TsDownConfig: Options","app: Application","kernel: Kernel","commands: Command[]","path","Logger","Option","program","i","cmd","TsDownConfig","ConsoleKernel","app: Application","path","ServiceProvider"],"sources":["../src/Commands/Command.ts","../src/logo.ts","../src/Commands/ListCommand.ts","../../filesystem/dist/index.js","../src/Commands/MakeCommand.ts","../src/Signature.ts","../../../node_modules/.pnpm/@rollup+plugin-run@3.1.0/node_modules/@rollup/plugin-run/dist/es/index.js","../src/TsdownConfig.ts","../src/Musket.ts","../src/Kernel.ts","../src/Providers/ConsoleServiceProvider.ts"],"sourcesContent":["import { ConsoleCommand } from '@h3ravel/core'\n\nexport class Command extends ConsoleCommand { }\n","export const logo = String.raw`\n 111 \n 111111111 \n 1111111111 111111 \n 111111 111 111111 \n 111111 111 111111 \n11111 111 11111 \n1111111 111 1111111 \n111 11111 111 111111 111 1111 1111 11111111 1111\n111 11111 1111 111111 111 1111 1111 1111 11111 1111\n111 11111 11111 111 1111 1111 111111111111 111111111111 1111 1111111 1111\n111 111111 1111 111 111111111111 111111 11111 1111 111 1111 11111111 1111 1111\n111 111 11111111 111 1101 1101 111111111 11111111 1111 1111111111111111101\n111 1111111111111111 1111 111 1111 1111 111 11111011 1111 111 1111111 1101 1111\n111 11111 1110111111111111 111 1111 1111 1111111101 1111 111111111 1111011 111111111 1111\n1111111 111110111110 111 1111 1111 111111 1111 11011101 10111 11111 1111\n11011 111111 11 11111 \n 111111 11101 111111 \n 111111 111 111111 \n 111111 111 111111 \n 111111111 \n 110 \n`\n\nexport const altLogo = String.raw`\n _ _ _____ _ \n| | | |___ / _ __ __ ___ _____| |\n| |_| | |_ \\| '__/ _ \\ \\ / / _ \\ |\n| _ |___) | | | (_| |\\ V / __/ |\n|_| |_|____/|_| \\__,_| \\_/ \\___|_|\n\n`\n","import { Command } from './Command'\nimport { Logger } from '@h3ravel/shared'\nimport { Option } from 'commander'\n/* eslint-disable no-control-regex */\nimport { altLogo } from '../logo'\n\nexport class ListCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = 'list'\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'List all available commands'\n\n public async handle () {\n const options = [\n {\n short: '-h',\n long: '--help',\n description: 'Display help for the given command. When no command is given display help for the list command'\n } as Option\n ]\n .concat(this.program.options)\n .map(e => {\n const desc = Logger.describe(Logger.log(\n ' ' + [e.short, e.long].filter(e => !!e).join(', '), 'green', false\n ), e.description, 25, false)\n return desc.join('')\n })\n\n /** Get the program commands */\n const commands = this.program.commands.map(e => {\n const desc = Logger.describe(Logger.log(' ' + e.name(), 'green', false), e.description(), 25, false)\n return desc.join('')\n })\n\n const grouped = commands.reduce<Record<string, string[]>>((acc, cmd) => {\n /** strip colors before checking prefix */\n const clean = cmd.replace(/\\x1b\\[\\d+m/g, '')\n const prefix = clean.includes(':') ? clean.split(':')[0].trim() : '__root__'\n acc[prefix] ??= []\n /** keep original with colors */\n acc[prefix].push(cmd)\n return acc\n }, {})\n\n const list = Object.entries(grouped).map(([group, cmds]) => {\n const label = group === '__root__' ? '' : group\n return [Logger.log(label, 'yellow', false), cmds.join('\\n')].join('\\n')\n })\n\n /** Ootput the app version */\n Logger.log([['H3ravel Framework', 'white'], [this.kernel.modulePackage.version, 'green']], ' ')\n\n console.log('')\n\n console.log(altLogo)\n\n console.log('')\n\n Logger.log('Usage:', 'yellow')\n Logger.log(' command [options] [arguments]', 'white')\n\n console.log('')\n\n /** Ootput the options */\n Logger.log('Options:', 'yellow')\n console.log(options.join('\\n').trim())\n\n console.log('')\n\n /** Ootput the commands */\n Logger.log('Available Commands:', 'yellow')\n console.log(list.join('\\n\\n').trim())\n }\n}\n","import { ServiceProvider } from \"@h3ravel/core\";\nimport { access } from \"fs/promises\";\nimport escalade from \"escalade/sync\";\nimport path from \"path\";\n\n//#region src/Providers/FilesystemProvider.ts\n/**\n* Sets up Filesystem management and lifecycle.\n* \n*/\nvar FilesystemProvider = class extends ServiceProvider {\n\tstatic priority = 997;\n\tregister() {}\n};\n\n//#endregion\n//#region src/Utils/Helpers.ts\nvar Helpers = class {\n\tstatic findModulePkg(moduleId, cwd) {\n\t\tconst parts = moduleId.replace(/\\\\/g, \"/\").split(\"/\");\n\t\tlet packageName = \"\";\n\t\tif (parts.length > 0 && parts[0][0] === \"@\") packageName += parts.shift() + \"/\";\n\t\tpackageName += parts.shift();\n\t\tconst packageJson = path.join(cwd ?? process.cwd(), \"node_modules\", packageName);\n\t\tconst resolved = this.findUpConfig(packageJson, \"package\", [\"json\"]);\n\t\tif (!resolved) return;\n\t\treturn path.join(path.dirname(resolved), parts.join(\"/\"));\n\t}\n\t/**\n\t* Check if file exists\n\t* \n\t* @param path \n\t* @returns \n\t*/\n\tstatic async fileExists(path$1) {\n\t\ttry {\n\t\t\tawait access(path$1);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\tstatic findUpConfig(cwd, name, extensions) {\n\t\treturn escalade(cwd, (_dir, names) => {\n\t\t\tfor (const ext of extensions) {\n\t\t\t\tconst filename = `${name}.${ext}`;\n\t\t\t\tif (names.includes(filename)) return filename;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n};\n\n//#endregion\nexport { FilesystemProvider, Helpers };\n//# sourceMappingURL=index.js.map","import { TableGuesser, Utils } from '../Utils'\nimport { mkdir, readFile, writeFile } from 'node:fs/promises'\n\nimport { Command } from './Command'\nimport { Helpers } from '@h3ravel/filesystem'\nimport { Logger } from '@h3ravel/shared'\nimport { beforeLast } from '@h3ravel/support'\nimport dayjs from 'dayjs'\nimport { existsSync } from 'node:fs'\nimport nodepath from 'node:path'\n\nexport class MakeCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `#make:\n {controller : Create a new controller class. \n | {--a|api : Exclude the create and edit methods from the controller} \n | {--m|model= : Generate a resource controller for the given model} \n | {--r|resource : Generate a resource controller class} \n | {--force : Create the controller even if it already exists}\n }\n {resource : Create a new resource. \n | {--c|collection : Create a resource collection}\n | {--force : Create the resource even if it already exists}\n }\n {migration : Generates a new database migration class. \n | {--l|type=ts : The file type to generate} \n | {--t|table : The table to migrate} \n | {--c|create : The table to be created} \n }\n {factory : Create a new model factory.}\n {seeder : Create a new seeder class.}\n {view : Create a new view.\n | {--force : Create the view even if it already exists}\n }\n {model : Create a new Eloquent model class. \n | {--api : Indicates if the generated controller should be an API resource controller} \n | {--c|controller : Create a new controller for the model} \n | {--f|factory : Create a new factory for the model} \n | {--m|migration : Create a new migration file for the model} \n | {--r|resource : Indicates if the generated controller should be a resource controller} \n | {--a|all : Generate a migration, seeder, factory, policy, resource controller, and form request classes for the model} \n | {--s|seed : Create a new seeder for the model} \n | {--t|type=ts : The file type to generate}\n | {--force : Create the model even if it already exists}\n } \n {^name : The name of the [name] to generate}\n `\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Generate component classes'\n\n public async handle () {\n const command = (this.dictionary.baseCommand ?? this.dictionary.name) as never\n\n const methods = {\n controller: 'makeController',\n resource: 'makeResource',\n migration: 'makeMigration',\n factory: 'makeFactory',\n seeder: 'makeSeeder',\n model: 'makeModel',\n view: 'makeView',\n } as const\n\n try {\n await (this as any)?.[methods[command]]()\n } catch (e) {\n Logger.error(e as any)\n }\n }\n\n /**\n * Create a new controller class.\n */\n protected async makeController () {\n const type = this.option('api') ? '-resource' : ''\n const name = this.argument('name')\n const force = this.option('force')\n\n const path = nodepath.join(app_path('Http/Controllers'), name + '.ts')\n const crtlrPath = Helpers.findModulePkg('@h3ravel/http', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/controller${type}.stub`)\n\n /** Check if the controller already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} controller already exists`)\n }\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n Logger.split('INFO: Controller Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n protected makeResource () {\n Logger.success('Resource support is not yet available')\n }\n\n /**\n * Generate a new database migration class\n */\n protected async makeMigration () {\n const name = this.argument('name')\n const datePrefix = dayjs().format('YYYY_MM_DD_HHmmss')\n const path = nodepath.join(database_path('migrations'), `${datePrefix}_${name}.ts`)\n\n const crtlrPath = Utils.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n\n let create = this.option('create', false)\n let table = this.option('table')\n if (!table && typeof create === 'string') {\n table = create\n create = true\n }\n\n if (!table) {\n const guessed = TableGuesser.guess(name)\n table = guessed[0]\n create = !!guessed[1]\n }\n\n const stubPath = nodepath.join(crtlrPath, this.getMigrationStubName(table, create))\n let stub = await readFile(stubPath, 'utf-8')\n\n if (table !== null) {\n stub = stub.replace(/DummyTable|{{\\s*table\\s*}}/g, table)\n }\n\n Logger.info('INFO: Creating Migration')\n\n await this.kernel.ensureDirectoryExists(nodepath.dirname(path))\n await writeFile(path, stub)\n\n Logger.split('INFO: Migration Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n /**\n * Create a new model factory\n */\n protected makeFactory () {\n Logger.success('Factory support is not yet available')\n }\n\n /**\n * Create a new seeder class\n */\n protected makeSeeder () {\n Logger.success('Seeder support is not yet available')\n }\n\n /**\n * Generate a new Arquebus model class\n */\n protected async makeModel () {\n const type = this.option('type', 'ts')\n const name = this.argument('name')\n const force = this.argument('force')\n\n const path = nodepath.join(app_path('Models'), name.toLowerCase(), '.' + type)\n\n /** Check if the model already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} view already exists`)\n }\n\n const crtlrPath = Utils.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/model-${type}.stub`)\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n Logger.split('INFO: Model Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n /**\n * Create a new view.\n */\n protected async makeView () {\n const name = this.argument('name')\n const force = this.option('force')\n\n const path = nodepath.join(base_path('src/resources/views'), name + '.edge')\n\n if (name.includes('/')) {\n await mkdir(beforeLast(path, '/'), { recursive: true })\n }\n\n /** Check if the view already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} view already exists`)\n }\n\n await writeFile(path, `{{-- src/resources/views/${name}.edge --}}`)\n Logger.split('INFO: View Created', Logger.log(`src/resources/views/${name}.edge`, 'gray', false))\n }\n\n /**\n * Ge the database migration file name\n * \n * @param table \n * @param create \n * @param type \n * @returns \n */\n getMigrationStubName (table?: string, create: boolean = false, type: 'ts' | 'js' = 'ts') {\n let stub: string\n if (!table) {\n stub = `migration-${type}.stub`\n }\n else if (create) {\n stub = `migration.create-${type}.stub`\n }\n else {\n stub = `migration.update-${type}.stub`\n }\n return 'dist/stubs/' + stub\n }\n}\n","import { CommandOption, ParsedCommand } from './Contracts/ICommand'\n\nimport { Command } from './Commands/Command'\n\nexport class Signature {\n /**\n * Helper to parse options inside a block of text\n * \n * @param block \n * @returns \n */\n static parseOptions (block: string): CommandOption[] {\n const options: CommandOption[] = []\n /**\n * Match { ... } blocks at top level \n */\n const regex = /\\{([^{}]+(?:\\{[^{}]*\\}[^{}]*)*)\\}/g\n let match\n\n while ((match = regex.exec(block)) !== null) {\n const shared = '^' === match[1][0]! || /:[#^]/.test(match[1])\n const isHidden = (['#', '^'].includes(match[1][0]!) || /:[#^]/.test(match[1])) && !shared\n const content = match[1].trim().replace(/[#^]/, '')\n /**\n * Split by first ':' to separate name and description+nested\n */\n const colonIndex = content.indexOf(':')\n if (colonIndex === -1) {\n /**\n * No description, treat whole as name\n */\n options.push({ name: content })\n continue\n }\n\n const namePart = content.substring(0, colonIndex).trim()\n const rest = content.substring(colonIndex + 1).trim()\n\n /**\n * Check for nested options after '|'\n */\n let description = rest\n let nestedOptions: CommandOption[] | undefined\n\n const pipeIndex = rest.indexOf('|')\n if (pipeIndex !== -1) {\n description = rest.substring(0, pipeIndex).trim()\n const nestedText = rest.substring(pipeIndex + 1).trim()\n /**\n * nestedText should start with '{' and end with ')', clean it\n * Also Remove trailing ')' if present\n */\n const cleanedNestedText = nestedText.replace(/^\\{/, '').trim()\n\n /**\n * Parse nested options recursively\n */\n nestedOptions = Signature.parseOptions('{' + cleanedNestedText + '}')\n } else {\n /**\n * Trim the string\n */\n description = description.trim()\n }\n\n /**\n * Parse name modifiers (?, *, ?*)\n */\n let name = namePart\n let required = /[^a-zA-Z0-9_|-]/.test(name)\n let multiple = false\n\n if (name.endsWith('?*')) {\n required = false\n multiple = true\n name = name.slice(0, -2)\n } else if (name.endsWith('*')) {\n multiple = true\n name = name.slice(0, -1)\n } else if (name.endsWith('?')) {\n required = false\n name = name.slice(0, -1)\n }\n\n /**\n * Check if it's a flag option (starts with --)\n */\n const isFlag = name.startsWith('--')\n let flags: string[] | undefined\n let defaultValue: string | number | boolean | undefined | string[]\n\n if (isFlag) {\n /**\n * Parse flags and default values\n */\n const flagParts = name.split('|').map(s => s.trim())\n\n flags = []\n\n for (let part of flagParts) {\n if (part.startsWith('--') && part.slice(2).length === 1) {\n part = '-' + part.slice(2)\n } else if (part.startsWith('-') && !part.startsWith('--') && part.slice(1).length > 1) {\n part = '--' + part.slice(1)\n } else if (!part.startsWith('-') && part.slice(1).length > 1) {\n part = '--' + part\n }\n\n const eqIndex = part.indexOf('=')\n if (eqIndex !== -1) {\n flags.push(part.substring(0, eqIndex))\n const val = part.substring(eqIndex + 1)\n if (val === '*') {\n defaultValue = []\n } else if (val === 'true' || val === 'false' || (!val && !required)) {\n defaultValue = val === 'true'\n } else if (!isNaN(Number(val))) {\n defaultValue = Number(val)\n } else {\n defaultValue = val\n }\n } else {\n flags.push(part)\n }\n }\n }\n\n options.push({\n name: isFlag ? flags![flags!.length - 1] : name,\n required,\n multiple,\n description,\n flags,\n shared,\n isFlag,\n isHidden,\n defaultValue,\n nestedOptions,\n })\n }\n\n return options\n }\n\n /**\n * Helper to parse a command's signature\n * \n * @param signature \n * @param commandClass \n * @returns \n */\n static parseSignature (signature: string, commandClass: Command): ParsedCommand {\n const lines = signature.split('\\n').map(l => l.trim()).filter(l => l.length > 0)\n const isHidden = ['#', '^'].includes(lines[0][0]!) || /:[#^]/.test(lines[0])\n const baseCommand = lines[0].replace(/[^\\w=:-]/g, '')\n const description = commandClass.getDescription()\n const isNamespaceCommand = baseCommand.endsWith(':')\n\n /**\n * Join the rest lines to a single string for parsing\n */\n const rest = lines.slice(1).join(' ')\n\n /**\n * Parse all top-level options/subcommands\n */\n const allOptions = Signature.parseOptions(rest)\n\n if (isNamespaceCommand) {\n /**\n * Separate subcommands (those without flags) and base options (flags)\n * Here we assume subcommands are those without flags (isFlag false)\n * and base options are flags or options after subcommands\n\n * For simplicity, treat all top-level options as subcommands\n * and assume base command options come after subcommands in signature (not shown in example)\n */\n\n return {\n baseCommand: baseCommand.slice(0, -1),\n isNamespaceCommand,\n subCommands: allOptions.filter(e => !e.flags && !e.isHidden),\n description,\n commandClass,\n options: allOptions.filter(e => !!e.flags),\n isHidden,\n }\n } else {\n return {\n baseCommand,\n isNamespaceCommand,\n options: allOptions,\n description,\n commandClass,\n isHidden,\n }\n }\n }\n}\n","import { dirname, join, resolve } from 'path';\n\nimport { fork } from 'child_process';\n\nfunction run (opts = {}) {\n let input;\n let proc;\n const args = opts.args || [];\n const allowRestarts = opts.allowRestarts || false;\n const overrideInput = opts.input;\n const forkOptions = opts.options || opts;\n delete forkOptions.args;\n delete forkOptions.allowRestarts;\n return {\n name: 'run',\n buildStart (options) {\n let inputs = overrideInput !== null && overrideInput !== void 0 ? overrideInput : options.input;\n if (typeof inputs === 'string') {\n inputs = [inputs];\n }\n if (typeof inputs === 'object') {\n inputs = Object.values(inputs);\n }\n if (inputs.length > 1) {\n throw new Error(`@rollup/plugin-run must have a single entry point; consider setting the \\`input\\` option`);\n }\n input = resolve(inputs[0]);\n },\n generateBundle (_outputOptions, _bundle, isWrite) {\n if (!isWrite) {\n this.error(`@rollup/plugin-run currently only works with bundles that are written to disk`);\n }\n },\n writeBundle (outputOptions, bundle) {\n const forkBundle = (dir, entryFileName) => {\n if (proc)\n proc.kill();\n proc = fork(join(dir, entryFileName), args, forkOptions);\n };\n const dir = outputOptions.dir || dirname(outputOptions.file);\n const entryFileName = Object.keys(bundle).find((fileName) => {\n const chunk = bundle[fileName];\n return chunk.isEntry && chunk.facadeModuleId === input;\n });\n if (entryFileName) {\n forkBundle(dir, entryFileName);\n if (allowRestarts) {\n process.stdin.resume();\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', (data) => {\n const line = data.toString().trim().toLowerCase();\n if (line === 'rs' || line === 'restart' || data.toString().charCodeAt(0) === 11) {\n forkBundle(dir, entryFileName);\n }\n else if (line === 'cls' || line === 'clear' || data.toString().charCodeAt(0) === 12) {\n // eslint-disable-next-line no-console\n console.clear();\n }\n });\n }\n }\n else {\n this.error(`@rollup/plugin-run could not find output chunk`);\n }\n }\n };\n}\n\nexport { run as default };\n//# sourceMappingURL=index.js.map\n","import { Options } from 'tsdown'\nimport run from '@rollup/plugin-run'\n\nconst env = process.env.NODE_ENV || 'development'\nconst outDir = env === 'development' ? '.h3ravel/serve' : 'dist'\n\nexport const TsDownConfig: Options = {\n outDir,\n entry: ['src/**/*.ts'],\n format: ['esm'],//, 'cjs'],\n target: 'node22',\n sourcemap: env === 'development',\n clean: true,\n shims: true,\n copy: [{ from: 'public', to: outDir }, 'src/resources', 'src/database'],\n env: env === 'development' ? {\n NODE_ENV: env,\n SRC_PATH: outDir,\n } : {},\n watch:\n env === 'development' && process.env.CLI_BUILD !== 'true'\n ? ['.env', '.env.*', 'src', '../../packages']\n : false,\n dts: false,\n logLevel: 'silent',\n nodeProtocol: true,\n skipNodeModulesBundle: true,\n plugins: env === 'development' && process.env.CLI_BUILD !== 'true' ? [\n run({\n env: Object.assign({}, process.env, {\n NODE_ENV: env,\n SRC_PATH: outDir,\n }),\n execArgv: ['-r', 'source-map-support/register'],\n allowRestarts: false,\n input: process.cwd() + '/src/server.ts'//\n })\n ] : [],\n}\n\nexport default TsDownConfig\n","import { CommandOption, ParsedCommand } from './Contracts/ICommand'\nimport { Option, program, type Command as Commander } from 'commander'\n\nimport { Application } from '@h3ravel/core'\nimport { Command } from './Commands/Command'\nimport { Kernel } from './Kernel'\nimport { ListCommand } from './Commands/ListCommand'\nimport { Logger } from '@h3ravel/shared'\nimport { MakeCommand } from './Commands/MakeCommand'\nimport { Signature } from './Signature'\nimport TsDownConfig from './TsdownConfig'\nimport { altLogo } from './logo'\nimport { build } from 'tsdown'\nimport { glob } from 'node:fs/promises'\nimport path from 'node:path'\n\n/**\n * Musket is H3ravel's CLI tool\n */\nexport class Musket {\n private commands: ParsedCommand[] = []\n\n constructor(private app: Application, private kernel: Kernel) { }\n\n async build () {\n this.loadBaseCommands()\n await this.loadDiscoveredCommands()\n return this.initialize()\n }\n\n private loadBaseCommands () {\n const commands: Command[] = [\n new MakeCommand(this.app, this.kernel),\n new ListCommand(this.app, this.kernel),\n ]\n\n commands.forEach(e => this.addCommand(e))\n }\n\n private async loadDiscoveredCommands () {\n const commands: Command[] = [\n ...this.app.registeredCommands.map(cmd => new cmd(this.app, this.kernel))\n ]\n\n /**\n * Musket Commands auto registration\n */\n const providers_path = app_path('Console/Commands/*.js').replace('/src/', '/.h3ravel/serve/')\n\n /** Add the App Commands */\n for await (const cmd of glob(providers_path)) {\n const name = path.basename(cmd).replace('.js', '')\n try {\n const cmdClass = (await import(cmd))[name]\n commands.push(new cmdClass(this.app, this.kernel))\n } catch { /** */ }\n }\n\n commands.forEach(e => this.addCommand(e))\n }\n\n addCommand (command: Command) {\n this.commands.push(Signature.parseSignature(command.getSignature(), command))\n }\n\n private initialize () {\n /** Init the Musket Version */\n const cliVersion = Logger.parse([\n ['Musket CLI:', 'white'],\n [this.kernel.consolePackage.version, 'green']\n ], ' ', false)\n\n /** Init the App Version */\n const localVersion = Logger.parse([\n ['H3ravel Framework:', 'white'],\n [this.kernel.modulePackage.version, 'green']\n ], ' ', false)\n\n const additional = {\n quiet: ['-q, --quiet', 'Do not output any message'],\n silent: ['--silent', 'Do not output any message'],\n verbose: ['-v, --verbose <number>', 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'],\n lock: ['--lock', 'Locked and loaded, do not ask any interactive question'],\n }\n\n /** Init Commander */\n program\n .name('musket')\n .version(`${cliVersion}\\n${localVersion}`)\n .description(altLogo)\n .addOption(new Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true }))\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .addOption(new Option(additional.verbose[0], additional.verbose[1]).choices(['1', '2', '3']))\n .addOption(new Option(additional.lock[0], additional.lock[1]))\n .action(async () => {\n const instance = new ListCommand(this.app, this.kernel)\n instance.setInput(program.opts(), program.args, program.registeredArguments, {}, program)\n instance.handle()\n })\n\n /** Create the init Command */\n program\n .command('init')\n .description('Initialize H3ravel.')\n .action(async () => {\n Logger.success('Initialized: H3ravel has been initialized!')\n })\n\n /** Loop through all the available commands */\n for (let i = 0; i < this.commands.length; i++) {\n const command = this.commands[i]\n const instance = command.commandClass\n\n if (command.isNamespaceCommand && command.subCommands) {\n /**\n * Initialize the base command\n */\n const cmd = command.isHidden\n ? program\n : program\n .command(command.baseCommand)\n .description(command.description ?? '')\n .addOption(new Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true }))\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .addOption(new Option(additional.verbose[0], additional.verbose[1]).choices(['1', '2', '3']))\n .addOption(new Option(additional.lock[0], additional.lock[1]))\n .action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, program)\n await instance.handle()\n })\n\n /**\n * Add options to the base command if it has any\n */\n if ((command.options?.length ?? 0) > 0) {\n command.options\n ?.filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd)\n })\n }\n\n /**\n * Initialize the sub commands\n */\n command\n .subCommands\n .filter((v, i, a) => !v.shared && a.findIndex(t => t.name === v.name) === i)\n .forEach(sub => {\n const cmd = program\n .command(`${command.baseCommand}:${sub.name}`)\n .description(sub.description || '')\n .addOption(new Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true }))\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .addOption(new Option(additional.verbose[0], additional.verbose[1]).choices(['1', '2', '3']))\n .addOption(new Option(additional.lock[0], additional.lock[1]))\n .action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, sub, program)\n await instance.handle()\n })\n\n /**\n * Add the shared arguments here\n */\n command.subCommands?.filter(e => e.shared).forEach(opt => {\n this.makeOption(opt, cmd, false, sub)\n })\n\n /**\n * Add the shared options here\n */\n command.options?.filter(e => e.shared).forEach(opt => {\n this.makeOption(opt, cmd, false, sub)\n })\n\n /**\n * Add options to the sub command if it has any\n */\n if (sub.nestedOptions) {\n sub.nestedOptions\n .filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd)\n })\n }\n })\n } else {\n /**\n * Initialize command with options\n */\n const cmd = program\n .command(command.baseCommand)\n .description(command.description ?? '')\n\n command\n ?.options\n ?.filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd, true)\n })\n\n cmd.action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, program)\n await instance.handle()\n })\n }\n }\n\n /** Rebuild the app on every command except fire so we wont need TS */\n program.hook('preAction', async (_, cmd) => {\n if (cmd.name() !== 'fire') {\n await build({\n ...TsDownConfig,\n watch: false,\n plugins: []\n })\n }\n })\n\n return program\n }\n\n makeOption (opt: CommandOption, cmd: Commander, parse?: boolean, parent?: any) {\n const description = opt.description?.replace(/\\[(\\w+)\\]/g, (_, k) => parent?.[k] ?? `[${k}]`) ?? ''\n const type = opt.name.replaceAll('-', '')\n\n if (opt.isFlag) {\n if (parse) {\n const flags = opt.flags\n ?.map(f => (f.length === 1 ? `-${f}` : `--${f}`)).join(', ')!\n .replaceAll('----', '--')\n .replaceAll('---', '-')\n\n cmd.option(flags || '', description!, String(opt.defaultValue) || undefined)\n } else {\n cmd.option(\n opt.flags?.join(', ') + (opt.required ? ` <${type}>` : ''),\n description!,\n opt.defaultValue as any\n )\n }\n } else {\n cmd.argument(\n opt.required ? `<${opt.name}>` : `[${opt.name}]`,\n description,\n opt.defaultValue\n )\n }\n }\n\n static async parse (kernel: Kernel) {\n return (await new Musket(kernel.app, kernel).build()).parseAsync()\n }\n\n}\n","import { Application, ConsoleKernel } from '@h3ravel/core'\n\nimport { Helpers } from '@h3ravel/filesystem'\nimport { Musket } from './Musket'\nimport path from 'node:path'\n\nexport class Kernel extends ConsoleKernel {\n constructor(public app: Application) {\n super(app)\n }\n\n static init (app: Application) {\n const instance = new Kernel(app)\n\n Promise.all([instance.loadRequirements()])\n .then(([e]) => e.run())\n }\n\n\n private async run () {\n await Musket.parse(this)\n process.exit(0)\n }\n\n private async loadRequirements () {\n this.cwd = path.join(process.cwd(), this.basePath)\n this.modulePath = Helpers.findModulePkg('@h3ravel/core', this.cwd) ?? ''\n this.consolePath = Helpers.findModulePkg('@h3ravel/console', this.cwd) ?? ''\n\n try {\n this.modulePackage = await import(path.join(this.modulePath, 'package.json'))\n } catch {\n this.modulePackage = { version: 'N/A' }\n }\n\n try {\n this.consolePackage = await import(path.join(this.consolePath, 'package.json'))\n } catch {\n this.consolePackage = { version: 'N/A' }\n }\n\n return this\n }\n}\n","/// <reference path=\"../../../core/src/app.globals.d.ts\" />\n\nimport { Kernel } from '../Kernel'\nimport { ServiceProvider } from '@h3ravel/core'\n/**\n * Handles CLI commands and tooling.\n * \n * Register DatabaseManager and QueryBuilder.\n * Set up ORM models and relationships.\n * Register migration and seeder commands.\n * \n * Auto-Registered when in CLI mode\n */\nexport class ConsoleServiceProvider extends ServiceProvider {\n public static priority = 992\n\n /**\n * Indicate that this service provider only runs in console\n */\n public static console = true\n\n register () {\n }\n\n boot () {\n Kernel.init(this.app)\n\n process.on('SIGINT', () => {\n process.exit(0)\n })\n process.on('SIGTERM', () => {\n process.exit(0)\n })\n }\n}\n"],"x_google_ignoreList":[6],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { TableGuesser, Utils } from "./Utils-rIdzILgO.cjs";
2
2
  import { Application, ConsoleCommand, ConsoleKernel, ServiceProvider } from "@h3ravel/core";
3
- import * as commander0 from "commander";
4
- import { program } from "commander";
3
+ import { Command as Command$1 } from "commander";
5
4
  import { Options } from "tsdown";
6
5
 
7
6
  //#region src/Commands/Command.d.ts
@@ -144,13 +143,13 @@ declare class Musket {
144
143
  private kernel;
145
144
  private commands;
146
145
  constructor(app: Application, kernel: Kernel);
147
- build(): Promise<commander0.Command>;
146
+ build(): Promise<Command$1>;
148
147
  private loadBaseCommands;
149
148
  private loadDiscoveredCommands;
150
149
  addCommand(command: Command): void;
151
150
  private initialize;
152
- makeOption(opt: CommandOption, cmd: typeof program, parse?: boolean, parent?: any): void;
153
- static parse(kernel: Kernel): Promise<commander0.Command>;
151
+ makeOption(opt: CommandOption, cmd: Command$1, parse?: boolean, parent?: any): void;
152
+ static parse(kernel: Kernel): Promise<Command$1>;
154
153
  }
155
154
  //#endregion
156
155
  //#region src/Providers/ConsoleServiceProvider.d.ts
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { TableGuesser, Utils } from "./Utils-cBgwEyTl.js";
2
2
  import { Application, ConsoleCommand, ConsoleKernel, ServiceProvider } from "@h3ravel/core";
3
- import * as commander0 from "commander";
4
- import { program } from "commander";
3
+ import { Command as Command$1 } from "commander";
5
4
  import { Options } from "tsdown";
6
5
 
7
6
  //#region src/Commands/Command.d.ts
@@ -144,13 +143,13 @@ declare class Musket {
144
143
  private kernel;
145
144
  private commands;
146
145
  constructor(app: Application, kernel: Kernel);
147
- build(): Promise<commander0.Command>;
146
+ build(): Promise<Command$1>;
148
147
  private loadBaseCommands;
149
148
  private loadDiscoveredCommands;
150
149
  addCommand(command: Command): void;
151
150
  private initialize;
152
- makeOption(opt: CommandOption, cmd: typeof program, parse?: boolean, parent?: any): void;
153
- static parse(kernel: Kernel): Promise<commander0.Command>;
151
+ makeOption(opt: CommandOption, cmd: Command$1, parse?: boolean, parent?: any): void;
152
+ static parse(kernel: Kernel): Promise<Command$1>;
154
153
  }
155
154
  //#endregion
156
155
  //#region src/Providers/ConsoleServiceProvider.d.ts
package/dist/index.js CHANGED
@@ -8,7 +8,6 @@ import { beforeLast } from "@h3ravel/support";
8
8
  import dayjs from "dayjs";
9
9
  import { existsSync } from "node:fs";
10
10
  import nodepath from "node:path";
11
- import "@h3ravel/console";
12
11
  import "@h3ravel/http";
13
12
  import "@h3ravel/router";
14
13
  import "@h3ravel/database";
@@ -354,7 +353,7 @@ var Signature = class Signature {
354
353
  continue;
355
354
  }
356
355
  const namePart = content.substring(0, colonIndex).trim();
357
- let rest = content.substring(colonIndex + 1).trim();
356
+ const rest = content.substring(colonIndex + 1).trim();
358
357
  /**
359
358
  * Check for nested options after '|'
360
359
  */
@@ -628,10 +627,14 @@ var Musket = class Musket {
628
627
  quiet: ["-q, --quiet", "Do not output any message"],
629
628
  silent: ["--silent", "Do not output any message"],
630
629
  verbose: ["-v, --verbose <number>", "Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug"],
631
- interaction: ["-n, --no-interaction", "Do not ask any interactive question"]
630
+ lock: ["--lock", "Locked and loaded, do not ask any interactive question"]
632
631
  };
633
632
  /** Init Commander */
634
- program.name("musket").version(`${cliVersion}\n${localVersion}`).addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).option(additional.quiet[0], additional.quiet[1]).option(additional.verbose[0], additional.verbose[1]).option(additional.interaction[0], additional.interaction[1]).description(altLogo).action(async () => {
633
+ program.name("musket").version(`${cliVersion}\n${localVersion}`).description(altLogo).addOption(new Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true })).addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).addOption(new Option(additional.verbose[0], additional.verbose[1]).choices([
634
+ "1",
635
+ "2",
636
+ "3"
637
+ ])).addOption(new Option(additional.lock[0], additional.lock[1])).action(async () => {
635
638
  const instance = new ListCommand(this.app, this.kernel);
636
639
  instance.setInput(program.opts(), program.args, program.registeredArguments, {}, program);
637
640
  instance.handle();
@@ -648,7 +651,11 @@ var Musket = class Musket {
648
651
  /**
649
652
  * Initialize the base command
650
653
  */
651
- const cmd = command.isHidden ? program : program.command(command.baseCommand).description(command.description ?? "").addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).option(additional.quiet[0], additional.quiet[1]).option(additional.verbose[0], additional.verbose[1]).option(additional.interaction[0], additional.interaction[1]).action(async () => {
654
+ const cmd = command.isHidden ? program : program.command(command.baseCommand).description(command.description ?? "").addOption(new Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true })).addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).addOption(new Option(additional.verbose[0], additional.verbose[1]).choices([
655
+ "1",
656
+ "2",
657
+ "3"
658
+ ])).addOption(new Option(additional.lock[0], additional.lock[1])).action(async () => {
652
659
  instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, program);
653
660
  await instance.handle();
654
661
  });
@@ -662,7 +669,11 @@ var Musket = class Musket {
662
669
  * Initialize the sub commands
663
670
  */
664
671
  command.subCommands.filter((v, i$1, a) => !v.shared && a.findIndex((t) => t.name === v.name) === i$1).forEach((sub) => {
665
- const cmd$1 = program.command(`${command.baseCommand}:${sub.name}`).description(sub.description || "").addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).option(additional.quiet[0], additional.quiet[1]).option(additional.verbose[0], additional.verbose[1]).option(additional.interaction[0], additional.interaction[1]).action(async () => {
672
+ const cmd$1 = program.command(`${command.baseCommand}:${sub.name}`).description(sub.description || "").addOption(new Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true })).addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).addOption(new Option(additional.verbose[0], additional.verbose[1]).choices([
673
+ "1",
674
+ "2",
675
+ "3"
676
+ ])).addOption(new Option(additional.lock[0], additional.lock[1])).action(async () => {
666
677
  instance.setInput(cmd$1.opts(), cmd$1.args, cmd$1.registeredArguments, sub, program);
667
678
  await instance.handle();
668
679
  });
@@ -689,7 +700,7 @@ var Musket = class Musket {
689
700
  /**
690
701
  * Initialize command with options
691
702
  */
692
- const cmd = program.command(command.baseCommand).description(command.description ?? "").addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true })).option(additional.quiet[0], additional.quiet[1]).option(additional.verbose[0], additional.verbose[1]).option(additional.interaction[0], additional.interaction[1]);
703
+ const cmd = program.command(command.baseCommand).description(command.description ?? "");
693
704
  command?.options?.filter((v, i$1, a) => a.findIndex((t) => t.name === v.name) === i$1).forEach((opt) => {
694
705
  this.makeOption(opt, cmd, true);
695
706
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["e","escalade","path","stub: string","options: CommandOption[]","nestedOptions: CommandOption[] | undefined","flags: string[] | undefined","defaultValue: string | number | boolean | undefined | string[]","dir","entryFileName","TsDownConfig: Options","app: Application","kernel: Kernel","commands: Command[]","path","i","cmd","TsDownConfig","app: Application","path"],"sources":["../src/Commands/Command.ts","../src/logo.ts","../src/Commands/ListCommand.ts","../../filesystem/dist/index.js","../src/Commands/MakeCommand.ts","../src/Signature.ts","../../../node_modules/.pnpm/@rollup+plugin-run@3.1.0/node_modules/@rollup/plugin-run/dist/es/index.js","../src/TsdownConfig.ts","../src/Musket.ts","../src/Kernel.ts","../src/Providers/ConsoleServiceProvider.ts"],"sourcesContent":["import { ConsoleCommand } from '@h3ravel/core'\n\nexport class Command extends ConsoleCommand { }\n","export const logo = String.raw`\n 111 \n 111111111 \n 1111111111 111111 \n 111111 111 111111 \n 111111 111 111111 \n11111 111 11111 \n1111111 111 1111111 \n111 11111 111 111111 111 1111 1111 11111111 1111\n111 11111 1111 111111 111 1111 1111 1111 11111 1111\n111 11111 11111 111 1111 1111 111111111111 111111111111 1111 1111111 1111\n111 111111 1111 111 111111111111 111111 11111 1111 111 1111 11111111 1111 1111\n111 111 11111111 111 1101 1101 111111111 11111111 1111 1111111111111111101\n111 1111111111111111 1111 111 1111 1111 111 11111011 1111 111 1111111 1101 1111\n111 11111 1110111111111111 111 1111 1111 1111111101 1111 111111111 1111011 111111111 1111\n1111111 111110111110 111 1111 1111 111111 1111 11011101 10111 11111 1111\n11011 111111 11 11111 \n 111111 11101 111111 \n 111111 111 111111 \n 111111 111 111111 \n 111111111 \n 110 \n`\n\nexport const altLogo = String.raw`\n _ _ _____ _ \n| | | |___ / _ __ __ ___ _____| |\n| |_| | |_ \\| '__/ _ \\ \\ / / _ \\ |\n| _ |___) | | | (_| |\\ V / __/ |\n|_| |_|____/|_| \\__,_| \\_/ \\___|_|\n\n`\n","import { Command } from './Command'\nimport { Logger } from '@h3ravel/shared'\nimport { Option } from 'commander'\n/* eslint-disable no-control-regex */\nimport { altLogo } from '../logo'\n\nexport class ListCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = 'list'\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'List all available commands'\n\n public async handle () {\n const options = [\n {\n short: '-h',\n long: '--help',\n description: 'Display help for the given command. When no command is given display help for the list command'\n } as Option\n ]\n .concat(this.program.options)\n .map(e => {\n const desc = Logger.describe(Logger.log(\n ' ' + [e.short, e.long].filter(e => !!e).join(', '), 'green', false\n ), e.description, 25, false)\n return desc.join('')\n })\n\n /** Get the program commands */\n const commands = this.program.commands.map(e => {\n const desc = Logger.describe(Logger.log(' ' + e.name(), 'green', false), e.description(), 25, false)\n return desc.join('')\n })\n\n const grouped = commands.reduce<Record<string, string[]>>((acc, cmd) => {\n /** strip colors before checking prefix */\n const clean = cmd.replace(/\\x1b\\[\\d+m/g, '')\n const prefix = clean.includes(':') ? clean.split(':')[0].trim() : '__root__'\n acc[prefix] ??= []\n /** keep original with colors */\n acc[prefix].push(cmd)\n return acc\n }, {})\n\n const list = Object.entries(grouped).map(([group, cmds]) => {\n const label = group === '__root__' ? '' : group\n return [Logger.log(label, 'yellow', false), cmds.join('\\n')].join('\\n')\n })\n\n /** Ootput the app version */\n Logger.log([['H3ravel Framework', 'white'], [this.kernel.modulePackage.version, 'green']], ' ')\n\n console.log('')\n\n console.log(altLogo)\n\n console.log('')\n\n Logger.log('Usage:', 'yellow')\n Logger.log(' command [options] [arguments]', 'white')\n\n console.log('')\n\n /** Ootput the options */\n Logger.log('Options:', 'yellow')\n console.log(options.join('\\n').trim())\n\n console.log('')\n\n /** Ootput the commands */\n Logger.log('Available Commands:', 'yellow')\n console.log(list.join('\\n\\n').trim())\n }\n}\n","import { ServiceProvider } from \"@h3ravel/core\";\nimport { access } from \"fs/promises\";\nimport escalade from \"escalade/sync\";\nimport path from \"path\";\n\n//#region src/Providers/FilesystemProvider.ts\n/**\n* Sets up Filesystem management and lifecycle.\n* \n*/\nvar FilesystemProvider = class extends ServiceProvider {\n\tstatic priority = 997;\n\tregister() {}\n};\n\n//#endregion\n//#region src/Utils/Helpers.ts\nvar Helpers = class {\n\tstatic findModulePkg(moduleId, cwd) {\n\t\tconst parts = moduleId.replace(/\\\\/g, \"/\").split(\"/\");\n\t\tlet packageName = \"\";\n\t\tif (parts.length > 0 && parts[0][0] === \"@\") packageName += parts.shift() + \"/\";\n\t\tpackageName += parts.shift();\n\t\tconst packageJson = path.join(cwd ?? process.cwd(), \"node_modules\", packageName);\n\t\tconst resolved = this.findUpConfig(packageJson, \"package\", [\"json\"]);\n\t\tif (!resolved) return;\n\t\treturn path.join(path.dirname(resolved), parts.join(\"/\"));\n\t}\n\t/**\n\t* Check if file exists\n\t* \n\t* @param path \n\t* @returns \n\t*/\n\tstatic async fileExists(path$1) {\n\t\ttry {\n\t\t\tawait access(path$1);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\tstatic findUpConfig(cwd, name, extensions) {\n\t\treturn escalade(cwd, (_dir, names) => {\n\t\t\tfor (const ext of extensions) {\n\t\t\t\tconst filename = `${name}.${ext}`;\n\t\t\t\tif (names.includes(filename)) return filename;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n};\n\n//#endregion\nexport { FilesystemProvider, Helpers };\n//# sourceMappingURL=index.js.map","import { TableGuesser, Utils } from '../Utils'\nimport { mkdir, readFile, writeFile } from 'node:fs/promises'\n\nimport { Command } from './Command'\nimport { Helpers } from '@h3ravel/filesystem'\nimport { Logger } from '@h3ravel/shared'\nimport { beforeLast } from '@h3ravel/support'\nimport dayjs from 'dayjs'\nimport { existsSync } from 'node:fs'\nimport nodepath from 'node:path'\n\nexport class MakeCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `#make:\n {controller : Create a new controller class. \n | {--a|api : Exclude the create and edit methods from the controller} \n | {--m|model= : Generate a resource controller for the given model} \n | {--r|resource : Generate a resource controller class} \n | {--force : Create the controller even if it already exists}\n }\n {resource : Create a new resource. \n | {--c|collection : Create a resource collection}\n | {--force : Create the resource even if it already exists}\n }\n {migration : Generates a new database migration class. \n | {--l|type=ts : The file type to generate} \n | {--t|table : The table to migrate} \n | {--c|create : The table to be created} \n }\n {factory : Create a new model factory.}\n {seeder : Create a new seeder class.}\n {view : Create a new view.\n | {--force : Create the view even if it already exists}\n }\n {model : Create a new Eloquent model class. \n | {--api : Indicates if the generated controller should be an API resource controller} \n | {--c|controller : Create a new controller for the model} \n | {--f|factory : Create a new factory for the model} \n | {--m|migration : Create a new migration file for the model} \n | {--r|resource : Indicates if the generated controller should be a resource controller} \n | {--a|all : Generate a migration, seeder, factory, policy, resource controller, and form request classes for the model} \n | {--s|seed : Create a new seeder for the model} \n | {--t|type=ts : The file type to generate}\n | {--force : Create the model even if it already exists}\n } \n {^name : The name of the [name] to generate}\n `\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Generate component classes'\n\n public async handle () {\n const command = (this.dictionary.baseCommand ?? this.dictionary.name) as never\n\n const methods = {\n controller: 'makeController',\n resource: 'makeResource',\n migration: 'makeMigration',\n factory: 'makeFactory',\n seeder: 'makeSeeder',\n model: 'makeModel',\n view: 'makeView',\n } as const\n\n try {\n await (this as any)?.[methods[command]]()\n } catch (e) {\n Logger.error(e as any)\n }\n }\n\n /**\n * Create a new controller class.\n */\n protected async makeController () {\n const type = this.option('api') ? '-resource' : ''\n const name = this.argument('name')\n const force = this.option('force')\n\n const path = nodepath.join(app_path('Http/Controllers'), name + '.ts')\n const crtlrPath = Helpers.findModulePkg('@h3ravel/http', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/controller${type}.stub`)\n\n /** Check if the controller already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} controller already exists`)\n }\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n Logger.split('INFO: Controller Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n protected makeResource () {\n Logger.success('Resource support is not yet available')\n }\n\n /**\n * Generate a new database migration class\n */\n protected async makeMigration () {\n const name = this.argument('name')\n const datePrefix = dayjs().format('YYYY_MM_DD_HHmmss')\n const path = nodepath.join(database_path('migrations'), `${datePrefix}_${name}.ts`)\n\n const crtlrPath = Utils.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n\n let create = this.option('create', false)\n let table = this.option('table')\n if (!table && typeof create === 'string') {\n table = create\n create = true\n }\n\n if (!table) {\n const guessed = TableGuesser.guess(name)\n table = guessed[0]\n create = !!guessed[1]\n }\n\n const stubPath = nodepath.join(crtlrPath, this.getMigrationStubName(table, create))\n let stub = await readFile(stubPath, 'utf-8')\n\n if (table !== null) {\n stub = stub.replace(/DummyTable|{{\\s*table\\s*}}/g, table)\n }\n\n Logger.info('INFO: Creating Migration')\n\n await this.kernel.ensureDirectoryExists(nodepath.dirname(path))\n await writeFile(path, stub)\n\n Logger.split('INFO: Migration Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n /**\n * Create a new model factory\n */\n protected makeFactory () {\n Logger.success('Factory support is not yet available')\n }\n\n /**\n * Create a new seeder class\n */\n protected makeSeeder () {\n Logger.success('Seeder support is not yet available')\n }\n\n /**\n * Generate a new Arquebus model class\n */\n protected async makeModel () {\n const type = this.option('type', 'ts')\n const name = this.argument('name')\n const force = this.argument('force')\n\n const path = nodepath.join(app_path('Models'), name.toLowerCase(), '.' + type)\n\n /** Check if the model already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} view already exists`)\n }\n\n const crtlrPath = Utils.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/model-${type}.stub`)\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n Logger.split('INFO: Model Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n /**\n * Create a new view.\n */\n protected async makeView () {\n const name = this.argument('name')\n const force = this.option('force')\n\n const path = nodepath.join(base_path('src/resources/views'), name + '.edge')\n\n if (name.includes('/')) {\n await mkdir(beforeLast(path, '/'), { recursive: true })\n }\n\n /** Check if the view already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} view already exists`)\n }\n\n await writeFile(path, `{{-- src/resources/views/${name}.edge --}}`)\n Logger.split('INFO: View Created', Logger.log(`src/resources/views/${name}.edge`, 'gray', false))\n }\n\n /**\n * Ge the database migration file name\n * \n * @param table \n * @param create \n * @param type \n * @returns \n */\n getMigrationStubName (table?: string, create: boolean = false, type: 'ts' | 'js' = 'ts') {\n let stub: string\n if (!table) {\n stub = `migration-${type}.stub`\n }\n else if (create) {\n stub = `migration.create-${type}.stub`\n }\n else {\n stub = `migration.update-${type}.stub`\n }\n return 'dist/stubs/' + stub\n }\n}\n","import { CommandOption, ParsedCommand } from \"./Contracts/ICommand\";\n\nimport { Command } from \"./Commands/Command\";\n\nexport class Signature {\n /**\n * Helper to parse options inside a block of text\n * \n * @param block \n * @returns \n */\n static parseOptions (block: string): CommandOption[] {\n const options: CommandOption[] = [];\n /**\n * Match { ... } blocks at top level \n */\n const regex = /\\{([^{}]+(?:\\{[^{}]*\\}[^{}]*)*)\\}/g;\n let match;\n\n while ((match = regex.exec(block)) !== null) {\n const shared = '^' === match[1][0]! || /:[#^]/.test(match[1]);\n const isHidden = (['#', '^'].includes(match[1][0]!) || /:[#^]/.test(match[1])) && !shared;\n const content = match[1].trim().replace(/[#^]/, '');\n /**\n * Split by first ':' to separate name and description+nested\n */\n const colonIndex = content.indexOf(':');\n if (colonIndex === -1) {\n /**\n * No description, treat whole as name\n */\n options.push({ name: content });\n continue;\n }\n\n const namePart = content.substring(0, colonIndex).trim();\n let rest = content.substring(colonIndex + 1).trim();\n\n /**\n * Check for nested options after '|'\n */\n let description = rest;\n let nestedOptions: CommandOption[] | undefined;\n\n const pipeIndex = rest.indexOf('|');\n if (pipeIndex !== -1) {\n description = rest.substring(0, pipeIndex).trim();\n const nestedText = rest.substring(pipeIndex + 1).trim();\n /**\n * nestedText should start with '{' and end with ')', clean it\n * Also Remove trailing ')' if present\n */\n const cleanedNestedText = nestedText.replace(/^\\{/, '').trim();\n\n /**\n * Parse nested options recursively\n */\n nestedOptions = Signature.parseOptions('{' + cleanedNestedText + '}');\n } else {\n /**\n * Trim the string\n */\n description = description.trim();\n }\n\n /**\n * Parse name modifiers (?, *, ?*)\n */\n let name = namePart;\n let required = /[^a-zA-Z0-9_|-]/.test(name);\n let multiple = false;\n\n if (name.endsWith('?*')) {\n required = false;\n multiple = true;\n name = name.slice(0, -2);\n } else if (name.endsWith('*')) {\n multiple = true;\n name = name.slice(0, -1);\n } else if (name.endsWith('?')) {\n required = false;\n name = name.slice(0, -1);\n }\n\n /**\n * Check if it's a flag option (starts with --)\n */\n const isFlag = name.startsWith('--');\n let flags: string[] | undefined;\n let defaultValue: string | number | boolean | undefined | string[];\n\n if (isFlag) {\n /**\n * Parse flags and default values\n */\n const flagParts = name.split('|').map(s => s.trim());\n\n flags = [];\n\n for (let part of flagParts) {\n if (part.startsWith('--') && part.slice(2).length === 1) {\n part = '-' + part.slice(2);\n } else if (part.startsWith('-') && !part.startsWith('--') && part.slice(1).length > 1) {\n part = '--' + part.slice(1);\n } else if (!part.startsWith('-') && part.slice(1).length > 1) {\n part = '--' + part\n }\n\n const eqIndex = part.indexOf('=');\n if (eqIndex !== -1) {\n flags.push(part.substring(0, eqIndex));\n const val = part.substring(eqIndex + 1);\n if (val === '*') {\n defaultValue = [];\n } else if (val === 'true' || val === 'false' || (!val && !required)) {\n defaultValue = val === 'true';\n } else if (!isNaN(Number(val))) {\n defaultValue = Number(val);\n } else {\n defaultValue = val;\n }\n } else {\n flags.push(part);\n }\n }\n }\n\n options.push({\n name: isFlag ? flags![flags!.length - 1] : name,\n required,\n multiple,\n description,\n flags,\n shared,\n isFlag,\n isHidden,\n defaultValue,\n nestedOptions,\n });\n }\n\n return options;\n }\n\n /**\n * Helper to parse a command's signature\n * \n * @param signature \n * @param commandClass \n * @returns \n */\n static parseSignature (signature: string, commandClass: Command): ParsedCommand {\n const lines = signature.split('\\n').map(l => l.trim()).filter(l => l.length > 0);\n const isHidden = ['#', '^'].includes(lines[0][0]!) || /:[#^]/.test(lines[0]);\n const baseCommand = lines[0].replace(/[^\\w=:-]/g, '')\n const description = commandClass.getDescription()\n const isNamespaceCommand = baseCommand.endsWith(':');\n\n /**\n * Join the rest lines to a single string for parsing\n */\n const rest = lines.slice(1).join(' ');\n\n /**\n * Parse all top-level options/subcommands\n */\n const allOptions = Signature.parseOptions(rest);\n\n if (isNamespaceCommand) {\n /**\n * Separate subcommands (those without flags) and base options (flags)\n * Here we assume subcommands are those without flags (isFlag false)\n * and base options are flags or options after subcommands\n\n * For simplicity, treat all top-level options as subcommands\n * and assume base command options come after subcommands in signature (not shown in example)\n */\n\n return {\n baseCommand: baseCommand.slice(0, -1),\n isNamespaceCommand,\n subCommands: allOptions.filter(e => !e.flags && !e.isHidden),\n description,\n commandClass,\n options: allOptions.filter(e => !!e.flags),\n isHidden,\n };\n } else {\n return {\n baseCommand,\n isNamespaceCommand,\n options: allOptions,\n description,\n commandClass,\n isHidden,\n };\n }\n }\n}\n","import { dirname, join, resolve } from 'path';\n\nimport { fork } from 'child_process';\n\nfunction run (opts = {}) {\n let input;\n let proc;\n const args = opts.args || [];\n const allowRestarts = opts.allowRestarts || false;\n const overrideInput = opts.input;\n const forkOptions = opts.options || opts;\n delete forkOptions.args;\n delete forkOptions.allowRestarts;\n return {\n name: 'run',\n buildStart (options) {\n let inputs = overrideInput !== null && overrideInput !== void 0 ? overrideInput : options.input;\n if (typeof inputs === 'string') {\n inputs = [inputs];\n }\n if (typeof inputs === 'object') {\n inputs = Object.values(inputs);\n }\n if (inputs.length > 1) {\n throw new Error(`@rollup/plugin-run must have a single entry point; consider setting the \\`input\\` option`);\n }\n input = resolve(inputs[0]);\n },\n generateBundle (_outputOptions, _bundle, isWrite) {\n if (!isWrite) {\n this.error(`@rollup/plugin-run currently only works with bundles that are written to disk`);\n }\n },\n writeBundle (outputOptions, bundle) {\n const forkBundle = (dir, entryFileName) => {\n if (proc)\n proc.kill();\n proc = fork(join(dir, entryFileName), args, forkOptions);\n };\n const dir = outputOptions.dir || dirname(outputOptions.file);\n const entryFileName = Object.keys(bundle).find((fileName) => {\n const chunk = bundle[fileName];\n return chunk.isEntry && chunk.facadeModuleId === input;\n });\n if (entryFileName) {\n forkBundle(dir, entryFileName);\n if (allowRestarts) {\n process.stdin.resume();\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', (data) => {\n const line = data.toString().trim().toLowerCase();\n if (line === 'rs' || line === 'restart' || data.toString().charCodeAt(0) === 11) {\n forkBundle(dir, entryFileName);\n }\n else if (line === 'cls' || line === 'clear' || data.toString().charCodeAt(0) === 12) {\n // eslint-disable-next-line no-console\n console.clear();\n }\n });\n }\n }\n else {\n this.error(`@rollup/plugin-run could not find output chunk`);\n }\n }\n };\n}\n\nexport { run as default };\n//# sourceMappingURL=index.js.map\n","import { Options } from 'tsdown'\nimport run from '@rollup/plugin-run'\n\nconst env = process.env.NODE_ENV || 'development'\nconst outDir = env === 'development' ? '.h3ravel/serve' : 'dist'\n\nexport const TsDownConfig: Options = {\n outDir,\n entry: ['src/**/*.ts'],\n format: ['esm'],//, 'cjs'],\n target: 'node22',\n sourcemap: env === 'development',\n clean: true,\n shims: true,\n copy: [{ from: 'public', to: outDir }, 'src/resources', 'src/database'],\n env: env === 'development' ? {\n NODE_ENV: env,\n SRC_PATH: outDir,\n } : {},\n watch:\n env === 'development' && process.env.CLI_BUILD !== 'true'\n ? ['.env', '.env.*', 'src', '../../packages']\n : false,\n dts: false,\n logLevel: 'silent',\n nodeProtocol: true,\n skipNodeModulesBundle: true,\n plugins: env === 'development' && process.env.CLI_BUILD !== 'true' ? [\n run({\n env: Object.assign({}, process.env, {\n NODE_ENV: env,\n SRC_PATH: outDir,\n }),\n execArgv: ['-r', 'source-map-support/register'],\n allowRestarts: false,\n input: process.cwd() + '/src/server.ts'//\n })\n ] : [],\n}\n\nexport default TsDownConfig\n","import { CommandOption, ParsedCommand } from './Contracts/ICommand'\nimport { Option, program } from 'commander'\n\nimport { Application } from '@h3ravel/core'\nimport { Command } from './Commands/Command'\nimport { Kernel } from './Kernel'\nimport { ListCommand } from './Commands/ListCommand'\nimport { Logger } from '@h3ravel/shared'\nimport { MakeCommand } from './Commands/MakeCommand'\nimport { Signature } from './Signature'\nimport TsDownConfig from './TsdownConfig'\nimport { altLogo } from './logo'\nimport { build } from 'tsdown'\nimport { glob } from 'node:fs/promises'\nimport path from 'node:path'\n\n/**\n * Musket is H3ravel's CLI tool\n */\nexport class Musket {\n private commands: ParsedCommand[] = []\n\n constructor(private app: Application, private kernel: Kernel) { }\n\n async build () {\n this.loadBaseCommands()\n await this.loadDiscoveredCommands()\n return this.initialize()\n }\n\n private loadBaseCommands () {\n const commands: Command[] = [\n new MakeCommand(this.app, this.kernel),\n new ListCommand(this.app, this.kernel),\n ]\n\n commands.forEach(e => this.addCommand(e))\n }\n\n private async loadDiscoveredCommands () {\n const commands: Command[] = [\n ...this.app.registeredCommands.map(cmd => new cmd(this.app, this.kernel))\n ]\n\n /**\n * Musket Commands auto registration\n */\n const providers_path = app_path('Console/Commands/*.js').replace('/src/', '/.h3ravel/serve/')\n\n /** Add the App Commands */\n for await (const cmd of glob(providers_path)) {\n const name = path.basename(cmd).replace('.js', '')\n try {\n const cmdClass = (await import(cmd))[name]\n commands.push(new cmdClass(this.app, this.kernel))\n } catch { /** */ }\n }\n\n commands.forEach(e => this.addCommand(e))\n }\n\n addCommand (command: Command) {\n this.commands.push(Signature.parseSignature(command.getSignature(), command))\n }\n\n private initialize () {\n /** Init the Musket Version */\n const cliVersion = Logger.parse([\n ['Musket CLI:', 'white'],\n [this.kernel.consolePackage.version, 'green']\n ], ' ', false)\n\n /** Init the App Version */\n const localVersion = Logger.parse([\n ['H3ravel Framework:', 'white'],\n [this.kernel.modulePackage.version, 'green']\n ], ' ', false)\n\n const additional = {\n quiet: ['-q, --quiet', 'Do not output any message'],\n silent: ['--silent', 'Do not output any message'],\n verbose: ['-v, --verbose <number>', 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'],\n interaction: ['-n, --no-interaction', 'Do not ask any interactive question'],\n }\n\n /** Init Commander */\n program\n .name('musket')\n .version(`${cliVersion}\\n${localVersion}`)\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .option(additional.quiet[0], additional.quiet[1])\n .option(additional.verbose[0], additional.verbose[1])\n .option(additional.interaction[0], additional.interaction[1])\n .description(altLogo)\n .action(async () => {\n const instance = new ListCommand(this.app, this.kernel)\n instance.setInput(program.opts(), program.args, program.registeredArguments, {}, program)\n instance.handle()\n })\n\n /** Create the init Command */\n program\n .command('init')\n .description('Initialize H3ravel.')\n .action(async () => {\n Logger.success('Initialized: H3ravel has been initialized!')\n })\n\n /** Loop through all the available commands */\n for (let i = 0; i < this.commands.length; i++) {\n const command = this.commands[i]\n const instance = command.commandClass\n\n if (command.isNamespaceCommand && command.subCommands) {\n /**\n * Initialize the base command\n */\n const cmd = command.isHidden\n ? program\n : program\n .command(command.baseCommand)\n .description(command.description ?? '')\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .option(additional.quiet[0], additional.quiet[1])\n .option(additional.verbose[0], additional.verbose[1])\n .option(additional.interaction[0], additional.interaction[1])\n .action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, program)\n await instance.handle()\n })\n\n /**\n * Add options to the base command if it has any\n */\n if ((command.options?.length ?? 0) > 0) {\n command.options\n ?.filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd)\n })\n }\n\n /**\n * Initialize the sub commands\n */\n command\n .subCommands\n .filter((v, i, a) => !v.shared && a.findIndex(t => t.name === v.name) === i)\n .forEach(sub => {\n const cmd = program\n .command(`${command.baseCommand}:${sub.name}`)\n .description(sub.description || '')\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .option(additional.quiet[0], additional.quiet[1])\n .option(additional.verbose[0], additional.verbose[1])\n .option(additional.interaction[0], additional.interaction[1])\n .action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, sub, program)\n await instance.handle()\n })\n\n /**\n * Add the shared arguments here\n */\n command.subCommands?.filter(e => e.shared).forEach(opt => {\n this.makeOption(opt, cmd, false, sub)\n })\n\n /**\n * Add the shared options here\n */\n command.options?.filter(e => e.shared).forEach(opt => {\n this.makeOption(opt, cmd, false, sub)\n })\n\n /**\n * Add options to the sub command if it has any\n */\n if (sub.nestedOptions) {\n sub.nestedOptions\n .filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd)\n })\n }\n })\n } else {\n /**\n * Initialize command with options\n */\n const cmd = program\n .command(command.baseCommand)\n .description(command.description ?? '')\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .option(additional.quiet[0], additional.quiet[1])\n .option(additional.verbose[0], additional.verbose[1])\n .option(additional.interaction[0], additional.interaction[1])\n\n command\n ?.options\n ?.filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd, true)\n })\n\n cmd.action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, program)\n await instance.handle()\n })\n }\n }\n\n /** Rebuild the app on every command except fire so we wont need TS */\n program.hook('preAction', async (_, cmd) => {\n if (cmd.name() !== 'fire') {\n await build({\n ...TsDownConfig,\n watch: false,\n plugins: []\n })\n }\n })\n\n return program\n }\n\n makeOption (opt: CommandOption, cmd: typeof program, parse?: boolean, parent?: any) {\n const description = opt.description?.replace(/\\[(\\w+)\\]/g, (_, k) => parent?.[k] ?? `[${k}]`) ?? ''\n const type = opt.name.replaceAll('-', '')\n\n if (opt.isFlag) {\n if (parse) {\n const flags = opt.flags\n ?.map(f => (f.length === 1 ? `-${f}` : `--${f}`)).join(', ')!\n .replaceAll('----', '--')\n .replaceAll('---', '-')\n\n cmd.option(flags || '', description!, String(opt.defaultValue) || undefined)\n } else {\n cmd.option(\n opt.flags?.join(', ') + (opt.required ? ` <${type}>` : ''),\n description!,\n opt.defaultValue as any\n )\n }\n } else {\n cmd.argument(\n opt.required ? `<${opt.name}>` : `[${opt.name}]`,\n description,\n opt.defaultValue\n )\n }\n }\n\n static async parse (kernel: Kernel) {\n return (await new Musket(kernel.app, kernel).build()).parseAsync()\n }\n}\n","import { Application, ConsoleKernel } from '@h3ravel/core'\n\nimport { Helpers } from '@h3ravel/filesystem'\nimport { Musket } from './Musket'\nimport path from 'node:path'\n\nexport class Kernel extends ConsoleKernel {\n constructor(public app: Application) {\n super(app)\n }\n\n static init (app: Application) {\n const instance = new Kernel(app)\n\n Promise.all([instance.loadRequirements()])\n .then(([e]) => e.run())\n }\n\n\n private async run () {\n await Musket.parse(this)\n process.exit(0)\n }\n\n private async loadRequirements () {\n this.cwd = path.join(process.cwd(), this.basePath)\n this.modulePath = Helpers.findModulePkg('@h3ravel/core', this.cwd) ?? ''\n this.consolePath = Helpers.findModulePkg('@h3ravel/console', this.cwd) ?? ''\n\n try {\n this.modulePackage = await import(path.join(this.modulePath, 'package.json'))\n } catch {\n this.modulePackage = { version: 'N/A' }\n }\n\n try {\n this.consolePackage = await import(path.join(this.consolePath, 'package.json'))\n } catch {\n this.consolePackage = { version: 'N/A' }\n }\n\n return this\n }\n}\n","/// <reference path=\"../../../core/src/app.globals.d.ts\" />\n\nimport { Kernel } from '../Kernel'\nimport { ServiceProvider } from '@h3ravel/core'\n/**\n * Handles CLI commands and tooling.\n * \n * Register DatabaseManager and QueryBuilder.\n * Set up ORM models and relationships.\n * Register migration and seeder commands.\n * \n * Auto-Registered when in CLI mode\n */\nexport class ConsoleServiceProvider extends ServiceProvider {\n public static priority = 992\n\n /**\n * Indicate that this service provider only runs in console\n */\n public static console = true\n\n register () {\n }\n\n boot () {\n Kernel.init(this.app)\n\n process.on('SIGINT', () => {\n process.exit(0)\n })\n process.on('SIGTERM', () => {\n process.exit(0)\n })\n }\n}\n"],"x_google_ignoreList":[6],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["e","escalade","path","stub: string","options: CommandOption[]","nestedOptions: CommandOption[] | undefined","flags: string[] | undefined","defaultValue: string | number | boolean | undefined | string[]","dir","entryFileName","TsDownConfig: Options","app: Application","kernel: Kernel","commands: Command[]","path","i","cmd","TsDownConfig","app: Application","path"],"sources":["../src/Commands/Command.ts","../src/logo.ts","../src/Commands/ListCommand.ts","../../filesystem/dist/index.js","../src/Commands/MakeCommand.ts","../src/Signature.ts","../../../node_modules/.pnpm/@rollup+plugin-run@3.1.0/node_modules/@rollup/plugin-run/dist/es/index.js","../src/TsdownConfig.ts","../src/Musket.ts","../src/Kernel.ts","../src/Providers/ConsoleServiceProvider.ts"],"sourcesContent":["import { ConsoleCommand } from '@h3ravel/core'\n\nexport class Command extends ConsoleCommand { }\n","export const logo = String.raw`\n 111 \n 111111111 \n 1111111111 111111 \n 111111 111 111111 \n 111111 111 111111 \n11111 111 11111 \n1111111 111 1111111 \n111 11111 111 111111 111 1111 1111 11111111 1111\n111 11111 1111 111111 111 1111 1111 1111 11111 1111\n111 11111 11111 111 1111 1111 111111111111 111111111111 1111 1111111 1111\n111 111111 1111 111 111111111111 111111 11111 1111 111 1111 11111111 1111 1111\n111 111 11111111 111 1101 1101 111111111 11111111 1111 1111111111111111101\n111 1111111111111111 1111 111 1111 1111 111 11111011 1111 111 1111111 1101 1111\n111 11111 1110111111111111 111 1111 1111 1111111101 1111 111111111 1111011 111111111 1111\n1111111 111110111110 111 1111 1111 111111 1111 11011101 10111 11111 1111\n11011 111111 11 11111 \n 111111 11101 111111 \n 111111 111 111111 \n 111111 111 111111 \n 111111111 \n 110 \n`\n\nexport const altLogo = String.raw`\n _ _ _____ _ \n| | | |___ / _ __ __ ___ _____| |\n| |_| | |_ \\| '__/ _ \\ \\ / / _ \\ |\n| _ |___) | | | (_| |\\ V / __/ |\n|_| |_|____/|_| \\__,_| \\_/ \\___|_|\n\n`\n","import { Command } from './Command'\nimport { Logger } from '@h3ravel/shared'\nimport { Option } from 'commander'\n/* eslint-disable no-control-regex */\nimport { altLogo } from '../logo'\n\nexport class ListCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = 'list'\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'List all available commands'\n\n public async handle () {\n const options = [\n {\n short: '-h',\n long: '--help',\n description: 'Display help for the given command. When no command is given display help for the list command'\n } as Option\n ]\n .concat(this.program.options)\n .map(e => {\n const desc = Logger.describe(Logger.log(\n ' ' + [e.short, e.long].filter(e => !!e).join(', '), 'green', false\n ), e.description, 25, false)\n return desc.join('')\n })\n\n /** Get the program commands */\n const commands = this.program.commands.map(e => {\n const desc = Logger.describe(Logger.log(' ' + e.name(), 'green', false), e.description(), 25, false)\n return desc.join('')\n })\n\n const grouped = commands.reduce<Record<string, string[]>>((acc, cmd) => {\n /** strip colors before checking prefix */\n const clean = cmd.replace(/\\x1b\\[\\d+m/g, '')\n const prefix = clean.includes(':') ? clean.split(':')[0].trim() : '__root__'\n acc[prefix] ??= []\n /** keep original with colors */\n acc[prefix].push(cmd)\n return acc\n }, {})\n\n const list = Object.entries(grouped).map(([group, cmds]) => {\n const label = group === '__root__' ? '' : group\n return [Logger.log(label, 'yellow', false), cmds.join('\\n')].join('\\n')\n })\n\n /** Ootput the app version */\n Logger.log([['H3ravel Framework', 'white'], [this.kernel.modulePackage.version, 'green']], ' ')\n\n console.log('')\n\n console.log(altLogo)\n\n console.log('')\n\n Logger.log('Usage:', 'yellow')\n Logger.log(' command [options] [arguments]', 'white')\n\n console.log('')\n\n /** Ootput the options */\n Logger.log('Options:', 'yellow')\n console.log(options.join('\\n').trim())\n\n console.log('')\n\n /** Ootput the commands */\n Logger.log('Available Commands:', 'yellow')\n console.log(list.join('\\n\\n').trim())\n }\n}\n","import { ServiceProvider } from \"@h3ravel/core\";\nimport { access } from \"fs/promises\";\nimport escalade from \"escalade/sync\";\nimport path from \"path\";\n\n//#region src/Providers/FilesystemProvider.ts\n/**\n* Sets up Filesystem management and lifecycle.\n* \n*/\nvar FilesystemProvider = class extends ServiceProvider {\n\tstatic priority = 997;\n\tregister() {}\n};\n\n//#endregion\n//#region src/Utils/Helpers.ts\nvar Helpers = class {\n\tstatic findModulePkg(moduleId, cwd) {\n\t\tconst parts = moduleId.replace(/\\\\/g, \"/\").split(\"/\");\n\t\tlet packageName = \"\";\n\t\tif (parts.length > 0 && parts[0][0] === \"@\") packageName += parts.shift() + \"/\";\n\t\tpackageName += parts.shift();\n\t\tconst packageJson = path.join(cwd ?? process.cwd(), \"node_modules\", packageName);\n\t\tconst resolved = this.findUpConfig(packageJson, \"package\", [\"json\"]);\n\t\tif (!resolved) return;\n\t\treturn path.join(path.dirname(resolved), parts.join(\"/\"));\n\t}\n\t/**\n\t* Check if file exists\n\t* \n\t* @param path \n\t* @returns \n\t*/\n\tstatic async fileExists(path$1) {\n\t\ttry {\n\t\t\tawait access(path$1);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\tstatic findUpConfig(cwd, name, extensions) {\n\t\treturn escalade(cwd, (_dir, names) => {\n\t\t\tfor (const ext of extensions) {\n\t\t\t\tconst filename = `${name}.${ext}`;\n\t\t\t\tif (names.includes(filename)) return filename;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n};\n\n//#endregion\nexport { FilesystemProvider, Helpers };\n//# sourceMappingURL=index.js.map","import { TableGuesser, Utils } from '../Utils'\nimport { mkdir, readFile, writeFile } from 'node:fs/promises'\n\nimport { Command } from './Command'\nimport { Helpers } from '@h3ravel/filesystem'\nimport { Logger } from '@h3ravel/shared'\nimport { beforeLast } from '@h3ravel/support'\nimport dayjs from 'dayjs'\nimport { existsSync } from 'node:fs'\nimport nodepath from 'node:path'\n\nexport class MakeCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `#make:\n {controller : Create a new controller class. \n | {--a|api : Exclude the create and edit methods from the controller} \n | {--m|model= : Generate a resource controller for the given model} \n | {--r|resource : Generate a resource controller class} \n | {--force : Create the controller even if it already exists}\n }\n {resource : Create a new resource. \n | {--c|collection : Create a resource collection}\n | {--force : Create the resource even if it already exists}\n }\n {migration : Generates a new database migration class. \n | {--l|type=ts : The file type to generate} \n | {--t|table : The table to migrate} \n | {--c|create : The table to be created} \n }\n {factory : Create a new model factory.}\n {seeder : Create a new seeder class.}\n {view : Create a new view.\n | {--force : Create the view even if it already exists}\n }\n {model : Create a new Eloquent model class. \n | {--api : Indicates if the generated controller should be an API resource controller} \n | {--c|controller : Create a new controller for the model} \n | {--f|factory : Create a new factory for the model} \n | {--m|migration : Create a new migration file for the model} \n | {--r|resource : Indicates if the generated controller should be a resource controller} \n | {--a|all : Generate a migration, seeder, factory, policy, resource controller, and form request classes for the model} \n | {--s|seed : Create a new seeder for the model} \n | {--t|type=ts : The file type to generate}\n | {--force : Create the model even if it already exists}\n } \n {^name : The name of the [name] to generate}\n `\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Generate component classes'\n\n public async handle () {\n const command = (this.dictionary.baseCommand ?? this.dictionary.name) as never\n\n const methods = {\n controller: 'makeController',\n resource: 'makeResource',\n migration: 'makeMigration',\n factory: 'makeFactory',\n seeder: 'makeSeeder',\n model: 'makeModel',\n view: 'makeView',\n } as const\n\n try {\n await (this as any)?.[methods[command]]()\n } catch (e) {\n Logger.error(e as any)\n }\n }\n\n /**\n * Create a new controller class.\n */\n protected async makeController () {\n const type = this.option('api') ? '-resource' : ''\n const name = this.argument('name')\n const force = this.option('force')\n\n const path = nodepath.join(app_path('Http/Controllers'), name + '.ts')\n const crtlrPath = Helpers.findModulePkg('@h3ravel/http', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/controller${type}.stub`)\n\n /** Check if the controller already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} controller already exists`)\n }\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n Logger.split('INFO: Controller Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n protected makeResource () {\n Logger.success('Resource support is not yet available')\n }\n\n /**\n * Generate a new database migration class\n */\n protected async makeMigration () {\n const name = this.argument('name')\n const datePrefix = dayjs().format('YYYY_MM_DD_HHmmss')\n const path = nodepath.join(database_path('migrations'), `${datePrefix}_${name}.ts`)\n\n const crtlrPath = Utils.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n\n let create = this.option('create', false)\n let table = this.option('table')\n if (!table && typeof create === 'string') {\n table = create\n create = true\n }\n\n if (!table) {\n const guessed = TableGuesser.guess(name)\n table = guessed[0]\n create = !!guessed[1]\n }\n\n const stubPath = nodepath.join(crtlrPath, this.getMigrationStubName(table, create))\n let stub = await readFile(stubPath, 'utf-8')\n\n if (table !== null) {\n stub = stub.replace(/DummyTable|{{\\s*table\\s*}}/g, table)\n }\n\n Logger.info('INFO: Creating Migration')\n\n await this.kernel.ensureDirectoryExists(nodepath.dirname(path))\n await writeFile(path, stub)\n\n Logger.split('INFO: Migration Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n /**\n * Create a new model factory\n */\n protected makeFactory () {\n Logger.success('Factory support is not yet available')\n }\n\n /**\n * Create a new seeder class\n */\n protected makeSeeder () {\n Logger.success('Seeder support is not yet available')\n }\n\n /**\n * Generate a new Arquebus model class\n */\n protected async makeModel () {\n const type = this.option('type', 'ts')\n const name = this.argument('name')\n const force = this.argument('force')\n\n const path = nodepath.join(app_path('Models'), name.toLowerCase(), '.' + type)\n\n /** Check if the model already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} view already exists`)\n }\n\n const crtlrPath = Utils.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/model-${type}.stub`)\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n Logger.split('INFO: Model Created', Logger.log(nodepath.basename(path), 'gray', false))\n }\n\n /**\n * Create a new view.\n */\n protected async makeView () {\n const name = this.argument('name')\n const force = this.option('force')\n\n const path = nodepath.join(base_path('src/resources/views'), name + '.edge')\n\n if (name.includes('/')) {\n await mkdir(beforeLast(path, '/'), { recursive: true })\n }\n\n /** Check if the view already exists */\n if (!force && existsSync(path)) {\n Logger.error(`ERORR: ${name} view already exists`)\n }\n\n await writeFile(path, `{{-- src/resources/views/${name}.edge --}}`)\n Logger.split('INFO: View Created', Logger.log(`src/resources/views/${name}.edge`, 'gray', false))\n }\n\n /**\n * Ge the database migration file name\n * \n * @param table \n * @param create \n * @param type \n * @returns \n */\n getMigrationStubName (table?: string, create: boolean = false, type: 'ts' | 'js' = 'ts') {\n let stub: string\n if (!table) {\n stub = `migration-${type}.stub`\n }\n else if (create) {\n stub = `migration.create-${type}.stub`\n }\n else {\n stub = `migration.update-${type}.stub`\n }\n return 'dist/stubs/' + stub\n }\n}\n","import { CommandOption, ParsedCommand } from './Contracts/ICommand'\n\nimport { Command } from './Commands/Command'\n\nexport class Signature {\n /**\n * Helper to parse options inside a block of text\n * \n * @param block \n * @returns \n */\n static parseOptions (block: string): CommandOption[] {\n const options: CommandOption[] = []\n /**\n * Match { ... } blocks at top level \n */\n const regex = /\\{([^{}]+(?:\\{[^{}]*\\}[^{}]*)*)\\}/g\n let match\n\n while ((match = regex.exec(block)) !== null) {\n const shared = '^' === match[1][0]! || /:[#^]/.test(match[1])\n const isHidden = (['#', '^'].includes(match[1][0]!) || /:[#^]/.test(match[1])) && !shared\n const content = match[1].trim().replace(/[#^]/, '')\n /**\n * Split by first ':' to separate name and description+nested\n */\n const colonIndex = content.indexOf(':')\n if (colonIndex === -1) {\n /**\n * No description, treat whole as name\n */\n options.push({ name: content })\n continue\n }\n\n const namePart = content.substring(0, colonIndex).trim()\n const rest = content.substring(colonIndex + 1).trim()\n\n /**\n * Check for nested options after '|'\n */\n let description = rest\n let nestedOptions: CommandOption[] | undefined\n\n const pipeIndex = rest.indexOf('|')\n if (pipeIndex !== -1) {\n description = rest.substring(0, pipeIndex).trim()\n const nestedText = rest.substring(pipeIndex + 1).trim()\n /**\n * nestedText should start with '{' and end with ')', clean it\n * Also Remove trailing ')' if present\n */\n const cleanedNestedText = nestedText.replace(/^\\{/, '').trim()\n\n /**\n * Parse nested options recursively\n */\n nestedOptions = Signature.parseOptions('{' + cleanedNestedText + '}')\n } else {\n /**\n * Trim the string\n */\n description = description.trim()\n }\n\n /**\n * Parse name modifiers (?, *, ?*)\n */\n let name = namePart\n let required = /[^a-zA-Z0-9_|-]/.test(name)\n let multiple = false\n\n if (name.endsWith('?*')) {\n required = false\n multiple = true\n name = name.slice(0, -2)\n } else if (name.endsWith('*')) {\n multiple = true\n name = name.slice(0, -1)\n } else if (name.endsWith('?')) {\n required = false\n name = name.slice(0, -1)\n }\n\n /**\n * Check if it's a flag option (starts with --)\n */\n const isFlag = name.startsWith('--')\n let flags: string[] | undefined\n let defaultValue: string | number | boolean | undefined | string[]\n\n if (isFlag) {\n /**\n * Parse flags and default values\n */\n const flagParts = name.split('|').map(s => s.trim())\n\n flags = []\n\n for (let part of flagParts) {\n if (part.startsWith('--') && part.slice(2).length === 1) {\n part = '-' + part.slice(2)\n } else if (part.startsWith('-') && !part.startsWith('--') && part.slice(1).length > 1) {\n part = '--' + part.slice(1)\n } else if (!part.startsWith('-') && part.slice(1).length > 1) {\n part = '--' + part\n }\n\n const eqIndex = part.indexOf('=')\n if (eqIndex !== -1) {\n flags.push(part.substring(0, eqIndex))\n const val = part.substring(eqIndex + 1)\n if (val === '*') {\n defaultValue = []\n } else if (val === 'true' || val === 'false' || (!val && !required)) {\n defaultValue = val === 'true'\n } else if (!isNaN(Number(val))) {\n defaultValue = Number(val)\n } else {\n defaultValue = val\n }\n } else {\n flags.push(part)\n }\n }\n }\n\n options.push({\n name: isFlag ? flags![flags!.length - 1] : name,\n required,\n multiple,\n description,\n flags,\n shared,\n isFlag,\n isHidden,\n defaultValue,\n nestedOptions,\n })\n }\n\n return options\n }\n\n /**\n * Helper to parse a command's signature\n * \n * @param signature \n * @param commandClass \n * @returns \n */\n static parseSignature (signature: string, commandClass: Command): ParsedCommand {\n const lines = signature.split('\\n').map(l => l.trim()).filter(l => l.length > 0)\n const isHidden = ['#', '^'].includes(lines[0][0]!) || /:[#^]/.test(lines[0])\n const baseCommand = lines[0].replace(/[^\\w=:-]/g, '')\n const description = commandClass.getDescription()\n const isNamespaceCommand = baseCommand.endsWith(':')\n\n /**\n * Join the rest lines to a single string for parsing\n */\n const rest = lines.slice(1).join(' ')\n\n /**\n * Parse all top-level options/subcommands\n */\n const allOptions = Signature.parseOptions(rest)\n\n if (isNamespaceCommand) {\n /**\n * Separate subcommands (those without flags) and base options (flags)\n * Here we assume subcommands are those without flags (isFlag false)\n * and base options are flags or options after subcommands\n\n * For simplicity, treat all top-level options as subcommands\n * and assume base command options come after subcommands in signature (not shown in example)\n */\n\n return {\n baseCommand: baseCommand.slice(0, -1),\n isNamespaceCommand,\n subCommands: allOptions.filter(e => !e.flags && !e.isHidden),\n description,\n commandClass,\n options: allOptions.filter(e => !!e.flags),\n isHidden,\n }\n } else {\n return {\n baseCommand,\n isNamespaceCommand,\n options: allOptions,\n description,\n commandClass,\n isHidden,\n }\n }\n }\n}\n","import { dirname, join, resolve } from 'path';\n\nimport { fork } from 'child_process';\n\nfunction run (opts = {}) {\n let input;\n let proc;\n const args = opts.args || [];\n const allowRestarts = opts.allowRestarts || false;\n const overrideInput = opts.input;\n const forkOptions = opts.options || opts;\n delete forkOptions.args;\n delete forkOptions.allowRestarts;\n return {\n name: 'run',\n buildStart (options) {\n let inputs = overrideInput !== null && overrideInput !== void 0 ? overrideInput : options.input;\n if (typeof inputs === 'string') {\n inputs = [inputs];\n }\n if (typeof inputs === 'object') {\n inputs = Object.values(inputs);\n }\n if (inputs.length > 1) {\n throw new Error(`@rollup/plugin-run must have a single entry point; consider setting the \\`input\\` option`);\n }\n input = resolve(inputs[0]);\n },\n generateBundle (_outputOptions, _bundle, isWrite) {\n if (!isWrite) {\n this.error(`@rollup/plugin-run currently only works with bundles that are written to disk`);\n }\n },\n writeBundle (outputOptions, bundle) {\n const forkBundle = (dir, entryFileName) => {\n if (proc)\n proc.kill();\n proc = fork(join(dir, entryFileName), args, forkOptions);\n };\n const dir = outputOptions.dir || dirname(outputOptions.file);\n const entryFileName = Object.keys(bundle).find((fileName) => {\n const chunk = bundle[fileName];\n return chunk.isEntry && chunk.facadeModuleId === input;\n });\n if (entryFileName) {\n forkBundle(dir, entryFileName);\n if (allowRestarts) {\n process.stdin.resume();\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', (data) => {\n const line = data.toString().trim().toLowerCase();\n if (line === 'rs' || line === 'restart' || data.toString().charCodeAt(0) === 11) {\n forkBundle(dir, entryFileName);\n }\n else if (line === 'cls' || line === 'clear' || data.toString().charCodeAt(0) === 12) {\n // eslint-disable-next-line no-console\n console.clear();\n }\n });\n }\n }\n else {\n this.error(`@rollup/plugin-run could not find output chunk`);\n }\n }\n };\n}\n\nexport { run as default };\n//# sourceMappingURL=index.js.map\n","import { Options } from 'tsdown'\nimport run from '@rollup/plugin-run'\n\nconst env = process.env.NODE_ENV || 'development'\nconst outDir = env === 'development' ? '.h3ravel/serve' : 'dist'\n\nexport const TsDownConfig: Options = {\n outDir,\n entry: ['src/**/*.ts'],\n format: ['esm'],//, 'cjs'],\n target: 'node22',\n sourcemap: env === 'development',\n clean: true,\n shims: true,\n copy: [{ from: 'public', to: outDir }, 'src/resources', 'src/database'],\n env: env === 'development' ? {\n NODE_ENV: env,\n SRC_PATH: outDir,\n } : {},\n watch:\n env === 'development' && process.env.CLI_BUILD !== 'true'\n ? ['.env', '.env.*', 'src', '../../packages']\n : false,\n dts: false,\n logLevel: 'silent',\n nodeProtocol: true,\n skipNodeModulesBundle: true,\n plugins: env === 'development' && process.env.CLI_BUILD !== 'true' ? [\n run({\n env: Object.assign({}, process.env, {\n NODE_ENV: env,\n SRC_PATH: outDir,\n }),\n execArgv: ['-r', 'source-map-support/register'],\n allowRestarts: false,\n input: process.cwd() + '/src/server.ts'//\n })\n ] : [],\n}\n\nexport default TsDownConfig\n","import { CommandOption, ParsedCommand } from './Contracts/ICommand'\nimport { Option, program, type Command as Commander } from 'commander'\n\nimport { Application } from '@h3ravel/core'\nimport { Command } from './Commands/Command'\nimport { Kernel } from './Kernel'\nimport { ListCommand } from './Commands/ListCommand'\nimport { Logger } from '@h3ravel/shared'\nimport { MakeCommand } from './Commands/MakeCommand'\nimport { Signature } from './Signature'\nimport TsDownConfig from './TsdownConfig'\nimport { altLogo } from './logo'\nimport { build } from 'tsdown'\nimport { glob } from 'node:fs/promises'\nimport path from 'node:path'\n\n/**\n * Musket is H3ravel's CLI tool\n */\nexport class Musket {\n private commands: ParsedCommand[] = []\n\n constructor(private app: Application, private kernel: Kernel) { }\n\n async build () {\n this.loadBaseCommands()\n await this.loadDiscoveredCommands()\n return this.initialize()\n }\n\n private loadBaseCommands () {\n const commands: Command[] = [\n new MakeCommand(this.app, this.kernel),\n new ListCommand(this.app, this.kernel),\n ]\n\n commands.forEach(e => this.addCommand(e))\n }\n\n private async loadDiscoveredCommands () {\n const commands: Command[] = [\n ...this.app.registeredCommands.map(cmd => new cmd(this.app, this.kernel))\n ]\n\n /**\n * Musket Commands auto registration\n */\n const providers_path = app_path('Console/Commands/*.js').replace('/src/', '/.h3ravel/serve/')\n\n /** Add the App Commands */\n for await (const cmd of glob(providers_path)) {\n const name = path.basename(cmd).replace('.js', '')\n try {\n const cmdClass = (await import(cmd))[name]\n commands.push(new cmdClass(this.app, this.kernel))\n } catch { /** */ }\n }\n\n commands.forEach(e => this.addCommand(e))\n }\n\n addCommand (command: Command) {\n this.commands.push(Signature.parseSignature(command.getSignature(), command))\n }\n\n private initialize () {\n /** Init the Musket Version */\n const cliVersion = Logger.parse([\n ['Musket CLI:', 'white'],\n [this.kernel.consolePackage.version, 'green']\n ], ' ', false)\n\n /** Init the App Version */\n const localVersion = Logger.parse([\n ['H3ravel Framework:', 'white'],\n [this.kernel.modulePackage.version, 'green']\n ], ' ', false)\n\n const additional = {\n quiet: ['-q, --quiet', 'Do not output any message'],\n silent: ['--silent', 'Do not output any message'],\n verbose: ['-v, --verbose <number>', 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'],\n lock: ['--lock', 'Locked and loaded, do not ask any interactive question'],\n }\n\n /** Init Commander */\n program\n .name('musket')\n .version(`${cliVersion}\\n${localVersion}`)\n .description(altLogo)\n .addOption(new Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true }))\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .addOption(new Option(additional.verbose[0], additional.verbose[1]).choices(['1', '2', '3']))\n .addOption(new Option(additional.lock[0], additional.lock[1]))\n .action(async () => {\n const instance = new ListCommand(this.app, this.kernel)\n instance.setInput(program.opts(), program.args, program.registeredArguments, {}, program)\n instance.handle()\n })\n\n /** Create the init Command */\n program\n .command('init')\n .description('Initialize H3ravel.')\n .action(async () => {\n Logger.success('Initialized: H3ravel has been initialized!')\n })\n\n /** Loop through all the available commands */\n for (let i = 0; i < this.commands.length; i++) {\n const command = this.commands[i]\n const instance = command.commandClass\n\n if (command.isNamespaceCommand && command.subCommands) {\n /**\n * Initialize the base command\n */\n const cmd = command.isHidden\n ? program\n : program\n .command(command.baseCommand)\n .description(command.description ?? '')\n .addOption(new Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true }))\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .addOption(new Option(additional.verbose[0], additional.verbose[1]).choices(['1', '2', '3']))\n .addOption(new Option(additional.lock[0], additional.lock[1]))\n .action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, program)\n await instance.handle()\n })\n\n /**\n * Add options to the base command if it has any\n */\n if ((command.options?.length ?? 0) > 0) {\n command.options\n ?.filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd)\n })\n }\n\n /**\n * Initialize the sub commands\n */\n command\n .subCommands\n .filter((v, i, a) => !v.shared && a.findIndex(t => t.name === v.name) === i)\n .forEach(sub => {\n const cmd = program\n .command(`${command.baseCommand}:${sub.name}`)\n .description(sub.description || '')\n .addOption(new Option(additional.quiet[0], additional.quiet[1]).implies({ silent: true }))\n .addOption(new Option(additional.silent[0], additional.silent[1]).implies({ quiet: true }))\n .addOption(new Option(additional.verbose[0], additional.verbose[1]).choices(['1', '2', '3']))\n .addOption(new Option(additional.lock[0], additional.lock[1]))\n .action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, sub, program)\n await instance.handle()\n })\n\n /**\n * Add the shared arguments here\n */\n command.subCommands?.filter(e => e.shared).forEach(opt => {\n this.makeOption(opt, cmd, false, sub)\n })\n\n /**\n * Add the shared options here\n */\n command.options?.filter(e => e.shared).forEach(opt => {\n this.makeOption(opt, cmd, false, sub)\n })\n\n /**\n * Add options to the sub command if it has any\n */\n if (sub.nestedOptions) {\n sub.nestedOptions\n .filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd)\n })\n }\n })\n } else {\n /**\n * Initialize command with options\n */\n const cmd = program\n .command(command.baseCommand)\n .description(command.description ?? '')\n\n command\n ?.options\n ?.filter((v, i, a) => a.findIndex(t => t.name === v.name) === i)\n .forEach(opt => {\n this.makeOption(opt, cmd, true)\n })\n\n cmd.action(async () => {\n instance.setInput(cmd.opts(), cmd.args, cmd.registeredArguments, command, program)\n await instance.handle()\n })\n }\n }\n\n /** Rebuild the app on every command except fire so we wont need TS */\n program.hook('preAction', async (_, cmd) => {\n if (cmd.name() !== 'fire') {\n await build({\n ...TsDownConfig,\n watch: false,\n plugins: []\n })\n }\n })\n\n return program\n }\n\n makeOption (opt: CommandOption, cmd: Commander, parse?: boolean, parent?: any) {\n const description = opt.description?.replace(/\\[(\\w+)\\]/g, (_, k) => parent?.[k] ?? `[${k}]`) ?? ''\n const type = opt.name.replaceAll('-', '')\n\n if (opt.isFlag) {\n if (parse) {\n const flags = opt.flags\n ?.map(f => (f.length === 1 ? `-${f}` : `--${f}`)).join(', ')!\n .replaceAll('----', '--')\n .replaceAll('---', '-')\n\n cmd.option(flags || '', description!, String(opt.defaultValue) || undefined)\n } else {\n cmd.option(\n opt.flags?.join(', ') + (opt.required ? ` <${type}>` : ''),\n description!,\n opt.defaultValue as any\n )\n }\n } else {\n cmd.argument(\n opt.required ? `<${opt.name}>` : `[${opt.name}]`,\n description,\n opt.defaultValue\n )\n }\n }\n\n static async parse (kernel: Kernel) {\n return (await new Musket(kernel.app, kernel).build()).parseAsync()\n }\n\n}\n","import { Application, ConsoleKernel } from '@h3ravel/core'\n\nimport { Helpers } from '@h3ravel/filesystem'\nimport { Musket } from './Musket'\nimport path from 'node:path'\n\nexport class Kernel extends ConsoleKernel {\n constructor(public app: Application) {\n super(app)\n }\n\n static init (app: Application) {\n const instance = new Kernel(app)\n\n Promise.all([instance.loadRequirements()])\n .then(([e]) => e.run())\n }\n\n\n private async run () {\n await Musket.parse(this)\n process.exit(0)\n }\n\n private async loadRequirements () {\n this.cwd = path.join(process.cwd(), this.basePath)\n this.modulePath = Helpers.findModulePkg('@h3ravel/core', this.cwd) ?? ''\n this.consolePath = Helpers.findModulePkg('@h3ravel/console', this.cwd) ?? ''\n\n try {\n this.modulePackage = await import(path.join(this.modulePath, 'package.json'))\n } catch {\n this.modulePackage = { version: 'N/A' }\n }\n\n try {\n this.consolePackage = await import(path.join(this.consolePath, 'package.json'))\n } catch {\n this.consolePackage = { version: 'N/A' }\n }\n\n return this\n }\n}\n","/// <reference path=\"../../../core/src/app.globals.d.ts\" />\n\nimport { Kernel } from '../Kernel'\nimport { ServiceProvider } from '@h3ravel/core'\n/**\n * Handles CLI commands and tooling.\n * \n * Register DatabaseManager and QueryBuilder.\n * Set up ORM models and relationships.\n * Register migration and seeder commands.\n * \n * Auto-Registered when in CLI mode\n */\nexport class ConsoleServiceProvider extends ServiceProvider {\n public static priority = 992\n\n /**\n * Indicate that this service provider only runs in console\n */\n public static console = true\n\n register () {\n }\n\n boot () {\n Kernel.init(this.app)\n\n process.on('SIGINT', () => {\n process.exit(0)\n })\n process.on('SIGTERM', () => {\n process.exit(0)\n })\n }\n}\n"],"x_google_ignoreList":[6],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@h3ravel/console",
3
- "version": "11.2.0",
3
+ "version": "11.2.1",
4
4
  "description": "CLI utilities for scaffolding, running migrations, tasks and for H3ravel.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -51,7 +51,7 @@
51
51
  ],
52
52
  "peerDependencies": {
53
53
  "@h3ravel/arquebus": "^0.4.0",
54
- "@h3ravel/core": "^1.9.0",
54
+ "@h3ravel/core": "^1.9.1",
55
55
  "@h3ravel/support": "^0.10.0"
56
56
  },
57
57
  "devDependencies": {
@@ -66,14 +66,14 @@
66
66
  "radashi": "^12.6.2",
67
67
  "resolve-from": "^5.0.0",
68
68
  "tsx": "^4.20.5",
69
- "@h3ravel/database": "^11.2.0",
70
69
  "@h3ravel/cache": "^11.0.1",
71
- "@h3ravel/http": "^11.2.0",
72
- "@h3ravel/router": "^1.9.0",
70
+ "@h3ravel/database": "^11.2.0",
73
71
  "@h3ravel/mail": "^11.0.1",
74
- "@h3ravel/shared": "^0.19.0",
72
+ "@h3ravel/router": "^1.9.0",
73
+ "@h3ravel/queue": "^11.0.1",
75
74
  "@h3ravel/config": "^1.4.0",
76
- "@h3ravel/queue": "^11.0.1"
75
+ "@h3ravel/shared": "^0.19.0",
76
+ "@h3ravel/http": "^11.2.0"
77
77
  },
78
78
  "scripts": {
79
79
  "barrelx": "barrelsby --directory src --delete --singleQuotes",