@mikro-orm/libsql 7.0.0-dev.33 → 7.0.0-dev.330

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.
@@ -1,9 +1,13 @@
1
- import { BaseSqliteConnection, type Dictionary } from '@mikro-orm/knex';
1
+ import { BaseSqliteConnection, type Dictionary } from '@mikro-orm/sql';
2
2
  import { type Options } from 'libsql';
3
3
  import { LibSqlDialect } from './LibSqlDialect.js';
4
4
  export declare class LibSqlConnection extends BaseSqliteConnection {
5
- connect(): Promise<void>;
6
5
  private database;
6
+ connect(options?: {
7
+ skipOnConnect?: boolean;
8
+ }): Promise<void>;
7
9
  createKyselyDialect(options: Dictionary & Options): LibSqlDialect;
8
- loadFile(path: string): Promise<void>;
10
+ /** @inheritDoc */
11
+ executeDump(source: string): Promise<void>;
12
+ private validateAttachSupport;
9
13
  }
@@ -1,32 +1,35 @@
1
- import { BaseSqliteConnection, Utils } from '@mikro-orm/knex';
2
- import { readFile } from 'node:fs/promises';
1
+ import { BaseSqliteConnection } from '@mikro-orm/sql';
3
2
  import Database from 'libsql';
4
3
  import { LibSqlDialect } from './LibSqlDialect.js';
5
- import { dirname } from 'node:path';
6
- import { CompiledQuery } from 'kysely';
7
4
  export class LibSqlConnection extends BaseSqliteConnection {
8
- async connect() {
9
- await super.connect(true);
10
- const dbName = this.config.get('dbName');
11
- if (dbName && dbName !== ':memory:' && !dirname(dbName).startsWith('libsql:/')) {
12
- Utils.ensureDir(dirname(dbName));
13
- }
14
- await this.client.executeQuery(CompiledQuery.raw('pragma foreign_keys = on'));
15
- }
16
5
  database;
6
+ async connect(options) {
7
+ this.validateAttachSupport();
8
+ await super.connect(options);
9
+ }
17
10
  createKyselyDialect(options) {
18
11
  const dbName = options.url ?? this.config.get('dbName');
19
12
  options.authToken ??= this.config.get('password');
20
13
  return new LibSqlDialect({
21
14
  database: async () => {
22
- return this.database = new Database(dbName, options);
15
+ return (this.database = new Database(dbName, options));
23
16
  },
24
17
  onCreateConnection: this.options.onCreateConnection ?? this.config.get('onCreateConnection'),
25
18
  });
26
19
  }
27
- /* v8 ignore next 4 */
28
- async loadFile(path) {
20
+ /** @inheritDoc */
21
+ async executeDump(source) {
29
22
  await this.ensureConnection();
30
- this.database.exec((await readFile(path)).toString());
23
+ this.database.exec(source);
24
+ }
25
+ validateAttachSupport() {
26
+ const attachDatabases = this.config.get('attachDatabases');
27
+ if (!attachDatabases?.length) {
28
+ return;
29
+ }
30
+ const dbName = this.config.get('dbName');
31
+ if (/^(https?|libsql):\/\//.exec(dbName)) {
32
+ throw new Error('ATTACH DATABASE is not supported for remote libSQL connections. ' + 'Use local file-based databases only.');
33
+ }
31
34
  }
32
35
  }
@@ -1,27 +1,6 @@
1
- import { type DatabaseConnection, type QueryResult, type SqliteDatabase, SqliteDialect, type SqliteDialectConfig, SqliteDriver } from 'kysely';
2
- declare class LibSqlConnection implements DatabaseConnection {
3
- private readonly db;
4
- private readonly created;
5
- memory: boolean;
6
- constructor(db: SqliteDatabase);
7
- isValid(): boolean;
8
- executeQuery<R>(compiledQuery: any): Promise<QueryResult<R>>;
9
- streamQuery<R>(compiledQuery: any): AsyncIterableIterator<QueryResult<R>>;
10
- }
11
- declare class LibSqlKyselyDriver extends SqliteDriver {
12
- private readonly config;
13
- private db;
14
- private connection;
15
- private connectionMutex;
16
- constructor(config: SqliteDialectConfig);
17
- init(): Promise<void>;
18
- acquireConnection(): Promise<LibSqlConnection>;
19
- releaseConnection(): Promise<void>;
20
- destroy(): Promise<void>;
21
- }
1
+ import { SqliteDialect, type SqliteDialectConfig, SqliteDriver } from 'kysely';
22
2
  export declare class LibSqlDialect extends SqliteDialect {
23
- private readonly config;
3
+ #private;
24
4
  constructor(config: SqliteDialectConfig);
25
- createDriver(): LibSqlKyselyDriver;
5
+ createDriver(): SqliteDriver;
26
6
  }
27
- export {};
package/LibSqlDialect.js CHANGED
@@ -19,25 +19,26 @@ class ConnectionMutex {
19
19
  }
20
20
  }
