sqlmath 0.0.1 → 2021.11.20

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.
Files changed (96) hide show
  1. package/.npmignore +10 -0
  2. package/CHANGELOG.md +53 -2
  3. package/LICENSE +16 -22
  4. package/README.md +18 -219
  5. package/_binary_sqlmath_napi8_darwin_x64.node +0 -0
  6. package/_binary_sqlmath_napi8_linux_x64.node +0 -0
  7. package/_binary_sqlmath_napi8_win32_x64.node +0 -0
  8. package/jslint.mjs +10998 -0
  9. package/package.json +23 -8
  10. package/sqlmath.mjs +1713 -0
  11. package/.gitconfig +0 -25
  12. package/.github/workflows/ci.yml +0 -61
  13. package/.gitignore +0 -24
  14. package/extension-functions.c +0 -2047
  15. package/jslint_ci.sh +0 -1968
  16. package/node_sqlite3.cc +0 -11877
  17. package/sqlite-autoconf-3360000/INSTALL +0 -370
  18. package/sqlite-autoconf-3360000/Makefile.am +0 -20
  19. package/sqlite-autoconf-3360000/Makefile.fallback +0 -19
  20. package/sqlite-autoconf-3360000/Makefile.in +0 -1028
  21. package/sqlite-autoconf-3360000/Makefile.msc +0 -1037
  22. package/sqlite-autoconf-3360000/README.txt +0 -113
  23. package/sqlite-autoconf-3360000/Replace.cs +0 -223
  24. package/sqlite-autoconf-3360000/aclocal.m4 +0 -10199
  25. package/sqlite-autoconf-3360000/compile +0 -347
  26. package/sqlite-autoconf-3360000/config.guess +0 -1480
  27. package/sqlite-autoconf-3360000/config.sub +0 -1801
  28. package/sqlite-autoconf-3360000/configure +0 -16135
  29. package/sqlite-autoconf-3360000/configure.ac +0 -285
  30. package/sqlite-autoconf-3360000/depcomp +0 -791
  31. package/sqlite-autoconf-3360000/install-sh +0 -508
  32. package/sqlite-autoconf-3360000/ltmain.sh +0 -11156
  33. package/sqlite-autoconf-3360000/missing +0 -215
  34. package/sqlite-autoconf-3360000/shell.c +0 -22381
  35. package/sqlite-autoconf-3360000/sqlite3.1 +0 -286
  36. package/sqlite-autoconf-3360000/sqlite3.c +0 -235517
  37. package/sqlite-autoconf-3360000/sqlite3.h +0 -12353
  38. package/sqlite-autoconf-3360000/sqlite3.pc.in +0 -13
  39. package/sqlite-autoconf-3360000/sqlite3.rc +0 -83
  40. package/sqlite-autoconf-3360000/sqlite3ext.h +0 -663
  41. package/sqlite-autoconf-3360000/sqlite3rc.h +0 -3
  42. package/sqlite-autoconf-3360000/tea/Makefile.in +0 -440
  43. package/sqlite-autoconf-3360000/tea/README +0 -36
  44. package/sqlite-autoconf-3360000/tea/aclocal.m4 +0 -9
  45. package/sqlite-autoconf-3360000/tea/configure +0 -9989
  46. package/sqlite-autoconf-3360000/tea/configure.ac +0 -201
  47. package/sqlite-autoconf-3360000/tea/doc/sqlite3.n +0 -15
  48. package/sqlite-autoconf-3360000/tea/generic/tclsqlite3.c +0 -4016
  49. package/sqlite-autoconf-3360000/tea/license.terms +0 -6
  50. package/sqlite-autoconf-3360000/tea/pkgIndex.tcl.in +0 -7
  51. package/sqlite-autoconf-3360000/tea/tclconfig/install-sh +0 -528
  52. package/sqlite-autoconf-3360000/tea/tclconfig/tcl.m4 +0 -4168
  53. package/sqlite-autoconf-3360000/tea/win/makefile.vc +0 -419
  54. package/sqlite-autoconf-3360000/tea/win/nmakehlp.c +0 -815
  55. package/sqlite-autoconf-3360000/tea/win/rules.vc +0 -711
  56. package/sqlmath.js +0 -238
  57. package/test/backup.test.js +0 -279
  58. package/test/blob.test.js +0 -54
  59. package/test/cache.test.js +0 -42
  60. package/test/constants.test.js +0 -44
  61. package/test/database_fail.test.js +0 -153
  62. package/test/each.test.js +0 -39
  63. package/test/exec.test.js +0 -39
  64. package/test/extension.test.js +0 -26
  65. package/test/extension_functions.test.js +0 -29
  66. package/test/fts-content.test.js +0 -13
  67. package/test/interrupt.test.js +0 -80
  68. package/test/issue-108.test.js +0 -28
  69. package/test/json.test.js +0 -22
  70. package/test/map.test.js +0 -63
  71. package/test/named_columns.test.js +0 -38
  72. package/test/named_params.test.js +0 -69
  73. package/test/null_error.test.js +0 -41
  74. package/test/nw/.gitignore +0 -3
  75. package/test/nw/Makefile +0 -39
  76. package/test/nw/index.html +0 -14
  77. package/test/nw/package.json +0 -9
  78. package/test/open_close.test.js +0 -187
  79. package/test/other_objects.test.js +0 -98
  80. package/test/parallel_insert.test.js +0 -44
  81. package/test/prepare.test.js +0 -427
  82. package/test/profile.test.js +0 -57
  83. package/test/rerun.test.js +0 -50
  84. package/test/scheduling.test.js +0 -44
  85. package/test/serialization.test.js +0 -104
  86. package/test/support/createdb-electron.js +0 -10
  87. package/test/support/createdb.js +0 -47
  88. package/test/support/elmo.png +0 -0
  89. package/test/support/helper.js +0 -37
  90. package/test/support/script.sql +0 -70
  91. package/test/trace.test.js +0 -67
  92. package/test/unicode.test.js +0 -114
  93. package/test/upsert.test.js +0 -27
  94. package/test/verbose.test.js +0 -60
  95. package/test.js +0 -141
  96. package/test.slr.mjs +0 -212
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- function createdb(callback) {
4
- var existsSync = require("fs").existsSync || require("path").existsSync;
5
- var path = require("path");
6
-
7
- var sqlite3 = require("../../sqlmath.js");
8
-
9
- var count = 1000000;
10
- var db_path = path.join(__dirname,"big.db");
11
-
12
- function randomString() {
13
- var str = "";
14
- var chars = "abcdefghijklmnopqrstuvwxzyABCDEFGHIJKLMNOPQRSTUVWXZY0123456789 ";
15
- for (var i = Math.random() * 100; i > 0; i--) {
16
- str += chars[Math.floor(Math.random() * chars.length)];
17
- }
18
- return str;
19
- }
20
-
21
-
22
- if (existsSync(db_path)) {
23
- console.log("okay: database already created (" + db_path + ")");
24
- if (callback) callback();
25
- } else {
26
- console.log("Creating test database... This may take several minutes.");
27
- var db = new sqlite3.Database(db_path);
28
- db.serialize(function() {
29
- db.run("CREATE TABLE foo (id INT, txt TEXT)");
30
- db.run("BEGIN TRANSACTION");
31
- var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
32
- for (var i = 0; i < count; i++) {
33
- stmt.run(i, randomString());
34
- }
35
- stmt.finalize();
36
- db.run("COMMIT TRANSACTION", [], function () {
37
- db.close(callback);
38
- });
39
- });
40
- }
41
- }
42
-
43
- if (require.main === module) {
44
- createdb();
45
- }
46
-
47
- module.exports = createdb;
Binary file
@@ -1,37 +0,0 @@
1
- var assert = require("assert");
2
- var fs = require("fs");
3
- var pathExists = require("fs").existsSync || require("path").existsSync;
4
-
5
- exports.deleteFile = function(name) {
6
- try {
7
- fs.unlinkSync(name);
8
- } catch(err) {
9
- if (err.errno !== process.ENOENT && err.code !== "ENOENT" && err.syscall !== "unlink") {
10
- throw err;
11
- }
12
- }
13
- };
14
-
15
- exports.ensureExists = function(name,cb) {
16
- if (!pathExists(name)) {
17
- fs.mkdirSync(name);
18
- }
19
- };
20
-
21
- assert.fileDoesNotExist = function(name) {
22
- try {
23
- fs.statSync(name);
24
- } catch(err) {
25
- if (err.errno !== process.ENOENT && err.code !== "ENOENT" && err.syscall !== "unlink") {
26
- throw err;
27
- }
28
- }
29
- };
30
-
31
- assert.fileExists = function(name) {
32
- try {
33
- fs.statSync(name);
34
- } catch(err) {
35
- throw err;
36
- }
37
- };
@@ -1,70 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS map (
2
- zoom_level INTEGER,
3
- tile_column INTEGER,
4
- tile_row INTEGER,
5
- tile_id TEXT,
6
- grid_id TEXT
7
- );
8
-
9
- CREATE TABLE IF NOT EXISTS grid_key (
10
- grid_id TEXT,
11
- key_name TEXT
12
- );
13
-
14
- CREATE TABLE IF NOT EXISTS keymap (
15
- key_name TEXT,
16
- key_json TEXT
17
- );
18
-
19
- CREATE TABLE IF NOT EXISTS grid_utfgrid (
20
- grid_id TEXT,
21
- grid_utfgrid TEXT
22
- );
23
-
24
- CREATE TABLE IF NOT EXISTS images (
25
- tile_data blob,
26
- tile_id text
27
- );
28
-
29
- CREATE TABLE IF NOT EXISTS metadata (
30
- name text,
31
- value text
32
- );
33
-
34
-
35
- CREATE UNIQUE INDEX IF NOT EXISTS map_index ON map (zoom_level, tile_column, tile_row);
36
- CREATE UNIQUE INDEX IF NOT EXISTS grid_key_lookup ON grid_key (grid_id, key_name);
37
- CREATE UNIQUE INDEX IF NOT EXISTS keymap_lookup ON keymap (key_name);
38
- CREATE UNIQUE INDEX IF NOT EXISTS grid_utfgrid_lookup ON grid_utfgrid (grid_id);
39
- CREATE UNIQUE INDEX IF NOT EXISTS images_id ON images (tile_id);
40
- CREATE UNIQUE INDEX IF NOT EXISTS name ON metadata (name);
41
-
42
-
43
- CREATE VIEW IF NOT EXISTS tiles AS
44
- SELECT
45
- map.zoom_level AS zoom_level,
46
- map.tile_column AS tile_column,
47
- map.tile_row AS tile_row,
48
- images.tile_data AS tile_data
49
- FROM map
50
- JOIN images ON images.tile_id = map.tile_id;
51
-
52
- CREATE VIEW IF NOT EXISTS grids AS
53
- SELECT
54
- map.zoom_level AS zoom_level,
55
- map.tile_column AS tile_column,
56
- map.tile_row AS tile_row,
57
- grid_utfgrid.grid_utfgrid AS grid
58
- FROM map
59
- JOIN grid_utfgrid ON grid_utfgrid.grid_id = map.grid_id;
60
-
61
- CREATE VIEW IF NOT EXISTS grid_data AS
62
- SELECT
63
- map.zoom_level AS zoom_level,
64
- map.tile_column AS tile_column,
65
- map.tile_row AS tile_row,
66
- keymap.key_name AS key_name,
67
- keymap.key_json AS key_json
68
- FROM map
69
- JOIN grid_key ON map.grid_id = grid_key.grid_id
70
- JOIN keymap ON grid_key.key_name = keymap.key_name;
@@ -1,67 +0,0 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
3
-
4
- describe("tracing", function() {
5
- it("Database tracing", function(done) {
6
- var db = new sqlite3.Database(":memory:");
7
- var create = false;
8
- var select = false;
9
-
10
- db.on("trace", function(sql) {
11
- if (sql.match(/^SELECT/)) {
12
- assert.ok(!select);
13
- assert.equal(sql, "SELECT * FROM foo");
14
- select = true;
15
- }
16
- else if (sql.match(/^CREATE/)) {
17
- assert.ok(!create);
18
- assert.equal(sql, "CREATE TABLE foo (id int)");
19
- create = true;
20
- }
21
- else {
22
- assert.ok(false);
23
- }
24
- });
25
-
26
- db.serialize(function() {
27
- db.run("CREATE TABLE foo (id int)");
28
- db.run("SELECT * FROM foo");
29
- });
30
-
31
- db.close(function(err) {
32
- if (err) throw err;
33
- assert.ok(create);
34
- assert.ok(select);
35
- done();
36
- });
37
- });
38
-
39
-
40
- it("test disabling tracing #1", function(done) {
41
- var db = new sqlite3.Database(":memory:");
42
-
43
- db.on("trace", function(sql) {});
44
- db.removeAllListeners("trace");
45
- db._events["trace"] = function(sql) {
46
- assert.ok(false);
47
- };
48
-
49
- db.run("CREATE TABLE foo (id int)");
50
- db.close(done);
51
- });
52
-
53
-
54
- it("test disabling tracing #2", function(done) {
55
- var db = new sqlite3.Database(":memory:");
56
-
57
- var trace = function(sql) {};
58
- db.on("trace", trace);
59
- db.removeListener("trace", trace);
60
- db._events["trace"] = function(sql) {
61
- assert.ok(false);
62
- };
63
-
64
- db.run("CREATE TABLE foo (id int)");
65
- db.close(done);
66
- });
67
- });
@@ -1,114 +0,0 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
3
-
4
- describe("unicode", function() {
5
- var first_values = [],
6
- trailing_values = [],
7
- chars = [],
8
- subranges = new Array(2),
9
- len = subranges.length,
10
- db,
11
- i;
12
-
13
- before(function(done) { db = new sqlite3.Database(":memory:", done); });
14
-
15
- for (i = 0x20; i < 0x80; i++) {
16
- first_values.push(i);
17
- }
18
-
19
- for (i = 0xc2; i < 0xf0; i++) {
20
- first_values.push(i);
21
- }
22
-
23
- for (i = 0x80; i < 0xc0; i++) {
24
- trailing_values.push(i);
25
- }
26
-
27
- for (i = 0; i < len; i++) {
28
- subranges[i] = [];
29
- }
30
-
31
- for (i = 0xa0; i < 0xc0; i++) {
32
- subranges[0].push(i);
33
- }
34
-
35
- for (i = 0x80; i < 0xa0; i++) {
36
- subranges[1].push(i);
37
- }
38
-
39
- function random_choice(arr) {
40
- return arr[Math.random() * arr.length | 0];
41
- }
42
-
43
- function random_utf8() {
44
- var first = random_choice(first_values);
45
-
46
- if (first < 0x80) {
47
- return String.fromCharCode(first);
48
- } else if (first < 0xe0) {
49
- return String.fromCharCode((first & 0x1f) << 0x6 | random_choice(trailing_values) & 0x3f);
50
- } else if (first == 0xe0) {
51
- return String.fromCharCode(((first & 0xf) << 0xc) | ((random_choice(subranges[0]) & 0x3f) << 6) | random_choice(trailing_values) & 0x3f);
52
- } else if (first == 0xed) {
53
- return String.fromCharCode(((first & 0xf) << 0xc) | ((random_choice(subranges[1]) & 0x3f) << 6) | random_choice(trailing_values) & 0x3f);
54
- } else if (first < 0xf0) {
55
- return String.fromCharCode(((first & 0xf) << 0xc) | ((random_choice(trailing_values) & 0x3f) << 6) | random_choice(trailing_values) & 0x3f);
56
- }
57
- }
58
-
59
- function randomString() {
60
- var str = "",
61
- i;
62
-
63
- for (i = Math.random() * 300; i > 0; i--) {
64
- str += random_utf8();
65
- }
66
-
67
- return str;
68
- }
69
-
70
-
71
- // Generate random data.
72
- var data = [];
73
- var length = Math.floor(Math.random() * 1000) + 200;
74
- for (var i = 0; i < length; i++) {
75
- data.push(randomString());
76
- }
77
-
78
- var inserted = 0;
79
- var retrieved = 0;
80
-
81
- it("should create the table", function(done) {
82
- db.run("CREATE TABLE foo (id int, txt text)", done);
83
- });
84
-
85
- it("should insert all values", function(done) {
86
- var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
87
- for (var i = 0; i < data.length; i++) {
88
- stmt.run(i, data[i], function(err) {
89
- if (err) throw err;
90
- inserted++;
91
- });
92
- }
93
- stmt.finalize(done);
94
- });
95
-
96
- it("should retrieve all values", function(done) {
97
- db.all("SELECT txt FROM foo ORDER BY id", function(err, rows) {
98
- if (err) throw err;
99
-
100
- for (var i = 0; i < rows.length; i++) {
101
- assert.equal(rows[i].txt, data[i]);
102
- retrieved++;
103
- }
104
- done();
105
- });
106
- });
107
-
108
- it("should have inserted and retrieved the correct amount", function() {
109
- assert.equal(inserted, length);
110
- assert.equal(retrieved, length);
111
- });
112
-
113
- after(function(done) { db.close(done); });
114
- });
@@ -1,27 +0,0 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
3
-
4
- describe("query properties", function() {
5
- var db;
6
- before(function(done) {
7
- db = new sqlite3.Database(":memory:");
8
- db.run("CREATE TABLE foo (id INT PRIMARY KEY, count INT)", done);
9
- });
10
-
11
- (sqlite3.VERSION_NUMBER < 3024000 ? it.skip : it)("should upsert", function(done) {
12
- var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
13
- stmt.run(1, 1, function(err) { // insert 1
14
- if (err) throw err;
15
- var upsert_stmt = db.prepare("INSERT INTO foo VALUES(?, ?) ON CONFLICT (id) DO UPDATE SET count = count + excluded.count");
16
- upsert_stmt.run(1, 2, function(err) { // add 2
17
- if (err) throw err;
18
- var select_stmt = db.prepare("SELECT count FROM foo WHERE id = ?");
19
- select_stmt.get(1, function(err, row) {
20
- if (err) throw err;
21
- assert.equal(row.count, 3); // equals 3
22
- });
23
- });
24
- });
25
- db.wait(done);
26
- });
27
- });
@@ -1,60 +0,0 @@
1
- var sqlite3 = require('..');
2
- var assert = require('assert');
3
-
4
- var invalid_sql = 'update non_existent_table set id=1';
5
-
6
- var originalMethods = {
7
- Database: {},
8
- Statement: {},
9
- };
10
-
11
- function backupOriginalMethods() {
12
- for (var obj in originalMethods) {
13
- for (var attr in sqlite3[obj].prototype) {
14
- originalMethods[obj][attr] = sqlite3[obj].prototype[attr];
15
- }
16
- }
17
- }
18
-
19
- function resetVerbose() {
20
- for (var obj in originalMethods) {
21
- for (var attr in originalMethods[obj]) {
22
- sqlite3[obj].prototype[attr] = originalMethods[obj][attr];
23
- }
24
- }
25
- }
26
-
27
- describe('verbose', function() {
28
- it('Shoud add trace info to error when verbose is called', function(done) {
29
- var db = new sqlite3.Database(':memory:');
30
- backupOriginalMethods();
31
- sqlite3.verbose();
32
-
33
- db.run(invalid_sql, function(err) {
34
- assert(err instanceof Error);
35
-
36
- assert(
37
- err.stack.indexOf(`Database#run('${invalid_sql}'`) > -1,
38
- `Stack shoud contain trace info, stack = ${err.stack}`
39
- );
40
-
41
- done();
42
- resetVerbose();
43
- });
44
- });
45
-
46
- it('Shoud not add trace info to error when verbose is not called', function(done) {
47
- var db = new sqlite3.Database(':memory:');
48
-
49
- db.run(invalid_sql, function(err) {
50
- assert(err instanceof Error);
51
-
52
- assert(
53
- err.stack.indexOf(invalid_sql) === -1,
54
- `Stack shoud not contain trace info, stack = ${err.stack}`
55
- );
56
-
57
- done();
58
- });
59
- });
60
- });
package/test.js DELETED
@@ -1,141 +0,0 @@
1
- /*jslint beta, for, this*/
2
- /*global require*/ //jslint-quiet
3
-
4
- let sqlite3 = require("./sqlmath.js");
5
-
6
- function assertJsonEqual(aa, bb) {
7
-
8
- // This function will assert JSON.stringify(<aa>) === JSON.stringify(<bb>).
9
-
10
- aa = JSON.stringify(objectDeepCopyWithKeysSorted(aa));
11
- bb = JSON.stringify(objectDeepCopyWithKeysSorted(bb));
12
- if (aa !== bb) {
13
- throw new Error(JSON.stringify(aa) + " !== " + JSON.stringify(bb));
14
- }
15
- }
16
-
17
- function assertOrThrow(passed, msg) {
18
-
19
- // This function will throw <msg> if <passed> is falsy.
20
-
21
- if (passed) {
22
- return;
23
- }
24
- throw (
25
- (
26
- msg &&
27
- typeof msg.message === "string" &&
28
- typeof msg.stack === "string"
29
- )
30
- // if msg is err, then leave as is
31
- ? msg
32
- : new Error(
33
- typeof msg === "string"
34
- // if msg is string, then leave as is
35
- ? msg
36
- // else JSON.stringify(msg)
37
- : JSON.stringify(msg, undefined, 4)
38
- )
39
- );
40
- }
41
-
42
- function objectDeepCopyWithKeysSorted(obj) {
43
-
44
- // This function will recursively deep-copy <obj> with keys sorted.
45
-
46
- let sorted;
47
- if (typeof obj !== "object" || !obj) {
48
- return obj;
49
- }
50
- // recursively deep-copy list with child-keys sorted
51
- if (Array.isArray(obj)) {
52
- return obj.map(objectDeepCopyWithKeysSorted);
53
- }
54
- // recursively deep-copy obj with keys sorted
55
- sorted = {};
56
- Object.keys(obj).sort().forEach(function (key) {
57
- sorted[key] = objectDeepCopyWithKeysSorted(obj[key]);
58
- });
59
- return sorted;
60
- }
61
-
62
-
63
- // test/affected.test.js
64
- (async function () {
65
- let db = new sqlite3.Database(":memory:");
66
-
67
- await new Promise(function (done) {
68
- db.run("CREATE TABLE foo (id INT, txt TEXT)", done);
69
- });
70
-
71
- // it should return the correct lastID
72
-
73
- await new Promise(function (done) {
74
- let ii = 0;
75
- let jj = 1;
76
- let stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
77
- function onError(err) {
78
- assertOrThrow(!err, err);
79
-
80
- // Relies on SQLite's row numbering to be gapless and starting from 1.
81
-
82
- assertJsonEqual(jj, this.lastID);
83
- jj += 1;
84
- }
85
- for (ii = 0; ii < 5000; ii += 1) {
86
- stmt.run(ii, "demo", onError);
87
- }
88
- db.wait(done);
89
- });
90
-
91
- // it should return the correct changes count
92
-
93
- await new Promise(function (done) {
94
- db.run("UPDATE foo SET id = id + 1 WHERE id % 2 = 0", function (err) {
95
- assertOrThrow(!err, err);
96
- assertJsonEqual(2500, this.changes);
97
- done();
98
- });
99
- });
100
- }());
101
-
102
-
103
- //!! // test/backup.test.js
104
- //!! (async function () {
105
- //!! let db = new sqlite3.Database(":memory:");
106
-
107
- //!! await new Promise(function (done) {
108
- //!! db.run("CREATE TABLE foo (id INT, txt TEXT)", done);
109
- //!! });
110
-
111
- //!! // it should return the correct lastID
112
-
113
- //!! await new Promise(function (done) {
114
- //!! let ii = 0;
115
- //!! let jj = 1;
116
- //!! let stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
117
- //!! function onError(err) {
118
- //!! assertOrThrow(!err, err);
119
-
120
- //!! // Relies on SQLite's row numbering to be gapless and starting from 1.
121
-
122
- //!! assertJsonEqual(jj, this.lastID);
123
- //!! jj += 1;
124
- //!! }
125
- //!! for (ii = 0; ii < 5000; ii += 1) {
126
- //!! stmt.run(ii, "demo", onError);
127
- //!! }
128
- //!! db.wait(done);
129
- //!! });
130
-
131
- //!! // it should return the correct changes count
132
-
133
- //!! await new Promise(function (done) {
134
- //!! db.run("UPDATE foo SET id = id + 1 WHERE id % 2 = 0",
135
- //function (err) {
136
- //!! assertOrThrow(!err, err);
137
- //!! assertJsonEqual(2500, this.changes);
138
- //!! done();
139
- //!! });
140
- //!! });
141
- //!! }());