@arkstack/console 0.1.1 → 0.1.3

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/dist/app.d.ts CHANGED
@@ -12,6 +12,7 @@ declare class ArkstackConsoleApp<TCore> extends CliApp {
12
12
  private readonly options;
13
13
  constructor(core: TCore, options: ConsoleAppOptions);
14
14
  makeController: (name: string, opts: any) => string;
15
+ normalizePath: (p: string) => string;
15
16
  }
16
17
  //#endregion
17
18
  export { ArkstackConsoleApp, ConsoleAppOptions, resolveStubsDir };
package/dist/app.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isAbsolute, join } from "node:path";
1
+ import path, { isAbsolute, join } from "node:path";
2
2
  import { CliApp } from "resora";
3
3
  import { existsSync } from "node:fs";
4
4
 
@@ -18,9 +18,9 @@ var ArkstackConsoleApp = class extends CliApp {
18
18
  }
19
19
  makeController = (name, opts) => {
20
20
  const normalized = name.endsWith("Controller") ? name.replace(/controller/i, "") : name;
21
- const controllersDir = join(process.cwd(), "dist/app/http/controllers");
21
+ const controllersDir = path.resolve(process.cwd(), "src", "app/http/controllers");
22
22
  const controllerName = normalized.endsWith("Controller") ? normalized : `${normalized}Controller`;
23
- const outputPath = join(controllersDir, `${controllerName}.js`);
23
+ const outputPath = join(controllersDir, `${controllerName}.${opts?.ext ?? "ts"}`);
24
24
  const stubsDir = resolveStubsDir(this.config, this.options);
25
25
  if (!stubsDir) {
26
26
  console.error("Error: stubsDir is not configured. Set stubsDir in resora.config.js.");
@@ -33,11 +33,15 @@ var ArkstackConsoleApp = class extends CliApp {
33
33
  }
34
34
  this.generateFile(stubPath, outputPath, {
35
35
  ControllerName: controllerName,
36
+ Model: opts.model?.pascalCase(),
36
37
  ModelName: opts.model?.camelCase(),
37
38
  Name: controllerName.replace(/controller/i, "")
38
39
  }, opts);
39
40
  return outputPath;
40
41
  };
42
+ normalizePath = (p) => {
43
+ return p.replace(process.cwd(), "");
44
+ };
41
45
  };
42
46
 
