@prosopo/database 0.2.29 → 0.2.33

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.
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const common = require("@prosopo/common");
3
4
  const mongoose = require("mongoose");
5
+ const logger = common.getLoggerDefault();
6
+ const MAX_RETRIES = 3;
4
7
  const captchaEventSchema = new mongoose.Schema({
5
8
  touchEvents: [
6
9
  {
@@ -20,28 +23,51 @@ const captchaEventSchema = new mongoose.Schema({
20
23
  {
21
24
  key: String,
22
25
  timestamp: Number,
23
- isShiftKey: Boolean,
24
- isCtrlKey: Boolean
26
+ isShiftKey: { type: Boolean, required: false },
27
+ isCtrlKey: { type: Boolean, required: false }
25
28
  }
26
29
  ],
27
30
  accountId: String
28
31
  });
29
- const CaptchaEvent = mongoose.model("CaptchaEvent", captchaEventSchema);
32
+ let CaptchaEvent;
33
+ try {
34
+ CaptchaEvent = mongoose.model("CaptchaEvent");
35
+ } catch (error) {
36
+ CaptchaEvent = mongoose.model("CaptchaEvent", captchaEventSchema);
37
+ }
30
38
  const addCaptchaEventRecord = async (record) => {
31
39
  try {
32
40
  const newRecord = new CaptchaEvent(record);
33
41
  await newRecord.save();
34
- console.log("Record added successfully");
42
+ logger.info("Record added successfully");
35
43
  } catch (error) {
36
- console.error("Error adding record to the database:", error);
44
+ logger.error("Error adding record to the database:", error);
37
45
  }
38
46
  };
39
47
  const saveCaptchaEvent = async (events, accountId, atlasUri) => {
40
- await mongoose.connect(atlasUri).then(() => console.log("Connected to MongoDB Atlas")).catch((err) => console.error("Error connecting to MongoDB:", err));
41
- const captchaEventData = {
42
- ...events,
43
- accountId
44
- };
45
- addCaptchaEventRecord(captchaEventData).then(() => console.log("Captcha event data saved")).catch((error) => console.error("Error saving captcha event data:", error));
48
+ return new Promise((resolve, reject) => {
49
+ const connection = mongoose.createConnection(atlasUri);
50
+ for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
51
+ connection.once("open", resolve).on("error", (e) => {
52
+ logger.warn(`Mongoose connection error`);
53
+ logger.error(e);
54
+ if (attempt === MAX_RETRIES) {
55
+ reject(
56
+ new common.ProsopoDBError("DATABASE.CONNECT_ERROR", {
57
+ context: { failedFuncName: saveCaptchaEvent.name, db: "events database" },
58
+ logger
59
+ })
60
+ );
61
+ } else {
62
+ connection == null ? void 0 : connection.removeAllListeners("error");
63
+ }
64
+ });
65
+ }
66
+ const captchaEventData = {
67
+ ...events,
68
+ accountId
69
+ };
70
+ addCaptchaEventRecord(captchaEventData).then(() => logger.info("Captcha event data saved")).catch((error) => logger.error("Error saving captcha event data:", error)).finally(() => connection.close());
71
+ });
46
72
  };
47
73
  exports.saveCaptchaEvent = saveCaptchaEvent;
@@ -1,3 +1,3 @@
1
1
  import { StoredEvents } from '@prosopo/types';
2
- export declare const saveCaptchaEvent: (events: StoredEvents, accountId: string, atlasUri: string) => Promise<void>;
2
+ export declare const saveCaptchaEvent: (events: StoredEvents, accountId: string, atlasUri: string) => Promise<unknown>;
3
3
  //# sourceMappingURL=eventsDatabase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventsDatabase.d.ts","sourceRoot":"","sources":["../../src/eventsDatabase/eventsDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AA8C7C,eAAO,MAAM,gBAAgB,WAAkB,YAAY,aAAa,MAAM,YAAY,MAAM,kBAc/F,CAAA"}
1
+ {"version":3,"file":"eventsDatabase.d.ts","sourceRoot":"","sources":["../../src/eventsDatabase/eventsDatabase.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AA+ChE,eAAO,MAAM,gBAAgB,WAAkB,YAAY,aAAa,MAAM,YAAY,MAAM,qBAiC/F,CAAA"}
@@ -1,4 +1,7 @@
1
+ import { ProsopoDBError, getLoggerDefault } from '@prosopo/common';
1
2
  import mongoose from 'mongoose';
3
+ const logger = getLoggerDefault();
4
+ const MAX_RETRIES = 3;
2
5
  const captchaEventSchema = new mongoose.Schema({
3
6
  touchEvents: [
4
7
  {
@@ -18,34 +21,55 @@ const captchaEventSchema = new mongoose.Schema({
18
21
  {
19
22
  key: String,
20
23
  timestamp: Number,
21
- isShiftKey: Boolean,
22
- isCtrlKey: Boolean,
24
+ isShiftKey: { type: Boolean, required: false },
25
+ isCtrlKey: { type: Boolean, required: false },
23
26
  },
24
27
  ],
25
28
  accountId: String,
26
29
  });
27
- const CaptchaEvent = mongoose.model('CaptchaEvent', captchaEventSchema);
30
+ let CaptchaEvent;
31
+ try {
32
+ CaptchaEvent = mongoose.model('CaptchaEvent');
33
+ }
34
+ catch (error) {
35
+ CaptchaEvent = mongoose.model('CaptchaEvent', captchaEventSchema);
36
+ }
28
37
  const addCaptchaEventRecord = async (record) => {
29
38
  try {
30
39
  const newRecord = new CaptchaEvent(record);
31
40
  await newRecord.save();
32
- console.log('Record added successfully');
41
+ logger.info('Record added successfully');
33
42
  }
34
43
  catch (error) {
35
- console.error('Error adding record to the database:', error);
44
+ logger.error('Error adding record to the database:', error);
36
45
  }
37
46
  };
38
47
  export const saveCaptchaEvent = async (events, accountId, atlasUri) => {
39
- await mongoose
40
- .connect(atlasUri)
41
- .then(() => console.log('Connected to MongoDB Atlas'))
42
- .catch((err) => console.error('Error connecting to MongoDB:', err));
43
- const captchaEventData = {
44
- ...events,
45
- accountId,
46
- };
47
- addCaptchaEventRecord(captchaEventData)
48
- .then(() => console.log('Captcha event data saved'))
49
- .catch((error) => console.error('Error saving captcha event data:', error));
48
+ return new Promise((resolve, reject) => {
49
+ const connection = mongoose.createConnection(atlasUri);
50
+ for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
51
+ connection.once('open', resolve).on('error', (e) => {
52
+ logger.warn(`Mongoose connection error`);
53
+ logger.error(e);
54
+ if (attempt === MAX_RETRIES) {
55
+ reject(new ProsopoDBError('DATABASE.CONNECT_ERROR', {
56
+ context: { failedFuncName: saveCaptchaEvent.name, db: 'events database' },
57
+ logger: logger,
58
+ }));
59
+ }
60
+ else {
61
+ connection?.removeAllListeners('error');
62
+ }
63
+ });
64
+ }
65
+ const captchaEventData = {
66
+ ...events,
67
+ accountId,
68
+ };
69
+ addCaptchaEventRecord(captchaEventData)
70
+ .then(() => logger.info('Captcha event data saved'))
71
+ .catch((error) => logger.error('Error saving captcha event data:', error))
72
+ .finally(() => connection.close());
73
+ });
50
74
  };
51
75
  //# sourceMappingURL=eventsDatabase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventsDatabase.js","sourceRoot":"","sources":["../../src/eventsDatabase/eventsDatabase.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,MAAM,kBAAkB,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC;IAC3C,WAAW,EAAE;QACT;YACI,CAAC,EAAE,MAAM;YACT,CAAC,EAAE,MAAM;YACT,SAAS,EAAE,MAAM;SACpB;KACJ;IACD,WAAW,EAAE;QACT;YACI,CAAC,EAAE,MAAM;YACT,CAAC,EAAE,MAAM;YACT,SAAS,EAAE,MAAM;SACpB;KACJ;IACD,cAAc,EAAE;QACZ;YACI,GAAG,EAAE,MAAM;YACX,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,OAAO;SACrB;KACJ;IACD,SAAS,EAAE,MAAM;CACpB,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAA;AAEvE,MAAM,qBAAqB,GAAG,KAAK,EAAE,MAKpC,EAAiB,EAAE;IAChB,IAAI;QACA,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;QACtB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;KAC3C;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAA;KAC/D;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAoB,EAAE,SAAiB,EAAE,QAAgB,EAAE,EAAE;IAChG,MAAM,QAAQ;SACT,OAAO,CAAC,QAAQ,CAAC;SACjB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;SACrD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC,CAAA;IAEvE,MAAM,gBAAgB,GAAG;QACrB,GAAG,MAAM;QACT,SAAS;KACZ,CAAA;IAED,qBAAqB,CAAC,gBAAgB,CAAC;SAClC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;SACnD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC,CAAA;AACnF,CAAC,CAAA"}
1
+ {"version":3,"file":"eventsDatabase.js","sourceRoot":"","sources":["../../src/eventsDatabase/eventsDatabase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/database",
3
- "version": "0.2.29",
3
+ "version": "0.2.33",
4
4
  "description": "Prosopo database plugins for provider",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -37,11 +37,11 @@
37
37
  "homepage": "https://github.com/prosopo/captcha#readme",
38
38
  "dependencies": {
39
39
  "@polkadot/util": "^12.5.1",
40
- "@prosopo/captcha-contract": "0.2.29",
41
- "@prosopo/common": "0.2.29",
42
- "@prosopo/config": "0.2.29",
43
- "@prosopo/types": "0.2.29",
44
- "@prosopo/types-database": "0.2.29",
40
+ "@prosopo/captcha-contract": "0.2.33",
41
+ "@prosopo/common": "0.2.33",
42
+ "@prosopo/config": "0.2.33",
43
+ "@prosopo/types": "0.2.33",
44
+ "@prosopo/types-database": "0.2.33",
45
45
  "mongodb": "5.8.0",
46
46
  "mongodb-memory-server": "^8.7.2",
47
47
  "mongoose": "^7.3.3"