@slango/mangusta 1.1.8 → 2.0.0

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,4 +1,4 @@
1
1
 
2
- > @slango/mangusta@1.1.8 build /home/runner/work/slango/slango/packages/mangusta
2
+ > @slango/mangusta@2.0.0 build /home/runner/work/slango/slango/packages/mangusta
3
3
  > tsc -p tsconfig.build.json
4
4
 
@@ -1,4 +1,4 @@
1
1
 
2
- > @slango/mangusta@1.1.8 lint /home/runner/work/slango/slango/packages/mangusta
2
+ > @slango/mangusta@2.0.0 lint /home/runner/work/slango/slango/packages/mangusta
3
3
  > eslint . --max-warnings 0
4
4
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @slango/mangusta@1.1.8 test /home/runner/work/slango/slango/packages/mangusta
2
+ > @slango/mangusta@2.0.0 test /home/runner/work/slango/slango/packages/mangusta
3
3
  > vitest --run
4
4
 
5
5
 
6
-  RUN  v4.0.10 /home/runner/work/slango/slango/packages/mangusta
6
+  RUN  v4.0.13 /home/runner/work/slango/slango/packages/mangusta
7
7
 
8
8
  stdout | src/middleware/tags.spec.ts
9
9
  Downloading MongoDB "7.0.24": 0% (0mb / 81.8mb)
@@ -14,16 +14,16 @@
14
14
  stdout | src/middleware/tags.spec.ts
15
15
  Downloading MongoDB "7.0.24": 100% (0mb / 0mb)
16
16
 
17
- ✓ src/middleware/tags.spec.ts (8 tests) 4424ms
18
- ✓ src/middleware/email.spec.ts (7 tests) 356ms
19
- ✓ src/middleware/owner.spec.ts (6 tests) 324ms
20
- ✓ src/middleware/compactId.spec.ts (6 tests) 6523ms
21
- ✓ src/middleware/reactions.spec.ts (7 tests) 6475ms
22
- ✓ src/middleware/timestamps.spec.ts (3 tests) 493ms
23
- ✓ src/middleware/password.spec.ts (4 tests) 596ms
17
+ ✓ src/middleware/tags.spec.ts (8 tests) 3832ms
18
+ ✓ src/middleware/email.spec.ts (7 tests) 326ms
19
+ ✓ src/middleware/owner.spec.ts (6 tests) 313ms
20
+ ✓ src/middleware/password.spec.ts (4 tests) 638ms
21
+ ✓ src/middleware/reactions.spec.ts (7 tests) 6459ms
22
+ ✓ src/middleware/compactId.spec.ts (6 tests) 6481ms
23
+ ✓ src/middleware/timestamps.spec.ts (3 tests) 322ms
24
24
 
25
25
   Test Files  7 passed (7)
26
26
   Tests  41 passed (41)
27
-  Start at  17:52:52
28
-  Duration  9.07s (transform 834ms, setup 0ms, collect 4.45s, tests 19.19s, environment 3ms, prepare 62ms)
27
+  Start at  09:42:25
28
+  Duration  8.36s (transform 462ms, setup 0ms, collect 4.11s, tests 18.37s, environment 1ms, prepare 55ms)
29
29
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @slango/mangusta
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 8519268: Mongoose bump (verison 9.0.0)
8
+
3
9
  ## 1.1.8
4
10
 
5
11
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/middleware/password.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,YAAY,CACtB,KAAK,SAAS,MAAM,GAAG,UAAU,EACjC,kBAAkB,SAAS,MAAM,GAAG,iBAAiB,IACnD;KACD,GAAG,IAAI,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;CACpE,GAAG;KACD,GAAG,IAAI,KAAK,GAAG,MAAM;CACvB,CAAC;AAEF,eAAO,MAAM,cAAc,QAAoE,CAAC;AAEhG,MAAM,WAAW,yBAAyB,CACxC,KAAK,SAAS,MAAM,GAAG,UAAU,EACjC,kBAAkB,SAAS,MAAM,GAAG,iBAAiB;IAErD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,kBAAkB,EAAE,cAAc,CAAC,yBAAyB,CAqDjE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/middleware/password.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,YAAY,CACtB,KAAK,SAAS,MAAM,GAAG,UAAU,EACjC,kBAAkB,SAAS,MAAM,GAAG,iBAAiB,IACnD;KACD,GAAG,IAAI,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;CACpE,GAAG;KACD,GAAG,IAAI,KAAK,GAAG,MAAM;CACvB,CAAC;AAEF,eAAO,MAAM,cAAc,QAAoE,CAAC;AAEhG,MAAM,WAAW,yBAAyB,CACxC,KAAK,SAAS,MAAM,GAAG,UAAU,EACjC,kBAAkB,SAAS,MAAM,GAAG,iBAAiB;IAErD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,kBAAkB,EAAE,cAAc,CAAC,yBAAyB,CA8CjE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -10,19 +10,11 @@ const passwordMiddleware = (schema, { comparisonFunction = 'comparePassword', do
10
10
  },
11
11
  });
