drizzle-kit 0.24.0-6205f01 → 0.24.0-6386ea9

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.
Files changed (2) hide show
  1. package/bin.cjs +598 -213
  2. package/package.json +3 -3
package/bin.cjs CHANGED
@@ -80519,7 +80519,7 @@ var init_studio2 = __esm({
80519
80519
  }
80520
80520
  });
80521
80521
 
80522
- // ../node_modules/.pnpm/@drizzle-team+brocli@0.8.2/node_modules/@drizzle-team/brocli/index.js
80522
+ // ../node_modules/.pnpm/@drizzle-team+brocli@0.10.1/node_modules/@drizzle-team/brocli/index.js
80523
80523
  var __create2 = Object.create;
80524
80524
  var __defProp2 = Object.defineProperty;
80525
80525
  var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
@@ -80966,130 +80966,299 @@ var require_shell_quote = __commonJS2({
80966
80966
  }
80967
80967
  });
80968
80968
  var BroCliError = class extends Error {
80969
- constructor(message) {
80969
+ constructor(message, event) {
80970
80970
  const errPrefix = "BroCli error: ";
80971
80971
  super(message === void 0 ? message : `${errPrefix}${message}`);
80972
+ this.event = event;
80972
80973
  }
80973
80974
  };
80974
80975
  var import_clone = __toESM2(require_clone(), 1);
80975
- var import_shell_quote = __toESM2(require_shell_quote(), 1);
80976
- var defaultTheme = (calledFor) => {
80977
- if (Array.isArray(calledFor)) {
80978
- const cmds = calledFor.filter((cmd) => !cmd.hidden);
80979
- const tableCmds = cmds.map((cmd) => ({
80980
- name: cmd.name,
80981
- aliases: cmd.aliases ? cmd.aliases.join(", ") : "-",
80982
- description: cmd.description ?? "-"
80983
- }));
80984
- console.log(`Here's the list of all available commands:`);
80985
- console.table(tableCmds);
80986
- console.log(
80987
- "To read the details about any particular command type: [commandName] --help"
80988
- );
80989
- } else {
80990
- const options = calledFor.options ? Object.values(calledFor.options).filter((opt) => {
80991
- var _a;
80992
- return !((_a = opt.config) == null ? void 0 : _a.isHidden);
80993
- }).map(
80994
- ({ config: opt }) => ({
80995
- name: opt.name,
80996
- aliases: opt.aliases.length ? `${opt.aliases.join(", ")}` : "-",
80997
- description: opt.description ?? "-",
80998
- type: opt.type,
80999
- required: opt.isRequired ? "\u2713" : "\u2717"
81000
- })
81001
- ) : void 0;
81002
- console.log(
81003
- `Command: ${calledFor.name}${calledFor.aliases ? ` [${calledFor.aliases.join(", ")}]` : ""}${calledFor.description ? ` - ${calledFor.description}` : ""}`
81004
- );
81005
- if (!(options == null ? void 0 : options.length))
81006
- return;
81007
- console.log("\nOptions:");
81008
- console.table(options);
80976
+ var getOptionTypeText = (option) => {
80977
+ let result = "";
80978
+ switch (option.type) {
80979
+ case "boolean":
80980
+ result = "";
80981
+ break;
80982
+ case "number": {
80983
+ if ((option.minVal ?? option.maxVal) !== void 0) {
80984
+ let text = "";
80985
+ if (option.isInt)
80986
+ text = text + `integer `;
80987
+ if (option.minVal !== void 0)
80988
+ text = text + `[${option.minVal};`;
80989
+ else
80990
+ text = text + `(\u221E;`;
80991
+ if (option.maxVal !== void 0)
80992
+ text = text + `${option.maxVal}]`;
80993
+ else
80994
+ text = text + `\u221E)`;
80995
+ result = text;
80996
+ break;
80997
+ }
80998
+ if (option.isInt) {
80999
+ result = "integer";
81000
+ break;
81001
+ }
81002
+ result = "number";
81003
+ break;
81004
+ }
81005
+ case "string": {
81006
+ if (option.enumVals) {
81007
+ result = "[ " + option.enumVals.join(" | ") + " ]";
81008
+ break;
81009
+ }
81010
+ result = "string";
81011
+ break;
81012
+ }
81013
+ case "positional": {
81014
+ result = `${option.isRequired ? "<" : "["}${option.enumVals ? option.enumVals.join("|") : option.name}${option.isRequired ? ">" : "]"}`;
81015
+ break;
81016
+ }
81017
+ }
81018
+ if (option.isRequired && option.type !== "positional")
81019
+ result = "!" + result.length ? " " : "" + result;
81020
+ return result;
81021
+ };
81022
+ var defaultEventHandler = async (event) => {
81023
+ var _a;
81024
+ switch (event.type) {
81025
+ case "command_help": {
81026
+ const command2 = event.command;
81027
+ const commandName = getCommandNameWithParents(command2);
81028
+ const cliName = event.name;
81029
+ const desc = command2.desc ?? command2.shortDesc;
81030
+ const subs = (_a = command2.subcommands) == null ? void 0 : _a.filter((s2) => !s2.hidden);
81031
+ const subcommands = subs && subs.length ? subs : void 0;
81032
+ if (desc !== void 0) {
81033
+ console.log(`
81034
+ ${desc}`);
81035
+ }
81036
+ const opts = Object.values(command2.options ?? {}).filter(
81037
+ (opt) => !opt.config.isHidden
81038
+ );
81039
+ const positionals = opts.filter((opt) => opt.config.type === "positional");
81040
+ const options = opts.filter((opt) => opt.config.type !== "positional");
81041
+ console.log("\nUsage:");
81042
+ if (command2.handler) {
81043
+ console.log(
81044
+ ` ${cliName ? cliName + " " : ""}${commandName}${positionals.length ? " " + positionals.map(({ config: p2 }) => getOptionTypeText(p2)).join(" ") : ""} [flags]`
81045
+ );
81046
+ } else
81047
+ console.log(` ${cliName ? cliName + " " : ""}${commandName} [command]`);
81048
+ if (command2.aliases) {
81049
+ console.log(`
81050
+ Aliases:`);
81051
+ console.log(` ${[command2.name, ...command2.aliases].join(", ")}`);
81052
+ }
81053
+ if (subcommands) {
81054
+ console.log("\nAvailable Commands:");
81055
+ const padding = 3;
81056
+ const maxLength = subcommands.reduce((p2, e2) => e2.name.length > p2 ? e2.name.length : p2, 0);
81057
+ const paddedLength = maxLength + padding;
81058
+ const preDescPad = 2 + paddedLength;
81059
+ const data = subcommands.map(
81060
+ (s2) => ` ${s2.name.padEnd(paddedLength)}${(() => {
81061
+ const description = s2.shortDesc ?? s2.desc;
81062
+ if (!(description == null ? void 0 : description.length))
81063
+ return "";
81064
+ const split = description.split("\n");
81065
+ const first = split.shift();
81066
+ const final = [first, ...split.map((s22) => "".padEnd(preDescPad) + s22)].join("\n");
81067
+ return final;
81068
+ })()}`
81069
+ ).join("\n");
81070
+ console.log(data);
81071
+ }
81072
+ if (options.length) {
81073
+ const aliasLength = options.reduce((p2, e2) => {
81074
+ const currentLength = e2.config.aliases.reduce((pa, a) => pa + a.length, 0) + (e2.config.aliases.length - 1) * 2 + 1;
81075
+ return currentLength > p2 ? currentLength : p2;
81076
+ }, 0);
81077
+ const paddedAliasLength = aliasLength > 0 ? aliasLength + 1 : 0;
81078
+ const nameLength = options.reduce((p2, e2) => {
81079
+ const typeLen = getOptionTypeText(e2.config).length;
81080
+ const length = typeLen > 0 ? e2.config.name.length + 1 + typeLen : e2.config.name.length;
81081
+ return length > p2 ? length : p2;
81082
+ }, 0) + 3;
81083
+ const preDescPad = paddedAliasLength + nameLength + 2;
81084
+ const data = options.map(
81085
+ ({ config: opt }) => ` ${`${opt.aliases.length ? opt.aliases.join(", ") + "," : ""}`.padEnd(paddedAliasLength)}${`${opt.name}${(() => {
81086
+ const typeText = getOptionTypeText(opt);
81087
+ return typeText.length ? " " + typeText : "";
81088
+ })()}`.padEnd(nameLength)}${(() => {
81089
+ var _a2;
81090
+ if (!((_a2 = opt.description) == null ? void 0 : _a2.length)) {
81091
+ return opt.default !== void 0 ? `default: ${JSON.stringify(opt.default)}` : "";
81092
+ }
81093
+ const split = opt.description.split("\n");
81094
+ const first = split.shift();
81095
+ const def = opt.default !== void 0 ? ` (default: ${JSON.stringify(opt.default)})` : "";
81096
+ const final = [first, ...split.map((s2) => "".padEnd(preDescPad) + s2)].join("\n") + def;
81097
+ return final;
81098
+ })()}`
81099
+ ).join("\n");
81100
+ console.log("\nFlags:");
81101
+ console.log(data);
81102
+ }
81103
+ console.log("\nGlobal flags:");
81104
+ console.log(` -h, --help help for ${commandName}`);
81105
+ console.log(` -v, --version version${cliName ? ` for ${cliName}` : ""}`);
81106
+ if (subcommands) {
81107
+ console.log(
81108
+ `
81109
+ Use "${cliName ? cliName + " " : ""}${commandName} [command] --help" for more information about a command.
81110
+ `
81111
+ );
81112
+ }
81113
+ return true;
81114
+ }
81115
+ case "global_help": {
81116
+ const cliName = event.name;
81117
+ const desc = event.description;
81118
+ const commands = event.commands.filter((c) => !c.hidden);
81119
+ if (desc !== void 0) {
81120
+ console.log(`${desc}
81121
+ `);
81122
+ }
81123
+ console.log("Usage:");
81124
+ console.log(` ${cliName ? cliName + " " : ""}[command]`);
81125
+ if (commands.length) {
81126
+ console.log("\nAvailable Commands:");
81127
+ const padding = 3;
81128
+ const maxLength = commands.reduce((p2, e2) => e2.name.length > p2 ? e2.name.length : p2, 0);
81129
+ const paddedLength = maxLength + padding;
81130
+ const data = commands.map(
81131
+ (\u0441) => ` ${\u0441.name.padEnd(paddedLength)}${(() => {
81132
+ const desc2 = \u0441.shortDesc ?? \u0441.desc;
81133
+ if (!(desc2 == null ? void 0 : desc2.length))
81134
+ return "";
81135
+ const split = desc2.split("\n");
81136
+ const first = split.shift();
81137
+ const final = [first, ...split.map((s2) => "".padEnd(paddedLength + 2) + s2)].join("\n");
81138
+ return final;
81139
+ })()}`
81140
+ ).join("\n");
81141
+ console.log(data);
81142
+ } else {
81143
+ console.log("\nNo available commands.");
81144
+ }
81145
+ console.log("\nFlags:");
81146
+ console.log(` -h, --help help${cliName ? ` for ${cliName}` : ""}`);
81147
+ console.log(` -v, --version version${cliName ? ` for ${cliName}` : ""}`);
81148
+ console.log("\n");
81149
+ return true;
81150
+ }
81151
+ case "version": {
81152
+ return true;
81153
+ }
81154
+ case "error": {
81155
+ let msg;
81156
+ switch (event.violation) {
81157
+ case "above_max": {
81158
+ const matchedName = event.offender.namePart;
81159
+ const data = event.offender.dataPart;
81160
+ const option = event.option;
81161
+ const max = option.maxVal;
81162
+ msg = `Invalid value: number type argument '${matchedName}' expects maximal value of ${max} as an input, got: ${data}`;
81163
+ break;
81164
+ }
81165
+ case "below_min": {
81166
+ const matchedName = event.offender.namePart;
81167
+ const data = event.offender.dataPart;
81168
+ const option = event.option;
81169
+ const min = option.minVal;
81170
+ msg = `Invalid value: number type argument '${matchedName}' expects minimal value of ${min} as an input, got: ${data}`;
81171
+ break;
81172
+ }
81173
+ case "expected_int": {
81174
+ const matchedName = event.offender.namePart;
81175
+ const data = event.offender.dataPart;
81176
+ msg = `Invalid value: number type argument '${matchedName}' expects an integer as an input, got: ${data}`;
81177
+ break;
81178
+ }
81179
+ case "invalid_boolean_syntax": {
81180
+ const matchedName = event.offender.namePart;
81181
+ const data = event.offender.dataPart;
81182
+ msg = `Invalid syntax: boolean type argument '${matchedName}' must have it's value passed in the following formats: ${matchedName}=<value> | ${matchedName} <value> | ${matchedName}.
81183
+ Allowed values: true, false, 0, 1`;
81184
+ break;
81185
+ }
81186
+ case "invalid_string_syntax": {
81187
+ const matchedName = event.offender.namePart;
81188
+ msg = `Invalid syntax: string type argument '${matchedName}' must have it's value passed in the following formats: ${matchedName}=<value> | ${matchedName} <value>`;
81189
+ break;
81190
+ }
81191
+ case "invalid_number_syntax": {
81192
+ const matchedName = event.offender.namePart;
81193
+ msg = `Invalid syntax: number type argument '${matchedName}' must have it's value passed in the following formats: ${matchedName}=<value> | ${matchedName} <value>`;
81194
+ break;
81195
+ }
81196
+ case "invalid_number_value": {
81197
+ const matchedName = event.offender.namePart;
81198
+ const data = event.offender.dataPart;
81199
+ msg = `Invalid value: number type argument '${matchedName}' expects a number as an input, got: ${data}`;
81200
+ break;
81201
+ }
81202
+ case "enum_violation": {
81203
+ const matchedName = event.offender.namePart;
81204
+ const data = event.offender.dataPart;
81205
+ const option = event.option;
81206
+ const values = option.enumVals;
81207
+ msg = option.type === "positional" ? `Invalid value: value for the positional argument '${option.name}' must be either one of the following: ${values.join(", ")}; Received: ${data}` : `Invalid value: value for the argument '${matchedName}' must be either one of the following: ${values.join(", ")}; Received: ${data}`;
81208
+ break;
81209
+ }
81210
+ case "unknown_command_error": {
81211
+ const msg2 = `Unknown command: '${event.offender}'.
81212
+ Type '--help' to get help on the cli.`;
81213
+ console.error(msg2);
81214
+ return true;
81215
+ }
81216
+ case "unknown_subcommand_error": {
81217
+ const cName = getCommandNameWithParents(event.command);
81218
+ const msg2 = `Unknown command: ${cName} ${event.offender}.
81219
+ Type '${cName} --help' to get the help on command.`;
81220
+ console.error(msg2);
81221
+ return true;
81222
+ }
81223
+ case "missing_args_error": {
81224
+ const missingOpts = event.missing;
81225
+ msg = `Command '${command.name}' is missing following required options: ${missingOpts.map((opt) => {
81226
+ const name = opt.shift();
81227
+ const aliases = opt;
81228
+ if (aliases.length)
81229
+ return `${name} [${aliases.join(", ")}]`;
81230
+ return name;
81231
+ }).join(", ")}`;
81232
+ break;
81233
+ }
81234
+ case "unrecognized_args_error": {
81235
+ const { command: command2, unrecognized } = event;
81236
+ msg = `Unrecognized options for command '${command2.name}': ${unrecognized.join(", ")}`;
81237
+ break;
81238
+ }
81239
+ case "unknown_error": {
81240
+ const e2 = event.error;
81241
+ console.error(typeof e2 === "object" && e2 !== null && "message" in e2 ? e2.message : e2);
81242
+ return true;
81243
+ }
81244
+ }
81245
+ console.error(msg);
81246
+ return true;
81247
+ }
81009
81248
  }
81249
+ return false;
81010
81250
  };
81251
+ var eventHandlerWrapper = (customEventHandler) => async (event) => await customEventHandler(event) ? true : await defaultEventHandler(event);
81252
+ var import_shell_quote = __toESM2(require_shell_quote(), 1);
81011
81253
  function isInt(value) {
81012
81254
  return value === Math.floor(value);
81013
81255
  }
81014
- var unknownCommand = (caller) => {
81015
- const msg = `Unknown command: '${caller}'.
81016
- Type '--help' to get help on the cli.`;
81017
- return new Error(msg);
81018
- };
81019
- var unknownSubcommand = (command2, caller) => {
81020
- const name = getCommandNameRecursive(command2);
81021
- const msg = `Unknown command: ${name} ${caller}.
81022
- Type '${name} --help' to get the help on command.`;
81023
- new Error(
81024
- msg
81025
- );
81026
- return new Error(msg);
81027
- };
81028
- var missingRequired = (command2, missingOpts) => {
81029
- const msg = `Command '${command2.name}' is missing following required options: ${missingOpts.map((opt) => {
81030
- const name = opt.shift();
81031
- const aliases = opt;
81032
- if (aliases.length)
81033
- return `${name} [${aliases.join(", ")}]`;
81034
- return name;
81035
- }).join(", ")}`;
81036
- return new Error(msg);
81037
- };
81038
- var unrecognizedOptions = (command2, unrecognizedArgs) => {
81039
- const msg = `Unrecognized options for command '${command2.name}': ${unrecognizedArgs.join(", ")}`;
81040
- return new Error(msg);
81041
- };
81042
- var invalidBooleanSyntax = (matchedName) => {
81043
- return new Error(
81044
- `Invalid syntax: boolean type argument '${matchedName}' must have it's value passed in the following formats: ${matchedName}=<value> | ${matchedName} <value> | ${matchedName}.
81045
- Allowed values: true, false, 0, 1`
81046
- );
81047
- };
81048
- var invalidStringSyntax = (matchedName) => {
81049
- return new Error(
81050
- `Invalid syntax: string type argument '${matchedName}' must have it's value passed in the following formats: ${matchedName}=<value> | ${matchedName} <value>`
81051
- );
81052
- };
81053
- var enumViolation = (matchedName, data, values) => {
81054
- return new Error(
81055
- `Invalid value: value for the argument '${matchedName}' must be either one of the following: ${values.join(", ")}; Received: ${data}`
81056
- );
81057
- };
81058
- var enumViolationPos = (matchedName, data, values) => {
81059
- return new Error(
81060
- `Invalid value: value for the argument '${matchedName}' must be either one of the following: ${values.join(", ")}; Received: ${data}`
81061
- );
81062
- };
81063
- var invalidNumberSyntax = (matchedName) => {
81064
- return new Error(
81065
- `Invalid syntax: number type argument '${matchedName}' must have it's value passed in the following formats: ${matchedName}=<value> | ${matchedName} <value>`
81066
- );
81067
- };
81068
- var invalidNumberValue = (matchedName, data) => {
81069
- return new Error(
81070
- `Invalid value: number type argument '${matchedName}' expects a number as an input, got: ${data}`
81071
- );
81072
- };
81073
- var invalidInteger = (matchedName, data) => {
81074
- return new Error(
81075
- `Invalid value: number type argument '${matchedName}' expects an integer as an input, got: ${data}`
81076
- );
81077
- };
81078
- var belowMin = (matchedName, data, min) => {
81079
- return new Error(
81080
- `Invalid value: number type argument '${matchedName}' expects minimal value of ${min} as an input, got: ${data}`
81081
- );
81082
- };
81083
- var aboveMax = (matchedName, data, max) => {
81084
- return new Error(
81085
- `Invalid value: number type argument '${matchedName}' expects maximal value of ${max} as an input, got: ${data}`
81086
- );
81087
- };
81256
+ var executeOrLog = async (target) => typeof target === "string" ? console.log(target) : target ? await target() : void 0;
81088
81257
  var generatePrefix = (name) => name.startsWith("-") ? name : name.length > 1 ? `--${name}` : `-${name}`;
81089
81258
  var validateOptions = (config) => {
81090
81259
  const cloned = (0, import_clone.default)(config);
81091
81260
  const entries = [];
81092
- const storedNames = {};
81261
+ const storedNames = [];
81093
81262
  const cfgEntries = Object.entries(cloned);
81094
81263
  for (const [key, value] of cfgEntries) {
81095
81264
  const cfg = value._.config;
@@ -81099,13 +81268,13 @@ var validateOptions = (config) => {
81099
81268
  continue;
81100
81269
  if (cfg.name.includes("=")) {
81101
81270
  throw new BroCliError(
81102
- `Can't define option ${cfg.name} - option names and aliases cannot contain '='!`
81271
+ `Can't define option '${generatePrefix(cfg.name)}' - option names and aliases cannot contain '='!`
81103
81272
  );
81104
81273
  }
81105
81274
  for (const alias of cfg.aliases) {
81106
81275
  if (alias.includes("=")) {
81107
81276
  throw new BroCliError(
81108
- `Can't define option ${cfg.name} - option names and aliases cannot contain '='!`
81277
+ `Can't define option '${generatePrefix(cfg.name)}' - option names and aliases cannot contain '='!`
81109
81278
  );
81110
81279
  }
81111
81280
  }
@@ -81123,33 +81292,33 @@ var validateOptions = (config) => {
81123
81292
  for (const name of allNames) {
81124
81293
  const match2 = reservedNames.find((n) => n === name);
81125
81294
  if (match2)
81126
- throw new BroCliError(`Can't define option ${cfg.name} - name '${match2}' is reserved!`);
81295
+ throw new BroCliError(`Can't define option '${cfg.name}' - name '${match2}' is reserved!`);
81127
81296
  }
81128
- const storageVals = Object.values(storedNames);
81129
- for (const storage2 of storageVals) {
81297
+ for (const storage2 of storedNames) {
81130
81298
  const nameOccupier = storage2.find((e2) => e2 === cfg.name);
81131
81299
  if (!nameOccupier)
81132
81300
  continue;
81133
81301
  throw new BroCliError(
81134
- `Can't define option '${cfg.name}': name is already in use by option '${storage2[0]}'!`
81302
+ `Can't define option '${cfg.name}' - name is already in use by option '${storage2[0]}'!`
81135
81303
  );
81136
81304
  }
81137
81305
  for (const alias of cfg.aliases) {
81138
- for (const storage2 of storageVals) {
81306
+ for (const storage2 of storedNames) {
81139
81307
  const nameOccupier = storage2.find((e2) => e2 === alias);
81140
81308
  if (!nameOccupier)
81141
81309
  continue;
81142
81310
  throw new BroCliError(
81143
- `Can't define option '${cfg.name}': alias '${alias}' is already in use by option '${storage2[0]}'!`
81311
+ `Can't define option '${cfg.name}' - alias '${alias}' is already in use by option '${storage2[0]}'!`
81144
81312
  );
81145
81313
  }
81146
81314
  }
81147
- storedNames[cfg.name] = [cfg.name, ...cfg.aliases];
81148
- storedNames[cfg.name].forEach((name, idx) => {
81149
- if (storedNames[cfg.name].findIndex((e2) => e2 === name) === idx)
81315
+ const currentNames = [cfg.name, ...cfg.aliases];
81316
+ storedNames.push(currentNames);
81317
+ currentNames.forEach((name, idx) => {
81318
+ if (currentNames.findIndex((e2) => e2 === name) === idx)
81150
81319
  return;
81151
81320
  throw new BroCliError(
81152
- `Can't define option '${cfg.name}': duplicate aliases '${name}'!`
81321
+ `Can't define option '${cfg.name}' - duplicate alias '${name}'!`
81153
81322
  );
81154
81323
  });
81155
81324
  entries.push([key, { config: cfg, $output: void 0 }]);
@@ -81170,14 +81339,17 @@ var command = (command2) => {
81170
81339
  `Can't define command '${cmd.name}' - command can't have subcommands and positional args at the same time!`
81171
81340
  );
81172
81341
  }
81342
+ if (!command2.handler && !command2.subcommands) {
81343
+ throw new BroCliError(
81344
+ `Can't define command '${cmd.name}' - command without subcommands must have a handler present!`
81345
+ );
81346
+ }
81173
81347
  const processedOptions = command2.options ? validateOptions(command2.options) : void 0;
81174
81348
  cmd.options = processedOptions;
81175
81349
  cmd.name = cmd.name ?? ((_a = cmd.aliases) == null ? void 0 : _a.shift());
81176
81350
  if (!cmd.name)
81177
81351
  throw new BroCliError(`Can't define command without name!`);
81178
81352
  cmd.aliases = ((_b = cmd.aliases) == null ? void 0 : _b.length) ? cmd.aliases : void 0;
81179
- if (!cmd.handler)
81180
- throw new BroCliError(`Can't define command '${cmd.name}' - command must have a handler!`);
81181
81353
  if (cmd.name.startsWith("-")) {
81182
81354
  throw new BroCliError(`Can't define command '${cmd.name}' - command name can't start with '-'!`);
81183
81355
  }
@@ -81207,7 +81379,7 @@ var command = (command2) => {
81207
81379
  }
81208
81380
  return cmd;
81209
81381
  };
81210
- var getCommandInner = (commands, candidates, args) => {
81382
+ var getCommandInner = (commands, candidates, args, cliName, cliDescription) => {
81211
81383
  const { data: arg, originalIndex: index4 } = candidates.shift();
81212
81384
  const command2 = commands.find((c) => {
81213
81385
  const names = c.aliases ? [c.name, ...c.aliases] : [c.name];
@@ -81228,12 +81400,20 @@ var getCommandInner = (commands, candidates, args) => {
81228
81400
  };
81229
81401
  }
81230
81402
  const newCandidates = candidates.map((c) => ({ data: c.data, originalIndex: c.originalIndex - 1 }));
81231
- const subcommand = getCommandInner(command2.subcommands, newCandidates, newArgs);
81232
- if (!subcommand.command)
81233
- throw unknownSubcommand(command2, candidates[0].data);
81403
+ const subcommand = getCommandInner(command2.subcommands, newCandidates, newArgs, cliName, cliDescription);
81404
+ if (!subcommand.command) {
81405
+ throw new BroCliError(void 0, {
81406
+ type: "error",
81407
+ violation: "unknown_subcommand_error",
81408
+ name: cliName,
81409
+ description: cliDescription,
81410
+ command: command2,
81411
+ offender: candidates[0].data
81412
+ });
81413
+ }
81234
81414
  return subcommand;
81235
81415
  };
81236
- var getCommand = (commands, args) => {
81416
+ var getCommand = (commands, args, cliName, cliDescription) => {
81237
81417
  var _a;
81238
81418
  const candidates = [];
81239
81419
  for (let i2 = 0; i2 < args.length; ++i2) {
@@ -81267,15 +81447,23 @@ var getCommand = (commands, args) => {
81267
81447
  args: removeByIndex(args, firstCandidate.originalIndex)
81268
81448
  };
81269
81449
  }
81270
- const { command: command2, args: argsRes } = getCommandInner(commands, candidates, args);
81271
- if (!command2)
81272
- throw unknownCommand(firstCandidate.data);
81450
+ const { command: command2, args: argsRes } = getCommandInner(commands, candidates, args, cliName, cliDescription);
81451
+ if (!command2) {
81452
+ throw new BroCliError(void 0, {
81453
+ type: "error",
81454
+ violation: "unknown_command_error",
81455
+ commands,
81456
+ name: cliName,
81457
+ description: cliDescription,
81458
+ offender: firstCandidate.data
81459
+ });
81460
+ }
81273
81461
  return {
81274
81462
  command: command2,
81275
81463
  args: argsRes
81276
81464
  };
81277
81465
  };
81278
- var parseArg = (options, positionals, arg, nextArg) => {
81466
+ var parseArg = (command2, options, positionals, arg, nextArg, cliName, cliDescription) => {
81279
81467
  let data = void 0;
81280
81468
  const argSplit = arg.split("=");
81281
81469
  const hasEq = arg.includes("=");
@@ -81296,8 +81484,18 @@ var parseArg = (options, positionals, arg, nextArg) => {
81296
81484
  if (!positionals.length)
81297
81485
  return {};
81298
81486
  const pos = positionals.shift();
81299
- if (pos[1].enumVals && !pos[1].enumVals.find((val2) => val2 === dataPart)) {
81300
- throw enumViolationPos(pos[1].name, arg, pos[1].enumVals);
81487
+ if (pos[1].enumVals && !pos[1].enumVals.find((val2) => val2 === arg)) {
81488
+ throw new BroCliError(void 0, {
81489
+ type: "error",
81490
+ name: cliName,
81491
+ description: cliDescription,
81492
+ violation: "enum_violation",
81493
+ command: command2,
81494
+ option: pos[1],
81495
+ offender: {
81496
+ dataPart: arg
81497
+ }
81498
+ });
81301
81499
  }
81302
81500
  data = arg;
81303
81501
  return {
@@ -81332,32 +81530,126 @@ var parseArg = (options, positionals, arg, nextArg) => {
81332
81530
  skipNext = false;
81333
81531
  return true;
81334
81532
  }
81335
- throw invalidBooleanSyntax(match2);
81533
+ throw new BroCliError(void 0, {
81534
+ type: "error",
81535
+ name: cliName,
81536
+ description: cliDescription,
81537
+ violation: "invalid_boolean_syntax",
81538
+ option: opt,
81539
+ command: command2,
81540
+ offender: {
81541
+ namePart,
81542
+ dataPart
81543
+ }
81544
+ });
81336
81545
  } else {
81337
81546
  const match2 = names.find((name) => name === namePart);
81338
81547
  if (!match2)
81339
81548
  return false;
81340
81549
  if (opt.type === "string") {
81341
- if (!hasEq && nextArg === void 0)
81342
- throw invalidStringSyntax(match2);
81550
+ if (!hasEq && nextArg === void 0) {
81551
+ throw new BroCliError(void 0, {
81552
+ type: "error",
81553
+ name: cliName,
81554
+ description: cliDescription,
81555
+ violation: "invalid_string_syntax",
81556
+ option: opt,
81557
+ command: command2,
81558
+ offender: {
81559
+ namePart,
81560
+ dataPart
81561
+ }
81562
+ });
81563
+ }
81343
81564
  if (opt.enumVals && !opt.enumVals.find((val2) => val2 === dataPart)) {
81344
- throw enumViolation(match2, dataPart, opt.enumVals);
81565
+ throw new BroCliError(void 0, {
81566
+ type: "error",
81567
+ name: cliName,
81568
+ description: cliDescription,
81569
+ violation: "enum_violation",
81570
+ option: opt,
81571
+ command: command2,
81572
+ offender: {
81573
+ namePart,
81574
+ dataPart
81575
+ }
81576
+ });
81345
81577
  }
81346
81578
  data = dataPart;
81347
81579
  return true;
81348
81580
  }
81349
- if (!hasEq && nextArg === void 0)
81350
- throw invalidNumberSyntax(match2);
81581
+ if (!hasEq && nextArg === void 0) {
81582
+ throw new BroCliError(void 0, {
81583
+ type: "error",
81584
+ name: cliName,
81585
+ description: cliDescription,
81586
+ violation: "invalid_number_syntax",
81587
+ option: opt,
81588
+ command: command2,
81589
+ offender: {
81590
+ namePart,
81591
+ dataPart
81592
+ }
81593
+ });
81594
+ }
81351
81595
  const numData = Number(dataPart);
81352
- if (isNaN(numData))
81353
- throw invalidNumberValue(match2, dataPart);
81354
- if (opt.isInt && !isInt(numData))
81355
- throw invalidInteger(match2, dataPart);
81356
- if (opt.minVal !== void 0 && numData < opt.minVal)
81357
- throw belowMin(match2, dataPart, opt.minVal);
81358
- if (opt.maxVal !== void 0 && numData > opt.maxVal)
81359
- throw aboveMax(match2, dataPart, opt.maxVal);
81360
- data = dataPart;
81596
+ if (isNaN(numData)) {
81597
+ throw new BroCliError(void 0, {
81598
+ type: "error",
81599
+ name: cliName,
81600
+ description: cliDescription,
81601
+ violation: "invalid_number_value",
81602
+ option: opt,
81603
+ command: command2,
81604
+ offender: {
81605
+ namePart,
81606
+ dataPart
81607
+ }
81608
+ });
81609
+ }
81610
+ if (opt.isInt && !isInt(numData)) {
81611
+ throw new BroCliError(void 0, {
81612
+ type: "error",
81613
+ name: cliName,
81614
+ description: cliDescription,
81615
+ violation: "expected_int",
81616
+ option: opt,
81617
+ command: command2,
81618
+ offender: {
81619
+ namePart,
81620
+ dataPart
81621
+ }
81622
+ });
81623
+ }
81624
+ if (opt.minVal !== void 0 && numData < opt.minVal) {
81625
+ throw new BroCliError(void 0, {
81626
+ type: "error",
81627
+ name: cliName,
81628
+ description: cliDescription,
81629
+ violation: "below_min",
81630
+ option: opt,
81631
+ command: command2,
81632
+ offender: {
81633
+ namePart,
81634
+ dataPart
81635
+ }
81636
+ });
81637
+ }
81638
+ if (opt.maxVal !== void 0 && numData > opt.maxVal) {
81639
+ throw new BroCliError(void 0, {
81640
+ type: "error",
81641
+ name: cliName,
81642
+ description: cliDescription,
81643
+ violation: "above_max",
81644
+ option: opt,
81645
+ command: command2,
81646
+ offender: {
81647
+ namePart,
81648
+ dataPart
81649
+ }
81650
+ });
81651
+ }
81652
+ data = numData;
81361
81653
  return true;
81362
81654
  }
81363
81655
  });
@@ -81368,7 +81660,7 @@ var parseArg = (options, positionals, arg, nextArg) => {
81368
81660
  option: option == null ? void 0 : option[1]
81369
81661
  };
81370
81662
  };
81371
- var parseOptions = (command2, args, omitKeysOfUndefinedOptions) => {
81663
+ var parseOptions = (command2, args, cliName, cliDescription, omitKeysOfUndefinedOptions) => {
81372
81664
  const options = command2.options;
81373
81665
  const optEntries = Object.entries(options ?? {}).map(
81374
81666
  (opt) => [opt[0], opt[1].config]
@@ -81388,16 +81680,16 @@ var parseOptions = (command2, args, omitKeysOfUndefinedOptions) => {
81388
81680
  skipNext,
81389
81681
  isHelp,
81390
81682
  isVersion
81391
- } = parseArg(nonPositionalEntries, positionalEntries, arg, nextArg);
81683
+ } = parseArg(command2, nonPositionalEntries, positionalEntries, arg, nextArg, cliName, cliDescription);
81392
81684
  if (!option)
81393
81685
  unrecognizedArgsArr.push(arg.split("=")[0]);
81394
81686
  if (skipNext)
81395
81687
  ++i2;
81396
- result[name] = data;
81397
81688
  if (isHelp)
81398
81689
  return "help";
81399
81690
  if (isVersion)
81400
81691
  return "version";
81692
+ result[name] = data;
81401
81693
  }
81402
81694
  for (const [optKey, option] of optEntries) {
81403
81695
  const data = result[optKey] ?? option.default;
@@ -81410,19 +81702,29 @@ var parseOptions = (command2, args, omitKeysOfUndefinedOptions) => {
81410
81702
  if (option.isRequired && result[optKey] === void 0)
81411
81703
  missingRequiredArr.push([option.name, ...option.aliases]);
81412
81704
  }
81413
- if (missingRequiredArr.length)
81414
- throw missingRequired(command2, missingRequiredArr);
81415
- if (unrecognizedArgsArr.length)
81416
- throw unrecognizedOptions(command2, unrecognizedArgsArr);
81417
- return result;
81418
- };
81419
- var executeOrLog = async (target) => {
81420
- if (!target || typeof target === "string")
81421
- console.log(target);
81422
- else
81423
- await target();
81705
+ if (missingRequiredArr.length) {
81706
+ throw new BroCliError(void 0, {
81707
+ type: "error",
81708
+ violation: "missing_args_error",
81709
+ name: cliName,
81710
+ description: cliDescription,
81711
+ command: command2,
81712
+ missing: missingRequiredArr
81713
+ });
81714
+ }
81715
+ if (unrecognizedArgsArr.length) {
81716
+ throw new BroCliError(void 0, {
81717
+ type: "error",
81718
+ violation: "unrecognized_args_error",
81719
+ name: cliName,
81720
+ description: cliDescription,
81721
+ command: command2,
81722
+ unrecognized: unrecognizedArgsArr
81723
+ });
81724
+ }
81725
+ return Object.keys(result).length ? result : void 0;
81424
81726
  };
81425
- var getCommandNameRecursive = (command2) => command2.parent ? `${getCommandNameRecursive(command2.parent)} ${command2.name}` : command2.name;
81727
+ var getCommandNameWithParents = (command2) => command2.parent ? `${getCommandNameWithParents(command2.parent)} ${command2.name}` : command2.name;
81426
81728
  var validateCommands = (commands, parent) => {
81427
81729
  const storedNames = {};
81428
81730
  for (const cmd of commands) {
@@ -81431,8 +81733,8 @@ var validateCommands = (commands, parent) => {
81431
81733
  const nameOccupier = storage2.find((e2) => e2 === cmd.name);
81432
81734
  if (!nameOccupier)
81433
81735
  continue;
81434
- throw new Error(
81435
- `Can't define command '${getCommandNameRecursive(cmd)}': name is already in use by command '${parent ? `${getCommandNameRecursive(parent)} ` : ""}${storage2[0]}'!`
81736
+ throw new BroCliError(
81737
+ `Can't define command '${getCommandNameWithParents(cmd)}': name is already in use by command '${parent ? `${getCommandNameWithParents(parent)} ` : ""}${storage2[0]}'!`
81436
81738
  );
81437
81739
  }
81438
81740
  if (cmd.aliases) {
@@ -81441,8 +81743,8 @@ var validateCommands = (commands, parent) => {
81441
81743
  const nameOccupier = storage2.find((e2) => e2 === alias);
81442
81744
  if (!nameOccupier)
81443
81745
  continue;
81444
- throw new Error(
81445
- `Can't define command '${getCommandNameRecursive(cmd)}': alias '${alias}' is already in use by command '${parent ? `${getCommandNameRecursive(parent)} ` : ""}${storage2[0]}'!`
81746
+ throw new BroCliError(
81747
+ `Can't define command '${getCommandNameWithParents(cmd)}': alias '${alias}' is already in use by command '${parent ? `${getCommandNameWithParents(parent)} ` : ""}${storage2[0]}'!`
81446
81748
  );
81447
81749
  }
81448
81750
  }
@@ -81454,53 +81756,135 @@ var validateCommands = (commands, parent) => {
81454
81756
  return commands;
81455
81757
  };
81456
81758
  var removeByIndex = (arr, idx) => [...arr.slice(0, idx), ...arr.slice(idx + 1, arr.length)];
81457
- var help = async (command2, commands, helpHandler) => typeof command2 === "object" ? command2.help !== void 0 ? await executeOrLog(command2.help) : await helpHandler(command2) : await helpHandler(commands);
81458
- var rawCli = async (commands, config) => {
81759
+ var run = async (commands, config) => {
81459
81760
  var _a, _b;
81460
- const processedCmds = validateCommands(commands);
81761
+ const eventHandler = (config == null ? void 0 : config.theme) ? eventHandlerWrapper(config.theme) : defaultEventHandler;
81461
81762
  const argSource = (config == null ? void 0 : config.argSource) ?? process.argv;
81462
81763
  const version3 = config == null ? void 0 : config.version;
81463
- const helpHandler = (config == null ? void 0 : config.help) ?? defaultTheme;
81764
+ const help = config == null ? void 0 : config.help;
81464
81765
  const omitKeysOfUndefinedOptions = (config == null ? void 0 : config.omitKeysOfUndefinedOptions) ?? false;
81465
- let args = argSource.slice(2, argSource.length);
81466
- if (!args.length)
81467
- return await helpHandler(processedCmds);
81468
- const helpIndex = args.findIndex((arg) => arg === "--help" || arg === "-h");
81469
- if (helpIndex !== -1 && (helpIndex > 0 ? ((_a = args[helpIndex - 1]) == null ? void 0 : _a.startsWith("-")) && !args[helpIndex - 1].includes("=") ? false : true : true)) {
81470
- const command3 = getCommand(processedCmds, args).command;
81471
- return help(command3, processedCmds, helpHandler);
81472
- }
81473
- const versionIndex = args.findIndex((arg) => arg === "--version" || arg === "-v");
81474
- if (versionIndex !== -1 && (versionIndex > 0 ? ((_b = args[versionIndex - 1]) == null ? void 0 : _b.startsWith("-")) ? false : true : true)) {
81475
- return await executeOrLog(version3);
81476
- }
81477
- const { command: command2, args: newArgs } = getCommand(processedCmds, args);
81478
- if (!command2)
81479
- return helpHandler(processedCmds);
81480
- if (command2 === "help") {
81481
- const { command: helpCommand } = getCommand(processedCmds, newArgs);
81482
- return help(helpCommand, processedCmds, helpHandler);
81483
- }
81484
- const optionResult = parseOptions(command2, newArgs, omitKeysOfUndefinedOptions);
81485
- if (optionResult === "help")
81486
- return await help(command2, commands, helpHandler);
81487
- if (optionResult === "version")
81488
- return await executeOrLog(version3);
81489
- if (optionResult) {
81490
- if (config == null ? void 0 : config.hook)
81491
- await config.hook("pre", command2);
81492
- await command2.handler(command2.transform ? await command2.transform(optionResult) : optionResult);
81493
- if (config == null ? void 0 : config.hook)
81494
- await config.hook("post", command2);
81495
- }
81496
- return void 0;
81497
- };
81498
- var run = async (commands, config) => {
81766
+ const cliName = config == null ? void 0 : config.name;
81767
+ const cliDescription = config == null ? void 0 : config.description;
81499
81768
  try {
81500
- await rawCli(commands, config);
81769
+ const processedCmds = validateCommands(commands);
81770
+ let args = argSource.slice(2, argSource.length);
81771
+ if (!args.length) {
81772
+ return help !== void 0 ? await executeOrLog(help) : await eventHandler({
81773
+ type: "global_help",
81774
+ description: cliDescription,
81775
+ name: cliName,
81776
+ commands: processedCmds
81777
+ });
81778
+ }
81779
+ const helpIndex = args.findIndex((arg) => arg === "--help" || arg === "-h");
81780
+ if (helpIndex !== -1 && (helpIndex > 0 ? ((_a = args[helpIndex - 1]) == null ? void 0 : _a.startsWith("-")) && !args[helpIndex - 1].includes("=") ? false : true : true)) {
81781
+ const command3 = getCommand(processedCmds, args, cliName, cliDescription).command;
81782
+ if (typeof command3 === "object") {
81783
+ return command3.help !== void 0 ? await executeOrLog(command3.help) : await eventHandler({
81784
+ type: "command_help",
81785
+ description: cliDescription,
81786
+ name: cliName,
81787
+ command: command3
81788
+ });
81789
+ } else {
81790
+ return help !== void 0 ? await executeOrLog(help) : await eventHandler({
81791
+ type: "global_help",
81792
+ description: cliDescription,
81793
+ name: cliName,
81794
+ commands: processedCmds
81795
+ });
81796
+ }
81797
+ }
81798
+ const versionIndex = args.findIndex((arg) => arg === "--version" || arg === "-v");
81799
+ if (versionIndex !== -1 && (versionIndex > 0 ? ((_b = args[versionIndex - 1]) == null ? void 0 : _b.startsWith("-")) ? false : true : true)) {
81800
+ return version3 !== void 0 ? await executeOrLog(version3) : await eventHandler({
81801
+ type: "version",
81802
+ name: cliName,
81803
+ description: cliDescription
81804
+ });
81805
+ }
81806
+ const { command: command2, args: newArgs } = getCommand(processedCmds, args, cliName, cliDescription);
81807
+ if (!command2) {
81808
+ return help !== void 0 ? await executeOrLog(help) : await eventHandler({
81809
+ type: "global_help",
81810
+ description: cliDescription,
81811
+ name: cliName,
81812
+ commands: processedCmds
81813
+ });
81814
+ }
81815
+ if (command2 === "help") {
81816
+ let helpCommand;
81817
+ let newestArgs = newArgs;
81818
+ do {
81819
+ const res = getCommand(processedCmds, newestArgs, cliName, cliDescription);
81820
+ helpCommand = res.command;
81821
+ newestArgs = res.args;
81822
+ } while (helpCommand === "help");
81823
+ return helpCommand ? helpCommand.help !== void 0 ? await executeOrLog(helpCommand.help) : await eventHandler({
81824
+ type: "command_help",
81825
+ description: cliDescription,
81826
+ name: cliName,
81827
+ command: helpCommand
81828
+ }) : help !== void 0 ? await executeOrLog(help) : await eventHandler({
81829
+ type: "global_help",
81830
+ description: cliDescription,
81831
+ name: cliName,
81832
+ commands: processedCmds
81833
+ });
81834
+ }
81835
+ const optionResult = parseOptions(command2, newArgs, cliName, cliDescription, omitKeysOfUndefinedOptions);
81836
+ if (optionResult === "help") {
81837
+ return command2.help !== void 0 ? await executeOrLog(command2.help) : await eventHandler({
81838
+ type: "command_help",
81839
+ description: cliDescription,
81840
+ name: cliName,
81841
+ command: command2
81842
+ });
81843
+ }
81844
+ if (optionResult === "version") {
81845
+ return version3 !== void 0 ? await executeOrLog(version3) : await eventHandler({
81846
+ type: "version",
81847
+ name: cliName,
81848
+ description: cliDescription
81849
+ });
81850
+ }
81851
+ if (command2.handler) {
81852
+ if (config == null ? void 0 : config.hook)
81853
+ await config.hook("before", command2);
81854
+ await command2.handler(command2.transform ? await command2.transform(optionResult) : optionResult);
81855
+ if (config == null ? void 0 : config.hook)
81856
+ await config.hook("after", command2);
81857
+ return;
81858
+ } else {
81859
+ return command2.help !== void 0 ? await executeOrLog(command2.help) : await eventHandler({
81860
+ type: "command_help",
81861
+ description: cliDescription,
81862
+ name: cliName,
81863
+ command: command2
81864
+ });
81865
+ }
81501
81866
  } catch (e2) {
81502
- console.error(typeof e2 === "object" && e2 !== null && "message" in e2 ? e2.message : e2);
81503
- process.exit(1);
81867
+ if (e2 instanceof BroCliError) {
81868
+ if (e2.event)
81869
+ await eventHandler(e2.event);
81870
+ else {
81871
+ if (!(config == null ? void 0 : config.noExit))
81872
+ console.error(e2.message);
81873
+ else
81874
+ return e2.message;
81875
+ }
81876
+ } else {
81877
+ await eventHandler({
81878
+ type: "error",
81879
+ violation: "unknown_error",
81880
+ name: cliName,
81881
+ description: cliDescription,
81882
+ error: e2
81883
+ });
81884
+ }
81885
+ if (!(config == null ? void 0 : config.noExit))
81886
+ process.exit(1);
81887
+ return;
81504
81888
  }
81505
81889
  };
81506
81890
  var OptionBuilderBase = class _OptionBuilderBase {
@@ -81578,7 +81962,7 @@ var OptionBuilderBase = class _OptionBuilderBase {
81578
81962
  max(value) {
81579
81963
  const config = this.config();
81580
81964
  const minVal = config.minVal;
81581
- if (minVal !== void 0 && minVal < value) {
81965
+ if (minVal !== void 0 && minVal > value) {
81582
81966
  throw new BroCliError("Unable to define option's max value to be lower than min value!");
81583
81967
  }
81584
81968
  return new _OptionBuilderBase({ ...config, maxVal: value });
@@ -83402,7 +83786,7 @@ init_utils2();
83402
83786
  var version2 = async () => {
83403
83787
  const { npmVersion } = await ormCoreVersions();
83404
83788
  const ormVersion = npmVersion ? `drizzle-orm: v${npmVersion}` : "";
83405
- const envVersion = "0.24.0-6205f01";
83789
+ const envVersion = "0.24.0-6386ea9";
83406
83790
  const kitVersion = envVersion ? `v${envVersion}` : "--";
83407
83791
  const versions = `drizzle-kit: ${kitVersion}
83408
83792
  ${ormVersion}`;
@@ -83437,6 +83821,7 @@ var legacy = [
83437
83821
  legacyCommand("check:sqlite", "check")
83438
83822
  ];
83439
83823
  run([generate, migrate, pull, push, studio, up, check, drop, ...legacy], {
83824
+ name: "drizzle-kit",
83440
83825
  version: version2
83441
83826
  });
83442
83827
  /*! Bundled license information:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-kit",
3
- "version": "0.24.0-6205f01",
3
+ "version": "0.24.0-6386ea9",
4
4
  "homepage": "https://orm.drizzle.team",
5
5
  "keywords": [
6
6
  "drizzle",
@@ -42,7 +42,7 @@
42
42
  "publish": "npm publish package.tgz"
43
43
  },
44
44
  "dependencies": {
45
- "@drizzle-team/brocli": "^0.8.2",
45
+ "@drizzle-team/brocli": "^0.10.1",
46
46
  "@esbuild-kit/esm-loader": "^2.5.5",
47
47
  "esbuild": "^0.19.7",
48
48
  "esbuild-register": "^3.5.0"
@@ -92,7 +92,7 @@
92
92
  "hono": "^4.1.5",
93
93
  "json-diff": "1.0.6",
94
94
  "minimatch": "^7.4.3",
95
- "mysql2": "2.3.3",
95
+ "mysql2": "3.3.3",
96
96
  "node-fetch": "^3.3.2",
97
97
  "pg": "^8.11.5",
98
98
  "pluralize": "^8.0.0",