21
21
  class LibSqlConnection {
22
- db;
23
- created = Date.now();
22
+ #created = Date.now();
23
+ #db;
24
24
  constructor(db) {
25
- this.db = db;
25
+ this.#db = db;
26
26
  }
27
27
  isValid() {
28
- return this.memory || this.created > Date.now() - CONNECTION_TIMEOUT;
28
+ return this.memory || this.#created > Date.now() - CONNECTION_TIMEOUT;
29
29
  }
30
30
  async executeQuery(compiledQuery) {
31
31
  const { sql, parameters } = compiledQuery;
32
- const stmt = this.db.prepare(sql);
32
+ const stmt = this.#db.prepare(sql);
33
33
  if (stmt.reader) {
34
34
  return {
35
35
  rows: stmt.all(parameters),
36
36
  };
37
37
  }
38
38
  const query = sql.trim().toLowerCase();
39
- /* v8 ignore next 5 */
40
- if (query.startsWith('select') || ((query.startsWith('insert into') || query.startsWith('update ')) && query.includes(' returning '))) {
39
+ /* v8 ignore next */
40
+ if (query.startsWith('select') ||
41
+ ((query.startsWith('insert into') || query.startsWith('update ')) && query.includes(' returning '))) {
41
42
  return {
42
43
  rows: stmt.all(parameters),
43
44
  };
@@ -49,10 +50,10 @@ class LibSqlConnection {
49
50
  rows: [],
50
51
  };
51
52
  }
52
- /* v8 ignore start */
53
53
  async *streamQuery(compiledQuery) {
54
54
  const { sql, parameters } = compiledQuery;
55
- const stmt = this.db.prepare(sql);
55
+ const stmt = this.#db.prepare(sql);
56
+ /* v8 ignore next */
56
57
  if (!sql.toLowerCase().startsWith('select')) {
57
58
  throw new Error('Sqlite driver only supports streaming of select queries');
58
59
  }
@@ -64,45 +65,45 @@ class LibSqlConnection {
64
65
  }
65
66
  }
66
67
  class LibSqlKyselyDriver extends SqliteDriver {
67
- config;
68
- db;
69
- connection;
70
- connectionMutex = new ConnectionMutex();
68
+ #db;
69
+ #connection;
70
+ #connectionMutex = new ConnectionMutex();
71
+ #config;
71
72
  constructor(config) {
72
73
  super(config);
73
- this.config = config;
74
+ this.#config = config;
74
75
  }
75
76
  async init() {
76
- this.db = await this.config.database();
77
- this.connection = new LibSqlConnection(this.db);
78
- /* v8 ignore next 3 */
79
- if (this.config.onCreateConnection) {
80
- await this.config.onCreateConnection(this.connection);
77
+ this.#db = await this.#config.database();
78
+ this.#connection = new LibSqlConnection(this.#db);
79
+ /* v8 ignore next */
80
+ if (this.#config.onCreateConnection) {
81
+ await this.#config.onCreateConnection(this.#connection);
81
82
  }
82
83
  }
83
84
  async acquireConnection() {
84
- await this.connectionMutex.lock();
85
- /* v8 ignore next 4 */
86
- if (!this.connection.isValid()) {
85
+ await this.#connectionMutex.lock();
86
+ /* v8 ignore next */
87
+ if (!this.#connection.isValid()) {
87
88
  await this.destroy();
88
89
  await this.init();
89
90
  }
90
- return this.connection;
91
+ return this.#connection;
91
92
  }
92
93
  async releaseConnection() {
93
- this.connectionMutex.unlock();
94
+ this.#connectionMutex.unlock();
94
95
  }
95
96
  async destroy() {
96
- this.db.close();
97
+ this.#db.close();
97
98
  }
98
99
  }
99
100
  export class LibSqlDialect extends SqliteDialect {
100
- config;
101
+ #config;
101
102
  constructor(config) {
102
103
  super(config);
103
- this.config = config;
104
+ this.#config = config;
104
105
  }
105
106
  createDriver() {
106
- return new LibSqlKyselyDriver(this.config);
107
+ return new LibSqlKyselyDriver(this.#config);
107
108
  }
108
109
  }
package/LibSqlDriver.d.ts CHANGED
@@ -1,6 +1,9 @@
1
- import type { Configuration } from '@mikro-orm/core';
2
- import { AbstractSqlDriver } from '@mikro-orm/knex';
1
+ import type { Configuration, Constructor } from '@mikro-orm/core';
2
+ import { AbstractSqlDriver } from '@mikro-orm/sql';
3
3
  import { LibSqlConnection } from './LibSqlConnection.js';
4
+ import { LibSqlMikroORM } from './LibSqlMikroORM.js';
4
5
  export declare class LibSqlDriver extends AbstractSqlDriver<LibSqlConnection> {
5
6
  constructor(config: Configuration);
7
+ /** @inheritDoc */
8
+ getORMClass(): Constructor<LibSqlMikroORM>;
6
9
  }
package/LibSqlDriver.js CHANGED
@@ -1,8 +1,12 @@
1
- import { AbstractSqlDriver } from '@mikro-orm/knex';
1
+ import { AbstractSqlDriver, SqlitePlatform } from '@mikro-orm/sql';
2
2
  import { LibSqlConnection } from './LibSqlConnection.js';
3
- import { LibSqlPlatform } from './LibSqlPlatform.js';
3
+ import { LibSqlMikroORM } from './LibSqlMikroORM.js';
4
4
  export class LibSqlDriver extends AbstractSqlDriver {
5
5
  constructor(config) {
6
- super(config, new LibSqlPlatform(), LibSqlConnection, ['kysely', 'libsql']);
6
+ super(config, new SqlitePlatform(), LibSqlConnection, ['kysely', 'libsql']);
7
+ }
8
+ /** @inheritDoc */
9
+ getORMClass() {
10
+ return LibSqlMikroORM;
7
11
  }
8
12
  }
@@ -1,19 +1,18 @@
1
- import { MikroORM, type Options, type IDatabaseDriver, type EntityManager, type EntityManagerType } from '@mikro-orm/core';
1
+ import { type AnyEntity, type EntityClass, type EntitySchema, MikroORM, type Options, type IDatabaseDriver, type EntityManager, type EntityManagerType } from '@mikro-orm/core';
2
+ import type { SqlEntityManager } from '@mikro-orm/sql';
2
3
  import { LibSqlDriver } from './LibSqlDriver.js';
3
- import type { SqlEntityManager } from '@mikro-orm/knex';
4
+ export type LibSqlOptions<EM extends SqlEntityManager<LibSqlDriver> = SqlEntityManager<LibSqlDriver>, Entities extends (string | EntityClass<AnyEntity> | EntitySchema)[] = (string | EntityClass<AnyEntity> | EntitySchema)[]> = Partial<Options<LibSqlDriver, EM, Entities>>;
5
+ export declare function defineLibSqlConfig<EM extends SqlEntityManager<LibSqlDriver> = SqlEntityManager<LibSqlDriver>, Entities extends (string | EntityClass<AnyEntity> | EntitySchema)[] = (string | EntityClass<AnyEntity> | EntitySchema)[]>(options: LibSqlOptions<EM, Entities>): LibSqlOptions<EM, Entities>;
4
6
  /**
5
7
  * @inheritDoc
6
8
  */
7
- export declare class LibSqlMikroORM<EM extends EntityManager = SqlEntityManager> extends MikroORM<LibSqlDriver, EM> {
8
- private static DRIVER;
9
+ export declare class LibSqlMikroORM<EM extends SqlEntityManager<LibSqlDriver> = SqlEntityManager<LibSqlDriver>, Entities extends (string | EntityClass<AnyEntity> | EntitySchema)[] = (string | EntityClass<AnyEntity> | EntitySchema)[]> extends MikroORM<LibSqlDriver, EM, Entities> {
9
10
  /**
10
11
  * @inheritDoc
11
12
  */
12
- static init<D extends IDatabaseDriver = LibSqlDriver, EM extends EntityManager = D[typeof EntityManagerType] & EntityManager>(options?: Options<D, EM>): Promise<MikroORM<D, EM>>;
13
+ static init<D extends IDatabaseDriver = LibSqlDriver, EM extends EntityManager<D> = D[typeof EntityManagerType] & EntityManager<D>, Entities extends (string | EntityClass<AnyEntity> | EntitySchema)[] = (string | EntityClass<AnyEntity> | EntitySchema)[]>(options: Partial<Options<D, EM, Entities>>): Promise<MikroORM<D, EM, Entities>>;
13
14
  /**
14
15
  * @inheritDoc
15
16
  */
16
- static initSync<D extends IDatabaseDriver = LibSqlDriver, EM extends EntityManager = D[typeof EntityManagerType] & EntityManager>(options: Options<D, EM>): MikroORM<D, EM>;
17
+ constructor(options: Partial<Options<LibSqlDriver, EM, Entities>>);
17
18
  }
18
- export type LibSqlOptions = Options<LibSqlDriver>;
19
- export declare function defineLibSqlConfig(options: LibSqlOptions): Options<LibSqlDriver, SqlEntityManager<LibSqlDriver> & EntityManager<IDatabaseDriver<import("@mikro-orm/core").Connection>>>;
package/LibSqlMikroORM.js CHANGED
@@ -1,24 +1,22 @@
1
1
  import { defineConfig, MikroORM, } from '@mikro-orm/core';
2
2
  import { LibSqlDriver } from './LibSqlDriver.js';
3
+ export function defineLibSqlConfig(options) {
4
+ return defineConfig({ driver: LibSqlDriver, ...options });
5
+ }
3
6
  /**
4
7
  * @inheritDoc
5
8
  */
6
9
  export class LibSqlMikroORM extends MikroORM {
7
- static DRIVER = LibSqlDriver;
8
10
  /**
9
11
  * @inheritDoc
10
12
  */
11
13
  static async init(options) {
12
- return super.init(options);
14
+ return super.init(defineLibSqlConfig(options));
13
15
  }
14
16
  /**
15
17
  * @inheritDoc
16
18
  */
17
- static initSync(options) {
18
- return super.initSync(options);
19
+ constructor(options) {
20
+ super(defineLibSqlConfig(options));
19
21
  }
20
22
  }
21
- /* v8 ignore next 3 */
22
- export function defineLibSqlConfig(options) {
23
- return defineConfig({ driver: LibSqlDriver, ...options });
24
- }
package/README.md CHANGED
@@ -2,14 +2,14 @@
2
2
  <a href="https://mikro-orm.io"><img src="https://raw.githubusercontent.com/mikro-orm/mikro-orm/master/docs/static/img/logo-readme.svg?sanitize=true" alt="MikroORM" /></a>
3
3
  </h1>
4
4
 
5
- TypeScript ORM for Node.js based on Data Mapper, [Unit of Work](https://mikro-orm.io/docs/unit-of-work/) and [Identity Map](https://mikro-orm.io/docs/identity-map/) patterns. Supports MongoDB, MySQL, MariaDB, PostgreSQL and SQLite (including libSQL) databases.
5
+ TypeScript ORM for Node.js based on Data Mapper, [Unit of Work](https://mikro-orm.io/docs/unit-of-work/) and [Identity Map](https://mikro-orm.io/docs/identity-map/) patterns. Supports MongoDB, MySQL, MariaDB, PostgreSQL, SQLite (including libSQL), MSSQL and Oracle databases.
6
6
 
7
7
  > Heavily inspired by [Doctrine](https://www.doctrine-project.org/) and [Hibernate](https://hibernate.org/).
8
8
 
9
- [![NPM version](https://img.shields.io/npm/v/@mikro-orm/core.svg)](https://www.npmjs.com/package/@mikro-orm/core)
10
- [![NPM dev version](https://img.shields.io/npm/v/@mikro-orm/core/next.svg)](https://www.npmjs.com/package/@mikro-orm/core)
9
+ [![NPM version](https://img.shields.io/npm/v/@mikro-orm/core.svg)](https://npmx.dev/package/@mikro-orm/core)
10
+ [![NPM dev version](https://img.shields.io/npm/v/@mikro-orm/core/next.svg)](https://npmx.dev/package/@mikro-orm/core)
11
11
  [![Chat on discord](https://img.shields.io/discord/1214904142443839538?label=discord&color=blue)](https://discord.gg/w8bjxFHS7X)
12
- [![Downloads](https://img.shields.io/npm/dm/@mikro-orm/core.svg)](https://www.npmjs.com/package/@mikro-orm/core)
12
+ [![Downloads](https://img.shields.io/npm/dm/@mikro-orm/core.svg)](https://npmx.dev/package/@mikro-orm/core)
13
13
  [![Coverage Status](https://img.shields.io/coveralls/mikro-orm/mikro-orm.svg)](https://coveralls.io/r/mikro-orm/mikro-orm?branch=master)
14
14
  [![Build Status](https://github.com/mikro-orm/mikro-orm/workflows/tests/badge.svg?branch=master)](https://github.com/mikro-orm/mikro-orm/actions?workflow=tests)
15
15
 
@@ -181,6 +181,7 @@ yarn add @mikro-orm/core @mikro-orm/mysql # for mysql/mariadb
181
181
  yarn add @mikro-orm/core @mikro-orm/mariadb # for mysql/mariadb
182
182
  yarn add @mikro-orm/core @mikro-orm/postgresql # for postgresql
183
183
  yarn add @mikro-orm/core @mikro-orm/mssql # for mssql
184
+ yarn add @mikro-orm/core @mikro-orm/oracledb # for oracle
184
185
  yarn add @mikro-orm/core @mikro-orm/sqlite # for sqlite
185
186
  yarn add @mikro-orm/core @mikro-orm/libsql # for libsql
186
187
  ```
@@ -381,6 +382,8 @@ See also the list of contributors who [participated](https://github.com/mikro-or
381
382
 
382
383
  Please ⭐️ this repository if this project helped you!
383
384
 
385
+ > If you'd like to support my open-source work, consider sponsoring me directly at [github.com/sponsors/b4nan](https://github.com/sponsors/b4nan).
386
+
384
387
  ## 📝 License
385
388
 
386
389
  Copyright © 2018 [Martin Adámek](https://github.com/b4nan).
package/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- export * from '@mikro-orm/knex';
1
+ export * from '@mikro-orm/sql';
2
2
  export * from './LibSqlConnection.js';
3
3
  export * from './LibSqlDriver.js';
4
- export * from './LibSqlPlatform.js';
5
- export { LibSqlMikroORM as MikroORM, LibSqlOptions as Options, defineLibSqlConfig as defineConfig, } from './LibSqlMikroORM.js';
4
+ export { LibSqlMikroORM as MikroORM, type LibSqlOptions as Options, defineLibSqlConfig as defineConfig, } from './LibSqlMikroORM.js';
package/index.js CHANGED
@@ -1,5 +1,4 @@
1
- export * from '@mikro-orm/knex';
1
+ export * from '@mikro-orm/sql';
2
2
  export * from './LibSqlConnection.js';
3
3
  export * from './LibSqlDriver.js';
4
- export * from './LibSqlPlatform.js';
5
4
  export { LibSqlMikroORM as MikroORM, defineLibSqlConfig as defineConfig, } from './LibSqlMikroORM.js';
package/package.json CHANGED
@@ -1,65 +1,63 @@
1
1
  {
2
2
  "name": "@mikro-orm/libsql",
3
- "type": "module",
4
- "version": "7.0.0-dev.33",
3
+ "version": "7.0.0-dev.330",
5
4
  "description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
6
- "exports": {
7
- "./package.json": "./package.json",
8
- ".": "./index.js"
9
- },
10
- "repository": {
11
- "type": "git",
12
- "url": "git+ssh://git@github.com/mikro-orm/mikro-orm.git"
13
- },
14
5
  "keywords": [
15
- "orm",
6
+ "data-mapper",
7
+ "ddd",
8
+ "entity",
9
+ "identity-map",
10
+ "javascript",
11
+ "js",
12
+ "mariadb",
13
+ "mikro-orm",
16
14
  "mongo",
17
15
  "mongodb",
18
16
  "mysql",
19
- "mariadb",
17
+ "orm",
20
18
  "postgresql",
21
19
  "sqlite",
22
20
  "sqlite3",
23
21
  "ts",
24
22
  "typescript",
25
- "js",
26
- "javascript",
27
- "entity",
28
- "ddd",
29
- "mikro-orm",
30
- "unit-of-work",
31
- "data-mapper",
32
- "identity-map"
23
+ "unit-of-work"
33
24
  ],
34
- "author": "Martin Adámek",
35
- "license": "MIT",
25
+ "homepage": "https://mikro-orm.io",
36
26
  "bugs": {
37
27
  "url": "https://github.com/mikro-orm/mikro-orm/issues"
38
28
  },
39
- "homepage": "https://mikro-orm.io",
40
- "engines": {
41
- "node": ">= 22.11.0"
29
+ "license": "MIT",
30
+ "author": "Martin Adámek",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+ssh://git@github.com/mikro-orm/mikro-orm.git"
34
+ },
35
+ "type": "module",
36
+ "exports": {
37
+ "./package.json": "./package.json",
38
+ ".": "./index.js"
39
+ },
40
+ "publishConfig": {
41
+ "access": "public"
42
42
  },
43
43
  "scripts": {
44
- "build": "yarn clean && yarn compile && yarn copy",
44
+ "build": "yarn compile && yarn copy",
45
45
  "clean": "yarn run -T rimraf ./dist",
46
46
  "compile": "yarn run -T tsc -p tsconfig.build.json",
47
47
  "copy": "node ../../scripts/copy.mjs"
48
48
  },
49
- "publishConfig": {
50
- "access": "public"
51
- },
52
49
  "dependencies": {
53
- "@mikro-orm/knex": "7.0.0-dev.33",
54
- "libsql": "0.5.22",
55
- "sqlstring-sqlite": "0.1.1"
50
+ "@mikro-orm/sql": "7.0.0-dev.330",
51
+ "kysely": "0.28.11",
52
+ "libsql": "0.5.22"
56
53
  },
57
54
  "devDependencies": {
58
- "@mikro-orm/core": "^6.5.7",
59
- "kysely": "0.28.7"
55
+ "@mikro-orm/core": "^6.6.9"
60
56
  },
61
57
  "peerDependencies": {
62
- "@mikro-orm/core": "7.0.0-dev.33",
63
- "kysely": "*"
58
+ "@mikro-orm/core": "7.0.0-dev.330"
59
+ },
60
+ "engines": {
61
+ "node": ">= 22.17.0"
64
62
  }
65
63
  }
@@ -1,4 +0,0 @@
1
- import { BaseSqlitePlatform } from '@mikro-orm/knex';
2
- export declare class LibSqlPlatform extends BaseSqlitePlatform {
3
- escape(value: any): string;
4
- }
package/LibSqlPlatform.js DELETED
@@ -1,8 +0,0 @@
1
- // @ts-ignore
2
- import SqlString from 'sqlstring-sqlite';
3
- import { BaseSqlitePlatform } from '@mikro-orm/knex';
4
- export class LibSqlPlatform extends BaseSqlitePlatform {
5
- escape(value) {
6
- return SqlString.escape(value, true, this.timezone);
7
- }
8
- }