@prosopo/database 4.0.27 → 4.0.28
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/.turbo/turbo-build$colon$cjs.log +8 -8
- package/.turbo/turbo-build$colon$tsc.log +16 -16
- package/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +48 -0
- package/dist/base/mongo.d.ts +7 -1
- package/dist/base/mongo.d.ts.map +1 -1
- package/dist/base/mongo.js +14 -2
- package/dist/base/mongo.js.map +1 -1
- package/dist/cjs/base/mongo.cjs +14 -2
- package/dist/cjs/databases/captcha.cjs +2 -2
- package/dist/cjs/databases/centralDbStreamer.cjs +10 -1
- package/dist/cjs/index.cjs +3 -3
- package/dist/cjs/mongooseOptions.cjs +20 -3
- package/dist/databases/captcha.d.ts +2 -2
- package/dist/databases/captcha.d.ts.map +1 -1
- package/dist/databases/captcha.js +2 -2
- package/dist/databases/captcha.js.map +1 -1
- package/dist/databases/centralDbStreamer.d.ts +2 -0
- package/dist/databases/centralDbStreamer.d.ts.map +1 -1
- package/dist/databases/centralDbStreamer.js +10 -1
- package/dist/databases/centralDbStreamer.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/mongooseOptions.d.ts +4 -0
- package/dist/mongooseOptions.d.ts.map +1 -1
- package/dist/mongooseOptions.js +19 -4
- package/dist/mongooseOptions.js.map +1 -1
- package/dist/tests/mongooseOptions.unit.test.js +19 -1
- package/dist/tests/mongooseOptions.unit.test.js.map +1 -1
- package/dist/tests/unit/base/mongo.unit.test.d.ts +2 -0
- package/dist/tests/unit/base/mongo.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/base/mongo.unit.test.js +58 -0
- package/dist/tests/unit/base/mongo.unit.test.js.map +1 -0
- package/package.json +11 -11
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/database@4.0.
|
|
2
|
+
> @prosopo/database@4.0.28 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -25,6 +25,7 @@ ViteCommonJSConfig: .
|
|
|
25
25
|
'@prosopo/logger',
|
|
26
26
|
'@prosopo/util',
|
|
27
27
|
'@prosopo/types',
|
|
28
|
+
[33mThe plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the [1mresolve.tsconfigPaths[22m option. You can remove the plugin and set [1mresolve.tsconfigPaths: true[22m in your Vite config instead.[39m
|
|
28
29
|
'@prosopo/util-crypto',
|
|
29
30
|
'@prosopo/types-database',
|
|
30
31
|
'@prosopo/user-access-policy',
|
|
@@ -33,7 +34,6 @@ ViteCommonJSConfig: .
|
|
|
33
34
|
'@prosopo/api'
|
|
34
35
|
]
|
|
35
36
|
}
|
|
36
|
-
[33mThe plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the [1mresolve.tsconfigPaths[22m option. You can remove the plugin and set [1mresolve.tsconfigPaths: true[22m in your Vite config instead.[39m
|
|
37
37
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
38
38
|
Bundle build started
|
|
39
39
|
[2K
|
|
@@ -45,12 +45,12 @@ dist/cjs/base/mongoMemory.cjs 0.66 kB │ gzip: 0.32 kB
|
|
|
45
45
|
dist/cjs/_virtual/_rolldown/runtime.cjs 1.00 kB │ gzip: 0.50 kB
|
|
46
46
|
dist/cjs/databases/index.cjs 1.14 kB │ gzip: 0.32 kB
|
|
47
47
|
dist/cjs/databases/client.cjs 1.57 kB │ gzip: 0.69 kB
|
|
48
|
-
dist/cjs/index.cjs 1.
|
|
49
|
-
dist/cjs/mongooseOptions.cjs
|
|
50
|
-
dist/cjs/base/mongo.cjs
|
|
51
|
-
dist/cjs/databases/centralDbStreamer.cjs 5.
|
|
52
|
-
dist/cjs/databases/captcha.cjs 7.
|
|
48
|
+
dist/cjs/index.cjs 1.66 kB │ gzip: 0.49 kB
|
|
49
|
+
dist/cjs/mongooseOptions.cjs 3.74 kB │ gzip: 1.56 kB
|
|
50
|
+
dist/cjs/base/mongo.cjs 4.27 kB │ gzip: 1.41 kB
|
|
51
|
+
dist/cjs/databases/centralDbStreamer.cjs 5.53 kB │ gzip: 1.37 kB
|
|
52
|
+
dist/cjs/databases/captcha.cjs 7.38 kB │ gzip: 2.18 kB
|
|
53
53
|
dist/cjs/redisCache.cjs 15.77 kB │ gzip: 4.54 kB
|
|
54
54
|
dist/cjs/databases/provider.cjs 59.03 kB │ gzip: 11.78 kB
|
|
55
55
|
|
|
56
|
-
[32m✓ built in
|
|
56
|
+
[32m✓ built in 124ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/database@4.0.
|
|
2
|
+
> @prosopo/database@4.0.28 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
1:15:41 PM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../locale/tsconfig.json
|
|
8
8
|
* ../util/tsconfig.json
|
|
@@ -17,31 +17,31 @@
|
|
|
17
17
|
* ../types-database/tsconfig.json
|
|
18
18
|
* tsconfig.json
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
1:15:41 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
1:15:41 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
1:15:41 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
1:15:41 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
1:15:41 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
1:15:41 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
1:15:41 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/utils/batches.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
1:15:41 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
1:15:41 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
1:15:41 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/tests/apiHarness.ts' is older than output '../api/tsconfig.tsbuildinfo'
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
1:15:41 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/transformRule.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
1:15:41 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/types.test-d.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
1:15:41 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
1:15:41 PM - Building project '/home/runner/work/captcha/captcha/packages/database/tsconfig.json'...
|
|
47
47
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/database@4.0.
|
|
2
|
+
> @prosopo/database@4.0.28 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/database@4.0.
|
|
6
|
+
> @prosopo/database@4.0.28 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -48,13 +48,13 @@ dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
|
48
48
|
dist/base/index.js 0.14 kB │ gzip: 0.08 kB
|
|
49
49
|
dist/base/mongoMemory.js 0.60 kB │ gzip: 0.30 kB
|
|
50
50
|
dist/databases/index.js 0.77 kB │ gzip: 0.27 kB
|
|
51
|
-
dist/index.js
|
|
51
|
+
dist/index.js 1.07 kB │ gzip: 0.38 kB
|
|
52
52
|
dist/databases/client.js 1.47 kB │ gzip: 0.68 kB
|
|
53
|
-
dist/mongooseOptions.js
|
|
54
|
-
dist/base/mongo.js
|
|
55
|
-
dist/databases/centralDbStreamer.js 5.
|
|
56
|
-
dist/databases/captcha.js 7.
|
|
53
|
+
dist/mongooseOptions.js 3.58 kB │ gzip: 1.53 kB
|
|
54
|
+
dist/base/mongo.js 4.01 kB │ gzip: 1.32 kB
|
|
55
|
+
dist/databases/centralDbStreamer.js 5.47 kB │ gzip: 1.35 kB
|
|
56
|
+
dist/databases/captcha.js 7.30 kB │ gzip: 2.17 kB
|
|
57
57
|
dist/redisCache.js 15.71 kB │ gzip: 4.53 kB
|
|
58
58
|
dist/databases/provider.js 57.73 kB │ gzip: 11.80 kB
|
|
59
59
|
|
|
60
|
-
[32m✓ built in
|
|
60
|
+
[32m✓ built in 82ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @prosopo/database
|
|
2
2
|
|
|
3
|
+
## 4.0.28
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- f8a41fe: Stop leaking a mongoose connection pool on every failed database connect.
|
|
7
|
+
|
|
8
|
+
`MongoDatabase.connect()` assigns `this.connection` only once the connection
|
|
9
|
+
opens, so a connection that fails to open is unreachable from the instance and
|
|
10
|
+
`close()` can never reach it — while mongoose keeps its topology monitor, its
|
|
11
|
+
`minPoolSize: 5` pool and its entry in `mongoose.connections` alive and
|
|
12
|
+
retrying forever. `onError` now destroys that connection. `destroy` rather than
|
|
13
|
+
`close` because only `destroy` drops the `mongoose.connections` entry, which
|
|
14
|
+
would otherwise retain the object on its own. The teardown is guarded so that a
|
|
15
|
+
runtime `error` on an already-open connection is not mistaken for a failed
|
|
16
|
+
connect and does not tear down a working pool; the `error` listener stays
|
|
17
|
+
registered after `open` because an `EventEmitter` `error` with no listener
|
|
18
|
+
would take the process down.
|
|
19
|
+
|
|
20
|
+
Observed on a provider whose connects to the central DB were timing out: 524
|
|
21
|
+
failed connects an hour accumulated 5,819 ESTABLISHED sockets to the central
|
|
22
|
+
DB and 5,859 TLS sockets, and the resulting flood of driver DNS lookups
|
|
23
|
+
saturated libuv's four-thread pool — 8,812 `getaddrinfo` calls queued — so
|
|
24
|
+
every unrelated outbound lookup in the process backed up behind them. That
|
|
25
|
+
provider burned 3.45x the CPU of a healthy peer while serving 2.5x less
|
|
26
|
+
traffic, with event-loop p99 at 240ms against the peer's 27ms.
|
|
27
|
+
|
|
28
|
+
`getMongoConnectionOptions` also gains `connectTimeoutMS` and
|
|
29
|
+
`serverSelectionTimeoutMS` overrides, and `CentralDbStreamer` passes 45s for
|
|
30
|
+
both. The 10s default is sized for a database that is local or on the same
|
|
31
|
+
continent; the central DB is long-haul for every provider and genuinely distant
|
|
32
|
+
for some, where the TLS handshake alone measures 2-30s. Under the old ceiling
|
|
33
|
+
those providers could never connect at all, so the streamer burned a connect
|
|
34
|
+
attempt every cooldown forever and streamed no records — which is what fed the
|
|
35
|
+
leak above.
|
|
36
|
+
- 6f57ee9: chore(deps): bump make-dir from 3.1.0 to 5.1.0
|
|
37
|
+
- 6f57ee9: chore(deps): bump the npm-minor-and-patch group across 1 directory with 3 updates
|
|
38
|
+
- Updated dependencies [6f57ee9]
|
|
39
|
+
- Updated dependencies [6f57ee9]
|
|
40
|
+
- Updated dependencies [e22d5fb]
|
|
41
|
+
- Updated dependencies [b6918c0]
|
|
42
|
+
- Updated dependencies [d288371]
|
|
43
|
+
- @prosopo/user-access-policy@3.13.0
|
|
44
|
+
- @prosopo/types@5.7.0
|
|
45
|
+
- @prosopo/util@3.3.9
|
|
46
|
+
- @prosopo/types-database@5.4.1
|
|
47
|
+
- @prosopo/common@3.1.54
|
|
48
|
+
- @prosopo/logger@2.0.9
|
|
49
|
+
- @prosopo/redis-client@1.0.35
|
|
50
|
+
|
|
3
51
|
## 4.0.27
|
|
4
52
|
### Patch Changes
|
|
5
53
|
|
package/dist/base/mongo.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { type Logger } from "@prosopo/logger";
|
|
2
2
|
import type { IDatabase } from "@prosopo/types-database";
|
|
3
3
|
import mongoose, { type Connection } from "mongoose";
|
|
4
|
+
export interface MongoConnectionTimeouts {
|
|
5
|
+
connectTimeoutMS?: number;
|
|
6
|
+
serverSelectionTimeoutMS?: number;
|
|
7
|
+
}
|
|
4
8
|
export declare class MongoDatabase implements IDatabase {
|
|
5
9
|
protected readonly _url: string;
|
|
6
10
|
safeURL: string;
|
|
@@ -9,7 +13,9 @@ export declare class MongoDatabase implements IDatabase {
|
|
|
9
13
|
logger: Logger;
|
|
10
14
|
connected: boolean;
|
|
11
15
|
private connecting?;
|
|
12
|
-
|
|
16
|
+
protected readonly connectTimeoutMS?: number;
|
|
17
|
+
protected readonly serverSelectionTimeoutMS?: number;
|
|
18
|
+
constructor(url: string, dbname?: string, authSource?: string, logger?: Logger, timeouts?: MongoConnectionTimeouts);
|
|
13
19
|
get url(): string;
|
|
14
20
|
getConnection(): mongoose.Connection;
|
|
15
21
|
connect(): Promise<void>;
|
package/dist/base/mongo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,QAAQ,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,QAAQ,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAYrD,MAAM,WAAW,uBAAuB;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAClC;AAQD,qBAAa,aAAc,YAAW,SAAS;IAC9C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,UAAS;IAClB,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;gBAGpD,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,uBAAuB;IAoBnC,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,aAAa,IAAI,QAAQ,CAAC,UAAU;IAa9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyIxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM5B"}
|
package/dist/base/mongo.js
CHANGED
|
@@ -13,8 +13,10 @@ var DEFAULT_ENDPOINT = "mongodb://127.0.0.1:27017";
|
|
|
13
13
|
* @return {MongoDatabase} Database layer
|
|
14
14
|
*/
|
|
15
15
|
var MongoDatabase = class {
|
|
16
|
-
constructor(url, dbname, authSource, logger) {
|
|
16
|
+
constructor(url, dbname, authSource, logger, timeouts) {
|
|
17
17
|
this.connected = false;
|
|
18
|
+
this.connectTimeoutMS = timeouts?.connectTimeoutMS;
|
|
19
|
+
this.serverSelectionTimeoutMS = timeouts?.serverSelectionTimeoutMS;
|
|
18
20
|
const parsedUrl = new URL(url || DEFAULT_ENDPOINT);
|
|
19
21
|
if (dbname) parsedUrl.pathname = dbname;
|
|
20
22
|
if (authSource) parsedUrl.searchParams.set("authSource", authSource);
|
|
@@ -54,9 +56,13 @@ var MongoDatabase = class {
|
|
|
54
56
|
appName,
|
|
55
57
|
dbName: this.dbname,
|
|
56
58
|
maxPoolSize: 50,
|
|
57
|
-
minPoolSize: 5
|
|
59
|
+
minPoolSize: 5,
|
|
60
|
+
connectTimeoutMS: this.connectTimeoutMS,
|
|
61
|
+
serverSelectionTimeoutMS: this.serverSelectionTimeoutMS
|
|
58
62
|
}));
|
|
63
|
+
let opened = false;
|
|
59
64
|
const onConnected = () => {
|
|
65
|
+
opened = true;
|
|
60
66
|
this.logger.debug(() => ({ msg: "Database connection opened" }));
|
|
61
67
|
this.connected = true;
|
|
62
68
|
this.connection = connection;
|
|
@@ -70,6 +76,12 @@ var MongoDatabase = class {
|
|
|
70
76
|
}));
|
|
71
77
|
this.connected = false;
|
|
72
78
|
this.connecting = void 0;
|
|
79
|
+
if (!opened) connection.destroy(true).catch((destroyErr) => {
|
|
80
|
+
this.logger.error(() => ({
|
|
81
|
+
err: destroyErr,
|
|
82
|
+
msg: "Failed to destroy unconnected database connection"
|
|
83
|
+
}));
|
|
84
|
+
});
|
|
73
85
|
reject(err);
|
|
74
86
|
};
|
|
75
87
|
connection.once("open", onConnected);
|
package/dist/base/mongo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,QAA6B,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAGnC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/base/mongo.cjs
CHANGED
|
@@ -15,8 +15,10 @@ var DEFAULT_ENDPOINT = "mongodb://127.0.0.1:27017";
|
|
|
15
15
|
* @return {MongoDatabase} Database layer
|
|
16
16
|
*/
|
|
17
17
|
var MongoDatabase = class {
|
|
18
|
-
constructor(url, dbname, authSource, logger) {
|
|
18
|
+
constructor(url, dbname, authSource, logger, timeouts) {
|
|
19
19
|
this.connected = false;
|
|
20
|
+
this.connectTimeoutMS = timeouts?.connectTimeoutMS;
|
|
21
|
+
this.serverSelectionTimeoutMS = timeouts?.serverSelectionTimeoutMS;
|
|
20
22
|
const parsedUrl = new URL(url || DEFAULT_ENDPOINT);
|
|
21
23
|
if (dbname) parsedUrl.pathname = dbname;
|
|
22
24
|
if (authSource) parsedUrl.searchParams.set("authSource", authSource);
|
|
@@ -56,9 +58,13 @@ var MongoDatabase = class {
|
|
|
56
58
|
appName,
|
|
57
59
|
dbName: this.dbname,
|
|
58
60
|
maxPoolSize: 50,
|
|
59
|
-
minPoolSize: 5
|
|
61
|
+
minPoolSize: 5,
|
|
62
|
+
connectTimeoutMS: this.connectTimeoutMS,
|
|
63
|
+
serverSelectionTimeoutMS: this.serverSelectionTimeoutMS
|
|
60
64
|
}));
|
|
65
|
+
let opened = false;
|
|
61
66
|
const onConnected = () => {
|
|
67
|
+
opened = true;
|
|
62
68
|
this.logger.debug(() => ({ msg: "Database connection opened" }));
|
|
63
69
|
this.connected = true;
|
|
64
70
|
this.connection = connection;
|
|
@@ -72,6 +78,12 @@ var MongoDatabase = class {
|
|
|
72
78
|
}));
|
|
73
79
|
this.connected = false;
|
|
74
80
|
this.connecting = void 0;
|
|
81
|
+
if (!opened) connection.destroy(true).catch((destroyErr) => {
|
|
82
|
+
this.logger.error(() => ({
|
|
83
|
+
err: destroyErr,
|
|
84
|
+
msg: "Failed to destroy unconnected database connection"
|
|
85
|
+
}));
|
|
86
|
+
});
|
|
75
87
|
reject(err);
|
|
76
88
|
};
|
|
77
89
|
connection.once("open", onConnected);
|
|
@@ -29,8 +29,8 @@ var CAPTCHA_TABLES = [
|
|
|
29
29
|
}
|
|
30
30
|
];
|
|
31
31
|
var CaptchaDatabase = class CaptchaDatabase extends require_mongo.MongoDatabase {
|
|
32
|
-
constructor(url, dbname, authSource, logger) {
|
|
33
|
-
super(url, dbname, authSource, logger);
|
|
32
|
+
constructor(url, dbname, authSource, logger, timeouts) {
|
|
33
|
+
super(url, dbname, authSource, logger, timeouts);
|
|
34
34
|
this.indexesEnsured = false;
|
|
35
35
|
this.tables = {};
|
|
36
36
|
}
|
|
@@ -17,10 +17,19 @@ var CentralDbStreamer = class CentralDbStreamer {
|
|
|
17
17
|
static {
|
|
18
18
|
this.RECONNECT_COOLDOWN_MS = 5e3;
|
|
19
19
|
}
|
|
20
|
+
static {
|
|
21
|
+
this.CONNECT_TIMEOUT_MS = 45e3;
|
|
22
|
+
}
|
|
23
|
+
static {
|
|
24
|
+
this.SERVER_SELECTION_TIMEOUT_MS = 45e3;
|
|
25
|
+
}
|
|
20
26
|
constructor(mongoCaptchaUri, logger) {
|
|
21
27
|
this.lastFailureTime = 0;
|
|
22
28
|
this.logger = logger || (0, _prosopo_logger.getLogger)("info", "CentralDbStreamer");
|
|
23
|
-
this.db = new require_captcha.CaptchaDatabase(mongoCaptchaUri, void 0, void 0, this.logger
|
|
29
|
+
this.db = new require_captcha.CaptchaDatabase(mongoCaptchaUri, void 0, void 0, this.logger, {
|
|
30
|
+
connectTimeoutMS: CentralDbStreamer.CONNECT_TIMEOUT_MS,
|
|
31
|
+
serverSelectionTimeoutMS: CentralDbStreamer.SERVER_SELECTION_TIMEOUT_MS
|
|
32
|
+
});
|
|
24
33
|
}
|
|
25
34
|
ensureConnected() {
|
|
26
35
|
if (this.connectPromise && !this.db.connected) this.connectPromise = void 0;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
|
|
3
2
|
const require_mongooseOptions = require("./mongooseOptions.cjs");
|
|
4
3
|
const require_mongo = require("./base/mongo.cjs");
|
|
5
4
|
const require_mongoMemory = require("./base/mongoMemory.cjs");
|
|
@@ -10,13 +9,14 @@ const require_centralDbStreamer = require("./databases/centralDbStreamer.cjs");
|
|
|
10
9
|
const require_index = require("./databases/index.cjs");
|
|
11
10
|
const require_redisCache = require("./redisCache.cjs");
|
|
12
11
|
let make_dir = require("make-dir");
|
|
13
|
-
make_dir = require_runtime.__toESM(make_dir, 1);
|
|
14
12
|
//#region src/index.ts
|
|
15
|
-
console.debug(make_dir.
|
|
13
|
+
console.debug(make_dir.makeDirectory);
|
|
16
14
|
//#endregion
|
|
17
15
|
exports.CaptchaDatabase = require_captcha.CaptchaDatabase;
|
|
18
16
|
exports.CentralDbStreamer = require_centralDbStreamer.CentralDbStreamer;
|
|
19
17
|
exports.ClientDatabase = require_client.ClientDatabase;
|
|
18
|
+
exports.DEFAULT_CONNECT_TIMEOUT_MS = require_mongooseOptions.DEFAULT_CONNECT_TIMEOUT_MS;
|
|
19
|
+
exports.DEFAULT_SERVER_SELECTION_TIMEOUT_MS = require_mongooseOptions.DEFAULT_SERVER_SELECTION_TIMEOUT_MS;
|
|
20
20
|
exports.DETECTOR_BUNDLE_TTL_SECONDS = require_redisCache.DETECTOR_BUNDLE_TTL_SECONDS;
|
|
21
21
|
exports.Databases = require_index.Databases;
|
|
22
22
|
exports.MongoDatabase = require_mongo.MongoDatabase;
|
|
@@ -25,6 +25,19 @@ var getMongoCompressors = (url, compressors = DEFAULT_COMPRESSORS) => {
|
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
28
|
+
* Default connect / server-selection timeouts.
|
|
29
|
+
*
|
|
30
|
+
* These are sized for a database that is local to the process or at least on
|
|
31
|
+
* the same continent, where a connect that has not completed in 10s is a real
|
|
32
|
+
* fault worth failing fast on. They are *not* safe as a universal ceiling: a
|
|
33
|
+
* connection to a remote database can need far longer for the TLS handshake
|
|
34
|
+
* alone — pronode17 measures 2-30s to mongo1 — and every connect that trips
|
|
35
|
+
* the ceiling is a wasted attempt that will simply be retried. Callers that
|
|
36
|
+
* own a known long-haul connection pass their own values instead.
|
|
37
|
+
*/
|
|
38
|
+
var DEFAULT_CONNECT_TIMEOUT_MS = 1e4;
|
|
39
|
+
var DEFAULT_SERVER_SELECTION_TIMEOUT_MS = 2e4;
|
|
40
|
+
/**
|
|
28
41
|
* Returns default mongoose connection options with the ability to override specific values.
|
|
29
42
|
*
|
|
30
43
|
* @param options - Configuration options
|
|
@@ -33,10 +46,12 @@ var getMongoCompressors = (url, compressors = DEFAULT_COMPRESSORS) => {
|
|
|
33
46
|
* @param options.maxPoolSize - Maximum pool size (default: 10)
|
|
34
47
|
* @param options.minPoolSize - Minimum pool size (default: 0)
|
|
35
48
|
* @param options.dbName - Optional database name
|
|
49
|
+
* @param options.connectTimeoutMS - Max time to establish a connection (default: 10000)
|
|
50
|
+
* @param options.serverSelectionTimeoutMS - Max time to select a server (default: 20000)
|
|
36
51
|
* @returns Mongoose connection options object
|
|
37
52
|
*/
|
|
38
53
|
var getMongoConnectionOptions = (options) => {
|
|
39
|
-
const { url, appName, maxPoolSize = 10, minPoolSize = 0, dbName } = options;
|
|
54
|
+
const { url, appName, maxPoolSize = 10, minPoolSize = 0, dbName, connectTimeoutMS = DEFAULT_CONNECT_TIMEOUT_MS, serverSelectionTimeoutMS = DEFAULT_SERVER_SELECTION_TIMEOUT_MS } = options;
|
|
40
55
|
if (!url || url.trim() === "") throw new Error("MongoDB connection URL is required and cannot be empty or whitespace-only");
|
|
41
56
|
const compressors = getMongoCompressors(url);
|
|
42
57
|
const connectionOptions = {
|
|
@@ -48,16 +63,18 @@ var getMongoConnectionOptions = (options) => {
|
|
|
48
63
|
maxPoolSize,
|
|
49
64
|
minPoolSize,
|
|
50
65
|
maxConnecting: 2,
|
|
51
|
-
connectTimeoutMS
|
|
66
|
+
connectTimeoutMS,
|
|
52
67
|
socketTimeoutMS: 3e4,
|
|
53
68
|
maxIdleTimeMS: 3e5,
|
|
54
69
|
appName,
|
|
55
|
-
serverSelectionTimeoutMS
|
|
70
|
+
serverSelectionTimeoutMS,
|
|
56
71
|
compressors
|
|
57
72
|
};
|
|
58
73
|
if (dbName) connectionOptions.dbName = dbName;
|
|
59
74
|
return connectionOptions;
|
|
60
75
|
};
|
|
61
76
|
//#endregion
|
|
77
|
+
exports.DEFAULT_CONNECT_TIMEOUT_MS = DEFAULT_CONNECT_TIMEOUT_MS;
|
|
78
|
+
exports.DEFAULT_SERVER_SELECTION_TIMEOUT_MS = DEFAULT_SERVER_SELECTION_TIMEOUT_MS;
|
|
62
79
|
exports.getMongoCompressors = getMongoCompressors;
|
|
63
80
|
exports.getMongoConnectionOptions = getMongoConnectionOptions;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Logger } from "@prosopo/logger";
|
|
2
2
|
import { type CaptchaProperties, type ICaptchaDatabase, type PoWCaptchaRecord, type PuzzleCaptchaRecord, type StoredSession, type Tables, type UserCommitmentRecord } from "@prosopo/types-database";
|
|
3
3
|
import type { QueryFilter } from "mongoose";
|
|
4
|
-
import { MongoDatabase } from "../base/index.js";
|
|
4
|
+
import { type MongoConnectionTimeouts, MongoDatabase } from "../base/index.js";
|
|
5
5
|
declare enum TableNames {
|
|
6
6
|
frictionlessToken = "frictionlessToken",
|
|
7
7
|
session = "session",
|
|
@@ -12,7 +12,7 @@ declare enum TableNames {
|
|
|
12
12
|
export declare class CaptchaDatabase extends MongoDatabase implements ICaptchaDatabase {
|
|
13
13
|
tables: Tables<TableNames>;
|
|
14
14
|
private indexesEnsured;
|
|
15
|
-
constructor(url: string, dbname?: string, authSource?: string, logger?: Logger);
|
|
15
|
+
constructor(url: string, dbname?: string, authSource?: string, logger?: Logger, timeouts?: MongoConnectionTimeouts);
|
|
16
16
|
connect(): Promise<void>;
|
|
17
17
|
getTables(): Tables<TableNames>;
|
|
18
18
|
ensureIndexes(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/databases/captcha.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EAGxB,KAAK,aAAa,EAGlB,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,MAAM,yBAAyB,CAAC;AAajC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/databases/captcha.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EAGxB,KAAK,aAAa,EAGlB,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,MAAM,yBAAyB,CAAC;AAajC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,uBAAuB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI/E,aAAK,UAAU;IACd,iBAAiB,sBAAsB;IACvC,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,aAAa,kBAAkB;CAC/B;AAyBD,qBAAa,eAAgB,SAAQ,aAAc,YAAW,gBAAgB;IAC7E,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3B,OAAO,CAAC,cAAc,CAAS;gBAG9B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,uBAAuB;IAMpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUvC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC;IAUzB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAqDpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAoBnC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAajC,YAAY,CACjB,aAAa,EAAE,aAAa,EAAE,EAC9B,kBAAkB,EAAE,oBAAoB,EAAE,EAC1C,gBAAgB,EAAE,gBAAgB,EAAE,EACpC,mBAAmB,GAAE,mBAAmB,EAAO;IAmI1C,WAAW,CAChB,MAAM,GAAE,WAAW,CAAC,iBAAiB,CAAM,EAC3C,KAAK,SAAM,GACT,OAAO,CAAC;QACV,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;QAC9C,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;QACtC,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;KAC5C,CAAC;CAsCF"}
|
|
@@ -29,8 +29,8 @@ var CAPTCHA_TABLES = [
|
|
|
29
29
|
}
|
|
30
30
|
];
|
|
31
31
|
var CaptchaDatabase = class CaptchaDatabase extends MongoDatabase {
|
|
32
|
-
constructor(url, dbname, authSource, logger) {
|
|
33
|
-
super(url, dbname, authSource, logger);
|
|
32
|
+
constructor(url, dbname, authSource, logger, timeouts) {
|
|
33
|
+
super(url, dbname, authSource, logger, timeouts);
|
|
34
34
|
this.indexesEnsured = false;
|
|
35
35
|
this.tables = {};
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/databases/captcha.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAKN,4BAA4B,EAC5B,+BAA+B,EAE/B,yBAAyB,EACzB,gCAAgC,GAGhC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAOxC,MAAM,UAAU,GAAG,CAAC,KAAc,EAAW,EAAE,CAC9C,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,WAAW,IAAI,KAAK;IACnB,KAA+B,CAAC,SAAS,KAAK,MAAM,CAAC;AAEvD,OAAO,
|
|
1
|
+
{"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/databases/captcha.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ export declare class CentralDbStreamer {
|
|
|
7
7
|
private connectPromise;
|
|
8
8
|
private lastFailureTime;
|
|
9
9
|
private static readonly RECONNECT_COOLDOWN_MS;
|
|
10
|
+
private static readonly CONNECT_TIMEOUT_MS;
|
|
11
|
+
private static readonly SERVER_SELECTION_TIMEOUT_MS;
|
|
10
12
|
constructor(mongoCaptchaUri: string, logger?: Logger);
|
|
11
13
|
private ensureConnected;
|
|
12
14
|
private getRecordTimestamp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"centralDbStreamer.d.ts","sourceRoot":"","sources":["../../src/databases/centralDbStreamer.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EACX,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,MAAM,yBAAyB,CAAC;AAUjC,MAAM,MAAM,kBAAkB,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAc5E,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAS;
|
|
1
|
+
{"version":3,"file":"centralDbStreamer.d.ts","sourceRoot":"","sources":["../../src/databases/centralDbStreamer.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EACX,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,MAAM,yBAAyB,CAAC;AAUjC,MAAM,MAAM,kBAAkB,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAc5E,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAWtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAU;gBAEjD,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAcpD,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,kBAAkB;IAiB1B,eAAe,CACd,MAAM,EAAE,gBAAgB,EACxB,UAAU,CAAC,EAAE,kBAAkB,GAC7B,IAAI;IAuBP,eAAe,CACd,aAAa,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,EACrD,UAAU,CAAC,EAAE,kBAAkB,GAC7B,IAAI;IAmBP,iBAAiB,CAChB,MAAM,EAAE,oBAAoB,EAC5B,UAAU,CAAC,EAAE,kBAAkB,GAC7B,IAAI;IAuBP,iBAAiB,CAChB,aAAa,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,EACzD,UAAU,CAAC,EAAE,kBAAkB,GAC7B,IAAI;IAmBP,kBAAkB,CACjB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,CAAC,EAAE,kBAAkB,GAC7B,IAAI;IAuBP,kBAAkB,CACjB,aAAa,EAAE,MAAM,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,EACxD,UAAU,CAAC,EAAE,kBAAkB,GAC7B,IAAI;IAmBP,mBAAmB,CAClB,MAAM,EAAE,aAAa,EACrB,UAAU,CAAC,EAAE,kBAAkB,GAC7B,IAAI;CAmBP"}
|
|
@@ -17,10 +17,19 @@ var CentralDbStreamer = class CentralDbStreamer {
|
|
|
17
17
|
static {
|
|
18
18
|
this.RECONNECT_COOLDOWN_MS = 5e3;
|
|
19
19
|
}
|
|
20
|
+
static {
|
|
21
|
+
this.CONNECT_TIMEOUT_MS = 45e3;
|
|
22
|
+
}
|
|
23
|
+
static {
|
|
24
|
+
this.SERVER_SELECTION_TIMEOUT_MS = 45e3;
|
|
25
|
+
}
|
|
20
26
|
constructor(mongoCaptchaUri, logger) {
|
|
21
27
|
this.lastFailureTime = 0;
|
|
22
28
|
this.logger = logger || getLogger("info", "CentralDbStreamer");
|
|
23
|
-
this.db = new CaptchaDatabase(mongoCaptchaUri, void 0, void 0, this.logger
|
|
29
|
+
this.db = new CaptchaDatabase(mongoCaptchaUri, void 0, void 0, this.logger, {
|
|
30
|
+
connectTimeoutMS: CentralDbStreamer.CONNECT_TIMEOUT_MS,
|
|
31
|
+
serverSelectionTimeoutMS: CentralDbStreamer.SERVER_SELECTION_TIMEOUT_MS
|
|
32
|
+
});
|
|
24
33
|
}
|
|
25
34
|
ensureConnected() {
|
|
26
35
|
if (this.connectPromise && !this.db.connected) this.connectPromise = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"centralDbStreamer.js","sourceRoot":"","sources":["../../src/databases/centralDbStreamer.ts"],"names":[],"mappings":"AAcA,OAAO,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAuB/C,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"centralDbStreamer.js","sourceRoot":"","sources":["../../src/databases/centralDbStreamer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { getMongoCompressors, getMongoConnectionOptions } from "./mongooseOptions.js";
|
|
2
|
+
import { DEFAULT_CONNECT_TIMEOUT_MS, DEFAULT_SERVER_SELECTION_TIMEOUT_MS, getMongoCompressors, getMongoConnectionOptions } from "./mongooseOptions.js";
|
|
3
3
|
import { MongoDatabase } from "./base/mongo.js";
|
|
4
4
|
import { MongoMemoryDatabase } from "./base/mongoMemory.js";
|
|
5
5
|
import { CaptchaDatabase } from "./databases/captcha.js";
|
|
@@ -8,8 +8,8 @@ import { ProviderDatabase } from "./databases/provider.js";
|
|
|
8
8
|
import { CentralDbStreamer } from "./databases/centralDbStreamer.js";
|
|
9
9
|
import { Databases } from "./databases/index.js";
|
|
10
10
|
import { DETECTOR_BUNDLE_TTL_SECONDS, RedisWriteQueue } from "./redisCache.js";
|
|
11
|
-
import
|
|
11
|
+
import { makeDirectory } from "make-dir";
|
|
12
12
|
//#region src/index.ts
|
|
13
|
-
console.debug(
|
|
13
|
+
console.debug(makeDirectory);
|
|
14
14
|
//#endregion
|
|
15
|
-
export { CaptchaDatabase, CentralDbStreamer, ClientDatabase, DETECTOR_BUNDLE_TTL_SECONDS, Databases, MongoDatabase, MongoMemoryDatabase, ProviderDatabase, RedisWriteQueue, getMongoCompressors, getMongoConnectionOptions };
|
|
15
|
+
export { CaptchaDatabase, CentralDbStreamer, ClientDatabase, DEFAULT_CONNECT_TIMEOUT_MS, DEFAULT_SERVER_SELECTION_TIMEOUT_MS, DETECTOR_BUNDLE_TTL_SECONDS, Databases, MongoDatabase, MongoMemoryDatabase, ProviderDatabase, RedisWriteQueue, getMongoCompressors, getMongoConnectionOptions };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import type { ConnectOptions } from "mongoose";
|
|
2
2
|
export type MongoCompressor = "zstd" | "none" | "snappy" | "zlib";
|
|
3
3
|
export declare const getMongoCompressors: (url: string, compressors?: MongoCompressor[]) => MongoCompressor[];
|
|
4
|
+
export declare const DEFAULT_CONNECT_TIMEOUT_MS = 10000;
|
|
5
|
+
export declare const DEFAULT_SERVER_SELECTION_TIMEOUT_MS = 20000;
|
|
4
6
|
export declare const getMongoConnectionOptions: (options: {
|
|
5
7
|
url: string;
|
|
6
8
|
appName: string;
|
|
7
9
|
maxPoolSize?: number;
|
|
8
10
|
minPoolSize?: number;
|
|
9
11
|
dbName?: string;
|
|
12
|
+
connectTimeoutMS?: number;
|
|
13
|
+
serverSelectionTimeoutMS?: number;
|
|
10
14
|
}) => ConnectOptions;
|
|
11
15
|
//# sourceMappingURL=mongooseOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongooseOptions.d.ts","sourceRoot":"","sources":["../src/mongooseOptions.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAqBlE,eAAO,MAAM,mBAAmB,QAC1B,MAAM,gBACE,eAAe,EAAE,KAC5B,eAAe,EAuCjB,CAAC;AAaF,eAAO,MAAM,yBAAyB,YAAa;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mongooseOptions.d.ts","sourceRoot":"","sources":["../src/mongooseOptions.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAqBlE,eAAO,MAAM,mBAAmB,QAC1B,MAAM,gBACE,eAAe,EAAE,KAC5B,eAAe,EAuCjB,CAAC;AAaF,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAChD,eAAO,MAAM,mCAAmC,QAAQ,CAAC;AAezD,eAAO,MAAM,yBAAyB,YAAa;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAClC,KAAG,cA2CH,CAAC"}
|
package/dist/mongooseOptions.js
CHANGED
|
@@ -25,6 +25,19 @@ var getMongoCompressors = (url, compressors = DEFAULT_COMPRESSORS) => {
|
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
28
|
+
* Default connect / server-selection timeouts.
|
|
29
|
+
*
|
|
30
|
+
* These are sized for a database that is local to the process or at least on
|
|
31
|
+
* the same continent, where a connect that has not completed in 10s is a real
|
|
32
|
+
* fault worth failing fast on. They are *not* safe as a universal ceiling: a
|
|
33
|
+
* connection to a remote database can need far longer for the TLS handshake
|
|
34
|
+
* alone — pronode17 measures 2-30s to mongo1 — and every connect that trips
|
|
35
|
+
* the ceiling is a wasted attempt that will simply be retried. Callers that
|
|
36
|
+
* own a known long-haul connection pass their own values instead.
|
|
37
|
+
*/
|
|
38
|
+
var DEFAULT_CONNECT_TIMEOUT_MS = 1e4;
|
|
39
|
+
var DEFAULT_SERVER_SELECTION_TIMEOUT_MS = 2e4;
|
|
40
|
+
/**
|
|
28
41
|
* Returns default mongoose connection options with the ability to override specific values.
|
|
29
42
|
*
|
|
30
43
|
* @param options - Configuration options
|
|
@@ -33,10 +46,12 @@ var getMongoCompressors = (url, compressors = DEFAULT_COMPRESSORS) => {
|
|
|
33
46
|
* @param options.maxPoolSize - Maximum pool size (default: 10)
|
|
34
47
|
* @param options.minPoolSize - Minimum pool size (default: 0)
|
|
35
48
|
* @param options.dbName - Optional database name
|
|
49
|
+
* @param options.connectTimeoutMS - Max time to establish a connection (default: 10000)
|
|
50
|
+
* @param options.serverSelectionTimeoutMS - Max time to select a server (default: 20000)
|
|
36
51
|
* @returns Mongoose connection options object
|
|
37
52
|
*/
|
|
38
53
|
var getMongoConnectionOptions = (options) => {
|
|
39
|
-
const { url, appName, maxPoolSize = 10, minPoolSize = 0, dbName } = options;
|
|
54
|
+
const { url, appName, maxPoolSize = 10, minPoolSize = 0, dbName, connectTimeoutMS = DEFAULT_CONNECT_TIMEOUT_MS, serverSelectionTimeoutMS = DEFAULT_SERVER_SELECTION_TIMEOUT_MS } = options;
|
|
40
55
|
if (!url || url.trim() === "") throw new Error("MongoDB connection URL is required and cannot be empty or whitespace-only");
|
|
41
56
|
const compressors = getMongoCompressors(url);
|
|
42
57
|
const connectionOptions = {
|
|
@@ -48,15 +63,15 @@ var getMongoConnectionOptions = (options) => {
|
|
|
48
63
|
maxPoolSize,
|
|
49
64
|
minPoolSize,
|
|
50
65
|
maxConnecting: 2,
|
|
51
|
-
connectTimeoutMS
|
|
66
|
+
connectTimeoutMS,
|
|
52
67
|
socketTimeoutMS: 3e4,
|
|
53
68
|
maxIdleTimeMS: 3e5,
|
|
54
69
|
appName,
|
|
55
|
-
serverSelectionTimeoutMS
|
|
70
|
+
serverSelectionTimeoutMS,
|
|
56
71
|
compressors
|
|
57
72
|
};
|
|
58
73
|
if (dbName) connectionOptions.dbName = dbName;
|
|
59
74
|
return connectionOptions;
|
|
60
75
|
};
|
|
61
76
|
//#endregion
|
|
62
|
-
export { getMongoCompressors, getMongoConnectionOptions };
|
|
77
|
+
export { DEFAULT_CONNECT_TIMEOUT_MS, DEFAULT_SERVER_SELECTION_TIMEOUT_MS, getMongoCompressors, getMongoConnectionOptions };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongooseOptions.js","sourceRoot":"","sources":["../src/mongooseOptions.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAW3C,MAAM,mBAAmB,GAAsB,EAAE,CAAC;AAalD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAClC,GAAW,EACX,cAAiC,mBAAmB,EAChC,EAAE;IACtB,IAAI,CAAC;QAEJ,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,kBAAkB,GACvB,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAI3D,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,kBAAkB,EAAE,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAKpC,MAAM,WAAW,GAChB,QAAQ,KAAK,WAAW;YACxB,QAAQ,KAAK,WAAW;YACxB,QAAQ,KAAK,OAAO;YACpB,QAAQ,KAAK,KAAK,CAAC;QAEpB,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACX,CAAC;QAKD,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtD,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;YAClB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAAC,MAAM,CAAC;QAER,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;IACzB,CAAC;AACF,CAAC,CAAC;AAaF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"mongooseOptions.js","sourceRoot":"","sources":["../src/mongooseOptions.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAW3C,MAAM,mBAAmB,GAAsB,EAAE,CAAC;AAalD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAClC,GAAW,EACX,cAAiC,mBAAmB,EAChC,EAAE;IACtB,IAAI,CAAC;QAEJ,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,kBAAkB,GACvB,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAI3D,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,kBAAkB,EAAE,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAKpC,MAAM,WAAW,GAChB,QAAQ,KAAK,WAAW;YACxB,QAAQ,KAAK,WAAW;YACxB,QAAQ,KAAK,OAAO;YACpB,QAAQ,KAAK,KAAK,CAAC;QAEpB,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACX,CAAC;QAKD,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtD,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;YAClB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAAC,MAAM,CAAC;QAER,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;IACzB,CAAC;AACF,CAAC,CAAC;AAaF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAChD,MAAM,CAAC,MAAM,mCAAmC,GAAG,KAAK,CAAC;AAezD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAQzC,EAAkB,EAAE;IACpB,MAAM,EACL,GAAG,EACH,OAAO,EACP,WAAW,GAAG,EAAE,EAChB,WAAW,GAAG,CAAC,EACf,MAAM,EACN,gBAAgB,GAAG,0BAA0B,EAC7C,wBAAwB,GAAG,mCAAmC,GAC9D,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACd,2EAA2E,CAC3E,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAE7C,MAAM,iBAAiB,GAAmB;QACzC,SAAS,EAAE;YACV,OAAO,EAAE,gBAAgB,CAAC,EAAE;YAG5B,MAAM,EAAE,KAAK;YACb,iBAAiB,EAAE,KAAK;SACxB;QACD,WAAW;QACX,WAAW;QACX,aAAa,EAAE,CAAC;QAChB,gBAAgB;QAChB,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,MAAM;QACrB,OAAO;QACP,wBAAwB;QACxB,WAAW;KACX,CAAC;IAEF,IAAI,MAAM,EAAE,CAAC;QACZ,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC1B,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ServerApiVersion } from "mongodb";
|
|
2
2
|
import { describe, expect, it } from "vitest";
|
|
3
|
-
import { getMongoCompressors, getMongoConnectionOptions, } from "../mongooseOptions.js";
|
|
3
|
+
import { DEFAULT_CONNECT_TIMEOUT_MS, DEFAULT_SERVER_SELECTION_TIMEOUT_MS, getMongoCompressors, getMongoConnectionOptions, } from "../mongooseOptions.js";
|
|
4
4
|
const DEFAULT_COMPRESSORS = [];
|
|
5
5
|
const EXPLICIT_COMPRESSORS = [
|
|
6
6
|
"zstd",
|
|
@@ -151,6 +151,24 @@ describe("getMongoConnectionOptions", () => {
|
|
|
151
151
|
expect(options.maxPoolSize).toBe(50);
|
|
152
152
|
expect(options.minPoolSize).toBe(5);
|
|
153
153
|
});
|
|
154
|
+
it("defaults the connect and server selection timeouts", () => {
|
|
155
|
+
const options = getMongoConnectionOptions({
|
|
156
|
+
url: "mongodb://example.com:27017/db",
|
|
157
|
+
appName,
|
|
158
|
+
});
|
|
159
|
+
expect(options.connectTimeoutMS).toBe(DEFAULT_CONNECT_TIMEOUT_MS);
|
|
160
|
+
expect(options.serverSelectionTimeoutMS).toBe(DEFAULT_SERVER_SELECTION_TIMEOUT_MS);
|
|
161
|
+
});
|
|
162
|
+
it("applies connect and server selection timeout overrides", () => {
|
|
163
|
+
const options = getMongoConnectionOptions({
|
|
164
|
+
url: "mongodb://example.com:27017/db",
|
|
165
|
+
appName,
|
|
166
|
+
connectTimeoutMS: 45_000,
|
|
167
|
+
serverSelectionTimeoutMS: 45_000,
|
|
168
|
+
});
|
|
169
|
+
expect(options.connectTimeoutMS).toBe(45_000);
|
|
170
|
+
expect(options.serverSelectionTimeoutMS).toBe(45_000);
|
|
171
|
+
});
|
|
154
172
|
it("only sets dbName when provided", () => {
|
|
155
173
|
const withDbName = getMongoConnectionOptions({
|
|
156
174
|
url: "mongodb://example.com:27017/db",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongooseOptions.unit.test.js","sourceRoot":"","sources":["../../src/tests/mongooseOptions.unit.test.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"mongooseOptions.unit.test.js","sourceRoot":"","sources":["../../src/tests/mongooseOptions.unit.test.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACN,0BAA0B,EAC1B,mCAAmC,EAEnC,mBAAmB,EACnB,yBAAyB,GACzB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,mBAAmB,GAAsB,EAAE,CAAC;AAClD,MAAM,oBAAoB,GAAsB;IAC/C,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;CACN,CAAC;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACrE,MAAM,IAAI,GAAG;YACZ,0CAA0C;YAC1C,sBAAsB;YACtB,4BAA4B;YAC5B,kCAAkC;YAClC,oCAAoC;SACpC,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC/D,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAChF,MAAM,IAAI,GAAG;YACZ,0CAA0C;YAC1C,sBAAsB;YACtB,kCAAkC;SAClC,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAC7D,oBAAoB,CACpB,CAAC;QACH,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG;YACZ,6BAA6B;YAC7B,iBAAiB;YACjB,0BAA0B;YAC1B,6BAA6B;SAC7B,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAG;YACZ,8BAA8B;YAC9B,8BAA8B;YAC9B,0BAA0B;SAC1B,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACzE,MAAM,IAAI,GAAG;YACZ,gCAAgC;YAChC,uBAAuB;YACvB,+BAA+B;SAC/B,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAC7D,oBAAoB,CACpB,CAAC;QACH,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG;YACZ,mCAAmC;YACnC,+CAA+C;YAC/C,yCAAyC;SACzC,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAC7D,oBAAoB,CACpB,CAAC;QACH,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAChD,MAAM,iBAAiB,GAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,gCAAgC,CAAC;QAC7C,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAC1D,iBAAiB,CACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QACjF,MAAM,iBAAiB,GAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,8BAA8B,CAAC;QAC3C,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,sCAAsC,CAAC;QACnD,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAC7D,oBAAoB,CACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAGnE,MAAM,eAAe,GAAG,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACnC,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAC7D,oBAAoB,CACpB,CAAC;QACH,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAG5E,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,GAAG,GAAG,8CAA8C,CAAC;QAC3D,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAC7D,oBAAoB,CACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC7C,MAAM,GAAG,GACR,kEAAkE,CAAC;QACpE,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAC7D,oBAAoB,CACpB,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IAC1C,MAAM,OAAO,GAAG,UAAU,CAAC;IAE3B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CACpE,iBAAiB,CACjB,CAAC;QACF,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CACvE,iBAAiB,CACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,yBAAyB,CAAC;YACzC,GAAG,EAAE,gCAAgC;YACrC,OAAO;SACP,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACjC,OAAO,EAAE,gBAAgB,CAAC,EAAE;YAC5B,MAAM,EAAE,KAAK;YACb,iBAAiB,EAAE,KAAK;SACxB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC5C,MAAM,OAAO,GAAG,yBAAyB,CAAC;YACzC,GAAG,EAAE,8BAA8B;YACnC,OAAO;SACP,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC5E,MAAM,OAAO,GAAG,yBAAyB,CAAC;YACzC,GAAG,EAAE,kCAAkC;YACvC,OAAO;SACP,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACtC,MAAM,OAAO,GAAG,yBAAyB,CAAC;YACzC,GAAG,EAAE,gCAAgC;YACrC,OAAO;YACP,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,CAAC;SACd,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAG,yBAAyB,CAAC;YACzC,GAAG,EAAE,gCAAgC;YACrC,OAAO;SACP,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAC5C,mCAAmC,CACnC,CAAC;IACH,CAAC,CAAC,CAAC;IAMH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAG,yBAAyB,CAAC;YACzC,GAAG,EAAE,gCAAgC;YACrC,OAAO;YACP,gBAAgB,EAAE,MAAM;YACxB,wBAAwB,EAAE,MAAM;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACzC,MAAM,UAAU,GAAG,yBAAyB,CAAC;YAC5C,GAAG,EAAE,gCAAgC;YACrC,OAAO;YACP,MAAM,EAAE,MAAM;SACd,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvC,MAAM,aAAa,GAAG,yBAAyB,CAAC;YAC/C,GAAG,EAAE,gCAAgC;YACrC,OAAO;SACP,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo.unit.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/base/mongo.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import mongoose from "mongoose";
|
|
3
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { MongoDatabase } from "../../../base/mongo.js";
|
|
5
|
+
const createMockLogger = () => {
|
|
6
|
+
const logger = {
|
|
7
|
+
debug: vi.fn(),
|
|
8
|
+
info: vi.fn(),
|
|
9
|
+
warn: vi.fn(),
|
|
10
|
+
error: vi.fn(),
|
|
11
|
+
trace: vi.fn(),
|
|
12
|
+
fatal: vi.fn(),
|
|
13
|
+
log: vi.fn(),
|
|
14
|
+
with: vi.fn(() => logger),
|
|
15
|
+
};
|
|
16
|
+
return logger;
|
|
17
|
+
};
|
|
18
|
+
class FakeConnection extends EventEmitter {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.destroy = vi.fn((_force) => Promise.resolve());
|
|
22
|
+
this.close = vi.fn((_force) => Promise.resolve());
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const asConnection = (fake) => fake;
|
|
26
|
+
const flush = () => new Promise((resolve) => setTimeout(resolve, 10));
|
|
27
|
+
describe("MongoDatabase.connect", () => {
|
|
28
|
+
afterEach(() => {
|
|
29
|
+
vi.restoreAllMocks();
|
|
30
|
+
});
|
|
31
|
+
it("destroys a connection that failed to open", async () => {
|
|
32
|
+
const fake = new FakeConnection();
|
|
33
|
+
vi.spyOn(mongoose, "createConnection").mockReturnValue(asConnection(fake));
|
|
34
|
+
const db = new MongoDatabase("mongodb://user:pass@example.com:27017/db", "db", undefined, createMockLogger());
|
|
35
|
+
const connecting = db.connect();
|
|
36
|
+
await flush();
|
|
37
|
+
fake.emit("error", new Error("connect ETIMEDOUT"));
|
|
38
|
+
await expect(connecting).rejects.toThrow("connect ETIMEDOUT");
|
|
39
|
+
expect(fake.destroy).toHaveBeenCalledTimes(1);
|
|
40
|
+
expect(db.connected).toBe(false);
|
|
41
|
+
expect(db.connection).toBeUndefined();
|
|
42
|
+
});
|
|
43
|
+
it("does not destroy a connection that already opened", async () => {
|
|
44
|
+
const fake = new FakeConnection();
|
|
45
|
+
vi.spyOn(mongoose, "createConnection").mockReturnValue(asConnection(fake));
|
|
46
|
+
const db = new MongoDatabase("mongodb://user:pass@example.com:27017/db", "db", undefined, createMockLogger());
|
|
47
|
+
const connecting = db.connect();
|
|
48
|
+
await flush();
|
|
49
|
+
fake.emit("open");
|
|
50
|
+
await connecting;
|
|
51
|
+
expect(db.connected).toBe(true);
|
|
52
|
+
expect(db.connection).toBe(asConnection(fake));
|
|
53
|
+
fake.emit("error", new Error("transient topology error"));
|
|
54
|
+
await flush();
|
|
55
|
+
expect(fake.destroy).not.toHaveBeenCalled();
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=mongo.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/base/mongo.unit.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/database",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.28",
|
|
4
4
|
"description": "Prosopo database plugins for provider",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -38,21 +38,21 @@
|
|
|
38
38
|
"homepage": "https://github.com/prosopo/captcha#readme",
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@polkadot/util": "13.5.7",
|
|
41
|
-
"@prosopo/common": "3.1.
|
|
42
|
-
"@prosopo/logger": "2.0.
|
|
43
|
-
"@prosopo/redis-client": "1.0.
|
|
44
|
-
"@prosopo/types": "5.
|
|
45
|
-
"@prosopo/types-database": "5.4.
|
|
46
|
-
"@prosopo/user-access-policy": "3.
|
|
47
|
-
"@prosopo/util": "3.3.
|
|
41
|
+
"@prosopo/common": "3.1.54",
|
|
42
|
+
"@prosopo/logger": "2.0.9",
|
|
43
|
+
"@prosopo/redis-client": "1.0.35",
|
|
44
|
+
"@prosopo/types": "5.7.0",
|
|
45
|
+
"@prosopo/types-database": "5.4.1",
|
|
46
|
+
"@prosopo/user-access-policy": "3.13.0",
|
|
47
|
+
"@prosopo/util": "3.3.9",
|
|
48
48
|
"bson": "7.3.2",
|
|
49
|
-
"make-dir": "
|
|
50
|
-
"mongodb": "7.
|
|
49
|
+
"make-dir": "5.1.0",
|
|
50
|
+
"mongodb": "7.6.0",
|
|
51
51
|
"mongodb-memory-server": "10.3.0",
|
|
52
52
|
"mongoose": "9.9.4"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@prosopo/config": "3.3.
|
|
55
|
+
"@prosopo/config": "3.3.14",
|
|
56
56
|
"@types/node": "22.10.2",
|
|
57
57
|
"@vitest/coverage-v8": "4.1.11",
|
|
58
58
|
"concurrently": "9.0.1",
|