@h3ravel/console 11.14.10 → 11.15.0-alpha.10

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.js CHANGED
@@ -1,56 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import"./zero-CW4MtoXR.js";import"tsx/esm";import{Application as e,ContainerResolver as t,ServiceProvider as n}from"@h3ravel/core";import{FileSystem as r,Logger as i,TaskManager as a}from"@h3ravel/shared";import{Command as o,Kernel as s}from"@h3ravel/musket";import{execa as c}from"execa";import l from"preferred-pm";import{copyFile as u,readFile as d,writeFile as f}from"fs/promises";import p from"crypto";import m from"dotenv";import{mkdir as h,readFile as g,rm as _,writeFile as v}from"node:fs/promises";import{Str as y}from"@h3ravel/support";import b from"node:path";import{existsSync as x}from"node:fs";import{fork as S}from"child_process";import{dirname as C,join as w,resolve as T}from"path";var E=class e extends o{signature=`build
3
- {--m|minify : Minify your bundle output}
4
- {--d|dev : Build for dev but don't watch for changes}
5
- `;description=`Build the app for production`;async handle(){try{await this.fire()}catch(e){i.error(e)}}async fire(){let t=this.option(`dev`)?`.h3ravel/serve`:env(`DIST_DIR`,`dist`),n=this.option(`minify`),r=this.getVerbosity(),i=r>0;this.newLine(),await e.build({outDir:t,minify:n,verbosity:r,debug:i,mute:!1}),this.newLine()}static async build({debug:e,minify:t,mute:n,verbosity:r,outDir:i}={mute:!1,debug:!1,minify:!1,verbosity:0,outDir:`dist`}){let o=(await l(base_path()))?.name??`pnpm`,s={EXTENDED_DEBUG:e?`true`:`false`,CLI_BUILD:`true`,NODE_ENV:`production`,DIST_DIR:i,DIST_MINIFY:t,LOG_LEVEL:[`silent`,`info`,`warn`,`error`][r]},u=s.LOG_LEVEL===`silent`?`--silent`:null;if(n)return await c(o,[`tsdown`,u,`--config-loader`,`unconfig`,`-c`,`tsdown.default.config.ts`].filter(e=>e!==null),{stdout:`inherit`,stderr:`inherit`,cwd:base_path(),env:Object.assign({},process.env,s)});let d=i===`dist`?`Production`:`Development`;return await a.advancedTaskRunner([[`Creating ${d} Bundle`,`STARTED`],[`${d} Bundle Created`,`COMPLETED`]],async()=>{await c(o,[`tsdown`,u,`--config-loader`,`unconfig`,`-c`,`tsdown.default.config.ts`].filter(e=>e!==null),{stdout:`inherit`,stderr:`inherit`,cwd:base_path(),env:Object.assign({},process.env,s)})})}},D=class extends o{signature=`key:generate
6
- {--force: Force the operation to run when in production}
7
- {--show: Display the key instead of modifying files}
8
- `;description=`Set the application key`;async handle(){let e={key:p.randomBytes(32).toString(`base64`),envPath:base_path(`.env`),egEnvPath:base_path(`.env.example`),updated:!1,show:this.option(`show`)};this.newLine(),await r.fileExists(e.envPath)||(await r.fileExists(e.egEnvPath)?await u(e.egEnvPath,e.envPath):(this.error(`.env file not found.`),this.newLine(),process.exit(0)));let t=await d(e.envPath,`utf8`),n=Buffer.from(t),a=m.parse(n);if(e.show){(!a.APP_KEY||a.APP_KEY===``)&&(this.error(`Application key not set.`),this.newLine(),process.exit(0));let[e,t]=a.APP_KEY.split(`:`);i.log([[e,`yellow`],[t,`white`]],`:`),this.newLine(),process.exit(0)}else a.APP_ENV===`production`&&!this.option(`force`)&&(this.error(`Application is currently in production, failed to set key.`),this.newLine(),process.exit(1));/^APP_KEY=.*$/m.test(t)?(e.updated=!0,t=t.replace(/^APP_KEY=.*$/m,`APP_KEY=base64:${e.key}`)):(e.updated=!1,t=`APP_KEY=base64:${e.key}\n\n${t}`),await f(e.envPath,t,`utf8`),this.success(`Application key set successfully.`),this.newLine()}},O=class extends o{signature=`#make:
9
- {controller : Create a new controller class.
10
- | {--a|api : Exclude the create and edit methods from the controller}
11
- | {--m|model= : Generate a resource controller for the given model}
12
- | {--r|resource : Generate a resource controller class}
13
- | {--force : Create the controller even if it already exists}
14
- }
15
- {resource : Create a new resource.
16
- | {--c|collection : Create a resource collection}
17
- | {--force : Create the resource even if it already exists}
18
- }
19
- {command : Create a new Musket command.
20
- | {--command : The terminal command that will be used to invoke the class}
21
- | {--force : Create the class even if the console command already exists}
22
- }
23
- {view : Create a new view.
24
- | {--force : Create the view even if it already exists}
25
- }
26
- {^name : The name of the [name] to generate}
27
- `;description=`Generate component classes`;async handle(){let e=this.dictionary.baseCommand??this.dictionary.name;this.argument(`name`)||this.program.error(`Please provide a valid name for the `+e),await this[{controller:`makeController`,resource:`makeResource`,view:`makeView`,command:`makeCommand`}[e]]()}async makeController(){let e=this.option(`api`)?`-resource`:``,t=this.argument(`name`),n=this.option(`force`),a=r.findModulePkg(`@h3ravel/http`,this.kernel.cwd)??``,o=b.join(a,`dist/stubs/controller${e}.stub`),s=app_path(`Http/Controllers/${t}.ts`);t.includes(`/`)&&await h(y.beforeLast(s,`/`),{recursive:!0}),!n&&await r.fileExists(s)&&i.error(`ERORR: ${t} controller already exists`);let c=await g(o,`utf-8`);c=c.replace(/{{ name }}/g,t),await v(s,c),i.split(`INFO: Controller Created`,i.log(b.basename(s),`gray`,!1))}makeResource(){i.success(`Resource support is not yet available`)}makeCommand(){i.success(`Musket command creation is not yet available`)}async makeView(){let e=this.argument(`name`),t=this.option(`force`),n=base_path(`src/resources/views/${e}.edge`);e.includes(`/`)&&await h(y.beforeLast(n,`/`),{recursive:!0}),!t&&await r.fileExists(n)&&i.error(`ERORR: ${e} view already exists`),await v(n,`{{-- src/resources/views/${e}.edge --}}`),i.split(`INFO: View Created`,i.log(`src/resources/views/${e}.edge`,`gray`,!1))}},k=class extends o{signature=`postinstall`;description=`Default post installation command`;async handle(){this.genEncryptionKey(),this.createSqliteDB()}async genEncryptionKey(){new D(this.app,this.kernel).setProgram(this.program).setOption(`force`,!0).setOption(`silent`,!0).setOption(`quiet`,!0).setInput({force:!0,silent:!0,quiet:!0},[],[],{},this.program).handle()}async createSqliteDB(){config(`database.default`)===`sqlite`&&(await r.fileExists(database_path())||await h(database_path(),{recursive:!0}),await r.fileExists(database_path(`db.sqlite`))||await v(database_path(`db.sqlite`),``))}};String.raw`
28
- 111
29
- 111111111
30
- 1111111111 111111
31
- 111111 111 111111
32
- 111111 111 111111
33
- 11111 111 11111
34
- 1111111 111 1111111
35
- 111 11111 111 111111 111 1111 1111 11111111 1111
36
- 111 11111 1111 111111 111 1111 1111 1111 11111 1111
37
- 111 11111 11111 111 1111 1111 111111111111 111111111111 1111 1111111 1111
38
- 111 111111 1111 111 111111111111 111111 11111 1111 111 1111 11111111 1111 1111
39
- 111 111 11111111 111 1101 1101 111111111 11111111 1111 1111111111111111101
40
- 111 1111111111111111 1111 111 1111 1111 111 11111011 1111 111 1111111 1101 1111
41
- 111 11111 1110111111111111 111 1111 1111 1111111101 1111 111111111 1111011 111111111 1111
42
- 1111111 111110111110 111 1111 1111 111111 1111 11011101 10111 11111 1111
43
- 11011 111111 11 11111
44
- 111111 11101 111111
45
- 111111 111 111111
46
- 111111 111 111111
47
- 111111111
48
- 110
49
- `;const A=String.raw`
50
- _ _ _____ _
51
- | | | |___ / _ __ __ ___ _____| |
52
- | |_| | |_ \| '__/ _ \ \ / / _ \ |
53
- | _ |___) | | | (_| |\ V / __/ |
54
- |_| |_|____/|_| \__,_| \_/ \___|_|
55
-
56
- `;function j(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=T(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=S(w(e,t),r,o)},c=e.dir||C(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 M=process.env.NODE_ENV||`development`;let N=M===`development`?`.h3ravel/serve`:`dist`;process.env.DIST_DIR&&(N=process.env.DIST_DIR);var P={outDir:N,outExtensions:e=>({js:e.format===`es`?`.js`:`.cjs`,dts:`.d.ts`}),entry:[`src/**/*.ts`],format:[`esm`],target:`node22`,sourcemap:M===`development`,minify:!!process.env.DIST_MINIFY,external:[/^@h3ravel\/.*/gi],clean:!0,shims:!0,copy:[{from:`public`,to:N},`src/resources`,`src/database`],env:M===`development`?{NODE_ENV:M,DIST_DIR:N}:{},watch:M===`development`&&process.env.CLI_BUILD!==`true`?[`.env`,`.env.*`,`src`,`../../packages`]:!1,dts:!1,logLevel:`silent`,nodeProtocol:!0,skipNodeModulesBundle:!0,hooks(e){e.hook(`build:done`,async()=>{let e=[`database/migrations`,`database/factories`,`database/seeders`];for(let t=0;t<e.length;t++){let n=e[t];x(b.join(N,n))&&await _(b.join(N,n),{recursive:!0})}})},plugins:M===`development`&&process.env.CLI_BUILD!==`true`?[j({env:Object.assign({},process.env,{NODE_ENV:M,DIST_DIR:N}),execArgv:[`-r`,`source-map-support/register`],allowRestarts:!1,input:process.cwd()+`/src/server.ts`})]:[]},F=class extends n{static priority=992;static runsInConsole=!0;runsInConsole=!0;register(){let e=`/${env(`DIST_DIR`,`.h3ravel/serve`)}/`.replaceAll(`//`,``),n=[E,O,k,D];s.init(this.app,{logo:A,resolver:new t(this.app).resolveMethodParams,tsDownConfig:P,baseCommands:n,packages:[{name:`@h3ravel/core`,alias:`H3ravel Framework`},{name:`@h3ravel/musket`,alias:`Musket CLI`}],cliName:`musket`,hideMusketInfo:!0,discoveryPaths:[app_path(`Console/Commands/*.js`).replace(`/src/`,e)]}),[`SIGINT`,`SIGTERM`,`SIGTSTP`].forEach(e=>process.on(e,()=>{process.exit(0)}))}};new class{async fire(){let t=process.env.DIST_DIR??`/.h3ravel/serve/`,n=[],r=new e(process.cwd()),i=base_path(b.join(t,`bootstrap/providers.js`));try{n.push(...(await import(i)).default)}catch{}n.push(F),await r.quickStartup(n,[`CoreServiceProvider`])}}().fire();export{};
2
+ import"tsx/esm";import{IApplication as e}from"@h3ravel/contracts";import{Application as t}from"@h3ravel/core";import n from"node:path";new class{async app(){let r=process.env.DIST_DIR??`/.h3ravel/serve/`,i=[],a=new t(process.cwd(),`Console`),o=base_path(n.join(r,`bootstrap/providers.js`));try{i.push(...(await import(o)).default)}catch{}let{default:s}=await import(base_path(n.join(r,`bootstrap/app.js`)));new s().configure(a),a.initialize(i,[`CoreServiceProvider`]).logging(!1).singleton(e,()=>a),await a.handleCommand()}}().app();export{};
package/bin/prepare.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{t as e}from"./zero-CW4MtoXR.js";new e().prepare();export{};
2
+ import e,{join as t}from"node:path";import{FileSystem as n,mainTsconfig as r}from"@h3ravel/shared";import{mkdir as i,readdir as a,rm as o,writeFile as s}from"node:fs/promises";import{execa as c}from"execa";import l from"preferred-pm";new class{async prepare(u=`.h3ravel/serve`){let d=(await l(process.cwd()))?.name??`npm`,f=t(process.env.DIST_DIR??u);try{await n.fileExists(f)&&(await a(f)).length>0&&await o(f,{recursive:!0,force:!0}),await n.fileExists(e.join(f,`tsconfig.json`))||(await i(e.join(f.replace(`/serve`,``)),{recursive:!0}),await s(e.join(f.replace(`/serve`,``),`tsconfig.json`),JSON.stringify(r,null,2)))}catch(e){console.log(e.message)}let p={EXTENDED_DEBUG:`false`,CLI_BUILD:`true`,NODE_ENV:`production`,DIST_DIR:f,LOG_LEVEL:`silent`};await c(d,[`tsdown`,`--silent`,`--config-loader`,`unconfig`,`-c`,`tsdown.default.config.ts`].filter(e=>e!==null),{stdout:`inherit`,stderr:`inherit`,cwd:t(process.cwd()),env:Object.assign({},process.env,p)})}}().prepare();export{};
package/dist/index.cjs CHANGED
@@ -6,12 +6,16 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
8
  var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
- key = keys[i];
11
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
- get: ((k) => from[k]).bind(null, key),
13
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
- });
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) {
13
+ __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ }
15
19
  }
