ueberdb2 6.1.8 → 6.1.9
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 +59 -0
- package/dist/databases/postgres_db.d.ts.map +1 -1
- package/dist/databases/redis_db.d.ts.map +1 -1
- package/dist/databases/rethink_db.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/lib/AbstractDatabase.d.ts +2 -0
- package/dist/lib/AbstractDatabase.d.ts.map +1 -1
- package/dist/{postgres_db-BzDKMRC5.js → postgres_db-DFplUUa_.js} +8 -3
- package/dist/{postgrespool_db-B6FOhTY3.js → postgrespool_db-Kh9HhRsG.js} +1 -1
- package/dist/{redis_db-C8LRkRGe.js → redis_db-501GYkb7.js} +3 -0
- package/dist/{rethink_db-qv884MUM.js → rethink_db-BklcFMyp.js} +3 -0
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -334,6 +334,65 @@ write to the database.
|
|
|
334
334
|
|
|
335
335
|
You should create your database as utf8mb4_bin.
|
|
336
336
|
|
|
337
|
+
## PostgreSQL Advice
|
|
338
|
+
|
|
339
|
+
The `postgres` driver uses a [`pg`](https://node-postgres.com/) connection
|
|
340
|
+
pool. The pool-related settings below are part of the `Settings` type; other
|
|
341
|
+
[`pg` pool options](https://node-postgres.com/apis/pool) are forwarded to the
|
|
342
|
+
pool at runtime as well, but aren't in the type yet (so TypeScript callers may
|
|
343
|
+
need a cast for those). The defaults applied by ueberDB2 are:
|
|
344
|
+
|
|
345
|
+
| Setting | Default | Notes |
|
|
346
|
+
| ----------------------------- | ------- | ------------------------------------------------------------- |
|
|
347
|
+
| `max` | `20` | Maximum connections in the pool. |
|
|
348
|
+
| `min` | `4` | Minimum warm connections kept open (honored by `pg` >= 8.16). |
|
|
349
|
+
| `idleTimeoutMillis` | `1000` | Idle reaping only applies to connections **above** `min`. |
|
|
350
|
+
| `keepAlive` | `true` | Enables TCP keep-alive on pooled sockets. |
|
|
351
|
+
| `keepAliveInitialDelayMillis` | `10000` | Delay before the first keep-alive probe (ms). |
|
|
352
|
+
|
|
353
|
+
### Idle connections behind a proxy / load balancer / firewall
|
|
354
|
+
|
|
355
|
+
Because `min` connections are kept warm, those sockets can sit idle
|
|
356
|
+
indefinitely. Anything between your application and PostgreSQL that drops idle
|
|
357
|
+
connections will eventually close them, and the next use then fails with
|
|
358
|
+
`Connection terminated unexpectedly`. There are two distinct flavours of
|
|
359
|
+
"idle drop", and they need different handling:
|
|
360
|
+
|
|
361
|
+
- **Kernel / NAT / firewall / conntrack state expiry** — these expire idle
|
|
362
|
+
TCP flows when _no packets at all_ are seen. `keepAlive` (enabled by default,
|
|
363
|
+
10s initial delay) fixes this: the OS emits periodic keep-alive probes so the
|
|
364
|
+
flow never looks dead. Lower `keepAliveInitialDelayMillis` if the idle window
|
|
365
|
+
is shorter than 10s.
|
|
366
|
+
|
|
367
|
+
- **Application-layer proxy idle timeouts** — e.g. HAProxy `timeout server` /
|
|
368
|
+
`timeout client`, pgbouncer, many cloud LBs. These count _data_ inactivity,
|
|
369
|
+
and TCP keep-alive probes are empty kernel-level segments that the proxy does
|
|
370
|
+
**not** see as activity. **`keepAlive` does not help here** — the proxy will
|
|
371
|
+
still close the connection on schedule. For these you must either raise the
|
|
372
|
+
proxy's idle timeout (for HAProxy in `mode tcp`, `timeout tunnel` is the knob
|
|
373
|
+
for long-lived connections), or rely on the pool recovering from the drop.
|
|
374
|
+
|
|
375
|
+
That recovery is the important part, and is always on regardless of proxy
|
|
376
|
+
config: **a pool `error` handler is attached**, so a dropped idle connection is
|
|
377
|
+
logged and discarded (the pool transparently reconnects on next use) instead of
|
|
378
|
+
being re-thrown as an uncaught EventEmitter `'error'` that crashes the host
|
|
379
|
+
process. The drop itself is harmless; what used to be fatal was the missing
|
|
380
|
+
handler.
|
|
381
|
+
|
|
382
|
+
```javascript
|
|
383
|
+
const db = new ueberdb.Database("postgres", {
|
|
384
|
+
host: "127.0.0.1",
|
|
385
|
+
user: "ueberdb",
|
|
386
|
+
password: "ueberdb",
|
|
387
|
+
database: "ueberdb",
|
|
388
|
+
// Helps against kernel/NAT/firewall idle expiry. Does NOT defeat an
|
|
389
|
+
// application-layer proxy idle timeout (e.g. HAProxy timeout server) —
|
|
390
|
+
// raise the proxy timeout for that; the pool reconnects either way.
|
|
391
|
+
keepAlive: true,
|
|
392
|
+
keepAliveInitialDelayMillis: 5000,
|
|
393
|
+
});
|
|
394
|
+
```
|
|
395
|
+
|
|
337
396
|
## Redis TLS communication
|
|
338
397
|
|
|
339
398
|
If you enabled TLS on your Redis database (available since Redis 6.0) you will
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres_db.d.ts","sourceRoot":"","sources":["../../databases/postgres_db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,OAAO,MAAO,SAAQ,gBAAgB;IACpC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;IACZ,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;gBACtC,QAAQ,EAAE,QAAQ,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"postgres_db.d.ts","sourceRoot":"","sources":["../../databases/postgres_db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,OAAO,MAAO,SAAQ,gBAAgB;IACpC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;IACZ,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;gBACtC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IA0CvC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,EAAE;IA4EjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;IAYhE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;IA0BrF,aAAa,CACX,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAC1C,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI;IA2BxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,WAAW,KAAK,IAAI;IAStF,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;IAItC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;IAyC7C,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE;CAGzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis_db.d.ts","sourceRoot":"","sources":["../../databases/redis_db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAG1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,gBAAgB;IAC5C,OAAO,EAAE,GAAG,CAAC;gBACR,QAAQ,EAAE,QAAQ;IAM9B,IAAI,OAAO,YAEV;IAEK,IAAI;
|
|
1
|
+
{"version":3,"file":"redis_db.d.ts","sourceRoot":"","sources":["../../databases/redis_db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAG1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,gBAAgB;IAC5C,OAAO,EAAE,GAAG,CAAC;gBACR,QAAQ,EAAE,QAAQ;IAM9B,IAAI,OAAO,YAEV;IAEK,IAAI;IAqCJ,GAAG,CAAC,GAAG,EAAE,MAAM;IAKf,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAepC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAS9B,MAAM,CAAC,GAAG,EAAE,MAAM;IASlB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzC,KAAK;CAKZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rethink_db.d.ts","sourceRoot":"","sources":["../../databases/rethink_db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,CAAC,MAAM,WAAW,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,gBAAgB;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC3B,QAAQ,EAAE,QAAQ;IAuB9B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"rethink_db.d.ts","sourceRoot":"","sources":["../../databases/rethink_db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,CAAC,MAAM,WAAW,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,gBAAgB;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC3B,QAAQ,EAAE,QAAQ;IAuB9B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;IA8B1C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE;IAUrD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;IAWxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;IAMlD,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;IA2B7C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;IAKtC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE;CAKzB"}
|
package/dist/index.js
CHANGED
|
@@ -489,11 +489,11 @@ var Database = class {
|
|
|
489
489
|
async initDB() {
|
|
490
490
|
switch (this.type) {
|
|
491
491
|
case "mysql": return new (await (import("./mysql_db-DIXEbML4.js"))).default(this.dbSettings);
|
|
492
|
-
case "postgres": return new (await (import("./postgres_db-
|
|
492
|
+
case "postgres": return new (await (import("./postgres_db-DFplUUa_.js"))).default(this.dbSettings);
|
|
493
493
|
case "sqlite": return new (await (import("./sqlite_db-Bp4nZn-c.js"))).default(this.dbSettings);
|
|
494
494
|
case "rustydb": return new (await (import("./rusty_db-90_S-z-w.js"))).default(this.dbSettings);
|
|
495
495
|
case "mongodb": return new (await (import("./mongodb_db-DJVvvNTo.js"))).default(this.dbSettings);
|
|
496
|
-
case "redis": return new (await (import("./redis_db-
|
|
496
|
+
case "redis": return new (await (import("./redis_db-501GYkb7.js"))).default(this.dbSettings);
|
|
497
497
|
case "cassandra": return new (await (import("./cassandra_db-B96_l9V7.js"))).default(this.dbSettings);
|
|
498
498
|
case "dirty": return new (await (import("./dirty_db-BGvHB8ud.js"))).default(this.dbSettings);
|
|
499
499
|
case "dirtygit": return new (await (import("./dirty_git_db-LJWW2YT6.js"))).default(this.dbSettings);
|
|
@@ -501,8 +501,8 @@ var Database = class {
|
|
|
501
501
|
case "memory": return new (await (import("./memory_db-BQaHRpkv.js"))).default(this.dbSettings);
|
|
502
502
|
case "mock": return new (await (import("./mock_db-CgEDPTpF.js"))).default(this.dbSettings);
|
|
503
503
|
case "mssql": return new (await (import("./mssql_db-BqtTYXk9.js"))).default(this.dbSettings);
|
|
504
|
-
case "postgrespool": return new (await (import("./postgrespool_db-
|
|
505
|
-
case "rethink": return new (await (import("./rethink_db-
|
|
504
|
+
case "postgrespool": return new (await (import("./postgrespool_db-Kh9HhRsG.js"))).default(this.dbSettings);
|
|
505
|
+
case "rethink": return new (await (import("./rethink_db-BklcFMyp.js"))).default(this.dbSettings);
|
|
506
506
|
case "couch": return new (await (import("./couch_db-DZ6MLt5j.js"))).default(this.dbSettings);
|
|
507
507
|
case "surrealdb": return new (await (import("./surrealdb_db-K8QAySpG.js"))).default(this.dbSettings);
|
|
508
508
|
default: throw new Error(`Invalid database type: ${this.type}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractDatabase.d.ts","sourceRoot":"","sources":["../../lib/AbstractDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAOzD,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,cAAM,gBAAgB;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;gBAEd,QAAQ,EAAE,QAAQ;IAa9B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAarD,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,IAAI,OAAO,IAAI,OAAO,CAErB;CACF;AAED,eAAe,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"AbstractDatabase.d.ts","sourceRoot":"","sources":["../../lib/AbstractDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAOzD,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,cAAM,gBAAgB;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;gBAEd,QAAQ,EAAE,QAAQ;IAa9B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAarD,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,IAAI,OAAO,IAAI,OAAO,CAErB;CACF;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -27,10 +27,15 @@ var postgres_db_default = class extends AbstractDatabase {
|
|
|
27
27
|
this.settings.cache = settings.cache || 1e3;
|
|
28
28
|
this.settings.writeInterval = 100;
|
|
29
29
|
this.settings.json = true;
|
|
30
|
-
this.settings.max = this.settings.max
|
|
31
|
-
this.settings.min = this.settings.min
|
|
32
|
-
this.settings.idleTimeoutMillis = this.settings.idleTimeoutMillis
|
|
30
|
+
this.settings.max = this.settings.max ?? 20;
|
|
31
|
+
this.settings.min = this.settings.min ?? 4;
|
|
32
|
+
this.settings.idleTimeoutMillis = this.settings.idleTimeoutMillis ?? 1e3;
|
|
33
|
+
this.settings.keepAlive = this.settings.keepAlive ?? true;
|
|
34
|
+
this.settings.keepAliveInitialDelayMillis = this.settings.keepAliveInitialDelayMillis ?? 1e4;
|
|
33
35
|
this.db = new pg.Pool(this.settings);
|
|
36
|
+
this.db.on("error", (err) => {
|
|
37
|
+
this.logger.error(`Postgres idle client error (connection discarded): ${err.stack || err}`);
|
|
38
|
+
});
|
|
34
39
|
}
|
|
35
40
|
init(callback) {
|
|
36
41
|
const testTableExists = "SELECT 1 as exists FROM pg_tables WHERE tablename = 'store'";
|
|
@@ -38,6 +38,9 @@ var RedisDB = class extends AbstractDatabase {
|
|
|
38
38
|
this._client = createClient(options);
|
|
39
39
|
}
|
|
40
40
|
if (this._client) {
|
|
41
|
+
this._client.on("error", (err) => {
|
|
42
|
+
this.logger.error(`Redis client error: ${err?.stack || err}`);
|
|
43
|
+
});
|
|
41
44
|
await this._client.connect();
|
|
42
45
|
await this._client.ping();
|
|
43
46
|
}
|
|
@@ -40,6 +40,9 @@ var Rethink_db = class extends AbstractDatabase {
|
|
|
40
40
|
r.connect(this, (err, conn) => {
|
|
41
41
|
if (err) throw err;
|
|
42
42
|
this.connection = conn;
|
|
43
|
+
this.connection.on("error", (connErr) => {
|
|
44
|
+
this.logger.error(`RethinkDB connection error: ${connErr.stack || connErr}`);
|
|
45
|
+
});
|
|
43
46
|
r.table(this.table).run(this.connection, (err, cursor) => {
|
|
44
47
|
if (err) r.tableCreate(this.table).run(this.connection, callback);
|
|
45
48
|
else if (callback) callback(null, cursor);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ueberdb2",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.9",
|
|
4
4
|
"description": "Transform every database into a object key value store",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"database",
|
|
@@ -53,28 +53,28 @@
|
|
|
53
53
|
"@elastic/elasticsearch": "^9.4.2",
|
|
54
54
|
"@types/async": "^3.2.25",
|
|
55
55
|
"@types/mssql": "^12.3.0",
|
|
56
|
-
"@types/node": "^25.9.
|
|
56
|
+
"@types/node": "^25.9.2",
|
|
57
57
|
"@types/pg": "^8.20.0",
|
|
58
58
|
"@types/rethinkdb": "^2.3.21",
|
|
59
59
|
"@types/wtfnode": "^0.10.0",
|
|
60
60
|
"cassandra-driver": "^4.9.0",
|
|
61
61
|
"cli-table3": "^0.6.5",
|
|
62
62
|
"mongodb": "^7.2.0",
|
|
63
|
-
"mssql": "^12.5.
|
|
64
|
-
"mysql2": "^3.22.
|
|
63
|
+
"mssql": "^12.5.5",
|
|
64
|
+
"mysql2": "^3.22.5",
|
|
65
65
|
"nano": "^11.0.5",
|
|
66
|
-
"oxfmt": "^0.
|
|
67
|
-
"oxlint": "^1.
|
|
66
|
+
"oxfmt": "^0.53.0",
|
|
67
|
+
"oxlint": "^1.69.0",
|
|
68
68
|
"pg": "^8.21.0",
|
|
69
69
|
"randexp-ts": "^1.0.5",
|
|
70
70
|
"redis": "^6.0.0",
|
|
71
71
|
"rethinkdb": "^2.4.2",
|
|
72
|
-
"rolldown": "^1.0
|
|
73
|
-
"semver": "^7.8.
|
|
72
|
+
"rolldown": "^1.1.0",
|
|
73
|
+
"semver": "^7.8.3",
|
|
74
74
|
"surrealdb": "^2.0.3",
|
|
75
75
|
"testcontainers": "^12.0.1",
|
|
76
76
|
"typescript": "^6.0.3",
|
|
77
|
-
"vitest": "^4.1.
|
|
77
|
+
"vitest": "^4.1.8",
|
|
78
78
|
"wtfnode": "^0.10.1"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|