@prosopo/database 2.6.5 → 3.0.5

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/CHANGELOG.md CHANGED
@@ -1,5 +1,97 @@
1
1
  # @prosopo/database
2
2
 
3
+ ## 3.0.5
4
+ ### Patch Changes
5
+
6
+ - Updated dependencies [745cc89]
7
+ - @prosopo/config@3.1.0
8
+ - @prosopo/types-database@3.0.5
9
+ - @prosopo/user-access-policy@3.1.4
10
+
11
+ ## 3.0.4
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [5619b4b]
15
+ - @prosopo/config@3.0.1
16
+ - @prosopo/types-database@3.0.4
17
+ - @prosopo/user-access-policy@3.1.3
18
+
19
+ ## 3.0.3
20
+ ### Patch Changes
21
+
22
+ - f682f0c: Moving type and fixing i18n config
23
+ - Updated dependencies [f682f0c]
24
+ - @prosopo/types-database@3.0.3
25
+ - @prosopo/types@3.0.2
26
+ - @prosopo/common@3.0.2
27
+ - @prosopo/user-access-policy@3.1.2
28
+
29
+ ## 3.0.2
30
+ ### Patch Changes
31
+
32
+ - @prosopo/common@3.0.1
33
+ - @prosopo/types@3.0.1
34
+ - @prosopo/types-database@3.0.2
35
+ - @prosopo/user-access-policy@3.1.1
36
+
37
+ ## 3.0.1
38
+ ### Patch Changes
39
+
40
+ - Updated dependencies [913f2a6]
41
+ - @prosopo/user-access-policy@3.1.0
42
+ - @prosopo/types-database@3.0.1
43
+
44
+ ## 3.0.0
45
+ ### Major Changes
46
+
47
+ - 64b5bcd: Access Controls
48
+
49
+ ### Patch Changes
50
+
51
+ - Updated dependencies [64b5bcd]
52
+ - @prosopo/user-access-policy@3.0.0
53
+ - @prosopo/types-database@3.0.0
54
+ - @prosopo/common@3.0.0
55
+ - @prosopo/types@3.0.0
56
+ - @prosopo/config@3.0.0
57
+
58
+ ## 2.6.9
59
+ ### Patch Changes
60
+
61
+ - Updated dependencies [aee3efe]
62
+ - @prosopo/types@2.10.0
63
+ - @prosopo/types-database@2.7.6
64
+ - @prosopo/user-access-policy@2.6.8
65
+
66
+ ## 2.6.8
67
+ ### Patch Changes
68
+
69
+ - 86c22b8: structured logging
70
+ - Updated dependencies [86c22b8]
71
+ - @prosopo/user-access-policy@2.6.7
72
+ - @prosopo/types-database@2.7.5
73
+ - @prosopo/common@2.7.2
74
+ - @prosopo/types@2.9.1
75
+ - @prosopo/config@2.6.1
76
+
77
+ ## 2.6.7
78
+ ### Patch Changes
79
+
80
+ - Updated dependencies [30bb383]
81
+ - @prosopo/types@2.9.0
82
+ - @prosopo/common@2.7.1
83
+ - @prosopo/types-database@2.7.4
84
+ - @prosopo/user-access-policy@2.6.6
85
+
86
+ ## 2.6.6
87
+ ### Patch Changes
88
+
89
+ - Updated dependencies [8f0644a]
90
+ - @prosopo/common@2.7.0
91
+ - @prosopo/types@2.8.0
92
+ - @prosopo/types-database@2.7.3
93
+ - @prosopo/user-access-policy@2.6.5
94
+
3
95
  ## 2.6.5
4
96
 
5
97
  ### Patch Changes
@@ -1,12 +1,14 @@
1
1
  import { type Logger } from "@prosopo/common";
2
+ import type { IDatabase } from "@prosopo/types-database";
2
3
  import mongoose, { type Connection } from "mongoose";
