@nexusts/cli 0.7.3 → 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/core/index.d.ts +1 -0
- package/dist/core/version.d.ts +1 -0
- package/dist/index.js +173 -131
- package/dist/index.js.map +6 -5
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
19
19
|
var __require = import.meta.require;
|
|
20
20
|
|
|
21
21
|
// packages/cli/src/commands/info.ts
|
|
22
|
-
import { resolve as
|
|
22
|
+
import { resolve as resolve4 } from "path";
|
|
23
23
|
|
|
24
24
|
// packages/cli/src/core/args.ts
|
|
25
25
|
var LONG_RE = /^--([^=]+)(?:=(.*))?$/;
|
|
@@ -493,6 +493,24 @@ function singularize(s) {
|
|
|
493
493
|
return s.slice(0, -1);
|
|
494
494
|
return s;
|
|
495
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();
|
|
496
514
|
// packages/cli/src/commands/info.ts
|
|
497
515
|
var infoCommand = {
|
|
498
516
|
name: "info",
|
|
@@ -544,7 +562,7 @@ var infoCommand = {
|
|
|
544
562
|
logger.blank();
|
|
545
563
|
logger.info(colors.bold("Working directory"));
|
|
546
564
|
logger.blank();
|
|
547
|
-
logger.info(` ${
|
|
565
|
+
logger.info(` ${resolve4(ctx.cwd)}`);
|
|
548
566
|
logger.blank();
|
|
549
567
|
return 0;
|
|
550
568
|
}
|
|
@@ -552,8 +570,8 @@ var infoCommand = {
|
|
|
552
570
|
var info_default = infoCommand;
|
|
553
571
|
|
|
554
572
|
// packages/cli/src/commands/init.ts
|
|
555
|
-
import { existsSync as
|
|
556
|
-
import { resolve as
|
|
573
|
+
import { existsSync as existsSync4, mkdirSync as mkdirSync2, readFileSync as readFileSync4, writeFileSync as writeFileSync2 } from "fs";
|
|
574
|
+
import { resolve as resolve5 } from "path";
|
|
557
575
|
|
|
558
576
|
// packages/cli/src/templates/controller/adonis.ts
|
|
559
577
|
var adonis_default = `
|
|
@@ -1181,8 +1199,8 @@ var initCommand = {
|
|
|
1181
1199
|
async run(ctx) {
|
|
1182
1200
|
const interactive = !flagBool(ctx.flags, "no-interaction", false);
|
|
1183
1201
|
const force = flagBool(ctx.flags, "force", false);
|
|
1184
|
-
const target =
|
|
1185
|
-
if (!
|
|
1202
|
+
const target = resolve5(ctx.cwd, ctx.flags["target"] ?? ".");
|
|
1203
|
+
if (!existsSync4(target)) {
|
|
1186
1204
|
logger.error(`Target directory does not exist: ${target}`);
|
|
1187
1205
|
logger.info(`Run \`nx new <name>\` to create a fresh project, or \`mkdir -p ${target}\` first.`);
|
|
1188
1206
|
return 1;
|
|
@@ -1225,14 +1243,14 @@ var initCommand = {
|
|
|
1225
1243
|
const created = [];
|
|
1226
1244
|
const skipped = [];
|
|
1227
1245
|
const merged = [];
|
|
1228
|
-
mkdirSync2(
|
|
1229
|
-
mkdirSync2(
|
|
1246
|
+
mkdirSync2(resolve5(target, "app/controllers"), { recursive: true });
|
|
1247
|
+
mkdirSync2(resolve5(target, "public"), { recursive: true });
|
|
1230
1248
|
if (view !== "none") {
|
|
1231
|
-
mkdirSync2(
|
|
1249
|
+
mkdirSync2(resolve5(target, "resources/views"), { recursive: true });
|
|
1232
1250
|
}
|
|
1233
1251
|
for (const entry of plan) {
|
|
1234
|
-
const abs =
|
|
1235
|
-
const exists =
|
|
1252
|
+
const abs = resolve5(target, entry.path);
|
|
1253
|
+
const exists = existsSync4(abs);
|
|
1236
1254
|
if (entry.mode === "merge-pkg") {
|
|
1237
1255
|
const coreDeps = {
|
|
1238
1256
|
"@nexusts/core": "*",
|
|
@@ -1490,7 +1508,7 @@ function defaultTsconfig() {
|
|
|
1490
1508
|
`;
|
|
1491
1509
|
}
|
|
1492
1510
|
function mergePackageJson(path, additions) {
|
|
1493
|
-
const raw =
|
|
1511
|
+
const raw = readFileSync4(path, "utf8");
|
|
1494
1512
|
const pkg = parseJsonLoose(raw);
|
|
1495
1513
|
let changed = false;
|
|
1496
1514
|
if (!pkg["type"]) {
|
|
@@ -1532,7 +1550,7 @@ function mergePackageJson(path, additions) {
|
|
|
1532
1550
|
}
|
|
1533
1551
|
}
|
|
1534
1552
|
function mergeTsconfig(path, additions) {
|
|
1535
|
-
const raw =
|
|
1553
|
+
const raw = readFileSync4(path, "utf8");
|
|
1536
1554
|
const cfg = parseJsonLoose(raw);
|
|
1537
1555
|
const co = cfg.compilerOptions ?? {};
|
|
1538
1556
|
let changed = false;
|
|
@@ -1561,7 +1579,7 @@ function mergeTsconfig(path, additions) {
|
|
|
1561
1579
|
var init_default = initCommand;
|
|
1562
1580
|
|
|
1563
1581
|
// packages/cli/src/commands/make-auth.ts
|
|
1564
|
-
import { resolve as
|
|
1582
|
+
import { resolve as resolve6 } from "path";
|
|
1565
1583
|
var AUTH_INSTANCE_TEMPLATE = `/**
|
|
1566
1584
|
* Better-auth instance \u2014 generated by \`nx make:auth\`.
|
|
1567
1585
|
*
|
|
@@ -1676,7 +1694,7 @@ var makeAuthCommand = {
|
|
|
1676
1694
|
passkeyRpId: rpId,
|
|
1677
1695
|
passkeyOrigin: Array.isArray(origin) ? origin.join(",") : origin
|
|
1678
1696
|
});
|
|
1679
|
-
const authOut =
|
|
1697
|
+
const authOut = resolve6(ctx.cwd, "app/auth/auth.ts");
|
|
1680
1698
|
if (writeFile(authOut, authCode)) {
|
|
1681
1699
|
logger.success(`created ${authOut}`);
|
|
1682
1700
|
} else {
|
|
@@ -1686,7 +1704,7 @@ var makeAuthCommand = {
|
|
|
1686
1704
|
providers: providers.length > 0,
|
|
1687
1705
|
entries
|
|
1688
1706
|
});
|
|
1689
|
-
const envOut =
|
|
1707
|
+
const envOut = resolve6(ctx.cwd, ".env.example");
|
|
1690
1708
|
if (writeFile(envOut, envCode, { skipIfExists: true })) {
|
|
1691
1709
|
logger.success(`created ${envOut}`);
|
|
1692
1710
|
} else {
|
|
@@ -1712,7 +1730,7 @@ var makeAuthCommand = {
|
|
|
1712
1730
|
var make_auth_default = makeAuthCommand;
|
|
1713
1731
|
|
|
1714
1732
|
// packages/cli/src/commands/make-controller.ts
|
|
1715
|
-
import { resolve as
|
|
1733
|
+
import { resolve as resolve7 } from "path";
|
|
1716
1734
|
var makeControllerCommand = {
|
|
1717
1735
|
name: "make:controller",
|
|
1718
1736
|
aliases: ["mc", "make-controller"],
|
|
@@ -1758,7 +1776,7 @@ var makeControllerCommand = {
|
|
|
1758
1776
|
service: serviceName,
|
|
1759
1777
|
serviceCamel
|
|
1760
1778
|
}).replace(/import .*\n/g, skipService ? (m) => m.includes("services/") ? "" : m : (m) => m);
|
|
1761
|
-
const out =
|
|
1779
|
+
const out = resolve7(ctx.cwd, ctx.config.paths.controllers, `${variants.kebab}.controller.ts`);
|
|
1762
1780
|
const ok = writeFile(out, code, { skipIfExists: false });
|
|
1763
1781
|
if (!ok) {
|
|
1764
1782
|
logger.error(`Refusing to overwrite existing file: ${out}`);
|
|
@@ -1773,7 +1791,7 @@ var make_controller_default = makeControllerCommand;
|
|
|
1773
1791
|
|
|
1774
1792
|
// packages/cli/src/commands/make-crud.ts
|
|
1775
1793
|
import { mkdirSync as mkdirSync3 } from "fs";
|
|
1776
|
-
import { dirname as
|
|
1794
|
+
import { dirname as dirname3, resolve as resolve8 } from "path";
|
|
1777
1795
|
|
|
1778
1796
|
// packages/cli/src/templates/model/drizzle-dialect.ts
|
|
1779
1797
|
function renderDrizzleDialect(dialect) {
|
|
@@ -1948,7 +1966,7 @@ var makeCrudCommand = {
|
|
|
1948
1966
|
viewShowComponent,
|
|
1949
1967
|
hasInertia
|
|
1950
1968
|
});
|
|
1951
|
-
const out =
|
|
1969
|
+
const out = resolve8(ctx.cwd, ctx.config.paths.controllers, `${variants.kebab}.controller.ts`);
|
|
1952
1970
|
if (!writeFile(out, code, { skipIfExists: true })) {
|
|
1953
1971
|
logger.warn(`skipped (exists): ${out}`);
|
|
1954
1972
|
} else {
|
|
@@ -1966,7 +1984,7 @@ var makeCrudCommand = {
|
|
|
1966
1984
|
repository,
|
|
1967
1985
|
repositoryCamel: variants.camel + "Repository"
|
|
1968
1986
|
});
|
|
1969
|
-
const out =
|
|
1987
|
+
const out = resolve8(ctx.cwd, ctx.config.paths.services, `${variants.kebab}.service.ts`);
|
|
1970
1988
|
if (!writeFile(out, code, { skipIfExists: true })) {
|
|
1971
1989
|
logger.warn(`skipped (exists): ${out}`);
|
|
1972
1990
|
} else {
|
|
@@ -2000,7 +2018,7 @@ var makeCrudCommand = {
|
|
|
2000
2018
|
prismaBlock: ""
|
|
2001
2019
|
});
|
|
2002
2020
|
}
|
|
2003
|
-
const out =
|
|
2021
|
+
const out = resolve8(ctx.cwd, ctx.config.paths.models, `${variants.kebab}.model.ts`);
|
|
2004
2022
|
if (!writeFile(out, code, { skipIfExists: true })) {
|
|
2005
2023
|
logger.warn(`skipped (exists): ${out}`);
|
|
2006
2024
|
} else {
|
|
@@ -2016,8 +2034,8 @@ var makeCrudCommand = {
|
|
|
2016
2034
|
tableName,
|
|
2017
2035
|
repository
|
|
2018
2036
|
});
|
|
2019
|
-
const repoOut =
|
|
2020
|
-
mkdirSync3(
|
|
2037
|
+
const repoOut = resolve8(ctx.cwd, `${ctx.config.paths.app}/repositories`, `${variants.kebab}.repository.ts`);
|
|
2038
|
+
mkdirSync3(dirname3(repoOut), { recursive: true });
|
|
2021
2039
|
if (!writeFile(repoOut, repoCode, { skipIfExists: true })) {
|
|
2022
2040
|
logger.warn(`skipped (exists): ${repoOut}`);
|
|
2023
2041
|
} else {
|
|
@@ -2031,7 +2049,7 @@ var makeCrudCommand = {
|
|
|
2031
2049
|
camel: variants.camel,
|
|
2032
2050
|
kebab: variants.kebab
|
|
2033
2051
|
});
|
|
2034
|
-
const out =
|
|
2052
|
+
const out = resolve8(ctx.cwd, ctx.config.paths.dto, `${variants.kebab}.dto.ts`);
|
|
2035
2053
|
if (!writeFile(out, code, { skipIfExists: true })) {
|
|
2036
2054
|
logger.warn(`skipped (exists): ${out}`);
|
|
2037
2055
|
} else {
|
|
@@ -2049,7 +2067,7 @@ var makeCrudCommand = {
|
|
|
2049
2067
|
repository,
|
|
2050
2068
|
hasRepo: !noRepo
|
|
2051
2069
|
});
|
|
2052
|
-
const out =
|
|
2070
|
+
const out = resolve8(ctx.cwd, ctx.config.paths.modules, `${variants.kebab}.module.ts`);
|
|
2053
2071
|
if (!writeFile(out, code, { skipIfExists: true })) {
|
|
2054
2072
|
logger.warn(`skipped (exists): ${out}`);
|
|
2055
2073
|
} else {
|
|
@@ -2065,7 +2083,7 @@ var makeCrudCommand = {
|
|
|
2065
2083
|
controller,
|
|
2066
2084
|
service
|
|
2067
2085
|
});
|
|
2068
|
-
const out =
|
|
2086
|
+
const out = resolve8(ctx.cwd, "tests", `${variants.kebab}.test.ts`);
|
|
2069
2087
|
if (!writeFile(out, code, { skipIfExists: true })) {
|
|
2070
2088
|
logger.warn(`skipped (exists): ${out}`);
|
|
2071
2089
|
} else {
|
|
@@ -2101,7 +2119,7 @@ function renderDrizzleColumns(dialect) {
|
|
|
2101
2119
|
var make_crud_default = makeCrudCommand;
|
|
2102
2120
|
|
|
2103
2121
|
// packages/cli/src/commands/make-listener.ts
|
|
2104
|
-
import { resolve as
|
|
2122
|
+
import { resolve as resolve9 } from "path";
|
|
2105
2123
|
var LISTENER_TEMPLATE = `
|
|
2106
2124
|
import { Inject, Injectable } from '@nexusts/core';
|
|
2107
2125
|
import { EventService, OnEvent } from '@nexusts/events';
|
|
@@ -2152,7 +2170,7 @@ var makeListenerCommand = {
|
|
|
2152
2170
|
name: variants.pascal,
|
|
2153
2171
|
kebab: variants.kebab
|
|
2154
2172
|
});
|
|
2155
|
-
const out =
|
|
2173
|
+
const out = resolve9(ctx.cwd, "app/events/listeners", `${variants.kebab}.listener.ts`);
|
|
2156
2174
|
if (writeFile(out, code, { skipIfExists: true })) {
|
|
2157
2175
|
logger.success(`created ${out}`);
|
|
2158
2176
|
} else {
|
|
@@ -2172,7 +2190,7 @@ var makeListenerCommand = {
|
|
|
2172
2190
|
var make_listener_default = makeListenerCommand;
|
|
2173
2191
|
|
|
2174
2192
|
// packages/cli/src/commands/make-middleware.ts
|
|
2175
|
-
import { resolve as
|
|
2193
|
+
import { resolve as resolve10 } from "path";
|
|
2176
2194
|
var makeMiddlewareCommand = {
|
|
2177
2195
|
name: "make:middleware",
|
|
2178
2196
|
aliases: ["mwm", "make-middleware"],
|
|
@@ -2189,7 +2207,7 @@ var makeMiddlewareCommand = {
|
|
|
2189
2207
|
const code = render(templates.middleware, {
|
|
2190
2208
|
name: variants.pascal
|
|
2191
2209
|
});
|
|
2192
|
-
const out =
|
|
2210
|
+
const out = resolve10(ctx.cwd, ctx.config.paths.middleware, `${variants.kebab}.middleware.ts`);
|
|
2193
2211
|
writeFile(out, code);
|
|
2194
2212
|
logger.success(`created ${out}`);
|
|
2195
2213
|
logger.finger(`register with: app.server.app.use('*', new ${variants.pascal}Middleware().handle)`);
|
|
@@ -2199,7 +2217,7 @@ var makeMiddlewareCommand = {
|
|
|
2199
2217
|
var make_middleware_default = makeMiddlewareCommand;
|
|
2200
2218
|
|
|
2201
2219
|
// packages/cli/src/commands/make-migration.ts
|
|
2202
|
-
import { resolve as
|
|
2220
|
+
import { resolve as resolve11 } from "path";
|
|
2203
2221
|
var makeMigrationCommand = {
|
|
2204
2222
|
name: "make:migration",
|
|
2205
2223
|
aliases: ["mkm", "make-migration"],
|
|
@@ -2271,7 +2289,7 @@ var makeMigrationCommand = {
|
|
|
2271
2289
|
return 1;
|
|
2272
2290
|
}
|
|
2273
2291
|
const filename = `${formatTimestamp(new Date)}_${variants.snake}.${extension}`;
|
|
2274
|
-
const out =
|
|
2292
|
+
const out = resolve11(ctx.cwd, ctx.config.paths.migrations, filename);
|
|
2275
2293
|
writeFile(out, code);
|
|
2276
2294
|
logger.success(`created ${out}`);
|
|
2277
2295
|
if (isDrizzle) {
|
|
@@ -2359,7 +2377,7 @@ function formatTimestamp(d) {
|
|
|
2359
2377
|
var make_migration_default = makeMigrationCommand;
|
|
2360
2378
|
|
|
2361
2379
|
// packages/cli/src/commands/make-model.ts
|
|
2362
|
-
import { resolve as
|
|
2380
|
+
import { resolve as resolve12 } from "path";
|
|
2363
2381
|
var makeModelCommand = {
|
|
2364
2382
|
name: "make:model",
|
|
2365
2383
|
aliases: ["mmodel", "make-model"],
|
|
@@ -2431,7 +2449,7 @@ var makeModelCommand = {
|
|
|
2431
2449
|
prismaBlock
|
|
2432
2450
|
});
|
|
2433
2451
|
}
|
|
2434
|
-
const out =
|
|
2452
|
+
const out = resolve12(ctx.cwd, ctx.config.paths.models, `${variants.kebab}.model.ts`);
|
|
2435
2453
|
writeFile(out, code);
|
|
2436
2454
|
logger.success(`created ${out}`);
|
|
2437
2455
|
logger.finger(`run \`nx make:migration create_${tableName}_table\` to scaffold a migration.`);
|
|
@@ -2490,7 +2508,7 @@ function capitalize(s) {
|
|
|
2490
2508
|
var make_model_default = makeModelCommand;
|
|
2491
2509
|
|
|
2492
2510
|
// packages/cli/src/commands/make-module.ts
|
|
2493
|
-
import { resolve as
|
|
2511
|
+
import { resolve as resolve13 } from "path";
|
|
2494
2512
|
var makeModuleCommand = {
|
|
2495
2513
|
name: "make:module",
|
|
2496
2514
|
aliases: ["mm", "make-module"],
|
|
@@ -2524,7 +2542,7 @@ var makeModuleCommand = {
|
|
|
2524
2542
|
hasService,
|
|
2525
2543
|
hasRepo
|
|
2526
2544
|
});
|
|
2527
|
-
const out =
|
|
2545
|
+
const out = resolve13(ctx.cwd, ctx.config.paths.modules, `${variants.kebab}.module.ts`);
|
|
2528
2546
|
writeFile(out, code);
|
|
2529
2547
|
logger.success(`created ${out}`);
|
|
2530
2548
|
logger.finger(`add ${variants.pascal}Module to AppModule.imports.`);
|
|
@@ -2534,7 +2552,7 @@ var makeModuleCommand = {
|
|
|
2534
2552
|
var make_module_default = makeModuleCommand;
|
|
2535
2553
|
|
|
2536
2554
|
// packages/cli/src/commands/make-queue.ts
|
|
2537
|
-
import { resolve as
|
|
2555
|
+
import { resolve as resolve14 } from "path";
|
|
2538
2556
|
var WORKER_TEMPLATE = `
|
|
2539
2557
|
import { Inject, Injectable } from '@nexusts/core';
|
|
2540
2558
|
import { QueueService, OnQueueReady } from '@nexusts/queue';
|
|
@@ -2662,7 +2680,7 @@ var makeQueueCommand = {
|
|
|
2662
2680
|
name: variants.pascal,
|
|
2663
2681
|
kebab: variants.kebab
|
|
2664
2682
|
});
|
|
2665
|
-
const out =
|
|
2683
|
+
const out = resolve14(ctx.cwd, "app/queue/workers", `${variants.kebab}.worker.ts`);
|
|
2666
2684
|
if (writeFile(out, code, { skipIfExists: true })) {
|
|
2667
2685
|
logger.success(`created ${out}`);
|
|
2668
2686
|
} else {
|
|
@@ -2674,7 +2692,7 @@ var makeQueueCommand = {
|
|
|
2674
2692
|
name: variants.pascal,
|
|
2675
2693
|
kebab: variants.kebab
|
|
2676
2694
|
});
|
|
2677
|
-
const out =
|
|
2695
|
+
const out = resolve14(ctx.cwd, "app/queue/jobs", `${variants.kebab}.job.ts`);
|
|
2678
2696
|
if (writeFile(out, code, { skipIfExists: true })) {
|
|
2679
2697
|
logger.success(`created ${out}`);
|
|
2680
2698
|
} else {
|
|
@@ -2697,7 +2715,7 @@ var makeQueueCommand = {
|
|
|
2697
2715
|
var make_queue_default = makeQueueCommand;
|
|
2698
2716
|
|
|
2699
2717
|
// packages/cli/src/commands/make-schedule.ts
|
|
2700
|
-
import { resolve as
|
|
2718
|
+
import { resolve as resolve15 } from "path";
|
|
2701
2719
|
var TASK_TEMPLATE = `
|
|
2702
2720
|
import { Injectable } from '@nexusts/core';
|
|
2703
2721
|
import { Cron, Interval, Timeout } from '@nexusts/schedule';
|
|
@@ -2741,7 +2759,7 @@ var makeScheduleCommand = {
|
|
|
2741
2759
|
name: variants.pascal,
|
|
2742
2760
|
kebab: variants.kebab
|
|
2743
2761
|
});
|
|
2744
|
-
const out =
|
|
2762
|
+
const out = resolve15(ctx.cwd, "app/schedule/tasks", `${variants.kebab}.task.ts`);
|
|
2745
2763
|
if (writeFile(out, code, { skipIfExists: true })) {
|
|
2746
2764
|
logger.success(`created ${out}`);
|
|
2747
2765
|
} else {
|
|
@@ -2759,7 +2777,7 @@ var makeScheduleCommand = {
|
|
|
2759
2777
|
var make_schedule_default = makeScheduleCommand;
|
|
2760
2778
|
|
|
2761
2779
|
// packages/cli/src/commands/make-service.ts
|
|
2762
|
-
import { resolve as
|
|
2780
|
+
import { resolve as resolve16 } from "path";
|
|
2763
2781
|
var makeServiceCommand = {
|
|
2764
2782
|
name: "make:service",
|
|
2765
2783
|
aliases: ["ms", "make-service"],
|
|
@@ -2790,7 +2808,7 @@ var makeServiceCommand = {
|
|
|
2790
2808
|
repository,
|
|
2791
2809
|
repositoryCamel
|
|
2792
2810
|
});
|
|
2793
|
-
const out =
|
|
2811
|
+
const out = resolve16(ctx.cwd, ctx.config.paths.services, `${variants.kebab}.service.ts`);
|
|
2794
2812
|
writeFile(out, code);
|
|
2795
2813
|
logger.success(`created ${out}`);
|
|
2796
2814
|
return 0;
|
|
@@ -2799,7 +2817,7 @@ var makeServiceCommand = {
|
|
|
2799
2817
|
var make_service_default = makeServiceCommand;
|
|
2800
2818
|
|
|
2801
2819
|
// packages/cli/src/commands/make-session.ts
|
|
2802
|
-
import { resolve as
|
|
2820
|
+
import { resolve as resolve17 } from "path";
|
|
2803
2821
|
var SESSION_TEMPLATE = `
|
|
2804
2822
|
import { Inject, Injectable } from '@nexusts/core';
|
|
2805
2823
|
import { SessionService } from '@nexusts/session';
|
|
@@ -2861,7 +2879,7 @@ var makeSessionCommand = {
|
|
|
2861
2879
|
name: variants.pascal,
|
|
2862
2880
|
kebab: variants.kebab
|
|
2863
2881
|
});
|
|
2864
|
-
const out =
|
|
2882
|
+
const out = resolve17(ctx.cwd, "app/session/services", `${variants.kebab}.session.ts`);
|
|
2865
2883
|
if (writeFile(out, code, { skipIfExists: true })) {
|
|
2866
2884
|
logger.success(`created ${out}`);
|
|
2867
2885
|
} else {
|
|
@@ -2879,7 +2897,7 @@ var makeSessionCommand = {
|
|
|
2879
2897
|
var make_session_default = makeSessionCommand;
|
|
2880
2898
|
|
|
2881
2899
|
// packages/cli/src/commands/make-validator.ts
|
|
2882
|
-
import { resolve as
|
|
2900
|
+
import { resolve as resolve18 } from "path";
|
|
2883
2901
|
var makeValidatorCommand = {
|
|
2884
2902
|
name: "make:validator",
|
|
2885
2903
|
aliases: ["mv", "make-validator"],
|
|
@@ -2896,7 +2914,7 @@ var makeValidatorCommand = {
|
|
|
2896
2914
|
const code = render(templates.validator, {
|
|
2897
2915
|
name: variants.pascal
|
|
2898
2916
|
});
|
|
2899
|
-
const out =
|
|
2917
|
+
const out = resolve18(ctx.cwd, ctx.config.paths.dto, `${variants.kebab}.dto.ts`);
|
|
2900
2918
|
writeFile(out, code);
|
|
2901
2919
|
logger.success(`created ${out}`);
|
|
2902
2920
|
return 0;
|
|
@@ -2906,8 +2924,8 @@ var make_validator_default = makeValidatorCommand;
|
|
|
2906
2924
|
|
|
2907
2925
|
// packages/cli/src/commands/db-migrate.ts
|
|
2908
2926
|
import { spawn } from "child_process";
|
|
2909
|
-
import { existsSync as
|
|
2910
|
-
import { resolve as
|
|
2927
|
+
import { existsSync as existsSync5 } from "fs";
|
|
2928
|
+
import { resolve as resolve19 } from "path";
|
|
2911
2929
|
var dbMigrateCommand = {
|
|
2912
2930
|
name: "db:migrate",
|
|
2913
2931
|
aliases: ["db:m", "migrate"],
|
|
@@ -2942,15 +2960,15 @@ var dbMigrateCommand = {
|
|
|
2942
2960
|
}
|
|
2943
2961
|
],
|
|
2944
2962
|
async run(ctx) {
|
|
2945
|
-
const folder = ctx.flags["folder"] ??
|
|
2963
|
+
const folder = ctx.flags["folder"] ?? resolve19(ctx.cwd, ctx.config.paths.migrations);
|
|
2946
2964
|
const dialect = ctx.flags["dialect"] ?? ctx.config.dialect ?? "bun-sqlite";
|
|
2947
|
-
const configPath = ctx.flags["config"] ??
|
|
2965
|
+
const configPath = ctx.flags["config"] ?? resolve19(ctx.cwd, "drizzle.config.ts");
|
|
2948
2966
|
const wantStatus = Boolean(ctx.flags["status"]);
|
|
2949
2967
|
const generateName = ctx.flags["generate"];
|
|
2950
2968
|
if (generateName) {
|
|
2951
2969
|
return runDrizzleKit(ctx.cwd, [
|
|
2952
2970
|
"generate",
|
|
2953
|
-
...
|
|
2971
|
+
...existsSync5(configPath) ? [`--config=${configPath}`] : [],
|
|
2954
2972
|
"--name",
|
|
2955
2973
|
generateName
|
|
2956
2974
|
]);
|
|
@@ -2960,7 +2978,7 @@ var dbMigrateCommand = {
|
|
|
2960
2978
|
}
|
|
2961
2979
|
return runDrizzleKit(ctx.cwd, [
|
|
2962
2980
|
"migrate",
|
|
2963
|
-
...
|
|
2981
|
+
...existsSync5(configPath) ? [`--config=${configPath}`] : []
|
|
2964
2982
|
]);
|
|
2965
2983
|
}
|
|
2966
2984
|
};
|
|
@@ -2981,7 +2999,7 @@ function runDrizzleKit(cwd, args2) {
|
|
|
2981
2999
|
});
|
|
2982
3000
|
}
|
|
2983
3001
|
async function runStatus(cwd, folder, dialect, configUrl = "") {
|
|
2984
|
-
if (!
|
|
3002
|
+
if (!existsSync5(folder)) {
|
|
2985
3003
|
logger.warn(`migrations folder not found: ${folder}`);
|
|
2986
3004
|
return 0;
|
|
2987
3005
|
}
|
|
@@ -3005,7 +3023,7 @@ const applied = await svc.appliedMigrations();
|
|
|
3005
3023
|
console.log(JSON.stringify({ total: applied.length, applied }, null, 2));
|
|
3006
3024
|
await svc.close();
|
|
3007
3025
|
`;
|
|
3008
|
-
const tmpFile =
|
|
3026
|
+
const tmpFile = resolve19(cwd, ".nx-migrate-status.mjs");
|
|
3009
3027
|
await import("fs/promises").then((m) => m.writeFile(tmpFile, script, "utf-8"));
|
|
3010
3028
|
try {
|
|
3011
3029
|
const code = await new Promise((resP) => {
|
|
@@ -3029,7 +3047,7 @@ function readEnvUrl(dialect) {
|
|
|
3029
3047
|
var db_migrate_default = dbMigrateCommand;
|
|
3030
3048
|
|
|
3031
3049
|
// packages/cli/src/commands/db-generate.ts
|
|
3032
|
-
import { resolve as
|
|
3050
|
+
import { resolve as resolve20 } from "path";
|
|
3033
3051
|
var dbGenerateCommand = {
|
|
3034
3052
|
name: "db:generate",
|
|
3035
3053
|
aliases: ["db:g", "db-generate", "generate-migration"],
|
|
@@ -3062,7 +3080,7 @@ var dbGenerateCommand = {
|
|
|
3062
3080
|
logger.info(`Generating raw SQL migration: ${name} (dialect=${dialect})`);
|
|
3063
3081
|
return runSqlTemplate(ctx.cwd, name, dialect);
|
|
3064
3082
|
}
|
|
3065
|
-
const configPath =
|
|
3083
|
+
const configPath = resolve20(ctx.cwd, "drizzle.config.ts");
|
|
3066
3084
|
const args2 = ["generate", "--config", configPath];
|
|
3067
3085
|
if (name)
|
|
3068
3086
|
args2.push("--name", name);
|
|
@@ -3096,9 +3114,9 @@ var db_generate_default = dbGenerateCommand;
|
|
|
3096
3114
|
|
|
3097
3115
|
// packages/cli/src/commands/db-seed.ts
|
|
3098
3116
|
import { spawn as spawn2 } from "child_process";
|
|
3099
|
-
import { existsSync as
|
|
3117
|
+
import { existsSync as existsSync6 } from "fs";
|
|
3100
3118
|
import { mkdir, readdir, writeFile as writeFile2, unlink } from "fs/promises";
|
|
3101
|
-
import { resolve as
|
|
3119
|
+
import { resolve as resolve21 } from "path";
|
|
3102
3120
|
var SEED_TEMPLATE = `/**
|
|
3103
3121
|
* Seed: {name}
|
|
3104
3122
|
*
|
|
@@ -3159,7 +3177,7 @@ var dbSeedCommand = {
|
|
|
3159
3177
|
}
|
|
3160
3178
|
],
|
|
3161
3179
|
async run(ctx) {
|
|
3162
|
-
const folder =
|
|
3180
|
+
const folder = resolve21(ctx.cwd, ctx.flags["folder"] ?? ctx.config.paths?.seeds ?? "db/seeds");
|
|
3163
3181
|
const dialect = ctx.flags["dialect"] ?? ctx.config.dialect ?? "bun-sqlite";
|
|
3164
3182
|
const createName = ctx.flags["create"];
|
|
3165
3183
|
const fileName = ctx.flags["file"];
|
|
@@ -3167,10 +3185,10 @@ var dbSeedCommand = {
|
|
|
3167
3185
|
if (createName) {
|
|
3168
3186
|
return await createSeedFile(folder, createName);
|
|
3169
3187
|
}
|
|
3170
|
-
if (!
|
|
3188
|
+
if (!existsSync6(folder)) {
|
|
3171
3189
|
logger.info(`creating empty seeds folder at ${folder}`);
|
|
3172
3190
|
await mkdir(folder, { recursive: true });
|
|
3173
|
-
await writeFile2(
|
|
3191
|
+
await writeFile2(resolve21(folder, "_README.ts"), `// Seed files go here. Run with: nx db:seed
|
|
3174
3192
|
`, "utf-8");
|
|
3175
3193
|
return 0;
|
|
3176
3194
|
}
|
|
@@ -3194,7 +3212,7 @@ var dbSeedCommand = {
|
|
|
3194
3212
|
if (reset) {
|
|
3195
3213
|
logger.warn("--reset is set: truncating every table in the schema before running seeds.");
|
|
3196
3214
|
}
|
|
3197
|
-
const seedImports = target.map((f, i) => `import seed_${i} from ${JSON.stringify(
|
|
3215
|
+
const seedImports = target.map((f, i) => `import seed_${i} from ${JSON.stringify(resolve21(folder, f))};`).join(`
|
|
3198
3216
|
`);
|
|
3199
3217
|
const seedCalls = target.map((_, i) => ` await seed_${i}({ db, logger, dialect, truncate: (t) => db.truncate(t) });`).join(`
|
|
3200
3218
|
`);
|
|
@@ -3227,7 +3245,7 @@ ${seedCalls}
|
|
|
3227
3245
|
await db.close();
|
|
3228
3246
|
logger.info(\`Seeds complete (\${${target.length}} file(s))\`);
|
|
3229
3247
|
`;
|
|
3230
|
-
const tmpFile =
|
|
3248
|
+
const tmpFile = resolve21(ctx.cwd, ".nx-db-seed.mjs");
|
|
3231
3249
|
await writeFile2(tmpFile, script, "utf-8");
|
|
3232
3250
|
try {
|
|
3233
3251
|
const code = await new Promise((resP) => {
|
|
@@ -3265,15 +3283,15 @@ async function createSeedFile(folder, name) {
|
|
|
3265
3283
|
logger.error(`invalid seed name "${name}" \u2014 use letters, numbers, dash, underscore.`);
|
|
3266
3284
|
return 1;
|
|
3267
3285
|
}
|
|
3268
|
-
if (!
|
|
3286
|
+
if (!existsSync6(folder))
|
|
3269
3287
|
await mkdir(folder, { recursive: true });
|
|
3270
3288
|
let candidate = `${name}.ts`;
|
|
3271
3289
|
let i = 1;
|
|
3272
|
-
while (
|
|
3290
|
+
while (existsSync6(resolve21(folder, candidate))) {
|
|
3273
3291
|
candidate = `${name}_${i}.ts`;
|
|
3274
3292
|
i++;
|
|
3275
3293
|
}
|
|
3276
|
-
const path =
|
|
3294
|
+
const path = resolve21(folder, candidate);
|
|
3277
3295
|
const body = SEED_TEMPLATE.replace(/\{name\}/g, name);
|
|
3278
3296
|
await writeFile2(path, body, "utf-8");
|
|
3279
3297
|
logger.info(`created ${path}`);
|
|
@@ -3284,7 +3302,7 @@ function readEnvUrl2(dialect) {
|
|
|
3284
3302
|
return url ?? null;
|
|
3285
3303
|
}
|
|
3286
3304
|
function relativeImport(cwd, target) {
|
|
3287
|
-
const abs =
|
|
3305
|
+
const abs = resolve21(cwd, target);
|
|
3288
3306
|
let rel = abs;
|
|
3289
3307
|
if (rel.startsWith(cwd))
|
|
3290
3308
|
rel = rel.slice(cwd.length);
|
|
@@ -3297,8 +3315,8 @@ function relativeImport(cwd, target) {
|
|
|
3297
3315
|
var db_seed_default = dbSeedCommand;
|
|
3298
3316
|
|
|
3299
3317
|
// packages/cli/src/commands/new.ts
|
|
3300
|
-
import { existsSync as
|
|
3301
|
-
import { resolve as
|
|
3318
|
+
import { existsSync as existsSync7, mkdirSync as mkdirSync4, writeFileSync as writeFileSync3 } from "fs";
|
|
3319
|
+
import { resolve as resolve22 } from "path";
|
|
3302
3320
|
var newCommand = {
|
|
3303
3321
|
name: "new",
|
|
3304
3322
|
aliases: ["n"],
|
|
@@ -3333,8 +3351,8 @@ var newCommand = {
|
|
|
3333
3351
|
return 1;
|
|
3334
3352
|
}
|
|
3335
3353
|
const interactive = !flagBool(ctx.flags, "no-interaction", false);
|
|
3336
|
-
const target =
|
|
3337
|
-
if (
|
|
3354
|
+
const target = resolve22(ctx.cwd, name);
|
|
3355
|
+
if (existsSync7(target)) {
|
|
3338
3356
|
logger.error(`Directory already exists: ${target}`);
|
|
3339
3357
|
return 1;
|
|
3340
3358
|
}
|
|
@@ -3359,21 +3377,21 @@ var newCommand = {
|
|
|
3359
3377
|
default: "react"
|
|
3360
3378
|
});
|
|
3361
3379
|
const ssr = !flagBool(ctx.flags, "no-ssr", false);
|
|
3362
|
-
mkdirSync4(
|
|
3380
|
+
mkdirSync4(resolve22(target, "app"), { recursive: true });
|
|
3363
3381
|
if (view !== "none") {
|
|
3364
|
-
mkdirSync4(
|
|
3382
|
+
mkdirSync4(resolve22(target, "resources/views"), { recursive: true });
|
|
3365
3383
|
}
|
|
3366
|
-
mkdirSync4(
|
|
3367
|
-
writeFileSync3(
|
|
3384
|
+
mkdirSync4(resolve22(target, "public"), { recursive: true });
|
|
3385
|
+
writeFileSync3(resolve22(target, "public/.gitkeep"), "");
|
|
3368
3386
|
if (view !== "none") {
|
|
3369
|
-
writeFileSync3(
|
|
3387
|
+
writeFileSync3(resolve22(target, "resources/views/welcome.html"), `<h1>Welcome to ${name}</h1>
|
|
3370
3388
|
<p>This is a sample Rendu template.</p>
|
|
3371
3389
|
<p>Founded <?= year ?>.</p>
|
|
3372
3390
|
`);
|
|
3373
3391
|
}
|
|
3374
|
-
writeFileSync3(
|
|
3375
|
-
writeFileSync3(
|
|
3376
|
-
writeFileSync3(
|
|
3392
|
+
writeFileSync3(resolve22(target, ".env"), generateEnvFile());
|
|
3393
|
+
writeFileSync3(resolve22(target, ".env.local"), generateEnvLocalFile());
|
|
3394
|
+
writeFileSync3(resolve22(target, ".gitignore"), generateGitIgnore());
|
|
3377
3395
|
const code = render(templates.project["nx.config.ts"], {
|
|
3378
3396
|
routing,
|
|
3379
3397
|
view,
|
|
@@ -3385,7 +3403,7 @@ var newCommand = {
|
|
|
3385
3403
|
inertiaSSR: ssr,
|
|
3386
3404
|
inertiaVersion: "1.0.0"
|
|
3387
3405
|
});
|
|
3388
|
-
writeFileSync3(
|
|
3406
|
+
writeFileSync3(resolve22(target, "nx.config.ts"), code);
|
|
3389
3407
|
const deps = {
|
|
3390
3408
|
"@nexusts/core": "*",
|
|
3391
3409
|
"reflect-metadata": "^0.2.2",
|
|
@@ -3399,7 +3417,7 @@ var newCommand = {
|
|
|
3399
3417
|
if (view !== "none") {
|
|
3400
3418
|
deps["@nexusts/static"] = "*";
|
|
3401
3419
|
}
|
|
3402
|
-
writeFileSync3(
|
|
3420
|
+
writeFileSync3(resolve22(target, "package.json"), JSON.stringify({
|
|
3403
3421
|
name,
|
|
3404
3422
|
version: "0.1.0",
|
|
3405
3423
|
type: "module",
|
|
@@ -3412,7 +3430,7 @@ var newCommand = {
|
|
|
3412
3430
|
},
|
|
3413
3431
|
dependencies: deps
|
|
3414
3432
|
}, null, 2));
|
|
3415
|
-
writeFileSync3(
|
|
3433
|
+
writeFileSync3(resolve22(target, "tsconfig.json"), `{
|
|
3416
3434
|
"compilerOptions": {
|
|
3417
3435
|
"target": "ES2022",
|
|
3418
3436
|
"module": "ESNext",
|
|
@@ -3433,7 +3451,7 @@ const staticMiddleware = StaticModule.mount({ root: './public', prefix: '/static
|
|
|
3433
3451
|
` : "";
|
|
3434
3452
|
const staticOption = hasView ? `
|
|
3435
3453
|
middleware: [staticMiddleware],` : "";
|
|
3436
|
-
writeFileSync3(
|
|
3454
|
+
writeFileSync3(resolve22(target, "app/main.ts"), `import 'reflect-metadata';
|
|
3437
3455
|
import { Application } from '@nexusts/core';
|
|
3438
3456
|
${staticImport}import { AppModule } from './app.module.js';
|
|
3439
3457
|
|
|
@@ -3453,7 +3471,7 @@ console.log('[nexus] Listening on http://localhost:' + (process.env['PORT'] ?? 3
|
|
|
3453
3471
|
connection: { filename: 'app.db' },
|
|
3454
3472
|
logging: true,
|
|
3455
3473
|
})` : "";
|
|
3456
|
-
writeFileSync3(
|
|
3474
|
+
writeFileSync3(resolve22(target, "app/app.module.ts"), `${ormImport}import { Module } from '@nexusts/core';
|
|
3457
3475
|
import { HomeController } from './controllers/home.controller.js';
|
|
3458
3476
|
|
|
3459
3477
|
@Module({
|
|
@@ -3464,12 +3482,12 @@ ${ormBlock},
|
|
|
3464
3482
|
})
|
|
3465
3483
|
export class AppModule {}
|
|
3466
3484
|
`);
|
|
3467
|
-
mkdirSync4(
|
|
3485
|
+
mkdirSync4(resolve22(target, "app/controllers"), { recursive: true });
|
|
3468
3486
|
const homeViewReturn = view !== "none" ? `{
|
|
3469
3487
|
view: 'welcome.html',
|
|
3470
3488
|
data: { year: new Date().getFullYear() },
|
|
3471
3489
|
}` : `{ status: 200, body: { message: 'Hello from NexusTS!' } }`;
|
|
3472
|
-
writeFileSync3(
|
|
3490
|
+
writeFileSync3(resolve22(target, "app/controllers/home.controller.ts"), `import { Controller, Get } from '@nexusts/core';
|
|
3473
3491
|
|
|
3474
3492
|
@Controller('/')
|
|
3475
3493
|
export class HomeController {
|
|
@@ -3479,7 +3497,7 @@ export class HomeController {
|
|
|
3479
3497
|
}
|
|
3480
3498
|
}
|
|
3481
3499
|
`);
|
|
3482
|
-
writeFileSync3(
|
|
3500
|
+
writeFileSync3(resolve22(target, "README.md"), `# ${name}
|
|
3483
3501
|
|
|
3484
3502
|
A new Nexus project.
|
|
3485
3503
|
|
|
@@ -3560,8 +3578,8 @@ dist/
|
|
|
3560
3578
|
var new_default = newCommand;
|
|
3561
3579
|
|
|
3562
3580
|
// packages/cli/src/commands/config.ts
|
|
3563
|
-
import { existsSync as
|
|
3564
|
-
import { resolve as
|
|
3581
|
+
import { existsSync as existsSync8, readFileSync as readFileSync5, writeFileSync as writeFileSync4 } from "fs";
|
|
3582
|
+
import { resolve as resolve23 } from "path";
|
|
3565
3583
|
var DEFAULT_VALUES = {
|
|
3566
3584
|
routing: "nest",
|
|
3567
3585
|
view: "rendu",
|
|
@@ -3575,9 +3593,9 @@ var DEFAULT_VALUES = {
|
|
|
3575
3593
|
};
|
|
3576
3594
|
function parseExistingConfig(path) {
|
|
3577
3595
|
const out = { ...DEFAULT_VALUES };
|
|
3578
|
-
if (!
|
|
3596
|
+
if (!existsSync8(path))
|
|
3579
3597
|
return out;
|
|
3580
|
-
const src =
|
|
3598
|
+
const src = readFileSync5(path, "utf8");
|
|
3581
3599
|
const grab = (re) => {
|
|
3582
3600
|
const m = src.match(re);
|
|
3583
3601
|
return m?.[1];
|
|
@@ -3676,12 +3694,12 @@ var configCommand = {
|
|
|
3676
3694
|
async run(ctx) {
|
|
3677
3695
|
const interactive = !flagBool(ctx.flags, "no-interaction", false);
|
|
3678
3696
|
const force = flagBool(ctx.flags, "force", false);
|
|
3679
|
-
const target =
|
|
3680
|
-
if (!
|
|
3697
|
+
const target = resolve23(ctx.cwd, ctx.flags["target"] ?? ".");
|
|
3698
|
+
if (!existsSync8(target)) {
|
|
3681
3699
|
logger.error(`Target directory does not exist: ${target}`);
|
|
3682
3700
|
return 1;
|
|
3683
3701
|
}
|
|
3684
|
-
const nxConfigPath =
|
|
3702
|
+
const nxConfigPath = resolve23(target, "nx.config.ts");
|
|
3685
3703
|
const values = parseExistingConfig(nxConfigPath);
|
|
3686
3704
|
const flag = (k) => ctx.flags[k];
|
|
3687
3705
|
const flagBoolStrict = (k, def) => flagBool(ctx.flags, k, def);
|
|
@@ -3705,7 +3723,7 @@ var configCommand = {
|
|
|
3705
3723
|
if (flagBoolStrict("no-ssr", false))
|
|
3706
3724
|
values.inertiaSSR = false;
|
|
3707
3725
|
const anyFlag = Object.values(ctx.flags).some((v) => v !== undefined && v !== false);
|
|
3708
|
-
if (interactive && !anyFlag && !
|
|
3726
|
+
if (interactive && !anyFlag && !existsSync8(nxConfigPath)) {
|
|
3709
3727
|
values.routing = await select("Routing style", ["nest", "adonis", "functional"], {
|
|
3710
3728
|
interactive,
|
|
3711
3729
|
default: values.routing
|
|
@@ -3724,7 +3742,7 @@ var configCommand = {
|
|
|
3724
3742
|
if (flag("db-url") === undefined && flag("db") !== undefined) {
|
|
3725
3743
|
values.dbUrl = defaultDbUrl(values.dbDriver);
|
|
3726
3744
|
}
|
|
3727
|
-
const existed =
|
|
3745
|
+
const existed = existsSync8(nxConfigPath);
|
|
3728
3746
|
if (existed && !force) {
|
|
3729
3747
|
if (anyFlag) {
|
|
3730
3748
|
writeNxConfig(target, values);
|
|
@@ -3736,18 +3754,18 @@ var configCommand = {
|
|
|
3736
3754
|
writeNxConfig(target, values);
|
|
3737
3755
|
logger.info(` + nx.config.ts`);
|
|
3738
3756
|
}
|
|
3739
|
-
const drizzleConfigPath =
|
|
3757
|
+
const drizzleConfigPath = resolve23(target, "drizzle.config.ts");
|
|
3740
3758
|
if (values.orm === "drizzle") {
|
|
3741
3759
|
const dialect = driverToDialect(values.dbDriver);
|
|
3742
3760
|
const dbUrl = values.dbUrl;
|
|
3743
|
-
const existedDrizzle =
|
|
3761
|
+
const existedDrizzle = existsSync8(drizzleConfigPath);
|
|
3744
3762
|
if (existedDrizzle && !force && !anyFlag) {
|
|
3745
3763
|
logger.info(` - drizzle.config.ts (unchanged; pass --force or a flag to update)`);
|
|
3746
3764
|
} else {
|
|
3747
3765
|
writeDrizzleConfig(target, { dialect, dbUrl });
|
|
3748
3766
|
logger.info(` ${existedDrizzle ? "~" : "+"} drizzle.config.ts`);
|
|
3749
3767
|
}
|
|
3750
|
-
} else if (
|
|
3768
|
+
} else if (existsSync8(drizzleConfigPath)) {
|
|
3751
3769
|
logger.info(` - drizzle.config.ts (left as-is; ORM is '${values.orm}', not 'drizzle')`);
|
|
3752
3770
|
}
|
|
3753
3771
|
logger.blank();
|
|
@@ -3764,29 +3782,43 @@ var configCommand = {
|
|
|
3764
3782
|
};
|
|
3765
3783
|
function writeNxConfig(target, values) {
|
|
3766
3784
|
const code = render(templates.project["nx.config.ts"], values);
|
|
3767
|
-
writeFileSync4(
|
|
3785
|
+
writeFileSync4(resolve23(target, "nx.config.ts"), code);
|
|
3768
3786
|
}
|
|
3769
3787
|
function writeDrizzleConfig(target, values) {
|
|
3770
3788
|
const code = render(templates.project["drizzle.config.ts"], values);
|
|
3771
|
-
writeFileSync4(
|
|
3789
|
+
writeFileSync4(resolve23(target, "drizzle.config.ts"), code);
|
|
3772
3790
|
}
|
|
3773
3791
|
var config_default = configCommand;
|
|
3774
3792
|
|
|
3775
3793
|
// packages/cli/src/commands/repl.ts
|
|
3776
3794
|
import {
|
|
3777
|
-
existsSync as
|
|
3795
|
+
existsSync as existsSync9,
|
|
3778
3796
|
mkdirSync as mkdirSync5,
|
|
3779
|
-
readFileSync as
|
|
3797
|
+
readFileSync as readFileSync6,
|
|
3780
3798
|
writeFileSync as writeFileSync5
|
|
3781
3799
|
} from "fs";
|
|
3782
|
-
import { dirname as
|
|
3800
|
+
import { dirname as dirname4, resolve as resolve24 } from "path";
|
|
3783
3801
|
import * as readline from "readline";
|
|
3784
3802
|
import * as vm from "vm";
|
|
3785
|
-
var BANNER =
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
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
|
+
})();
|
|
3790
3822
|
var HELP = `
|
|
3791
3823
|
Available commands:
|
|
3792
3824
|
.help Show this help
|
|
@@ -3813,11 +3845,11 @@ Examples:
|
|
|
3813
3845
|
> app.container.size
|
|
3814
3846
|
`;
|
|
3815
3847
|
var PRELOAD = [
|
|
3816
|
-
["db", "
|
|
3817
|
-
["logger", "
|
|
3818
|
-
["cfg", "
|
|
3819
|
-
["cache", "
|
|
3820
|
-
["events", "
|
|
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"]
|
|
3821
3853
|
];
|
|
3822
3854
|
var replCommand = {
|
|
3823
3855
|
name: "repl",
|
|
@@ -3847,11 +3879,11 @@ var replCommand = {
|
|
|
3847
3879
|
async run(ctx) {
|
|
3848
3880
|
const mod = ctx.flags["module"];
|
|
3849
3881
|
const noBoot = Boolean(ctx.flags["no-boot"]);
|
|
3850
|
-
const histPath =
|
|
3882
|
+
const histPath = resolve24(ctx.cwd, ctx.flags["history"] ?? ".nx-repl-history");
|
|
3851
3883
|
const env = { console };
|
|
3852
3884
|
if (!noBoot) {
|
|
3853
|
-
const modPath =
|
|
3854
|
-
if (!
|
|
3885
|
+
const modPath = resolve24(ctx.cwd, mod ?? "app/app.module.ts");
|
|
3886
|
+
if (!existsSync9(modPath)) {
|
|
3855
3887
|
logger.error(`module not found: ${modPath}`);
|
|
3856
3888
|
logger.info("pass --module <path> or --no-boot to skip booting");
|
|
3857
3889
|
return 1;
|
|
@@ -4016,19 +4048,29 @@ async function preloadService(env, app, name, path, className) {
|
|
|
4016
4048
|
try {
|
|
4017
4049
|
const mod = await import(path);
|
|
4018
4050
|
const ServiceClass = mod[className];
|
|
4019
|
-
if (!ServiceClass)
|
|
4051
|
+
if (!ServiceClass) {
|
|
4052
|
+
logger.debug(`repl: ${className} not found in ${path}`);
|
|
4020
4053
|
return;
|
|
4054
|
+
}
|
|
4021
4055
|
const Token = ServiceClass.TOKEN ?? ServiceClass[`${className.toUpperCase()}_TOKEN`];
|
|
4022
|
-
if (!Token)
|
|
4056
|
+
if (!Token) {
|
|
4057
|
+
logger.debug(`repl: ${className}.TOKEN not found`);
|
|
4023
4058
|
return;
|
|
4059
|
+
}
|
|
4024
4060
|
try {
|
|
4025
4061
|
env[name] = app.container.resolve(Token);
|
|
4062
|
+
logger.debug(`repl: loaded ${name} (${className})`);
|
|
4026
4063
|
} catch {
|
|
4027
4064
|
try {
|
|
4028
4065
|
env[name] = app.container.resolve(ServiceClass);
|
|
4029
|
-
|
|
4066
|
+
logger.debug(`repl: loaded ${name} (${className}) via class`);
|
|
4067
|
+
} catch {
|
|
4068
|
+
logger.debug(`repl: ${name} (${className}) not registered in container`);
|
|
4069
|
+
}
|
|
4030
4070
|
}
|
|
4031
|
-
} catch {
|
|
4071
|
+
} catch {
|
|
4072
|
+
logger.debug(`repl: ${path} not installed \u2014 skipping ${name}`);
|
|
4073
|
+
}
|
|
4032
4074
|
}
|
|
4033
4075
|
function listServices(container) {
|
|
4034
4076
|
if (!container)
|
|
@@ -4121,10 +4163,10 @@ function formatError(e) {
|
|
|
4121
4163
|
`) : e.message;
|
|
4122
4164
|
}
|
|
4123
4165
|
function loadHistory(path) {
|
|
4124
|
-
if (!
|
|
4166
|
+
if (!existsSync9(path))
|
|
4125
4167
|
return [];
|
|
4126
4168
|
try {
|
|
4127
|
-
return
|
|
4169
|
+
return readFileSync6(path, "utf-8").split(`
|
|
4128
4170
|
`).filter(Boolean);
|
|
4129
4171
|
} catch {
|
|
4130
4172
|
return [];
|
|
@@ -4132,8 +4174,8 @@ function loadHistory(path) {
|
|
|
4132
4174
|
}
|
|
4133
4175
|
function saveHistoryFile(path, history) {
|
|
4134
4176
|
try {
|
|
4135
|
-
const dir =
|
|
4136
|
-
if (!
|
|
4177
|
+
const dir = dirname4(path);
|
|
4178
|
+
if (!existsSync9(dir))
|
|
4137
4179
|
mkdirSync5(dir, { recursive: true });
|
|
4138
4180
|
writeFileSync5(path, history.slice(-1000).join(`
|
|
4139
4181
|
`));
|
|
@@ -4143,7 +4185,7 @@ var repl_default = replCommand;
|
|
|
4143
4185
|
|
|
4144
4186
|
// packages/cli/src/commands/route-list.ts
|
|
4145
4187
|
import { readdirSync, statSync as statSync2 } from "fs";
|
|
4146
|
-
import { resolve as
|
|
4188
|
+
import { resolve as resolve25 } from "path";
|
|
4147
4189
|
var routeListCommand = {
|
|
4148
4190
|
name: "route:list",
|
|
4149
4191
|
aliases: ["routes", "route-list"],
|
|
@@ -4153,7 +4195,7 @@ var routeListCommand = {
|
|
|
4153
4195
|
{ name: "format", description: "Output format: table (default) | json" }
|
|
4154
4196
|
],
|
|
4155
4197
|
async run(ctx) {
|
|
4156
|
-
const controllersDir =
|
|
4198
|
+
const controllersDir = resolve25(ctx.cwd, ctx.config.paths.controllers);
|
|
4157
4199
|
try {
|
|
4158
4200
|
statSync2(controllersDir);
|
|
4159
4201
|
} catch {
|
|
@@ -4167,7 +4209,7 @@ var routeListCommand = {
|
|
|
4167
4209
|
}
|
|
4168
4210
|
const routes = [];
|
|
4169
4211
|
for (const file of files) {
|
|
4170
|
-
const fullPath =
|
|
4212
|
+
const fullPath = resolve25(controllersDir, file);
|
|
4171
4213
|
try {
|
|
4172
4214
|
const mod = await import(`${fullPath}?t=${Date.now()}`);
|
|
4173
4215
|
for (const exportName of Object.keys(mod)) {
|
|
@@ -4367,5 +4409,5 @@ main().then((code) => process.exit(code)).catch((err) => {
|
|
|
4367
4409
|
process.exit(1);
|
|
4368
4410
|
});
|
|
4369
4411
|
|
|
4370
|
-
//# debugId=
|
|
4412
|
+
//# debugId=9D68E94AB6C5D92664756E2164756E21
|
|
4371
4413
|
//# sourceMappingURL=index.js.map
|