drizzle-kit 0.18.1-f3800bf → 0.19.0-07024c4

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 (4) hide show
  1. package/index.cjs +27846 -28508
  2. package/index.d.ts +52 -0
  3. package/package.json +12 -5
  4. package/utils.js +59 -32
package/index.d.ts CHANGED
@@ -3,6 +3,12 @@ export type Config = {
3
3
  breakpoints?: boolean | undefined;
4
4
  tablesFilter?: string | string[] | undefined;
5
5
  schema?: string | string[];
6
+ verbose?: boolean | undefined;
7
+ strict?: boolean | undefined;
8
+ } & {
9
+ introspect?: {
10
+ casing: "camel" | "preserve";
11
+ };
6
12
  } & ({
7
13
  port?: number | undefined;
8
14
  password?: string | undefined;
@@ -11,4 +17,50 @@ export type Config = {
11
17
  database: string;
12
18
  } | {
13
19
  connectionString: string;
20
+ } | {
21
+ driver: "turso";
22
+ dbCredentials: {
23
+ url: string;
24
+ authToken?: string;
25
+ };
26
+ } | {
27
+ driver: "better-sqlite";
28
+ dbCredentials: {
29
+ url: string;
30
+ };
31
+ } | {
32
+ driver: "libsql";
33
+ dbCredentials: {
34
+ url: string;
35
+ };
36
+ } | {
37
+ driver: "pg";
38
+ dbCredentials: {
39
+ host: string;
40
+ port?: number;
41
+ user?: string;
42
+ password?: string;
43
+ database: string;
44
+ ssl?: boolean;
45
+ };
46
+ } | {
47
+ driver: "pg";
48
+ dbCredentials: {
49
+ connectionString: string;
50
+ };
51
+ } | {
52
+ driver: "mysql2";
53
+ dbCredentials: {
54
+ host: string;
55
+ port?: number;
56
+ user?: string;
57
+ password?: string;
58
+ database: string;
59
+ connectionString: string;
60
+ };
61
+ } | {
62
+ driver: "mysql2";
63
+ dbCredentials: {
64
+ connectionString: string;
65
+ };
14
66
  } | {});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-kit",
3
- "version": "0.18.1-f3800bf",
3
+ "version": "0.19.0-07024c4",
4
4
  "repository": "https://github.com/drizzle-team/drizzle-kit-mirror",
5
5
  "author": "Drizzle Team",
6
6
  "license": "MIT",
@@ -10,14 +10,17 @@
10
10
  "scripts": {
11
11
  "migrate:old": "drizzle-kit generate:pg --out ./dev/migrations-pg --schema ./dev/migrations-pg/schema.ts",
12
12
  "push": "node -r esbuild-register ./src/cli/index.ts push:mysql",
13
+ "push:sqlite": "node -r ./src/loader.mjs ./src/cli/index.ts push:sqlite",
14
+ "try1": "tsx ./dev/test.ts",
13
15
  "migrate:old:mysql": "drizzle-kit generate:mysql --out ./dev/migrations-mysql --schema ./dev/migrations-mysql/schema.ts",
14
16
  "start:pg": "node -r esbuild-register ./src/cli/index.ts generate:pg",
15
- "start:sqlite": "node -r esbuild-register ./src/cli/index.ts generate:sqlite --out ./dev/migrations-sqlite --schema ./dev/migrations-sqlite/schema.ts",
17
+ "start:sqlite": "node -r esbuild-register ./src/cli/index.ts generate:sqlite",
16
18
  "start:mysql": "node -r esbuild-register ./src/cli/index.ts generate:mysql",
17
19
  "check:pg": "node -r esbuild-register ./src/cli/index.ts check --out ./dev/migrations --dialect pg",
18
20
  "introspect:mysql": "node -r esbuild-register ./src/cli/index.ts introspect:mysql --config drizzle.config2.ts",
21
+ "introspect:sqlite": "node -r esbuild-register ./src/cli/index.ts introspect:sqlite --driver=sqlite",
19
22
  "introspect:pg": "node -r esbuild-register ./src/cli/index.ts introspect:pg --out ./dev/introspect-pg --connectionString=postgresql://postgres@localhost:5432/introspect",
20
- "drop": "node -r esbuild-register ./src/cli/index.ts drop --out ./dev/migrations-pg",
23
+ "drop": "node -r esbuild-register ./src/cli/index.ts drop",
21
24
  "up:pg": "node -r esbuild-register ./src/cli/index.ts up:pg --out ./dev/migrations-pg",
22
25
  "up:mysql": "node -r esbuild-register ./src/cli/index.ts up:mysql --out ./dev/migrations-mysql",
23
26
  "check:equedi": "node -r esbuild-register ./src/cli/index.ts check --out ./dev/equedi --dialect pg",
@@ -31,6 +34,7 @@
31
34
  "sim:sqlite": "node -r esbuild-register ./dev/sqlite/index.ts",
32
35
  "test": "ava test --timeout=60s",
33
36
  "build": "rm -rf ./dist && tsx build.ts && tsc -p tsconfig.cli-types.json",
37
+ "build:dev": "rm -rf ./dist && tsx build.dev.ts && tsc -p tsconfig.cli-types.json && chmod +x ./dist/index.cjs",
34
38
  "pack": "build && package",
35
39
  "tsc": "tsc -p tsconfig.build.json",
36
40
  "pub": "cp package.json readme.md dist/ && cd dist && npm publish"
@@ -58,6 +62,8 @@
58
62
  "zod": "^3.20.2"
59
63
  },
60
64
  "devDependencies": {
65
+ "@libsql/client": "^0.1.6",
66
+ "@types/better-sqlite3": "^7.6.4",
61
67
  "@types/dockerode": "^3.3.14",
62
68
  "@types/glob": "^8.1.0",
63
69
  "@types/minimatch": "^5.1.2",
@@ -66,11 +72,12 @@
66
72
  "@typescript-eslint/eslint-plugin": "^5.46.1",
67
73
  "@typescript-eslint/parser": "^5.46.1",
68
74
  "ava": "^5.1.0",
75
+ "better-sqlite3": "^8.4.0",
69
76
  "dockerode": "^3.3.4",
70
77
  "dotenv": "^16.0.3",
71
- "drizzle-kit": "^0.16.8",
72
- "drizzle-orm": "0.25.1",
78
+ "drizzle-orm": "0.26.5-8235b73",
73
79
  "esbuild": "^0.17.19",
80
+ "esbuild-register": "^3.4.2",
74
81
  "eslint": "^8.29.0",
75
82
  "eslint-config-prettier": "^8.5.0",
76
83
  "eslint-plugin-prettier": "^4.2.1",
package/utils.js CHANGED
@@ -337,9 +337,9 @@ function createSupportsColor(stream, options = {}) {
337
337
  var import_node_process, import_node_os, import_node_tty, env, flagForceColor, supportsColor, supports_color_default;
338
338
  var init_supports_color = __esm({
339
339
  "node_modules/.pnpm/chalk@5.2.0/node_modules/chalk/source/vendor/supports-color/index.js"() {
340
- import_node_process = __toESM(require("process"), 1);
341
- import_node_os = __toESM(require("os"), 1);
342
- import_node_tty = __toESM(require("tty"), 1);
340
+ import_node_process = __toESM(require("node:process"), 1);
341
+ import_node_os = __toESM(require("node:os"), 1);
342
+ import_node_tty = __toESM(require("node:tty"), 1);
343
343
  ({ env } = import_node_process.default);
344
344
  if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
345
345
  flagForceColor = 0;
@@ -12825,9 +12825,8 @@ var schemaSquashedV4 = objectType({
12825
12825
  }).strict();
12826
12826
  var MySqlSquasher = {
12827
12827
  squashIdx: (idx) => {
12828
- var _a, _b, _c;
12829
12828
  index.parse(idx);
12830
- return `${idx.name};${idx.columns.join(",")};${idx.isUnique};${(_a = idx.using) != null ? _a : ""};${(_b = idx.algorithm) != null ? _b : ""};${(_c = idx.lock) != null ? _c : ""}`;
12829
+ return `${idx.name};${idx.columns.join(",")};${idx.isUnique};${idx.using ?? ""};${idx.algorithm ?? ""};${idx.lock ?? ""}`;
12831
12830
  },
12832
12831
  unsquashIdx: (input) => {
12833
12832
  const [name, columnsString, isUnique, using, algorithm, lock] = input.split(";");
@@ -12849,8 +12848,7 @@ var MySqlSquasher = {
12849
12848
  return { name: splitted[0], columns: splitted[1].split(",") };
12850
12849
  },
12851
12850
  squashFK: (fk4) => {
12852
- var _a, _b;
12853
- return `${fk4.name};${fk4.tableFrom};${fk4.columnsFrom.join(",")};${fk4.tableTo};${fk4.columnsTo.join(",")};${(_a = fk4.onUpdate) != null ? _a : ""};${(_b = fk4.onDelete) != null ? _b : ""}`;
12851
+ return `${fk4.name};${fk4.tableFrom};${fk4.columnsFrom.join(",")};${fk4.tableTo};${fk4.columnsTo.join(",")};${fk4.onUpdate ?? ""};${fk4.onDelete ?? ""}`;
12854
12852
  },
12855
12853
  unsquashFK: (input) => {
12856
12854
  const [
@@ -13077,8 +13075,7 @@ var PgSquasher = {
13077
13075
  return result;
13078
13076
  },
13079
13077
  squashFK: (fk4) => {
13080
- var _a, _b;
13081
- return `${fk4.name};${fk4.tableFrom};${fk4.columnsFrom.join(",")};${fk4.tableTo};${fk4.columnsTo.join(",")};${(_a = fk4.onUpdate) != null ? _a : ""};${(_b = fk4.onDelete) != null ? _b : ""}`;
13078
+ return `${fk4.name};${fk4.tableFrom};${fk4.columnsFrom.join(",")};${fk4.tableTo};${fk4.columnsTo.join(",")};${fk4.onUpdate ?? ""};${fk4.onDelete ?? ""}`;
13082
13079
  },
13083
13080
  squashPK: (pk) => {
13084
13081
  return `${pk.columns.join(",")}`;
@@ -13242,9 +13239,8 @@ var schemaSquashed2 = objectType({
13242
13239
  }).strict();
13243
13240
  var SQLiteSquasher = {
13244
13241
  squashIdx: (idx) => {
13245
- var _a;
13246
13242
  index3.parse(idx);
13247
- return `${idx.name};${idx.columns.join(",")};${idx.isUnique};${(_a = idx.where) != null ? _a : ""}`;
13243
+ return `${idx.name};${idx.columns.join(",")};${idx.isUnique};${idx.where ?? ""}`;
13248
13244
  },
13249
13245
  unsquashIdx: (input) => {
13250
13246
  const [name, columnsString, isUnique, where] = input.split(";");
@@ -13252,13 +13248,12 @@ var SQLiteSquasher = {
13252
13248
  name,
13253
13249
  columns: columnsString.split(","),
13254
13250
  isUnique: isUnique === "true",
13255
- where: where != null ? where : void 0
13251
+ where: where ?? void 0
13256
13252
  });
13257
13253
  return result;
13258
13254
  },
13259
13255
  squashFK: (fk4) => {
13260
- var _a, _b;
13261
- return `${fk4.name};${fk4.tableFrom};${fk4.columnsFrom.join(",")};${fk4.tableTo};${fk4.columnsTo.join(",")};${(_a = fk4.onUpdate) != null ? _a : ""};${(_b = fk4.onDelete) != null ? _b : ""}`;
13256
+ return `${fk4.name};${fk4.tableFrom};${fk4.columnsFrom.join(",")};${fk4.tableTo};${fk4.columnsTo.join(",")};${fk4.onUpdate ?? ""};${fk4.onDelete ?? ""}`;
13262
13257
  },
13263
13258
  unsquashFK: (input) => {
13264
13259
  const [
@@ -13333,7 +13328,6 @@ function diffForRenamedColumn(t1, t2) {
13333
13328
  return alternationsInColumn(diffed);
13334
13329
  }
13335
13330
  function applyJsonDiff(json1, json2) {
13336
- var _a, _b, _c;
13337
13331
  json1 = JSON.parse(JSON.stringify(json1));
13338
13332
  json2 = JSON.parse(JSON.stringify(json2));
13339
13333
  const rawDiff = (0, import_json_diff.diff)(json1, json2);
@@ -13344,9 +13338,9 @@ function applyJsonDiff(json1, json2) {
13344
13338
  }, {});
13345
13339
  if (!difference)
13346
13340
  return {};
13347
- difference.tables = (_a = difference.tables) != null ? _a : {};
13348
- difference.enums = (_b = difference.enums) != null ? _b : {};
13349
- difference.schemas = (_c = difference.schemas) != null ? _c : {};
13341
+ difference.tables = difference.tables ?? {};
13342
+ difference.enums = difference.enums ?? {};
13343
+ difference.schemas = difference.schemas ?? {};
13350
13344
  const tableEntries = Object.entries(difference.tables);
13351
13345
  const addedTables = tableEntries.filter((it) => it[0].includes("__added")).map((it) => it[1]);
13352
13346
  const deletedTables = tableEntries.filter((it) => it[0].includes("__deleted")).map((it) => it[1]);
@@ -13384,8 +13378,7 @@ function applyJsonDiff(json1, json2) {
13384
13378
  };
13385
13379
  }
13386
13380
  var findAlternationsInTable = (table4, tableSchema) => {
13387
- var _a;
13388
- const columns = (_a = table4.columns) != null ? _a : {};
13381
+ const columns = table4.columns ?? {};
13389
13382
  let schema4 = {
13390
13383
  type: "none",
13391
13384
  value: tableSchema
@@ -13672,9 +13665,9 @@ var SQLiteCreateTableConvertor = class extends Convertor {
13672
13665
  const primaryKeyStatement = column4.primaryKey ? " PRIMARY KEY" : "";
13673
13666
  const notNullStatement = column4.notNull ? " NOT NULL" : "";
13674
13667
  const defaultStatement = column4.default !== void 0 ? ` DEFAULT ${column4.default}` : "";
13675
- const autoincrementStatement = column4.autoincrement ? " AUTOINCREMENT" : "";
13668
+ const autoincrementStatement = column4.autoincrement ? " AUTO_INCREMENT" : "";
13676
13669
  statement += "\n ";
13677
- statement += `\`${column4.name}\` ${column4.type}${primaryKeyStatement}${autoincrementStatement}${defaultStatement}${notNullStatement}`;
13670
+ statement += `\`${column4.name}\` ${column4.type}${autoincrementStatement}${primaryKeyStatement}${defaultStatement}${notNullStatement}`;
13678
13671
  statement += ",";
13679
13672
  }
13680
13673
  compositePKs.forEach((it) => {
@@ -14264,6 +14257,36 @@ var SqliteAlterTableAlterColumnSetNotNullConvertor = class extends Convertor {
14264
14257
  */`;
14265
14258
  }
14266
14259
  };
14260
+ var SqliteAlterTableAlterColumnSetAutoincrementConvertor = class extends Convertor {
14261
+ can(statement, dialect3) {
14262
+ return statement.type === "alter_table_alter_column_set_autoincrement" && dialect3 === "sqlite";
14263
+ }
14264
+ convert(statement) {
14265
+ return `/*
14266
+ SQLite does not support "Set autoincrement to a column" out of the box, we do not generate automatic migration for that, so it has to be done manually
14267
+ Please refer to: https://www.techonthenet.com/sqlite/tables/alter_table.php
14268
+ https://www.sqlite.org/lang_altertable.html
14269
+ https://stackoverflow.com/questions/2083543/modify-a-columns-type-in-sqlite3
14270
+
14271
+ Due to that we don't generate migration automatically and it has to be done manually
14272
+ */`;
14273
+ }
14274
+ };
14275
+ var SqliteAlterTableAlterColumnDropAutoincrementConvertor = class extends Convertor {
14276
+ can(statement, dialect3) {
14277
+ return statement.type === "alter_table_alter_column_drop_autoincrement" && dialect3 === "sqlite";
14278
+ }
14279
+ convert(statement) {
14280
+ return `/*
14281
+ SQLite does not support "Drop autoincrement from a column" out of the box, we do not generate automatic migration for that, so it has to be done manually
14282
+ Please refer to: https://www.techonthenet.com/sqlite/tables/alter_table.php
14283
+ https://www.sqlite.org/lang_altertable.html
14284
+ https://stackoverflow.com/questions/2083543/modify-a-columns-type-in-sqlite3
14285
+
14286
+ Due to that we don't generate migration automatically and it has to be done manually
14287
+ */`;
14288
+ }
14289
+ };
14267
14290
  var PgAlterTableAlterColumnDropNotNullConvertor = class extends Convertor {
14268
14291
  can(statement, dialect3) {
14269
14292
  return statement.type === "alter_table_alter_column_drop_notnull" && dialect3 === "pg";
@@ -14672,6 +14695,8 @@ convertors.push(new SqliteAlterTableAlterColumnSetNotNullConvertor());
14672
14695
  convertors.push(new SqliteAlterTableAlterColumnDropNotNullConvertor());
14673
14696
  convertors.push(new SqliteAlterTableAlterColumnSetDefaultConvertor());
14674
14697
  convertors.push(new SqliteAlterTableAlterColumnDropDefaultConvertor());
14698
+ convertors.push(new SqliteAlterTableAlterColumnSetAutoincrementConvertor());
14699
+ convertors.push(new SqliteAlterTableAlterColumnDropAutoincrementConvertor());
14675
14700
  convertors.push(new SqliteAlterTableCreateCompositePrimaryKeyConvertor());
14676
14701
  convertors.push(new SqliteAlterTableDeleteCompositePrimaryKeyConvertor());
14677
14702
  convertors.push(new SqliteAlterTableAlterCompositePrimaryKeyConvertor());
@@ -14690,7 +14715,6 @@ var fromJson = (statements, dialect3) => {
14690
14715
  });
14691
14716
  const convertor = filtered.length === 1 ? filtered[0] : void 0;
14692
14717
  if (!convertor) {
14693
- console.log("no convertor:", statement.type, dialect3);
14694
14718
  return "";
14695
14719
  }
14696
14720
  return convertor.convert(statement);
@@ -15414,7 +15438,7 @@ var diffResultScheme = objectType({
15414
15438
  deletedSchemas: stringType().array()
15415
15439
  }).strict();
15416
15440
  var applySnapshotsDiff = async (json1, json2, dialect3, schemasResolver, tablesResolver, columnsResolver, prevFull, curFull) => {
15417
- var _a, _b, _c, _d;
15441
+ var _a, _b;
15418
15442
  const diffResult = applyJsonDiff(json1, json2);
15419
15443
  if (Object.keys(diffResult).length === 0) {
15420
15444
  return { statements: [], sqlStatements: [], _meta: void 0 };
@@ -15654,7 +15678,11 @@ var applySnapshotsDiff = async (json1, json2, dialect3, schemasResolver, tablesR
15654
15678
  }).flat();
15655
15679
  const jsonReferencesForAllAlteredTables = allAltered.map((it) => {
15656
15680
  const schema4 = valueFromSelfOrPatchedNew(it.schema);
15657
- const forAdded = dialect3 !== "sqlite" ? prepareCreateReferencesJson(it.name, schema4, it.addedForeignKeys) : [];
15681
+ const forAdded = prepareCreateReferencesJson(
15682
+ it.name,
15683
+ schema4,
15684
+ it.addedForeignKeys
15685
+ );
15658
15686
  const forAltered = prepareDropReferencesJson(
15659
15687
  it.name,
15660
15688
  schema4,
@@ -15674,12 +15702,12 @@ var applySnapshotsDiff = async (json1, json2, dialect3, schemasResolver, tablesR
15674
15702
  const jsonDroppedReferencesForAlteredTables = jsonReferencesForAllAlteredTables.filter(
15675
15703
  (t) => t.type === "delete_reference"
15676
15704
  );
15677
- const createEnums = (_b = (_a = typedResult.addedEnums) == null ? void 0 : _a.map((it) => {
15705
+ const createEnums = ((_a = typedResult.addedEnums) == null ? void 0 : _a.map((it) => {
15678
15706
  return prepareCreateEnumJson(it.name, it.values);
15679
- })) != null ? _b : [];
15680
- const jsonAlterEnumsWithAddedValues = (_d = (_c = typedResult.alteredEnums) == null ? void 0 : _c.map((it) => {
15707
+ })) ?? [];
15708
+ const jsonAlterEnumsWithAddedValues = ((_b = typedResult.alteredEnums) == null ? void 0 : _b.map((it) => {
15681
15709
  return prepareAddValuesToEnumJson(it.name, it.addedValues);
15682
- }).flat()) != null ? _d : [];
15710
+ }).flat()) ?? [];
15683
15711
  if (dialect3 === "mysql") {
15684
15712
  createdSchemas.push(...renamedSchemas.map((it) => it.to));
15685
15713
  deletedSchemas.push(...renamedSchemas.map((it) => it.from));
@@ -15923,7 +15951,6 @@ var validateWithReport = (snapshots, dialect3) => {
15923
15951
  const { validator, version } = validatorForDialect(dialect3);
15924
15952
  const result = snapshots.reduce(
15925
15953
  (accum, it) => {
15926
- var _a;
15927
15954
  const raw = JSON.parse((0, import_fs.readFileSync)(`./${it}`).toString());
15928
15955
  accum.rawMap[it] = raw;
15929
15956
  if (raw["version"] && Number(raw["version"]) > version) {
@@ -15944,7 +15971,7 @@ var validateWithReport = (snapshots, dialect3) => {
15944
15971
  accum.nonLatest.push(it);
15945
15972
  return accum;
15946
15973
  }
15947
- const idEntry = (_a = accum.idsMap[snapshot["prevId"]]) != null ? _a : {
15974
+ const idEntry = accum.idsMap[snapshot["prevId"]] ?? {
15948
15975
  parent: it,
15949
15976
  snapshots: []
15950
15977
  };
@@ -16039,7 +16066,7 @@ var kloudMeta = () => {
16039
16066
  };
16040
16067
  };
16041
16068
  var statementsForDiffs = async (in1, in2) => {
16042
- const left = pgSchema.parse(in1 != null ? in1 : dryPg);
16069
+ const left = pgSchema.parse(in1 ?? dryPg);
16043
16070
  const right = pgSchema.parse(in2);
16044
16071
  const lsquashed = squashPgScheme(left);
16045
16072
  const rsquashed = squashPgScheme(right);