ueberdb2 4.1.8 → 4.1.10

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 (37) hide show
  1. package/dist/databases/cassandra_db.js +233 -235
  2. package/dist/databases/couch_db.js +171 -173
  3. package/dist/databases/dirty_db.js +73 -76
  4. package/dist/databases/dirty_git_db.js +57 -75
  5. package/dist/databases/elasticsearch_db.js +241 -267
  6. package/dist/databases/memory_db.js +35 -37
  7. package/dist/databases/mock_db.js +36 -38
  8. package/dist/databases/mongodb_db.js +131 -133
  9. package/dist/databases/mssql_db.js +183 -185
  10. package/dist/databases/mysql_db.js +166 -168
  11. package/dist/databases/postgres_db.js +188 -190
  12. package/dist/databases/postgrespool_db.js +10 -10
  13. package/dist/databases/redis_db.js +118 -120
  14. package/dist/databases/rethink_db.js +119 -121
  15. package/dist/databases/sqlite_db.js +135 -137
  16. package/dist/index.js +195 -213
  17. package/lib/AbstractDatabase.ts +79 -0
  18. package/lib/CacheAndBufferLayer.ts +665 -0
  19. package/lib/logging.ts +32 -0
  20. package/package.json +16 -12
  21. package/dist/lib/AbstractDatabase.js +0 -38
  22. package/dist/lib/CacheAndBufferLayer.js +0 -657
  23. package/dist/lib/logging.js +0 -34
  24. package/dist/test/lib/databases.js +0 -74
  25. package/dist/test/test.js +0 -327
  26. package/dist/test/test_bulk.js +0 -74
  27. package/dist/test/test_elasticsearch.js +0 -157
  28. package/dist/test/test_findKeys.js +0 -69
  29. package/dist/test/test_flush.js +0 -83
  30. package/dist/test/test_getSub.js +0 -57
  31. package/dist/test/test_lru.js +0 -155
  32. package/dist/test/test_memory.js +0 -59
  33. package/dist/test/test_metrics.js +0 -772
  34. package/dist/test/test_mysql.js +0 -90
  35. package/dist/test/test_postgres.js +0 -40
  36. package/dist/test/test_setSub.js +0 -48
  37. package/dist/test/test_tojson.js +0 -62
