@h3ravel/console 11.1.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 +69 -1
- package/bin/fire.js +69 -1
- package/dist/{Utils-B1kpj9-1.cjs → Utils-CpiQZ3n9.cjs} +7 -15
- package/dist/Utils-CpiQZ3n9.cjs.map +1 -0
- package/dist/{Utils-DAJvoXlr.js → Utils-Dvclc4Pc.js} +2 -15
- package/dist/Utils-Dvclc4Pc.js.map +1 -0
- package/dist/{Utils-DxnHOGMz.d.ts → Utils-cBgwEyTl.d.ts} +1 -3
- package/dist/{Utils-7OrjoB1C.d.cts → Utils-rIdzILgO.d.cts} +1 -3
- package/dist/Utils.cjs +1 -1
- package/dist/Utils.d.cts +1 -1
- package/dist/Utils.d.ts +1 -1
- package/dist/Utils.js +1 -1
- package/dist/index.cjs +336 -436
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -137
- package/dist/index.d.ts +34 -137
- package/dist/index.js +331 -430
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
- package/dist/Utils-B1kpj9-1.cjs.map +0 -1
- package/dist/Utils-DAJvoXlr.js.map +0 -1
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/
|
|
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{
|
|
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{};
|
|
@@ -27,8 +27,6 @@ let path = require("path");
|
|
|
27
27
|
path = __toESM(path);
|
|
28
28
|
let fs = require("fs");
|
|
29
29
|
fs = __toESM(fs);
|
|
30
|
-
let preferred_pm = require("preferred-pm");
|
|
31
|
-
preferred_pm = __toESM(preferred_pm);
|
|
32
30
|
|
|
33
31
|
//#region ../../node_modules/.pnpm/escalade@3.2.0/node_modules/escalade/sync/index.mjs
|
|
34
32
|
function sync_default(start, callback) {
|
|
@@ -45,7 +43,6 @@ function sync_default(start, callback) {
|
|
|
45
43
|
|
|
46
44
|
//#endregion
|
|
47
45
|
//#region src/Utils.ts
|
|
48
|
-
const join = path.default.join;
|
|
49
46
|
var Utils = class {
|
|
50
47
|
static findModulePkg(moduleId, cwd) {
|
|
51
48
|
const parts = moduleId.replace(/\\/g, "/").split("/");
|
|
@@ -57,10 +54,6 @@ var Utils = class {
|
|
|
57
54
|
if (!resolved) return;
|
|
58
55
|
return path.default.join(path.default.dirname(resolved), parts.join("/"));
|
|
59
56
|
}
|
|
60
|
-
static async getMigrationPaths(cwd, migrator, defaultPath, path$2) {
|
|
61
|
-
if (path$2) return [join(cwd, path$2)];
|
|
62
|
-
return [...migrator.getPaths(), join(cwd, defaultPath)];
|
|
63
|
-
}
|
|
64
57
|
/**
|
|
65
58
|
* Check if file exists
|
|
66
59
|
*
|
|
@@ -84,13 +77,6 @@ var Utils = class {
|
|
|
84
77
|
return false;
|
|
85
78
|
});
|
|
86
79
|
}
|
|
87
|
-
static async installCommand(pkg) {
|
|
88
|
-
const pm = (await (0, preferred_pm.default)(process.cwd()))?.name ?? "pnpm";
|
|
89
|
-
let cmd = "install";
|
|
90
|
-
if (pm === "yarn" || pm === "pnpm") cmd = "add";
|
|
91
|
-
else if (pm === "bun") cmd = "create";
|
|
92
|
-
return `${pm} ${cmd} ${pkg}`;
|
|
93
|
-
}
|
|
94
80
|
};
|
|
95
81
|
var TableGuesser = class TableGuesser {
|
|
96
82
|
static CREATE_PATTERNS = [/^create_(\w+)_table$/, /^create_(\w+)$/];
|
|
@@ -127,4 +113,10 @@ Object.defineProperty(exports, '__toESM', {
|
|
|
127
113
|
return __toESM;
|
|
128
114
|
}
|
|
129
115
|
});
|
|
130
|
-
|
|
116
|
+
Object.defineProperty(exports, 'sync_default', {
|
|
117
|
+
enumerable: true,
|
|
118
|
+
get: function () {
|
|
119
|
+
return sync_default;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=Utils-CpiQZ3n9.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils-CpiQZ3n9.cjs","names":["path","escalade"],"sources":["../../../node_modules/.pnpm/escalade@3.2.0/node_modules/escalade/sync/index.mjs","../src/Utils.ts"],"sourcesContent":["import { dirname, resolve } from 'path';\nimport { readdirSync, statSync } from 'fs';\n\nexport default function (start, callback) {\n\tlet dir = resolve('.', start);\n\tlet tmp, stats = statSync(dir);\n\n\tif (!stats.isDirectory()) {\n\t\tdir = dirname(dir);\n\t}\n\n\twhile (true) {\n\t\ttmp = callback(dir, readdirSync(dir));\n\t\tif (tmp) return resolve(dir, tmp);\n\t\tdir = dirname(tmp = dir);\n\t\tif (tmp === dir) break;\n\t}\n}\n","import { access } from 'fs/promises'\nimport escalade from 'escalade/sync'\nimport path from 'path'\n\nexport class Utils {\n static findModulePkg (moduleId: string, cwd?: string) {\n const parts = moduleId.replace(/\\\\/g, '/').split('/')\n\n let packageName = ''\n // Handle scoped package name\n if (parts.length > 0 && parts[0][0] === '@') {\n packageName += parts.shift() + '/'\n }\n packageName += parts.shift()\n\n const packageJson = path.join(cwd ?? process.cwd(), 'node_modules', packageName)\n\n const resolved = this.findUpConfig(packageJson, 'package', ['json'])\n\n if (!resolved) {\n return\n }\n\n return path.join(path.dirname(resolved), parts.join('/'))\n }\n\n /**\n * Check if file exists\n * \n * @param path \n * @returns \n */\n static async fileExists (path: string): Promise<boolean> {\n try {\n await access(path)\n return true\n } catch {\n return false\n }\n }\n\n static findUpConfig (cwd: string, name: string, extensions: string[]) {\n return escalade(cwd, (_dir, names) => {\n for (const ext of extensions) {\n const filename = `${name}.${ext}`\n if (names.includes(filename)) {\n return filename\n }\n }\n return false\n })\n }\n}\n\nclass TableGuesser {\n static CREATE_PATTERNS = [\n /^create_(\\w+)_table$/,\n /^create_(\\w+)$/\n ]\n static CHANGE_PATTERNS = [\n /.+_(to|from|in)_(\\w+)_table$/,\n /.+_(to|from|in)_(\\w+)$/\n ]\n static guess (migration: string) {\n for (const pattern of TableGuesser.CREATE_PATTERNS) {\n const matches = migration.match(pattern)\n if (matches) {\n return [matches[1], true]\n }\n }\n for (const pattern of TableGuesser.CHANGE_PATTERNS) {\n const matches = migration.match(pattern)\n if (matches) {\n return [matches[2], false]\n }\n }\n return []\n }\n}\n\nexport { TableGuesser }\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,sBAAyB,OAAO,UAAU;CACzC,IAAI,wBAAc,KAAK,MAAM;CAC7B,IAAI;AAEJ,KAAI,kBAFsB,IAAI,CAEnB,aAAa,CACvB,yBAAc,IAAI;AAGnB,QAAO,MAAM;AACZ,QAAM,SAAS,yBAAiB,IAAI,CAAC;AACrC,MAAI,IAAK,0BAAe,KAAK,IAAI;AACjC,0BAAc,MAAM,IAAI;AACxB,MAAI,QAAQ,IAAK;;;;;;ACXnB,IAAa,QAAb,MAAmB;CACjB,OAAO,cAAe,UAAkB,KAAc;EACpD,MAAM,QAAQ,SAAS,QAAQ,OAAO,IAAI,CAAC,MAAM,IAAI;EAErD,IAAI,cAAc;AAElB,MAAI,MAAM,SAAS,KAAK,MAAM,GAAG,OAAO,IACtC,gBAAe,MAAM,OAAO,GAAG;AAEjC,iBAAe,MAAM,OAAO;EAE5B,MAAM,cAAc,aAAK,KAAK,OAAO,QAAQ,KAAK,EAAE,gBAAgB,YAAY;EAEhF,MAAM,WAAW,KAAK,aAAa,aAAa,WAAW,CAAC,OAAO,CAAC;AAEpE,MAAI,CAAC,SACH;AAGF,SAAO,aAAK,KAAK,aAAK,QAAQ,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;;;;;;;;CAS3D,aAAa,WAAY,QAAgC;AACvD,MAAI;AACF,iCAAaA,OAAK;AAClB,UAAO;UACD;AACN,UAAO;;;CAIX,OAAO,aAAc,KAAa,MAAc,YAAsB;AACpE,SAAOC,aAAS,MAAM,MAAM,UAAU;AACpC,QAAK,MAAM,OAAO,YAAY;IAC5B,MAAM,WAAW,GAAG,KAAK,GAAG;AAC5B,QAAI,MAAM,SAAS,SAAS,CAC1B,QAAO;;AAGX,UAAO;IACP;;;AAIN,IAAM,eAAN,MAAM,aAAa;CACjB,OAAO,kBAAkB,CACvB,wBACA,iBACD;CACD,OAAO,kBAAkB,CACvB,gCACA,yBACD;CACD,OAAO,MAAO,WAAmB;AAC/B,OAAK,MAAM,WAAW,aAAa,iBAAiB;GAClD,MAAM,UAAU,UAAU,MAAM,QAAQ;AACxC,OAAI,QACF,QAAO,CAAC,QAAQ,IAAI,KAAK;;AAG7B,OAAK,MAAM,WAAW,aAAa,iBAAiB;GAClD,MAAM,UAAU,UAAU,MAAM,QAAQ;AACxC,OAAI,QACF,QAAO,CAAC,QAAQ,IAAI,MAAM;;AAG9B,SAAO,EAAE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { access } from "fs/promises";
|
|
2
2
|
import path, { dirname, resolve } from "path";
|
|
3
3
|
import { readdirSync, statSync } from "fs";
|
|
4
|
-
import preferredPM from "preferred-pm";
|
|
5
4
|
|
|
6
5
|
//#region ../../node_modules/.pnpm/escalade@3.2.0/node_modules/escalade/sync/index.mjs
|
|
7
6
|
function sync_default(start, callback) {
|
|
@@ -18,7 +17,6 @@ function sync_default(start, callback) {
|
|
|
18
17
|
|
|
19
18
|
//#endregion
|
|
20
19
|
//#region src/Utils.ts
|
|
21
|
-
const join$1 = path.join;
|
|
22
20
|
var Utils = class {
|
|
23
21
|
static findModulePkg(moduleId, cwd) {
|
|
24
22
|
const parts = moduleId.replace(/\\/g, "/").split("/");
|
|
@@ -30,10 +28,6 @@ var Utils = class {
|
|
|
30
28
|
if (!resolved) return;
|
|
31
29
|
return path.join(path.dirname(resolved), parts.join("/"));
|
|
32
30
|
}
|
|
33
|
-
static async getMigrationPaths(cwd, migrator, defaultPath, path$1) {
|
|
34
|
-
if (path$1) return [join$1(cwd, path$1)];
|
|
35
|
-
return [...migrator.getPaths(), join$1(cwd, defaultPath)];
|
|
36
|
-
}
|
|
37
31
|
/**
|
|
38
32
|
* Check if file exists
|
|
39
33
|
*
|
|
@@ -57,13 +51,6 @@ var Utils = class {
|
|
|
57
51
|
return false;
|
|
58
52
|
});
|
|
59
53
|
}
|
|
60
|
-
static async installCommand(pkg) {
|
|
61
|
-
const pm = (await preferredPM(process.cwd()))?.name ?? "pnpm";
|
|
62
|
-
let cmd = "install";
|
|
63
|
-
if (pm === "yarn" || pm === "pnpm") cmd = "add";
|
|
64
|
-
else if (pm === "bun") cmd = "create";
|
|
65
|
-
return `${pm} ${cmd} ${pkg}`;
|
|
66
|
-
}
|
|
67
54
|
};
|
|
68
55
|
var TableGuesser = class TableGuesser {
|
|
69
56
|
static CREATE_PATTERNS = [/^create_(\w+)_table$/, /^create_(\w+)$/];
|
|
@@ -82,5 +69,5 @@ var TableGuesser = class TableGuesser {
|
|
|
82
69
|
};
|
|
83
70
|
|
|
84
71
|
//#endregion
|
|
85
|
-
export { TableGuesser, Utils };
|
|
86
|
-
//# sourceMappingURL=Utils-
|
|
72
|
+
export { TableGuesser, Utils, sync_default };
|
|
73
|
+
//# sourceMappingURL=Utils-Dvclc4Pc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils-Dvclc4Pc.js","names":["path","escalade"],"sources":["../../../node_modules/.pnpm/escalade@3.2.0/node_modules/escalade/sync/index.mjs","../src/Utils.ts"],"sourcesContent":["import { dirname, resolve } from 'path';\nimport { readdirSync, statSync } from 'fs';\n\nexport default function (start, callback) {\n\tlet dir = resolve('.', start);\n\tlet tmp, stats = statSync(dir);\n\n\tif (!stats.isDirectory()) {\n\t\tdir = dirname(dir);\n\t}\n\n\twhile (true) {\n\t\ttmp = callback(dir, readdirSync(dir));\n\t\tif (tmp) return resolve(dir, tmp);\n\t\tdir = dirname(tmp = dir);\n\t\tif (tmp === dir) break;\n\t}\n}\n","import { access } from 'fs/promises'\nimport escalade from 'escalade/sync'\nimport path from 'path'\n\nexport class Utils {\n static findModulePkg (moduleId: string, cwd?: string) {\n const parts = moduleId.replace(/\\\\/g, '/').split('/')\n\n let packageName = ''\n // Handle scoped package name\n if (parts.length > 0 && parts[0][0] === '@') {\n packageName += parts.shift() + '/'\n }\n packageName += parts.shift()\n\n const packageJson = path.join(cwd ?? process.cwd(), 'node_modules', packageName)\n\n const resolved = this.findUpConfig(packageJson, 'package', ['json'])\n\n if (!resolved) {\n return\n }\n\n return path.join(path.dirname(resolved), parts.join('/'))\n }\n\n /**\n * Check if file exists\n * \n * @param path \n * @returns \n */\n static async fileExists (path: string): Promise<boolean> {\n try {\n await access(path)\n return true\n } catch {\n return false\n }\n }\n\n static findUpConfig (cwd: string, name: string, extensions: string[]) {\n return escalade(cwd, (_dir, names) => {\n for (const ext of extensions) {\n const filename = `${name}.${ext}`\n if (names.includes(filename)) {\n return filename\n }\n }\n return false\n })\n }\n}\n\nclass TableGuesser {\n static CREATE_PATTERNS = [\n /^create_(\\w+)_table$/,\n /^create_(\\w+)$/\n ]\n static CHANGE_PATTERNS = [\n /.+_(to|from|in)_(\\w+)_table$/,\n /.+_(to|from|in)_(\\w+)$/\n ]\n static guess (migration: string) {\n for (const pattern of TableGuesser.CREATE_PATTERNS) {\n const matches = migration.match(pattern)\n if (matches) {\n return [matches[1], true]\n }\n }\n for (const pattern of TableGuesser.CHANGE_PATTERNS) {\n const matches = migration.match(pattern)\n if (matches) {\n return [matches[2], false]\n }\n }\n return []\n }\n}\n\nexport { TableGuesser }\n"],"x_google_ignoreList":[0],"mappings":";;;;;AAGA,sBAAyB,OAAO,UAAU;CACzC,IAAI,MAAM,QAAQ,KAAK,MAAM;CAC7B,IAAI;AAEJ,KAAI,CAFa,SAAS,IAAI,CAEnB,aAAa,CACvB,OAAM,QAAQ,IAAI;AAGnB,QAAO,MAAM;AACZ,QAAM,SAAS,KAAK,YAAY,IAAI,CAAC;AACrC,MAAI,IAAK,QAAO,QAAQ,KAAK,IAAI;AACjC,QAAM,QAAQ,MAAM,IAAI;AACxB,MAAI,QAAQ,IAAK;;;;;;ACXnB,IAAa,QAAb,MAAmB;CACjB,OAAO,cAAe,UAAkB,KAAc;EACpD,MAAM,QAAQ,SAAS,QAAQ,OAAO,IAAI,CAAC,MAAM,IAAI;EAErD,IAAI,cAAc;AAElB,MAAI,MAAM,SAAS,KAAK,MAAM,GAAG,OAAO,IACtC,gBAAe,MAAM,OAAO,GAAG;AAEjC,iBAAe,MAAM,OAAO;EAE5B,MAAM,cAAc,KAAK,KAAK,OAAO,QAAQ,KAAK,EAAE,gBAAgB,YAAY;EAEhF,MAAM,WAAW,KAAK,aAAa,aAAa,WAAW,CAAC,OAAO,CAAC;AAEpE,MAAI,CAAC,SACH;AAGF,SAAO,KAAK,KAAK,KAAK,QAAQ,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;;;;;;;;CAS3D,aAAa,WAAY,QAAgC;AACvD,MAAI;AACF,SAAM,OAAOA,OAAK;AAClB,UAAO;UACD;AACN,UAAO;;;CAIX,OAAO,aAAc,KAAa,MAAc,YAAsB;AACpE,SAAOC,aAAS,MAAM,MAAM,UAAU;AACpC,QAAK,MAAM,OAAO,YAAY;IAC5B,MAAM,WAAW,GAAG,KAAK,GAAG;AAC5B,QAAI,MAAM,SAAS,SAAS,CAC1B,QAAO;;AAGX,UAAO;IACP;;;AAIN,IAAM,eAAN,MAAM,aAAa;CACjB,OAAO,kBAAkB,CACvB,wBACA,iBACD;CACD,OAAO,kBAAkB,CACvB,gCACA,yBACD;CACD,OAAO,MAAO,WAAmB;AAC/B,OAAK,MAAM,WAAW,aAAa,iBAAiB;GAClD,MAAM,UAAU,UAAU,MAAM,QAAQ;AACxC,OAAI,QACF,QAAO,CAAC,QAAQ,IAAI,KAAK;;AAG7B,OAAK,MAAM,WAAW,aAAa,iBAAiB;GAClD,MAAM,UAAU,UAAU,MAAM,QAAQ;AACxC,OAAI,QACF,QAAO,CAAC,QAAQ,IAAI,MAAM;;AAG9B,SAAO,EAAE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
//#region src/Utils.d.ts
|
|
2
2
|
declare class Utils {
|
|
3
3
|
static findModulePkg(moduleId: string, cwd?: string): string | undefined;
|
|
4
|
-
static getMigrationPaths(cwd: string, migrator: any, defaultPath: string, path: string): Promise<any[]>;
|
|
5
4
|
/**
|
|
6
5
|
* Check if file exists
|
|
7
6
|
*
|
|
@@ -10,7 +9,6 @@ declare class Utils {
|
|
|
10
9
|
*/
|
|
11
10
|
static fileExists(path: string): Promise<boolean>;
|
|
12
11
|
static findUpConfig(cwd: string, name: string, extensions: string[]): string | void;
|
|
13
|
-
static installCommand(pkg: string): Promise<string>;
|
|
14
12
|
}
|
|
15
13
|
declare class TableGuesser {
|
|
16
14
|
static CREATE_PATTERNS: RegExp[];
|
|
@@ -19,4 +17,4 @@ declare class TableGuesser {
|
|
|
19
17
|
}
|
|
20
18
|
//#endregion
|
|
21
19
|
export { TableGuesser, Utils };
|
|
22
|
-
//# sourceMappingURL=Utils-
|
|
20
|
+
//# sourceMappingURL=Utils-cBgwEyTl.d.ts.map
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
//#region src/Utils.d.ts
|
|
2
2
|
declare class Utils {
|
|
3
3
|
static findModulePkg(moduleId: string, cwd?: string): string | undefined;
|
|
4
|
-
static getMigrationPaths(cwd: string, migrator: any, defaultPath: string, path: string): Promise<any[]>;
|
|
5
4
|
/**
|
|
6
5
|
* Check if file exists
|
|
7
6
|
*
|
|
@@ -10,7 +9,6 @@ declare class Utils {
|
|
|
10
9
|
*/
|
|
11
10
|
static fileExists(path: string): Promise<boolean>;
|
|
12
11
|
static findUpConfig(cwd: string, name: string, extensions: string[]): string | void;
|
|
13
|
-
static installCommand(pkg: string): Promise<string>;
|
|
14
12
|
}
|
|
15
13
|
declare class TableGuesser {
|
|
16
14
|
static CREATE_PATTERNS: RegExp[];
|
|
@@ -19,4 +17,4 @@ declare class TableGuesser {
|
|
|
19
17
|
}
|
|
20
18
|
//#endregion
|
|
21
19
|
export { TableGuesser, Utils };
|
|
22
|
-
//# sourceMappingURL=Utils-
|
|
20
|
+
//# sourceMappingURL=Utils-rIdzILgO.d.cts.map
|
package/dist/Utils.cjs
CHANGED
package/dist/Utils.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { TableGuesser, Utils } from "./Utils-
|
|
1
|
+
import { TableGuesser, Utils } from "./Utils-rIdzILgO.cjs";
|
|
2
2
|
export { TableGuesser, Utils };
|
package/dist/Utils.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { TableGuesser, Utils } from "./Utils-
|
|
1
|
+
import { TableGuesser, Utils } from "./Utils-cBgwEyTl.js";
|
|
2
2
|
export { TableGuesser, Utils };
|
package/dist/Utils.js
CHANGED