@zenstackhq/cli 3.0.0-beta.22 → 3.0.0-beta.24

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.cjs CHANGED
@@ -28,34 +28,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  ));
29
29
 
30
30
  // src/index.ts
31
- var import_language2 = require("@zenstackhq/language");
32
- var import_colors7 = __toESM(require("colors"), 1);
31
+ var import_language3 = require("@zenstackhq/language");
32
+ var import_colors8 = __toESM(require("colors"), 1);
33
33
  var import_commander = require("commander");
34
34
 
35
- // src/actions/db.ts
36
- var import_node_fs2 = __toESM(require("fs"), 1);
37
-
38
- // src/utils/exec-utils.ts
39
- var import_child_process = require("child_process");
40
- function execSync(cmd, options) {
41
- const { env: env2, ...restOptions } = options ?? {};
42
- const mergedEnv = env2 ? {
43
- ...process.env,
44
- ...env2
45
- } : void 0;
46
- (0, import_child_process.execSync)(cmd, {
47
- encoding: "utf-8",
48
- stdio: options?.stdio ?? "inherit",
49
- env: mergedEnv,
50
- ...restOptions
51
- });
52
- }
53
- __name(execSync, "execSync");
54
- function execPackage(cmd, options) {
55
- const packageManager = process?.versions?.["bun"] ? "bunx" : "npx";
56
- execSync(`${packageManager} ${cmd}`, options);
57
- }
58
- __name(execPackage, "execPackage");
35
+ // src/actions/check.ts
36
+ var import_colors2 = __toESM(require("colors"), 1);
59
37
 
60
38
  // src/actions/action-utils.ts
61
39
  var import_language = require("@zenstackhq/language");
@@ -85,14 +63,22 @@ function getSchemaFile(file) {
85
63
  if (!import_node_fs.default.existsSync(pkgJsonConfig.schema)) {
86
64
  throw new CliError(`Schema file not found: ${pkgJsonConfig.schema}`);
87
65
  }
88
- return pkgJsonConfig.schema;
66
+ if (import_node_fs.default.statSync(pkgJsonConfig.schema).isDirectory()) {
67
+ const schemaPath = import_node_path.default.join(pkgJsonConfig.schema, "schema.zmodel");
68
+ if (!import_node_fs.default.existsSync(schemaPath)) {
69
+ throw new CliError(`Schema file not found: ${schemaPath}`);
70
+ }
71
+ return schemaPath;
72
+ } else {
73
+ return pkgJsonConfig.schema;
74
+ }
89
75
  }
90
- if (import_node_fs.default.existsSync("./zenstack/schema.zmodel")) {
91
- return "./zenstack/schema.zmodel";
92
- } else if (import_node_fs.default.existsSync("./schema.zmodel")) {
76
+ if (import_node_fs.default.existsSync("./schema.zmodel")) {
93
77
  return "./schema.zmodel";
78
+ } else if (import_node_fs.default.existsSync("./zenstack/schema.zmodel")) {
79
+ return "./zenstack/schema.zmodel";
94
80
  } else {
95
- throw new CliError('Schema file not found in default locations ("./zenstack/schema.zmodel" or "./schema.zmodel").');
81
+ throw new CliError('Schema file not found in default locations ("./schema.zmodel" or "./zenstack/schema.zmodel").');
96
82
  }
97
83
  }
98
84
  __name(getSchemaFile, "getSchemaFile");
@@ -175,28 +161,85 @@ function findUp(names, cwd = process.cwd(), multiple = false, result = []) {
175
161
  }
176
162
  __name(findUp, "findUp");
177
163
 
164
+ // src/actions/check.ts
165
+ async function run(options) {
166
+ const schemaFile = getSchemaFile(options.schema);
167
+ try {
168
+ await loadSchemaDocument(schemaFile);
169
+ console.log(import_colors2.default.green("\u2713 Schema validation completed successfully."));
170
+ } catch (error) {
171
+ console.error(import_colors2.default.red("\u2717 Schema validation failed."));
172
+ throw error;
173
+ }
174
+ }
175
+ __name(run, "run");
176
+
178
177
  // src/actions/db.ts