16
20
  return to;
17
21
  };
@@ -35,10 +39,8 @@ let node_fs_promises = require("node:fs/promises");
35
39
  let __h3ravel_support = require("@h3ravel/support");
36
40
  let node_path = require("node:path");
37
41
  node_path = __toESM(node_path);
38
- let __h3ravel_core = require("@h3ravel/core");
39
- let node_fs = require("node:fs");
40
- let child_process = require("child_process");
41
- let path = require("path");
42
+ require("@h3ravel/contracts");
43
+ require("@h3ravel/core");
42
44
 
43
45
  //#region src/Commands/BuildCommand.ts
44
46
  var BuildCommand = class BuildCommand extends __h3ravel_musket.Command {
@@ -65,13 +67,13 @@ var BuildCommand = class BuildCommand extends __h3ravel_musket.Command {
65
67
  }
66
68
  }
67
69
  async fire() {
68
- const outDir$1 = this.option("dev") ? ".h3ravel/serve" : env("DIST_DIR", "dist");
70
+ const outDir = this.option("dev") ? ".h3ravel/serve" : env("DIST_DIR", "dist");
69
71
  const minify = this.option("minify");
70
72
  const verbosity = this.getVerbosity();
71
73
  const debug = verbosity > 0;
72
74
  this.newLine();
73
75
  await BuildCommand.build({
74
- outDir: outDir$1,
76
+ outDir,
75
77
  minify,
76
78
  verbosity,
77
79
  debug,
@@ -82,7 +84,7 @@ var BuildCommand = class BuildCommand extends __h3ravel_musket.Command {
82
84
  /**
83
85
  * build
84
86
  */
85
- static async build({ debug, minify, mute, verbosity, outDir: outDir$1 } = {
87
+ static async build({ debug, minify, mute, verbosity, outDir } = {
86
88
  mute: false,
87
89
  debug: false,
88
90
  minify: false,
@@ -94,7 +96,7 @@ var BuildCommand = class BuildCommand extends __h3ravel_musket.Command {
94
96
  EXTENDED_DEBUG: debug ? "true" : "false",
95
97
  CLI_BUILD: "true",
96
98
  NODE_ENV: "production",
97
- DIST_DIR: outDir$1,
99
+ DIST_DIR: outDir,
98
100
  DIST_MINIFY: minify,
99
101
  LOG_LEVEL: [
100
102
  "silent",
@@ -117,7 +119,7 @@ var BuildCommand = class BuildCommand extends __h3ravel_musket.Command {
117
119
  cwd: base_path(),
118
120
  env: Object.assign({}, process.env, ENV_VARS)
119
121
  });
120
- const type = outDir$1 === "dist" ? "Production" : "Development";
122
+ const type = outDir === "dist" ? "Production" : "Development";
121
123
  return await __h3ravel_shared.TaskManager.advancedTaskRunner([[`Creating ${type} Bundle`, "STARTED"], [`${type} Bundle Created`, "COMPLETED"]], async () => {
122
124
  await (0, execa.execa)(pm, [
123
125
  "tsdown",
@@ -171,18 +173,18 @@ var KeyGenerateCommand = class extends __h3ravel_musket.Command {
171
173
  }
172
174
  let content = await (0, fs_promises.readFile)(config$1.envPath, "utf8");
173
175
  const buf = Buffer.from(content);
174
- const env$2 = dotenv.default.parse(buf);
176
+ const env$1 = dotenv.default.parse(buf);
175
177
  if (config$1.show) {
176
- if (!env$2.APP_KEY || env$2.APP_KEY === "") {
178
+ if (!env$1.APP_KEY || env$1.APP_KEY === "") {
177
179
  this.error("Application key not set.");
178
180
  this.newLine();
179
181
  process.exit(0);
180
182
  }
181
- const [enc, key] = env$2.APP_KEY.split(":");
183
+ const [enc, key] = env$1.APP_KEY.split(":");
182
184
  __h3ravel_shared.Logger.log([[enc, "yellow"], [key, "white"]], ":");
183
185
  this.newLine();
184
186
  process.exit(0);
185
- } else if (env$2.APP_ENV === "production" && !this.option("force")) {
187
+ } else if (env$1.APP_ENV === "production" && !this.option("force")) {
186
188
  this.error("Application is currently in production, failed to set key.");
187
189
  this.newLine();
188
190
  process.exit(1);
@@ -253,15 +255,15 @@ var MakeCommand = class extends __h3ravel_musket.Command {
253
255
  const force = this.option("force");
254
256
  const crtlrPath = __h3ravel_shared.FileSystem.findModulePkg("@h3ravel/http", this.kernel.cwd) ?? "";
255
257
  const stubPath = node_path.default.join(crtlrPath, `dist/stubs/controller${type}.stub`);
256
- const path$4 = app_path(`Http/Controllers/${name}.ts`);
258
+ const path$2 = app_path(`Http/Controllers/${name}.ts`);
257
259
  /** The Controller is scoped to a path make sure to create the associated directories */
258
- if (name.includes("/")) await (0, node_fs_promises.mkdir)(__h3ravel_support.Str.beforeLast(path$4, "/"), { recursive: true });
260
+ if (name.includes("/")) await (0, node_fs_promises.mkdir)(__h3ravel_support.Str.beforeLast(path$2, "/"), { recursive: true });
259
261
  /** Check if the controller already exists */
260
- if (!force && await __h3ravel_shared.FileSystem.fileExists(path$4)) __h3ravel_shared.Logger.error(`ERORR: ${name} controller already exists`);
262
+ if (!force && await __h3ravel_shared.FileSystem.fileExists(path$2)) __h3ravel_shared.Logger.error(`ERORR: ${name} controller already exists`);
261
263
  let stub = await (0, node_fs_promises.readFile)(stubPath, "utf-8");
262
264
  stub = stub.replace(/{{ name }}/g, name);
263
- await (0, node_fs_promises.writeFile)(path$4, stub);
264
- __h3ravel_shared.Logger.split("INFO: Controller Created", __h3ravel_shared.Logger.log(node_path.default.basename(path$4), "gray", false));
265
+ await (0, node_fs_promises.writeFile)(path$2, stub);
266
+ __h3ravel_shared.Logger.split("INFO: Controller Created", __h3ravel_shared.Logger.log(node_path.default.basename(path$2), "gray", false));
265
267
  }
266
268
  makeResource() {
267
269
  __h3ravel_shared.Logger.success("Resource support is not yet available");
@@ -278,12 +280,12 @@ var MakeCommand = class extends __h3ravel_musket.Command {
278
280
  async makeView() {
279
281
  const name = this.argument("name");
280
282
  const force = this.option("force");
281
- const path$4 = base_path(`src/resources/views/${name}.edge`);
283
+ const path$2 = base_path(`src/resources/views/${name}.edge`);
282
284
  /** The view is scoped to a path make sure to create the associated directories */
283
- if (name.includes("/")) await (0, node_fs_promises.mkdir)(__h3ravel_support.Str.beforeLast(path$4, "/"), { recursive: true });
285
+ if (name.includes("/")) await (0, node_fs_promises.mkdir)(__h3ravel_support.Str.beforeLast(path$2, "/"), { recursive: true });
284
286
  /** Check if the view already exists */
285
- if (!force && await __h3ravel_shared.FileSystem.fileExists(path$4)) __h3ravel_shared.Logger.error(`ERORR: ${name} view already exists`);
286
- await (0, node_fs_promises.writeFile)(path$4, `{{-- src/resources/views/${name}.edge --}}`);
287
+ if (!force && await __h3ravel_shared.FileSystem.fileExists(path$2)) __h3ravel_shared.Logger.error(`ERORR: ${name} view already exists`);
288
+ await (0, node_fs_promises.writeFile)(path$2, `{{-- src/resources/views/${name}.edge --}}`);
287
289
  __h3ravel_shared.Logger.split("INFO: View Created", __h3ravel_shared.Logger.log(`src/resources/views/${name}.edge`, "gray", false));
288
290
  }
289
291
  };
@@ -331,210 +333,8 @@ var PostinstallCommand = class extends __h3ravel_musket.Command {
331
333
  }
332
334
  };
333
335
 
334
- //#endregion
335
- //#region src/logo.ts
336
- const logo = String.raw`
337
- 111
338
- 111111111
339
- 1111111111 111111
340
- 111111 111 111111
341
- 111111 111 111111
342
- 11111 111 11111
343
- 1111111 111 1111111
344
- 111 11111 111 111111 111 1111 1111 11111111 1111
345
- 111 11111 1111 111111 111 1111 1111 1111 11111 1111
346
- 111 11111 11111 111 1111 1111 111111111111 111111111111 1111 1111111 1111
347
- 111 111111 1111 111 111111111111 111111 11111 1111 111 1111 11111111 1111 1111
348
- 111 111 11111111 111 1101 1101 111111111 11111111 1111 1111111111111111101
349
- 111 1111111111111111 1111 111 1111 1111 111 11111011 1111 111 1111111 1101 1111
350
- 111 11111 1110111111111111 111 1111 1111 1111111101 1111 111111111 1111011 111111111 1111
351
- 1111111 111110111110 111 1111 1111 111111 1111 11011101 10111 11111 1111
352
- 11011 111111 11 11111
353
- 111111 11101 111111
354
- 111111 111 111111
355
- 111111 111 111111
356
- 111111111
357
- 110
358
- `;
359
- const altLogo = String.raw`
360
- _ _ _____ _
361
- | | | |___ / _ __ __ ___ _____| |
362
- | |_| | |_ \| '__/ _ \ \ / / _ \ |
363
- | _ |___) | | | (_| |\ V / __/ |
364
- |_| |_|____/|_| \__,_| \_/ \___|_|
365
-
366
- `;
367
-
368
- //#endregion
369
- //#region ../../node_modules/.pnpm/@rollup+plugin-run@3.1.0_rollup@4.52.5/node_modules/@rollup/plugin-run/dist/es/index.js
370
- function run(opts = {}) {
371
- let input;
372
- let proc;
373
- const args = opts.args || [];
374
- const allowRestarts = opts.allowRestarts || false;
375
- const overrideInput = opts.input;
376
- const forkOptions = opts.options || opts;
377
- delete forkOptions.args;
378
- delete forkOptions.allowRestarts;
379
- return {
380
- name: "run",
381
- buildStart(options) {
382
- let inputs = overrideInput !== null && overrideInput !== void 0 ? overrideInput : options.input;
383
- if (typeof inputs === "string") inputs = [inputs];
384
- if (typeof inputs === "object") inputs = Object.values(inputs);
385
- if (inputs.length > 1) throw new Error(`@rollup/plugin-run must have a single entry point; consider setting the \`input\` option`);
386
- input = (0, path.resolve)(inputs[0]);
387
- },
388
- generateBundle(_outputOptions, _bundle, isWrite) {
389
- if (!isWrite) this.error(`@rollup/plugin-run currently only works with bundles that are written to disk`);
390
- },
391
- writeBundle(outputOptions, bundle) {
392
- const forkBundle = (dir$1, entryFileName$1) => {
393
- if (proc) proc.kill();
394
- proc = (0, child_process.fork)((0, path.join)(dir$1, entryFileName$1), args, forkOptions);
395
- };
396
- const dir = outputOptions.dir || (0, path.dirname)(outputOptions.file);
397
- const entryFileName = Object.keys(bundle).find((fileName) => {
398
- const chunk = bundle[fileName];
399
- return chunk.isEntry && chunk.facadeModuleId === input;
400
- });
401
- if (entryFileName) {
402
- forkBundle(dir, entryFileName);
403
- if (allowRestarts) {
404
- process.stdin.resume();
405
- process.stdin.setEncoding("utf8");
406
- process.stdin.on("data", (data) => {
407
- const line = data.toString().trim().toLowerCase();
408
- if (line === "rs" || line === "restart" || data.toString().charCodeAt(0) === 11) forkBundle(dir, entryFileName);
409
- else if (line === "cls" || line === "clear" || data.toString().charCodeAt(0) === 12) console.clear();
410
- });
411
- }
412
- } else this.error(`@rollup/plugin-run could not find output chunk`);
413
- }
414
- };
415
- }
416
-
417
- //#endregion
418
- //#region src/TsdownConfig.ts
419
- const env$1 = process.env.NODE_ENV || "development";
420
- let outDir = env$1 === "development" ? ".h3ravel/serve" : "dist";
421
- if (process.env.DIST_DIR) outDir = process.env.DIST_DIR;
422
- const TsDownConfig = {
423
- outDir,
424
- outExtensions: (e) => {
425
- return {
426
- js: e.format === "es" ? ".js" : ".cjs",
427
- dts: ".d.ts"
428
- };
429
- },
430
- entry: ["src/**/*.ts"],
431
- format: ["esm"],
432
- target: "node22",
433
- sourcemap: env$1 === "development",
434
- minify: !!process.env.DIST_MINIFY,
435
- external: [/^@h3ravel\/.*/gi],
436
- clean: true,
437
- shims: true,
438
- copy: [
439
- {
440
- from: "public",
441
- to: outDir
442
- },
443
- "src/resources",
444
- "src/database"
445
- ],
446
- env: env$1 === "development" ? {
447
- NODE_ENV: env$1,
448
- DIST_DIR: outDir
449
- } : {},
450
- watch: env$1 === "development" && process.env.CLI_BUILD !== "true" ? [
451
- ".env",
452
- ".env.*",
453
- "src",
454
- "../../packages"
455
- ] : false,
456
- dts: false,
457
- logLevel: "silent",
458
- nodeProtocol: true,
459
- skipNodeModulesBundle: true,
460
- hooks(e) {
461
- e.hook("build:done", async () => {
462
- const paths = [
463
- "database/migrations",
464
- "database/factories",
465
- "database/seeders"
466
- ];
467
- for (let i = 0; i < paths.length; i++) {
468
- const name = paths[i];
469
- if ((0, node_fs.existsSync)(node_path.default.join(outDir, name))) await (0, node_fs_promises.rm)(node_path.default.join(outDir, name), { recursive: true });
470
- }
471
- });
472
- },
473
- plugins: env$1 === "development" && process.env.CLI_BUILD !== "true" ? [run({
474
- env: Object.assign({}, process.env, {
475
- NODE_ENV: env$1,
476
- DIST_DIR: outDir
477
- }),
478
- execArgv: ["-r", "source-map-support/register"],
479
- allowRestarts: false,
480
- input: process.cwd() + "/src/server.ts"
481
- })] : []
482
- };
483
- var TsdownConfig_default = TsDownConfig;
484
-
485
- //#endregion
486
- //#region src/Providers/ConsoleServiceProvider.ts
487
- /**
488
- * Handles CLI commands and tooling.
489
- *
490
- * Auto-Registered when in CLI mode
491
- */
492
- var ConsoleServiceProvider = class extends __h3ravel_core.ServiceProvider {
493
- static priority = 992;
494
- /**
495
- * Indicate that this service provider only runs in console
496
- */
497
- static runsInConsole = true;
498
- runsInConsole = true;
499
- register() {
500
- const DIST_DIR = `/${env("DIST_DIR", ".h3ravel/serve")}/`.replaceAll("//", "");
501
- const baseCommands = [
502
- BuildCommand,
503
- MakeCommand,
504
- PostinstallCommand,
505
- KeyGenerateCommand
506
- ];
507
- __h3ravel_musket.Kernel.init(this.app, {
508
- logo: altLogo,
509
- resolver: new __h3ravel_core.ContainerResolver(this.app).resolveMethodParams,
510
- tsDownConfig: TsdownConfig_default,
511
- baseCommands,
512
- packages: [{
513
- name: "@h3ravel/core",
514
- alias: "H3ravel Framework"
515
- }, {
516
- name: "@h3ravel/musket",
517
- alias: "Musket CLI"
518
- }],
519
- cliName: "musket",
520
- hideMusketInfo: true,
521
- discoveryPaths: [app_path("Console/Commands/*.js").replace("/src/", DIST_DIR)]
522
- });
523
- [
524
- "SIGINT",
525
- "SIGTERM",
526
- "SIGTSTP"
527
- ].forEach((sig) => process.on(sig, () => {
528
- process.exit(0);
529
- }));
530
- }
531
- };
532
-
533
336
  //#endregion
534
337
  exports.BuildCommand = BuildCommand;
535
- exports.ConsoleServiceProvider = ConsoleServiceProvider;
536
338
  exports.KeyGenerateCommand = KeyGenerateCommand;
537
339
  exports.MakeCommand = MakeCommand;
538
- exports.PostinstallCommand = PostinstallCommand;
539
- exports.TsDownConfig = TsDownConfig;
540
- //# sourceMappingURL=index.cjs.map
340
+ exports.PostinstallCommand = PostinstallCommand;
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  /// <reference path="./app.globals.d.ts" />
2
2
  import * as execa0 from "execa";
3
3
  import { Command } from "@h3ravel/musket";
4
- import { ServiceProvider } from "@h3ravel/core";
5
- import { UserConfig } from "tsdown";
6
4
 
7
5
  //#region src/Commands/BuildCommand.d.ts
8
6
  declare class BuildCommand extends Command {
@@ -126,24 +124,4 @@ declare class PostinstallCommand extends Command {
126
124
  private createSqliteDB;
127
125
  }
128
126
  //#endregion
129
- //#region src/Providers/ConsoleServiceProvider.d.ts
130
- /**
131
- * Handles CLI commands and tooling.
132
- *
133
- * Auto-Registered when in CLI mode
134
- */
135
- declare class ConsoleServiceProvider extends ServiceProvider {
136
- static priority: number;
137
- /**
138
- * Indicate that this service provider only runs in console
139
- */
140
- static runsInConsole: boolean;
141
- runsInConsole: boolean;
142
- register(): void;
143
- }
144
- //#endregion
145
- //#region src/TsdownConfig.d.ts
146
- declare const TsDownConfig: UserConfig;
147
- //#endregion
148
- export { BuildCommand, ConsoleServiceProvider, KeyGenerateCommand, MakeCommand, PostinstallCommand, TsDownConfig };
149
- //# sourceMappingURL=index.d.ts.map
127
+ export { BuildCommand, KeyGenerateCommand, MakeCommand, PostinstallCommand };
package/dist/index.js CHANGED
@@ -1,17 +1,15 @@
1
1
  import { FileSystem, Logger, TaskManager } from "@h3ravel/shared";
2
- import { Command, Kernel } from "@h3ravel/musket";
2
+ import { Command } from "@h3ravel/musket";
3
3
  import { execa } from "execa";
4
4
  import preferredPM from "preferred-pm";
5
5
  import { copyFile, readFile, writeFile } from "fs/promises";
6
6
  import crypto from "crypto";
7
7
  import dotenv from "dotenv";
8
- import { mkdir, readFile as readFile$1, rm, writeFile as writeFile$1 } from "node:fs/promises";
8
+ import { mkdir, readFile as readFile$1, writeFile as writeFile$1 } from "node:fs/promises";
9
9
  import { Str } from "@h3ravel/support";
10
10
  import nodepath from "node:path";
11
- import { ContainerResolver, ServiceProvider } from "@h3ravel/core";
12
- import { existsSync } from "node:fs";
13
- import { fork } from "child_process";
14
- import { dirname, join, resolve } from "path";
11
+ import "@h3ravel/contracts";
12
+ import "@h3ravel/core";
15
13
 
16
14
  //#region src/Commands/BuildCommand.ts
17
15
  var BuildCommand = class BuildCommand extends Command {
@@ -38,13 +36,13 @@ var BuildCommand = class BuildCommand extends Command {
38
36
  }
39
37
  }
40
38
  async fire() {
41
- const outDir$1 = this.option("dev") ? ".h3ravel/serve" : env("DIST_DIR", "dist");
39
+ const outDir = this.option("dev") ? ".h3ravel/serve" : env("DIST_DIR", "dist");
42
40
  const minify = this.option("minify");
43
41
  const verbosity = this.getVerbosity();
44
42
  const debug = verbosity > 0;
45
43
  this.newLine();
46
44
  await BuildCommand.build({
47
- outDir: outDir$1,
45
+ outDir,
48
46
  minify,
49
47
  verbosity,
50
48
  debug,
@@ -55,7 +53,7 @@ var BuildCommand = class BuildCommand extends Command {
55
53
  /**
56
54
  * build
57
55
  */
58
- static async build({ debug, minify, mute, verbosity, outDir: outDir$1 } = {
56
+ static async build({ debug, minify, mute, verbosity, outDir } = {
59
57
  mute: false,
60
58
  debug: false,
61
59
  minify: false,
@@ -67,7 +65,7 @@ var BuildCommand = class BuildCommand extends Command {
67
65
  EXTENDED_DEBUG: debug ? "true" : "false",
68
66
  CLI_BUILD: "true",
69
67
  NODE_ENV: "production",
70
- DIST_DIR: outDir$1,
68
+ DIST_DIR: outDir,
71
69
  DIST_MINIFY: minify,
72
70
  LOG_LEVEL: [
73
71
  "silent",
@@ -90,7 +88,7 @@ var BuildCommand = class BuildCommand extends Command {
90
88
  cwd: base_path(),
91
89
  env: Object.assign({}, process.env, ENV_VARS)
92
90
  });
93
- const type = outDir$1 === "dist" ? "Production" : "Development";
91
+ const type = outDir === "dist" ? "Production" : "Development";
94
92
  return await TaskManager.advancedTaskRunner([[`Creating ${type} Bundle`, "STARTED"], [`${type} Bundle Created`, "COMPLETED"]], async () => {
95
93
  await execa(pm, [
96
94
  "tsdown",
@@ -144,18 +142,18 @@ var KeyGenerateCommand = class extends Command {
144
142
  }
145
143
  let content = await readFile(config$1.envPath, "utf8");
146
144
  const buf = Buffer.from(content);
147
- const env$2 = dotenv.parse(buf);
145
+ const env$1 = dotenv.parse(buf);
148
146
  if (config$1.show) {
149
- if (!env$2.APP_KEY || env$2.APP_KEY === "") {
147
+ if (!env$1.APP_KEY || env$1.APP_KEY === "") {
150
148
  this.error("Application key not set.");
151
149
  this.newLine();
152
150
  process.exit(0);
153
151
  }
154
- const [enc, key] = env$2.APP_KEY.split(":");
152
+ const [enc, key] = env$1.APP_KEY.split(":");
155
153
  Logger.log([[enc, "yellow"], [key, "white"]], ":");
156
154
  this.newLine();
157
155
  process.exit(0);
158
- } else if (env$2.APP_ENV === "production" && !this.option("force")) {
156
+ } else if (env$1.APP_ENV === "production" && !this.option("force")) {
159
157
  this.error("Application is currently in production, failed to set key.");
160
158
  this.newLine();
161
159
  process.exit(1);
@@ -305,204 +303,4 @@ var PostinstallCommand = class extends Command {
305
303
  };
306
304
 
307
305
  //#endregion
308
- //#region src/logo.ts
309
- const logo = String.raw`
310
- 111
311
- 111111111
312
- 1111111111 111111
313
- 111111 111 111111
314
- 111111 111 111111
315
- 11111 111 11111
316
- 1111111 111 1111111
317
- 111 11111 111 111111 111 1111 1111 11111111 1111
318
- 111 11111 1111 111111 111 1111 1111 1111 11111 1111
319
- 111 11111 11111 111 1111 1111 111111111111 111111111111 1111 1111111 1111
320
- 111 111111 1111 111 111111111111 111111 11111 1111 111 1111 11111111 1111 1111
321
- 111 111 11111111 111 1101 1101 111111111 11111111 1111 1111111111111111101
322
- 111 1111111111111111 1111 111 1111 1111 111 11111011 1111 111 1111111 1101 1111
323
- 111 11111 1110111111111111 111 1111 1111 1111111101 1111 111111111 1111011 111111111 1111
324
- 1111111 111110111110 111 1111 1111 111111 1111 11011101 10111 11111 1111
325
- 11011 111111 11 11111
326
- 111111 11101 111111
327
- 111111 111 111111
328
- 111111 111 111111
329
- 111111111
330
- 110
331
- `;
332
- const altLogo = String.raw`
333
- _ _ _____ _
334
- | | | |___ / _ __ __ ___ _____| |
335
- | |_| | |_ \| '__/ _ \ \ / / _ \ |
336
- | _ |___) | | | (_| |\ V / __/ |
337
- |_| |_|____/|_| \__,_| \_/ \___|_|
338
-
339
- `;
340
-
341
- //#endregion
342
- //#region ../../node_modules/.pnpm/@rollup+plugin-run@3.1.0_rollup@4.52.5/node_modules/@rollup/plugin-run/dist/es/index.js
343
- function run(opts = {}) {
344
- let input;
345
- let proc;
346
- const args = opts.args || [];
347
- const allowRestarts = opts.allowRestarts || false;
348
- const overrideInput = opts.input;
349
- const forkOptions = opts.options || opts;
350
- delete forkOptions.args;
351
- delete forkOptions.allowRestarts;
352
- return {
353
- name: "run",
354
- buildStart(options) {
355
- let inputs = overrideInput !== null && overrideInput !== void 0 ? overrideInput : options.input;
356
- if (typeof inputs === "string") inputs = [inputs];
357
- if (typeof inputs === "object") inputs = Object.values(inputs);
358
- if (inputs.length > 1) throw new Error(`@rollup/plugin-run must have a single entry point; consider setting the \`input\` option`);
359
- input = resolve(inputs[0]);
360
- },
361
- generateBundle(_outputOptions, _bundle, isWrite) {
362
- if (!isWrite) this.error(`@rollup/plugin-run currently only works with bundles that are written to disk`);
363
- },
364
- writeBundle(outputOptions, bundle) {
365
- const forkBundle = (dir$1, entryFileName$1) => {
366
- if (proc) proc.kill();
367
- proc = fork(join(dir$1, entryFileName$1), args, forkOptions);
368
- };
369
- const dir = outputOptions.dir || dirname(outputOptions.file);
370
- const entryFileName = Object.keys(bundle).find((fileName) => {
371
- const chunk = bundle[fileName];
372
- return chunk.isEntry && chunk.facadeModuleId === input;
373
- });
374
- if (entryFileName) {
375
- forkBundle(dir, entryFileName);
376
- if (allowRestarts) {
377
- process.stdin.resume();
378
- process.stdin.setEncoding("utf8");
379
- process.stdin.on("data", (data) => {
380
- const line = data.toString().trim().toLowerCase();
381
- if (line === "rs" || line === "restart" || data.toString().charCodeAt(0) === 11) forkBundle(dir, entryFileName);
382
- else if (line === "cls" || line === "clear" || data.toString().charCodeAt(0) === 12) console.clear();
383
- });
384
- }
385
- } else this.error(`@rollup/plugin-run could not find output chunk`);
386
- }
387
- };
388
- }
389
-
390
- //#endregion
391
- //#region src/TsdownConfig.ts
392
- const env$1 = process.env.NODE_ENV || "development";
393
- let outDir = env$1 === "development" ? ".h3ravel/serve" : "dist";
394
- if (process.env.DIST_DIR) outDir = process.env.DIST_DIR;
395
- const TsDownConfig = {
396
- outDir,
397
- outExtensions: (e) => {
398
- return {
399
- js: e.format === "es" ? ".js" : ".cjs",
400
- dts: ".d.ts"
401
- };
402
- },
403
- entry: ["src/**/*.ts"],
404
- format: ["esm"],
405
- target: "node22",
406
- sourcemap: env$1 === "development",
407
- minify: !!process.env.DIST_MINIFY,
408
- external: [/^@h3ravel\/.*/gi],
409
- clean: true,
410
- shims: true,
411
- copy: [
412
- {
413
- from: "public",
414
- to: outDir
415
- },
416
- "src/resources",
417
- "src/database"
418
- ],
419
- env: env$1 === "development" ? {
420
- NODE_ENV: env$1,
421
- DIST_DIR: outDir
422
- } : {},
423
- watch: env$1 === "development" && process.env.CLI_BUILD !== "true" ? [
424
- ".env",
425
- ".env.*",
426
- "src",
427
- "../../packages"
428
- ] : false,
429
- dts: false,
430
- logLevel: "silent",
431
- nodeProtocol: true,
432
- skipNodeModulesBundle: true,
433
- hooks(e) {
434
- e.hook("build:done", async () => {
435
- const paths = [
436
- "database/migrations",
437
- "database/factories",
438
- "database/seeders"
439
- ];
440
- for (let i = 0; i < paths.length; i++) {
441
- const name = paths[i];
442
- if (existsSync(nodepath.join(outDir, name))) await rm(nodepath.join(outDir, name), { recursive: true });
443
- }
444
- });
445
- },
446
- plugins: env$1 === "development" && process.env.CLI_BUILD !== "true" ? [run({
447
- env: Object.assign({}, process.env, {
448
- NODE_ENV: env$1,
449
- DIST_DIR: outDir
450
- }),
451
- execArgv: ["-r", "source-map-support/register"],
452
- allowRestarts: false,
453
- input: process.cwd() + "/src/server.ts"
454
- })] : []
455
- };
456
- var TsdownConfig_default = TsDownConfig;
457
-
458
- //#endregion
459
- //#region src/Providers/ConsoleServiceProvider.ts
460
- /**
461
- * Handles CLI commands and tooling.
462
- *
463
- * Auto-Registered when in CLI mode
464
- */
465
- var ConsoleServiceProvider = class extends ServiceProvider {
466
- static priority = 992;
467
- /**
468
- * Indicate that this service provider only runs in console
469
- */
470
- static runsInConsole = true;
471
- runsInConsole = true;
472
- register() {
473
- const DIST_DIR = `/${env("DIST_DIR", ".h3ravel/serve")}/`.replaceAll("//", "");
474
- const baseCommands = [
475
- BuildCommand,
476
- MakeCommand,
477
- PostinstallCommand,
478
- KeyGenerateCommand
479
- ];
480
- Kernel.init(this.app, {
481
- logo: altLogo,
482
- resolver: new ContainerResolver(this.app).resolveMethodParams,
483
- tsDownConfig: TsdownConfig_default,
484
- baseCommands,
485
- packages: [{
486
- name: "@h3ravel/core",
487
- alias: "H3ravel Framework"
488
- }, {
489
- name: "@h3ravel/musket",
490
- alias: "Musket CLI"
491
- }],
492
- cliName: "musket",
493
- hideMusketInfo: true,
494
- discoveryPaths: [app_path("Console/Commands/*.js").replace("/src/", DIST_DIR)]
495
- });
496
- [
497
- "SIGINT",
498
- "SIGTERM",
499
- "SIGTSTP"
500
- ].forEach((sig) => process.on(sig, () => {
501
- process.exit(0);
502
- }));
503
- }
504
- };
505
-
506
- //#endregion
507
- export { BuildCommand, ConsoleServiceProvider, KeyGenerateCommand, MakeCommand, PostinstallCommand, TsDownConfig };
508
- //# sourceMappingURL=index.js.map
306
+ export { BuildCommand, KeyGenerateCommand, MakeCommand, PostinstallCommand };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@h3ravel/console",
3
- "version": "11.14.10",
3
+ "version": "11.15.0-alpha.10",
4
4
  "description": "CLI utilities for scaffolding, running migrations, tasks and for H3ravel.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -48,27 +48,28 @@
48
48
  "laravel"
49
49
  ],
50
50
  "peerDependencies": {
51
- "@h3ravel/core": "^1.21.6",
52
- "@h3ravel/support": "^0.15.6"
51
+ "@h3ravel/core": "^1.22.0-alpha.10",
52
+ "@h3ravel/support": "^0.17.0-alpha.10"
53
53
  },
54
54
  "devDependencies": {
55
+ "@h3ravel/contracts": "^0.29.0-alpha.10",
55
56
  "typescript": "^5.9.2"
56
57
  },
57
58
  "dependencies": {
59
+ "@h3ravel/musket": "^0.8.0-alpha.6",
60
+ "@h3ravel/shared": "^0.29.0-alpha.10",
61
+ "@h3ravel/foundation": "^0.1.0-alpha.10",
58
62
  "chalk": "^5.6.2",
59
63
  "commander": "^14.0.1",
60
64
  "dayjs": "^1.11.18",
65
+ "dotenv": "^17.2.3",
61
66
  "execa": "^9.6.0",
62
67
  "preferred-pm": "^4.1.1",
63
68
  "radashi": "^12.6.2",
64
69
  "resolve-from": "^5.0.0",
65
- "dotenv": "^17.2.3",
66
- "@h3ravel/musket": "^0.3.10",
67
- "tsx": "^4.20.6",
68
- "@h3ravel/shared": "^0.27.7"
70
+ "tsx": "^4.20.6"
69
71
  },
70
72
  "scripts": {
71
- "barrelx": "barrelsby --directory src --delete --singleQuotes",
72
73
  "build": "tsdown --config-loader unconfig",
73
74
  "dev": "tsx watch src/index.ts",
74
75
  "start": "node dist/index.js",
@@ -1 +0,0 @@
1
- import{FileSystem as e,mainTsconfig as t}from"@h3ravel/shared";import{execa as n}from"execa";import r from"preferred-pm";import{mkdir as i,readdir as a,writeFile as o}from"node:fs/promises";import s,{join as c}from"node:path";var l=class{async prepare(l=`.h3ravel/serve`){let u=(await r(process.cwd()))?.name??`npm`,d=c(process.env.DIST_DIR??l);if(await e.fileExists(d)&&(await a(d)).length>0)return;await e.fileExists(s.join(d,`tsconfig.json`))||(await i(s.join(d.replace(`/serve`,``)),{recursive:!0}),await o(s.join(d.replace(`/serve`,``),`tsconfig.json`),JSON.stringify(t,null,2)));let f={EXTENDED_DEBUG:`false`,CLI_BUILD:`true`,NODE_ENV:`production`,DIST_DIR:d,LOG_LEVEL:`silent`};await n(u,[`tsdown`,`--silent`,`--config-loader`,`unconfig`,`-c`,`tsdown.default.config.ts`].filter(e=>e!==null),{stdout:`inherit`,stderr:`inherit`,cwd:c(process.cwd()),env:Object.assign({},process.env,f)})}};export{l as t};
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","names":["Command","outDir","TaskManager","Command","config","FileSystem","env","Command","FileSystem","nodepath","path","Str","Logger","Command","FileSystem","dir","entryFileName","env","TsDownConfig: UserConfig","path","ServiceProvider","ContainerResolver"],"sources":["../src/Commands/BuildCommand.ts","../src/Commands/KeyGenerateCommand.ts","../src/Commands/MakeCommand.ts","../src/Commands/PostinstallCommand.ts","../src/logo.ts","../../../node_modules/.pnpm/@rollup+plugin-run@3.1.0_rollup@4.52.5/node_modules/@rollup/plugin-run/dist/es/index.js","../src/TsdownConfig.ts","../src/Providers/ConsoleServiceProvider.ts"],"sourcesContent":["import { Logger, TaskManager } from '@h3ravel/shared'\n\nimport { Command } from '@h3ravel/musket'\nimport { execa } from 'execa'\nimport preferredPM from 'preferred-pm'\n\nexport class BuildCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `build\n {--m|minify : Minify your bundle output}\n {--d|dev : Build for dev but don't watch for changes}\n `\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Build the app for production'\n\n public async handle () {\n try {\n await this.fire()\n } catch (e) {\n Logger.error(e as any)\n }\n }\n\n protected async fire () {\n const outDir = this.option('dev') ? '.h3ravel/serve' : env('DIST_DIR', 'dist')\n const minify = this.option('minify')\n const verbosity = this.getVerbosity()\n const debug = verbosity > 0\n\n this.newLine()\n await BuildCommand.build({ outDir, minify, verbosity, debug, mute: false })\n this.newLine()\n }\n\n /**\n * build\n */\n public static async build ({ debug, minify, mute, verbosity, outDir } = {\n mute: false,\n debug: false,\n minify: false,\n verbosity: 0,\n outDir: 'dist'\n }) {\n\n const pm = (await preferredPM(base_path()))?.name ?? 'pnpm'\n\n const LOG_LEVELS = [\n 'silent',\n 'info',\n 'warn',\n 'error',\n ]\n\n const ENV_VARS = {\n EXTENDED_DEBUG: debug ? 'true' : 'false',\n CLI_BUILD: 'true',\n NODE_ENV: 'production',\n DIST_DIR: outDir,\n DIST_MINIFY: minify,\n LOG_LEVEL: LOG_LEVELS[verbosity]\n }\n\n const silent = ENV_VARS.LOG_LEVEL === 'silent' ? '--silent' : null\n\n if (mute) {\n return await execa(\n pm,\n ['tsdown', silent, '--config-loader', 'unconfig', '-c', 'tsdown.default.config.ts'].filter(e => e !== null),\n { stdout: 'inherit', stderr: 'inherit', cwd: base_path(), env: Object.assign({}, process.env, ENV_VARS) }\n )\n }\n\n const type = outDir === 'dist' ? 'Production' : 'Development'\n\n return await TaskManager.advancedTaskRunner(\n [[`Creating ${type} Bundle`, 'STARTED'], [`${type} Bundle Created`, 'COMPLETED']],\n async () => {\n await execa(\n pm,\n ['tsdown', silent, '--config-loader', 'unconfig', '-c', 'tsdown.default.config.ts'].filter(e => e !== null),\n { stdout: 'inherit', stderr: 'inherit', cwd: base_path(), env: Object.assign({}, process.env, ENV_VARS) }\n )\n }\n )\n }\n}\n","import { FileSystem, Logger } from '@h3ravel/shared'\nimport { copyFile, readFile, writeFile } from 'fs/promises'\n\nimport { Command } from '@h3ravel/musket'\nimport crypto from 'crypto'\nimport dotenv from 'dotenv'\n\nexport class KeyGenerateCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `key:generate\n {--force: Force the operation to run when in production}\n {--show: Display the key instead of modifying files}\n `\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Set the application key'\n\n public async handle () {\n const config = {\n key: crypto.randomBytes(32).toString('base64'),\n envPath: base_path('.env'),\n egEnvPath: base_path('.env.example'),\n updated: false,\n show: this.option('show')\n }\n\n this.newLine()\n\n // Try to create the .env file if it does not exist\n if (!await FileSystem.fileExists(config.envPath)) {\n if (await FileSystem.fileExists(config.egEnvPath)) {\n await copyFile(config.egEnvPath, config.envPath)\n } else {\n this.error('.env file not found.')\n this.newLine()\n process.exit(0)\n }\n }\n\n // Read and parse the .env file\n let content = await readFile(config.envPath, 'utf8')\n const buf = Buffer.from(content)\n const env = dotenv.parse(buf)\n\n // Show the Application key\n if (config.show) {\n // If the Application key is not exit with an erorr message\n if (!env.APP_KEY || env.APP_KEY === '') {\n this.error('Application key not set.')\n this.newLine()\n process.exit(0)\n }\n\n // Actually show the Application key\n const [enc, key] = env.APP_KEY.split(':')\n Logger.log([[enc, 'yellow'], [key, 'white']], ':')\n this.newLine()\n process.exit(0)\n } else if (env.APP_ENV === 'production' && !this.option('force')) {\n // If the Application is currently in production and the force flag is not set, exit with an error\n this.error('Application is currently in production, failed to set key.')\n this.newLine()\n process.exit(1)\n }\n\n // Check if APP_KEY exists\n if (/^APP_KEY=.*$/m.test(content)) {\n config.updated = true\n content = content.replace(/^APP_KEY=.*$/m, `APP_KEY=base64:${config.key}`)\n } else {\n // Add APP_KEY to the top, preserving existing content\n config.updated = false\n content = `APP_KEY=base64:${config.key}\\n\\n${content}`\n }\n\n // Write the application key to the .env file\n await writeFile(config.envPath, content, 'utf8')\n\n // Show the success message\n this.success('Application key set successfully.')\n this.newLine()\n }\n}\n","import { FileSystem, Logger } from '@h3ravel/shared'\nimport { mkdir, readFile, writeFile } from 'node:fs/promises'\n\nimport { Command } from '@h3ravel/musket'\nimport { Str } from '@h3ravel/support'\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 {command : Create a new Musket command. \n | {--command : The terminal command that will be used to invoke the class} \n | {--force : Create the class even if the console command already exists}\n }\n {view : Create a new view.\n | {--force : Create the view 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 (this: any) {\n const command = (this.dictionary.baseCommand ?? this.dictionary.name) as never\n\n if (!this.argument('name')) {\n this.program.error('Please provide a valid name for the ' + command)\n }\n\n const methods = {\n controller: 'makeController',\n resource: 'makeResource',\n view: 'makeView',\n command: 'makeCommand',\n } as const\n\n await this[methods[command]]()\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 crtlrPath = FileSystem.findModulePkg('@h3ravel/http', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/controller${type}.stub`)\n const path = app_path(`Http/Controllers/${name}.ts`)\n\n /** The Controller is scoped to a path make sure to create the associated directories */\n if (name.includes('/')) {\n await mkdir(Str.beforeLast(path, '/'), { recursive: true })\n }\n\n /** Check if the controller already exists */\n if (!force && await FileSystem.fileExists(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 * Create a new Musket command\n */\n protected makeCommand () {\n Logger.success('Musket command creation is not yet available')\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 = base_path(`src/resources/views/${name}.edge`)\n\n /** The view is scoped to a path make sure to create the associated directories */\n if (name.includes('/')) {\n await mkdir(Str.beforeLast(path, '/'), { recursive: true })\n }\n\n /** Check if the view already exists */\n if (!force && await FileSystem.fileExists(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","import { mkdir, writeFile } from 'node:fs/promises'\n\nimport { Command } from '@h3ravel/musket'\nimport { FileSystem } from '@h3ravel/shared'\nimport { KeyGenerateCommand } from './KeyGenerateCommand'\n\nexport class PostinstallCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = 'postinstall'\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Default post installation command'\n\n public async handle () {\n this.genEncryptionKey()\n this.createSqliteDB()\n }\n\n /**\n * Create sqlite database if none exist\n * \n * @returns \n */\n private async genEncryptionKey () {\n new KeyGenerateCommand(this.app, this.kernel)\n .setProgram(this.program)\n .setOption('force', true)\n .setOption('silent', true)\n .setOption('quiet', true)\n .setInput({ force: true, silent: true, quiet: true }, [], [], {}, this.program)\n .handle()\n }\n\n /**\n * Create sqlite database if none exist\n * \n * @returns \n */\n private async createSqliteDB () {\n if (config('database.default') !== 'sqlite') return\n\n if (!await FileSystem.fileExists(database_path())) {\n await mkdir(database_path(), { recursive: true })\n }\n\n if (!await FileSystem.fileExists(database_path('db.sqlite'))) {\n await writeFile(database_path('db.sqlite'), '')\n }\n }\n}\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 { fork } from 'child_process';\nimport { resolve, dirname, join } from 'path';\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 { UserConfig } from 'tsdown'\nimport { existsSync } from 'node:fs'\nimport path from 'node:path'\nimport { rm } from 'node:fs/promises'\nimport run from '@rollup/plugin-run'\n\nconst env = process.env.NODE_ENV || 'development'\nlet outDir = env === 'development' ? '.h3ravel/serve' : 'dist'\nif (process.env.DIST_DIR) {\n outDir = process.env.DIST_DIR\n}\n\nexport const TsDownConfig: UserConfig = {\n outDir,\n outExtensions: (e) => {\n return ({\n js: e.format === 'es' ? '.js' : '.cjs',\n dts: '.d.ts'\n })\n },\n entry: ['src/**/*.ts'],\n format: ['esm'],//, 'cjs'],\n target: 'node22',\n sourcemap: env === 'development',\n minify: !!process.env.DIST_MINIFY,\n external: [\n /^@h3ravel\\/.*/gi,\n ],\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 DIST_DIR: 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 hooks (e) {\n e.hook('build:done', async () => {\n const paths = ['database/migrations', 'database/factories', 'database/seeders']\n for (let i = 0; i < paths.length; i++) {\n const name = paths[i]\n if (existsSync(path.join(outDir, name)))\n await rm(path.join(outDir, name), { recursive: true })\n }\n })\n },\n plugins: env === 'development' && process.env.CLI_BUILD !== 'true' ? [\n run({\n env: Object.assign({}, process.env, {\n NODE_ENV: env,\n DIST_DIR: 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","/// <reference path=\"../../../core/src/app.globals.d.ts\" />\n\nimport { ContainerResolver, ServiceProvider } from '@h3ravel/core'\n\nimport { BuildCommand } from '../Commands/BuildCommand'\nimport { Kernel } from '@h3ravel/musket'\nimport { KeyGenerateCommand } from '../Commands/KeyGenerateCommand'\nimport { MakeCommand } from '../Commands/MakeCommand'\nimport { PostinstallCommand } from '../Commands/PostinstallCommand'\nimport { altLogo } from '../logo'\nimport tsDownConfig from '../TsdownConfig'\n\n/**\n * Handles CLI commands and tooling.\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 runsInConsole = true\n public runsInConsole = true\n\n register () {\n const DIST_DIR = `/${env('DIST_DIR', '.h3ravel/serve')}/`.replaceAll('//', '')\n const baseCommands = [BuildCommand, MakeCommand, PostinstallCommand, KeyGenerateCommand]\n\n Kernel.init(\n this.app,\n {\n logo: altLogo,\n resolver: new ContainerResolver(this.app).resolveMethodParams,\n tsDownConfig,\n baseCommands,\n packages: [\n { name: '@h3ravel/core', alias: 'H3ravel Framework' },\n { name: '@h3ravel/musket', alias: 'Musket CLI' }\n ],\n cliName: 'musket',\n hideMusketInfo: true,\n discoveryPaths: [app_path('Console/Commands/*.js').replace('/src/', DIST_DIR)],\n }\n );\n\n ['SIGINT', 'SIGTERM', 'SIGTSTP'].forEach(sig => process.on(sig, () => {\n process.exit(0)\n }))\n }\n}\n"],"x_google_ignoreList":[5],"mappings":"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"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["outDir","config","env","readFile","writeFile","writeFile","dir","entryFileName","env","TsDownConfig: UserConfig","path"],"sources":["../src/Commands/BuildCommand.ts","../src/Commands/KeyGenerateCommand.ts","../src/Commands/MakeCommand.ts","../src/Commands/PostinstallCommand.ts","../src/logo.ts","../../../node_modules/.pnpm/@rollup+plugin-run@3.1.0_rollup@4.52.5/node_modules/@rollup/plugin-run/dist/es/index.js","../src/TsdownConfig.ts","../src/Providers/ConsoleServiceProvider.ts"],"sourcesContent":["import { Logger, TaskManager } from '@h3ravel/shared'\n\nimport { Command } from '@h3ravel/musket'\nimport { execa } from 'execa'\nimport preferredPM from 'preferred-pm'\n\nexport class BuildCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `build\n {--m|minify : Minify your bundle output}\n {--d|dev : Build for dev but don't watch for changes}\n `\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Build the app for production'\n\n public async handle () {\n try {\n await this.fire()\n } catch (e) {\n Logger.error(e as any)\n }\n }\n\n protected async fire () {\n const outDir = this.option('dev') ? '.h3ravel/serve' : env('DIST_DIR', 'dist')\n const minify = this.option('minify')\n const verbosity = this.getVerbosity()\n const debug = verbosity > 0\n\n this.newLine()\n await BuildCommand.build({ outDir, minify, verbosity, debug, mute: false })\n this.newLine()\n }\n\n /**\n * build\n */\n public static async build ({ debug, minify, mute, verbosity, outDir } = {\n mute: false,\n debug: false,\n minify: false,\n verbosity: 0,\n outDir: 'dist'\n }) {\n\n const pm = (await preferredPM(base_path()))?.name ?? 'pnpm'\n\n const LOG_LEVELS = [\n 'silent',\n 'info',\n 'warn',\n 'error',\n ]\n\n const ENV_VARS = {\n EXTENDED_DEBUG: debug ? 'true' : 'false',\n CLI_BUILD: 'true',\n NODE_ENV: 'production',\n DIST_DIR: outDir,\n DIST_MINIFY: minify,\n LOG_LEVEL: LOG_LEVELS[verbosity]\n }\n\n const silent = ENV_VARS.LOG_LEVEL === 'silent' ? '--silent' : null\n\n if (mute) {\n return await execa(\n pm,\n ['tsdown', silent, '--config-loader', 'unconfig', '-c', 'tsdown.default.config.ts'].filter(e => e !== null),\n { stdout: 'inherit', stderr: 'inherit', cwd: base_path(), env: Object.assign({}, process.env, ENV_VARS) }\n )\n }\n\n const type = outDir === 'dist' ? 'Production' : 'Development'\n\n return await TaskManager.advancedTaskRunner(\n [[`Creating ${type} Bundle`, 'STARTED'], [`${type} Bundle Created`, 'COMPLETED']],\n async () => {\n await execa(\n pm,\n ['tsdown', silent, '--config-loader', 'unconfig', '-c', 'tsdown.default.config.ts'].filter(e => e !== null),\n { stdout: 'inherit', stderr: 'inherit', cwd: base_path(), env: Object.assign({}, process.env, ENV_VARS) }\n )\n }\n )\n }\n}\n","import { FileSystem, Logger } from '@h3ravel/shared'\nimport { copyFile, readFile, writeFile } from 'fs/promises'\n\nimport { Command } from '@h3ravel/musket'\nimport crypto from 'crypto'\nimport dotenv from 'dotenv'\n\nexport class KeyGenerateCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `key:generate\n {--force: Force the operation to run when in production}\n {--show: Display the key instead of modifying files}\n `\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Set the application key'\n\n public async handle () {\n const config = {\n key: crypto.randomBytes(32).toString('base64'),\n envPath: base_path('.env'),\n egEnvPath: base_path('.env.example'),\n updated: false,\n show: this.option('show')\n }\n\n this.newLine()\n\n // Try to create the .env file if it does not exist\n if (!await FileSystem.fileExists(config.envPath)) {\n if (await FileSystem.fileExists(config.egEnvPath)) {\n await copyFile(config.egEnvPath, config.envPath)\n } else {\n this.error('.env file not found.')\n this.newLine()\n process.exit(0)\n }\n }\n\n // Read and parse the .env file\n let content = await readFile(config.envPath, 'utf8')\n const buf = Buffer.from(content)\n const env = dotenv.parse(buf)\n\n // Show the Application key\n if (config.show) {\n // If the Application key is not exit with an erorr message\n if (!env.APP_KEY || env.APP_KEY === '') {\n this.error('Application key not set.')\n this.newLine()\n process.exit(0)\n }\n\n // Actually show the Application key\n const [enc, key] = env.APP_KEY.split(':')\n Logger.log([[enc, 'yellow'], [key, 'white']], ':')\n this.newLine()\n process.exit(0)\n } else if (env.APP_ENV === 'production' && !this.option('force')) {\n // If the Application is currently in production and the force flag is not set, exit with an error\n this.error('Application is currently in production, failed to set key.')\n this.newLine()\n process.exit(1)\n }\n\n // Check if APP_KEY exists\n if (/^APP_KEY=.*$/m.test(content)) {\n config.updated = true\n content = content.replace(/^APP_KEY=.*$/m, `APP_KEY=base64:${config.key}`)\n } else {\n // Add APP_KEY to the top, preserving existing content\n config.updated = false\n content = `APP_KEY=base64:${config.key}\\n\\n${content}`\n }\n\n // Write the application key to the .env file\n await writeFile(config.envPath, content, 'utf8')\n\n // Show the success message\n this.success('Application key set successfully.')\n this.newLine()\n }\n}\n","import { FileSystem, Logger } from '@h3ravel/shared'\nimport { mkdir, readFile, writeFile } from 'node:fs/promises'\n\nimport { Command } from '@h3ravel/musket'\nimport { Str } from '@h3ravel/support'\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 {command : Create a new Musket command. \n | {--command : The terminal command that will be used to invoke the class} \n | {--force : Create the class even if the console command already exists}\n }\n {view : Create a new view.\n | {--force : Create the view 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 (this: any) {\n const command = (this.dictionary.baseCommand ?? this.dictionary.name) as never\n\n if (!this.argument('name')) {\n this.program.error('Please provide a valid name for the ' + command)\n }\n\n const methods = {\n controller: 'makeController',\n resource: 'makeResource',\n view: 'makeView',\n command: 'makeCommand',\n } as const\n\n await this[methods[command]]()\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 crtlrPath = FileSystem.findModulePkg('@h3ravel/http', this.kernel.cwd) ?? ''\n const stubPath = nodepath.join(crtlrPath, `dist/stubs/controller${type}.stub`)\n const path = app_path(`Http/Controllers/${name}.ts`)\n\n /** The Controller is scoped to a path make sure to create the associated directories */\n if (name.includes('/')) {\n await mkdir(Str.beforeLast(path, '/'), { recursive: true })\n }\n\n /** Check if the controller already exists */\n if (!force && await FileSystem.fileExists(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 * Create a new Musket command\n */\n protected makeCommand () {\n Logger.success('Musket command creation is not yet available')\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 = base_path(`src/resources/views/${name}.edge`)\n\n /** The view is scoped to a path make sure to create the associated directories */\n if (name.includes('/')) {\n await mkdir(Str.beforeLast(path, '/'), { recursive: true })\n }\n\n /** Check if the view already exists */\n if (!force && await FileSystem.fileExists(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","import { mkdir, writeFile } from 'node:fs/promises'\n\nimport { Command } from '@h3ravel/musket'\nimport { FileSystem } from '@h3ravel/shared'\nimport { KeyGenerateCommand } from './KeyGenerateCommand'\n\nexport class PostinstallCommand extends Command {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = 'postinstall'\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Default post installation command'\n\n public async handle () {\n this.genEncryptionKey()\n this.createSqliteDB()\n }\n\n /**\n * Create sqlite database if none exist\n * \n * @returns \n */\n private async genEncryptionKey () {\n new KeyGenerateCommand(this.app, this.kernel)\n .setProgram(this.program)\n .setOption('force', true)\n .setOption('silent', true)\n .setOption('quiet', true)\n .setInput({ force: true, silent: true, quiet: true }, [], [], {}, this.program)\n .handle()\n }\n\n /**\n * Create sqlite database if none exist\n * \n * @returns \n */\n private async createSqliteDB () {\n if (config('database.default') !== 'sqlite') return\n\n if (!await FileSystem.fileExists(database_path())) {\n await mkdir(database_path(), { recursive: true })\n }\n\n if (!await FileSystem.fileExists(database_path('db.sqlite'))) {\n await writeFile(database_path('db.sqlite'), '')\n }\n }\n}\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 { fork } from 'child_process';\nimport { resolve, dirname, join } from 'path';\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 { UserConfig } from 'tsdown'\nimport { existsSync } from 'node:fs'\nimport path from 'node:path'\nimport { rm } from 'node:fs/promises'\nimport run from '@rollup/plugin-run'\n\nconst env = process.env.NODE_ENV || 'development'\nlet outDir = env === 'development' ? '.h3ravel/serve' : 'dist'\nif (process.env.DIST_DIR) {\n outDir = process.env.DIST_DIR\n}\n\nexport const TsDownConfig: UserConfig = {\n outDir,\n outExtensions: (e) => {\n return ({\n js: e.format === 'es' ? '.js' : '.cjs',\n dts: '.d.ts'\n })\n },\n entry: ['src/**/*.ts'],\n format: ['esm'],//, 'cjs'],\n target: 'node22',\n sourcemap: env === 'development',\n minify: !!process.env.DIST_MINIFY,\n external: [\n /^@h3ravel\\/.*/gi,\n ],\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 DIST_DIR: 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 hooks (e) {\n e.hook('build:done', async () => {\n const paths = ['database/migrations', 'database/factories', 'database/seeders']\n for (let i = 0; i < paths.length; i++) {\n const name = paths[i]\n if (existsSync(path.join(outDir, name)))\n await rm(path.join(outDir, name), { recursive: true })\n }\n })\n },\n plugins: env === 'development' && process.env.CLI_BUILD !== 'true' ? [\n run({\n env: Object.assign({}, process.env, {\n NODE_ENV: env,\n DIST_DIR: 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","/// <reference path=\"../../../core/src/app.globals.d.ts\" />\n\nimport { ContainerResolver, ServiceProvider } from '@h3ravel/core'\n\nimport { BuildCommand } from '../Commands/BuildCommand'\nimport { Kernel } from '@h3ravel/musket'\nimport { KeyGenerateCommand } from '../Commands/KeyGenerateCommand'\nimport { MakeCommand } from '../Commands/MakeCommand'\nimport { PostinstallCommand } from '../Commands/PostinstallCommand'\nimport { altLogo } from '../logo'\nimport tsDownConfig from '../TsdownConfig'\n\n/**\n * Handles CLI commands and tooling.\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 runsInConsole = true\n public runsInConsole = true\n\n register () {\n const DIST_DIR = `/${env('DIST_DIR', '.h3ravel/serve')}/`.replaceAll('//', '')\n const baseCommands = [BuildCommand, MakeCommand, PostinstallCommand, KeyGenerateCommand]\n\n Kernel.init(\n this.app,\n {\n logo: altLogo,\n resolver: new ContainerResolver(this.app).resolveMethodParams,\n tsDownConfig,\n baseCommands,\n packages: [\n { name: '@h3ravel/core', alias: 'H3ravel Framework' },\n { name: '@h3ravel/musket', alias: 'Musket CLI' }\n ],\n cliName: 'musket',\n hideMusketInfo: true,\n discoveryPaths: [app_path('Console/Commands/*.js').replace('/src/', DIST_DIR)],\n }\n );\n\n ['SIGINT', 'SIGTERM', 'SIGTSTP'].forEach(sig => process.on(sig, () => {\n process.exit(0)\n }))\n }\n}\n"],"x_google_ignoreList":[5],"mappings":"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"}