@sqb/sqljs 4.2.1 → 4.5.1
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 +67 -0
- package/cjs/index.js +5 -0
- package/cjs/package.json +3 -0
- package/{dist/SqljsAdapter.js → cjs/sqljs-adapter.js} +8 -10
- package/{dist/SqljsConnection.js → cjs/sqljs-connection.js} +4 -2
- package/{dist/SqljsCursor.js → cjs/sqljs-cursor.js} +2 -0
- package/{dist → esm}/index.d.ts +0 -0
- package/esm/index.js +3 -0
- package/{dist/SqljsAdapter.d.ts → esm/sqljs-adapter.d.ts} +0 -0
- package/esm/sqljs-adapter.js +63 -0
- package/{dist/SqljsConnection.d.ts → esm/sqljs-connection.d.ts} +0 -0
- package/esm/sqljs-connection.js +144 -0
- package/{dist/SqljsCursor.d.ts → esm/sqljs-cursor.d.ts} +0 -0
- package/esm/sqljs-cursor.js +30 -0
- package/package.json +52 -37
- package/dist/index.js +0 -5
package/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
|
|
2
|
+
<p style="text-align:center">
|
|
3
|
+
<img src="https://user-images.githubusercontent.com/3836517/32965280-1a2b63ce-cbe7-11e7-8ee1-ba47313503c5.png" width="500px" alt="SQB Logo"/>
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<br>
|
|
7
|
+
|
|
8
|
+
[![NPM Version][npm-image]][npm-url]
|
|
9
|
+
[![NPM Downloads][downloads-image]][downloads-url]
|
|
10
|
+
[![Build Status][travis-image]][travis-url]
|
|
11
|
+
[![Test Coverage][coveralls-image]][coveralls-url]
|
|
12
|
+
[![Dependencies][dependencies-image]][dependencies-url]
|
|
13
|
+
[![DevDependencies][devdependencies-image]][devdependencies-url]
|
|
14
|
+
[![Package Quality][quality-image]][quality-url]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## About SQB
|
|
18
|
+
|
|
19
|
+
SQB is an extensible, multi-dialect SQL query builder and Database connection wrapper for NodeJS.
|
|
20
|
+
|
|
21
|
+
## Main goals
|
|
22
|
+
|
|
23
|
+
- Single code base for any sql based database
|
|
24
|
+
- Powerful and simplified query coding scheme
|
|
25
|
+
- Fast applications with low memory requirements
|
|
26
|
+
- Let applications work with large data tables efficiently
|
|
27
|
+
- Support latest JavaScript language standards
|
|
28
|
+
- Lightweight and extensible framework.
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
You can report bugs and discuss features on the [GitHub issues](https://github.com/sqbjs/sqb/issues) page
|
|
32
|
+
|
|
33
|
+
Thanks to all of the great [contributions](https://github.com/sqbjs/sqb/graphs/contributors) to the project.
|
|
34
|
+
|
|
35
|
+
You may want to check detailed [DOCUMENTATION](https://sqbjs.github.io/sqb/)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## Installation
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
$ npm install @sqb/sqljs --save
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Node Compatibility
|
|
45
|
+
|
|
46
|
+
- node >= 16.x
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### License
|
|
50
|
+
SQB is available under [MIT](LICENSE) license.
|
|
51
|
+
|
|
52
|
+
[npm-image]: https://img.shields.io/npm/v/@sqb/sqljs.svg
|
|
53
|
+
[npm-url]: https://npmjs.org/package/@sqb/sqljs
|
|
54
|
+
[travis-image]: https://img.shields.io/travis/sqbjs/@sqb/sqljs/master.svg
|
|
55
|
+
[travis-url]: https://travis-ci.org/sqbjs/@sqb/sqljs
|
|
56
|
+
[coveralls-image]: https://img.shields.io/coveralls/sqbjs/@sqb/sqljs/master.svg
|
|
57
|
+
[coveralls-url]: https://coveralls.io/r/sqbjs/@sqb/sqljs
|
|
58
|
+
[downloads-image]: https://img.shields.io/npm/dm/@sqb/sqljs.svg
|
|
59
|
+
[downloads-url]: https://npmjs.org/package/@sqb/sqljs
|
|
60
|
+
[gitter-image]: https://badges.gitter.im/sqbjs/@sqb/sqljs.svg
|
|
61
|
+
[gitter-url]: https://gitter.im/sqbjs/@sqb/sqljs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
|
62
|
+
[dependencies-image]: https://david-dm.org/sqbjs/@sqb/sqljs/status.svg
|
|
63
|
+
[dependencies-url]:https://david-dm.org/sqbjs/@sqb/sqljs
|
|
64
|
+
[devdependencies-image]: https://david-dm.org/sqbjs/@sqb/sqljs/dev-status.svg
|
|
65
|
+
[devdependencies-url]:https://david-dm.org/sqbjs/@sqb/sqljs?type=dev
|
|
66
|
+
[quality-image]: http://npm.packagequality.com/shield/@sqb/sqljs.png
|
|
67
|
+
[quality-url]: http://packagequality.com/#?package=@sqb/sqljs
|
package/cjs/index.js
ADDED
package/cjs/package.json
ADDED
|
@@ -7,17 +7,15 @@ const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
|
7
7
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
8
8
|
const putil_promisify_1 = tslib_1.__importDefault(require("putil-promisify"));
|
|
9
9
|
const sql_js_1 = tslib_1.__importDefault(require("sql.js"));
|
|
10
|
-
const
|
|
10
|
+
const sqljs_connection_js_1 = require("./sqljs-connection.js");
|
|
11
11
|
const dbCache = new Map();
|
|
12
12
|
class SqljsAdapter {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
}
|
|
13
|
+
driver = 'sqljs';
|
|
14
|
+
dialect = 'sqlite';
|
|
15
|
+
features = {
|
|
16
|
+
cursor: true,
|
|
17
|
+
// fetchAsString: [DataType.DATE, DataType.TIMESTAMP, DataType.TIMESTAMPTZ]
|
|
18
|
+
};
|
|
21
19
|
async connect(config) {
|
|
22
20
|
if (!config.database)
|
|
23
21
|
throw new Error('You must provide sqlite database file for sql.js driver');
|
|
@@ -49,7 +47,7 @@ class SqljsAdapter {
|
|
|
49
47
|
dbCache.set(dbName, intlDb);
|
|
50
48
|
}
|
|
51
49
|
const _intlDb = intlDb;
|
|
52
|
-
return new
|
|
50
|
+
return new sqljs_connection_js_1.SqljsConnection(_intlDb, () => {
|
|
53
51
|
if (isMemory)
|
|
54
52
|
return;
|
|
55
53
|
if (--_intlDb._refCount <= 0) {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SqljsConnection = void 0;
|
|
4
|
-
const
|
|
4
|
+
const sqljs_cursor_js_1 = require("./sqljs-cursor.js");
|
|
5
5
|
class SqljsConnection {
|
|
6
|
+
_onClose;
|
|
7
|
+
intlcon;
|
|
6
8
|
constructor(db, _onClose) {
|
|
7
9
|
this._onClose = _onClose;
|
|
8
10
|
this.intlcon = db;
|
|
@@ -109,7 +111,7 @@ class SqljsConnection {
|
|
|
109
111
|
out.fields = this._convertFields(colNames);
|
|
110
112
|
const rowType = query.objectRows ? 'object' : 'array';
|
|
111
113
|
out.rowType = rowType;
|
|
112
|
-
const cursor = new
|
|
114
|
+
const cursor = new sqljs_cursor_js_1.SqljsCursor(stmt, { rowType });
|
|
113
115
|
if (query.cursor) {
|
|
114
116
|
out.cursor = cursor;
|
|
115
117
|
stmt = undefined;
|
package/{dist → esm}/index.d.ts
RENAMED
|
File without changes
|
package/esm/index.js
ADDED
|
File without changes
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import '@sqb/sqlite-dialect';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import promisify from 'putil-promisify';
|
|
5
|
+
import initSqlJs from 'sql.js';
|
|
6
|
+
import { SqljsConnection } from './sqljs-connection.js';
|
|
7
|
+
const dbCache = new Map();
|
|
8
|
+
export class SqljsAdapter {
|
|
9
|
+
driver = 'sqljs';
|
|
10
|
+
dialect = 'sqlite';
|
|
11
|
+
features = {
|
|
12
|
+
cursor: true,
|
|
13
|
+
// fetchAsString: [DataType.DATE, DataType.TIMESTAMP, DataType.TIMESTAMPTZ]
|
|
14
|
+
};
|
|
15
|
+
async connect(config) {
|
|
16
|
+
if (!config.database)
|
|
17
|
+
throw new Error('You must provide sqlite database file for sql.js driver');
|
|
18
|
+
let dbName = '';
|
|
19
|
+
let isMemory = false;
|
|
20
|
+
const m = config.database.match(/^(:memory:)(\w+)?$/);
|
|
21
|
+
if (m) {
|
|
22
|
+
isMemory = true;
|
|
23
|
+
dbName = config.database;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
dbName = path.resolve(config.database);
|
|
27
|
+
}
|
|
28
|
+
let intlDb = dbCache.get(dbName);
|
|
29
|
+
if (intlDb) {
|
|
30
|
+
intlDb._refCount++;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const SQL = await initSqlJs();
|
|
34
|
+
if (isMemory) {
|
|
35
|
+
intlDb = new SQL.Database();
|
|
36
|
+
intlDb._refCount = 0;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const buf = await promisify.fromCallback(cb => fs.readFile(dbName, cb));
|
|
40
|
+
intlDb = new SQL.Database(buf);
|
|
41
|
+
intlDb._refCount = 1;
|
|
42
|
+
}
|
|
43
|
+
dbCache.set(dbName, intlDb);
|
|
44
|
+
}
|
|
45
|
+
const _intlDb = intlDb;
|
|
46
|
+
return new SqljsConnection(_intlDb, () => {
|
|
47
|
+
if (isMemory)
|
|
48
|
+
return;
|
|
49
|
+
if (--_intlDb._refCount <= 0) {
|
|
50
|
+
_intlDb.close();
|
|
51
|
+
dbCache.delete(dbName);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export async function closeMemoryDatabase(name) {
|
|
57
|
+
const memoryDbName = name || ':memory:';
|
|
58
|
+
const memDb = dbCache.get(memoryDbName);
|
|
59
|
+
if (memDb) {
|
|
60
|
+
dbCache.delete(memoryDbName);
|
|
61
|
+
memDb.close();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { SqljsCursor } from './sqljs-cursor.js';
|
|
2
|
+
export class SqljsConnection {
|
|
3
|
+
_onClose;
|
|
4
|
+
intlcon;
|
|
5
|
+
constructor(db, _onClose) {
|
|
6
|
+
this._onClose = _onClose;
|
|
7
|
+
this.intlcon = db;
|
|
8
|
+
}
|
|
9
|
+
get sessionId() {
|
|
10
|
+
return 0;
|
|
11
|
+
}
|
|
12
|
+
async close() {
|
|
13
|
+
if (this.intlcon) {
|
|
14
|
+
this.intlcon = undefined;
|
|
15
|
+
await this._onClose();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async reset() {
|
|
19
|
+
return this.rollback();
|
|
20
|
+
}
|
|
21
|
+
async startTransaction() {
|
|
22
|
+
assertDefined(this.intlcon);
|
|
23
|
+
try {
|
|
24
|
+
this.intlcon.exec('BEGIN TRANSACTION;');
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
if (e instanceof Error && e.message.match(/within a transaction/))
|
|
28
|
+
return;
|
|
29
|
+
throw e;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async commit() {
|
|
33
|
+
assertDefined(this.intlcon);
|
|
34
|
+
try {
|
|
35
|
+
this.intlcon.exec('COMMIT;');
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
if (e instanceof Error && e.message.match(/no transaction/))
|
|
39
|
+
return;
|
|
40
|
+
throw e;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async rollback() {
|
|
44
|
+
assertDefined(this.intlcon);
|
|
45
|
+
try {
|
|
46
|
+
this.intlcon.exec('ROLLBACK;');
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
if (e instanceof Error && e.message.match(/no transaction/))
|
|
50
|
+
return;
|
|
51
|
+
throw e;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async test() {
|
|
55
|
+
assertDefined(this.intlcon);
|
|
56
|
+
this.intlcon.exec('select 1');
|
|
57
|
+
}
|
|
58
|
+
async execute(query) {
|
|
59
|
+
assertDefined(this.intlcon);
|
|
60
|
+
if (!query.autoCommit)
|
|
61
|
+
await this.startTransaction();
|
|
62
|
+
const out = {};
|
|
63
|
+
let params;
|
|
64
|
+
if (query.params) {
|
|
65
|
+
const prms = query.params;
|
|
66
|
+
params = Object.keys(prms).reduce((obj, k) => {
|
|
67
|
+
obj[':' + k] = prms[k];
|
|
68
|
+
return obj;
|
|
69
|
+
}, {});
|
|
70
|
+
}
|
|
71
|
+
const m = query.sql.match(/\b(insert into|update|delete from)\b ("?\w+"?)/i);
|
|
72
|
+
if (m) {
|
|
73
|
+
const stmt = this.intlcon.prepare(query.sql);
|
|
74
|
+
stmt.run(params);
|
|
75
|
+
stmt.free();
|
|
76
|
+
out.rowsAffected = this.intlcon.getRowsModified();
|
|
77
|
+
if (query.autoCommit)
|
|
78
|
+
await this.commit();
|
|
79
|
+
if (out.rowsAffected === 1 && query.returningFields) {
|
|
80
|
+
const selectFields = query.returningFields.map(x => x.field + (x.alias ? ' as ' + x.alias : ''));
|
|
81
|
+
let sql = `select ${selectFields.join(',')} from ${m[2]}\n`;
|
|
82
|
+
// Emulate insert into ... returning
|
|
83
|
+
if (m[1].toLowerCase() === 'insert into') {
|
|
84
|
+
sql += 'where rowid=last_insert_rowid();';
|
|
85
|
+
const r = this.intlcon.exec(sql);
|
|
86
|
+
if (r.length) {
|
|
87
|
+
out.fields = this._convertFields(r[0].columns);
|
|
88
|
+
out.rows = r[0].values;
|
|
89
|
+
out.rowType = 'array';
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
else
|
|
94
|
+
// Emulate update ... returning
|
|
95
|
+
if (m[1].toLowerCase() === 'update') {
|
|
96
|
+
const m2 = query.sql.match(/where (.+)/);
|
|
97
|
+
query = { ...query };
|
|
98
|
+
query.sql = sql + (m2 ? ' where ' + m2[1] : '');
|
|
99
|
+
}
|
|
100
|
+
else
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
let stmt = this.intlcon.prepare(query.sql, query.params);
|
|
105
|
+
try {
|
|
106
|
+
const colNames = stmt.getColumnNames();
|
|
107
|
+
if (colNames && colNames.length) {
|
|
108
|
+
out.fields = this._convertFields(colNames);
|
|
109
|
+
const rowType = query.objectRows ? 'object' : 'array';
|
|
110
|
+
out.rowType = rowType;
|
|
111
|
+
const cursor = new SqljsCursor(stmt, { rowType });
|
|
112
|
+
if (query.cursor) {
|
|
113
|
+
out.cursor = cursor;
|
|
114
|
+
stmt = undefined;
|
|
115
|
+
}
|
|
116
|
+
else
|
|
117
|
+
out.rows = await cursor.fetch(query.fetchRows || 100);
|
|
118
|
+
}
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
if (stmt)
|
|
123
|
+
stmt.free();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
_convertFields(fields) {
|
|
127
|
+
const result = [];
|
|
128
|
+
for (let i = 0; i < fields.length; i++) {
|
|
129
|
+
const v = fields[i];
|
|
130
|
+
const o = {
|
|
131
|
+
fieldName: v,
|
|
132
|
+
dataType: 'any',
|
|
133
|
+
jsType: 'any',
|
|
134
|
+
_inf: { name: v }
|
|
135
|
+
};
|
|
136
|
+
result.push(o);
|
|
137
|
+
}
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function assertDefined(d) {
|
|
142
|
+
if (d == null)
|
|
143
|
+
throw new Error("Invalid data");
|
|
144
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class SqljsCursor {
|
|
2
|
+
_stmt;
|
|
3
|
+
_rowType;
|
|
4
|
+
constructor(stmt, opts) {
|
|
5
|
+
this._rowType = opts.rowType;
|
|
6
|
+
this._stmt = stmt;
|
|
7
|
+
}
|
|
8
|
+
get isClosed() {
|
|
9
|
+
return !this._stmt;
|
|
10
|
+
}
|
|
11
|
+
get rowType() {
|
|
12
|
+
return this._rowType;
|
|
13
|
+
}
|
|
14
|
+
async close() {
|
|
15
|
+
if (!this._stmt)
|
|
16
|
+
return;
|
|
17
|
+
this._stmt.free();
|
|
18
|
+
this._stmt = undefined;
|
|
19
|
+
}
|
|
20
|
+
async fetch(nRows) {
|
|
21
|
+
if (!this._stmt)
|
|
22
|
+
return;
|
|
23
|
+
const stmt = this._stmt;
|
|
24
|
+
const rows = [];
|
|
25
|
+
while (nRows-- && stmt.step()) {
|
|
26
|
+
rows.push(this.rowType === 'object' ? stmt.getAsObject() : stmt.get());
|
|
27
|
+
}
|
|
28
|
+
return rows;
|
|
29
|
+
}
|
|
30
|
+
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqb/sqljs",
|
|
3
3
|
"description": "SQB serialization extension for sql.js driver",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.5.1",
|
|
5
5
|
"author": "Panates",
|
|
6
6
|
"contributors": [
|
|
7
|
-
"Eray Hanoglu <e.hanoglu@panates.com>"
|
|
7
|
+
"Eray Hanoglu <e.hanoglu@panates.com>",
|
|
8
|
+
"Ilker Gurelli <i.gurelli@panates.com>"
|
|
8
9
|
],
|
|
9
10
|
"license": "Apache-2.0",
|
|
10
11
|
"repository": {
|
|
@@ -12,52 +13,66 @@
|
|
|
12
13
|
"url": "https://github.com/sqbjs/sqb.git",
|
|
13
14
|
"directory": "packages/sqljs"
|
|
14
15
|
},
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
|
|
16
|
+
"scripts": {
|
|
17
|
+
"compile": "tsc",
|
|
18
|
+
"prebuild": "npm run lint && npm run clean",
|
|
19
|
+
"build": "npm run build:cjs && npm run build:esm",
|
|
20
|
+
"build:cjs": "tsc -b tsconfig-build-cjs.json",
|
|
21
|
+
"build:esm": "tsc -b tsconfig-build-esm.json",
|
|
22
|
+
"postbuild": "cp README.md package.json ../../LICENSE ../../build/sqljs && cp ../../package.cjs.json ../../build/sqljs/cjs/package.json",
|
|
23
|
+
"lint": "eslint .",
|
|
24
|
+
"test": "jest",
|
|
25
|
+
"cover": "jest --collect-coverage",
|
|
26
|
+
"clean": "npm run clean:src | npm run clean:dist | npm run clean:cover",
|
|
27
|
+
"clean:src": "ts-cleanup -s src --all",
|
|
28
|
+
"clean:dist": "rimraf ../../build/sqljs",
|
|
29
|
+
"clean:cover": "rimraf ../../coverage/sqljs"
|
|
30
|
+
},
|
|
26
31
|
"dependencies": {
|
|
27
32
|
"putil-promisify": "^1.8.5"
|
|
28
33
|
},
|
|
29
34
|
"devDependencies": {
|
|
30
35
|
"@types/sql.js": "^1.4.3",
|
|
31
|
-
"sql.js": "^1.
|
|
36
|
+
"sql.js": "^1.8.0"
|
|
32
37
|
},
|
|
33
38
|
"peerDependencies": {
|
|
34
|
-
"@sqb/builder": "^4.
|
|
35
|
-
"@sqb/connect": "^4.
|
|
36
|
-
"@sqb/sqlite-dialect": "^4.
|
|
37
|
-
"sql.js": "^1.
|
|
39
|
+
"@sqb/builder": "^4.5.0",
|
|
40
|
+
"@sqb/connect": "^4.5.0",
|
|
41
|
+
"@sqb/sqlite-dialect": "^4.5.0",
|
|
42
|
+
"sql.js": "^1.8.0"
|
|
38
43
|
},
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
|
|
44
|
+
"type": "module",
|
|
45
|
+
"main": "cjs/index.js",
|
|
46
|
+
"module": "esm/index.js",
|
|
47
|
+
"types": "esm/index.d.ts",
|
|
48
|
+
"exports": {
|
|
49
|
+
".": {
|
|
50
|
+
"require": "./cjs/index.js",
|
|
51
|
+
"default": "./esm/index.js"
|
|
52
|
+
},
|
|
53
|
+
"./cjs": "./cjs/index.js",
|
|
54
|
+
"./esm": "./esm/index.js"
|
|
43
55
|
},
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
56
|
+
"engines": {
|
|
57
|
+
"node": ">=16.0",
|
|
58
|
+
"npm": ">=7.0.0"
|
|
47
59
|
},
|
|
48
60
|
"files": [
|
|
61
|
+
"bin/",
|
|
62
|
+
"cjs/",
|
|
63
|
+
"esm/",
|
|
49
64
|
"LICENSE",
|
|
50
|
-
"README"
|
|
51
|
-
"dist/"
|
|
65
|
+
"README.md"
|
|
52
66
|
],
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
|
|
67
|
+
"keywords": [
|
|
68
|
+
"sqb",
|
|
69
|
+
"sqlite",
|
|
70
|
+
"sql.js",
|
|
71
|
+
"sql",
|
|
72
|
+
"query",
|
|
73
|
+
"builder",
|
|
74
|
+
"dialect",
|
|
75
|
+
"serializer",
|
|
76
|
+
"database"
|
|
77
|
+
]
|
|
63
78
|
}
|
package/dist/index.js
DELETED