179
- async function run(command, options) {
178
+ var import_node_fs2 = __toESM(require("fs"), 1);
179
+
180
+ // src/utils/exec-utils.ts
181
+ var import_child_process = require("child_process");
182
+ var import_url = require("url");
183
+ var import_meta = {};
184
+ function execSync(cmd, options) {
185
+ const { env: env2, ...restOptions } = options ?? {};
186
+ const mergedEnv = env2 ? {
187
+ ...process.env,
188
+ ...env2
189
+ } : void 0;
190
+ (0, import_child_process.execSync)(cmd, {
191
+ encoding: "utf-8",
192
+ stdio: options?.stdio ?? "inherit",
193
+ env: mergedEnv,
194
+ ...restOptions
195
+ });
196
+ }
197
+ __name(execSync, "execSync");
198
+ function execPackage(cmd, options) {
199
+ const packageManager = process?.versions?.["bun"] ? "bunx" : "npx";
200
+ execSync(`${packageManager} ${cmd}`, options);
201
+ }
202
+ __name(execPackage, "execPackage");
203
+ function execPrisma(args, options) {
204
+ let prismaPath;
205
+ try {
206
+ if (typeof import_meta.resolve === "function") {
207
+ prismaPath = (0, import_url.fileURLToPath)(import_meta.resolve("prisma/build/index.js"));
208
+ } else {
209
+ prismaPath = require.resolve("prisma/build/index.js");
210
+ }
211
+ } catch {
212
+ }
213
+ if (!prismaPath) {
214
+ execPackage(`prisma ${args}`, options);
215
+ return;
216
+ }
217
+ execSync(`node ${prismaPath} ${args}`, options);
218
+ }
219
+ __name(execPrisma, "execPrisma");
220
+
221
+ // src/actions/db.ts
222
+ async function run2(command, options) {
180
223
  switch (command) {
181
224
  case "push":
182
225
  await runPush(options);
183
226
  break;
184
227
  }
185
228
  }
186
- __name(run, "run");
229
+ __name(run2, "run");
187
230
  async function runPush(options) {
188
231
  const schemaFile = getSchemaFile(options.schema);
189
232
  const prismaSchemaFile = await generateTempPrismaSchema(schemaFile);
190
233
  try {
191
234
  const cmd = [
192
- "prisma db push",
235
+ "db push",
193
236
  ` --schema "${prismaSchemaFile}"`,
194
237
  options.acceptDataLoss ? " --accept-data-loss" : "",
195
238
  options.forceReset ? " --force-reset" : "",
196
239
  " --skip-generate"
197
240
  ].join("");
198
241
  try {
199
- await execPackage(cmd);
242
+ execPrisma(cmd);
200
243
  } catch (err) {
201
244
  handleSubProcessError(err);
202
245
  }
@@ -208,11 +251,29 @@ async function runPush(options) {
208
251
  }
209
252
  __name(runPush, "runPush");
210
253
 
254
+ // src/actions/format.ts
255
+ var import_language2 = require("@zenstackhq/language");
256
+ var import_colors3 = __toESM(require("colors"), 1);
257
+ var import_node_fs3 = __toESM(require("fs"), 1);
258
+ async function run3(options) {
259
+ const schemaFile = getSchemaFile(options.schema);
260
+ let formattedContent;
261
+ try {
262
+ formattedContent = await (0, import_language2.formatDocument)(import_node_fs3.default.readFileSync(schemaFile, "utf-8"));
263
+ } catch (error) {
264
+ console.error(import_colors3.default.red("\u2717 Schema formatting failed."));
265
+ throw error;
266
+ }
267
+ import_node_fs3.default.writeFileSync(schemaFile, formattedContent, "utf-8");
268
+ console.log(import_colors3.default.green("\u2713 Schema formatting completed successfully."));
269
+ }
270
+ __name(run3, "run");
271
+
211
272
  // src/actions/generate.ts
212
273
  var import_common_helpers = require("@zenstackhq/common-helpers");
213
274
  var import_ast2 = require("@zenstackhq/language/ast");
214
275
  var import_utils = require("@zenstackhq/language/utils");
215
- var import_colors2 = __toESM(require("colors"), 1);
276
+ var import_colors4 = __toESM(require("colors"), 1);
216
277
  var import_node_path4 = __toESM(require("path"), 1);
217
278
  var import_ora = __toESM(require("ora"), 1);
218
279
 
@@ -225,7 +286,7 @@ __export(plugins_exports, {
225
286
 
226
287
  // src/plugins/prisma.ts
227
288
  var import_sdk2 = require("@zenstackhq/sdk");
228
- var import_node_fs3 = __toESM(require("fs"), 1);
289
+ var import_node_fs4 = __toESM(require("fs"), 1);
229
290
  var import_node_path2 = __toESM(require("path"), 1);
230
291
  var plugin = {
231
292
  name: "Prisma Schema Generator",
@@ -234,21 +295,21 @@ var plugin = {
234
295
  let outFile = import_node_path2.default.join(defaultOutputPath, "schema.prisma");
235
296
  if (typeof pluginOptions["output"] === "string") {
236
297
  outFile = import_node_path2.default.resolve(defaultOutputPath, pluginOptions["output"]);
237
- if (!import_node_fs3.default.existsSync(import_node_path2.default.dirname(outFile))) {
238
- import_node_fs3.default.mkdirSync(import_node_path2.default.dirname(outFile), {
298
+ if (!import_node_fs4.default.existsSync(import_node_path2.default.dirname(outFile))) {
299
+ import_node_fs4.default.mkdirSync(import_node_path2.default.dirname(outFile), {
239
300
  recursive: true
240
301
  });
241
302
  }
242
303
  }
243
304
  const prismaSchema = await new import_sdk2.PrismaSchemaGenerator(model).generate();
244
- import_node_fs3.default.writeFileSync(outFile, prismaSchema);
305
+ import_node_fs4.default.writeFileSync(outFile, prismaSchema);
245
306
  }
246
307
  };
247
308
  var prisma_default = plugin;
248
309
 
249
310
  // src/plugins/typescript.ts
250
311
  var import_sdk3 = require("@zenstackhq/sdk");
251
- var import_node_fs4 = __toESM(require("fs"), 1);
312
+ var import_node_fs5 = __toESM(require("fs"), 1);
252
313
  var import_node_path3 = __toESM(require("path"), 1);
253
314
  var plugin2 = {
254
315
  name: "TypeScript Schema Generator",
@@ -257,32 +318,37 @@ var plugin2 = {
257
318
  let outDir = defaultOutputPath;
258
319
  if (typeof pluginOptions["output"] === "string") {
259
320
  outDir = import_node_path3.default.resolve(defaultOutputPath, pluginOptions["output"]);
260
- if (!import_node_fs4.default.existsSync(outDir)) {
261
- import_node_fs4.default.mkdirSync(outDir, {
321
+ if (!import_node_fs5.default.existsSync(outDir)) {
322
+ import_node_fs5.default.mkdirSync(outDir, {
262
323
  recursive: true
263
324
  });
264
325
  }
265
326
  }
266
327
  const lite = pluginOptions["lite"] === true;
267
328
  const liteOnly = pluginOptions["liteOnly"] === true;
329
+ const importWithFileExtension = pluginOptions["importWithFileExtension"];
330
+ if (importWithFileExtension && typeof importWithFileExtension !== "string") {
331
+ throw new Error('The "importWithFileExtension" option must be a string if specified.');
332
+ }
268
333
  await new import_sdk3.TsSchemaGenerator().generate(model, {
269
334
  outDir,
270
335
  lite,
271
- liteOnly
336
+ liteOnly,
337
+ importWithFileExtension
272
338
  });
273
339
  }
274
340
  };
275
341
  var typescript_default = plugin2;
276
342
 
277
343
  // src/actions/generate.ts
278
- async function run2(options) {
344
+ async function run4(options) {
279
345
  const start = Date.now();
280
346
  const schemaFile = getSchemaFile(options.schema);
281
347
  const model = await loadSchemaDocument(schemaFile);
282
348
  const outputPath = getOutputPath(options, schemaFile);
283
349
  await runPlugins(schemaFile, model, outputPath, options);
284
350
  if (!options.silent) {
285
- console.log(import_colors2.default.green(`Generation completed successfully in ${Date.now() - start}ms.
351
+ console.log(import_colors4.default.green(`Generation completed successfully in ${Date.now() - start}ms.
286
352
  `));
287
353
  console.log(`You can now create a ZenStack client with it.
288
354
 
@@ -298,7 +364,7 @@ const client = new ZenStackClient(schema, {
298
364
  Check documentation: https://zenstack.dev/docs/3.x`);
299
365
  }
300
366
  }
301
- __name(run2, "run");
367
+ __name(run4, "run");
302
368
  function getOutputPath(options, schemaFile) {
303
369
  if (options.output) {
304
370
  return options.output;
@@ -333,9 +399,18 @@ async function runPlugins(schemaFile, model, outputPath, options) {
333
399
  }
334
400
  }
335
401
  if (cliPlugin) {
402
+ const pluginOptions = getPluginOptions(plugin3);
403
+ if (provider === "@core/typescript") {
404
+ if (pluginOptions["lite"] === void 0) {
405
+ pluginOptions["lite"] = options.lite;
406
+ }
407
+ if (pluginOptions["liteOnly"] === void 0) {
408
+ pluginOptions["liteOnly"] = options.liteOnly;
409
+ }
410
+ }
336
411
  processedPlugins.push({
337
412
  cliPlugin,
338
- pluginOptions: getPluginOptions(plugin3)
413
+ pluginOptions
339
414
  });
340
415
  }
341
416
  }
@@ -402,9 +477,9 @@ function getPluginOptions(plugin3) {
402
477
  __name(getPluginOptions, "getPluginOptions");
403
478
 
404
479
  // src/actions/info.ts
405
- var import_colors3 = __toESM(require("colors"), 1);
480
+ var import_colors5 = __toESM(require("colors"), 1);
406
481
  var import_node_path5 = __toESM(require("path"), 1);
407
- async function run3(projectPath) {
482
+ async function run5(projectPath) {
408
483
  const packages = await getZenStackPackages(projectPath);
409
484
  if (!packages) {
410
485
  console.error("Unable to locate package.json. Are you in a valid project directory?");
@@ -416,13 +491,13 @@ async function run3(projectPath) {
416
491
  if (version2) {
417
492
  versions.add(version2);
418
493
  }
419
- console.log(` ${import_colors3.default.green(pkg.padEnd(20))} ${version2}`);
494
+ console.log(` ${import_colors5.default.green(pkg.padEnd(20))} ${version2}`);
420
495
  }
421
496
  if (versions.size > 1) {
422
- console.warn(import_colors3.default.yellow("WARNING: Multiple versions of Zenstack packages detected. This may cause issues."));
497
+ console.warn(import_colors5.default.yellow("WARNING: Multiple versions of Zenstack packages detected. This may cause issues."));
423
498
  }
424
499
  }
425
- __name(run3, "run");
500
+ __name(run5, "run");
426
501
  async function getZenStackPackages(projectPath) {
427
502
  let pkgJson;
428
503
  const resolvedPath = import_node_path5.default.resolve(projectPath);
@@ -465,8 +540,8 @@ async function getZenStackPackages(projectPath) {
465
540
  __name(getZenStackPackages, "getZenStackPackages");
466
541
 
467
542
  // src/actions/init.ts
468
- var import_colors4 = __toESM(require("colors"), 1);
469
- var import_node_fs5 = __toESM(require("fs"), 1);
543
+ var import_colors6 = __toESM(require("colors"), 1);
544
+ var import_node_fs6 = __toESM(require("fs"), 1);
470
545
  var import_node_path6 = __toESM(require("path"), 1);
471
546
  var import_ora2 = __toESM(require("ora"), 1);
472
547
  var import_package_manager_detector = require("package-manager-detector");
@@ -501,7 +576,7 @@ model Post {
501
576
  `;
502
577
 
503
578
  // src/actions/init.ts
504
- async function run4(projectPath) {
579
+ async function run6(projectPath) {
505
580
  const packages = [
506
581
  {
507
582
  name: "@zenstackhq/cli@next",
@@ -519,7 +594,7 @@ async function run4(projectPath) {
519
594
  name: "npm"
520
595
  };
521
596
  }
522
- console.log(import_colors4.default.gray(`Using package manager: ${pm.agent}`));
597
+ console.log(import_colors6.default.gray(`Using package manager: ${pm.agent}`));
523
598
  for (const pkg of packages) {
524
599
  const resolved = (0, import_package_manager_detector.resolveCommand)(pm.agent, "install", [
525
600
  pkg.name,
@@ -542,24 +617,24 @@ async function run4(projectPath) {
542
617
  }
543
618
  }
544
619
  const generationFolder = "zenstack";
545
- if (!import_node_fs5.default.existsSync(import_node_path6.default.join(projectPath, generationFolder))) {
546
- import_node_fs5.default.mkdirSync(import_node_path6.default.join(projectPath, generationFolder));
620
+ if (!import_node_fs6.default.existsSync(import_node_path6.default.join(projectPath, generationFolder))) {
621
+ import_node_fs6.default.mkdirSync(import_node_path6.default.join(projectPath, generationFolder));
547
622
  }
548
- if (!import_node_fs5.default.existsSync(import_node_path6.default.join(projectPath, generationFolder, "schema.zmodel"))) {
549
- import_node_fs5.default.writeFileSync(import_node_path6.default.join(projectPath, generationFolder, "schema.zmodel"), STARTER_ZMODEL);
623
+ if (!import_node_fs6.default.existsSync(import_node_path6.default.join(projectPath, generationFolder, "schema.zmodel"))) {
624
+ import_node_fs6.default.writeFileSync(import_node_path6.default.join(projectPath, generationFolder, "schema.zmodel"), STARTER_ZMODEL);
550
625
  } else {
551
- console.log(import_colors4.default.yellow("Schema file already exists. Skipping generation of sample."));
626
+ console.log(import_colors6.default.yellow("Schema file already exists. Skipping generation of sample."));
552
627
  }
553
- console.log(import_colors4.default.green("ZenStack project initialized successfully!"));
554
- console.log(import_colors4.default.gray(`See "${generationFolder}/schema.zmodel" for your database schema.`));
555
- console.log(import_colors4.default.gray("Run `zenstack generate` to compile the the schema into a TypeScript file."));
628
+ console.log(import_colors6.default.green("ZenStack project initialized successfully!"));
629
+ console.log(import_colors6.default.gray(`See "${generationFolder}/schema.zmodel" for your database schema.`));
630
+ console.log(import_colors6.default.gray("Run `zenstack generate` to compile the the schema into a TypeScript file."));
556
631
  }
557
- __name(run4, "run");
632
+ __name(run6, "run");
558
633
 
559
634
  // src/actions/migrate.ts
560
- var import_node_fs6 = __toESM(require("fs"), 1);
635
+ var import_node_fs7 = __toESM(require("fs"), 1);
561
636
  var import_node_path7 = __toESM(require("path"), 1);
562
- async function run5(command, options) {
637
+ async function run7(command, options) {
563
638
  const schemaFile = getSchemaFile(options.schema);
564
639
  const prismaSchemaDir = options.migrations ? import_node_path7.default.dirname(options.migrations) : void 0;
565
640
  const prismaSchemaFile = await generateTempPrismaSchema(schemaFile, prismaSchemaDir);
@@ -582,73 +657,73 @@ async function run5(command, options) {
582
657
  break;
583
658
  }
584
659
  } finally {
585
- if (import_node_fs6.default.existsSync(prismaSchemaFile)) {
586
- import_node_fs6.default.unlinkSync(prismaSchemaFile);
660
+ if (import_node_fs7.default.existsSync(prismaSchemaFile)) {
661
+ import_node_fs7.default.unlinkSync(prismaSchemaFile);
587
662
  }
588
663
  }
589
664
  }
590
- __name(run5, "run");
591
- async function runDev(prismaSchemaFile, options) {
665
+ __name(run7, "run");
666
+ function runDev(prismaSchemaFile, options) {
592
667
  try {
593
668
  const cmd = [
594
- "prisma migrate dev",
669
+ "migrate dev",
595
670
  ` --schema "${prismaSchemaFile}"`,
596
671
  " --skip-generate",
597
- options.name ? ` --name ${options.name}` : "",
672
+ options.name ? ` --name "${options.name}"` : "",
598
673
  options.createOnly ? " --create-only" : ""
599
674
  ].join("");
600
- await execPackage(cmd);
675
+ execPrisma(cmd);
601
676
  } catch (err) {
602
677
  handleSubProcessError2(err);
603
678
  }
604
679
  }
605
680
  __name(runDev, "runDev");
606
- async function runReset(prismaSchemaFile, options) {
681
+ function runReset(prismaSchemaFile, options) {
607
682
  try {
608
683
  const cmd = [
609
- "prisma migrate reset",
684
+ "migrate reset",
610
685
  ` --schema "${prismaSchemaFile}"`,
611
686
  " --skip-generate",
612
687
  options.force ? " --force" : ""
613
688
  ].join("");
614
- await execPackage(cmd);
689
+ execPrisma(cmd);
615
690
  } catch (err) {
616
691
  handleSubProcessError2(err);
617
692
  }
618
693
  }
619
694
  __name(runReset, "runReset");
620
- async function runDeploy(prismaSchemaFile, _options) {
695
+ function runDeploy(prismaSchemaFile, _options) {
621
696
  try {
622
697
  const cmd = [
623
- "prisma migrate deploy",
698
+ "migrate deploy",
624
699
  ` --schema "${prismaSchemaFile}"`
625
700
  ].join("");
626
- await execPackage(cmd);
701
+ execPrisma(cmd);
627
702
  } catch (err) {
628
703
  handleSubProcessError2(err);
629
704
  }
630
705
  }
631
706
  __name(runDeploy, "runDeploy");
632
- async function runStatus(prismaSchemaFile, _options) {
707
+ function runStatus(prismaSchemaFile, _options) {
633
708
  try {
634
- await execPackage(`prisma migrate status --schema "${prismaSchemaFile}"`);
709
+ execPrisma(`migrate status --schema "${prismaSchemaFile}"`);
635
710
  } catch (err) {
636
711
  handleSubProcessError2(err);
637
712
  }
638
713
  }
639
714
  __name(runStatus, "runStatus");
640
- async function runResolve(prismaSchemaFile, options) {
715
+ function runResolve(prismaSchemaFile, options) {
641
716
  if (!options.applied && !options.rolledBack) {
642
717
  throw new CliError("Either --applied or --rolled-back option must be provided");
643
718
  }
644
719
  try {
645
720
  const cmd = [
646
- "prisma migrate resolve",
721
+ "migrate resolve",
647
722
  ` --schema "${prismaSchemaFile}"`,
648
- options.applied ? ` --applied ${options.applied}` : "",
649
- options.rolledBack ? ` --rolled-back ${options.rolledBack}` : ""
723
+ options.applied ? ` --applied "${options.applied}"` : "",
724
+ options.rolledBack ? ` --rolled-back "${options.rolledBack}"` : ""
650
725
  ].join("");
651
- await execPackage(cmd);
726
+ execPrisma(cmd);
652
727
  } catch (err) {
653
728
  handleSubProcessError2(err);
654
729
  }
@@ -663,24 +738,10 @@ function handleSubProcessError2(err) {
663
738
  }
664
739
  __name(handleSubProcessError2, "handleSubProcessError");
665
740
 
666
- // src/actions/check.ts
667
- var import_colors5 = __toESM(require("colors"), 1);
668
- async function run6(options) {
669
- const schemaFile = getSchemaFile(options.schema);
670
- try {
671
- await loadSchemaDocument(schemaFile);
672
- console.log(import_colors5.default.green("\u2713 Schema validation completed successfully."));
673
- } catch (error) {
674
- console.error(import_colors5.default.red("\u2717 Schema validation failed."));
675
- throw error;
676
- }
677
- }
678
- __name(run6, "run");
679
-
680
741
  // src/telemetry.ts
681
742
  var import_mixpanel = require("mixpanel");
682
743
  var import_node_crypto2 = require("crypto");
683
- var import_node_fs11 = __toESM(require("fs"), 1);
744
+ var import_node_fs12 = __toESM(require("fs"), 1);
684
745
  var os2 = __toESM(require("os"), 1);
685
746
 
686
747
  // src/constants.ts
@@ -691,14 +752,14 @@ var import_node_process = require("process");
691
752
  var isInCi = import_node_process.env["CI"] !== "0" && import_node_process.env["CI"] !== "false" && ("CI" in import_node_process.env || "CONTINUOUS_INTEGRATION" in import_node_process.env || Object.keys(import_node_process.env).some((key) => key.startsWith("CI_")));
692
753
 
693
754
  // src/utils/is-container.ts
694
- var import_node_fs8 = __toESM(require("fs"), 1);
755
+ var import_node_fs9 = __toESM(require("fs"), 1);
695
756
 
696
757
  // src/utils/is-docker.ts
697
- var import_node_fs7 = __toESM(require("fs"), 1);
758
+ var import_node_fs8 = __toESM(require("fs"), 1);
698
759
  var isDockerCached;
699
760
  function hasDockerEnv() {
700
761
  try {
701
- import_node_fs7.default.statSync("/.dockerenv");
762
+ import_node_fs8.default.statSync("/.dockerenv");
702
763
  return true;
703
764
  } catch {
704
765
  return false;
@@ -707,7 +768,7 @@ function hasDockerEnv() {
707
768
  __name(hasDockerEnv, "hasDockerEnv");
708
769
  function hasDockerCGroup() {
709
770
  try {
710
- return import_node_fs7.default.readFileSync("/proc/self/cgroup", "utf8").includes("docker");
771
+ return import_node_fs8.default.readFileSync("/proc/self/cgroup", "utf8").includes("docker");
711
772
  } catch {
712
773
  return false;
713
774
  }
@@ -725,7 +786,7 @@ __name(isDocker, "isDocker");
725
786
  var cachedResult;
726
787
  var hasContainerEnv = /* @__PURE__ */ __name(() => {
727
788
  try {
728
- import_node_fs8.default.statSync("/run/.containerenv");
789
+ import_node_fs9.default.statSync("/run/.containerenv");
729
790
  return true;
730
791
  } catch {
731
792
  return false;
@@ -742,7 +803,7 @@ __name(isInContainer, "isInContainer");
742
803
  // src/utils/is-wsl.ts
743
804
  var import_node_process2 = __toESM(require("process"), 1);
744
805
  var import_node_os = __toESM(require("os"), 1);
745
- var import_node_fs9 = __toESM(require("fs"), 1);
806
+ var import_node_fs10 = __toESM(require("fs"), 1);
746
807
  var isWsl = /* @__PURE__ */ __name(() => {
747
808
  if (import_node_process2.default.platform !== "linux") {
748
809
  return false;
@@ -751,7 +812,7 @@ var isWsl = /* @__PURE__ */ __name(() => {
751
812
  return true;
752
813
  }
753
814
  try {
754
- return import_node_fs9.default.readFileSync("/proc/version", "utf8").toLowerCase().includes("microsoft");
815
+ return import_node_fs10.default.readFileSync("/proc/version", "utf8").toLowerCase().includes("microsoft");
755
816
  } catch {
756
817
  return false;
757
818
  }
@@ -815,18 +876,18 @@ function getMachineId() {
815
876
  __name(getMachineId, "getMachineId");
816
877
 
817
878
  // src/utils/version-utils.ts
818
- var import_colors6 = __toESM(require("colors"), 1);
819
- var import_node_fs10 = __toESM(require("fs"), 1);
879
+ var import_colors7 = __toESM(require("colors"), 1);
880
+ var import_node_fs11 = __toESM(require("fs"), 1);
820
881
  var import_node_path8 = __toESM(require("path"), 1);
821
882
  var import_node_url = require("url");
822
883
  var import_semver = __toESM(require("semver"), 1);
823
- var import_meta = {};
884
+ var import_meta2 = {};
824
885
  var CHECK_VERSION_TIMEOUT = 2e3;
825
886
  var VERSION_CHECK_TAG = "next";
826
887
  function getVersion() {
827
888
  try {
828
- const _dirname = typeof __dirname !== "undefined" ? __dirname : import_node_path8.default.dirname((0, import_node_url.fileURLToPath)(import_meta.url));
829
- return JSON.parse(import_node_fs10.default.readFileSync(import_node_path8.default.join(_dirname, "../package.json"), "utf8")).version;
889
+ const _dirname = typeof __dirname !== "undefined" ? __dirname : import_node_path8.default.dirname((0, import_node_url.fileURLToPath)(import_meta2.url));
890
+ return JSON.parse(import_node_fs11.default.readFileSync(import_node_path8.default.join(_dirname, "../package.json"), "utf8")).version;
830
891
  } catch {
831
892
  return void 0;
832
893
  }
@@ -841,7 +902,7 @@ async function checkNewVersion() {
841
902
  return;
842
903
  }
843
904
  if (latestVersion && currVersion && import_semver.default.gt(latestVersion, currVersion)) {
844
- console.log(`A newer version ${import_colors6.default.cyan(latestVersion)} is available.`);
905
+ console.log(`A newer version ${import_colors7.default.cyan(latestVersion)} is available.`);
845
906
  }
846
907
  }
847
908
  __name(checkNewVersion, "checkNewVersion");
@@ -864,7 +925,7 @@ async function getLatestVersion() {
864
925
  __name(getLatestVersion, "getLatestVersion");
865
926
 
866
927
  // src/telemetry.ts
867
- var import_meta2 = {};
928
+ var import_meta3 = {};
868
929
  var Telemetry = class {
869
930
  static {
870
931
  __name(this, "Telemetry");
@@ -955,9 +1016,9 @@ var Telemetry = class {
955
1016
  }
956
1017
  getPrismaVersion() {
957
1018
  try {
958
- const packageJsonPath = import_meta2.resolve("prisma/package.json");
1019
+ const packageJsonPath = import_meta3.resolve("prisma/package.json");
959
1020
  const packageJsonUrl = new URL(packageJsonPath);
960
- const packageJson = JSON.parse(import_node_fs11.default.readFileSync(packageJsonUrl, "utf8"));
1021
+ const packageJson = JSON.parse(import_node_fs12.default.readFileSync(packageJsonUrl, "utf8"));
961
1022
  return packageJson.version;
962
1023
  } catch {
963
1024
  return void 0;
@@ -968,45 +1029,49 @@ var telemetry = new Telemetry();
968
1029
 
969
1030
  // src/index.ts
970
1031
  var generateAction = /* @__PURE__ */ __name(async (options) => {
971
- await telemetry.trackCommand("generate", () => run2(options));
1032
+ await telemetry.trackCommand("generate", () => run4(options));
972
1033
  }, "generateAction");
973
1034
  var migrateAction = /* @__PURE__ */ __name(async (subCommand, options) => {
974
- await telemetry.trackCommand(`migrate ${subCommand}`, () => run5(subCommand, options));
1035
+ await telemetry.trackCommand(`migrate ${subCommand}`, () => run7(subCommand, options));
975
1036
  }, "migrateAction");
976
1037
  var dbAction = /* @__PURE__ */ __name(async (subCommand, options) => {
977
- await telemetry.trackCommand(`db ${subCommand}`, () => run(subCommand, options));
1038
+ await telemetry.trackCommand(`db ${subCommand}`, () => run2(subCommand, options));
978
1039
  }, "dbAction");
979
1040
  var infoAction = /* @__PURE__ */ __name(async (projectPath) => {
980
- await telemetry.trackCommand("info", () => run3(projectPath));
1041
+ await telemetry.trackCommand("info", () => run5(projectPath));
981
1042
  }, "infoAction");
982
1043
  var initAction = /* @__PURE__ */ __name(async (projectPath) => {
983
- await telemetry.trackCommand("init", () => run4(projectPath));
1044
+ await telemetry.trackCommand("init", () => run6(projectPath));
984
1045
  }, "initAction");
985
1046
  var checkAction = /* @__PURE__ */ __name(async (options) => {
986
- await telemetry.trackCommand("check", () => run6(options));
1047
+ await telemetry.trackCommand("check", () => run(options));
987
1048
  }, "checkAction");
1049
+ var formatAction = /* @__PURE__ */ __name(async (options) => {
1050
+ await telemetry.trackCommand("format", () => run3(options));
1051
+ }, "formatAction");
988
1052
  function createProgram() {
989
- const program = new import_commander.Command("zen");
990
- program.version(getVersion(), "-v --version", "display CLI version");
991
- const schemaExtensions = import_language2.ZModelLanguageMetaData.fileExtensions.join(", ");
992
- program.description(`${import_colors7.default.bold.blue("\u03B6")} ZenStack is the data layer for modern TypeScript apps.
1053
+ const program = new import_commander.Command("zen").alias("zenstack").helpOption("-h, --help", "Show this help message").version(getVersion(), "-v --version", "Show CLI version");
1054
+ const schemaExtensions = import_language3.ZModelLanguageMetaData.fileExtensions.join(", ");
1055
+ program.description(`${import_colors8.default.bold.blue("\u03B6")} ZenStack is the data layer for modern TypeScript apps.
993
1056
 
994
1057
  Documentation: https://zenstack.dev/docs/3.x`).showHelpAfterError().showSuggestionAfterError();
995
1058
  const schemaOption = new import_commander.Option("--schema <file>", `schema file (with extension ${schemaExtensions}). Defaults to "zenstack/schema.zmodel" unless specified in package.json.`);
996
1059
  const noVersionCheckOption = new import_commander.Option("--no-version-check", "do not check for new version");
997
- program.command("generate").description("Run code generation plugins.").addOption(schemaOption).addOption(noVersionCheckOption).addOption(new import_commander.Option("-o, --output <path>", "default output directory for code generation")).addOption(new import_commander.Option("--lite", "also generate a lite version of schema without attributes").default(false)).addOption(new import_commander.Option("--lite-only", "only generate lite version of schema without attributes").default(false)).addOption(new import_commander.Option("--silent", "suppress all output except errors").default(false)).action(generateAction);
1060
+ program.command("generate").description("Run code generation plugins").addOption(schemaOption).addOption(noVersionCheckOption).addOption(new import_commander.Option("-o, --output <path>", "default output directory for code generation")).addOption(new import_commander.Option("--lite", "also generate a lite version of schema without attributes").default(false)).addOption(new import_commander.Option("--lite-only", "only generate lite version of schema without attributes").default(false)).addOption(new import_commander.Option("--silent", "suppress all output except errors").default(false)).action(generateAction);
998
1061
  const migrateCommand = program.command("migrate").description("Run database schema migration related tasks.");
999
1062
  const migrationsOption = new import_commander.Option("--migrations <path>", 'path that contains the "migrations" directory');
1000
- migrateCommand.command("dev").addOption(schemaOption).addOption(noVersionCheckOption).addOption(new import_commander.Option("-n, --name <name>", "migration name")).addOption(new import_commander.Option("--create-only", "only create migration, do not apply")).addOption(migrationsOption).description("Create a migration from changes in schema and apply it to the database.").action((options) => migrateAction("dev", options));
1001
- migrateCommand.command("reset").addOption(schemaOption).addOption(new import_commander.Option("--force", "skip the confirmation prompt")).addOption(migrationsOption).addOption(noVersionCheckOption).description("Reset your database and apply all migrations, all data will be lost.").action((options) => migrateAction("reset", options));
1002
- migrateCommand.command("deploy").addOption(schemaOption).addOption(noVersionCheckOption).addOption(migrationsOption).description("Deploy your pending migrations to your production/staging database.").action((options) => migrateAction("deploy", options));
1003
- migrateCommand.command("status").addOption(schemaOption).addOption(noVersionCheckOption).addOption(migrationsOption).description("Check the status of your database migrations.").action((options) => migrateAction("status", options));
1004
- migrateCommand.command("resolve").addOption(schemaOption).addOption(noVersionCheckOption).addOption(migrationsOption).addOption(new import_commander.Option("--applied <migration>", "record a specific migration as applied")).addOption(new import_commander.Option("--rolled-back <migration>", "record a specific migration as rolled back")).description("Resolve issues with database migrations in deployment databases.").action((options) => migrateAction("resolve", options));
1005
- const dbCommand = program.command("db").description("Manage your database schema during development.");
1006
- dbCommand.command("push").description("Push the state from your schema to your database.").addOption(schemaOption).addOption(noVersionCheckOption).addOption(new import_commander.Option("--accept-data-loss", "ignore data loss warnings")).addOption(new import_commander.Option("--force-reset", "force a reset of the database before push")).action((options) => dbAction("push", options));
1007
- program.command("info").description("Get information of installed ZenStack packages.").argument("[path]", "project path", ".").addOption(noVersionCheckOption).action(infoAction);
1008
- program.command("init").description("Initialize an existing project for ZenStack.").argument("[path]", "project path", ".").addOption(noVersionCheckOption).action(initAction);
1009
- program.command("check").description("Check a ZModel schema for syntax or semantic errors.").addOption(schemaOption).addOption(noVersionCheckOption).action(checkAction);
1063
+ migrateCommand.command("dev").addOption(schemaOption).addOption(noVersionCheckOption).addOption(new import_commander.Option("-n, --name <name>", "migration name")).addOption(new import_commander.Option("--create-only", "only create migration, do not apply")).addOption(migrationsOption).description("Create a migration from changes in schema and apply it to the database").action((options) => migrateAction("dev", options));
1064
+ migrateCommand.command("reset").addOption(schemaOption).addOption(new import_commander.Option("--force", "skip the confirmation prompt")).addOption(migrationsOption).addOption(noVersionCheckOption).description("Reset your database and apply all migrations, all data will be lost").action((options) => migrateAction("reset", options));
1065
+ migrateCommand.command("deploy").addOption(schemaOption).addOption(noVersionCheckOption).addOption(migrationsOption).description("Deploy your pending migrations to your production/staging database").action((options) => migrateAction("deploy", options));
1066
+ migrateCommand.command("status").addOption(schemaOption).addOption(noVersionCheckOption).addOption(migrationsOption).description("Check the status of your database migrations").action((options) => migrateAction("status", options));
1067
+ migrateCommand.command("resolve").addOption(schemaOption).addOption(noVersionCheckOption).addOption(migrationsOption).addOption(new import_commander.Option("--applied <migration>", "record a specific migration as applied")).addOption(new import_commander.Option("--rolled-back <migration>", "record a specific migration as rolled back")).description("Resolve issues with database migrations in deployment databases").action((options) => migrateAction("resolve", options));
1068
+ const dbCommand = program.command("db").description("Manage your database schema during development");
1069
+ dbCommand.command("push").description("Push the state from your schema to your database").addOption(schemaOption).addOption(noVersionCheckOption).addOption(new import_commander.Option("--accept-data-loss", "ignore data loss warnings")).addOption(new import_commander.Option("--force-reset", "force a reset of the database before push")).action((options) => dbAction("push", options));
1070
+ program.command("info").description("Get information of installed ZenStack packages").argument("[path]", "project path", ".").addOption(noVersionCheckOption).action(infoAction);
1071
+ program.command("init").description("Initialize an existing project for ZenStack").argument("[path]", "project path", ".").addOption(noVersionCheckOption).action(initAction);
1072
+ program.command("check").description("Check a ZModel schema for syntax or semantic errors").addOption(schemaOption).addOption(noVersionCheckOption).action(checkAction);
1073
+ program.command("format").description("Format a ZModel schema file").addOption(schemaOption).addOption(noVersionCheckOption).action(formatAction);
1074
+ program.addHelpCommand("help [command]", "Display help for a command");
1010
1075
  program.hook("preAction", async (_thisCommand, actionCommand) => {
1011
1076
  if (actionCommand.getOptionValue("versionCheck") !== false) {
1012
1077
  await checkNewVersion();
@@ -1027,10 +1092,10 @@ async function main() {
1027
1092
  if (e instanceof import_commander.CommanderError) {
1028
1093
  exitCode = e.exitCode;
1029
1094
  } else if (e instanceof CliError) {
1030
- console.error(import_colors7.default.red(e.message));
1095
+ console.error(import_colors8.default.red(e.message));
1031
1096
  exitCode = 1;
1032
1097
  } else {
1033
- console.error(import_colors7.default.red(`Unhandled error: ${e}`));
1098
+ console.error(import_colors8.default.red(`Unhandled error: ${e}`));
1034
1099
  exitCode = 1;
1035
1100
  }
1036
1101
  }