@nexusts/cli 0.7.2 → 0.7.4

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/index.js CHANGED
@@ -1,9 +1,25 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
+ var __create = Object.create;
4
+ var __getProtoOf = Object.getPrototypeOf;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __toESM = (mod, isNodeMode, target) => {
9
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
10
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
11
+ for (let key of __getOwnPropNames(mod))
12
+ if (!__hasOwnProp.call(to, key))
13
+ __defProp(to, key, {
14
+ get: () => mod[key],
15
+ enumerable: true
16
+ });
17
+ return to;
18
+ };
3
19
  var __require = import.meta.require;
4
20
 
5
21
  // packages/cli/src/commands/info.ts
6
- import { resolve as resolve3 } from "path";
22
+ import { resolve as resolve4 } from "path";
7
23
 
8
24
  // packages/cli/src/core/args.ts
9
25
  var LONG_RE = /^--([^=]+)(?:=(.*))?$/;
@@ -477,6 +493,24 @@ function singularize(s) {
477
493
  return s.slice(0, -1);
478
494
  return s;
479
495
  }
496
+ // packages/cli/src/core/version.ts
497
+ import { existsSync as existsSync3, readFileSync as readFileSync3 } from "fs";
498
+ import { resolve as resolve3, dirname as dirname2 } from "path";
499
+ import { fileURLToPath } from "url";
500
+ var __dirname2 = dirname2(fileURLToPath(import.meta.url));
501
+ var PKG_JSON = resolve3(__dirname2, "..", "package.json");
502
+ function loadVersion() {
503
+ try {
504
+ if (!existsSync3(PKG_JSON))
505
+ return "0.0.0";
506
+ const raw = readFileSync3(PKG_JSON, "utf-8");
507
+ const pkg = JSON.parse(raw);
508
+ return pkg.version ?? "0.0.0";
509
+ } catch {
510
+ return "0.0.0";
511
+ }
512
+ }
513
+ var VERSION = loadVersion();
480
514
  // packages/cli/src/commands/info.ts