3
- export declare class MongoDatabase {
4
+ export declare class MongoDatabase implements IDatabase {
4
5
  protected readonly _url: string;
5
6
  safeURL: string;
6
7
  dbname: string;
7
8
  connection?: Connection;
8
9
  logger: Logger;
9
10
  connected: boolean;
11
+ private connecting?;
10
12
  constructor(url: string, dbname?: string, authSource?: string, logger?: Logger);
11
13
  get url(): string;
12
14
  getConnection(): mongoose.Connection;
@@ -1 +1 @@
1
- {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,iBAAiB,CAAC;AAEhF,OAAO,QAAQ,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAarD,qBAAa,aAAa;IACzB,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;gBAGjB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM;IAgBhB,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,aAAa,IAAI,QAAQ,CAAC,UAAU;IAa9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmExB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B"}
1
+ {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,MAAM,EAA6B,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,QAAQ,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAarD,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;gBAGlC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM;IAgBhB,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,aAAa,IAAI,QAAQ,CAAC,UAAU;IAa9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsGxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO5B"}
@@ -1,4 +1,4 @@
1
- import { ProsopoDBError, getLoggerDefault } from "@prosopo/common";
1
+ import { ProsopoDBError, getLogger } from "@prosopo/common";
2
2
  import { ServerApiVersion } from "mongodb";
3
3
  import mongoose from "mongoose";
4
4
  mongoose.set("strictQuery", false);
@@ -17,7 +17,7 @@ export class MongoDatabase {
17
17
  this._url = parsedUrl.toString();
18
18
  this.safeURL = this.url.replace(/\w+:\w+/, "<Credentials>");
19
19
  this.dbname = dbname || parsedUrl.pathname.replace("/", "");
20
- this.logger = logger || getLoggerDefault();
20
+ this.logger = logger || getLogger("info", import.meta.url);
21
21
  }
22
22
  get url() {
23
23
  return this._url;
@@ -32,63 +32,97 @@ export class MongoDatabase {
32
32
  return this.connection;
33
33
  }
34
34
  async connect() {
35
- this.logger.info(`Mongo url: ${this.safeURL}`);
35
+ this.logger.info(() => ({
36
+ data: { mongoUrl: this.safeURL },
37
+ msg: "Connecting to database",
38
+ }));
36
39
  try {
37
40
  if (this.connected) {
38
- this.logger.info(`Database connection to ${this.safeURL} already open`);
41
+ this.logger.info(() => ({
42
+ data: { mongoUrl: this.safeURL },
43
+ msg: "Database connection already open",
44
+ }));
39
45
  return;
40
46
  }
41
- this.connection = await new Promise((resolve, reject) => {
47
+ if (this.connecting) {
48
+ this.logger.info(() => ({
49
+ data: { mongoUrl: this.safeURL },
50
+ msg: "Database connection in progress, waiting for it to finish",
51
+ }));
52
+ return this.connecting;
53
+ }
54
+ this.connecting = new Promise((resolve, reject) => {
42
55
  const connection = mongoose.createConnection(this.url, {
43
56
  dbName: this.dbname,
44
57
  serverApi: ServerApiVersion.v1,
45
58
  });
46
- connection.on("open", () => {
47
- this.logger.info(`Database connection to ${this.safeURL} opened`);
59
+ const onConnected = () => {
60
+ this.logger.info(() => ({
61
+ data: { mongoUrl: this.safeURL },
62
+ msg: "Database connection opened",
63
+ }));
48
64
  this.connected = true;
49
- resolve(connection);
50
- });
51
- connection.on("error", (err) => {
65
+ this.connection = connection;
66
+ this.connecting = undefined;
67
+ resolve();
68
+ };
69
+ const onError = (err) => {
70
+ this.logger.error(() => ({
71
+ err,
72
+ data: { mongoUrl: this.safeURL },
73
+ msg: "Database error",
74
+ }));
52
75
  this.connected = false;
53
- this.logger.error(`Database error: ${err}`);
76
+ this.connecting = undefined;
54
77
  reject(err);
55
- });
56
- connection.on("connected", () => {
57
- this.logger.info(`Database connected to ${this.safeURL}`);
58
- this.connected = true;
59
- resolve(connection);
60
- });
78
+ };
79
+ connection.once("open", onConnected);
80
+ connection.once("error", onError);
61
81
  connection.on("disconnected", () => {
62
82
  this.connected = false;
63
- this.logger.info(`Database disconnected from ${this.safeURL}`);
83
+ this.logger.info(() => ({
84
+ data: { mongoUrl: this.safeURL },
85
+ msg: "Database disconnected",
86
+ }));
64
87
  });
65
88
  connection.on("reconnected", () => {
66
- this.logger.info(`Database reconnected to ${this.safeURL}`);
67
89
  this.connected = true;
68
- resolve(connection);
69
- });
70
- connection.on("reconnectFailed", () => {
71
- this.connected = false;
72
- this.logger.error(`Database reconnect failed to ${this.safeURL}`);
90
+ this.logger.info(() => ({
91
+ data: { mongoUrl: this.safeURL },
92
+ msg: "Database reconnected",
93
+ }));
73
94
  });
74
95
  connection.on("close", () => {
75
96
  this.connected = false;
76
- this.logger.info(`Database connection to ${this.safeURL} closed`);
97
+ this.logger.info(() => ({
98
+ data: { mongoUrl: this.safeURL },
99
+ msg: "Database connection closed",
100
+ }));
77
101
  });
78
102
  connection.on("fullsetup", () => {
79
103
  this.connected = true;
80
- this.logger.info(`Database connection to ${this.safeURL} is fully setup`);
81
- resolve(connection);
104
+ this.logger.info(() => ({
105
+ data: { mongoUrl: this.safeURL },
106
+ msg: "Database connection is fully setup",
107
+ }));
82
108
  });
83
109
  });
110
+ return this.connecting;
84
111
  }
85
112
  catch (e) {
86
- this.logger.error(`Database connection error: ${e}`);
113
+ this.logger.error(() => ({
114
+ err: e,
115
+ data: { mongoUrl: this.safeURL },
116
+ msg: "Database connection error",
117
+ }));
87
118
  throw e;
88
119
  }
89
120
  }
90
121
  async close() {
91
- this.logger.debug(`Closing connection to ${this.safeURL}`);
122
+ this.logger.debug(() => ({
123
+ data: { mongoUrl: this.safeURL },
124
+ msg: "Closing connection",
125
+ }));
92
126
  await this.connection?.close();
93
127
  }
94
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/base/mongo.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ class MongoDatabase {
19
19
  this._url = parsedUrl.toString();
20
20
  this.safeURL = this.url.replace(/\w+:\w+/, "<Credentials>");
21
21
  this.dbname = dbname || parsedUrl.pathname.replace("/", "");
22
- this.logger = logger || common.getLoggerDefault();
22
+ this.logger = logger || common.getLogger("info", module);
23
23
  }
24
24
  get url() {
25
25
  return this._url;
@@ -37,65 +37,97 @@ class MongoDatabase {
37
37
  * @description Connect to the database and set the various tables
38
38
  */
39
39
  async connect() {
40
- this.logger.info(`Mongo url: ${this.safeURL}`);
40
+ this.logger.info(() => ({
41
+ data: { mongoUrl: this.safeURL },
42
+ msg: "Connecting to database"
43
+ }));
41
44
  try {
42
45
  if (this.connected) {
43
- this.logger.info(`Database connection to ${this.safeURL} already open`);
46
+ this.logger.info(() => ({
47
+ data: { mongoUrl: this.safeURL },
48
+ msg: "Database connection already open"
49
+ }));
44
50
  return;
45
51
  }
46
- this.connection = await new Promise((resolve, reject) => {
52
+ if (this.connecting) {
53
+ this.logger.info(() => ({
54
+ data: { mongoUrl: this.safeURL },
55
+ msg: "Database connection in progress, waiting for it to finish"
56
+ }));
57
+ return this.connecting;
58
+ }
59
+ this.connecting = new Promise((resolve, reject) => {
47
60
  const connection = mongoose.createConnection(this.url, {
48
61
  dbName: this.dbname,
49
62
  serverApi: mongodb.ServerApiVersion.v1
50
63
  });
51
- connection.on("open", () => {
52
- this.logger.info(`Database connection to ${this.safeURL} opened`);
64
+ const onConnected = () => {
65
+ this.logger.info(() => ({
66
+ data: { mongoUrl: this.safeURL },
67
+ msg: "Database connection opened"
68
+ }));
53
69
  this.connected = true;
54
- resolve(connection);
55
- });
56
- connection.on("error", (err) => {
70
+ this.connection = connection;
71
+ this.connecting = void 0;
72
+ resolve();
73
+ };
74
+ const onError = (err) => {
75
+ this.logger.error(() => ({
76
+ err,
77
+ data: { mongoUrl: this.safeURL },
78
+ msg: "Database error"
79
+ }));
57
80
  this.connected = false;
58
- this.logger.error(`Database error: ${err}`);
81
+ this.connecting = void 0;
59
82
  reject(err);
60
- });
61
- connection.on("connected", () => {
62
- this.logger.info(`Database connected to ${this.safeURL}`);
63
- this.connected = true;
64
- resolve(connection);
65
- });
83
+ };
84
+ connection.once("open", onConnected);
85
+ connection.once("error", onError);
66
86
  connection.on("disconnected", () => {
67
87
  this.connected = false;
68
- this.logger.info(`Database disconnected from ${this.safeURL}`);
88
+ this.logger.info(() => ({
89
+ data: { mongoUrl: this.safeURL },
90
+ msg: "Database disconnected"
91
+ }));
69
92
  });
70
93
  connection.on("reconnected", () => {
71
- this.logger.info(`Database reconnected to ${this.safeURL}`);
72
94
  this.connected = true;
73
- resolve(connection);
74
- });
75
- connection.on("reconnectFailed", () => {
76
- this.connected = false;
77
- this.logger.error(`Database reconnect failed to ${this.safeURL}`);
95
+ this.logger.info(() => ({
96
+ data: { mongoUrl: this.safeURL },
97
+ msg: "Database reconnected"
98
+ }));
78
99
  });
79
100
  connection.on("close", () => {
80
101
  this.connected = false;
81
- this.logger.info(`Database connection to ${this.safeURL} closed`);
102
+ this.logger.info(() => ({
103
+ data: { mongoUrl: this.safeURL },
104
+ msg: "Database connection closed"
105
+ }));
82
106
  });
83
107
  connection.on("fullsetup", () => {
84
108
  this.connected = true;
85
- this.logger.info(
86
- `Database connection to ${this.safeURL} is fully setup`
87
- );
88
- resolve(connection);
109
+ this.logger.info(() => ({
110
+ data: { mongoUrl: this.safeURL },
111
+ msg: "Database connection is fully setup"
112
+ }));
89
113
  });
90
114
  });
115
+ return this.connecting;
91
116
  } catch (e) {
92
- this.logger.error(`Database connection error: ${e}`);
117
+ this.logger.error(() => ({
118
+ err: e,
119
+ data: { mongoUrl: this.safeURL },
120
+ msg: "Database connection error"
121
+ }));
93
122
  throw e;
94
123
  }
95
124
  }
96
125
  /** Close connection to the database */
97
126
  async close() {
98
- this.logger.debug(`Closing connection to ${this.safeURL}`);
127
+ this.logger.debug(() => ({
128
+ data: { mongoUrl: this.safeURL },
129
+ msg: "Closing connection"
130
+ }));
99
131
  await this.connection?.close();
100
132
  }
101
133
  }
@@ -4,7 +4,7 @@ const common = require("@prosopo/common");
4
4
  const typesDatabase = require("@prosopo/types-database");
5
5
  require("../base/index.cjs");
6
6
  const mongo = require("../base/mongo.cjs");
7
- const logger = common.getLoggerDefault();
7
+ const logger = common.getLogger("info", module);
8
8
  var TableNames = /* @__PURE__ */ ((TableNames2) => {
9
9
  TableNames2["frictionlessToken"] = "frictionlessToken";
10
10
  TableNames2["session"] = "session";
@@ -64,7 +64,10 @@ class CaptchaDatabase extends mongo.MongoDatabase {
64
64
  };
65
65
  })
66
66
  );
67
- logger.info("Mongo Saved Session Events", result.insertedCount);
67
+ logger.info(() => ({
68
+ data: { insertedCount: result.insertedCount },
69
+ msg: "Mongo Saved Session Events"
70
+ }));
68
71
  }
69
72
  if (imageCaptchaEvents.length) {
70
73
  const result = await this.tables.commitment.bulkWrite(
@@ -79,7 +82,10 @@ class CaptchaDatabase extends mongo.MongoDatabase {
79
82
  };
80
83
  })
81
84
  );
82
- logger.info("Mongo Saved Image Events", result.upsertedCount);
85
+ logger.info(() => ({
86
+ data: { upsertedCount: result.upsertedCount },
87
+ msg: "Mongo Saved Image Events"
88
+ }));
83
89
  }
84
90
  if (powCaptchaEvents.length) {
85
91
  const result = await this.tables.powcaptcha.bulkWrite(
@@ -94,7 +100,10 @@ class CaptchaDatabase extends mongo.MongoDatabase {
94
100
  };
95
101
  })
96
102
  );
97
- logger.info("Mongo Saved PoW Events", result.upsertedCount);
103
+ logger.info(() => ({
104
+ data: { upsertedCount: result.upsertedCount },
105
+ msg: "Mongo Saved PoW Events"
106
+ }));
98
107
  }
99
108
  await this.close();
100
109
  }