drizzle-orm 0.17.3 → 0.17.4-7e89b90

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.17.3",
3
+ "version": "0.17.4-7e89b90",
4
4
  "description": "Drizzle ORM package for SQL databases",
5
5
  "scripts": {
6
6
  "build": "tsc && resolve-tspaths && cp ../README.md package.json dist/",
@@ -0,0 +1,14 @@
1
+ import { Logger } from '../logger';
2
+ import { BaseSQLiteDatabase } from '../sqlite-core/db';
3
+ export interface DrizzleConfig {
4
+ logger?: Logger;
5
+ }
6
+ export interface SqliteRemoteResult<T = unknown> {
7
+ rows?: T[];
8
+ }
9
+ export declare type SqliteRemoteDatabase = BaseSQLiteDatabase<'async', SqliteRemoteResult>;
10
+ export declare type RemoteCallback = (sql: string, params: any[], method: 'run' | 'all' | 'values') => Promise<{
11
+ rows: any[][];
12
+ }>;
13
+ export declare function drizzle(callback: RemoteCallback, config?: DrizzleConfig): SqliteRemoteDatabase;
14
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/sqlite-proxy/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAItD,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC9C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;CACX;AAED,oBAAY,oBAAoB,GAAG,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAEnF,oBAAY,cAAc,GAAG,CAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,GAAG,EAAE,EACb,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,KAC5B,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAA;CAAE,CAAC,CAAC;AAEhC,wBAAgB,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,GAAE,aAAkB,GAAG,oBAAoB,CAIlG"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.drizzle = void 0;
4
+ const db_1 = require("../sqlite-core/db");
5
+ const dialect_1 = require("../sqlite-core/dialect");
6
+ const session_1 = require("./session");
7
+ function drizzle(callback, config = {}) {
8
+ const dialect = new dialect_1.SQLiteAsyncDialect();
9
+ const session = new session_1.SQLiteRemoteSession(callback, dialect, { logger: config.logger });
10
+ return new db_1.BaseSQLiteDatabase(dialect, session);
11
+ }
12
+ exports.drizzle = drizzle;
13
+ //# sourceMappingURL=driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/sqlite-proxy/driver.ts"],"names":[],"mappings":";;;AACA,yCAAsD;AACtD,mDAA2D;AAC3D,uCAAgD;AAkBhD,SAAgB,OAAO,CAAC,QAAwB,EAAE,SAAwB,EAAE;IAC3E,MAAM,OAAO,GAAG,IAAI,4BAAkB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,6BAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,uBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAJD,0BAIC"}
@@ -0,0 +1,3 @@
1
+ export * from './driver';
2
+ export * from './session';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite-proxy/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./driver"), exports);
18
+ __exportStar(require("./session"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sqlite-proxy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B"}
@@ -0,0 +1,5 @@
1
+ import { MigrationConfig } from '../migrator';
2
+ import { SqliteRemoteDatabase } from './driver';
3
+ export declare type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;
4
+ export declare function migrate(db: SqliteRemoteDatabase, callback: ProxyMigrator, config: string | MigrationConfig): Promise<void>;
5
+ //# sourceMappingURL=migrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/sqlite-proxy/migrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,oBAAY,aAAa,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1E,wBAAsB,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,iBAgChH"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.migrate = void 0;
13
+ const migrator_1 = require("../migrator");
14
+ const sql_1 = require("../sql");
15
+ function migrate(db, callback, config) {
16
+ var _a;
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const migrations = (0, migrator_1.readMigrationFiles)(config);
19
+ const migrationTableCreate = (0, sql_1.sql) `CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (
20
+ id SERIAL PRIMARY KEY,
21
+ hash text NOT NULL,
22
+ created_at numeric
23
+ )`;
24
+ yield db.run(migrationTableCreate);
25
+ const dbMigrations = yield db.values((0, sql_1.sql) `SELECT id, hash, created_at FROM "__drizzle_migrations" ORDER BY created_at DESC LIMIT 1`);
26
+ const lastDbMigration = (_a = dbMigrations[0]) !== null && _a !== void 0 ? _a : undefined;
27
+ try {
28
+ const queriesToRun = [];
29
+ for (const migration of migrations) {
30
+ if (!lastDbMigration || parseInt(lastDbMigration[2], 10) < migration.folderMillis) {
31
+ queriesToRun.push(migration.sql);
32
+ queriesToRun.push(`INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES('${migration.hash}', '${migration.folderMillis}')`);
33
+ }
34
+ }
35
+ yield callback(queriesToRun);
36
+ }
37
+ catch (e) {
38
+ throw e;
39
+ }
40
+ });
41
+ }
42
+ exports.migrate = migrate;
43
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../src/sqlite-proxy/migrator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAiE;AACjE,+BAA4B;AAK5B,SAAsB,OAAO,CAAC,EAAwB,EAAE,QAAuB,EAAE,MAAgC;;;QAChH,MAAM,UAAU,GAAG,IAAA,6BAAkB,EAAC,MAAM,CAAC,CAAC;QAE9C,MAAM,oBAAoB,GAAG,IAAA,SAAG,EAAA;;;;GAI9B,CAAC;QAEH,MAAM,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAEnC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,MAAM,CACnC,IAAA,SAAG,EAAA,0FAA0F,CAC7F,CAAC;QAEF,MAAM,eAAe,GAAG,MAAA,YAAY,CAAC,CAAC,CAAC,mCAAI,SAAS,CAAC;QAErD,IAAI;YACH,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBACnC,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,GAAG,SAAS,CAAC,YAAY,EAAE;oBACnF,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACjC,YAAY,CAAC,IAAI,CAChB,qEAAqE,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,YAAY,IAAI,CACpH,CAAC;iBACF;aACD;YAED,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;SAC7B;QAAC,OAAO,CAAC,EAAE;YACX,MAAM,CAAC,CAAC;SACR;;CACD;AAhCD,0BAgCC"}
@@ -0,0 +1,37 @@
1
+ import { Logger } from '../logger';
2
+ import { Query } from '../sql';
3
+ import { SQLiteAsyncDialect } from '../sqlite-core/dialect';
4
+ import { SelectFieldsOrdered } from '../sqlite-core/operations';
5
+ import { PreparedQuery as PreparedQueryBase, PreparedQueryConfig as PreparedQueryConfigBase, SQLiteSession } from '../sqlite-core/session';
6
+ import { RemoteCallback, SqliteRemoteResult } from './driver';
7
+ export interface SQLiteRemoteSessionOptions {
8
+ logger?: Logger;
9
+ }
10
+ declare type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
11
+ export declare class SQLiteRemoteSession extends SQLiteSession<'async', SqliteRemoteResult> {
12
+ private client;
13
+ private logger;
14
+ constructor(client: RemoteCallback, dialect: SQLiteAsyncDialect, options?: SQLiteRemoteSessionOptions);
15
+ exec(query: string): void;
16
+ prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields?: SelectFieldsOrdered): PreparedQuery<T>;
17
+ }
18
+ export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<{
19
+ type: 'async';
20
+ run: SqliteRemoteResult;
21
+ all: T['all'];
22
+ get: T['get'];
23
+ values: T['values'];
24
+ }> {
25
+ private client;
26
+ private queryString;
27
+ private params;
28
+ private logger;
29
+ private fields;
30
+ constructor(client: RemoteCallback, queryString: string, params: unknown[], logger: Logger, fields: SelectFieldsOrdered | undefined);
31
+ run(placeholderValues?: Record<string, unknown>): Promise<SqliteRemoteResult>;
32
+ all(placeholderValues?: Record<string, unknown>): Promise<T['all']>;
33
+ get(placeholderValues?: Record<string, unknown>): Promise<T['get']>;
34
+ values<T extends any[] = unknown[]>(placeholderValues?: Record<string, unknown>): Promise<T[]>;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/sqlite-proxy/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAoB,KAAK,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACN,aAAa,IAAI,iBAAiB,EAClC,mBAAmB,IAAI,uBAAuB,EAC9C,aAAa,EACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,WAAW,0BAA0B;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,aAAK,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC;AAE9E,qBAAa,mBAAoB,SAAQ,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAIjF,OAAO,CAAC,MAAM;IAHf,OAAO,CAAC,MAAM,CAAS;gBAGd,MAAM,EAAE,cAAc,EAC9B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,0BAA+B;IAMzC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMzB,YAAY,CAAC,CAAC,SAAS,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAAC,CAAC,CAAC;CAGtH;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CACxG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;CAAE,CAC7F;IAEC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;gBAJN,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,OAAO,EAAE,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,GAAG,SAAS;IAK1C,GAAG,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM7E,GAAG,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAWnE,GAAG,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAInE,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAMpG"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PreparedQuery = exports.SQLiteRemoteSession = void 0;
13
+ const logger_1 = require("../logger");
14
+ const sql_1 = require("../sql");
15
+ const session_1 = require("../sqlite-core/session");
16
+ const utils_1 = require("../utils");
17
+ class SQLiteRemoteSession extends session_1.SQLiteSession {
18
+ constructor(client, dialect, options = {}) {
19
+ var _a;
20
+ super(dialect);
21
+ this.client = client;
22
+ this.logger = (_a = options.logger) !== null && _a !== void 0 ? _a : new logger_1.NoopLogger();
23
+ }
24
+ exec(query) {
25
+ throw Error('To implement: Proxy SQLite');
26
+ // await this.client.exec(query.sql);
27
+ // return this.client(this.queryString, params).then(({ rows }) => rows!)
28
+ }
29
+ prepareQuery(query, fields) {
30
+ return new PreparedQuery(this.client, query.sql, query.params, this.logger, fields);
31
+ }
32
+ }
33
+ exports.SQLiteRemoteSession = SQLiteRemoteSession;
34
+ class PreparedQuery extends session_1.PreparedQuery {
35
+ constructor(client, queryString, params, logger, fields) {
36
+ super();
37
+ this.client = client;
38
+ this.queryString = queryString;
39
+ this.params = params;
40
+ this.logger = logger;
41
+ this.fields = fields;
42
+ }
43
+ run(placeholderValues) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const params = (0, sql_1.fillPlaceholders)(this.params, placeholderValues !== null && placeholderValues !== void 0 ? placeholderValues : {});
46
+ this.logger.logQuery(this.queryString, params);
47
+ return yield this.client(this.queryString, params, 'run');
48
+ });
49
+ }
50
+ all(placeholderValues) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const { fields } = this;
53
+ if (fields) {
54
+ return this.values(placeholderValues).then((values) => values.map((row) => (0, utils_1.mapResultRow)(fields, row)));
55
+ }
56
+ const params = (0, sql_1.fillPlaceholders)(this.params, placeholderValues !== null && placeholderValues !== void 0 ? placeholderValues : {});
57
+ this.logger.logQuery(this.queryString, params);
58
+ return this.client(this.queryString, params, 'all').then(({ rows }) => rows);
59
+ });
60
+ }
61
+ get(placeholderValues) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ return yield this.all(placeholderValues).then((rows) => rows[0]);
64
+ });
65
+ }
66
+ values(placeholderValues) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ const params = (0, sql_1.fillPlaceholders)(this.params, placeholderValues !== null && placeholderValues !== void 0 ? placeholderValues : {});
69
+ this.logger.logQuery(this.queryString, params);
70
+ const clientResult = yield this.client(this.queryString, params, 'values');
71
+ return clientResult.rows;
72
+ });
73
+ }
74
+ }
75
+ exports.PreparedQuery = PreparedQuery;
76
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/sqlite-proxy/session.ts"],"names":[],"mappings":"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"}