@@ -1,90 +0,0 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const assert_1 = __importDefault(require("assert"));
30
- const databases_1 = require("./lib/databases");
31
- const mysql = __importStar(require("../databases/mysql_db"));
32
- 'use strict';
33
- const assert = assert_1.default.strict;
34
- describe(__filename, () => {
35
- beforeEach(async function () {
36
- if (databases_1.databases.mysql == null)
37
- return this.skip();
38
- });
39
- it('connect error is detected during init()', async () => {
40
- // Use an invalid TCP port to force a connection error.
41
- const db = new mysql.Database({ ...databases_1.databases.mysql, port: 65536 });
42
- // An error is expected; prevent it from being logged.
43
- db.logger = Object.setPrototypeOf({ error() { } }, db.logger);
44
- await assert.rejects(db.init());
45
- });
46
- it('query after fatal error works', async () => {
47
- const db = new mysql.Database(databases_1.databases.mysql);
48
- await db.init();
49
- // An error is expected; prevent it from being logged.
50
- db.logger = Object.setPrototypeOf({ error() { } }, db.logger);
51
- // Sleep longer than the timeout to force a fatal error.
52
- await assert.rejects(db._query({ sql: 'DO SLEEP(1);', timeout: 1 }), { fatal: true });
53
- await assert.doesNotReject(db._query({ sql: 'SELECT 1;' }));
54
- await db.close();
55
- });
56
- it('query times out', async () => {
57
- const db = new mysql.Database(databases_1.databases.mysql);
58
- await db.init();
59
- // Timeout error messages are expected; prevent them from being logged.
60
- db.logger = Object.setPrototypeOf({ error() { } }, db.logger);
61
- db.settings.queryTimeout = 100;
62
- await assert.doesNotReject(db._query({ sql: 'DO SLEEP(0.090);' }));
63
- await assert.rejects(db._query({ sql: 'DO SLEEP(0.110);' }));
64
- await db.close();
65
- });
66
- it('queries run concurrently and are queued when pool is busy', async () => {
67
- const connectionLimit = 10;
68
- const db = new mysql.Database({ ...databases_1.databases.mysql, connectionLimit });
69
- await db.init();
70
- // Set the query duration high enough to avoid flakiness on slow machines but low enough to keep
71
- // the overall test duration short.
72
- const queryDuration = 100;
73
- db.settings.queryTimeout = queryDuration + 100;
74
- const enqueueQuery = () => db._query({ sql: `DO SLEEP(${queryDuration / 1000});` });
75
- // Reduce test flakiness by using slow queries to warm up the pool's connections.
76
- await Promise.all([...Array(connectionLimit)].map(enqueueQuery));
77
- // Time how long it takes to run just under 2 * connectionLimit queries.
78
- const nQueries = 2 * connectionLimit - 1;
79
- const start = Date.now();
80
- await Promise.all([...Array(nQueries)].map(enqueueQuery));
81
- const duration = Date.now() - start;
82
- const wantDurationLower = Math.ceil(nQueries / connectionLimit) * queryDuration;
83
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
84
- assert(duration >= wantDurationLower, `took ${duration}ms, want >= ${wantDurationLower}ms`);
85
- const wantDurationUpper = wantDurationLower + queryDuration;
86
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
87
- assert(duration < wantDurationUpper, `took ${duration}ms, want < ${wantDurationUpper}ms`);
88
- await db.close();
89
- });
90
- });
@@ -1,40 +0,0 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const databases_1 = require("./lib/databases");
27
- const ueberdb = __importStar(require("../index"));
28
- 'use strict';
29
- const assert_1 = require("assert");
30
- describe(__filename, () => {
31
- it('connection string instead of settings object', async () => {
32
- const { user, password, host, database } = databases_1.databases.postgres;
33
- console.log(`postgres://${user}:${password}@${host}/${database}`);
34
- const db = new ueberdb.Database('postgres', `postgres://${user}:${password}@${host}/${database}`);
35
- await db.init();
36
- await db.set('key', 'val');
37
- const val = await db.get('key');
38
- (0, assert_1.equal)(val, 'val');
39
- });
40
- });
@@ -1,48 +0,0 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const assert_1 = __importDefault(require("assert"));
30
- const ueberdb = __importStar(require("../index"));
31
- 'use strict';
32
- const assert = assert_1.default.strict;
33
- describe(__filename, () => {
34
- let db;
35
- beforeEach(async () => {
36
- db = new ueberdb.Database('memory', {}, {});
37
- await db.init();
38
- });
39
- afterEach(async () => {
40
- if (db != null)
41
- await db.close();
42
- db = null;
43
- });
44
- it('setSub rejects __proto__', async () => {
45
- await db.set('k', {});
46
- await assert.rejects(db.setSub('k', ['__proto__'], 'v'));
47
- });
48
- });
@@ -1,62 +0,0 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const assert_1 = __importDefault(require("assert"));
30
- const ueberdb = __importStar(require("../index"));
31
- 'use strict';
32
- const assert = assert_1.default.strict;
33
- describe(__filename, () => {
34
- let db = null;
35
- before(async () => {
36
- db = new ueberdb.Database('memory', {}, {});
37
- await db.init();
38
- });
39
- after(async () => {
40
- await db.close();
41
- });
42
- it('no .toJSON method', async () => {
43
- await db.set('key', { prop: 'value' });
44
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
45
- assert.deepEqual(await db.get('key'), { prop: 'value' });
46
- });
47
- it('direct', async () => {
48
- await db.set('key', { toJSON: (arg) => `toJSON ${arg}` });
49
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
50
- assert.equal(await db.get('key'), 'toJSON ');
51
- });
52
- it('object property', async () => {
53
- await db.set('key', { prop: { toJSON: (arg) => `toJSON ${arg}` } });
54
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
55
- assert.deepEqual(await db.get('key'), { prop: 'toJSON prop' });
56
- });
57
- it('array entry', async () => {
58
- await db.set('key', [{ toJSON: (arg) => `toJSON ${arg}` }]);
59
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
60
- assert.deepEqual(await db.get('key'), ['toJSON 0']);
61
- });
62
- });