12
12
  schema.add(fieldDescription);
13
- schema.pre('save', async function schemaWithPasswordPreSave(next) {
13
+ schema.pre('save', async function schemaWithPasswordPreSave() {
14
14
  if (!this.isModified(field)) {
15
- return next();
16
- }
17
- try {
18
- this.set(field, await hash(this.get(field), saltingRounds));
19
- next();
20
- }
21
- catch (err) {
22
- if (err instanceof Error) {
23
- next(err);
24
- }
15
+ return;
25
16
  }
17
+ this.set(field, await hash(this.get(field), saltingRounds));
26
18
  });
27
19
  schema.methods[comparisonFunction] = async function comparePassword(candidate) {
28
20
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/middleware/password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AAanD,MAAM,CAAC,MAAM,cAAc,GAAG,iEAAiE,CAAC;AAchG,MAAM,kBAAkB,GAA8C,CAMpE,MAAuC,EACvC,EACE,kBAAkB,GAAG,iBAAuC,EAC5D,mBAAmB,EACnB,KAAK,GAAG,UAAmB,EAC3B,MAAM,GAAG,cAAc,EACvB,QAAQ,GAAG,IAAI,EACf,aAAa,GAAG,EAAE,MACsC,EAAE,EACtD,EAAE;IACR,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAA0C;QAC3E,CAAC,KAAK,CAAC,EAAE;YACP,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM;YACnE,QAAQ;YACR,IAAI,EAAE,MAAM;SACb;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE7B,MAAM,CAAC,GAAG,CAAU,MAAM,EAAE,KAAK,UAAU,yBAAyB,CAAC,IAAI;QAEvE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;YAC9E,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,UAAU,eAAe,CAEjE,SAAiB;QAEjB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAmB,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/middleware/password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AAanD,MAAM,CAAC,MAAM,cAAc,GAAG,iEAAiE,CAAC;AAchG,MAAM,kBAAkB,GAA8C,CAMpE,MAAuC,EACvC,EACE,kBAAkB,GAAG,iBAAuC,EAC5D,mBAAmB,EACnB,KAAK,GAAG,UAAmB,EAC3B,MAAM,GAAG,cAAc,EACvB,QAAQ,GAAG,IAAI,EACf,aAAa,GAAG,EAAE,MACsC,EAAE,EACtD,EAAE;IACR,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAA0C;QAC3E,CAAC,KAAK,CAAC,EAAE;YACP,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM;YACnE,QAAQ;YACR,IAAI,EAAE,MAAM;SACb;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE7B,MAAM,CAAC,GAAG,CAAU,MAAM,EAAE,KAAK,UAAU,yBAAyB;QAElE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAGD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAmB,EAAE,aAAa,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,UAAU,eAAe,CAEjE,SAAiB;QAEjB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAmB,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../src/middleware/reactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../src/middleware/reactions.ts"],"names":[],"mappings":"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"}
@@ -66,49 +66,38 @@ const reactionsMiddleware = (schema, { allowedTypes = defaultReactionTypes, allo
66
66
  }
67
67
  return normalized;
68
68
  };
69
- schema.pre('save', function reactionsPreSave(next) {
70
- try {
71
- const existing = this.get(field) ??
72
- [];
73
- if (!existing.length) {
74
- return next();
69
+ schema.pre('save', function reactionsPreSave() {
70
+ const existing = this.get(field) ?? [];
71
+ if (!existing.length) {
72
+ return;
73
+ }
74
+ const normalizedEntries = [];
75
+ const seenUsers = new Map();
76
+ let modified = false;
77
+ for (const entry of existing) {
78
+ const normalized = normalizeEntry(entry);
79
+ if (!normalized) {
80
+ modified = true;
81
+ continue;
75
82
  }
76
- const normalizedEntries = [];
77
- const seenUsers = new Map();
78
- let modified = false;
79
- for (const entry of existing) {
80
- const normalized = normalizeEntry(entry);
81
- if (!normalized) {
83
+ if (!allowMultiplePerUser) {
84
+ const userKey = normalized[userField].toString();
85
+ const idx = seenUsers.get(userKey);
86
+ if (idx !== undefined) {
87
+ normalizedEntries[idx] = normalized;
82
88
  modified = true;
83
- continue;
84
- }
85
- if (!allowMultiplePerUser) {
86
- const userKey = normalized[userField].toString();
87
- const idx = seenUsers.get(userKey);
88
- if (idx !== undefined) {
89
- normalizedEntries[idx] = normalized;
90
- modified = true;
91
- }
92
- else {
93
- seenUsers.set(userKey, normalizedEntries.length);
94
- normalizedEntries.push(normalized);
95
- }
96
89
  }
97
90
  else {
91
+ seenUsers.set(userKey, normalizedEntries.length);
98
92
  normalizedEntries.push(normalized);
99
93
  }
100
94
  }
101
- if (normalizedEntries.length !== existing.length || modified) {
102
- this.set(field, normalizedEntries);
95
+ else {
96
+ normalizedEntries.push(normalized);
103
97
  }
104
- next();
105
98
  }
106
- catch (err) {
107
- if (err instanceof Error) {
108
- next(err);
109
- return;
110
- }
111
- next(new Error('Unknown error while normalizing reactions.'));
99
+ if (normalizedEntries.length !== existing.length || modified) {
100
+ this.set(field, normalizedEntries);
112
101
  }
113
102
  });
114
103
  schema.methods.addReaction = function addReaction(user, reactionType, timestampValue) {
@@ -1 +1 @@
1
- {"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/middleware/reactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAM,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AA+D5E,MAAM,mBAAmB,GAA+C,CAWtE,MAAuC,EACvC,EACE,YAAY,GAAG,oBAAoB,EACnC,oBAAoB,GAAG,KAAK,EAC5B,KAAK,GAAG,WAAoB,EAC5B,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,IAAI,EAChB,SAAS,GAAG,IAAI,EAChB,cAAc,GAAG,WAA6B,EAC9C,SAAS,GAAG,MAAmB,EAC/B,SAAS,GAAG,MAAmB,EAC/B,OAAO,GAAG,MAAM,MAC2D,EAAE,EACzE,EAAE;IACR,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,yBAAyB,GAAG,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC;IAE3D,MAAM,wBAAwB,GAA4B;QACxD,CAAC,SAAS,CAAC,EAAE;YACX,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,KAAK,CAAC,QAAQ;SACrB;QACD,CAAC,SAAS,CAAC,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,MAAM;YACZ,GAAG,CAAC,yBAAyB,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACxE;KACF,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAI,MAAM,CACnC,wBAAwB,EACxB;QACE,GAAG,EAAE,KAAK;QACV,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK;KAChF,CACF,CAAC;IAEF,MAAM,CAAC,GAAG,CACR,IAAI,MAAM,CAA6D;QACrE,CAAC,KAAK,CAAC,EAAE;YACP,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,CAAC,kBAAkB,CAAC;SAC3B;KACF,CAAC,CACH,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,iBAAiB,GAAG,CAAC,YAAoB,EAAQ,EAAE;QACvD,IAAI,yBAAyB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,kBAAkB,YAAY,qBAAqB,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CACrB,KAA0D,EACE,EAAE;QAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QAEnC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,UAAU,GAAwD;YACtE,GAAG,KAAK;YACR,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC;YAClC,CAAC,SAAS,CAAC,EAAE,SAAS;SACgC,CAAC;QAEzD,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAY,CAAC;QAEtD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,YAAY,YAAY,IAAI,EAAE,CAAC;gBACjC,UAAU,CAAC,cAAc,CAAC,GAAG,YAIZ,CAAC;YACpB,CAAC;iBAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBACtC,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI,IAAI,EAIpB,CAAC;YACpB,CAAC;iBAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAChF,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAIjC,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,OAAQ,UAAsC,CAAC,cAAc,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,CAAU,MAAM,EAAE,SAAS,gBAAgB,CAAC,IAAI;QACxD,IAAI,CAAC;YACH,MAAM,QAAQ,GACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAuE;gBACtF,EAAE,CAAC;YAEL,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,MAAM,iBAAiB,GAA0D,EAAE,CAAC;YACpF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,QAAQ,GAAG,IAAI,CAAC;oBAChB,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACjD,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAEnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;wBACtB,iBAAiB,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;wBACpC,QAAQ,GAAG,IAAI,CAAC;oBAClB,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;wBACjD,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YAED,IAAI,iBAAiB,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,WAAW,CAE/C,IAAQ,EACR,YAAoB,EACpB,cAAqB;QAErB,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAA2D,IAAI,EAAE,CACjF;aACE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACrC,MAAM,CACL,CAAC,KAAK,EAAgE,EAAE,CAAC,KAAK,KAAK,IAAI,CACxF,CAAC;QAEJ,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CACvC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,OAAO,CACpD,CAAC;YAEF,MAAM,QAAQ,GAAwD;gBACpE,CAAC,SAAS,CAAC,EAAE,MAAM;gBACnB,CAAC,SAAS,CAAC,EAAE,YAAY;aAC6B,CAAC;YAEzD,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,IAAI,EAAE,CAIvC,CAAC;YACpB,CAAC;YAED,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YAED,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAwD;gBACpE,CAAC,SAAS,CAAC,EAAE,MAAM;gBACnB,CAAC,SAAS,CAAC,EAAE,YAAY;aAC6B,CAAC;YAEzD,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,IAAI,EAAE,CAIvC,CAAC;YACpB,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,SAAS,cAAc,CAErD,IAAQ,EACR,YAAqB;QAErB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,SAAS,GACZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAuE,IAAI,EAAE,CAAC;QAE/F,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC;YAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,WAAW,CAE/C,IAAQ,EACR,YAAqB;QAErB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,SAAS,GACZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAuE,IAAI,EAAE,CAAC;QAE/F,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;gBAC7C,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC;YAC3C,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,SAAS,cAAc,CAErD,YAAqB;QAErB,MAAM,SAAS,GACZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAuE,IAAI,EAAE,CAAC;QAE/F,IAAI,YAAY,EAAE,CAAC;YACjB,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAChC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;QAC/E,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9B,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACjE,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC;YACvB,OAAO,WAAW,CAAC;QACrB,CAAC,EACD,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAC1B,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/middleware/reactions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/middleware/tags.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,qBAAqB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;CACxC;AAED,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI;KACnD,GAAG,IAAI,KAAK,GAAG,MAAM,EAAE;CACzB,CAAC;AAEF,QAAA,MAAM,cAAc,EAAE,cAAc,CAAC,qBAAqB,CAsCzD,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/middleware/tags.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,qBAAqB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;CACxC;AAED,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI;KACnD,GAAG,IAAI,KAAK,GAAG,MAAM,EAAE;CACzB,CAAC;AAEF,QAAA,MAAM,cAAc,EAAE,cAAc,CAAC,qBAAqB,CAoCzD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -15,12 +15,11 @@ const tagsMiddleware = (schema, { field = 'tags', index = false, unique = true,
15
15
  if (index) {
16
16
  schema.index({ [field]: index });
17
17
  }
18
- schema.pre('save', function schemaWithTagsPreSave(next) {
18
+ schema.pre('save', function schemaWithTagsPreSave() {
19
19
  const tags = this.get(field);
20
20
  if (unique && tags) {
21
21
  this.set(field, Array.from(new Set(tags)));
22
22
  }
23
- next();
24
23
  });
25
24
  };
26
25
  export default tagsMiddleware;
@@ -1 +1 @@
1
- {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/middleware/tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AAenD,MAAM,cAAc,GAA0C,CAI5D,MAAuC,EACvC,EACE,KAAK,GAAG,MAAe,EACvB,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,IAAI,EACb,QAAQ,MACwB,EAAE,EAC9B,EAAE;IACR,MAAM,UAAU,GAAG,IAAI,MAAM,CAAkB;QAC7C,CAAC,KAAK,CAAC,EAAE;YACP,IAAI,EAAE,CAAC,MAAM,CAAC;YACd,GAAG,CAAC,QAAQ,IAAI;gBACd,QAAQ,EAAE;oBACR,OAAO,EAAE,gCAAgC;oBACzC,SAAS,EAAE,CAAC,IAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;iBAC9C;aACF,CAAC;SACH;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEvB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,GAAG,CAAU,MAAM,EAAE,SAAS,qBAAqB,CAAC,IAAI;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAmB,CAAC;QAC/C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/middleware/tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AAenD,MAAM,cAAc,GAA0C,CAI5D,MAAuC,EACvC,EACE,KAAK,GAAG,MAAe,EACvB,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,IAAI,EACb,QAAQ,MACwB,EAAE,EAC9B,EAAE;IACR,MAAM,UAAU,GAAG,IAAI,MAAM,CAAkB;QAC7C,CAAC,KAAK,CAAC,EAAE;YACP,IAAI,EAAE,CAAC,MAAM,CAAC;YACd,GAAG,CAAC,QAAQ,IAAI;gBACd,QAAQ,EAAE;oBACR,OAAO,EAAE,gCAAgC;oBACzC,SAAS,EAAE,CAAC,IAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;iBAC9C;aACF,CAAC;SACH;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEvB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,GAAG,CAAU,MAAM,EAAE,SAAS,qBAAqB;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAmB,CAAC;QAC/C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"timestamps.d.ts","sourceRoot":"","sources":["../../src/middleware/timestamps.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,MAAM,GAAG,SAAS,IAAI;KAAG,GAAG,IAAI,KAAK,GAAG,IAAI;CAAE,CAAC;AAErF,MAAM,MAAM,cAAc,CACxB,OAAO,SAAS,MAAM,GAAG,SAAS,EAClC,OAAO,SAAS,MAAM,GAAG,SAAS,IAChC,WAAW,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhD,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,MAAM,GAAG,SAAS,IAAI;KAAG,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI;CAAE,CAAC;AAEtF,QAAA,MAAM,oBAAoB,EAAE,cAAc,CAAC,2BAA2B,CA0ErE,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"timestamps.d.ts","sourceRoot":"","sources":["../../src/middleware/timestamps.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,MAAM,GAAG,SAAS,IAAI;KAAG,GAAG,IAAI,KAAK,GAAG,IAAI;CAAE,CAAC;AAErF,MAAM,MAAM,cAAc,CACxB,OAAO,SAAS,MAAM,GAAG,SAAS,EAClC,OAAO,SAAS,MAAM,GAAG,SAAS,IAChC,WAAW,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhD,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,MAAM,GAAG,SAAS,IAAI;KAAG,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI;CAAE,CAAC;AAEtF,QAAA,MAAM,oBAAoB,EAAE,cAAc,CAAC,2BAA2B,CAkErE,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -10,27 +10,19 @@ const timestampsMiddleware = (schema, { creation = true, creationField = 'create
10
10
  [updateField]: Date,
11
11
  }));
12
12
  }
13
- schema.pre('save', function schemaWithTimestampsPreSave(next) {
14
- try {
15
- const now = new Date();
16
- if (creation && this.isNew && !this.get(creationField)) {
17
- this.set(creationField, now);
18
- }
19
- if (update) {
20
- if (this.isNew) {
21
- if (updateTimestampOnCreation) {
22
- this.set(updateField, now);
23
- }
24
- }
25
- else {
13
+ schema.pre('save', function schemaWithTimestampsPreSave() {
14
+ const now = new Date();
15
+ if (creation && this.isNew && !this.get(creationField)) {
16
+ this.set(creationField, now);
17
+ }
18
+ if (update) {
19
+ if (this.isNew) {
20
+ if (updateTimestampOnCreation) {
26
21
  this.set(updateField, now);
27
22
  }
28
23
  }
29
- next();
30
- }
31
- catch (err) {
32
- if (err instanceof Error) {
33
- next(err);
24
+ else {
25
+ this.set(updateField, now);
34
26
  }
35
27
  }
36
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../../src/middleware/timestamps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AAuBnD,MAAM,oBAAoB,GAAgD,CAMxE,MAAuC,EACvC,EACE,QAAQ,GAAG,IAAI,EACf,aAAa,GAAG,SAAoB,EACpC,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,KAAK,EACnB,MAAM,GAAG,IAAI,EACb,WAAW,GAAG,SAAoB,EAClC,yBAAyB,GAAG,KAAK,MACF,EAAE,EAC7B,EAAE;IACR,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,CACR,IAAI,MAAM,CAAuB;YAC/B,CAAC,aAAa,CAAC,EAAE,IAAI;SACtB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CACR,IAAI,MAAM,CAAuB;YAC/B,CAAC,WAAW,CAAC,EAAE,IAAI;SACpB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,2BAA2B,CAAC,IAAI;QAC1D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YAEvB,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,yBAAyB,EAAE,CAAC;wBAC9B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBAC7B,CAAC;gBAEH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,SAAS,6BAA6B;YAElF,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../../src/middleware/timestamps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AAuBnD,MAAM,oBAAoB,GAAgD,CAMxE,MAAuC,EACvC,EACE,QAAQ,GAAG,IAAI,EACf,aAAa,GAAG,SAAoB,EACpC,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,KAAK,EACnB,MAAM,GAAG,IAAI,EACb,WAAW,GAAG,SAAoB,EAClC,yBAAyB,GAAG,KAAK,MACF,EAAE,EAC7B,EAAE;IACR,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,CACR,IAAI,MAAM,CAAuB;YAC/B,CAAC,aAAa,CAAC,EAAE,IAAI;SACtB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CACR,IAAI,MAAM,CAAuB;YAC/B,CAAC,WAAW,CAAC,EAAE,IAAI;SACpB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,CAAU,MAAM,EAAE,SAAS,2BAA2B;QAC9D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,yBAAyB,EAAE,CAAC;oBAC9B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;gBAC7B,CAAC;YAEH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,SAAS,6BAA6B;YAElF,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slango/mangusta",
3
- "version": "1.1.8",
3
+ "version": "2.0.0",
4
4
  "private": false,
5
5
  "description": "Mongoose middlewares and utilities",
6
6
  "type": "module",
@@ -15,19 +15,19 @@
15
15
  "nanoid": "5.1.6"
16
16
  },
17
17
  "peerDependencies": {
18
- "mongoose": "^8.20.0"
18
+ "mongoose": "^9.0.0"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/bcrypt": "6.0.0",
22
- "@vitest/coverage-v8": "4.0.10",
23
- "@vitest/ui": "4.0.10",
22
+ "@vitest/coverage-v8": "4.0.13",
23
+ "@vitest/ui": "4.0.13",
24
24
  "eslint": "9.39.1",
25
- "mongoose": "8.20.0",
25
+ "mongoose": "9.0.0",
26
26
  "typescript": "5.9.3",
27
- "vitest": "4.0.10",
27
+ "vitest": "4.0.13",
28
28
  "@slango.configs/eslint": "1.1.29",
29
29
  "@slango.configs/typescript": "1.0.7",
30
- "@slango.configs/vitest": "1.0.45"
30
+ "@slango.configs/vitest": "1.0.46"
31
31
  },
32
32
  "scripts": {
33
33
  "build": "tsc -p tsconfig.build.json",
@@ -1,7 +1,8 @@
1
1
  import { setupMongoTestEnvironment } from '@slango.configs/vitest/helpers/mongooseTestEnvironment';
2
- import mongoose, { Document, model, Schema } from 'mongoose';
2
+ import { Document } from 'mongoose';
3
3
  import { describe, expect, it } from 'vitest';
4
4
 
5
+ import { createModelWithPlugin } from '../test-utils/model.js';
5
6
  import { PluginFunction } from '../types.js';
6
7
  import compactIdMiddleware, { CompactIdMiddlewareOptions, WithCompactId } from './compactId.js';
7
8
 
@@ -11,29 +12,16 @@ type TestDoc<Field extends string = 'shortId'> = Document & WithCompactId<Field>
11
12
 
12
13
  const createTestModel = <Field extends string = 'shortId'>(
13
14
  options?: CompactIdMiddlewareOptions<Field>,
14
- ) => {
15
- const modelName = 'TestDoc';
16
-
17
- if (mongoose.models[modelName]) {
18
- delete mongoose.models[modelName];
19
- }
20
-
21
- const TestSchema = new Schema<TestDoc<Field>>({});
22
- if (options) {
23
- TestSchema.plugin(
24
- compactIdMiddleware as PluginFunction<CompactIdMiddlewareOptions<Field>>,
25
- options,
26
- );
27
- } else {
28
- TestSchema.plugin(compactIdMiddleware);
29
- }
30
-
31
- return model<TestDoc<Field>>(modelName, TestSchema);
32
- };
15
+ ) =>
16
+ createModelWithPlugin<TestDoc<Field>, CompactIdMiddlewareOptions<Field>>({
17
+ modelName: 'TestDoc',
18
+ plugin: compactIdMiddleware as PluginFunction<CompactIdMiddlewareOptions<Field>>,
19
+ pluginOptions: options,
20
+ });
33
21
 
34
22
  describe('compactIdMiddleware', () => {
35
23
  it('should add a "shortId" field by default with correct options', async () => {
36
- const TestModel = createTestModel();
24
+ const { model: TestModel } = createTestModel();
37
25
  const doc = new TestModel();
38
26
 
39
27
  await expect(doc.save()).resolves.not.toThrow();
@@ -44,7 +32,7 @@ describe('compactIdMiddleware', () => {
44
32
  });
45
33
 
46
34
  it('should generate a compactId of specified length', async () => {
47
- const TestModel = createTestModel({ length: 12 });
35
+ const { model: TestModel } = createTestModel({ length: 12 });
48
36
  const doc = new TestModel();
49
37
 
50
38
  await expect(doc.save()).resolves.not.toThrow();
@@ -53,7 +41,7 @@ describe('compactIdMiddleware', () => {
53
41
  });
54
42
 
55
43
  it('should allow configuring the field name', async () => {
56
- const TestModel = createTestModel<'customId'>({ field: 'customId' });
44
+ const { model: TestModel } = createTestModel<'customId'>({ field: 'customId' });
57
45
  const doc = new TestModel();
58
46
 
59
47
  await expect(doc.save()).resolves.not.toThrow();
@@ -63,8 +51,8 @@ describe('compactIdMiddleware', () => {
63
51
  });
64
52
 
65
53
  it('should not generate "index" if not requested', () => {
66
- const TestModel = createTestModel({ index: false });
67
- const indexes = TestModel.schema.indexes();
54
+ const { schema } = createTestModel({ index: false });
55
+ const indexes = schema.indexes();
68
56
  const customIdIndex = indexes.find(([fields]) =>
69
57
  Object.prototype.hasOwnProperty.call(fields, 'shortId'),
70
58
  );
@@ -73,26 +61,28 @@ describe('compactIdMiddleware', () => {
73
61
  });
74
62
 
75
63
  it('should apply "index" and not "unique" options to the field', () => {
76
- const TestModel = createTestModel({ index: true, unique: false });
77
- const indexes = TestModel.schema.indexes();
64
+ const { schema } = createTestModel({ index: true, unique: false });
65
+ const indexes = schema.indexes();
78
66
  const customIdIndex = indexes.find(([fields]) =>
79
67
  Object.prototype.hasOwnProperty.call(fields, 'shortId'),
80
68
  );
81
69
 
82
70
  expect(customIdIndex).toBeDefined();
83
71
  expect(customIdIndex![0].shortId).toBe(1);
84
- expect(customIdIndex![1].unique).toBe(false);
72
+ const uniqueOption = customIdIndex?.[1]?.unique;
73
+ expect(uniqueOption).toBe(false);
85
74
  });
86
75
 
87
76
  it('should apply "unique" and "unique" options to the field', () => {
88
- const TestModel = createTestModel({ index: true, unique: true });
89
- const indexes = TestModel.schema.indexes();
77
+ const { schema } = createTestModel({ index: true, unique: true });
78
+ const indexes = schema.indexes();
90
79
  const customIdIndex = indexes.find(([fields]) =>
91
80
  Object.prototype.hasOwnProperty.call(fields, 'shortId'),
92
81
  );
93
82
 
94
83
  expect(customIdIndex).toBeDefined();
95
84
  expect(customIdIndex![0].shortId).toBe(1);
96
- expect(customIdIndex![1].unique).toBe(true);
85
+ const uniqueOption = customIdIndex?.[1]?.unique;
86
+ expect(uniqueOption).toBe(true);
97
87
  });
98
88
  });
@@ -1,7 +1,8 @@
1
1
  import { setupMongoTestEnvironment } from '@slango.configs/vitest/helpers/mongooseTestEnvironment';
2
- import mongoose, { Document, model, Schema, Types } from 'mongoose';
2
+ import mongoose, { Document, Types } from 'mongoose';
3
3
  import { describe, expect, it } from 'vitest';
4
4
 
5
+ import { createModelWithPlugin } from '../test-utils/model.js';
5
6
  import { PluginFunction } from '../types.js';
6
7
  import ownerMiddleware, { OwnerMiddlewareOptions, WithOwner } from './owner.js';
7
8
 
@@ -10,28 +11,16 @@ setupMongoTestEnvironment();
10
11
  type TestDoc<Field extends string = 'user'> = Document<Types.ObjectId> &
11
12
  WithOwner<Types.ObjectId, Field>;
12
13
 
13
- const createTestModel = <Field extends string = 'user'>(
14
- options?: OwnerMiddlewareOptions<Field>,
15
- ) => {
16
- const modelName = 'TestDoc';
17
-
18
- if (mongoose.models[modelName]) {
19
- delete mongoose.models[modelName];
20
- }
21
-
22
- const TestSchema = new Schema<TestDoc<Field>>({});
23
- if (options) {
24
- TestSchema.plugin(ownerMiddleware as PluginFunction<OwnerMiddlewareOptions<Field>>, options);
25
- } else {
26
- TestSchema.plugin(ownerMiddleware);
27
- }
28
-
29
- return model<TestDoc<Field>>(modelName, TestSchema);
30
- };
14
+ const createTestModel = <Field extends string = 'user'>(options?: OwnerMiddlewareOptions<Field>) =>
15
+ createModelWithPlugin<TestDoc<Field>, OwnerMiddlewareOptions<Field>>({
16
+ modelName: 'TestDoc',
17
+ plugin: ownerMiddleware as PluginFunction<OwnerMiddlewareOptions<Field>>,
18
+ pluginOptions: options,
19
+ });
31
20
 
32
21
  describe('ownerMiddleware', () => {
33
22
  it('should add a "user" field by default with correct options', async () => {
34
- const TestModel = createTestModel();
23
+ const { model: TestModel } = createTestModel();
35
24
  const doc = new TestModel({ user: new Types.ObjectId() });
36
25
 
37
26
  await expect(doc.save()).resolves.not.toThrow();
@@ -41,14 +30,14 @@ describe('ownerMiddleware', () => {
41
30
  });
42
31
 
43
32
  it('should not allow saving without user field if required', async () => {
44
- const TestModel = createTestModel();
33
+ const { model: TestModel } = createTestModel();
45
34
  const doc = new TestModel({});
46
35
 
47
36
  await expect(doc.save()).rejects.toThrowError(mongoose.Error.ValidationError);
48
37
  });
49
38
 
50
39
  it('should allow configuring the field name', async () => {
51
- const TestModel = createTestModel<'owner'>({ field: 'owner' });
40
+ const { model: TestModel } = createTestModel<'owner'>({ field: 'owner' });
52
41
  const doc = new TestModel({ owner: new Types.ObjectId() });
53
42
 
54
43
  await expect(doc.save()).resolves.not.toThrow();
@@ -59,7 +48,7 @@ describe('ownerMiddleware', () => {
59
48
  });
60
49
 
61
50
  it('should allow optional "user" field if "required" is set to false', async () => {
62
- const TestModel = createTestModel({ required: false });
51
+ const { model: TestModel } = createTestModel({ required: false });
63
52
  const doc = new TestModel({});
64
53
 
65
54
  await expect(doc.save()).resolves.not.toThrow();
@@ -69,8 +58,8 @@ describe('ownerMiddleware', () => {
69
58
  });
70
59
 
71
60
  it('should apply "index" option to the field', () => {
72
- const TestModel = createTestModel({ index: true });
73
- const indexes = TestModel.schema.indexes();
61
+ const { schema } = createTestModel({ index: true });
62
+ const indexes = schema.indexes();
74
63
  const userIndex = indexes.find(([fields]) =>
75
64
  Object.prototype.hasOwnProperty.call(fields, 'user'),
76
65
  );
@@ -80,8 +69,8 @@ describe('ownerMiddleware', () => {
80
69
  });
81
70
 
82
71
  it('should reference the specified model in "ref"', () => {
83
- const TestModel = createTestModel({ ref: 'CustomUser' });
84
- const refField = TestModel.schema.path('user');
72
+ const { schema } = createTestModel({ ref: 'CustomUser' });
73
+ const refField = schema.path('user');
85
74
 
86
75
  expect(refField.options.ref).toBe('CustomUser');
87
76
  });
@@ -52,21 +52,14 @@ const passwordMiddleware: PluginFunction<PasswordMiddlewareOptions> = <
52
52
 
53
53
  schema.add(fieldDescription);
54
54
 
55
- schema.pre<DocType>('save', async function schemaWithPasswordPreSave(next) {
55
+ schema.pre<DocType>('save', async function schemaWithPasswordPreSave(this: DocType) {
56
56
  // only hash the password if it has been modified (or is new)
57
57
  if (!this.isModified(field)) {
58
- return next();
58
+ return;
59
59
  }
60
60
 
61
- try {
62
- // generate a hash and override the clear text password with the hashed one
63
- this.set(field, await hash(this.get(field) as DocType[Field], saltingRounds));
64
- next();
65
- } catch (err) {
66
- if (err instanceof Error) {
67
- next(err);
68
- }
69
- }
61
+ // generate a hash and override the clear text password with the hashed one
62
+ this.set(field, await hash(this.get(field) as DocType[Field], saltingRounds));
70
63
  });
71
64
 
72
65
  schema.methods[comparisonFunction] = async function comparePassword(