@zenstackhq/cli 3.3.0-beta.4 → 3.3.0

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,6 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  ));
29
29
 
30
30
  // src/index.ts
31
+ var import_config = require("dotenv/config");
31
32
  var import_language5 = require("@zenstackhq/language");
32
33
  var import_colors10 = __toESM(require("colors"), 1);
33
34
  var import_commander = require("commander");
@@ -1040,25 +1041,34 @@ async function run9(options) {
1040
1041
  }
1041
1042
  __name(run9, "run");
1042
1043
  function evaluateUrl(value) {
1043
- const env2 = /* @__PURE__ */ __name((varName) => {
1044
+ const envMatch = value.trim().match(/^env\s*\(\s*['"]([^'"]+)['"]\s*\)$/);
1045
+ if (envMatch) {
1046
+ const varName = envMatch[1];
1044
1047
  const envValue = process.env[varName];
1045
1048
  if (!envValue) {
1046
1049
  throw new CliError(`Environment variable ${varName} is not set`);
1047
1050
  }
1048
1051
  return envValue;
1049
- }, "env");
1052
+ } else {
1053
+ return value;
1054
+ }
1055
+ }
1056
+ __name(evaluateUrl, "evaluateUrl");
1057
+ function redactDatabaseUrl(url) {
1050
1058
  try {
1051
- const urlFn = new Function("env", `return ${value}`);
1052
- const url = urlFn(env2);
1053
- return url;
1054
- } catch (err) {
1055
- if (err instanceof CliError) {
1056
- throw err;
1059
+ const parsedUrl = new URL(url);
1060
+ if (parsedUrl.password) {
1061
+ parsedUrl.password = "***";
1062
+ }
1063
+ if (parsedUrl.username) {
1064
+ parsedUrl.username = "***";
1057
1065
  }
1058
- throw new CliError("Could not evaluate datasource url from schema, you could provide it via -d option.");
1066
+ return parsedUrl.toString();
1067
+ } catch {
1068
+ return url;
1059
1069
  }
1060
1070
  }
1061
- __name(evaluateUrl, "evaluateUrl");
1071
+ __name(redactDatabaseUrl, "redactDatabaseUrl");
1062
1072
  function createDialect(provider, databaseUrl, outputPath) {
1063
1073
  switch (provider) {
1064
1074
  case "sqlite": {
@@ -1075,14 +1085,14 @@ function createDialect(provider, databaseUrl, outputPath) {
1075
1085
  });
1076
1086
  }
1077
1087
  case "postgresql":
1078
- console.log(import_colors9.default.gray(`Connecting to PostgreSQL database at: ${databaseUrl}`));
1088
+ console.log(import_colors9.default.gray(`Connecting to PostgreSQL database at: ${redactDatabaseUrl(databaseUrl)}`));
1079
1089
  return new import_postgres.PostgresDialect({
1080
1090
  pool: new import_pg.Pool({
1081
1091
  connectionString: databaseUrl
1082
1092
  })
1083
1093
  });
1084
1094
  case "mysql":
1085
- console.log(import_colors9.default.gray(`Connecting to MySQL database at: ${databaseUrl}`));
1095
+ console.log(import_colors9.default.gray(`Connecting to MySQL database at: ${redactDatabaseUrl(databaseUrl)}`));
1086
1096
  return new import_mysql.MysqlDialect({
1087
1097
  pool: (0, import_mysql2.createPool)(databaseUrl)
1088
1098
  });
@@ -1117,6 +1127,14 @@ function startServer(client, schema, options) {
1117
1127
  console.log(`ZenStack proxy server is running on port: ${options.port}`);
1118
1128
  console.log(`You can visit ZenStack Studio at: ${import_colors9.default.blue("https://studio.zenstack.dev")}`);
1119
1129
  });
1130
+ server.on("error", (err) => {
1131
+ if (err.code === "EADDRINUSE") {
1132
+ console.error(import_colors9.default.red(`Port ${options.port} is already in use. Please choose a different port using -p option.`));
1133
+ } else {
1134
+ throw new CliError(`Failed to start the server: ${err.message}`);
1135
+ }
1136
+ process.exit(1);
1137
+ });
1120
1138
  process.on("SIGTERM", async () => {
1121
1139
  server.close(() => {
1122
1140
  console.log("\nZenStack proxy server closed");
@@ -1141,7 +1159,7 @@ var import_node_fs13 = __toESM(require("fs"), 1);
1141
1159
  var os2 = __toESM(require("os"), 1);
1142
1160
 
1143
1161
  // src/constants.ts
1144
- var TELEMETRY_TRACKING_TOKEN = "<TELEMETRY_TRACKING_TOKEN>";
1162
+ var TELEMETRY_TRACKING_TOKEN = "74944eb779d7d3b4ce185be843fde9fc";
1145
1163
 
1146
1164
  // src/utils/is-ci.ts
1147
1165
  var import_node_process = require("process");
@@ -1434,7 +1452,7 @@ Arguments following -- are passed to the seed script. E.g.: "zen db seed -- --us
1434
1452
  program.command("init").description("Initialize an existing project for ZenStack").argument("[path]", "project path", ".").addOption(noVersionCheckOption).action(initAction);
1435
1453
  program.command("check").description("Check a ZModel schema for syntax or semantic errors").addOption(schemaOption).addOption(noVersionCheckOption).action(checkAction);
1436
1454
  program.command("format").description("Format a ZModel schema file").addOption(schemaOption).addOption(noVersionCheckOption).action(formatAction);
1437
- program.command("proxy").alias("studio").description("Start the ZenStack proxy server").addOption(schemaOption).addOption(new import_commander.Option("-p, --port <port>", "port to run the proxy server on").default(8008)).addOption(new import_commander.Option("-o, --output <path>", "output directory for `zen generate` command")).addOption(new import_commander.Option("-d, --databaseUrl <url>", "database connection URL")).addOption(new import_commander.Option("-l, --logLevel <level>", "Query log levels (e.g., query, error)")).addOption(noVersionCheckOption).action(proxyAction);
1455
+ program.command("proxy").alias("studio").description("Start the ZenStack proxy server").addOption(schemaOption).addOption(new import_commander.Option("-p, --port <port>", "port to run the proxy server on").default(2311)).addOption(new import_commander.Option("-o, --output <path>", "output directory for `zen generate` command")).addOption(new import_commander.Option("-d, --databaseUrl <url>", "database connection URL")).addOption(new import_commander.Option("-l, --logLevel <level...>", "Query log levels (e.g., query, error)")).addOption(noVersionCheckOption).action(proxyAction);
1438
1456
  program.addHelpCommand("help [command]", "Display help for a command");
1439
1457
  program.hook("preAction", async (_thisCommand, actionCommand) => {
1440
1458
  if (actionCommand.getOptionValue("versionCheck") !== false) {