drizzle-kit 0.22.0-72736ba → 0.22.0-a8a3158

Sign up to get free protection for your applications and to get access to all the features.
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();