vona-module-a-ormdialect 5.0.19 → 5.0.21
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/dist/.metadata/index.d.ts +22 -5
- package/dist/bean/databaseDialect.betterSqlite3.d.ts +18 -0
- package/dist/bean/databaseDialect.mysql.d.ts +6 -3
- package/dist/bean/databaseDialect.mysql3.d.ts +3 -2
- package/dist/bean/databaseDialect.pg.d.ts +6 -3
- package/dist/index.js +94 -56
- package/package.json +7 -2
|
@@ -1,37 +1,54 @@
|
|
|
1
1
|
/** databaseDialect: begin */
|
|
2
|
+
export * from '../bean/databaseDialect.betterSqlite3.ts';
|
|
2
3
|
export * from '../bean/databaseDialect.mysql.ts';
|
|
3
4
|
export * from '../bean/databaseDialect.mysql3.ts';
|
|
4
5
|
export * from '../bean/databaseDialect.pg.ts';
|
|
5
|
-
import '
|
|
6
|
-
|
|
6
|
+
import type { IDatabaseDialectOptionsBetterSqlite3 } from '../bean/databaseDialect.betterSqlite3.ts';
|
|
7
|
+
import type { IDatabaseDialectOptionsMysql } from '../bean/databaseDialect.mysql.ts';
|
|
8
|
+
import type { IDatabaseDialectOptionsMysql3 } from '../bean/databaseDialect.mysql3.ts';
|
|
9
|
+
import type { IDatabaseDialectOptionsPg } from '../bean/databaseDialect.pg.ts';
|
|
10
|
+
import 'vona-module-a-orm';
|
|
11
|
+
declare module 'vona-module-a-orm' {
|
|
7
12
|
interface IDatabaseDialectRecord {
|
|
8
|
-
'a-ormdialect:
|
|
9
|
-
'a-ormdialect:
|
|
10
|
-
'a-ormdialect:
|
|
13
|
+
'a-ormdialect:betterSqlite3': IDatabaseDialectOptionsBetterSqlite3;
|
|
14
|
+
'a-ormdialect:mysql': IDatabaseDialectOptionsMysql;
|
|
15
|
+
'a-ormdialect:mysql3': IDatabaseDialectOptionsMysql3;
|
|
16
|
+
'a-ormdialect:pg': IDatabaseDialectOptionsPg;
|
|
11
17
|
}
|
|
12
18
|
}
|
|
13
19
|
declare module 'vona-module-a-ormdialect' {
|
|
20
|
+
interface DatabaseDialectBetterSqlite3 {
|
|
21
|
+
}
|
|
22
|
+
interface DatabaseDialectBetterSqlite3 {
|
|
23
|
+
get $beanFullName(): 'a-ormdialect.databaseDialect.betterSqlite3';
|
|
24
|
+
get $onionName(): 'a-ormdialect:betterSqlite3';
|
|
25
|
+
get $onionOptions(): IDatabaseDialectOptionsBetterSqlite3;
|
|
26
|
+
}
|
|
14
27
|
interface DatabaseDialectMysql {
|
|
15
28
|
}
|
|
16
29
|
interface DatabaseDialectMysql {
|
|
17
30
|
get $beanFullName(): 'a-ormdialect.databaseDialect.mysql';
|
|
18
31
|
get $onionName(): 'a-ormdialect:mysql';
|
|
32
|
+
get $onionOptions(): IDatabaseDialectOptionsMysql;
|
|
19
33
|
}
|
|
20
34
|
interface DatabaseDialectPg {
|
|
21
35
|
}
|
|
22
36
|
interface DatabaseDialectPg {
|
|
23
37
|
get $beanFullName(): 'a-ormdialect.databaseDialect.pg';
|
|
24
38
|
get $onionName(): 'a-ormdialect:pg';
|
|
39
|
+
get $onionOptions(): IDatabaseDialectOptionsPg;
|
|
25
40
|
}
|
|
26
41
|
}
|
|
27
42
|
/** databaseDialect: end */
|
|
28
43
|
/** databaseDialect: begin */
|
|
44
|
+
import type { DatabaseDialectBetterSqlite3 } from '../bean/databaseDialect.betterSqlite3.ts';
|
|
29
45
|
import type { DatabaseDialectMysql } from '../bean/databaseDialect.mysql.ts';
|
|
30
46
|
import type { DatabaseDialectMysql3 } from '../bean/databaseDialect.mysql3.ts';
|
|
31
47
|
import type { DatabaseDialectPg } from '../bean/databaseDialect.pg.ts';
|
|
32
48
|
import 'vona';
|
|
33
49
|
declare module 'vona' {
|
|
34
50
|
interface IBeanRecordGeneral {
|
|
51
|
+
'a-ormdialect.databaseDialect.betterSqlite3': DatabaseDialectBetterSqlite3;
|
|
35
52
|
'a-ormdialect.databaseDialect.mysql': DatabaseDialectMysql;
|
|
36
53
|
'a-ormdialect.databaseDialect.mysql3': DatabaseDialectMysql3;
|
|
37
54
|
'a-ormdialect.databaseDialect.pg': DatabaseDialectPg;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
import type { TableIdentity } from 'table-identity';
|
|
3
|
+
import type { ConfigDatabaseClient, IDatabaseDialectCapabilities, IDecoratorDatabaseDialectOptions, IFetchDatabasesResultItem, IFetchIndexesResultItem, TypeDatabaseDialectTableColumnsFn } from 'vona-module-a-orm';
|
|
4
|
+
import { BeanDatabaseDialectBase } from 'vona-module-a-orm';
|
|
5
|
+
export interface IDatabaseDialectOptionsBetterSqlite3 extends IDecoratorDatabaseDialectOptions {
|
|
6
|
+
}
|
|
7
|
+
export declare class DatabaseDialectBetterSqlite3 extends BeanDatabaseDialectBase {
|
|
8
|
+
protected _capabilities: IDatabaseDialectCapabilities;
|
|
9
|
+
protected _configBase?: Partial<ConfigDatabaseClient>;
|
|
10
|
+
fetchDatabases(_schemaBuilder: Knex.SchemaBuilder, databasePrefix: string): Promise<IFetchDatabasesResultItem[]>;
|
|
11
|
+
createDatabase(_schemaBuilder: Knex.SchemaBuilder, databaseName: string): Promise<string>;
|
|
12
|
+
dropDatabase(_schemaBuilder: Knex.SchemaBuilder, databaseName: string): Promise<void>;
|
|
13
|
+
fetchIndexes(schemaBuilder: Knex.SchemaBuilder, tableName: string): Promise<IFetchIndexesResultItem[]>;
|
|
14
|
+
insert(builder: Knex.QueryBuilder, datas: any[]): Promise<TableIdentity[]>;
|
|
15
|
+
select(builder: Knex.QueryBuilder, datas: any[], fn: TypeDatabaseDialectTableColumnsFn): Promise<any[]>;
|
|
16
|
+
query(result: any): any;
|
|
17
|
+
private _getDbDir;
|
|
18
|
+
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { Knex } from 'knex';
|
|
2
2
|
import type { TableIdentity } from 'table-identity';
|
|
3
|
-
import type { ConfigDatabaseClient, IFetchDatabasesResultItem, IFetchIndexesResultItem } from 'vona-module-a-orm';
|
|
3
|
+
import type { ConfigDatabaseClient, IDatabaseDialectCapabilities, IDecoratorDatabaseDialectOptions, IFetchDatabasesResultItem, IFetchIndexesResultItem } from 'vona-module-a-orm';
|
|
4
4
|
import { BeanDatabaseDialectBase } from 'vona-module-a-orm';
|
|
5
|
+
export interface IDatabaseDialectOptionsMysql extends IDecoratorDatabaseDialectOptions {
|
|
6
|
+
}
|
|
5
7
|
export declare class DatabaseDialectMysql extends BeanDatabaseDialectBase {
|
|
6
|
-
|
|
8
|
+
protected _capabilities: IDatabaseDialectCapabilities;
|
|
9
|
+
protected _configBase?: Partial<ConfigDatabaseClient>;
|
|
7
10
|
fetchDatabases(schemaBuilder: Knex.SchemaBuilder, databasePrefix: string): Promise<IFetchDatabasesResultItem[]>;
|
|
8
|
-
createDatabase(schemaBuilder: Knex.SchemaBuilder, databaseName: string): Promise<
|
|
11
|
+
createDatabase(schemaBuilder: Knex.SchemaBuilder, databaseName: string): Promise<string>;
|
|
9
12
|
dropDatabase(schemaBuilder: Knex.SchemaBuilder, databaseName: string): Promise<void>;
|
|
10
13
|
fetchIndexes(schemaBuilder: Knex.SchemaBuilder, tableName: string): Promise<IFetchIndexesResultItem[]>;
|
|
11
14
|
insert(builder: Knex.QueryBuilder, datas: any[]): Promise<TableIdentity[]>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IDecoratorDatabaseDialectOptions } from 'vona-module-a-orm';
|
|
2
2
|
import { DatabaseDialectMysql } from './databaseDialect.mysql.ts';
|
|
3
|
+
export interface IDatabaseDialectOptionsMysql3 extends IDecoratorDatabaseDialectOptions {
|
|
4
|
+
}
|
|
3
5
|
export declare class DatabaseDialectMysql3 extends DatabaseDialectMysql {
|
|
4
|
-
getConfigBase(): ConfigDatabaseClient | undefined;
|
|
5
6
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { Knex } from 'knex';
|
|
2
2
|
import type { TableIdentity } from 'table-identity';
|
|
3
|
-
import type { ConfigDatabaseClient, IFetchDatabasesResultItem, IFetchIndexesResultItem } from 'vona-module-a-orm';
|
|
3
|
+
import type { ConfigDatabaseClient, IDatabaseDialectCapabilities, IDecoratorDatabaseDialectOptions, IFetchDatabasesResultItem, IFetchIndexesResultItem } from 'vona-module-a-orm';
|
|
4
4
|
import { BeanDatabaseDialectBase } from 'vona-module-a-orm';
|
|
5
|
+
export interface IDatabaseDialectOptionsPg extends IDecoratorDatabaseDialectOptions {
|
|
6
|
+
}
|
|
5
7
|
export declare class DatabaseDialectPg extends BeanDatabaseDialectBase {
|
|
6
|
-
|
|
8
|
+
protected _capabilities: IDatabaseDialectCapabilities;
|
|
9
|
+
protected _configBase?: Partial<ConfigDatabaseClient>;
|
|
7
10
|
fetchDatabases(schemaBuilder: Knex.SchemaBuilder, databasePrefix: string): Promise<IFetchDatabasesResultItem[]>;
|
|
8
|
-
createDatabase(schemaBuilder: Knex.SchemaBuilder, databaseName: string): Promise<
|
|
11
|
+
createDatabase(schemaBuilder: Knex.SchemaBuilder, databaseName: string): Promise<string>;
|
|
9
12
|
dropDatabase(schemaBuilder: Knex.SchemaBuilder, databaseName: string): Promise<void>;
|
|
10
13
|
fetchIndexes(schemaBuilder: Knex.SchemaBuilder, tableName: string): Promise<IFetchIndexesResultItem[]>;
|
|
11
14
|
insert(builder: Knex.QueryBuilder, datas: any[]): Promise<TableIdentity[]>;
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,93 @@
|
|
|
1
1
|
import { BeanInfo, Virtual, BeanScopeBase } from 'vona';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { ensureDir, remove } from 'fs-extra';
|
|
4
|
+
import { globby } from 'globby';
|
|
4
5
|
import { DatabaseDialect, BeanDatabaseDialectBase } from 'vona-module-a-orm';
|
|
6
|
+
import { promisify } from 'node:util';
|
|
5
7
|
import { Scope } from 'vona-module-a-bean';
|
|
6
8
|
|
|
9
|
+
var _dec$4, _dec2$4, _class$4;
|
|
10
|
+
let DatabaseDialectBetterSqlite3 = (_dec$4 = DatabaseDialect(), _dec2$4 = BeanInfo({
|
|
11
|
+
module: "a-ormdialect"
|
|
12
|
+
}), _dec$4(_class$4 = _dec2$4(_class$4 = class DatabaseDialectBetterSqlite3 extends BeanDatabaseDialectBase {
|
|
13
|
+
constructor(...args) {
|
|
14
|
+
super(...args);
|
|
15
|
+
this._capabilities = {
|
|
16
|
+
ilike: false,
|
|
17
|
+
level: false
|
|
18
|
+
};
|
|
19
|
+
this._configBase = {
|
|
20
|
+
useNullAsDefault: true,
|
|
21
|
+
pool: {
|
|
22
|
+
afterCreate(conn, done) {
|
|
23
|
+
sqlite3_afterCreate(conn).then(done).catch(done);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async fetchDatabases(_schemaBuilder, databasePrefix) {
|
|
29
|
+
const dbDir = this._getDbDir();
|
|
30
|
+
const files = await globby(`${databasePrefix}*.db`, {
|
|
31
|
+
cwd: dbDir,
|
|
32
|
+
onlyFiles: true
|
|
33
|
+
});
|
|
34
|
+
return files.map(item => {
|
|
35
|
+
return {
|
|
36
|
+
name: path.join(dbDir, item)
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async createDatabase(_schemaBuilder, databaseName) {
|
|
41
|
+
const dbDir = this._getDbDir();
|
|
42
|
+
await ensureDir(dbDir);
|
|
43
|
+
return path.join(dbDir, `${databaseName}.db`);
|
|
44
|
+
}
|
|
45
|
+
async dropDatabase(_schemaBuilder, databaseName) {
|
|
46
|
+
await remove(databaseName);
|
|
47
|
+
for (const part of ['shm', 'wal', 'journal']) {
|
|
48
|
+
await remove(`${databaseName}-${part}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async fetchIndexes(schemaBuilder, tableName) {
|
|
52
|
+
let items = await schemaBuilder.raw(`PRAGMA index_list(${tableName})`);
|
|
53
|
+
items = items.map(item => {
|
|
54
|
+
return {
|
|
55
|
+
indexName: item.name
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
return items;
|
|
59
|
+
}
|
|
60
|
+
async insert(builder, datas) {
|
|
61
|
+
return await this.insertAsMysql(builder, datas);
|
|
62
|
+
}
|
|
63
|
+
async select(builder, datas, fn) {
|
|
64
|
+
return await this.selectAsSqlite3(builder, datas, fn);
|
|
65
|
+
}
|
|
66
|
+
query(result) {
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
_getDbDir() {
|
|
70
|
+
return path.join(this.app.projectPath, '.app/sqlite3');
|
|
71
|
+
}
|
|
72
|
+
}) || _class$4) || _class$4);
|
|
73
|
+
async function sqlite3_afterCreate(conn) {
|
|
74
|
+
const pragma = conn.pragma('journal_mode');
|
|
75
|
+
if (pragma[0]?.journal_mode?.toLocaleLowerCase() !== 'wal') {
|
|
76
|
+
conn.pragma('journal_mode = wal');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
7
80
|
var _dec$3, _dec2$3, _class$3;
|
|
8
81
|
let DatabaseDialectMysql = (_dec$3 = DatabaseDialect(), _dec2$3 = BeanInfo({
|
|
9
82
|
module: "a-ormdialect"
|
|
10
83
|
}), _dec$3(_class$3 = _dec2$3(_class$3 = class DatabaseDialectMysql extends BeanDatabaseDialectBase {
|
|
11
|
-
|
|
12
|
-
|
|
84
|
+
constructor(...args) {
|
|
85
|
+
super(...args);
|
|
86
|
+
this._capabilities = {
|
|
87
|
+
ilike: false,
|
|
88
|
+
level: true
|
|
89
|
+
};
|
|
90
|
+
this._configBase = {
|
|
13
91
|
pool: {
|
|
14
92
|
afterCreate(conn, done) {
|
|
15
93
|
mysql_afterCreate(conn).then(done).catch(done);
|
|
@@ -30,6 +108,7 @@ let DatabaseDialectMysql = (_dec$3 = DatabaseDialect(), _dec2$3 = BeanInfo({
|
|
|
30
108
|
}
|
|
31
109
|
async createDatabase(schemaBuilder, databaseName) {
|
|
32
110
|
await schemaBuilder.raw(`CREATE DATABASE \`${databaseName}\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci`);
|
|
111
|
+
return databaseName;
|
|
33
112
|
}
|
|
34
113
|
async dropDatabase(schemaBuilder, databaseName) {
|
|
35
114
|
await schemaBuilder.raw(`drop database \`${databaseName}\``);
|
|
@@ -45,21 +124,7 @@ let DatabaseDialectMysql = (_dec$3 = DatabaseDialect(), _dec2$3 = BeanInfo({
|
|
|
45
124
|
return items;
|
|
46
125
|
}
|
|
47
126
|
async insert(builder, datas) {
|
|
48
|
-
|
|
49
|
-
if (isNil(datas[0].id)) {
|
|
50
|
-
const ids = [];
|
|
51
|
-
for (const data of datas) {
|
|
52
|
-
const builder2 = builder.clone();
|
|
53
|
-
builder2.insert(data);
|
|
54
|
-
const items = await builder2;
|
|
55
|
-
ids.push(items[0]);
|
|
56
|
-
}
|
|
57
|
-
return ids;
|
|
58
|
-
} else {
|
|
59
|
-
builder.insert(datas);
|
|
60
|
-
await builder;
|
|
61
|
-
return datas.map(item => item.id);
|
|
62
|
-
}
|
|
127
|
+
return await this.insertAsMysql(builder, datas);
|
|
63
128
|
}
|
|
64
129
|
query(result) {
|
|
65
130
|
return result[0];
|
|
@@ -94,38 +159,19 @@ async function _executeQuery(conn, sql) {
|
|
|
94
159
|
var _dec$2, _dec2$2, _dec3, _class$2;
|
|
95
160
|
let DatabaseDialectMysql3 = (_dec$2 = DatabaseDialect(), _dec2$2 = Virtual(), _dec3 = BeanInfo({
|
|
96
161
|
module: "a-ormdialect"
|
|
97
|
-
}), _dec$2(_class$2 = _dec2$2(_class$2 = _dec3(_class$2 = class DatabaseDialectMysql3 extends DatabaseDialectMysql {
|
|
98
|
-
getConfigBase() {
|
|
99
|
-
return super.getConfigBase();
|
|
100
|
-
// const configBase = super.getConfigBase();
|
|
101
|
-
// return Object.assign({}, configBase, {
|
|
102
|
-
// connection: {
|
|
103
|
-
// // typeCast(field, next) {
|
|
104
|
-
// // if (field.type === 'JSON') {
|
|
105
|
-
// // return field.string('utf-8'); // utf8 https://github.com/sidorares/node-mysql2/pull/1662
|
|
106
|
-
// // }
|
|
107
|
-
// // return next();
|
|
108
|
-
// // },
|
|
109
|
-
// },
|
|
110
|
-
// });
|
|
111
|
-
}
|
|
112
|
-
}) || _class$2) || _class$2) || _class$2);
|
|
162
|
+
}), _dec$2(_class$2 = _dec2$2(_class$2 = _dec3(_class$2 = class DatabaseDialectMysql3 extends DatabaseDialectMysql {}) || _class$2) || _class$2) || _class$2);
|
|
113
163
|
|
|
114
164
|
var _dec$1, _dec2$1, _class$1;
|
|
115
165
|
let DatabaseDialectPg = (_dec$1 = DatabaseDialect(), _dec2$1 = BeanInfo({
|
|
116
166
|
module: "a-ormdialect"
|
|
117
167
|
}), _dec$1(_class$1 = _dec2$1(_class$1 = class DatabaseDialectPg extends BeanDatabaseDialectBase {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
// if (oid === 114) return pgTypes.getTypeParser(25, 'text');
|
|
124
|
-
// return pgTypes.getTypeParser(oid, cast(format));
|
|
125
|
-
// },
|
|
126
|
-
// },
|
|
127
|
-
}
|
|
168
|
+
constructor(...args) {
|
|
169
|
+
super(...args);
|
|
170
|
+
this._capabilities = {
|
|
171
|
+
ilike: true,
|
|
172
|
+
level: true
|
|
128
173
|
};
|
|
174
|
+
this._configBase = undefined;
|
|
129
175
|
}
|
|
130
176
|
async fetchDatabases(schemaBuilder, databasePrefix) {
|
|
131
177
|
const res = await schemaBuilder.raw(`select datname from pg_database where datname like '${databasePrefix}%'`);
|
|
@@ -139,6 +185,7 @@ let DatabaseDialectPg = (_dec$1 = DatabaseDialect(), _dec2$1 = BeanInfo({
|
|
|
139
185
|
}
|
|
140
186
|
async createDatabase(schemaBuilder, databaseName) {
|
|
141
187
|
await schemaBuilder.raw(`CREATE DATABASE "${databaseName}" encoding=UTF8`);
|
|
188
|
+
return databaseName;
|
|
142
189
|
}
|
|
143
190
|
async dropDatabase(schemaBuilder, databaseName) {
|
|
144
191
|
await schemaBuilder.raw(`DROP DATABASE "${databaseName}"`);
|
|
@@ -154,16 +201,7 @@ let DatabaseDialectPg = (_dec$1 = DatabaseDialect(), _dec2$1 = BeanInfo({
|
|
|
154
201
|
return items;
|
|
155
202
|
}
|
|
156
203
|
async insert(builder, datas) {
|
|
157
|
-
|
|
158
|
-
if (isNil(datas[0].id)) {
|
|
159
|
-
builder.insert(datas).returning('id');
|
|
160
|
-
const items = await builder;
|
|
161
|
-
return items.map(item => item.id);
|
|
162
|
-
} else {
|
|
163
|
-
builder.insert(datas);
|
|
164
|
-
await builder;
|
|
165
|
-
return datas.map(item => item.id);
|
|
166
|
-
}
|
|
204
|
+
return await this.insertAsPg(builder, datas);
|
|
167
205
|
}
|
|
168
206
|
query(result) {
|
|
169
207
|
return result.rows;
|
|
@@ -201,4 +239,4 @@ let ScopeModuleAOrmdialect = (_dec = Scope(), _dec2 = BeanInfo({
|
|
|
201
239
|
|
|
202
240
|
/** scope: end */
|
|
203
241
|
|
|
204
|
-
export { DatabaseDialectMysql, DatabaseDialectMysql3, DatabaseDialectPg, ScopeModuleAOrmdialect };
|
|
242
|
+
export { DatabaseDialectBetterSqlite3, DatabaseDialectMysql, DatabaseDialectMysql3, DatabaseDialectPg, ScopeModuleAOrmdialect };
|
package/package.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vona-module-a-ormdialect",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.0.
|
|
4
|
+
"version": "5.0.21",
|
|
5
5
|
"title": "a-ormdialect",
|
|
6
6
|
"vonaModule": {
|
|
7
|
-
"dependencies": {}
|
|
7
|
+
"dependencies": {},
|
|
8
|
+
"globalDependencies": {
|
|
9
|
+
"better-sqlite3": true
|
|
10
|
+
}
|
|
8
11
|
},
|
|
9
12
|
"description": "",
|
|
10
13
|
"author": "",
|
|
@@ -26,6 +29,8 @@
|
|
|
26
29
|
"dist"
|
|
27
30
|
],
|
|
28
31
|
"dependencies": {
|
|
32
|
+
"better-sqlite3": "^12.5.0",
|
|
33
|
+
"globby": "^16.0.0",
|
|
29
34
|
"mysql2": "^3.15.0",
|
|
30
35
|
"pg": "^8.16.3",
|
|
31
36
|
"pg-types": "^4.1.0"
|