drizzle-kit 0.22.0-72736ba → 0.22.0-a8a3158

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/bin.cjs CHANGED
@@ -1092,7 +1092,7 @@ var init_views = __esm({
1092
1092
  return source_default.grey(msg);
1093
1093
  };
1094
1094
  error = (error2, greyMsg = "") => {
1095
- return `${source_default.red.bold("Err:")} ${error2} ${greyMsg ? source_default.grey(greyMsg) : ""}`.trim();
1095
+ return `${source_default.bgRed.bold(" Error ")} ${error2} ${greyMsg ? source_default.grey(greyMsg) : ""}`.trim();
1096
1096
  };
1097
1097
  schema = (schema5) => {
1098
1098
  const tables = Object.values(schema5.tables);
@@ -1451,6 +1451,9 @@ Is ${source_default.bold.blue(
1451
1451
  function assertUnreachable(x3) {
1452
1452
  throw new Error("Didn't expect to get here");
1453
1453
  }
1454
+ function softAssertUnreachable(x3) {
1455
+ return null;
1456
+ }
1454
1457
  var originUUID, snapshotVersion, mapValues, mapKeys, mapEntries;
1455
1458
  var init_global = __esm({
1456
1459
  "src/global.ts"() {
@@ -7281,7 +7284,7 @@ var require_coerce = __commonJS({
7281
7284
  var SemVer = require_semver();
7282
7285
  var parse7 = require_parse();
7283
7286
  var { safeRe: re2, t: t2 } = require_re();
7284
- var coerce3 = (version2, options) => {
7287
+ var coerce2 = (version2, options) => {
7285
7288
  if (version2 instanceof SemVer) {
7286
7289
  return version2;
7287
7290
  }
@@ -7316,7 +7319,7 @@ var require_coerce = __commonJS({
7316
7319
  const build = options.includePrerelease && match2[6] ? `+${match2[6]}` : "";
7317
7320
  return parse7(`${major}.${minor}.${patch}${prerelease}${build}`, options);
7318
7321
  };
7319
- module2.exports = coerce3;
7322
+ module2.exports = coerce2;
7320
7323
  }
7321
7324
  });
7322
7325
 
@@ -8317,7 +8320,7 @@ var require_semver2 = __commonJS({
8317
8320
  var gte = require_gte();
8318
8321
  var lte = require_lte();
8319
8322
  var cmp = require_cmp();
8320
- var coerce3 = require_coerce();
8323
+ var coerce2 = require_coerce();
8321
8324
  var Comparator = require_comparator();
8322
8325
  var Range = require_range();
8323
8326
  var satisfies = require_satisfies();
@@ -8355,7 +8358,7 @@ var require_semver2 = __commonJS({
8355
8358
  gte,
8356
8359
  lte,
8357
8360
  cmp,
8358
- coerce: coerce3,
8361
+ coerce: coerce2,
8359
8362
  Comparator,
8360
8363
  Range,
8361
8364
  satisfies,
@@ -8575,12 +8578,137 @@ var init_utils3 = __esm({
8575
8578
  }
8576
8579
  });
8577
8580
 
8581
+ // src/schemaValidator.ts
8582
+ var dialect3, commonSquashedSchema, commonSchema;
8583
+ var init_schemaValidator = __esm({
8584
+ "src/schemaValidator.ts"() {
8585
+ "use strict";
8586
+ init_lib();
8587
+ init_mysqlSchema();
8588
+ init_pgSchema();
8589
+ init_sqliteSchema();
8590
+ dialect3 = enumType(["postgresql", "mysql", "sqlite"]);
8591
+ commonSquashedSchema = unionType([
8592
+ pgSchemaSquashed,
8593
+ mysqlSchemaSquashed,
8594
+ SQLiteSchemaSquashed
8595
+ ]);
8596
+ commonSchema = unionType([
8597
+ pgSchema,
8598
+ mysqlSchema,
8599
+ sqliteSchema
8600
+ ]);
8601
+ }
8602
+ });
8603
+
8604
+ // src/cli/validations/common.ts
8605
+ var assertCollisions, sqliteDriversLiterals, sqliteDriver, postgresDriver, mysqlDriver, driver, configCommonSchema, casing, introspectParams, configIntrospectCliSchema, configGenerateSchema, configPushSchema, wrapParam;
8606
+ var init_common = __esm({
8607
+ "src/cli/validations/common.ts"() {
8608
+ "use strict";
8609
+ init_outputs();
8610
+ init_lib();
8611
+ init_schemaValidator();
8612
+ init_source();
8613
+ assertCollisions = (options, command, inputWhitelist = []) => {
8614
+ const { config, ...rest } = options;
8615
+ let atLeastOneParam = false;
8616
+ for (const key of Object.keys(rest)) {
8617
+ if (inputWhitelist.includes(key))
8618
+ continue;
8619
+ atLeastOneParam = true;
8620
+ }
8621
+ if (!atLeastOneParam && typeof config !== "undefined") {
8622
+ return "config";
8623
+ }
8624
+ if (typeof config === "undefined" && atLeastOneParam) {
8625
+ return "cli";
8626
+ }
8627
+ if (typeof config === "undefined" && !atLeastOneParam) {
8628
+ return "config";
8629
+ }
8630
+ console.log(outputs.common.ambiguousParams(command));
8631
+ process.exit(1);
8632
+ };
8633
+ sqliteDriversLiterals = [
8634
+ literalType("turso"),
8635
+ literalType("d1-http"),
8636
+ literalType("expo")
8637
+ ];
8638
+ sqliteDriver = unionType(sqliteDriversLiterals);
8639
+ postgresDriver = literalType("aws-data-api");
8640
+ mysqlDriver = literalType("mysql2");
8641
+ driver = unionType([sqliteDriver, postgresDriver, mysqlDriver]);
8642
+ configCommonSchema = objectType({
8643
+ dialect: dialect3,
8644
+ schema: unionType([stringType(), stringType().array()]).optional(),
8645
+ out: stringType().optional(),
8646
+ breakpoints: booleanType().optional().default(true),
8647
+ driver: driver.optional(),
8648
+ tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8649
+ schemaFilter: unionType([stringType(), stringType().array()]).default(["public"])
8650
+ });
8651
+ casing = unionType([literalType("camel"), literalType("preserve")]).default(
8652
+ "preserve"
8653
+ );
8654
+ introspectParams = objectType({
8655
+ schema: unionType([stringType(), stringType().array()]).optional(),
8656
+ out: stringType().optional().default("./drizzle"),
8657
+ breakpoints: booleanType().default(true),
8658
+ tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8659
+ schemaFilter: unionType([stringType(), stringType().array()]).default(["public"]),
8660
+ introspect: objectType({
8661
+ casing
8662
+ }).default({ casing: "camel" })
8663
+ });
8664
+ configIntrospectCliSchema = objectType({
8665
+ schema: unionType([stringType(), stringType().array()]).optional(),
8666
+ out: stringType().optional().default("./drizzle"),
8667
+ breakpoints: booleanType().default(true),
8668
+ tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8669
+ schemaFilter: unionType([stringType(), stringType().array()]).default(["public"]),
8670
+ introspectCasing: unionType([literalType("camel"), literalType("preserve")]).default(
8671
+ "camel"
8672
+ )
8673
+ });
8674
+ configGenerateSchema = objectType({
8675
+ schema: unionType([stringType(), stringType().array()]),
8676
+ out: stringType().optional().default("./drizzle"),
8677
+ breakpoints: booleanType().default(true)
8678
+ });
8679
+ configPushSchema = objectType({
8680
+ dialect: dialect3,
8681
+ schema: unionType([stringType(), stringType().array()]),
8682
+ tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8683
+ schemaFilter: unionType([stringType(), stringType().array()]).default(["public"]),
8684
+ verbose: booleanType().default(false),
8685
+ strict: booleanType().default(false),
8686
+ out: stringType().optional()
8687
+ });
8688
+ wrapParam = (name, param, optional = false) => {
8689
+ const check = `[${source_default.green("\u2713")}]`;
8690
+ const cross = `[${source_default.red("x")}]`;
8691
+ if (typeof param === "string") {
8692
+ if (param.length === 0) {
8693
+ return ` ${cross} ${name}: ''`;
8694
+ }
8695
+ return ` ${check} ${name}: '${param}'`;
8696
+ }
8697
+ if (optional) {
8698
+ return source_default.gray(` ${name}?: `);
8699
+ }
8700
+ return ` ${cross} ${name}: ${source_default.gray("undefined")}`;
8701
+ };
8702
+ }
8703
+ });
8704
+
8578
8705
  // src/cli/validations/outputs.ts
8579
8706
  var withStyle, outputs;
8580
8707
  var init_outputs = __esm({
8581
8708
  "src/cli/validations/outputs.ts"() {
8582
8709
  "use strict";
8583
8710
  init_source();
8711
+ init_common();
8584
8712
  withStyle = {
8585
8713
  error: (str) => `${source_default.red(`${source_default.white.bgRed(" Invalid input ")} ${str}`)}`,
8586
8714
  warning: (str) => `${source_default.white.bgGray(" Warning ")} ${str}`,
@@ -8630,14 +8758,17 @@ var init_outputs = __esm({
8630
8758
  },
8631
8759
  sqlite: {
8632
8760
  connection: {
8633
- driver: () => withStyle.error(
8634
- `Either "turso", "libsql", "better-sqlite" are available options for "--driver"`
8635
- ),
8636
- url: (driver2) => withStyle.error(
8637
- `"url" is a required option for driver "${driver2}". You can read more about drizzle.config: https://orm.drizzle.team/kit-docs/config-reference`
8761
+ driver: () => {
8762
+ const listOfDrivers = sqliteDriversLiterals.map((it) => `'${it.value}'`).join(", ");
8763
+ return withStyle.error(
8764
+ `Either ${listOfDrivers} are available options for 'driver' param`
8765
+ );
8766
+ },
8767
+ url: (driver3) => withStyle.error(
8768
+ `"url" is a required option for driver "${driver3}". You can read more about drizzle.config: https://orm.drizzle.team/kit-docs/config-reference`
8638
8769
  ),
8639
- authToken: (driver2) => withStyle.error(
8640
- `"authToken" is a required option for driver "${driver2}". You can read more about drizzle.config: https://orm.drizzle.team/kit-docs/config-reference`
8770
+ authToken: (driver3) => withStyle.error(
8771
+ `"authToken" is a required option for driver "${driver3}". You can read more about drizzle.config: https://orm.drizzle.team/kit-docs/config-reference`
8641
8772
  )
8642
8773
  },
8643
8774
  introspect: {},
@@ -8654,13 +8785,15 @@ var init_mysql = __esm({
8654
8785
  "use strict";
8655
8786
  init_lib();
8656
8787
  init_outputs();
8788
+ init_common();
8789
+ init_views();
8657
8790
  mysqlCredentials = unionType([
8658
8791
  objectType({
8659
- host: stringType(),
8660
- port: coerce.number().optional(),
8661
- user: stringType().default("mysql"),
8662
- password: stringType().optional(),
8663
- database: stringType(),
8792
+ host: stringType().min(1),
8793
+ port: coerce.number().min(1).optional(),
8794
+ user: stringType().min(1).optional(),
8795
+ password: stringType().min(1).optional(),
8796
+ database: stringType().min(1),
8664
8797
  ssl: unionType([
8665
8798
  stringType(),
8666
8799
  objectType({
@@ -8676,35 +8809,47 @@ var init_mysql = __esm({
8676
8809
  ]).optional()
8677
8810
  }),
8678
8811
  objectType({
8679
- url: stringType()
8812
+ url: stringType().min(1)
8680
8813
  })
8681
8814
  ]);
8682
8815
  printConfigConnectionIssues = (options) => {
8683
- if (options.driver !== "mysql2") {
8684
- console.log(outputs.mysql.connection.driver());
8685
- }
8686
- const { uri, connectionString, url, host, database } = options;
8687
- if (!uri && !connectionString && !url && (!host || !database)) {
8688
- console.log(outputs.mysql.connection.required());
8816
+ if ("url" in options) {
8817
+ let text2 = `Please provide required params for MySQL driver:
8818
+ `;
8819
+ console.log(error(text2));
8820
+ console.log(wrapParam("url", options.url));
8821
+ process.exit(1);
8689
8822
  }
8823
+ let text = `Please provide required params for MySQL driver:
8824
+ `;
8825
+ console.log(error(text));
8826
+ console.log(wrapParam("host", options.host));
8827
+ console.log(wrapParam("port", options.port, true));
8828
+ console.log(wrapParam("user", options.user, true));
8829
+ console.log(wrapParam("password", options.password, true));
8830
+ console.log(wrapParam("database", options.database));
8831
+ console.log(wrapParam("ssl", options.ssl, true));
8832
+ process.exit(1);
8690
8833
  };
8691
8834
  }
8692
8835
  });
8693
8836
 
8694
- // src/cli/validations/pg.ts
8837
+ // src/cli/validations/postgres.ts
8695
8838
  var postgresCredentials, printConfigConnectionIssues2;
8696
- var init_pg = __esm({
8697
- "src/cli/validations/pg.ts"() {
8839
+ var init_postgres = __esm({
8840
+ "src/cli/validations/postgres.ts"() {
8698
8841
  "use strict";
8699
8842
  init_lib();
8700
- init_outputs();
8843
+ init_common();
8844
+ init_views();
8701
8845
  postgresCredentials = unionType([
8702
8846
  objectType({
8703
- host: stringType(),
8704
- port: coerce.number().optional(),
8705
- user: stringType().default("postgres"),
8706
- password: stringType().optional(),
8707
- database: stringType(),
8847
+ driver: undefinedType(),
8848
+ host: stringType().min(1),
8849
+ port: coerce.number().min(1).optional(),
8850
+ user: stringType().min(1).optional(),
8851
+ password: stringType().min(1).optional(),
8852
+ database: stringType().min(1),
8708
8853
  ssl: unionType([
8709
8854
  literalType("require"),
8710
8855
  literalType("allow"),
@@ -8712,26 +8857,60 @@ var init_pg = __esm({
8712
8857
  literalType("verify-full"),
8713
8858
  booleanType(),
8714
8859
  objectType({}).passthrough()
8715
- ])
8860
+ ]).optional()
8861
+ }).transform((o) => {
8862
+ delete o.driver;
8863
+ return o;
8716
8864
  }),
8717
8865
  objectType({
8718
- url: stringType()
8866
+ driver: undefinedType(),
8867
+ url: stringType().min(1)
8868
+ }).transform((o) => {
8869
+ delete o.driver;
8870
+ return o;
8719
8871
  }),
8720
8872
  objectType({
8721
8873
  driver: literalType("aws-data-api"),
8722
- database: stringType(),
8723
- secretArn: stringType(),
8724
- resourceArn: stringType()
8874
+ database: stringType().min(1),
8875
+ secretArn: stringType().min(1),
8876
+ resourceArn: stringType().min(1)
8725
8877
  })
8726
8878
  ]);
8727
8879
  printConfigConnectionIssues2 = (options) => {
8728
8880
  if (options.driver === "aws-data-api") {
8729
- console.log(outputs.postgres.connection.awsDataApi());
8730
- return;
8881
+ let text = `Please provide required params for AWS Data API driver:
8882
+ `;
8883
+ console.log(error(text));
8884
+ console.log(wrapParam("database", options.database));
8885
+ console.log(wrapParam("secretArn", options.secretArn));
8886
+ console.log(wrapParam("resourceArn", options.resourceArn));
8887
+ process.exit(1);
8888
+ }
8889
+ if ("url" in options) {
8890
+ let text = `Please provide required params for Postgres driver:
8891
+ `;
8892
+ console.log(error(text));
8893
+ console.log(wrapParam("url", options.url));
8894
+ process.exit(1);
8731
8895
  }
8732
- if (!("url" in options) && !("host" in options || "database" in options)) {
8733
- console.log(outputs.postgres.connection.required());
8896
+ if ("host" in options || "database" in options) {
8897
+ let text = `Please provide required params for Postgres driver:
8898
+ `;
8899
+ console.log(error(text));
8900
+ console.log(wrapParam("host", options.host));
8901
+ console.log(wrapParam("port", options.port, true));
8902
+ console.log(wrapParam("user", options.user, true));
8903
+ console.log(wrapParam("password", options.password, true));
8904
+ console.log(wrapParam("database", options.database));
8905
+ console.log(wrapParam("ssl", options.ssl, true));
8906
+ process.exit(1);
8734
8907
  }
8908
+ console.log(
8909
+ error(
8910
+ `Either connection "url" or "host", "database" are required for database connection`
8911
+ )
8912
+ );
8913
+ process.exit(1);
8735
8914
  };
8736
8915
  }
8737
8916
  });
@@ -8742,154 +8921,77 @@ var init_sqlite = __esm({
8742
8921
  "src/cli/validations/sqlite.ts"() {
8743
8922
  "use strict";
8744
8923
  init_lib();
8745
- init_outputs();
8924
+ init_common();
8925
+ init_views();
8926
+ init_global();
8746
8927
  sqliteCredentials = unionType([
8747
8928
  objectType({
8748
8929
  driver: literalType("turso"),
8749
- url: stringType(),
8750
- authToken: stringType()
8930
+ url: stringType().min(1),
8931
+ authToken: stringType().min(1).optional()
8751
8932
  }),
8752
8933
  objectType({
8753
8934
  driver: literalType("d1-http"),
8754
- accountId: stringType(),
8755
- databaseId: stringType(),
8756
- token: stringType()
8935
+ accountId: stringType().min(1),
8936
+ databaseId: stringType().min(1),
8937
+ token: stringType().min(1)
8757
8938
  }),
8758
8939
  objectType({
8759
- url: stringType()
8940
+ driver: undefinedType(),
8941
+ url: stringType().min(1)
8942
+ }).transform((o) => {
8943
+ delete o.driver;
8944
+ return o;
8760
8945
  })
8761
8946
  ]);
8762
- printConfigConnectionIssues3 = (options) => {
8763
- if (options.driver === "turso") {
8764
- if (!options.url) {
8765
- console.log(outputs.sqlite.connection.url("turso"));
8766
- }
8767
- if (!options.authToken) {
8768
- console.log(outputs.sqlite.connection.authToken("turso"));
8769
- }
8770
- } else if (options.driver === "libsql") {
8771
- if (!options.url) {
8772
- console.log(outputs.sqlite.connection.url("libsql"));
8773
- }
8774
- } else if (options.driver === "better-sqlite") {
8775
- if (!options.url) {
8776
- console.log(outputs.sqlite.connection.url("better-sqlite"));
8947
+ printConfigConnectionIssues3 = (options, command) => {
8948
+ const parsedDriver = sqliteDriver.safeParse(options.driver);
8949
+ const driver3 = parsedDriver.success ? parsedDriver.data : "";
8950
+ if (driver3 === "expo") {
8951
+ if (command === "migrate") {
8952
+ console.log(
8953
+ error(
8954
+ `You can't use 'migrate' command with Expo SQLite, please follow migration instructions in our docs - https://orm.drizzle.team/docs/get-started-sqlite#expo-sqlite`
8955
+ )
8956
+ );
8957
+ } else if (command === "studio") {
8958
+ console.log(
8959
+ error(
8960
+ `You can't use 'studio' command with Expo SQLite, please use Expo Plugin https://www.npmjs.com/package/expo-drizzle-studio-plugin`
8961
+ )
8962
+ );
8963
+ } else if (command === "pull") {
8964
+ console.log(error("You can't use 'pull' command with Expo SQLite"));
8965
+ } else if (command === "push") {
8966
+ console.log(error("You can't use 'push' command with Expo SQLite"));
8967
+ } else {
8968
+ console.log(error("Unexpected error with expo driver \u{1F914}"));
8777
8969
  }
8970
+ process.exit(1);
8971
+ } else if (driver3 === "d1-http") {
8972
+ let text2 = `Please provide required params for D1 HTTP driver:
8973
+ `;
8974
+ console.log(error(text2));
8975
+ console.log(wrapParam("accountId", options.accountId));
8976
+ console.log(wrapParam("databaseId", options.databaseId));
8977
+ console.log(wrapParam("token", options.token));
8978
+ process.exit(1);
8979
+ } else if (driver3 === "turso") {
8980
+ let text2 = `Please provide required params for Turso driver:
8981
+ `;
8982
+ console.log(error(text2));
8983
+ console.log(wrapParam("url", options.url));
8984
+ console.log(wrapParam("authToken", options.authToken));
8985
+ return;
8778
8986
  } else {
8779
- console.log(outputs.sqlite.connection.driver());
8987
+ softAssertUnreachable(driver3);
8780
8988
  }
8781
- };
8782
- }
8783
- });
8784
-
8785
- // src/schemaValidator.ts
8786
- var dialect3, commonSquashedSchema, commonSchema;
8787
- var init_schemaValidator = __esm({
8788
- "src/schemaValidator.ts"() {
8789
- "use strict";
8790
- init_lib();
8791
- init_mysqlSchema();
8792
- init_pgSchema();
8793
- init_sqliteSchema();
8794
- dialect3 = enumType(["postgresql", "mysql", "sqlite"]);
8795
- commonSquashedSchema = unionType([
8796
- pgSchemaSquashed,
8797
- mysqlSchemaSquashed,
8798
- SQLiteSchemaSquashed
8799
- ]);
8800
- commonSchema = unionType([
8801
- pgSchema,
8802
- mysqlSchema,
8803
- sqliteSchema
8804
- ]);
8805
- }
8806
- });
8807
-
8808
- // src/cli/validations/common.ts
8809
- var assertCollisions, sqliteDriver, postgresDriver, mysqlDriver, driver, configCommonSchema, casing, introspectParams, configIntrospectCliSchema, configGenerateSchema, configPushSchema;
8810
- var init_common = __esm({
8811
- "src/cli/validations/common.ts"() {
8812
- "use strict";
8813
- init_outputs();
8814
- init_lib();
8815
- init_schemaValidator();
8816
- assertCollisions = (options, command, inputWhitelist = []) => {
8817
- const { config, ...rest } = options;
8818
- let atLeastOneParam = false;
8819
- for (const key of Object.keys(rest)) {
8820
- if (inputWhitelist.includes(key))
8821
- continue;
8822
- atLeastOneParam = true;
8823
- }
8824
- if (!atLeastOneParam && typeof config !== "undefined") {
8825
- return "config";
8826
- }
8827
- if (typeof config === "undefined" && atLeastOneParam) {
8828
- return "cli";
8829
- }
8830
- if (typeof config === "undefined" && !atLeastOneParam) {
8831
- return "config";
8832
- }
8833
- console.log(outputs.common.ambiguousParams(command));
8989
+ let text = `Please provide required params:
8990
+ `;
8991
+ console.log(error(text));
8992
+ console.log(wrapParam("url", options.url));
8834
8993
  process.exit(1);
8835
8994
  };
8836
- sqliteDriver = unionType([
8837
- literalType("better-sqlite"),
8838
- literalType("turso"),
8839
- literalType("libsql"),
8840
- literalType("d1"),
8841
- literalType("d1-http"),
8842
- literalType("expo")
8843
- ]);
8844
- postgresDriver = literalType("aws-data-api");
8845
- mysqlDriver = literalType("mysql2");
8846
- driver = unionType([sqliteDriver, postgresDriver, mysqlDriver]);
8847
- configCommonSchema = objectType({
8848
- dialect: dialect3,
8849
- schema: unionType([stringType(), stringType().array()]).optional(),
8850
- out: stringType().optional(),
8851
- breakpoints: booleanType().optional().default(true),
8852
- driver: driver.optional(),
8853
- tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8854
- schemaFilter: unionType([stringType(), stringType().array()]).default(["public"])
8855
- });
8856
- casing = unionType([literalType("camel"), literalType("preserve")]).default(
8857
- "preserve"
8858
- );
8859
- introspectParams = objectType({
8860
- schema: unionType([stringType(), stringType().array()]).optional(),
8861
- out: stringType().optional().default("./drizzle"),
8862
- breakpoints: booleanType().default(true),
8863
- tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8864
- schemaFilter: unionType([stringType(), stringType().array()]).default(["public"]),
8865
- introspect: objectType({
8866
- casing
8867
- }).default({ casing: "camel" })
8868
- });
8869
- configIntrospectCliSchema = objectType({
8870
- schema: unionType([stringType(), stringType().array()]).optional(),
8871
- out: stringType().optional().default("./drizzle"),
8872
- breakpoints: booleanType().default(true),
8873
- tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8874
- schemaFilter: unionType([stringType(), stringType().array()]).default(["public"]),
8875
- introspectCasing: unionType([literalType("camel"), literalType("preserve")]).default(
8876
- "camel"
8877
- )
8878
- });
8879
- configGenerateSchema = objectType({
8880
- schema: unionType([stringType(), stringType().array()]),
8881
- out: stringType().optional().default("./drizzle"),
8882
- breakpoints: booleanType().default(true)
8883
- });
8884
- configPushSchema = objectType({
8885
- dialect: dialect3,
8886
- schema: unionType([stringType(), stringType().array()]),
8887
- tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8888
- schemaFilter: unionType([stringType(), stringType().array()]).default(["public"]),
8889
- verbose: booleanType().default(false),
8890
- strict: booleanType().default(false),
8891
- out: stringType().optional()
8892
- });
8893
8995
  }
8894
8996
  });
8895
8997
 
@@ -8915,6 +9017,7 @@ var init_cli = __esm({
8915
9017
  schema: unionType([stringType(), stringType().array()]).optional(),
8916
9018
  tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8917
9019
  schemaFilter: unionType([stringType(), stringType().array()]).optional().default(["public"]),
9020
+ extensionsFilters: literalType("postgis").array().optional(),
8918
9021
  verbose: booleanType().optional(),
8919
9022
  strict: booleanType().optional()
8920
9023
  }).passthrough();
@@ -8924,6 +9027,7 @@ var init_cli = __esm({
8924
9027
  out: stringType().optional().default("drizzle"),
8925
9028
  tablesFilter: unionType([stringType(), stringType().array()]).optional(),
8926
9029
  schemaFilter: unionType([stringType(), stringType().array()]).optional().default(["public"]),
9030
+ extensionsFilters: literalType("postgis").array().optional(),
8927
9031
  introspectCasing: casing,
8928
9032
  breakpoints: booleanType().optional().default(true)
8929
9033
  }).passthrough();
@@ -8949,7 +9053,7 @@ var init_studio = __esm({
8949
9053
  init_mysql();
8950
9054
  init_sqlite();
8951
9055
  init_schemaValidator();
8952
- init_pg();
9056
+ init_postgres();
8953
9057
  credentials = intersectionType(
8954
9058
  postgresCredentials,
8955
9059
  mysqlCredentials,
@@ -9103,7 +9207,7 @@ var require_common = __commonJS({
9103
9207
  function setup(env3) {
9104
9208
  createDebug.debug = createDebug;
9105
9209
  createDebug.default = createDebug;
9106
- createDebug.coerce = coerce3;
9210
+ createDebug.coerce = coerce2;
9107
9211
  createDebug.disable = disable;
9108
9212
  createDebug.enable = enable;
9109
9213
  createDebug.enabled = enabled;
@@ -9244,7 +9348,7 @@ var require_common = __commonJS({
9244
9348
  function toNamespace(regexp) {
9245
9349
  return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*");
9246
9350
  }
9247
- function coerce3(val2) {
9351
+ function coerce2(val2) {
9248
9352
  if (val2 instanceof Error) {
9249
9353
  return val2.stack || val2.message;
9250
9354
  }
@@ -14599,7 +14703,7 @@ var init_utils4 = __esm({
14599
14703
  import_hanji2 = __toESM(require_hanji());
14600
14704
  init_global();
14601
14705
  init_mysql();
14602
- init_pg();
14706
+ init_postgres();
14603
14707
  init_sqlite();
14604
14708
  init_common();
14605
14709
  init_schemaValidator();
@@ -14733,6 +14837,13 @@ var init_utils4 = __esm({
14733
14837
  const tablesFilter = tablesFilterConfig ? typeof tablesFilterConfig === "string" ? [tablesFilterConfig] : tablesFilterConfig : [];
14734
14838
  const schemasFilterConfig = config.schemaFilter;
14735
14839
  const schemasFilter = schemasFilterConfig ? typeof schemasFilterConfig === "string" ? [schemasFilterConfig] : schemasFilterConfig : [];
14840
+ if (config.extensionsFilters) {
14841
+ if (config.extensionsFilters.includes("postgis") && dialect7 === "postgresql") {
14842
+ tablesFilter.push(
14843
+ ...["!geography_columns", "!geometry_columns", "!spatial_ref_sys"]
14844
+ );
14845
+ }
14846
+ }
14736
14847
  if (dialect7 === "postgresql") {
14737
14848
  const parsed = postgresCredentials.safeParse(config);
14738
14849
  if (!parsed.success) {
@@ -14768,7 +14879,7 @@ var init_utils4 = __esm({
14768
14879
  if (dialect7 === "sqlite") {
14769
14880
  const parsed = sqliteCredentials.safeParse(config);
14770
14881
  if (!parsed.success) {
14771
- printConfigConnectionIssues3(config);
14882
+ printConfigConnectionIssues3(config, "pull");
14772
14883
  process.exit(1);
14773
14884
  }
14774
14885
  return {
@@ -14799,6 +14910,13 @@ var init_utils4 = __esm({
14799
14910
  }
14800
14911
  const tablesFilterConfig = config.tablesFilter;
14801
14912
  const tablesFilter = tablesFilterConfig ? typeof tablesFilterConfig === "string" ? [tablesFilterConfig] : tablesFilterConfig : [];
14913
+ if (config.extensionsFilters) {
14914
+ if (config.extensionsFilters.includes("postgis") && dialect7 === "postgresql") {
14915
+ tablesFilter.push(
14916
+ ...["!geography_columns", "!geometry_columns", "!spatial_ref_sys"]
14917
+ );
14918
+ }
14919
+ }
14802
14920
  const schemasFilterConfig = config.schemaFilter;
14803
14921
  const schemasFilter = schemasFilterConfig ? typeof schemasFilterConfig === "string" ? [schemasFilterConfig] : schemasFilterConfig : [];
14804
14922
  if (dialect7 === "postgresql") {
@@ -14836,7 +14954,7 @@ var init_utils4 = __esm({
14836
14954
  if (dialect7 === "sqlite") {
14837
14955
  const parsed = sqliteCredentials.safeParse(config);
14838
14956
  if (!parsed.success) {
14839
- printConfigConnectionIssues3(config);
14957
+ printConfigConnectionIssues3(config, "pull");
14840
14958
  process.exit(1);
14841
14959
  }
14842
14960
  return {
@@ -14901,7 +15019,7 @@ var init_utils4 = __esm({
14901
15019
  if (dialect7 === "sqlite") {
14902
15020
  const parsed = sqliteCredentials.safeParse(flattened);
14903
15021
  if (!parsed.success) {
14904
- printConfigConnectionIssues3(flattened);
15022
+ printConfigConnectionIssues3(flattened, "studio");
14905
15023
  process.exit(1);
14906
15024
  }
14907
15025
  const credentials2 = parsed.data;
@@ -14976,7 +15094,7 @@ var init_utils4 = __esm({
14976
15094
  if (dialect7 === "sqlite") {
14977
15095
  const parsed = sqliteCredentials.safeParse(flattened);
14978
15096
  if (!parsed.success) {
14979
- printConfigConnectionIssues3(flattened);
15097
+ printConfigConnectionIssues3(flattened, "migrate");
14980
15098
  process.exit(1);
14981
15099
  }
14982
15100
  const credentials2 = parsed.data;
@@ -15037,8 +15155,9 @@ var init_utils4 = __esm({
15037
15155
  unregister();
15038
15156
  const res = configCommonSchema.safeParse(content);
15039
15157
  if (!res.success) {
15040
- console.error(res.error);
15041
- console.log("Missing required params");
15158
+ if (!("dialect" in content)) {
15159
+ console.log(error("Please specify 'dialect' param"));
15160
+ }
15042
15161
  process.exit(1);
15043
15162
  }
15044
15163
  return res.data;
@@ -15300,7 +15419,7 @@ The unique constraint ${source_default.underline.blue(
15300
15419
  const name = value.config.name;
15301
15420
  let indexColumns = columns2.map((it) => {
15302
15421
  if ((0, import_drizzle_orm2.is)(it, import_drizzle_orm3.SQL)) {
15303
- return dialect4.sqlToQuery(it).sql;
15422
+ return dialect4.sqlToQuery(it, "indexes").sql;
15304
15423
  } else {
15305
15424
  return it.name;
15306
15425
  }
@@ -16275,7 +16394,7 @@ ${withStyle.errorWarning(
16275
16394
  name: columnName,
16276
16395
  type: (
16277
16396
  // filter vectors, but in future we should filter any extension that was installed by user
16278
- columnAdditionalDT === "USER-DEFINED" && enumType3 !== "vector" ? enumType3 : columnTypeMapped
16397
+ columnAdditionalDT === "USER-DEFINED" && !["vector", "geometry"].includes(enumType3) ? enumType3 : columnTypeMapped
16279
16398
  ),
16280
16399
  typeSchema: enumsToReturn[`${tableSchema}.${enumType3}`] !== void 0 ? enumsToReturn[`${tableSchema}.${enumType3}`].schema : void 0,
16281
16400
  primaryKey: primaryKey.length === 1 && cprimaryKey.length < 2,
@@ -16675,7 +16794,7 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
16675
16794
  const name = value.config.name;
16676
16795
  let indexColumns = columns2.map((it) => {
16677
16796
  if ((0, import_drizzle_orm7.is)(it, import_drizzle_orm7.SQL)) {
16678
- return dialect6.sqlToQuery(it).sql;
16797
+ return dialect6.sqlToQuery(it, "indexes").sql;
16679
16798
  } else {
16680
16799
  return it.name;
16681
16800
  }
@@ -24912,14 +25031,14 @@ var require_to_regex_range = __commonJS({
24912
25031
  }
24913
25032
  return tokens;
24914
25033
  }
24915
- function filterPatterns(arr, comparison, prefix, intersection2, options) {
25034
+ function filterPatterns(arr, comparison, prefix, intersection, options) {
24916
25035
  let result = [];
24917
25036
  for (let ele of arr) {
24918
25037
  let { string } = ele;
24919
- if (!intersection2 && !contains(comparison, "string", string)) {
25038
+ if (!intersection && !contains(comparison, "string", string)) {
24920
25039
  result.push(prefix + string);
24921
25040
  }
24922
- if (intersection2 && contains(comparison, "string", string)) {
25041
+ if (intersection && contains(comparison, "string", string)) {
24923
25042
  result.push(prefix + string);
24924
25043
  }
24925
25044
  }
@@ -111918,11 +112037,11 @@ var init_connections = __esm({
111918
112037
  );
111919
112038
  process.exit(1);
111920
112039
  };
111921
- prepareSqliteParams = (params, driver2) => {
112040
+ prepareSqliteParams = (params, driver3) => {
111922
112041
  return params.map((param) => {
111923
112042
  if (param && typeof param === "object" && "type" in param && "value" in param && param.type === "binary") {
111924
112043
  const value = typeof param.value === "object" ? JSON.stringify(param.value) : param.value;
111925
- if (driver2 === "d1-http") {
112044
+ if (driver3 === "d1-http") {
111926
112045
  return value;
111927
112046
  }
111928
112047
  return Buffer.from(value);
@@ -111932,8 +112051,8 @@ var init_connections = __esm({
111932
112051
  };
111933
112052
  connectToSQLite = async (credentials2) => {
111934
112053
  if ("driver" in credentials2) {
111935
- const { driver: driver2 } = credentials2;
111936
- if (driver2 === "turso") {
112054
+ const { driver: driver3 } = credentials2;
112055
+ if (driver3 === "turso") {
111937
112056
  assertPackages("@libsql/client");
111938
112057
  const { createClient: createClient2 } = await import("@libsql/client");
111939
112058
  const { drizzle } = await import("drizzle-orm/libsql");
@@ -111970,12 +112089,12 @@ var init_connections = __esm({
111970
112089
  }
111971
112090
  };
111972
112091
  return { ...db2, ...proxy, migrate: migrateFn };
111973
- } else if (driver2 === "d1-http") {
112092
+ } else if (driver3 === "d1-http") {
111974
112093
  const { drizzle } = await import("drizzle-orm/sqlite-proxy");
111975
112094
  const { migrate } = await import("drizzle-orm/sqlite-proxy/migrator");
111976
112095
  const remoteCallback = async (sql2, params, method) => {
111977
112096
  const res = await fetch2(
111978
- `https://api.cloudflare.com/client/v4/accounts/${credentials2.accountId}/d1/database/${credentials2.databaseId}/query`,
112097
+ `https://api.cloudflare.com/client/v4/accounts/${credentials2.accountId}/d1/database/${credentials2.databaseId}/${method === "values" ? "raw" : "query"}`,
111979
112098
  {
111980
112099
  method: "POST",
111981
112100
  body: JSON.stringify({ sql: sql2, params }),
@@ -111991,9 +112110,10 @@ var init_connections = __esm({
111991
112110
  data.errors.map((it) => `${it.code}: ${it.message}`).join("\n")
111992
112111
  );
111993
112112
  }
111994
- const rows = data.result[0].results;
112113
+ const result = data.result[0].results;
112114
+ const rows = Array.isArray(result) ? result : result.rows;
111995
112115
  return {
111996
- rows: method === "values" ? rows.map((row) => Object.values(row)) : rows
112116
+ rows
111997
112117
  };
111998
112118
  };
111999
112119
  const drzl = drizzle(remoteCallback);
@@ -112030,7 +112150,7 @@ var init_connections = __esm({
112030
112150
  };
112031
112151
  return { ...db2, ...proxy, migrate: migrateFn };
112032
112152
  } else {
112033
- assertUnreachable(driver2);
112153
+ assertUnreachable(driver3);
112034
112154
  }
112035
112155
  }
112036
112156
  if (await checkPackage("@libsql/client")) {
@@ -115560,7 +115680,10 @@ var init_introspect_pg = __esm({
115560
115680
  "bigint",
115561
115681
  "doublePrecision",
115562
115682
  "uuid",
115563
- "vector"
115683
+ "vector",
115684
+ "point",
115685
+ "line",
115686
+ "geometry"
115564
115687
  ]);
115565
115688
  objToStatement23 = (json) => {
115566
115689
  json = Object.fromEntries(Object.entries(json).filter((it) => it[1]));
@@ -115698,6 +115821,7 @@ var init_introspect_pg = __esm({
115698
115821
  patched = patched.startsWith("time(") ? "time" : patched;
115699
115822
  patched = patched.startsWith("timestamp(") ? "timestamp" : patched;
115700
115823
  patched = patched.startsWith("vector(") ? "vector" : patched;
115824
+ patched = patched.startsWith("geometry(") ? "geometry" : patched;
115701
115825
  return patched;
115702
115826
  }).filter((type) => {
115703
115827
  return pgImportsList.has(type);
@@ -115948,6 +116072,41 @@ var init_introspect_pg = __esm({
115948
116072
  out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
115949
116073
  return out;
115950
116074
  }
116075
+ if (lowered.startsWith("point")) {
116076
+ let out = `${withCasing2(name, casing2)}: point("${name}")`;
116077
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
116078
+ return out;
116079
+ }
116080
+ if (lowered.startsWith("line")) {
116081
+ let out = `${withCasing2(name, casing2)}: point("${name}")`;
116082
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
116083
+ return out;
116084
+ }
116085
+ if (lowered.startsWith("geometry")) {
116086
+ let out = "";
116087
+ let isGeoUnknown = false;
116088
+ if (lowered.length !== 8) {
116089
+ const geometryOptions = lowered.slice(9, -1).split(",");
116090
+ if (geometryOptions.length === 1 && geometryOptions[0] !== "") {
116091
+ out = `${withCasing2(name, casing2)}: geometry("${name}", { type: "${geometryOptions[0]}" })`;
116092
+ } else if (geometryOptions.length === 2) {
116093
+ out = `${withCasing2(name, casing2)}: geometry("${name}", { type: "${geometryOptions[0]}", srid: ${geometryOptions[1]} })`;
116094
+ } else {
116095
+ isGeoUnknown = true;
116096
+ }
116097
+ } else {
116098
+ out = `${withCasing2(name, casing2)}: geometry("${name}")`;
116099
+ }
116100
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
116101
+ if (isGeoUnknown) {
116102
+ let unknown2 = `// TODO: failed to parse geometry type because found more than 2 options inside geometry function '${type}'
116103
+ // Introspect is currently supporting only type and srid options
116104
+ `;
116105
+ unknown2 += ` ${withCasing2(name, casing2)}: unknown("${name}")`;
116106
+ return unknown2;
116107
+ }
116108
+ return out;
116109
+ }
115951
116110
  if (lowered.startsWith("vector")) {
115952
116111
  const split = lowered.split(" ");
115953
116112
  let out;
@@ -116564,10 +116723,19 @@ var init_introspect = __esm({
116564
116723
  const filter2 = (tableName) => {
116565
116724
  if (matchers.length === 0)
116566
116725
  return true;
116567
- for (let i2 = 0; i2 < matchers.length; i2++) {
116568
- const matcher = matchers[i2];
116569
- if (matcher.match(tableName))
116570
- return true;
116726
+ let flags = [];
116727
+ for (let matcher of matchers) {
116728
+ if (matcher.negate) {
116729
+ if (!matcher.match(tableName)) {
116730
+ flags.push(false);
116731
+ }
116732
+ }
116733
+ if (matcher.match(tableName)) {
116734
+ flags.push(true);
116735
+ }
116736
+ }
116737
+ if (flags.length > 0) {
116738
+ return flags.every(Boolean);
116571
116739
  }
116572
116740
  return false;
116573
116741
  };
@@ -116638,10 +116806,19 @@ var init_introspect = __esm({
116638
116806
  const filter2 = (tableName) => {
116639
116807
  if (matchers.length === 0)
116640
116808
  return true;
116641
- for (let i2 = 0; i2 < matchers.length; i2++) {
116642
- const matcher = matchers[i2];
116643
- if (matcher.match(tableName))
116644
- return true;
116809
+ let flags = [];
116810
+ for (let matcher of matchers) {
116811
+ if (matcher.negate) {
116812
+ if (!matcher.match(tableName)) {
116813
+ flags.push(false);
116814
+ }
116815
+ }
116816
+ if (matcher.match(tableName)) {
116817
+ flags.push(true);
116818
+ }
116819
+ }
116820
+ if (flags.length > 0) {
116821
+ return flags.every(Boolean);
116645
116822
  }
116646
116823
  return false;
116647
116824
  };
@@ -116710,10 +116887,19 @@ var init_introspect = __esm({
116710
116887
  const filter2 = (tableName) => {
116711
116888
  if (matchers.length === 0)
116712
116889
  return true;
116713
- for (let i2 = 0; i2 < matchers.length; i2++) {
116714
- const matcher = matchers[i2];
116715
- if (matcher.match(tableName))
116716
- return true;
116890
+ let flags = [];
116891
+ for (let matcher of matchers) {
116892
+ if (matcher.negate) {
116893
+ if (!matcher.match(tableName)) {
116894
+ flags.push(false);
116895
+ }
116896
+ }
116897
+ if (matcher.match(tableName)) {
116898
+ flags.push(true);
116899
+ }
116900
+ }
116901
+ if (flags.length > 0) {
116902
+ return flags.every(Boolean);
116717
116903
  }
116718
116904
  return false;
116719
116905
  };
@@ -120265,13 +120451,13 @@ var init_studio2 = __esm({
120265
120451
  const customDefaults = getCustomDefaults(sqliteSchema2);
120266
120452
  let dbUrl;
120267
120453
  if ("driver" in credentials2) {
120268
- const { driver: driver2 } = credentials2;
120269
- if (driver2 === "d1-http") {
120454
+ const { driver: driver3 } = credentials2;
120455
+ if (driver3 === "d1-http") {
120270
120456
  dbUrl = `d1-http://${credentials2.accountId}/${credentials2.databaseId}/${credentials2.token}`;
120271
- } else if (driver2 === "turso") {
120457
+ } else if (driver3 === "turso") {
120272
120458
  dbUrl = `turso://${credentials2.url}/${credentials2.authToken}`;
120273
120459
  } else {
120274
- assertUnreachable(driver2);
120460
+ assertUnreachable(driver3);
120275
120461
  }
120276
120462
  } else {
120277
120463
  dbUrl = credentials2.url;
@@ -120383,7 +120569,7 @@ var init_studio2 = __esm({
120383
120569
  };
120384
120570
  prepareServer = async ({
120385
120571
  dialect: dialect7,
120386
- driver: driver2,
120572
+ driver: driver3,
120387
120573
  proxy,
120388
120574
  customDefaults,
120389
120575
  schema: drizzleSchema,
@@ -120433,7 +120619,7 @@ var init_studio2 = __esm({
120433
120619
  return c.json({
120434
120620
  version: "6",
120435
120621
  dialect: dialect7,
120436
- driver: driver2,
120622
+ driver: driver3,
120437
120623
  schemaFiles,
120438
120624
  customDefaults: preparedDefaults,
120439
120625
  relations: extractRelations(relationsConfig),
@@ -121970,7 +122156,7 @@ var upCommand = new import_commander.Command("up").option("--config <config>", `
121970
122156
  var pullCommand = new import_commander.Command("introspect").option("--config <config>", `Config path [default=drizzle.config.ts]`).option("--out <out>", `Migrations folder`).option("--dialect <dialect>", "Database dialect").option("--breakpoints", `Prepare SQL statements with breakpoints`).option(
121971
122157
  "--introspect-casing <introspectCasing>",
121972
122158
  "Column object keys naming strategy"
121973
- ).option("--tablesFilter", `Table name filters`).option("--schemaFilter", `Schema name filters`).option("--url <url>", "Database connection URL").option("--host <host>", "Database host").option("--port <port>", "Database port").option("--user <user>", "Database user").option("--password <password>", "Database password").option("--database <database>", "Database database name").option("--ssl <ssl>", "Database ssl").option("--auth-token <authToken>", "Database auth token [Turso]").option("--driver <driver>", "Driver used for querying the database").action(async (options) => {
122159
+ ).option("--tablesFilter", `Table name filters`).option("--extensionsFilters", `Table name filters`).option("--schemaFilter", `Schema name filters`).option("--url <url>", "Database connection URL").option("--host <host>", "Database host").option("--port <port>", "Database port").option("--user <user>", "Database user").option("--password <password>", "Database password").option("--database <database>", "Database database name").option("--ssl <ssl>", "Database ssl").option("--auth-token <authToken>", "Database auth token [Turso]").option("--driver <driver>", "Driver used for querying the database").action(async (options) => {
121974
122160
  await printVersions();
121975
122161
  await assertPackages("drizzle-orm");
121976
122162
  await assertOrmCoreVersion();