drizzle-orm 0.14.0 → 0.14.1-7d1d823

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/README.md CHANGED
@@ -1,30 +1,51 @@
1
- ## Drizzle ORM
2
- DrizzleORM is a TypeScript ORM library with a [drizzle-kit](#migrations) CLI companion for automatic SQL migrations generation.
3
- It's meant to be a library, not a framework, stay as an opt-in solution all the time at any levels.
4
- We try to follow SQL-like syntax whenever possible, be strongly typed ground top and fail in compile time, not in runtime.
5
- We implemented best in class `joins` and second to none `migrations generation`.
6
- Library has almost zero dependencies and being battle tested on production projects by multiple teams 🚀
7
-
8
- | database | support | |
9
- |:-- | :---: | :-- |
1
+ <div align="center">
2
+ <h1>Drizzle ORM <a href=""><img alt="npm" src="https://img.shields.io/npm/v/drizzle-orm?label="></a></h1>
3
+ <img alt="npm" src="https://img.shields.io/npm/dw/drizzle-orm">
4
+ <img alt="npm bundle size" src="https://img.shields.io/bundlephobia/min/drizzle-orm">
5
+ <a href="https://discord.gg/yfjTbVXMW4"><img alt="Discord" src="https://img.shields.io/discord/1043890932593987624"></a>
6
+ <img alt="NPM" src="https://img.shields.io/npm/l/drizzle-orm">
7
+ <h6><i>If you know SQL, you know Drizzle ORM</i></h6>
8
+ <hr />
9
+ </div>
10
+
11
+ Drizzle ORM is a TypeScript ORM for SQL databases designed with maximum type safety in mind. It comes with a [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) CLI companion for automatic SQL migrations generation. Drizzle ORM is meant to be a library, not a framework. It stays as an opt-in solution all the time at any levels.
12
+
13
+ The ORM main philosophy is "If you know SQL, you know Drizzle ORM". We follow the SQL-like syntax whenever possible, are strongly typed ground top and fail at compile time, not in runtime.
14
+
15
+ Drizzle ORM is being battle-tested on production projects by multiple teams 🚀 Give it a try and let us know if you have any questions or feedback on [Discord](https://discord.gg/yfjTbVXMW4).
16
+
17
+ ### Feature list
18
+
19
+ - Full type safety
20
+ - [Smart automated migrations generation](https://github.com/drizzle-team/drizzle-kit-mirror)
21
+ - No ORM learning curve
22
+ - SQL-like syntax for table definitions and queries
23
+ - Best in class fully typed joins
24
+ - Fully typed partial and non-partial selects of any complexity
25
+ - Auto-inferring of TS types for DB models for selections and insertions separately
26
+ - Zero dependencies
27
+
28
+ | Database | Support | 📄 |
29
+ |:------------|:-------:|:---|
10
30
  | PostgreSQL | ✅ |[Docs](https://github.com/drizzle-team/drizzle-orm/tree/main/drizzle-orm-pg)|
11
- | MySQL | ⏳ | |
12
- | SQLite | ✅ |[Docs](https://github.com/drizzle-team/drizzle-orm/tree/main/drizzle-orm-sqlite)|
31
+ | MySQL | ⏳ | |
32
+ | SQLite | ✅ |[Docs](https://github.com/drizzle-team/drizzle-orm/tree/main/drizzle-orm-sqlite)|
13
33
  | DynamoDB | ⏳ | |
14
34
  | MS SQL | ⏳ | |
15
35
  | CockroachDB | ⏳ | |
16
36
 
17
37
  ### Installation
38
+
18
39
  ```bash
19
- // postgresql
40
+ # postgresql
20
41
  npm install drizzle-orm drizzle-orm-pg
21
42
  npm install -D drizzle-kit
22
43
 
23
- // mysql
44
+ # mysql
24
45
  npm install drizzle-orm drizzle-orm-mysql
25
46
  npm install -D drizzle-kit
26
47
 
27
- // sqlite
48
+ # sqlite
28
49
  npm install drizzle-orm drizzle-orm-sqlite
29
50
  npm install -D drizzle-kit
30
51
  ```
package/connection.d.ts CHANGED
@@ -1,8 +1,3 @@
1
- export declare type MigrationMeta = {
2
- sql: string;
3
- folderMillis: number;
4
- hash: string;
5
- };
6
1
  export interface Logger {
7
2
  logQuery(query: string, params: unknown[]): void;
8
3
  }
@@ -22,11 +17,3 @@ export declare class DefaultLogger implements Logger {
22
17
  export declare class NoopLogger implements Logger {
23
18
  logQuery(): void;
24
19
  }
25
- export interface KitConfig {
26
- out: string;
27
- schema: string;
28
- }
29
- export interface MigrationConfig {
30
- migrationsFolder: string;
31
- }
32
- export declare function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[];
package/connection.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readMigrationFiles = exports.NoopLogger = exports.DefaultLogger = exports.ConsoleLogWriter = void 0;
3
+ exports.NoopLogger = exports.DefaultLogger = exports.ConsoleLogWriter = void 0;
4
4
  class ConsoleLogWriter {
5
5
  write(message) {
6
6
  console.log(message);
@@ -29,49 +29,4 @@ class NoopLogger {
29
29
  logQuery() { }
30
30
  }
31
31
  exports.NoopLogger = NoopLogger;
32
- function readMigrationFiles(config) {
33
- const fs = require('fs');
34
- const crypto = require('crypto');
35
- const path = require('path');
36
- let migrationFolderTo;
37
- if (typeof config === 'string') {
38
- const configAsString = fs.readFileSync(path.resolve('.', config), 'utf8');
39
- const jsonConfig = JSON.parse(configAsString);
40
- migrationFolderTo = jsonConfig.out;
41
- }
42
- else {
43
- migrationFolderTo = config.migrationsFolder;
44
- }
45
- if (!migrationFolderTo) {
46
- throw Error('no migration folder defined');
47
- }
48
- const files = fs.readdirSync(migrationFolderTo);
49
- const migrationQueries = [];
50
- for (const migrationFolder of files) {
51
- if (migrationFolder === '.DS_Store') {
52
- continue;
53
- }
54
- const migrationFiles = fs.readdirSync(`${migrationFolderTo}/${migrationFolder}`);
55
- const migrationFile = migrationFiles.filter((file) => file === 'migration.sql')[0];
56
- const query = fs
57
- .readFileSync(`${migrationFolderTo}/${migrationFolder}/${migrationFile}`)
58
- .toString();
59
- const year = Number(migrationFolder.slice(0, 4));
60
- // second param for Date() is month index, that started from 0, so we need
61
- // to decrement a value for month
62
- const month = Number(migrationFolder.slice(4, 6)) - 1;
63
- const day = Number(migrationFolder.slice(6, 8));
64
- const hour = Number(migrationFolder.slice(8, 10));
65
- const min = Number(migrationFolder.slice(10, 12));
66
- const sec = Number(migrationFolder.slice(12, 14));
67
- const folderAsMillis = Date.UTC(year, month, day, hour, min, sec);
68
- migrationQueries.push({
69
- sql: query,
70
- folderMillis: folderAsMillis,
71
- hash: crypto.createHash('sha256').update(query).digest('hex'),
72
- });
73
- }
74
- return migrationQueries;
75
- }
76
- exports.readMigrationFiles = readMigrationFiles;
77
32
  //# sourceMappingURL=connection.js.map
package/connection.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":";;;AAQA,MAAa,gBAAgB;IAC5B,KAAK,CAAC,OAAe;QACpB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;CACD;AAJD,4CAIC;AAED,MAAa,aAAa;IAGzB,YAAY,SAAgC,EAAE,MAAM,EAAE,IAAI,gBAAgB,EAAE,EAAE;QAC7E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,MAAiB;QACxC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1C,IAAI;gBACH,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACzB;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;aACjB;QACF,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,GAAG,SAAS,EAAE,CAAC,CAAC;IAClD,CAAC;CACD;AAlBD,sCAkBC;AAED,MAAa,UAAU;IACtB,QAAQ,KAAU,CAAC;CACnB;AAFD,gCAEC"}
package/migrator.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export interface KitConfig {
2
+ out: string;
3
+ schema: string;
4
+ }
5
+ export interface MigrationConfig {
6
+ migrationsFolder: string;
7
+ }
8
+ export interface MigrationMeta {
9
+ sql: string;
10
+ folderMillis: number;
11
+ hash: string;
12
+ }
13
+ export declare function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[];
package/migrator.js ADDED
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.readMigrationFiles = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ function readMigrationFiles(config) {
11
+ let migrationFolderTo;
12
+ if (typeof config === 'string') {
13
+ const configAsString = fs_1.default.readFileSync(path_1.default.resolve('.', config), 'utf8');
14
+ const jsonConfig = JSON.parse(configAsString);
15
+ migrationFolderTo = jsonConfig.out;
16
+ }
17
+ else {
18
+ migrationFolderTo = config.migrationsFolder;
19
+ }
20
+ if (!migrationFolderTo) {
21
+ throw Error('no migration folder defined');
22
+ }
23
+ const files = fs_1.default.readdirSync(migrationFolderTo);
24
+ const migrationQueries = [];
25
+ for (const migrationFolder of files) {
26
+ if (migrationFolder === '.DS_Store') {
27
+ continue;
28
+ }
29
+ const migrationFiles = fs_1.default.readdirSync(`${migrationFolderTo}/${migrationFolder}`);
30
+ const migrationFile = migrationFiles.filter((file) => file === 'migration.sql')[0];
31
+ const query = fs_1.default
32
+ .readFileSync(`${migrationFolderTo}/${migrationFolder}/${migrationFile}`)
33
+ .toString();
34
+ const year = Number(migrationFolder.slice(0, 4));
35
+ // second param for Date() is month index, that started from 0, so we need
36
+ // to decrement a value for month
37
+ const month = Number(migrationFolder.slice(4, 6)) - 1;
38
+ const day = Number(migrationFolder.slice(6, 8));
39
+ const hour = Number(migrationFolder.slice(8, 10));
40
+ const min = Number(migrationFolder.slice(10, 12));
41
+ const sec = Number(migrationFolder.slice(12, 14));
42
+ const folderAsMillis = Date.UTC(year, month, day, hour, min, sec);
43
+ migrationQueries.push({
44
+ sql: query,
45
+ folderMillis: folderAsMillis,
46
+ hash: crypto_1.default.createHash('sha256').update(query).digest('hex'),
47
+ });
48
+ }
49
+ return migrationQueries;
50
+ }
51
+ exports.readMigrationFiles = readMigrationFiles;
52
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../src/migrator.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,4CAAoB;AACpB,gDAAwB;AAiBxB,SAAgB,kBAAkB,CAAC,MAAgC;IAClE,IAAI,iBAAqC,CAAC;IAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC/B,MAAM,cAAc,GAAG,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAc,CAAC;QAC3D,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC;KACnC;SAAM;QACN,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;KAC5C;IAED,IAAI,CAAC,iBAAiB,EAAE;QACvB,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAC3C;IAED,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAoB,EAAE,CAAC;IAC7C,KAAK,MAAM,eAAe,IAAI,KAAK,EAAE;QACpC,IAAI,eAAe,KAAK,WAAW,EAAE;YACpC,SAAS;SACT;QACD,MAAM,cAAc,GAAG,YAAE,CAAC,WAAW,CAAC,GAAG,iBAAiB,IAAI,eAAe,EAAE,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnF,MAAM,KAAK,GAAG,YAAE;aACd,YAAY,CAAC,GAAG,iBAAiB,IAAI,eAAe,IAAI,aAAa,EAAE,CAAC;aACxE,QAAQ,EAAE,CAAC;QAEb,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,0EAA0E;QAC1E,iCAAiC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClE,gBAAgB,CAAC,IAAI,CAAC;YACrB,GAAG,EAAE,KAAK;YACV,YAAY,EAAE,cAAc;YAC5B,IAAI,EAAE,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC7D,CAAC,CAAC;KACH;IAED,OAAO,gBAAgB,CAAC;AACzB,CAAC;AA7CD,gDA6CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.14.0",
3
+ "version": "0.14.1-7d1d823",
4
4
  "description": "Drizzle ORM package for SQL databases",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",