43
47
  //#endregion
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","names":[],"sources":["../src/app.ts"],"sourcesContent":["// oxlint-disable typescript/no-explicit-any\nimport { isAbsolute, join } from \"node:path\";\n\nimport { CliApp } from \"resora\";\nimport { existsSync } from \"node:fs\";\n\nexport interface ConsoleAppOptions {\n stubsDir?: string;\n}\n\nexport const resolveStubsDir = (\n config: { localStubsDir?: string } | undefined,\n options?: ConsoleAppOptions,\n) => {\n const configuredDir = config?.localStubsDir;\n\n if (configuredDir) {\n return isAbsolute(configuredDir)\n ? configuredDir\n : join(process.cwd(), configuredDir);\n }\n\n return options?.stubsDir;\n};\n\nexport class ArkstackConsoleApp<TCore> extends CliApp {\n core: TCore;\n private readonly options: ConsoleAppOptions;\n\n constructor(\n core: TCore,\n options: ConsoleAppOptions,\n ) {\n super();\n this.core = core;\n this.options = options;\n }\n\n makeController = (name: string, opts: any) => {\n const normalized = name.endsWith(\"Controller\") ? name.replace(/controller/i, \"\") : name;\n\n const controllersDir = join(process.cwd(), \"src/app/http/controllers\");\n const controllerName = normalized.endsWith(\"Controller\") ? normalized : `${normalized}Controller`;\n const fileName = `${controllerName}.ts`;\n const outputPath = join(controllersDir, fileName);\n const stubsDir = resolveStubsDir(this.config as any, this.options);\n\n if (!stubsDir) {\n console.error(\"Error: stubsDir is not configured. Set stubsDir in resora.config.js.\");\n process.exit(1);\n }\n\n const stubPath = join(\n stubsDir,\n opts.model\n ? (this.config.stubs as any).model\n : opts.api\n ? (this.config.stubs as any).api\n : (this.config.stubs as any).controller,\n );\n\n if (!existsSync(stubPath)) {\n console.error(`Error: Stub file ${stubPath} not found.`);\n process.exit(1);\n }\n\n this.generateFile(\n stubPath,\n outputPath,\n {\n ControllerName: controllerName,\n ModelName: opts.model?.camelCase(),\n Name: controllerName.replace(/controller/i, \"\"),\n },\n opts,\n );\n\n return outputPath;\n };\n}\n"],"mappings":";;;;;AAUA,MAAa,mBACT,QACA,YACC;CACD,MAAM,gBAAgB,QAAQ;AAE9B,KAAI,cACA,QAAO,WAAW,cAAc,GAC1B,gBACA,KAAK,QAAQ,KAAK,EAAE,cAAc;AAG5C,QAAO,SAAS;;AAGpB,IAAa,qBAAb,cAA+C,OAAO;CAClD;CACA,AAAiB;CAEjB,YACI,MACA,SACF;AACE,SAAO;AACP,OAAK,OAAO;AACZ,OAAK,UAAU;;CAGnB,kBAAkB,MAAc,SAAc;EAC1C,MAAM,aAAa,KAAK,SAAS,aAAa,GAAG,KAAK,QAAQ,eAAe,GAAG,GAAG;EAEnF,MAAM,iBAAiB,KAAK,QAAQ,KAAK,EAAE,2BAA2B;EACtE,MAAM,iBAAiB,WAAW,SAAS,aAAa,GAAG,aAAa,GAAG,WAAW;EAEtF,MAAM,aAAa,KAAK,gBADP,GAAG,eAAe,KACc;EACjD,MAAM,WAAW,gBAAgB,KAAK,QAAe,KAAK,QAAQ;AAElE,MAAI,CAAC,UAAU;AACX,WAAQ,MAAM,uEAAuE;AACrF,WAAQ,KAAK,EAAE;;EAGnB,MAAM,WAAW,KACb,UACA,KAAK,QACE,KAAK,OAAO,MAAc,QAC3B,KAAK,MACA,KAAK,OAAO,MAAc,MAC1B,KAAK,OAAO,MAAc,WACxC;AAED,MAAI,CAAC,WAAW,SAAS,EAAE;AACvB,WAAQ,MAAM,oBAAoB,SAAS,aAAa;AACxD,WAAQ,KAAK,EAAE;;AAGnB,OAAK,aACD,UACA,YACA;GACI,gBAAgB;GAChB,WAAW,KAAK,OAAO,WAAW;GAClC,MAAM,eAAe,QAAQ,eAAe,GAAG;GAClD,EACD,KACH;AAED,SAAO"}
1
+ {"version":3,"file":"app.js","names":[],"sources":["../src/app.ts"],"sourcesContent":["// oxlint-disable typescript/no-explicit-any\nimport path, { isAbsolute, join } from 'node:path'\n\nimport { CliApp } from 'resora'\nimport { existsSync } from 'node:fs'\n\nexport interface ConsoleAppOptions {\n stubsDir?: string;\n}\n\nexport const resolveStubsDir = (\n config: { localStubsDir?: string } | undefined,\n options?: ConsoleAppOptions,\n) => {\n const configuredDir = config?.localStubsDir\n\n if (configuredDir) {\n return isAbsolute(configuredDir)\n ? configuredDir\n : join(process.cwd(), configuredDir)\n }\n\n return options?.stubsDir\n}\n\nexport class ArkstackConsoleApp<TCore> extends CliApp {\n core: TCore\n private readonly options: ConsoleAppOptions\n\n constructor(\n core: TCore,\n options: ConsoleAppOptions,\n ) {\n super()\n this.core = core\n this.options = options\n }\n\n makeController = (name: string, opts: any) => {\n const normalized = name.endsWith('Controller') ? name.replace(/controller/i, '') : name\n\n const controllersDir = path.resolve(process.cwd(), 'src', 'app/http/controllers')\n const controllerName = normalized.endsWith('Controller') ? normalized : `${normalized}Controller`\n const fileName = `${controllerName}.${opts?.ext ?? 'ts'}`\n const outputPath = join(controllersDir, fileName)\n const stubsDir = resolveStubsDir(this.config as any, this.options)\n if (!stubsDir) {\n console.error('Error: stubsDir is not configured. Set stubsDir in resora.config.js.')\n process.exit(1)\n }\n\n const stubPath = join(\n stubsDir,\n opts.model\n ? (this.config.stubs as any).model\n : opts.api\n ? (this.config.stubs as any).api\n : (this.config.stubs as any).controller,\n )\n\n if (!existsSync(stubPath)) {\n console.error(`Error: Stub file ${stubPath} not found.`)\n process.exit(1)\n }\n\n this.generateFile(\n stubPath,\n outputPath,\n {\n ControllerName: controllerName,\n Model: opts.model?.pascalCase(),\n ModelName: opts.model?.camelCase(),\n Name: controllerName.replace(/controller/i, ''),\n },\n opts,\n )\n\n return outputPath\n }\n\n normalizePath = (p: string) => {\n return p.replace(process.cwd(), '')\n }\n}\n"],"mappings":";;;;;AAUA,MAAa,mBACT,QACA,YACC;CACD,MAAM,gBAAgB,QAAQ;AAE9B,KAAI,cACA,QAAO,WAAW,cAAc,GAC1B,gBACA,KAAK,QAAQ,KAAK,EAAE,cAAc;AAG5C,QAAO,SAAS;;AAGpB,IAAa,qBAAb,cAA+C,OAAO;CAClD;CACA,AAAiB;CAEjB,YACI,MACA,SACF;AACE,SAAO;AACP,OAAK,OAAO;AACZ,OAAK,UAAU;;CAGnB,kBAAkB,MAAc,SAAc;EAC1C,MAAM,aAAa,KAAK,SAAS,aAAa,GAAG,KAAK,QAAQ,eAAe,GAAG,GAAG;EAEnF,MAAM,iBAAiB,KAAK,QAAQ,QAAQ,KAAK,EAAE,OAAO,uBAAuB;EACjF,MAAM,iBAAiB,WAAW,SAAS,aAAa,GAAG,aAAa,GAAG,WAAW;EAEtF,MAAM,aAAa,KAAK,gBADP,GAAG,eAAe,GAAG,MAAM,OAAO,OACF;EACjD,MAAM,WAAW,gBAAgB,KAAK,QAAe,KAAK,QAAQ;AAClE,MAAI,CAAC,UAAU;AACX,WAAQ,MAAM,uEAAuE;AACrF,WAAQ,KAAK,EAAE;;EAGnB,MAAM,WAAW,KACb,UACA,KAAK,QACE,KAAK,OAAO,MAAc,QAC3B,KAAK,MACA,KAAK,OAAO,MAAc,MAC1B,KAAK,OAAO,MAAc,WACxC;AAED,MAAI,CAAC,WAAW,SAAS,EAAE;AACvB,WAAQ,MAAM,oBAAoB,SAAS,aAAa;AACxD,WAAQ,KAAK,EAAE;;AAGnB,OAAK,aACD,UACA,YACA;GACI,gBAAgB;GAChB,OAAO,KAAK,OAAO,YAAY;GAC/B,WAAW,KAAK,OAAO,WAAW;GAClC,MAAM,eAAe,QAAQ,eAAe,GAAG;GAClD,EACD,KACH;AAED,SAAO;;CAGX,iBAAiB,MAAc;AAC3B,SAAO,EAAE,QAAQ,QAAQ,KAAK,EAAE,GAAG"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ import { MakeResource } from "resora";
6
6
  import { realpathSync } from "node:fs";
7
7
  import { Command, Kernel } from "@h3ravel/musket";
8
8
  import { spawn } from "node:child_process";
9
+ import { CliApp as CliApp$1, MakeFactoryCommand, MakeMigrationCommand, MakeModelCommand, MakeSeederCommand, MigrateCommand, ModelsSyncCommand, SeedCommand } from "arkormx";
9
10
  import chalk from "chalk";
10
11
  import { loadPrototypes } from "@arkstack/common";
11
12
 
@@ -71,6 +72,9 @@ var MakeController = class extends Command {
71
72
  {name : name of the controller to create}
72
73
  {--api : make an API controller}
73
74
  {--m|model? : name of model to attach to controller}
75
+ {--f|factory : Create and link a factory}
76
+ {--s|seeder : Create a seeder file for the model (only if --model is specified)}
77
+ {--x|migration : Create a migration file for the model (only if --model is specified)}
74
78
  {--force : force overwrite if controller already exists}
75
79
  `;
76
80
  description = "Create a new controller file";
@@ -78,7 +82,30 @@ var MakeController = class extends Command {
78
82
  this.app.command = this;
79
83
  if (!this.argument("name")) return void this.error("Error: Controller name is required.");
80
84
  const name = this.app.makeController(this.argument("name"), this.options());
81
- this.success(`Controller ${name} created successfully!`);
85
+ const app = new CliApp$1();
86
+ const model = this.option("model") ? app.makeModel(this.argument("model"), {
87
+ ...this.options(),
88
+ force: false
89
+ }) : null;
90
+ this.success("Controller created successfully!");
91
+ [
92
+ ["Controller", name],
93
+ model ? ["Model", model.model.path] : "",
94
+ model ? [`Prisma schema ${model.prisma.updated ? "(updated)" : "(already up to date)"}`, model?.prisma.path] : "",
95
+ model?.factory ? ["Factory", model.factory.path] : "",
96
+ model?.seeder ? ["Seeder", model.seeder.path] : "",
97
+ model?.migration ? ["Migration", model.migration.path] : ""
98
+ ].filter(Boolean).map(([name, path]) => this.success(app.splitLogger(name, path)));
99
+ }
100
+ };
101
+
102
+ //#endregion
103
+ //#region dist/commands/MakeFactoryCommand.js
104
+ var MakeFactoryCommand$1 = class extends MakeFactoryCommand {
105
+ async handle() {
106
+ this.app.command = this;
107
+ this.app = new CliApp$1();
108
+ return super.handle();
82
109
  }
83
110
  };
84
111
 
@@ -87,38 +114,95 @@ var MakeController = class extends Command {
87
114
  var MakeFullResource = class extends Command {
88
115
  signature = `make:full-resource
89
116
  {prefix : prefix of the resources to create, "Admin" will create AdminResource, AdminCollection and AdminController}
90
- {--m|model? : name of model to attach to the generated controller}
117
+ {--m|model? : name of model to attach to the generated controller (will be created if it doesn't exist)}
118
+ {--f|factory : Create and link a factory}
119
+ {--s|seeder : Create a seeder file for the model (only if --model is specified)}
120
+ {--x|migration : Create a migration file for the model (only if --model is specified)}
91
121
  {--force : force overwrite if resources already exist}
92
122
  `;
93
123
  description = "Create a full new set of API resources (Controller, Resource, Collection)";
94
124
  async handle() {
95
125
  this.app.command = this;
96
- const res1 = this.app.makeResource(this.argument("prefix"), {});
97
- const res2 = this.app.makeResource(this.argument("prefix") + "Collection", { collection: true });
98
- const name3 = this.app.makeController(this.argument("prefix"), Object.assign({}, this.options(), { api: true }));
99
- this.success(`Created full resource set: ${res1.name}, ${res2.name}, ${name3}`);
126
+ const res = this.app.makeResource(this.argument("prefix"), { force: this.option("force") });
127
+ const col = this.app.makeResource(this.argument("prefix") + "Collection", {
128
+ collection: true,
129
+ force: this.option("force")
130
+ });
131
+ const cont = this.app.makeController(this.argument("prefix"), Object.assign({}, this.options(), {
132
+ api: true,
133
+ force: this.option("force")
134
+ }));
135
+ const app = new CliApp$1();
136
+ const model = this.option("model") ? app.makeModel(this.argument("prefix"), {
137
+ ...this.options(),
138
+ force: false
139
+ }) : null;
140
+ this.success("Created full resource set:");
141
+ [
142
+ ["Resource", res.path],
143
+ ["Collection", col.path],
144
+ ["Controller", cont],
145
+ model ? ["Model", model.model.path] : "",
146
+ model ? [`Prisma schema ${model.prisma.updated ? "(updated)" : "(already up to date)"}`, model.prisma.path] : "",
147
+ model?.factory ? ["Factory", model.factory.path] : "",
148
+ model?.seeder ? ["Seeder", model.seeder.path] : "",
149
+ model?.migration ? ["Migration", model.migration.path] : ""
150
+ ].filter(Boolean).map(([name, path]) => this.success(app.splitLogger(name, path)));
151
+ }
152
+ };
153
+
154
+ //#endregion
155
+ //#region dist/commands/MakeMigrationCommand.js
156
+ var MakeMigrationCommand$1 = class extends MakeMigrationCommand {
157
+ async handle() {
158
+ this.app.command = this;
159
+ this.app = new CliApp$1();
160
+ return super.handle();
161
+ }
162
+ };
163
+
164
+ //#endregion
165
+ //#region dist/commands/MakeModelCommand.js
166
+ var MakeModelCommand$1 = class extends MakeModelCommand {
167
+ async handle() {
168
+ this.app.command = this;
169
+ this.app = new CliApp$1();
170
+ return super.handle();
100
171
  }
101
172
  };
102
173
 
103
174
  //#endregion
104
175
  //#region dist/commands/MakeResource.js
105
- var MakeResource$1 = class extends MakeResource {
106
- signature = `#make:
107
- {resource : Generates a new resource file.
108
- | {name : Name of the resource to create}
109
- | {--c|collection : Make a resource collection}
110
- | {--force : Create the resource or collection file even if it already exists.}
111
- }
112
- {collection : Create a new resource collection file.
113
- | {name : Name of the resource collection to create}
114
- | {--force : Create the resource or collection file even if it already exists.}
115
- }
116
- {all : Create both resource and collection files.
117
- | {prefix : prefix of the resources to create, "Admin" will create AdminResource, AdminCollection}
118
- | {--force : Create the resource or collection file even if it already exists.}
119
- }
120
- `;
121
- description = "Create a new resource or resource collection file";
176
+ var MakeResource$1 = class extends MakeResource {};
177
+
178
+ //#endregion
179
+ //#region dist/commands/MakeSeederCommand.js
180
+ var MakeSeederCommand$1 = class extends MakeSeederCommand {
181
+ async handle() {
182
+ this.app.command = this;
183
+ this.app = new CliApp$1();
184
+ return super.handle();
185
+ }
186
+ };
187
+
188
+ //#endregion
189
+ //#region dist/commands/MigrateCommand.js
190
+ var MigrateCommand$1 = class extends MigrateCommand {
191
+ async handle() {
192
+ this.app.command = this;
193
+ this.app = new CliApp$1();
194
+ return super.handle();
195
+ }
196
+ };
197
+
198
+ //#endregion
199
+ //#region dist/commands/ModelsSyncCommand.js
200
+ var ModelsSyncCommand$1 = class extends ModelsSyncCommand {
201
+ async handle() {
202
+ this.app.command = this;
203
+ this.app = new CliApp$1();
204
+ return super.handle();
205
+ }
122
206
  };
123
207
 
124
208
  //#endregion
@@ -152,6 +236,16 @@ var RouteList = class extends Command {
152
236
  }
153
237
  };
154
238
 
239
+ //#endregion
240
+ //#region dist/commands/SeedCommand.js
241
+ var SeedCommand$1 = class extends SeedCommand {
242
+ async handle() {
243
+ this.app.command = this;
244
+ this.app = new CliApp$1();
245
+ return super.handle();
246
+ }
247
+ };
248
+
155
249
  //#endregion
156
250
  //#region dist/logo.js
157
251
  var logo_default = String.raw`
@@ -191,7 +285,14 @@ const runConsoleKernel = async (options = {}) => {
191
285
  MakeController,
192
286
  MakeFullResource,
193
287
  DevCommand,
194
- BuildCommand
288
+ BuildCommand,
289
+ MakeFactoryCommand$1,
290
+ MakeMigrationCommand$1,
291
+ MakeModelCommand$1,
292
+ MakeSeederCommand$1,
293
+ MigrateCommand$1,
294
+ ModelsSyncCommand$1,
295
+ SeedCommand$1
195
296
  ],
196
297
  discoveryPaths: [join(process.cwd(), "dist/core/console/commands/*.js")],
197
298
  exceptionHandler(exception) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["MakeResource","MakeResourceBase","logo","MakeResource"],"sources":["../src/commands/BuildCommand.ts","../src/commands/DevCommand.ts","../src/commands/MakeController.ts","../src/commands/MakeFullResource.ts","../src/commands/MakeResource.ts","../src/commands/RouteList.ts","../src/logo.ts","../src/index.ts"],"sourcesContent":["import { Command } from \"@h3ravel/musket\";\nimport { spawn } from \"node:child_process\";\n\nexport class BuildCommand extends Command {\n protected signature = \"build\";\n\n protected description = \"Build the application for production\";\n\n async handle () {\n await new Promise<void>((resolve, reject) => {\n const command = process.platform === \"win32\" ? \"pnpm.cmd\" : \"pnpm\";\n const child = spawn(command, [\"exec\", \"tsdown\"], {\n cwd: process.cwd(),\n stdio: \"inherit\",\n env: Object.assign({}, process.env, {\n NODE_ENV: \"production\",\n }),\n });\n\n child.on(\"error\", (error) => {\n reject(error);\n });\n\n child.on(\"exit\", (code) => {\n if (code === 0 || code === null) {\n resolve();\n return;\n }\n\n reject(new Error(`tsdown exited with code ${code}`));\n });\n });\n }\n}\n","import { Command } from \"@h3ravel/musket\";\nimport { spawn } from \"node:child_process\";\n\nexport class DevCommand extends Command {\n protected signature = \"dev\";\n\n protected description = \"Run the development server\";\n\n async handle () {\n await new Promise<void>((resolve, reject) => {\n const command = process.platform === \"win32\" ? \"pnpm.cmd\" : \"pnpm\";\n const child = spawn(command, [\"exec\", \"tsdown\", \"--log-level\", \"silent\"], {\n cwd: process.cwd(),\n stdio: \"inherit\",\n });\n\n child.on(\"error\", (error) => {\n reject(error);\n });\n\n child.on(\"exit\", (code) => {\n if (code === 0 || code === null) {\n resolve();\n return;\n }\n\n reject(new Error(`tsdown exited with code ${code}`));\n });\n });\n }\n}\n","import { ArkstackConsoleApp } from \"@arkstack/console/app\";\nimport { Command } from \"@h3ravel/musket\";\n\n// oxlint-disable-next-line typescript/no-explicit-any\nexport class MakeController extends Command<ArkstackConsoleApp<any>> {\n protected signature = `make:controller\n {name : name of the controller to create}\n {--api : make an API controller}\n {--m|model? : name of model to attach to controller}\n {--force : force overwrite if controller already exists}\n `;\n\n protected description = \"Create a new controller file\";\n\n async handle () {\n this.app.command = this;\n\n if (!this.argument(\"name\")) return void this.error(\"Error: Controller name is required.\");\n\n const name = this.app.makeController(this.argument(\"name\"), this.options());\n\n this.success(`Controller ${name} created successfully!`);\n }\n}\n","import { ArkstackConsoleApp } from \"@arkstack/console/app\";\nimport { Command } from \"@h3ravel/musket\";\n\n// oxlint-disable-next-line typescript/no-explicit-any\nexport class MakeFullResource extends Command<ArkstackConsoleApp<any>> {\n protected signature = `make:full-resource\n {prefix : prefix of the resources to create, \"Admin\" will create AdminResource, AdminCollection and AdminController}\n {--m|model? : name of model to attach to the generated controller}\n {--force : force overwrite if resources already exist}\n `;\n\n protected description =\n \"Create a full new set of API resources (Controller, Resource, Collection)\";\n\n async handle () {\n this.app.command = this;\n\n const res1 = this.app.makeResource(this.argument(\"prefix\"), {});\n const res2 = this.app.makeResource(this.argument(\"prefix\") + \"Collection\", {\n collection: true,\n });\n const name3 = this.app.makeController(\n this.argument(\"prefix\"),\n Object.assign({}, this.options(), { api: true }),\n );\n this.success(`Created full resource set: ${res1.name}, ${res2.name}, ${name3}`);\n }\n}\n","import { MakeResource as MakeResourceBase } from \"resora\";\n\nexport class MakeResource extends MakeResourceBase {\n signature = `#make:\n {resource : Generates a new resource file.\n | {name : Name of the resource to create}\n | {--c|collection : Make a resource collection}\n | {--force : Create the resource or collection file even if it already exists.}\n }\n {collection : Create a new resource collection file.\n | {name : Name of the resource collection to create}\n | {--force : Create the resource or collection file even if it already exists.}\n }\n {all : Create both resource and collection files.\n | {prefix : prefix of the resources to create, \"Admin\" will create AdminResource, AdminCollection}\n | {--force : Create the resource or collection file even if it already exists.}\n }\n `;\n\n description = \"Create a new resource or resource collection file\";\n}\n","import { ArkstackConsoleApp } from \"../app\";\nimport type { ArkstackRouterAwareCore } from \"@arkstack/contract\";\nimport { Command } from \"@h3ravel/musket\";\nimport type { Route } from \"clear-router\";\nimport chalk from \"chalk\";\n\ntype App = ArkstackConsoleApp<ArkstackRouterAwareCore<unknown, Route[]>>;\n\nexport class RouteList extends Command<App> {\n protected signature = `route:list\n {--p|path? : Path to filter routes by}\n `;\n\n protected description = \"List all registered routes\";\n\n async handle () {\n const routes = await this.app.core.getRouter().list(this.options(), this.app.core.getAppInstance());\n\n console.log(this.formatRoutes(routes.reverse()));\n this.newLine();\n this.info(`Total routes: ${routes.length}`);\n }\n\n private formatRoutes (routes: Route[]) {\n if (routes.length === 0) {\n return \"No routes registered.\";\n }\n\n const rows = routes.map((route) => ({\n method: route.methods.join(\"|\").toUpperCase(),\n path: route.path,\n handler: route.controllerName ? `${route.controllerName} → ${route.actionName}` : route.actionName ?? \"N/A\",\n }));\n\n const methodWidth = Math.max(\"METHOD\".length, ...rows.map((row) => row.method.length));\n const pathWidth = Math.max(\"PATH\".length, ...rows.map((row) => row.path.length));\n const handlerWidth = Math.max(\"HANDLER\".length, ...rows.map((row) => row.handler.length));\n\n const header = `${\"METHOD\".padEnd(methodWidth)} ${\"PATH\".padEnd(pathWidth)} ${\"HANDLER\".padEnd(handlerWidth)}`;\n const divider = `${\"-\".repeat(methodWidth)} ${\"-\".repeat(pathWidth)} ${\"-\".repeat(handlerWidth)}`;\n const body = rows.map(\n (row) => `${chalk.green(row.method.padEnd(methodWidth))} ${chalk.blue(row.path.padEnd(pathWidth))} ${chalk.yellow(row.handler.padEnd(handlerWidth))}`\n );\n\n return [header, divider, ...body].join(\"\\n\");\n }\n}\n","export default String.raw`\n ___ _ _ \n / _ \\ | | | | \n/ /_\\ \\_ __ ___ ___| |_ __ _ ___| | __\n| _ | '__/ __/ __| __/ _' |/ __| |/ /\n| | | | | | (__\\__ \\ || (_| | (__| < \n\\_| |_/_| \\___|___/\\__\\__,_|\\___|_|\\_\\ \n`","#!/usr/bin/env node\n\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\n\nimport { ArkstackConsoleApp } from \"./app\";\nimport { BuildCommand } from \"./commands/BuildCommand\";\nimport { DevCommand } from \"./commands/DevCommand\";\nimport { Kernel } from \"@h3ravel/musket\";\nimport { MakeController } from \"./commands/MakeController\";\nimport { MakeFullResource } from \"./commands/MakeFullResource\";\nimport { MakeResource } from \"./commands/MakeResource\";\nimport { RouteList } from \"./commands/RouteList\";\nimport { join } from \"node:path\";\nimport { loadPrototypes } from \"@arkstack/common\";\nimport logo from \"./logo\";\nimport { realpathSync } from \"node:fs\";\n\nexport interface RunConsoleOptions {\n logo?: string;\n}\n\n/**\n * Loads the core application instance by importing the bootstrap file.\n * \n * @returns \n */\nconst loadCoreApp = async () => {\n const bootstrapPath = pathToFileURL(join(process.cwd(), \"src/core/bootstrap.ts\")).href;\n const module = await import(bootstrapPath);\n return module.app;\n};\n\n/**\n * Runs the console kernel, initializing the application and registering commands.\n * \n * @param options \n */\nexport const runConsoleKernel = async (options: RunConsoleOptions = {}) => {\n loadPrototypes();\n\n const app = await loadCoreApp();\n const stubsDir = process.env.ARKSTACK_STUBS_DIR;\n\n await Kernel.init(await new ArkstackConsoleApp(app, { stubsDir }).loadConfig(), {\n logo: options.logo ?? logo,\n name: \"Cmd\",\n baseCommands: [\n RouteList,\n MakeResource,\n MakeController,\n MakeFullResource,\n DevCommand,\n BuildCommand\n ],\n discoveryPaths: [join(process.cwd(), \"src/core/console/commands/*.ts\")],\n exceptionHandler (exception) {\n throw exception;\n },\n });\n};\n\n/**\n * Determines if the current module is being executed as the entry \n * point of the application.\n * \n * @returns \n */\nconst isEntrypointExecution = () => {\n const argvEntry = process.argv[1];\n\n if (!argvEntry) {\n return false;\n }\n\n try {\n const currentModulePath = realpathSync(fileURLToPath(import.meta.url));\n const entryPath = realpathSync(argvEntry);\n\n return currentModulePath === entryPath;\n } catch {\n return import.meta.url === pathToFileURL(argvEntry).href;\n }\n};\n\nif (isEntrypointExecution()) {\n await runConsoleKernel();\n}\n"],"mappings":";;;;;;;;;;;;AAGA,IAAa,eAAb,cAAkC,QAAQ;CACtC,AAAU,YAAY;CAEtB,AAAU,cAAc;CAExB,MAAM,SAAU;AACZ,QAAM,IAAI,SAAe,SAAS,WAAW;GAEzC,MAAM,QAAQ,MADE,QAAQ,aAAa,UAAU,aAAa,QAC/B,CAAC,QAAQ,SAAS,EAAE;IAC7C,KAAK,QAAQ,KAAK;IAClB,OAAO;IACP,KAAK,OAAO,OAAO,EAAE,EAAE,QAAQ,KAAK,EAChC,UAAU,cACb,CAAC;IACL,CAAC;AAEF,SAAM,GAAG,UAAU,UAAU;AACzB,WAAO,MAAM;KACf;AAEF,SAAM,GAAG,SAAS,SAAS;AACvB,QAAI,SAAS,KAAK,SAAS,MAAM;AAC7B,cAAS;AACT;;AAGJ,2BAAO,IAAI,MAAM,2BAA2B,OAAO,CAAC;KACtD;IACJ;;;;;;AC5BV,IAAa,aAAb,cAAgC,QAAQ;CACpC,AAAU,YAAY;CAEtB,AAAU,cAAc;CAExB,MAAM,SAAU;AACZ,QAAM,IAAI,SAAe,SAAS,WAAW;GAEzC,MAAM,QAAQ,MADE,QAAQ,aAAa,UAAU,aAAa,QAC/B;IAAC;IAAQ;IAAU;IAAe;IAAS,EAAE;IACtE,KAAK,QAAQ,KAAK;IAClB,OAAO;IACV,CAAC;AAEF,SAAM,GAAG,UAAU,UAAU;AACzB,WAAO,MAAM;KACf;AAEF,SAAM,GAAG,SAAS,SAAS;AACvB,QAAI,SAAS,KAAK,SAAS,MAAM;AAC7B,cAAS;AACT;;AAGJ,2BAAO,IAAI,MAAM,2BAA2B,OAAO,CAAC;KACtD;IACJ;;;;;;ACxBV,IAAa,iBAAb,cAAoC,QAAiC;CACjE,AAAU,YAAY;;;;;;CAOtB,AAAU,cAAc;CAExB,MAAM,SAAU;AACZ,OAAK,IAAI,UAAU;AAEnB,MAAI,CAAC,KAAK,SAAS,OAAO,CAAE,QAAO,KAAK,KAAK,MAAM,sCAAsC;EAEzF,MAAM,OAAO,KAAK,IAAI,eAAe,KAAK,SAAS,OAAO,EAAE,KAAK,SAAS,CAAC;AAE3E,OAAK,QAAQ,cAAc,KAAK,wBAAwB;;;;;;ACjBhE,IAAa,mBAAb,cAAsC,QAAiC;CACnE,AAAU,YAAY;;;;;CAMtB,AAAU,cACN;CAEJ,MAAM,SAAU;AACZ,OAAK,IAAI,UAAU;EAEnB,MAAM,OAAO,KAAK,IAAI,aAAa,KAAK,SAAS,SAAS,EAAE,EAAE,CAAC;EAC/D,MAAM,OAAO,KAAK,IAAI,aAAa,KAAK,SAAS,SAAS,GAAG,cAAc,EACvE,YAAY,MACf,CAAC;EACF,MAAM,QAAQ,KAAK,IAAI,eACnB,KAAK,SAAS,SAAS,EACvB,OAAO,OAAO,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,KAAK,MAAM,CAAC,CACnD;AACD,OAAK,QAAQ,8BAA8B,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,QAAQ;;;;;;ACvBvF,IAAaA,iBAAb,cAAkCC,aAAiB;CAC/C,YAAY;;;;;;;;;;;;;;;CAgBZ,cAAc;;;;;ACXlB,IAAa,YAAb,cAA+B,QAAa;CACxC,AAAU,YAAY;;;CAItB,AAAU,cAAc;CAExB,MAAM,SAAU;EACZ,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,KAAK,IAAI,KAAK,gBAAgB,CAAC;AAEnG,UAAQ,IAAI,KAAK,aAAa,OAAO,SAAS,CAAC,CAAC;AAChD,OAAK,SAAS;AACd,OAAK,KAAK,iBAAiB,OAAO,SAAS;;CAG/C,AAAQ,aAAc,QAAiB;AACnC,MAAI,OAAO,WAAW,EAClB,QAAO;EAGX,MAAM,OAAO,OAAO,KAAK,WAAW;GAChC,QAAQ,MAAM,QAAQ,KAAK,IAAI,CAAC,aAAa;GAC7C,MAAM,MAAM;GACZ,SAAS,MAAM,iBAAiB,GAAG,MAAM,eAAe,KAAK,MAAM,eAAe,MAAM,cAAc;GACzG,EAAE;EAEH,MAAM,cAAc,KAAK,IAAI,GAAiB,GAAG,KAAK,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC;EACtF,MAAM,YAAY,KAAK,IAAI,GAAe,GAAG,KAAK,KAAK,QAAQ,IAAI,KAAK,OAAO,CAAC;EAChF,MAAM,eAAe,KAAK,IAAI,GAAkB,GAAG,KAAK,KAAK,QAAQ,IAAI,QAAQ,OAAO,CAAC;AAQzF,SAAO;GANQ,GAAG,SAAS,OAAO,YAAY,CAAC,IAAI,OAAO,OAAO,UAAU,CAAC,IAAI,UAAU,OAAO,aAAa;GAC9F,GAAG,IAAI,OAAO,YAAY,CAAC,IAAI,IAAI,OAAO,UAAU,CAAC,IAAI,IAAI,OAAO,aAAa;GAKxE,GAJZ,KAAK,KACb,QAAQ,GAAG,MAAM,MAAM,IAAI,OAAO,OAAO,YAAY,CAAC,CAAC,IAAI,MAAM,KAAK,IAAI,KAAK,OAAO,UAAU,CAAC,CAAC,IAAI,MAAM,OAAO,IAAI,QAAQ,OAAO,aAAa,CAAC,GACxJ;GAEgC,CAAC,KAAK,KAAK;;;;;;AC5CpD,mBAAe,OAAO,GAAG;;;;;;;;;;;;;;;;AC0BzB,MAAM,cAAc,YAAY;AAG5B,SADe,MAAM,OADC,cAAc,KAAK,QAAQ,KAAK,EAAE,wBAAwB,CAAC,CAAC,OAEpE;;;;;;;AAQlB,MAAa,mBAAmB,OAAO,UAA6B,EAAE,KAAK;AACvE,iBAAgB;CAEhB,MAAM,MAAM,MAAM,aAAa;CAC/B,MAAM,WAAW,QAAQ,IAAI;AAE7B,OAAM,OAAO,KAAK,MAAM,IAAI,mBAAmB,KAAK,EAAE,UAAU,CAAC,CAAC,YAAY,EAAE;EAC5E,MAAM,QAAQ,QAAQC;EACtB,MAAM;EACN,cAAc;GACV;GACAC;GACA;GACA;GACA;GACA;GACH;EACD,gBAAgB,CAAC,KAAK,QAAQ,KAAK,EAAE,iCAAiC,CAAC;EACvE,iBAAkB,WAAW;AACzB,SAAM;;EAEb,CAAC;;;;;;;;AASN,MAAM,8BAA8B;CAChC,MAAM,YAAY,QAAQ,KAAK;AAE/B,KAAI,CAAC,UACD,QAAO;AAGX,KAAI;AAIA,SAH0B,aAAa,cAAc,OAAO,KAAK,IAAI,CAAC,KACpD,aAAa,UAAU;SAGrC;AACJ,SAAO,OAAO,KAAK,QAAQ,cAAc,UAAU,CAAC;;;AAI5D,IAAI,uBAAuB,CACvB,OAAM,kBAAkB"}
1
+ {"version":3,"file":"index.js","names":["CliApp","MakeFactoryCommand","Command","CliApp","CliApp","MakeMigrationCommand","Command","CliApp","MakeModelCommand","Command","CliApp","MakeResource","MakeResourceBase","MakeSeederCommand","Command","CliApp","MigrateCommand","Command","CliApp","ModelsSyncCommand","Command","CliApp","SeedCommand","Command","CliApp","logo","MakeResource","MakeFactoryCommand","MakeMigrationCommand","MakeModelCommand","MakeSeederCommand","MigrateCommand","ModelsSyncCommand","SeedCommand"],"sources":["../src/commands/BuildCommand.ts","../src/commands/DevCommand.ts","../src/commands/MakeController.ts","../src/commands/MakeFactoryCommand.ts","../src/commands/MakeFullResource.ts","../src/commands/MakeMigrationCommand.ts","../src/commands/MakeModelCommand.ts","../src/commands/MakeResource.ts","../src/commands/MakeSeederCommand.ts","../src/commands/MigrateCommand.ts","../src/commands/ModelsSyncCommand.ts","../src/commands/RouteList.ts","../src/commands/SeedCommand.ts","../src/logo.ts","../src/index.ts"],"sourcesContent":["import { Command } from '@h3ravel/musket'\nimport { spawn } from 'node:child_process'\n\nexport class BuildCommand extends Command {\n protected signature = 'build'\n\n protected description = 'Build the application for production'\n\n async handle () {\n await new Promise<void>((resolve, reject) => {\n const command = process.platform === 'win32' ? 'pnpm.cmd' : 'pnpm'\n const child = spawn(command, ['exec', 'tsdown'], {\n cwd: process.cwd(),\n stdio: 'inherit',\n env: Object.assign({}, process.env, {\n NODE_ENV: 'production',\n }),\n })\n\n child.on('error', (error) => {\n reject(error)\n })\n\n child.on('exit', (code) => {\n if (code === 0 || code === null) {\n resolve()\n \nreturn\n }\n\n reject(new Error(`tsdown exited with code ${code}`))\n })\n })\n }\n}\n","import { Command } from '@h3ravel/musket'\nimport { spawn } from 'node:child_process'\n\nexport class DevCommand extends Command {\n protected signature = 'dev'\n\n protected description = 'Run the development server'\n\n async handle () {\n await new Promise<void>((resolve, reject) => {\n const command = process.platform === 'win32' ? 'pnpm.cmd' : 'pnpm'\n const child = spawn(command, ['exec', 'tsdown', '--log-level', 'silent'], {\n cwd: process.cwd(),\n stdio: 'inherit',\n })\n\n child.on('error', (error) => {\n reject(error)\n })\n\n child.on('exit', (code) => {\n if (code === 0 || code === null) {\n resolve()\n \nreturn\n }\n\n reject(new Error(`tsdown exited with code ${code}`))\n })\n })\n }\n}\n","import { ArkstackConsoleApp } from '../app'\nimport { CliApp } from 'arkormx'\nimport { Command } from '@h3ravel/musket'\n\n// oxlint-disable-next-line typescript/no-explicit-any\nexport class MakeController extends Command<ArkstackConsoleApp<any>> {\n protected signature = `make:controller\n {name : name of the controller to create}\n {--api : make an API controller}\n {--m|model? : name of model to attach to controller}\n {--f|factory : Create and link a factory}\n {--s|seeder : Create a seeder file for the model (only if --model is specified)}\n {--x|migration : Create a migration file for the model (only if --model is specified)}\n {--force : force overwrite if controller already exists}\n `\n\n protected description = 'Create a new controller file'\n\n async handle () {\n this.app.command = this\n\n if (!this.argument('name')) return void this.error('Error: Controller name is required.')\n\n const name = this.app.makeController(this.argument('name'), this.options())\n\n const app = new CliApp()\n\n const model = this.option('model')\n ? app.makeModel(this.argument('model'), { ...this.options(), force: false })\n : null\n\n this.success('Controller created successfully!');\n\n [\n ['Controller', name],\n model ? ['Model', model.model.path] : '',\n model ? [`Prisma schema ${model.prisma.updated ? '(updated)' : '(already up to date)'}`, model?.prisma.path] : '',\n model?.factory ? ['Factory', model.factory.path] : '',\n model?.seeder ? ['Seeder', model.seeder.path] : '',\n model?.migration ? ['Migration', model.migration.path] : ''\n ].filter(Boolean).map(([name, path]) => this.success(app.splitLogger(name!, path!)))\n }\n}\n","import { CliApp, MakeFactoryCommand as Command } from 'arkormx'\n\nexport class MakeFactoryCommand extends Command {\n async handle () {\n this.app.command = this\n\n this.app = new CliApp()\n\n return super.handle()\n }\n}\n","import { ArkstackConsoleApp } from '../app'\nimport { CliApp } from 'arkormx'\nimport { Command } from '@h3ravel/musket'\n\n// oxlint-disable-next-line typescript/no-explicit-any\nexport class MakeFullResource extends Command<ArkstackConsoleApp<any>> {\n protected signature = `make:full-resource\n {prefix : prefix of the resources to create, \"Admin\" will create AdminResource, AdminCollection and AdminController}\n {--m|model? : name of model to attach to the generated controller (will be created if it doesn't exist)}\n {--f|factory : Create and link a factory}\n {--s|seeder : Create a seeder file for the model (only if --model is specified)}\n {--x|migration : Create a migration file for the model (only if --model is specified)}\n {--force : force overwrite if resources already exist}\n `\n\n protected description =\n 'Create a full new set of API resources (Controller, Resource, Collection)'\n\n async handle () {\n this.app.command = this\n\n const res = this.app.makeResource(this.argument('prefix'), {\n force: this.option('force')\n })\n\n const col = this.app.makeResource(this.argument('prefix') + 'Collection', {\n collection: true,\n force: this.option('force'),\n })\n\n const cont = this.app.makeController(\n this.argument('prefix'),\n Object.assign({}, this.options(), { api: true, force: this.option('force') }),\n )\n\n const app = new CliApp()\n\n const model = this.option('model')\n ? app.makeModel(this.argument('prefix'), { ...this.options(), force: false })\n : null\n\n this.success('Created full resource set:');\n\n [\n ['Resource', res.path],\n ['Collection', col.path],\n ['Controller', cont],\n model ? ['Model', model.model.path] : '',\n model ? [`Prisma schema ${model.prisma.updated ? '(updated)' : '(already up to date)'}`, model.prisma.path] : '',\n model?.factory ? ['Factory', model.factory.path] : '',\n model?.seeder ? ['Seeder', model.seeder.path] : '',\n model?.migration ? ['Migration', model.migration.path] : ''\n ].filter(Boolean).map(([name, path]) => this.success(app.splitLogger(name!, path!)))\n }\n}\n","import { CliApp, MakeMigrationCommand as Command } from 'arkormx'\n\nexport class MakeMigrationCommand extends Command {\n async handle () {\n this.app.command = this\n\n this.app = new CliApp()\n\n return super.handle()\n }\n}\n","import { CliApp, MakeModelCommand as Command } from 'arkormx'\n\nexport class MakeModelCommand extends Command {\n async handle () {\n this.app.command = this\n\n this.app = new CliApp()\n\n return super.handle()\n }\n}\n","import { MakeResource as MakeResourceBase } from 'resora'\n\nexport class MakeResource extends MakeResourceBase {\n}\n","import { CliApp, MakeSeederCommand as Command } from 'arkormx'\n\nexport class MakeSeederCommand extends Command {\n async handle () {\n this.app.command = this\n\n this.app = new CliApp()\n\n return super.handle()\n }\n}\n","import { CliApp, MigrateCommand as Command } from 'arkormx'\n\nexport class MigrateCommand extends Command {\n async handle () {\n this.app.command = this\n\n this.app = new CliApp()\n\n return super.handle()\n }\n}\n","import { CliApp, ModelsSyncCommand as Command } from 'arkormx'\n\nexport class ModelsSyncCommand extends Command {\n async handle () {\n this.app.command = this\n\n this.app = new CliApp()\n\n return super.handle()\n }\n}\n","import { ArkstackConsoleApp } from '../app'\nimport type { ArkstackRouterAwareCore } from '@arkstack/contract'\nimport { Command } from '@h3ravel/musket'\nimport type { Route } from 'clear-router'\nimport chalk from 'chalk'\n\ntype App = ArkstackConsoleApp<ArkstackRouterAwareCore<unknown, Route[]>>;\n\nexport class RouteList extends Command<App> {\n protected signature = `route:list\n {--p|path? : Path to filter routes by}\n `\n\n protected description = 'List all registered routes'\n\n async handle () {\n const routes = await this.app.core.getRouter().list(this.options(), this.app.core.getAppInstance())\n\n console.log(this.formatRoutes(routes.reverse()))\n this.newLine()\n this.info(`Total routes: ${routes.length}`)\n }\n\n private formatRoutes (routes: Route[]) {\n if (routes.length === 0) {\n return 'No routes registered.'\n }\n\n const rows = routes.map((route) => ({\n method: route.methods.join('|').toUpperCase(),\n path: route.path,\n handler: route.controllerName ? `${route.controllerName} → ${route.actionName}` : route.actionName ?? 'N/A',\n }))\n\n const methodWidth = Math.max('METHOD'.length, ...rows.map((row) => row.method.length))\n const pathWidth = Math.max('PATH'.length, ...rows.map((row) => row.path.length))\n const handlerWidth = Math.max('HANDLER'.length, ...rows.map((row) => row.handler.length))\n\n const header = `${'METHOD'.padEnd(methodWidth)} ${'PATH'.padEnd(pathWidth)} ${'HANDLER'.padEnd(handlerWidth)}`\n const divider = `${'-'.repeat(methodWidth)} ${'-'.repeat(pathWidth)} ${'-'.repeat(handlerWidth)}`\n const body = rows.map(\n (row) => `${chalk.green(row.method.padEnd(methodWidth))} ${chalk.blue(row.path.padEnd(pathWidth))} ${chalk.yellow(row.handler.padEnd(handlerWidth))}`\n )\n\n return [header, divider, ...body].join('\\n')\n }\n}\n","import { CliApp, SeedCommand as Command } from 'arkormx'\n\nexport class SeedCommand extends Command {\n async handle () {\n this.app.command = this\n\n this.app = new CliApp()\n\n return super.handle()\n }\n}\n","export default String.raw`\n ___ _ _ \n / _ \\ | | | | \n/ /_\\ \\_ __ ___ ___| |_ __ _ ___| | __\n| _ | '__/ __/ __| __/ _' |/ __| |/ /\n| | | | | | (__\\__ \\ || (_| | (__| < \n\\_| |_/_| \\___|___/\\__\\__,_|\\___|_|\\_\\ \n`","#!/usr/bin/env node\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport { ArkstackConsoleApp } from './app'\nimport { BuildCommand } from './commands/BuildCommand'\nimport { DevCommand } from './commands/DevCommand'\nimport { Kernel } from '@h3ravel/musket'\nimport { MakeController } from './commands/MakeController'\nimport { MakeFactoryCommand } from './commands/MakeFactoryCommand'\nimport { MakeFullResource } from './commands/MakeFullResource'\nimport { MakeMigrationCommand } from './commands/MakeMigrationCommand'\nimport { MakeModelCommand } from './commands/MakeModelCommand'\nimport { MakeResource } from './commands/MakeResource'\nimport { MakeSeederCommand } from './commands/MakeSeederCommand'\nimport { MigrateCommand } from './commands/MigrateCommand'\nimport { ModelsSyncCommand } from './commands/ModelsSyncCommand'\nimport { RouteList } from './commands/RouteList'\nimport { SeedCommand } from './commands/SeedCommand'\nimport { join } from 'node:path'\nimport { loadPrototypes } from '@arkstack/common'\nimport logo from './logo'\nimport { realpathSync } from 'node:fs'\n\nexport interface RunConsoleOptions {\n logo?: string;\n}\n\n/**\n * Loads the core application instance by importing the bootstrap file.\n * \n * @returns \n */\nconst loadCoreApp = async () => {\n const bootstrapPath = pathToFileURL(join(process.cwd(), 'src/core/bootstrap.ts')).href\n const module = await import(bootstrapPath)\n\n return module.app\n}\n\n/**\n * Runs the console kernel, initializing the application and registering commands.\n * \n * @param options \n */\nexport const runConsoleKernel = async (options: RunConsoleOptions = {}) => {\n loadPrototypes()\n\n const app = await loadCoreApp()\n const stubsDir = process.env.ARKSTACK_STUBS_DIR\n\n await Kernel.init(await new ArkstackConsoleApp(app, { stubsDir }).loadConfig(), {\n logo: options.logo ?? logo,\n name: 'Cmd',\n baseCommands: [\n RouteList,\n MakeResource,\n MakeController,\n MakeFullResource,\n DevCommand,\n BuildCommand,\n MakeFactoryCommand,\n MakeMigrationCommand,\n MakeModelCommand,\n MakeSeederCommand,\n MigrateCommand,\n ModelsSyncCommand,\n SeedCommand,\n ],\n discoveryPaths: [join(process.cwd(), 'src/core/console/commands/*.ts')],\n exceptionHandler (exception) {\n throw exception\n },\n })\n}\n\n/**\n * Determines if the current module is being executed as the entry \n * point of the application.\n * \n * @returns \n */\nconst isEntrypointExecution = () => {\n const argvEntry = process.argv[1]\n\n if (!argvEntry) {\n return false\n }\n\n try {\n const currentModulePath = realpathSync(fileURLToPath(import.meta.url))\n const entryPath = realpathSync(argvEntry)\n\n return currentModulePath === entryPath\n } catch {\n return import.meta.url === pathToFileURL(argvEntry).href\n }\n}\n\nif (isEntrypointExecution()) {\n await runConsoleKernel()\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@arkstack/console",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "description": "Console package for Arkstack providing console-specific implementations of core Arkstack features such as routing, middleware, and database integration.",
6
+ "homepage": "https://arkstack.toneflix.net",
6
7
  "repository": {
7
8
  "type": "git",
8
9
  "url": "git+https://github.com/arkstack-hq/arkstack.git",
@@ -27,7 +28,7 @@
27
28
  "access": "public"
28
29
  },
29
30
  "bin": {
30
- "arch": "./dist/index.js"
31
+ "ark": "./dist/index.js"
31
32
  },
32
33
  "exports": {
33
34
  ".": {
@@ -40,14 +41,15 @@
40
41
  }
41
42
  },
42
43
  "peerDependencies": {
43
- "clear-router": "^2.1.6"
44
+ "clear-router": "^2.1.6",
45
+ "arkormx": "^0.2.1"
44
46
  },
45
47
  "dependencies": {
46
48
  "@h3ravel/musket": "^0.10.1",
47
49
  "chalk": "^5.6.2",
48
- "resora": "^0.2.3",
49
- "@arkstack/common": "^0.1.1",
50
- "@arkstack/contract": "^0.1.1"
50
+ "resora": "^0.2.6",
51
+ "@arkstack/common": "^0.1.3",
52
+ "@arkstack/contract": "^0.1.3"
51
53
  },
52
54
  "scripts": {
53
55
  "build": "tsdown",