@drzl/cli 4.14.3 → 4.14.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/cli.cjs +85 -64
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +85 -64
- package/dist/cli.js.map +1 -1
- package/dist/config.d.cts +2 -2
- package/dist/config.d.ts +2 -2
- package/package.json +5 -5
package/dist/cli.cjs
CHANGED
|
@@ -782,6 +782,30 @@ async function restoreSnapshot(before, after) {
|
|
|
782
782
|
}
|
|
783
783
|
}
|
|
784
784
|
|
|
785
|
+
// src/generator-loader.ts
|
|
786
|
+
var GeneratorNotInstalledError = class extends Error {
|
|
787
|
+
constructor(specifier, reason) {
|
|
788
|
+
super(`${specifier} is not installed`);
|
|
789
|
+
this.specifier = specifier;
|
|
790
|
+
this.reason = reason;
|
|
791
|
+
this.name = "GeneratorNotInstalledError";
|
|
792
|
+
}
|
|
793
|
+
};
|
|
794
|
+
function isPackageMissing(err, specifier) {
|
|
795
|
+
const code = err?.code;
|
|
796
|
+
if (code !== "ERR_MODULE_NOT_FOUND") return false;
|
|
797
|
+
const message = err?.message;
|
|
798
|
+
return typeof message === "string" && message.includes(`'${specifier}'`);
|
|
799
|
+
}
|
|
800
|
+
async function loadGenerator(specifier, load) {
|
|
801
|
+
try {
|
|
802
|
+
return await load();
|
|
803
|
+
} catch (e) {
|
|
804
|
+
if (isPackageMissing(e, specifier)) throw new GeneratorNotInstalledError(specifier, e);
|
|
805
|
+
throw e;
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
|
|
785
809
|
// src/sponsor.ts
|
|
786
810
|
var import_chalk = __toESM(require("chalk"), 1);
|
|
787
811
|
var import_node_fs2 = require("fs");
|
|
@@ -885,6 +909,17 @@ function readCliVersion() {
|
|
|
885
909
|
var CLI_VERSION = readCliVersion();
|
|
886
910
|
|
|
887
911
|
// src/cli.ts
|
|
912
|
+
function reportGeneratorFailure(kind, e) {
|
|
913
|
+
if (e instanceof GeneratorNotInstalledError) {
|
|
914
|
+
console.error(
|
|
915
|
+
import_chalk2.default.red(`The ${kind} generator is not installed.`),
|
|
916
|
+
import_chalk2.default.yellow(`
|
|
917
|
+
Install with: npm install ${e.specifier}`)
|
|
918
|
+
);
|
|
919
|
+
return;
|
|
920
|
+
}
|
|
921
|
+
console.error(import_chalk2.default.red(`The ${kind} generator failed:`), e?.message ?? e);
|
|
922
|
+
}
|
|
888
923
|
var program = new import_commander.Command();
|
|
889
924
|
program.name("drzl").description("DRZL - Drizzle Developer Toolkit").version(CLI_VERSION);
|
|
890
925
|
program.addHelpText(
|
|
@@ -983,7 +1018,10 @@ program.command("generate").description("Run configured generators (drzl.config.
|
|
|
983
1018
|
files.forEach((f) => console.log(" -", import_chalk2.default.cyan(f)));
|
|
984
1019
|
} else if (g.kind === "service") {
|
|
985
1020
|
try {
|
|
986
|
-
const { ServiceGenerator } = await
|
|
1021
|
+
const { ServiceGenerator } = await loadGenerator(
|
|
1022
|
+
"@drzl/generator-service",
|
|
1023
|
+
() => import("@drzl/generator-service")
|
|
1024
|
+
);
|
|
987
1025
|
const gen = new ServiceGenerator(analysis);
|
|
988
1026
|
const target = g.path ?? "src/services";
|
|
989
1027
|
const files = await gen.generate({
|
|
@@ -1000,16 +1038,15 @@ program.command("generate").description("Run configured generators (drzl.config.
|
|
|
1000
1038
|
files.forEach((f) => console.log(" -", import_chalk2.default.cyan(f)));
|
|
1001
1039
|
} catch (e) {
|
|
1002
1040
|
progress.stop();
|
|
1003
|
-
|
|
1004
|
-
import_chalk2.default.red("Service generator missing."),
|
|
1005
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-service")
|
|
1006
|
-
);
|
|
1007
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1041
|
+
reportGeneratorFailure(g.kind, e);
|
|
1008
1042
|
process.exit(1);
|
|
1009
1043
|
}
|
|
1010
1044
|
} else if (g.kind === "zod") {
|
|
1011
1045
|
try {
|
|
1012
|
-
const { ZodGenerator } = await
|
|
1046
|
+
const { ZodGenerator } = await loadGenerator(
|
|
1047
|
+
"@drzl/generator-zod",
|
|
1048
|
+
() => import("@drzl/generator-zod")
|
|
1049
|
+
);
|
|
1013
1050
|
const gen = new ZodGenerator(analysis);
|
|
1014
1051
|
const target = g.path ?? "src/validators/zod";
|
|
1015
1052
|
const files = await gen.generate(
|
|
@@ -1020,16 +1057,15 @@ program.command("generate").description("Run configured generators (drzl.config.
|
|
|
1020
1057
|
files.forEach((f) => console.log(" -", import_chalk2.default.cyan(f)));
|
|
1021
1058
|
} catch (e) {
|
|
1022
1059
|
progress.stop();
|
|
1023
|
-
|
|
1024
|
-
import_chalk2.default.red("Zod generator missing."),
|
|
1025
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-zod")
|
|
1026
|
-
);
|
|
1027
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1060
|
+
reportGeneratorFailure(g.kind, e);
|
|
1028
1061
|
process.exit(1);
|
|
1029
1062
|
}
|
|
1030
1063
|
} else if (g.kind === "valibot") {
|
|
1031
1064
|
try {
|
|
1032
|
-
const { ValibotGenerator } = await
|
|
1065
|
+
const { ValibotGenerator } = await loadGenerator(
|
|
1066
|
+
"@drzl/generator-valibot",
|
|
1067
|
+
() => import("@drzl/generator-valibot")
|
|
1068
|
+
);
|
|
1033
1069
|
const gen = new ValibotGenerator(analysis);
|
|
1034
1070
|
const target = g.path ?? "src/validators/valibot";
|
|
1035
1071
|
const files = await gen.generate(
|
|
@@ -1040,16 +1076,15 @@ program.command("generate").description("Run configured generators (drzl.config.
|
|
|
1040
1076
|
files.forEach((f) => console.log(" -", import_chalk2.default.cyan(f)));
|
|
1041
1077
|
} catch (e) {
|
|
1042
1078
|
progress.stop();
|
|
1043
|
-
|
|
1044
|
-
import_chalk2.default.red("Valibot generator missing."),
|
|
1045
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-valibot")
|
|
1046
|
-
);
|
|
1047
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1079
|
+
reportGeneratorFailure(g.kind, e);
|
|
1048
1080
|
process.exit(1);
|
|
1049
1081
|
}
|
|
1050
1082
|
} else if (g.kind === "arktype") {
|
|
1051
1083
|
try {
|
|
1052
|
-
const { ArkTypeGenerator } = await
|
|
1084
|
+
const { ArkTypeGenerator } = await loadGenerator(
|
|
1085
|
+
"@drzl/generator-arktype",
|
|
1086
|
+
() => import("@drzl/generator-arktype")
|
|
1087
|
+
);
|
|
1053
1088
|
const gen = new ArkTypeGenerator(analysis);
|
|
1054
1089
|
const target = g.path ?? "src/validators/arktype";
|
|
1055
1090
|
const files = await gen.generate(
|
|
@@ -1060,16 +1095,15 @@ program.command("generate").description("Run configured generators (drzl.config.
|
|
|
1060
1095
|
files.forEach((f) => console.log(" -", import_chalk2.default.cyan(f)));
|
|
1061
1096
|
} catch (e) {
|
|
1062
1097
|
progress.stop();
|
|
1063
|
-
|
|
1064
|
-
import_chalk2.default.red("ArkType generator missing."),
|
|
1065
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-arktype")
|
|
1066
|
-
);
|
|
1067
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1098
|
+
reportGeneratorFailure(g.kind, e);
|
|
1068
1099
|
process.exit(1);
|
|
1069
1100
|
}
|
|
1070
1101
|
} else if (g.kind === "json-schema") {
|
|
1071
1102
|
try {
|
|
1072
|
-
const { JsonSchemaGenerator: JsonSchemaGenerator2 } = await
|
|
1103
|
+
const { JsonSchemaGenerator: JsonSchemaGenerator2 } = await loadGenerator(
|
|
1104
|
+
"@drzl/generator-json-schema",
|
|
1105
|
+
() => Promise.resolve().then(() => (init_dist(), dist_exports))
|
|
1106
|
+
);
|
|
1073
1107
|
const gen = new JsonSchemaGenerator2(analysis);
|
|
1074
1108
|
const target = g.path ?? "src/validators/json-schema";
|
|
1075
1109
|
const files = await gen.generate({
|
|
@@ -1083,20 +1117,15 @@ program.command("generate").description("Run configured generators (drzl.config.
|
|
|
1083
1117
|
files.forEach((f) => console.log(" -", import_chalk2.default.cyan(f)));
|
|
1084
1118
|
} catch (e) {
|
|
1085
1119
|
progress.stop();
|
|
1086
|
-
|
|
1087
|
-
import_chalk2.default.red("JSON Schema generator missing."),
|
|
1088
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-json-schema"),
|
|
1089
|
-
// An optional dependency, unlike the other generators, until its npm trusted
|
|
1090
|
-
// publisher exists. A missing optional dependency is skipped rather than failing
|
|
1091
|
-
// the install, which is what keeps `npm i @drzl/cli` working meanwhile.
|
|
1092
|
-
""
|
|
1093
|
-
);
|
|
1094
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1120
|
+
reportGeneratorFailure(g.kind, e);
|
|
1095
1121
|
process.exit(1);
|
|
1096
1122
|
}
|
|
1097
1123
|
} else if (g.kind === "typebox") {
|
|
1098
1124
|
try {
|
|
1099
|
-
const { TypeBoxGenerator } = await
|
|
1125
|
+
const { TypeBoxGenerator } = await loadGenerator(
|
|
1126
|
+
"@drzl/generator-typebox",
|
|
1127
|
+
() => import("@drzl/generator-typebox")
|
|
1128
|
+
);
|
|
1100
1129
|
const gen = new TypeBoxGenerator(analysis);
|
|
1101
1130
|
const target = g.path ?? "src/validators/typebox";
|
|
1102
1131
|
const files = await gen.generate(
|
|
@@ -1107,11 +1136,7 @@ program.command("generate").description("Run configured generators (drzl.config.
|
|
|
1107
1136
|
files.forEach((f) => console.log(" -", import_chalk2.default.cyan(f)));
|
|
1108
1137
|
} catch (e) {
|
|
1109
1138
|
progress.stop();
|
|
1110
|
-
|
|
1111
|
-
import_chalk2.default.red("TypeBox generator missing."),
|
|
1112
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-typebox")
|
|
1113
|
-
);
|
|
1114
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1139
|
+
reportGeneratorFailure(g.kind, e);
|
|
1115
1140
|
process.exit(1);
|
|
1116
1141
|
}
|
|
1117
1142
|
}
|
|
@@ -1295,7 +1320,10 @@ program.command("watch").description("Watch schema and regenerate on changes").o
|
|
|
1295
1320
|
newFiles.push(...files);
|
|
1296
1321
|
} else if (g.kind === "service") {
|
|
1297
1322
|
try {
|
|
1298
|
-
const { ServiceGenerator } = await
|
|
1323
|
+
const { ServiceGenerator } = await loadGenerator(
|
|
1324
|
+
"@drzl/generator-service",
|
|
1325
|
+
() => import("@drzl/generator-service")
|
|
1326
|
+
);
|
|
1299
1327
|
const gen = new ServiceGenerator(analysis);
|
|
1300
1328
|
const target = g.path ?? "src/services";
|
|
1301
1329
|
const files = await gen.generate({
|
|
@@ -1313,16 +1341,15 @@ program.command("watch").description("Watch schema and regenerate on changes").o
|
|
|
1313
1341
|
);
|
|
1314
1342
|
newFiles.push(...files);
|
|
1315
1343
|
} catch (e) {
|
|
1316
|
-
|
|
1317
|
-
import_chalk2.default.red("Service generator missing."),
|
|
1318
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-service")
|
|
1319
|
-
);
|
|
1320
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1344
|
+
reportGeneratorFailure(g.kind, e);
|
|
1321
1345
|
return;
|
|
1322
1346
|
}
|
|
1323
1347
|
} else if (g.kind === "zod") {
|
|
1324
1348
|
try {
|
|
1325
|
-
const { ZodGenerator } = await
|
|
1349
|
+
const { ZodGenerator } = await loadGenerator(
|
|
1350
|
+
"@drzl/generator-zod",
|
|
1351
|
+
() => import("@drzl/generator-zod")
|
|
1352
|
+
);
|
|
1326
1353
|
const gen = new ZodGenerator(analysis);
|
|
1327
1354
|
const target = g.path ?? "src/validators/zod";
|
|
1328
1355
|
const files = await gen.generate({
|
|
@@ -1340,16 +1367,15 @@ program.command("watch").description("Watch schema and regenerate on changes").o
|
|
|
1340
1367
|
);
|
|
1341
1368
|
newFiles.push(...files);
|
|
1342
1369
|
} catch (e) {
|
|
1343
|
-
|
|
1344
|
-
import_chalk2.default.red("Zod generator missing."),
|
|
1345
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-zod")
|
|
1346
|
-
);
|
|
1347
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1370
|
+
reportGeneratorFailure(g.kind, e);
|
|
1348
1371
|
return;
|
|
1349
1372
|
}
|
|
1350
1373
|
} else if (g.kind === "valibot") {
|
|
1351
1374
|
try {
|
|
1352
|
-
const { ValibotGenerator } = await
|
|
1375
|
+
const { ValibotGenerator } = await loadGenerator(
|
|
1376
|
+
"@drzl/generator-valibot",
|
|
1377
|
+
() => import("@drzl/generator-valibot")
|
|
1378
|
+
);
|
|
1353
1379
|
const gen = new ValibotGenerator(analysis);
|
|
1354
1380
|
const target = g.path ?? "src/validators/valibot";
|
|
1355
1381
|
const files = await gen.generate({
|
|
@@ -1367,16 +1393,15 @@ program.command("watch").description("Watch schema and regenerate on changes").o
|
|
|
1367
1393
|
);
|
|
1368
1394
|
newFiles.push(...files);
|
|
1369
1395
|
} catch (e) {
|
|
1370
|
-
|
|
1371
|
-
import_chalk2.default.red("Valibot generator missing."),
|
|
1372
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-valibot")
|
|
1373
|
-
);
|
|
1374
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1396
|
+
reportGeneratorFailure(g.kind, e);
|
|
1375
1397
|
return;
|
|
1376
1398
|
}
|
|
1377
1399
|
} else if (g.kind === "arktype") {
|
|
1378
1400
|
try {
|
|
1379
|
-
const { ArkTypeGenerator } = await
|
|
1401
|
+
const { ArkTypeGenerator } = await loadGenerator(
|
|
1402
|
+
"@drzl/generator-arktype",
|
|
1403
|
+
() => import("@drzl/generator-arktype")
|
|
1404
|
+
);
|
|
1380
1405
|
const gen = new ArkTypeGenerator(analysis);
|
|
1381
1406
|
const target = g.path ?? "src/validators/arktype";
|
|
1382
1407
|
const files = await gen.generate({
|
|
@@ -1394,11 +1419,7 @@ program.command("watch").description("Watch schema and regenerate on changes").o
|
|
|
1394
1419
|
);
|
|
1395
1420
|
newFiles.push(...files);
|
|
1396
1421
|
} catch (e) {
|
|
1397
|
-
|
|
1398
|
-
import_chalk2.default.red("ArkType generator missing."),
|
|
1399
|
-
import_chalk2.default.yellow("\nInstall with: npm install @drzl/generator-arktype")
|
|
1400
|
-
);
|
|
1401
|
-
console.error(import_chalk2.default.gray("Error details:"), e?.message ?? e);
|
|
1422
|
+
reportGeneratorFailure(g.kind, e);
|
|
1402
1423
|
return;
|
|
1403
1424
|
}
|
|
1404
1425
|
}
|