481
515
  var infoCommand = {
482
516
  name: "info",
@@ -528,7 +562,7 @@ var infoCommand = {
528
562
  logger.blank();
529
563
  logger.info(colors.bold("Working directory"));
530
564
  logger.blank();
531
- logger.info(` ${resolve3(ctx.cwd)}`);
565
+ logger.info(` ${resolve4(ctx.cwd)}`);
532
566
  logger.blank();
533
567
  return 0;
534
568
  }
@@ -536,8 +570,8 @@ var infoCommand = {
536
570
  var info_default = infoCommand;
537
571
 
538
572
  // packages/cli/src/commands/init.ts
539
- import { existsSync as existsSync3, mkdirSync as mkdirSync2, readFileSync as readFileSync3, writeFileSync as writeFileSync2 } from "fs";
540
- import { resolve as resolve4 } from "path";
573
+ import { existsSync as existsSync4, mkdirSync as mkdirSync2, readFileSync as readFileSync4, writeFileSync as writeFileSync2 } from "fs";
574
+ import { resolve as resolve5 } from "path";
541
575
 
542
576
  // packages/cli/src/templates/controller/adonis.ts
543
577
  var adonis_default = `
@@ -1165,8 +1199,8 @@ var initCommand = {
1165
1199
  async run(ctx) {
1166
1200
  const interactive = !flagBool(ctx.flags, "no-interaction", false);
1167
1201
  const force = flagBool(ctx.flags, "force", false);
1168
- const target = resolve4(ctx.cwd, ctx.flags["target"] ?? ".");
1169
- if (!existsSync3(target)) {
1202
+ const target = resolve5(ctx.cwd, ctx.flags["target"] ?? ".");
1203
+ if (!existsSync4(target)) {
1170
1204
  logger.error(`Target directory does not exist: ${target}`);
1171
1205
  logger.info(`Run \`nx new <name>\` to create a fresh project, or \`mkdir -p ${target}\` first.`);
1172
1206
  return 1;
@@ -1209,14 +1243,14 @@ var initCommand = {
1209
1243
  const created = [];
1210
1244
  const skipped = [];
1211
1245
  const merged = [];
1212
- mkdirSync2(resolve4(target, "app/controllers"), { recursive: true });
1213
- mkdirSync2(resolve4(target, "public"), { recursive: true });
1246
+ mkdirSync2(resolve5(target, "app/controllers"), { recursive: true });
1247
+ mkdirSync2(resolve5(target, "public"), { recursive: true });
1214
1248
  if (view !== "none") {
1215
- mkdirSync2(resolve4(target, "resources/views"), { recursive: true });
1249
+ mkdirSync2(resolve5(target, "resources/views"), { recursive: true });
1216
1250
  }
1217
1251
  for (const entry of plan) {
1218
- const abs = resolve4(target, entry.path);
1219
- const exists = existsSync3(abs);
1252
+ const abs = resolve5(target, entry.path);
1253
+ const exists = existsSync4(abs);
1220
1254
  if (entry.mode === "merge-pkg") {
1221
1255
  const coreDeps = {
1222
1256
  "@nexusts/core": "*",
@@ -1474,7 +1508,7 @@ function defaultTsconfig() {
1474
1508
  `;
1475
1509
  }
1476
1510
  function mergePackageJson(path, additions) {
1477
- const raw = readFileSync3(path, "utf8");
1511
+ const raw = readFileSync4(path, "utf8");
1478
1512
  const pkg = parseJsonLoose(raw);
1479
1513
  let changed = false;
1480
1514
  if (!pkg["type"]) {
@@ -1516,7 +1550,7 @@ function mergePackageJson(path, additions) {
1516
1550
  }
1517
1551
  }
1518
1552
  function mergeTsconfig(path, additions) {
1519
- const raw = readFileSync3(path, "utf8");
1553
+ const raw = readFileSync4(path, "utf8");
1520
1554
  const cfg = parseJsonLoose(raw);
1521
1555
  const co = cfg.compilerOptions ?? {};
1522
1556
  let changed = false;
@@ -1545,7 +1579,7 @@ function mergeTsconfig(path, additions) {
1545
1579
  var init_default = initCommand;
1546
1580
 
1547
1581
  // packages/cli/src/commands/make-auth.ts
1548
- import { resolve as resolve5 } from "path";
1582
+ import { resolve as resolve6 } from "path";
1549
1583
  var AUTH_INSTANCE_TEMPLATE = `/**
1550
1584
  * Better-auth instance \u2014 generated by \`nx make:auth\`.
1551
1585
  *
@@ -1660,7 +1694,7 @@ var makeAuthCommand = {
1660
1694
  passkeyRpId: rpId,
1661
1695
  passkeyOrigin: Array.isArray(origin) ? origin.join(",") : origin
1662
1696
  });
1663
- const authOut = resolve5(ctx.cwd, "app/auth/auth.ts");
1697
+ const authOut = resolve6(ctx.cwd, "app/auth/auth.ts");
1664
1698
  if (writeFile(authOut, authCode)) {
1665
1699
  logger.success(`created ${authOut}`);
1666
1700
  } else {
@@ -1670,7 +1704,7 @@ var makeAuthCommand = {
1670
1704
  providers: providers.length > 0,
1671
1705
  entries
1672
1706
  });
1673
- const envOut = resolve5(ctx.cwd, ".env.example");
1707
+ const envOut = resolve6(ctx.cwd, ".env.example");
1674
1708
  if (writeFile(envOut, envCode, { skipIfExists: true })) {
1675
1709
  logger.success(`created ${envOut}`);
1676
1710
  } else {
@@ -1696,7 +1730,7 @@ var makeAuthCommand = {
1696
1730
  var make_auth_default = makeAuthCommand;
1697
1731
 
1698
1732
  // packages/cli/src/commands/make-controller.ts
1699
- import { resolve as resolve6 } from "path";
1733
+ import { resolve as resolve7 } from "path";
1700
1734
  var makeControllerCommand = {
1701
1735
  name: "make:controller",
1702
1736
  aliases: ["mc", "make-controller"],
@@ -1742,7 +1776,7 @@ var makeControllerCommand = {
1742
1776
  service: serviceName,
1743
1777
  serviceCamel
1744
1778
  }).replace(/import .*\n/g, skipService ? (m) => m.includes("services/") ? "" : m : (m) => m);
1745
- const out = resolve6(ctx.cwd, ctx.config.paths.controllers, `${variants.kebab}.controller.ts`);
1779
+ const out = resolve7(ctx.cwd, ctx.config.paths.controllers, `${variants.kebab}.controller.ts`);
1746
1780
  const ok = writeFile(out, code, { skipIfExists: false });
1747
1781
  if (!ok) {
1748
1782
  logger.error(`Refusing to overwrite existing file: ${out}`);
@@ -1757,7 +1791,7 @@ var make_controller_default = makeControllerCommand;
1757
1791
 
1758
1792
  // packages/cli/src/commands/make-crud.ts
1759
1793
  import { mkdirSync as mkdirSync3 } from "fs";
1760
- import { dirname as dirname2, resolve as resolve7 } from "path";
1794
+ import { dirname as dirname3, resolve as resolve8 } from "path";
1761
1795
 
1762
1796
  // packages/cli/src/templates/model/drizzle-dialect.ts
1763
1797
  function renderDrizzleDialect(dialect) {
@@ -1932,7 +1966,7 @@ var makeCrudCommand = {
1932
1966
  viewShowComponent,
1933
1967
  hasInertia
1934
1968
  });
1935
- const out = resolve7(ctx.cwd, ctx.config.paths.controllers, `${variants.kebab}.controller.ts`);
1969
+ const out = resolve8(ctx.cwd, ctx.config.paths.controllers, `${variants.kebab}.controller.ts`);
1936
1970
  if (!writeFile(out, code, { skipIfExists: true })) {
1937
1971
  logger.warn(`skipped (exists): ${out}`);
1938
1972
  } else {
@@ -1950,7 +1984,7 @@ var makeCrudCommand = {
1950
1984
  repository,
1951
1985
  repositoryCamel: variants.camel + "Repository"
1952
1986
  });
1953
- const out = resolve7(ctx.cwd, ctx.config.paths.services, `${variants.kebab}.service.ts`);
1987
+ const out = resolve8(ctx.cwd, ctx.config.paths.services, `${variants.kebab}.service.ts`);
1954
1988
  if (!writeFile(out, code, { skipIfExists: true })) {
1955
1989
  logger.warn(`skipped (exists): ${out}`);
1956
1990
  } else {
@@ -1984,7 +2018,7 @@ var makeCrudCommand = {
1984
2018
  prismaBlock: ""
1985
2019
  });
1986
2020
  }
1987
- const out = resolve7(ctx.cwd, ctx.config.paths.models, `${variants.kebab}.model.ts`);
2021
+ const out = resolve8(ctx.cwd, ctx.config.paths.models, `${variants.kebab}.model.ts`);
1988
2022
  if (!writeFile(out, code, { skipIfExists: true })) {
1989
2023
  logger.warn(`skipped (exists): ${out}`);
1990
2024
  } else {
@@ -2000,8 +2034,8 @@ var makeCrudCommand = {
2000
2034
  tableName,
2001
2035
  repository
2002
2036
  });
2003
- const repoOut = resolve7(ctx.cwd, `${ctx.config.paths.app}/repositories`, `${variants.kebab}.repository.ts`);
2004
- mkdirSync3(dirname2(repoOut), { recursive: true });
2037
+ const repoOut = resolve8(ctx.cwd, `${ctx.config.paths.app}/repositories`, `${variants.kebab}.repository.ts`);
2038
+ mkdirSync3(dirname3(repoOut), { recursive: true });
2005
2039
  if (!writeFile(repoOut, repoCode, { skipIfExists: true })) {
2006
2040
  logger.warn(`skipped (exists): ${repoOut}`);
2007
2041
  } else {
@@ -2015,7 +2049,7 @@ var makeCrudCommand = {
2015
2049
  camel: variants.camel,
2016
2050
  kebab: variants.kebab
2017
2051
  });
2018
- const out = resolve7(ctx.cwd, ctx.config.paths.dto, `${variants.kebab}.dto.ts`);
2052
+ const out = resolve8(ctx.cwd, ctx.config.paths.dto, `${variants.kebab}.dto.ts`);
2019
2053
  if (!writeFile(out, code, { skipIfExists: true })) {
2020
2054
  logger.warn(`skipped (exists): ${out}`);
2021
2055
  } else {
@@ -2033,7 +2067,7 @@ var makeCrudCommand = {
2033
2067
  repository,
2034
2068
  hasRepo: !noRepo
2035
2069
  });
2036
- const out = resolve7(ctx.cwd, ctx.config.paths.modules, `${variants.kebab}.module.ts`);
2070
+ const out = resolve8(ctx.cwd, ctx.config.paths.modules, `${variants.kebab}.module.ts`);
2037
2071
  if (!writeFile(out, code, { skipIfExists: true })) {
2038
2072
  logger.warn(`skipped (exists): ${out}`);
2039
2073
  } else {
@@ -2049,7 +2083,7 @@ var makeCrudCommand = {
2049
2083
  controller,
2050
2084
  service
2051
2085
  });
2052
- const out = resolve7(ctx.cwd, "tests", `${variants.kebab}.test.ts`);
2086
+ const out = resolve8(ctx.cwd, "tests", `${variants.kebab}.test.ts`);
2053
2087
  if (!writeFile(out, code, { skipIfExists: true })) {
2054
2088
  logger.warn(`skipped (exists): ${out}`);
2055
2089
  } else {
@@ -2085,7 +2119,7 @@ function renderDrizzleColumns(dialect) {
2085
2119
  var make_crud_default = makeCrudCommand;
2086
2120
 
2087
2121
  // packages/cli/src/commands/make-listener.ts
2088
- import { resolve as resolve8 } from "path";
2122
+ import { resolve as resolve9 } from "path";
2089
2123
  var LISTENER_TEMPLATE = `
2090
2124
  import { Inject, Injectable } from '@nexusts/core';
2091
2125
  import { EventService, OnEvent } from '@nexusts/events';
@@ -2136,7 +2170,7 @@ var makeListenerCommand = {
2136
2170
  name: variants.pascal,
2137
2171
  kebab: variants.kebab
2138
2172
  });
2139
- const out = resolve8(ctx.cwd, "app/events/listeners", `${variants.kebab}.listener.ts`);
2173
+ const out = resolve9(ctx.cwd, "app/events/listeners", `${variants.kebab}.listener.ts`);
2140
2174
  if (writeFile(out, code, { skipIfExists: true })) {
2141
2175
  logger.success(`created ${out}`);
2142
2176
  } else {
@@ -2156,7 +2190,7 @@ var makeListenerCommand = {
2156
2190
  var make_listener_default = makeListenerCommand;
2157
2191
 
2158
2192
  // packages/cli/src/commands/make-middleware.ts
2159
- import { resolve as resolve9 } from "path";
2193
+ import { resolve as resolve10 } from "path";
2160
2194
  var makeMiddlewareCommand = {
2161
2195
  name: "make:middleware",
2162
2196
  aliases: ["mwm", "make-middleware"],
@@ -2173,7 +2207,7 @@ var makeMiddlewareCommand = {
2173
2207
  const code = render(templates.middleware, {
2174
2208
  name: variants.pascal
2175
2209
  });
2176
- const out = resolve9(ctx.cwd, ctx.config.paths.middleware, `${variants.kebab}.middleware.ts`);
2210
+ const out = resolve10(ctx.cwd, ctx.config.paths.middleware, `${variants.kebab}.middleware.ts`);
2177
2211
  writeFile(out, code);
2178
2212
  logger.success(`created ${out}`);
2179
2213
  logger.finger(`register with: app.server.app.use('*', new ${variants.pascal}Middleware().handle)`);
@@ -2183,7 +2217,7 @@ var makeMiddlewareCommand = {
2183
2217
  var make_middleware_default = makeMiddlewareCommand;
2184
2218
 
2185
2219
  // packages/cli/src/commands/make-migration.ts
2186
- import { resolve as resolve10 } from "path";
2220
+ import { resolve as resolve11 } from "path";
2187
2221
  var makeMigrationCommand = {
2188
2222
  name: "make:migration",
2189
2223
  aliases: ["mkm", "make-migration"],
@@ -2255,7 +2289,7 @@ var makeMigrationCommand = {
2255
2289
  return 1;
2256
2290
  }
2257
2291
  const filename = `${formatTimestamp(new Date)}_${variants.snake}.${extension}`;
2258
- const out = resolve10(ctx.cwd, ctx.config.paths.migrations, filename);
2292
+ const out = resolve11(ctx.cwd, ctx.config.paths.migrations, filename);
2259
2293
  writeFile(out, code);
2260
2294
  logger.success(`created ${out}`);
2261
2295
  if (isDrizzle) {
@@ -2343,7 +2377,7 @@ function formatTimestamp(d) {
2343
2377
  var make_migration_default = makeMigrationCommand;
2344
2378
 
2345
2379
  // packages/cli/src/commands/make-model.ts
2346
- import { resolve as resolve11 } from "path";
2380
+ import { resolve as resolve12 } from "path";
2347
2381
  var makeModelCommand = {
2348
2382
  name: "make:model",
2349
2383
  aliases: ["mmodel", "make-model"],
@@ -2415,7 +2449,7 @@ var makeModelCommand = {
2415
2449
  prismaBlock
2416
2450
  });
2417
2451
  }
2418
- const out = resolve11(ctx.cwd, ctx.config.paths.models, `${variants.kebab}.model.ts`);
2452
+ const out = resolve12(ctx.cwd, ctx.config.paths.models, `${variants.kebab}.model.ts`);
2419
2453
  writeFile(out, code);
2420
2454
  logger.success(`created ${out}`);
2421
2455
  logger.finger(`run \`nx make:migration create_${tableName}_table\` to scaffold a migration.`);
@@ -2474,7 +2508,7 @@ function capitalize(s) {
2474
2508
  var make_model_default = makeModelCommand;
2475
2509
 
2476
2510
  // packages/cli/src/commands/make-module.ts
2477
- import { resolve as resolve12 } from "path";
2511
+ import { resolve as resolve13 } from "path";
2478
2512
  var makeModuleCommand = {
2479
2513
  name: "make:module",
2480
2514
  aliases: ["mm", "make-module"],
@@ -2508,7 +2542,7 @@ var makeModuleCommand = {
2508
2542
  hasService,
2509
2543
  hasRepo
2510
2544
  });
2511
- const out = resolve12(ctx.cwd, ctx.config.paths.modules, `${variants.kebab}.module.ts`);
2545
+ const out = resolve13(ctx.cwd, ctx.config.paths.modules, `${variants.kebab}.module.ts`);
2512
2546
  writeFile(out, code);
2513
2547
  logger.success(`created ${out}`);
2514
2548
  logger.finger(`add ${variants.pascal}Module to AppModule.imports.`);
@@ -2518,7 +2552,7 @@ var makeModuleCommand = {
2518
2552
  var make_module_default = makeModuleCommand;
2519
2553
 
2520
2554
  // packages/cli/src/commands/make-queue.ts
2521
- import { resolve as resolve13 } from "path";
2555
+ import { resolve as resolve14 } from "path";
2522
2556
  var WORKER_TEMPLATE = `
2523
2557
  import { Inject, Injectable } from '@nexusts/core';
2524
2558
  import { QueueService, OnQueueReady } from '@nexusts/queue';
@@ -2646,7 +2680,7 @@ var makeQueueCommand = {
2646
2680
  name: variants.pascal,
2647
2681
  kebab: variants.kebab
2648
2682
  });
2649
- const out = resolve13(ctx.cwd, "app/queue/workers", `${variants.kebab}.worker.ts`);
2683
+ const out = resolve14(ctx.cwd, "app/queue/workers", `${variants.kebab}.worker.ts`);
2650
2684
  if (writeFile(out, code, { skipIfExists: true })) {
2651
2685
  logger.success(`created ${out}`);
2652
2686
  } else {
@@ -2658,7 +2692,7 @@ var makeQueueCommand = {
2658
2692
  name: variants.pascal,
2659
2693
  kebab: variants.kebab
2660
2694
  });
2661
- const out = resolve13(ctx.cwd, "app/queue/jobs", `${variants.kebab}.job.ts`);
2695
+ const out = resolve14(ctx.cwd, "app/queue/jobs", `${variants.kebab}.job.ts`);
2662
2696
  if (writeFile(out, code, { skipIfExists: true })) {
2663
2697
  logger.success(`created ${out}`);
2664
2698
  } else {
@@ -2681,27 +2715,25 @@ var makeQueueCommand = {
2681
2715
  var make_queue_default = makeQueueCommand;
2682
2716
 
2683
2717
  // packages/cli/src/commands/make-schedule.ts
2684
- import { resolve as resolve14 } from "path";
2718
+ import { resolve as resolve15 } from "path";
2685
2719
  var TASK_TEMPLATE = `
2686
- import { Inject, Injectable } from '@nexusts/core';
2687
- import { Cron, Interval, Timeout, ScheduleService } from '@nexusts/schedule';
2720
+ import { Injectable } from '@nexusts/core';
2721
+ import { Cron, Interval, Timeout } from '@nexusts/schedule';
2688
2722
 
2689
2723
  /**
2690
2724
  * {{ name }} task \u2014 generated by \`nx make:schedule {{ name }}\`.
2691
2725
  *
2692
- * Mark methods with \`@Cron\`, \`@Interval\`, or \`@Timeout\` and register
2693
- * them at boot via \`scanForSchedulers(this, scheduleService)\`.
2726
+ * Mark methods with \`@Cron\`, \`@Interval\`, or \`@Timeout\`.
2727
+ * Auto-detected at boot \u2014 no manual registration needed.
2694
2728
  */
2695
2729
  @Injectable()
2696
2730
  export class {{ name }}Task {
2697
- constructor(@Inject(ScheduleService.TOKEN) private readonly schedule: ScheduleService) {}
2731
+ constructor() {}
2698
2732
 
2699
2733
  // TODO: add @Cron, @Interval, or @Timeout handlers below.
2700
2734
 
2701
2735
  // @Cron('0 * * * *') // every hour
2702
- // async hourly() {
2703
- // this.schedule; // unused \u2014 remove if you don't need it
2704
- // }
2736
+ // async hourly() { /* ... */ }
2705
2737
 
2706
2738
  // @Interval(60_000) // every minute
2707
2739
  // async tick() { /* ... */ }
@@ -2709,16 +2741,6 @@ export class {{ name }}Task {
2709
2741
  // @Timeout(5_000) // 5s after boot
2710
2742
  // async startup() { /* ... */ }
2711
2743
  }
2712
-
2713
- import { scanForSchedulers } from '@nexusts/schedule';
2714
-
2715
- /**
2716
- * Bootstrap helper \u2014 call from main.ts to register every @Cron /
2717
- * @Interval / @Timeout handler on this task class.
2718
- */
2719
- export async function register{{ name }}(task: {{ name }}Task, schedule: ScheduleService) {
2720
- return scanForSchedulers(task, schedule);
2721
- }
2722
2744
  `.trimStart();
2723
2745
  var makeScheduleCommand = {
2724
2746
  name: "make:schedule",
@@ -2737,7 +2759,7 @@ var makeScheduleCommand = {
2737
2759
  name: variants.pascal,
2738
2760
  kebab: variants.kebab
2739
2761
  });
2740
- const out = resolve14(ctx.cwd, "app/schedule/tasks", `${variants.kebab}.task.ts`);
2762
+ const out = resolve15(ctx.cwd, "app/schedule/tasks", `${variants.kebab}.task.ts`);
2741
2763
  if (writeFile(out, code, { skipIfExists: true })) {
2742
2764
  logger.success(`created ${out}`);
2743
2765
  } else {
@@ -2746,9 +2768,8 @@ var makeScheduleCommand = {
2746
2768
  logger.blank();
2747
2769
  logger.heading("Next steps");
2748
2770
  logger.info("1. Add @Cron / @Interval / @Timeout handlers to the class.");
2749
- logger.info(`2. Import + register at boot:`);
2750
- logger.info(` scanForSchedulers(task, schedule)`);
2751
- logger.info(`3. Don't forget to call \`schedule.start()\` to begin the tick.`);
2771
+ logger.info("2. Add the task class to your module's providers array.");
2772
+ logger.info(" \u2192 Auto-detected at boot, no main.ts changes needed.");
2752
2773
  logger.blank();
2753
2774
  return 0;
2754
2775
  }
@@ -2756,7 +2777,7 @@ var makeScheduleCommand = {
2756
2777
  var make_schedule_default = makeScheduleCommand;
2757
2778
 
2758
2779
  // packages/cli/src/commands/make-service.ts
2759
- import { resolve as resolve15 } from "path";
2780
+ import { resolve as resolve16 } from "path";
2760
2781
  var makeServiceCommand = {
2761
2782
  name: "make:service",
2762
2783
  aliases: ["ms", "make-service"],
@@ -2787,7 +2808,7 @@ var makeServiceCommand = {
2787
2808
  repository,
2788
2809
  repositoryCamel
2789
2810
  });
2790
- const out = resolve15(ctx.cwd, ctx.config.paths.services, `${variants.kebab}.service.ts`);
2811
+ const out = resolve16(ctx.cwd, ctx.config.paths.services, `${variants.kebab}.service.ts`);
2791
2812
  writeFile(out, code);
2792
2813
  logger.success(`created ${out}`);
2793
2814
  return 0;
@@ -2796,7 +2817,7 @@ var makeServiceCommand = {
2796
2817
  var make_service_default = makeServiceCommand;
2797
2818
 
2798
2819
  // packages/cli/src/commands/make-session.ts
2799
- import { resolve as resolve16 } from "path";
2820
+ import { resolve as resolve17 } from "path";
2800
2821
  var SESSION_TEMPLATE = `
2801
2822
  import { Inject, Injectable } from '@nexusts/core';
2802
2823
  import { SessionService } from '@nexusts/session';
@@ -2858,7 +2879,7 @@ var makeSessionCommand = {
2858
2879
  name: variants.pascal,
2859
2880
  kebab: variants.kebab
2860
2881
  });
2861
- const out = resolve16(ctx.cwd, "app/session/services", `${variants.kebab}.session.ts`);
2882
+ const out = resolve17(ctx.cwd, "app/session/services", `${variants.kebab}.session.ts`);
2862
2883
  if (writeFile(out, code, { skipIfExists: true })) {
2863
2884
  logger.success(`created ${out}`);
2864
2885
  } else {
@@ -2876,7 +2897,7 @@ var makeSessionCommand = {
2876
2897
  var make_session_default = makeSessionCommand;
2877
2898
 
2878
2899
  // packages/cli/src/commands/make-validator.ts
2879
- import { resolve as resolve17 } from "path";
2900
+ import { resolve as resolve18 } from "path";
2880
2901
  var makeValidatorCommand = {
2881
2902
  name: "make:validator",
2882
2903
  aliases: ["mv", "make-validator"],
@@ -2893,7 +2914,7 @@ var makeValidatorCommand = {
2893
2914
  const code = render(templates.validator, {
2894
2915
  name: variants.pascal
2895
2916
  });
2896
- const out = resolve17(ctx.cwd, ctx.config.paths.dto, `${variants.kebab}.dto.ts`);
2917
+ const out = resolve18(ctx.cwd, ctx.config.paths.dto, `${variants.kebab}.dto.ts`);
2897
2918
  writeFile(out, code);
2898
2919
  logger.success(`created ${out}`);
2899
2920
  return 0;
@@ -2903,8 +2924,8 @@ var make_validator_default = makeValidatorCommand;
2903
2924
 
2904
2925
  // packages/cli/src/commands/db-migrate.ts
2905
2926
  import { spawn } from "child_process";
2906
- import { existsSync as existsSync4 } from "fs";
2907
- import { resolve as resolve18 } from "path";
2927
+ import { existsSync as existsSync5 } from "fs";
2928
+ import { resolve as resolve19 } from "path";
2908
2929
  var dbMigrateCommand = {
2909
2930
  name: "db:migrate",
2910
2931
  aliases: ["db:m", "migrate"],
@@ -2939,15 +2960,15 @@ var dbMigrateCommand = {
2939
2960
  }
2940
2961
  ],
2941
2962
  async run(ctx) {
2942
- const folder = ctx.flags["folder"] ?? resolve18(ctx.cwd, ctx.config.paths.migrations);
2963
+ const folder = ctx.flags["folder"] ?? resolve19(ctx.cwd, ctx.config.paths.migrations);
2943
2964
  const dialect = ctx.flags["dialect"] ?? ctx.config.dialect ?? "bun-sqlite";
2944
- const configPath = ctx.flags["config"] ?? resolve18(ctx.cwd, "drizzle.config.ts");
2965
+ const configPath = ctx.flags["config"] ?? resolve19(ctx.cwd, "drizzle.config.ts");
2945
2966
  const wantStatus = Boolean(ctx.flags["status"]);
2946
2967
  const generateName = ctx.flags["generate"];
2947
2968
  if (generateName) {
2948
2969
  return runDrizzleKit(ctx.cwd, [
2949
2970
  "generate",
2950
- ...existsSync4(configPath) ? [`--config=${configPath}`] : [],
2971
+ ...existsSync5(configPath) ? [`--config=${configPath}`] : [],
2951
2972
  "--name",
2952
2973
  generateName
2953
2974
  ]);
@@ -2957,7 +2978,7 @@ var dbMigrateCommand = {
2957
2978
  }
2958
2979
  return runDrizzleKit(ctx.cwd, [
2959
2980
  "migrate",
2960
- ...existsSync4(configPath) ? [`--config=${configPath}`] : []
2981
+ ...existsSync5(configPath) ? [`--config=${configPath}`] : []
2961
2982
  ]);
2962
2983
  }
2963
2984
  };
@@ -2978,7 +2999,7 @@ function runDrizzleKit(cwd, args2) {
2978
2999
  });
2979
3000
  }
2980
3001
  async function runStatus(cwd, folder, dialect, configUrl = "") {
2981
- if (!existsSync4(folder)) {
3002
+ if (!existsSync5(folder)) {
2982
3003
  logger.warn(`migrations folder not found: ${folder}`);
2983
3004
  return 0;
2984
3005
  }
@@ -3002,7 +3023,7 @@ const applied = await svc.appliedMigrations();
3002
3023
  console.log(JSON.stringify({ total: applied.length, applied }, null, 2));
3003
3024
  await svc.close();
3004
3025
  `;
3005
- const tmpFile = resolve18(cwd, ".nx-migrate-status.mjs");
3026
+ const tmpFile = resolve19(cwd, ".nx-migrate-status.mjs");
3006
3027
  await import("fs/promises").then((m) => m.writeFile(tmpFile, script, "utf-8"));
3007
3028
  try {
3008
3029
  const code = await new Promise((resP) => {
@@ -3026,7 +3047,7 @@ function readEnvUrl(dialect) {
3026
3047
  var db_migrate_default = dbMigrateCommand;
3027
3048
 
3028
3049
  // packages/cli/src/commands/db-generate.ts
3029
- import { resolve as resolve19 } from "path";
3050
+ import { resolve as resolve20 } from "path";
3030
3051
  var dbGenerateCommand = {
3031
3052
  name: "db:generate",
3032
3053
  aliases: ["db:g", "db-generate", "generate-migration"],
@@ -3059,7 +3080,7 @@ var dbGenerateCommand = {
3059
3080
  logger.info(`Generating raw SQL migration: ${name} (dialect=${dialect})`);
3060
3081
  return runSqlTemplate(ctx.cwd, name, dialect);
3061
3082
  }
3062
- const configPath = resolve19(ctx.cwd, "drizzle.config.ts");
3083
+ const configPath = resolve20(ctx.cwd, "drizzle.config.ts");
3063
3084
  const args2 = ["generate", "--config", configPath];
3064
3085
  if (name)
3065
3086
  args2.push("--name", name);
@@ -3093,9 +3114,9 @@ var db_generate_default = dbGenerateCommand;
3093
3114
 
3094
3115
  // packages/cli/src/commands/db-seed.ts
3095
3116
  import { spawn as spawn2 } from "child_process";
3096
- import { existsSync as existsSync5 } from "fs";
3117
+ import { existsSync as existsSync6 } from "fs";
3097
3118
  import { mkdir, readdir, writeFile as writeFile2, unlink } from "fs/promises";
3098
- import { resolve as resolve20 } from "path";
3119
+ import { resolve as resolve21 } from "path";
3099
3120
  var SEED_TEMPLATE = `/**
3100
3121
  * Seed: {name}
3101
3122
  *
@@ -3156,7 +3177,7 @@ var dbSeedCommand = {
3156
3177
  }
3157
3178
  ],
3158
3179
  async run(ctx) {
3159
- const folder = resolve20(ctx.cwd, ctx.flags["folder"] ?? ctx.config.paths?.seeds ?? "db/seeds");
3180
+ const folder = resolve21(ctx.cwd, ctx.flags["folder"] ?? ctx.config.paths?.seeds ?? "db/seeds");
3160
3181
  const dialect = ctx.flags["dialect"] ?? ctx.config.dialect ?? "bun-sqlite";
3161
3182
  const createName = ctx.flags["create"];
3162
3183
  const fileName = ctx.flags["file"];
@@ -3164,10 +3185,10 @@ var dbSeedCommand = {
3164
3185
  if (createName) {
3165
3186
  return await createSeedFile(folder, createName);
3166
3187
  }
3167
- if (!existsSync5(folder)) {
3188
+ if (!existsSync6(folder)) {
3168
3189
  logger.info(`creating empty seeds folder at ${folder}`);
3169
3190
  await mkdir(folder, { recursive: true });
3170
- await writeFile2(resolve20(folder, "_README.ts"), `// Seed files go here. Run with: nx db:seed
3191
+ await writeFile2(resolve21(folder, "_README.ts"), `// Seed files go here. Run with: nx db:seed
3171
3192
  `, "utf-8");
3172
3193
  return 0;
3173
3194
  }
@@ -3191,7 +3212,7 @@ var dbSeedCommand = {
3191
3212
  if (reset) {
3192
3213
  logger.warn("--reset is set: truncating every table in the schema before running seeds.");
3193
3214
  }
3194
- const seedImports = target.map((f, i) => `import seed_${i} from ${JSON.stringify(resolve20(folder, f))};`).join(`
3215
+ const seedImports = target.map((f, i) => `import seed_${i} from ${JSON.stringify(resolve21(folder, f))};`).join(`
3195
3216
  `);
3196
3217
  const seedCalls = target.map((_, i) => ` await seed_${i}({ db, logger, dialect, truncate: (t) => db.truncate(t) });`).join(`
3197
3218
  `);
@@ -3224,7 +3245,7 @@ ${seedCalls}
3224
3245
  await db.close();
3225
3246
  logger.info(\`Seeds complete (\${${target.length}} file(s))\`);
3226
3247
  `;
3227
- const tmpFile = resolve20(ctx.cwd, ".nx-db-seed.mjs");
3248
+ const tmpFile = resolve21(ctx.cwd, ".nx-db-seed.mjs");
3228
3249
  await writeFile2(tmpFile, script, "utf-8");
3229
3250
  try {
3230
3251
  const code = await new Promise((resP) => {
@@ -3262,15 +3283,15 @@ async function createSeedFile(folder, name) {
3262
3283
  logger.error(`invalid seed name "${name}" \u2014 use letters, numbers, dash, underscore.`);
3263
3284
  return 1;
3264
3285
  }
3265
- if (!existsSync5(folder))
3286
+ if (!existsSync6(folder))
3266
3287
  await mkdir(folder, { recursive: true });
3267
3288
  let candidate = `${name}.ts`;
3268
3289
  let i = 1;
3269
- while (existsSync5(resolve20(folder, candidate))) {
3290
+ while (existsSync6(resolve21(folder, candidate))) {
3270
3291
  candidate = `${name}_${i}.ts`;
3271
3292
  i++;
3272
3293
  }
3273
- const path = resolve20(folder, candidate);
3294
+ const path = resolve21(folder, candidate);
3274
3295
  const body = SEED_TEMPLATE.replace(/\{name\}/g, name);
3275
3296
  await writeFile2(path, body, "utf-8");
3276
3297
  logger.info(`created ${path}`);
@@ -3281,7 +3302,7 @@ function readEnvUrl2(dialect) {
3281
3302
  return url ?? null;
3282
3303
  }
3283
3304
  function relativeImport(cwd, target) {
3284
- const abs = resolve20(cwd, target);
3305
+ const abs = resolve21(cwd, target);
3285
3306
  let rel = abs;
3286
3307
  if (rel.startsWith(cwd))
3287
3308
  rel = rel.slice(cwd.length);
@@ -3294,8 +3315,8 @@ function relativeImport(cwd, target) {
3294
3315
  var db_seed_default = dbSeedCommand;
3295
3316
 
3296
3317
  // packages/cli/src/commands/new.ts
3297
- import { existsSync as existsSync6, mkdirSync as mkdirSync4, writeFileSync as writeFileSync3 } from "fs";
3298
- import { resolve as resolve21 } from "path";
3318
+ import { existsSync as existsSync7, mkdirSync as mkdirSync4, writeFileSync as writeFileSync3 } from "fs";
3319
+ import { resolve as resolve22 } from "path";
3299
3320
  var newCommand = {
3300
3321
  name: "new",
3301
3322
  aliases: ["n"],
@@ -3330,8 +3351,8 @@ var newCommand = {
3330
3351
  return 1;
3331
3352
  }
3332
3353
  const interactive = !flagBool(ctx.flags, "no-interaction", false);
3333
- const target = resolve21(ctx.cwd, name);
3334
- if (existsSync6(target)) {
3354
+ const target = resolve22(ctx.cwd, name);
3355
+ if (existsSync7(target)) {
3335
3356
  logger.error(`Directory already exists: ${target}`);
3336
3357
  return 1;
3337
3358
  }
@@ -3356,21 +3377,21 @@ var newCommand = {
3356
3377
  default: "react"
3357
3378
  });
3358
3379
  const ssr = !flagBool(ctx.flags, "no-ssr", false);
3359
- mkdirSync4(resolve21(target, "app"), { recursive: true });
3380
+ mkdirSync4(resolve22(target, "app"), { recursive: true });
3360
3381
  if (view !== "none") {
3361
- mkdirSync4(resolve21(target, "resources/views"), { recursive: true });
3382
+ mkdirSync4(resolve22(target, "resources/views"), { recursive: true });
3362
3383
  }
3363
- mkdirSync4(resolve21(target, "public"), { recursive: true });
3364
- writeFileSync3(resolve21(target, "public/.gitkeep"), "");
3384
+ mkdirSync4(resolve22(target, "public"), { recursive: true });
3385
+ writeFileSync3(resolve22(target, "public/.gitkeep"), "");
3365
3386
  if (view !== "none") {
3366
- writeFileSync3(resolve21(target, "resources/views/welcome.html"), `<h1>Welcome to ${name}</h1>
3387
+ writeFileSync3(resolve22(target, "resources/views/welcome.html"), `<h1>Welcome to ${name}</h1>
3367
3388
  <p>This is a sample Rendu template.</p>
3368
3389
  <p>Founded <?= year ?>.</p>
3369
3390
  `);
3370
3391
  }
3371
- writeFileSync3(resolve21(target, ".env"), generateEnvFile());
3372
- writeFileSync3(resolve21(target, ".env.local"), generateEnvLocalFile());
3373
- writeFileSync3(resolve21(target, ".gitignore"), generateGitIgnore());
3392
+ writeFileSync3(resolve22(target, ".env"), generateEnvFile());
3393
+ writeFileSync3(resolve22(target, ".env.local"), generateEnvLocalFile());
3394
+ writeFileSync3(resolve22(target, ".gitignore"), generateGitIgnore());
3374
3395
  const code = render(templates.project["nx.config.ts"], {
3375
3396
  routing,
3376
3397
  view,
@@ -3382,7 +3403,7 @@ var newCommand = {
3382
3403
  inertiaSSR: ssr,
3383
3404
  inertiaVersion: "1.0.0"
3384
3405
  });
3385
- writeFileSync3(resolve21(target, "nx.config.ts"), code);
3406
+ writeFileSync3(resolve22(target, "nx.config.ts"), code);
3386
3407
  const deps = {
3387
3408
  "@nexusts/core": "*",
3388
3409
  "reflect-metadata": "^0.2.2",
@@ -3396,7 +3417,7 @@ var newCommand = {
3396
3417
  if (view !== "none") {
3397
3418
  deps["@nexusts/static"] = "*";
3398
3419
  }
3399
- writeFileSync3(resolve21(target, "package.json"), JSON.stringify({
3420
+ writeFileSync3(resolve22(target, "package.json"), JSON.stringify({
3400
3421
  name,
3401
3422
  version: "0.1.0",
3402
3423
  type: "module",
@@ -3409,7 +3430,7 @@ var newCommand = {
3409
3430
  },
3410
3431
  dependencies: deps
3411
3432
  }, null, 2));
3412
- writeFileSync3(resolve21(target, "tsconfig.json"), `{
3433
+ writeFileSync3(resolve22(target, "tsconfig.json"), `{
3413
3434
  "compilerOptions": {
3414
3435
  "target": "ES2022",
3415
3436
  "module": "ESNext",
@@ -3430,7 +3451,7 @@ const staticMiddleware = StaticModule.mount({ root: './public', prefix: '/static
3430
3451
  ` : "";
3431
3452
  const staticOption = hasView ? `
3432
3453
  middleware: [staticMiddleware],` : "";
3433
- writeFileSync3(resolve21(target, "app/main.ts"), `import 'reflect-metadata';
3454
+ writeFileSync3(resolve22(target, "app/main.ts"), `import 'reflect-metadata';
3434
3455
  import { Application } from '@nexusts/core';
3435
3456
  ${staticImport}import { AppModule } from './app.module.js';
3436
3457
 
@@ -3450,7 +3471,7 @@ console.log('[nexus] Listening on http://localhost:' + (process.env['PORT'] ?? 3
3450
3471
  connection: { filename: 'app.db' },
3451
3472
  logging: true,
3452
3473
  })` : "";
3453
- writeFileSync3(resolve21(target, "app/app.module.ts"), `${ormImport}import { Module } from '@nexusts/core';
3474
+ writeFileSync3(resolve22(target, "app/app.module.ts"), `${ormImport}import { Module } from '@nexusts/core';
3454
3475
  import { HomeController } from './controllers/home.controller.js';
3455
3476
 
3456
3477
  @Module({
@@ -3461,12 +3482,12 @@ ${ormBlock},
3461
3482
  })
3462
3483
  export class AppModule {}
3463
3484
  `);
3464
- mkdirSync4(resolve21(target, "app/controllers"), { recursive: true });
3485
+ mkdirSync4(resolve22(target, "app/controllers"), { recursive: true });
3465
3486
  const homeViewReturn = view !== "none" ? `{
3466
3487
  view: 'welcome.html',
3467
3488
  data: { year: new Date().getFullYear() },
3468
3489
  }` : `{ status: 200, body: { message: 'Hello from NexusTS!' } }`;
3469
- writeFileSync3(resolve21(target, "app/controllers/home.controller.ts"), `import { Controller, Get } from '@nexusts/core';
3490
+ writeFileSync3(resolve22(target, "app/controllers/home.controller.ts"), `import { Controller, Get } from '@nexusts/core';
3470
3491
 
3471
3492
  @Controller('/')
3472
3493
  export class HomeController {
@@ -3476,7 +3497,7 @@ export class HomeController {
3476
3497
  }
3477
3498
  }
3478
3499
  `);
3479
- writeFileSync3(resolve21(target, "README.md"), `# ${name}
3500
+ writeFileSync3(resolve22(target, "README.md"), `# ${name}
3480
3501
 
3481
3502
  A new Nexus project.
3482
3503
 
@@ -3557,8 +3578,8 @@ dist/
3557
3578
  var new_default = newCommand;
3558
3579
 
3559
3580
  // packages/cli/src/commands/config.ts
3560
- import { existsSync as existsSync7, readFileSync as readFileSync4, writeFileSync as writeFileSync4 } from "fs";
3561
- import { resolve as resolve22 } from "path";
3581
+ import { existsSync as existsSync8, readFileSync as readFileSync5, writeFileSync as writeFileSync4 } from "fs";
3582
+ import { resolve as resolve23 } from "path";
3562
3583
  var DEFAULT_VALUES = {
3563
3584
  routing: "nest",
3564
3585
  view: "rendu",
@@ -3572,9 +3593,9 @@ var DEFAULT_VALUES = {
3572
3593
  };
3573
3594
  function parseExistingConfig(path) {
3574
3595
  const out = { ...DEFAULT_VALUES };
3575
- if (!existsSync7(path))
3596
+ if (!existsSync8(path))
3576
3597
  return out;
3577
- const src = readFileSync4(path, "utf8");
3598
+ const src = readFileSync5(path, "utf8");
3578
3599
  const grab = (re) => {
3579
3600
  const m = src.match(re);
3580
3601
  return m?.[1];
@@ -3673,12 +3694,12 @@ var configCommand = {
3673
3694
  async run(ctx) {
3674
3695
  const interactive = !flagBool(ctx.flags, "no-interaction", false);
3675
3696
  const force = flagBool(ctx.flags, "force", false);
3676
- const target = resolve22(ctx.cwd, ctx.flags["target"] ?? ".");
3677
- if (!existsSync7(target)) {
3697
+ const target = resolve23(ctx.cwd, ctx.flags["target"] ?? ".");
3698
+ if (!existsSync8(target)) {
3678
3699
  logger.error(`Target directory does not exist: ${target}`);
3679
3700
  return 1;
3680
3701
  }
3681
- const nxConfigPath = resolve22(target, "nx.config.ts");
3702
+ const nxConfigPath = resolve23(target, "nx.config.ts");
3682
3703
  const values = parseExistingConfig(nxConfigPath);
3683
3704
  const flag = (k) => ctx.flags[k];
3684
3705
  const flagBoolStrict = (k, def) => flagBool(ctx.flags, k, def);
@@ -3702,7 +3723,7 @@ var configCommand = {
3702
3723
  if (flagBoolStrict("no-ssr", false))
3703
3724
  values.inertiaSSR = false;
3704
3725
  const anyFlag = Object.values(ctx.flags).some((v) => v !== undefined && v !== false);
3705
- if (interactive && !anyFlag && !existsSync7(nxConfigPath)) {
3726
+ if (interactive && !anyFlag && !existsSync8(nxConfigPath)) {
3706
3727
  values.routing = await select("Routing style", ["nest", "adonis", "functional"], {
3707
3728
  interactive,
3708
3729
  default: values.routing
@@ -3721,7 +3742,7 @@ var configCommand = {
3721
3742
  if (flag("db-url") === undefined && flag("db") !== undefined) {
3722
3743
  values.dbUrl = defaultDbUrl(values.dbDriver);
3723
3744
  }
3724
- const existed = existsSync7(nxConfigPath);
3745
+ const existed = existsSync8(nxConfigPath);
3725
3746
  if (existed && !force) {
3726
3747
  if (anyFlag) {
3727
3748
  writeNxConfig(target, values);
@@ -3733,18 +3754,18 @@ var configCommand = {
3733
3754
  writeNxConfig(target, values);
3734
3755
  logger.info(` + nx.config.ts`);
3735
3756
  }
3736
- const drizzleConfigPath = resolve22(target, "drizzle.config.ts");
3757
+ const drizzleConfigPath = resolve23(target, "drizzle.config.ts");
3737
3758
  if (values.orm === "drizzle") {
3738
3759
  const dialect = driverToDialect(values.dbDriver);
3739
3760
  const dbUrl = values.dbUrl;
3740
- const existedDrizzle = existsSync7(drizzleConfigPath);
3761
+ const existedDrizzle = existsSync8(drizzleConfigPath);
3741
3762
  if (existedDrizzle && !force && !anyFlag) {
3742
3763
  logger.info(` - drizzle.config.ts (unchanged; pass --force or a flag to update)`);
3743
3764
  } else {
3744
3765
  writeDrizzleConfig(target, { dialect, dbUrl });
3745
3766
  logger.info(` ${existedDrizzle ? "~" : "+"} drizzle.config.ts`);
3746
3767
  }
3747
- } else if (existsSync7(drizzleConfigPath)) {
3768
+ } else if (existsSync8(drizzleConfigPath)) {
3748
3769
  logger.info(` - drizzle.config.ts (left as-is; ORM is '${values.orm}', not 'drizzle')`);
3749
3770
  }
3750
3771
  logger.blank();
@@ -3761,29 +3782,43 @@ var configCommand = {
3761
3782
  };
3762
3783
  function writeNxConfig(target, values) {
3763
3784
  const code = render(templates.project["nx.config.ts"], values);
3764
- writeFileSync4(resolve22(target, "nx.config.ts"), code);
3785
+ writeFileSync4(resolve23(target, "nx.config.ts"), code);
3765
3786
  }
3766
3787
  function writeDrizzleConfig(target, values) {
3767
3788
  const code = render(templates.project["drizzle.config.ts"], values);
3768
- writeFileSync4(resolve22(target, "drizzle.config.ts"), code);
3789
+ writeFileSync4(resolve23(target, "drizzle.config.ts"), code);
3769
3790
  }
3770
3791
  var config_default = configCommand;
3771
3792
 
3772
3793
  // packages/cli/src/commands/repl.ts
3773
3794
  import {
3774
- existsSync as existsSync8,
3795
+ existsSync as existsSync9,
3775
3796
  mkdirSync as mkdirSync5,
3776
- readFileSync as readFileSync5,
3797
+ readFileSync as readFileSync6,
3777
3798
  writeFileSync as writeFileSync5
3778
3799
  } from "fs";
3779
- import { dirname as dirname3, resolve as resolve23 } from "path";
3800
+ import { dirname as dirname4, resolve as resolve24 } from "path";
3780
3801
  import * as readline from "readline";
3781
3802
  import * as vm from "vm";
3782
- var BANNER = `
3783
- \u256D\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256E
3784
- \u2502 NexusTS REPL \u2502
3785
- \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F
3786
- `;
3803
+ var BANNER = (() => {
3804
+ const W = 49;
3805
+ const dash = "\u2500".repeat(W);
3806
+ const ver = `v${VERSION}`;
3807
+ const verLen = ver.length;
3808
+ const TITLE = "NexusTS REPL";
3809
+ const HINT = "Type .help for available commands";
3810
+ const titleGap = " ".repeat(W - 2 - TITLE.length - verLen - 1);
3811
+ const hintGap = " ".repeat(W - 2 - HINT.length);
3812
+ const L = (s) => `\u2502${s}\u2502`;
3813
+ return [
3814
+ `\u256D${dash}\u256E`,
3815
+ L(` ${TITLE}${titleGap}${ver} `),
3816
+ L(" ".repeat(W)),
3817
+ L(` ${HINT}${hintGap}`),
3818
+ `\u2570${dash}\u256F`
3819
+ ].join(`
3820
+ `);
3821
+ })();
3787
3822
  var HELP = `
3788
3823
  Available commands:
3789
3824
  .help Show this help
@@ -3810,11 +3845,11 @@ Examples:
3810
3845
  > app.container.size
3811
3846
  `;
3812
3847
  var PRELOAD = [
3813
- ["db", "../../drizzle/drizzle.service.js", "DrizzleService"],
3814
- ["logger", "../../logger/logger.service.js", "LoggerService"],
3815
- ["cfg", "../../config/config.service.js", "ConfigService"],
3816
- ["cache", "../../cache/cache.service.js", "CacheService"],
3817
- ["events", "../../events/event.service.js", "EventService"]
3848
+ ["db", "@nexusts/drizzle", "DrizzleService"],
3849
+ ["logger", "@nexusts/logger", "Logger"],
3850
+ ["cfg", "@nexusts/config", "ConfigService"],
3851
+ ["cache", "@nexusts/cache", "CacheService"],
3852
+ ["events", "@nexusts/events", "EventService"]
3818
3853
  ];
3819
3854
  var replCommand = {
3820
3855
  name: "repl",
@@ -3844,11 +3879,11 @@ var replCommand = {
3844
3879
  async run(ctx) {
3845
3880
  const mod = ctx.flags["module"];
3846
3881
  const noBoot = Boolean(ctx.flags["no-boot"]);
3847
- const histPath = resolve23(ctx.cwd, ctx.flags["history"] ?? ".nx-repl-history");
3882
+ const histPath = resolve24(ctx.cwd, ctx.flags["history"] ?? ".nx-repl-history");
3848
3883
  const env = { console };
3849
3884
  if (!noBoot) {
3850
- const modPath = resolve23(ctx.cwd, mod ?? "app/app.module.ts");
3851
- if (!existsSync8(modPath)) {
3885
+ const modPath = resolve24(ctx.cwd, mod ?? "app/app.module.ts");
3886
+ if (!existsSync9(modPath)) {
3852
3887
  logger.error(`module not found: ${modPath}`);
3853
3888
  logger.info("pass --module <path> or --no-boot to skip booting");
3854
3889
  return 1;
@@ -4013,19 +4048,29 @@ async function preloadService(env, app, name, path, className) {
4013
4048
  try {
4014
4049
  const mod = await import(path);
4015
4050
  const ServiceClass = mod[className];
4016
- if (!ServiceClass)
4051
+ if (!ServiceClass) {
4052
+ logger.debug(`repl: ${className} not found in ${path}`);
4017
4053
  return;
4054
+ }
4018
4055
  const Token = ServiceClass.TOKEN ?? ServiceClass[`${className.toUpperCase()}_TOKEN`];
4019
- if (!Token)
4056
+ if (!Token) {
4057
+ logger.debug(`repl: ${className}.TOKEN not found`);
4020
4058
  return;
4059
+ }
4021
4060
  try {
4022
4061
  env[name] = app.container.resolve(Token);
4062
+ logger.debug(`repl: loaded ${name} (${className})`);
4023
4063
  } catch {
4024
4064
  try {
4025
4065
  env[name] = app.container.resolve(ServiceClass);
4026
- } catch {}
4066
+ logger.debug(`repl: loaded ${name} (${className}) via class`);
4067
+ } catch {
4068
+ logger.debug(`repl: ${name} (${className}) not registered in container`);
4069
+ }
4027
4070
  }
4028
- } catch {}
4071
+ } catch {
4072
+ logger.debug(`repl: ${path} not installed \u2014 skipping ${name}`);
4073
+ }
4029
4074
  }
4030
4075
  function listServices(container) {
4031
4076
  if (!container)
@@ -4118,10 +4163,10 @@ function formatError(e) {
4118
4163
  `) : e.message;
4119
4164
  }
4120
4165
  function loadHistory(path) {
4121
- if (!existsSync8(path))
4166
+ if (!existsSync9(path))
4122
4167
  return [];
4123
4168
  try {
4124
- return readFileSync5(path, "utf-8").split(`
4169
+ return readFileSync6(path, "utf-8").split(`
4125
4170
  `).filter(Boolean);
4126
4171
  } catch {
4127
4172
  return [];
@@ -4129,8 +4174,8 @@ function loadHistory(path) {
4129
4174
  }
4130
4175
  function saveHistoryFile(path, history) {
4131
4176
  try {
4132
- const dir = dirname3(path);
4133
- if (!existsSync8(dir))
4177
+ const dir = dirname4(path);
4178
+ if (!existsSync9(dir))
4134
4179
  mkdirSync5(dir, { recursive: true });
4135
4180
  writeFileSync5(path, history.slice(-1000).join(`
4136
4181
  `));
@@ -4140,7 +4185,7 @@ var repl_default = replCommand;
4140
4185
 
4141
4186
  // packages/cli/src/commands/route-list.ts
4142
4187
  import { readdirSync, statSync as statSync2 } from "fs";
4143
- import { resolve as resolve24 } from "path";
4188
+ import { resolve as resolve25 } from "path";
4144
4189
  var routeListCommand = {
4145
4190
  name: "route:list",
4146
4191
  aliases: ["routes", "route-list"],
@@ -4150,7 +4195,7 @@ var routeListCommand = {
4150
4195
  { name: "format", description: "Output format: table (default) | json" }
4151
4196
  ],
4152
4197
  async run(ctx) {
4153
- const controllersDir = resolve24(ctx.cwd, ctx.config.paths.controllers);
4198
+ const controllersDir = resolve25(ctx.cwd, ctx.config.paths.controllers);
4154
4199
  try {
4155
4200
  statSync2(controllersDir);
4156
4201
  } catch {
@@ -4164,7 +4209,7 @@ var routeListCommand = {
4164
4209
  }
4165
4210
  const routes = [];
4166
4211
  for (const file of files) {
4167
- const fullPath = resolve24(controllersDir, file);
4212
+ const fullPath = resolve25(controllersDir, file);
4168
4213
  try {
4169
4214
  const mod = await import(`${fullPath}?t=${Date.now()}`);
4170
4215
  for (const exportName of Object.keys(mod)) {
@@ -4364,5 +4409,5 @@ main().then((code) => process.exit(code)).catch((err) => {
4364
4409
  process.exit(1);
4365
4410
  });
4366
4411
 
4367
- //# debugId=CB0A9796F624CF2164756E2164756E21
4412
+ //# debugId=9D68E94AB6C5D92664756E2164756E21
4368
4413
  //# sourceMappingURL=index.js.map