@slango/mangusta 2.1.38 → 2.1.40

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/package.json +7 -7
  3. package/.turbo/turbo-build.log +0 -1
  4. package/.turbo/turbo-lint.log +0 -1
  5. package/.turbo/turbo-test.log +0 -26
  6. package/dist/helpers.d.ts +0 -5
  7. package/dist/helpers.d.ts.map +0 -1
  8. package/dist/helpers.js +0 -9
  9. package/dist/helpers.js.map +0 -1
  10. package/dist/middleware/compactId.d.ts +0 -13
  11. package/dist/middleware/compactId.d.ts.map +0 -1
  12. package/dist/middleware/compactId.js +0 -16
  13. package/dist/middleware/compactId.js.map +0 -1
  14. package/dist/middleware/email.d.ts +0 -18
  15. package/dist/middleware/email.d.ts.map +0 -1
  16. package/dist/middleware/email.js +0 -17
  17. package/dist/middleware/email.js.map +0 -1
  18. package/dist/middleware/owner.d.ts +0 -14
  19. package/dist/middleware/owner.d.ts.map +0 -1
  20. package/dist/middleware/owner.js +0 -14
  21. package/dist/middleware/owner.js.map +0 -1
  22. package/dist/middleware/password.d.ts +0 -18
  23. package/dist/middleware/password.d.ts.map +0 -1
  24. package/dist/middleware/password.js +0 -29
  25. package/dist/middleware/password.js.map +0 -1
  26. package/dist/middleware/reactions.d.ts +0 -43
  27. package/dist/middleware/reactions.d.ts.map +0 -1
  28. package/dist/middleware/reactions.js +0 -190
  29. package/dist/middleware/reactions.js.map +0 -1
  30. package/dist/middleware/tags.d.ts +0 -13
  31. package/dist/middleware/tags.d.ts.map +0 -1
  32. package/dist/middleware/tags.js +0 -26
  33. package/dist/middleware/tags.js.map +0 -1
  34. package/dist/middleware/timestamps.d.ts +0 -20
  35. package/dist/middleware/timestamps.d.ts.map +0 -1
  36. package/dist/middleware/timestamps.js +0 -42
  37. package/dist/middleware/timestamps.js.map +0 -1
  38. package/dist/test-utils/globalSetup.d.ts +0 -4
  39. package/dist/test-utils/globalSetup.d.ts.map +0 -1
  40. package/dist/test-utils/globalSetup.js +0 -15
  41. package/dist/test-utils/globalSetup.js.map +0 -1
  42. package/dist/test-utils/model.d.ts +0 -13
  43. package/dist/test-utils/model.d.ts.map +0 -1
  44. package/dist/test-utils/model.js +0 -11
  45. package/dist/test-utils/model.js.map +0 -1
  46. package/dist/test-utils/mongooseTestEnvironment.d.ts +0 -6
  47. package/dist/test-utils/mongooseTestEnvironment.d.ts.map +0 -1
  48. package/dist/test-utils/mongooseTestEnvironment.js +0 -40
  49. package/dist/test-utils/mongooseTestEnvironment.js.map +0 -1
  50. package/dist/test-utils/testMongoUri.d.ts +0 -4
  51. package/dist/test-utils/testMongoUri.d.ts.map +0 -1
  52. package/dist/test-utils/testMongoUri.js +0 -14
  53. package/dist/test-utils/testMongoUri.js.map +0 -1
  54. package/dist/types.d.ts +0 -3
  55. package/dist/types.d.ts.map +0 -1
  56. package/dist/types.js +0 -2
  57. package/dist/types.js.map +0 -1
  58. package/tsconfig.build.tsbuildinfo +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @slango/mangusta
2
2
 
3
+ ## 2.1.40
4
+
5
+ ### Patch Changes
6
+
7
+ - 7d321c6: Dependencies bump
8
+
9
+ ## 2.1.39
10
+
11
+ ### Patch Changes
12
+
13
+ - 83f12c6: Dependencies bump
14
+
3
15
  ## 2.1.38
4
16
 
5
17
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slango/mangusta",
3
- "version": "2.1.38",
3
+ "version": "2.1.40",
4
4
  "private": false,
5
5
  "description": "Mongoose middlewares and utilities",
6
6
  "repository": {
@@ -25,7 +25,7 @@
25
25
  "nanoid": "5.1.16"
26
26
  },
27
27
  "peerDependencies": {
28
- "mongoose": "^9.7.3",
28
+ "mongoose": "^9.7.4",
29
29
  "vitest": "^4.1.9"
30
30
  },
31
31
  "peerDependenciesMeta": {
@@ -37,13 +37,13 @@
37
37
  "@types/bcrypt": "6.0.0",
38
38
  "@vitest/coverage-v8": "4.1.10",
39
39
  "@vitest/ui": "4.1.10",
40
- "eslint": "10.6.0",
41
- "mongoose": "9.7.3",
40
+ "eslint": "10.7.0",
41
+ "mongoose": "9.7.4",
42
42
  "typescript": "6.0.3",
43
43
  "vitest": "^4.1.10",
44
- "@slango.configs/typescript": "2.0.8",
45
- "@slango.configs/vitest": "2.0.40",
46
- "@slango.configs/eslint": "1.2.30"
44
+ "@slango.configs/eslint": "1.2.32",
45
+ "@slango.configs/vitest": "2.0.41",
46
+ "@slango.configs/typescript": "2.0.9"
47
47
  },
48
48
  "scripts": {
49
49
  "build": "tsc -p tsconfig.build.json",
@@ -1 +0,0 @@
1
- $ tsc -p tsconfig.build.json
@@ -1 +0,0 @@
1
- $ eslint . --max-warnings 0
@@ -1,26 +0,0 @@
1
- $ vitest --run
2
-
3
-  RUN  v4.1.10 /home/runner/work/slango/slango/packages/mangusta
4
-
5
- stdout | src/middleware/compactId.spec.ts
6
- Downloading MongoDB "8.2.6": 0% (0mb / 122.6mb)
7
-
8
- stdout | src/middleware/compactId.spec.ts
9
- Downloading MongoDB "8.2.6": 100% (122.6mb / 122.6mb)
10
-
11
- stdout | src/middleware/compactId.spec.ts
12
- Downloading MongoDB "8.2.6": 100% (0mb / 0mb)
13
-
14
- ✓ src/middleware/compactId.spec.ts (6 tests) 7018ms
15
- ✓ src/middleware/email.spec.ts (7 tests) 234ms
16
- ✓ src/middleware/owner.spec.ts (6 tests) 1214ms
17
- ✓ src/middleware/tags.spec.ts (8 tests) 9417ms
18
- ✓ src/middleware/reactions.spec.ts (7 tests) 9409ms
19
- ✓ src/middleware/password.spec.ts (4 tests) 634ms
20
- ✓ src/middleware/timestamps.spec.ts (3 tests) 240ms
21
-
22
-  Test Files  7 passed (7)
23
-  Tests  41 passed (41)
24
-  Start at  09:32:45
25
-  Duration  11.78s (transform 433ms, setup 0ms, import 4.65s, tests 28.17s, environment 1ms)
26
-
package/dist/helpers.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import { Types } from 'mongoose';
2
- export type Id = string | Types.ObjectId;
3
- export declare const toObjectId: (value: Id) => Types.ObjectId;
4
- export declare const toStringId: (value: Id) => string;
5
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,MAAM,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;AAEzC,eAAO,MAAM,UAAU,GAAI,OAAO,EAAE,KAAG,KAAK,CAAC,QAM5C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,EAAE,KAAG,MACqB,CAAC"}
package/dist/helpers.js DELETED
@@ -1,9 +0,0 @@
1
- import { Types } from 'mongoose';
2
- export const toObjectId = (value) => {
3
- if (value instanceof Types.ObjectId) {
4
- return value;
5
- }
6
- return new Types.ObjectId(value);
7
- };
8
- export const toStringId = (value) => value instanceof Types.ObjectId ? value.toString() : value;
9
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAS,EAAkB,EAAE;IACtD,IAAI,KAAK,YAAY,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAS,EAAU,EAAE,CAC9C,KAAK,YAAY,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC"}
@@ -1,13 +0,0 @@
1
- import { PluginFunction } from '../types.js';
2
- export interface CompactIdMiddlewareOptions<Field extends string = 'shortId'> {
3
- field?: Field;
4
- index?: boolean;
5
- length?: number;
6
- unique?: boolean;
7
- }
8
- export type WithCompactId<Field extends string = 'shortId'> = {
9
- [key in Field]: string;
10
- };
11
- declare const compactIdMiddleware: PluginFunction<CompactIdMiddlewareOptions>;
12
- export default compactIdMiddleware;
13
- //# sourceMappingURL=compactId.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compactId.d.ts","sourceRoot":"","sources":["../../src/middleware/compactId.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,0BAA0B,CAAC,KAAK,SAAS,MAAM,GAAG,SAAS;IAC1E,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,MAAM,GAAG,SAAS,IAAI;KAC3D,GAAG,IAAI,KAAK,GAAG,MAAM;CACvB,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,cAAc,CAAC,0BAA0B,CAuBnE,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -1,16 +0,0 @@
1
- import { Schema } from 'mongoose';
2
- import { nanoid } from 'nanoid';
3
- const compactIdMiddleware = (schema, { field = 'shortId', index = true, length = 9, unique = true, } = {}) => {
4
- const fieldDescription = new Schema({
5
- [field]: {
6
- default: () => nanoid(length),
7
- index,
8
- required: true,
9
- unique: index && unique,
10
- type: String,
11
- },
12
- });
13
- schema.add(fieldDescription);
14
- };
15
- export default compactIdMiddleware;
16
- //# sourceMappingURL=compactId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compactId.js","sourceRoot":"","sources":["../../src/middleware/compactId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAehC,MAAM,mBAAmB,GAA+C,CAItE,MAAuC,EACvC,EACE,KAAK,GAAG,SAAkB,EAC1B,KAAK,GAAG,IAAI,EACZ,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,IAAI,MACwB,EAAE,EACnC,EAAE;IACR,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAuB;QACxD,CAAC,KAAK,CAAC,EAAE;YACP,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7B,KAAK;YACL,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,KAAK,IAAI,MAAM;YACvB,IAAI,EAAE,MAAM;SACb;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -1,18 +0,0 @@
1
- import { PluginFunction } from '../types.js';
2
- export declare const emailRegexp: RegExp;
3
- export type WithEmail<Field extends string = 'email', Required extends boolean = true> = Required extends true ? {
4
- [key in Field]: string;
5
- } : {
6
- [key in Field]?: string;
7
- };
8
- interface EmailMiddlewareOptions<Field extends string = 'email'> {
9
- doesNotMatchMessage?: string;
10
- field?: Field;
11
- index?: boolean;
12
- regExp?: RegExp;
13
- required?: boolean;
14
- unique?: boolean;
15
- }
16
- declare const emailMiddleware: PluginFunction<EmailMiddlewareOptions>;
17
- export default emailMiddleware;
18
- //# sourceMappingURL=email.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/middleware/email.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,WAAW,QAAwC,CAAC;AAEjE,MAAM,MAAM,SAAS,CACnB,KAAK,SAAS,MAAM,GAAG,OAAO,EAC9B,QAAQ,SAAS,OAAO,GAAG,IAAI,IAC7B,QAAQ,SAAS,IAAI,GAAG;KAAG,GAAG,IAAI,KAAK,GAAG,MAAM;CAAE,GAAG;KAAG,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM;CAAE,CAAC;AAErF,UAAU,sBAAsB,CAAC,KAAK,SAAS,MAAM,GAAG,OAAO;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,eAAe,EAAE,cAAc,CAAC,sBAAsB,CA0B3D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,17 +0,0 @@
1
- import { Schema } from 'mongoose';
2
- export const emailRegexp = /^[\w.%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i;
3
- const emailMiddleware = (schema, { doesNotMatchMessage, field = 'email', index = true, regExp = emailRegexp, required = true, unique = true, } = {}) => {
4
- const emailSchema = new Schema({
5
- [field]: {
6
- index,
7
- match: doesNotMatchMessage ? [regExp, doesNotMatchMessage] : regExp,
8
- required,
9
- trim: true,
10
- type: String,
11
- unique,
12
- },
13
- });
14
- schema.add(emailSchema);
15
- };
16
- export default emailMiddleware;
17
- //# sourceMappingURL=email.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/middleware/email.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AAInD,MAAM,CAAC,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAgBjE,MAAM,eAAe,GAA2C,CAI9D,MAAuC,EACvC,EACE,mBAAmB,EACnB,KAAK,GAAG,OAAgB,EACxB,KAAK,GAAG,IAAI,EACZ,MAAM,GAAG,WAAW,EACpB,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,IAAI,MACoB,EAAE,EAC/B,EAAE;IACR,MAAM,WAAW,GAAG,IAAI,MAAM,CAAmB;QAC/C,CAAC,KAAK,CAAC,EAAE;YACP,KAAK;YACL,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM;YACnE,QAAQ;YACR,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,MAAM;YACZ,MAAM;SACP;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,14 +0,0 @@
1
- import { Types } from 'mongoose';
2
- import { PluginFunction } from '../types.js';
3
- export interface OwnerMiddlewareOptions<Field extends string = 'user'> {
4
- field?: Field;
5
- index?: boolean;
6
- ref?: string;
7
- required?: boolean;
8
- }
9
- export type WithOwner<T = Types.ObjectId, Field extends string = 'user'> = {
10
- [key in Field]: T;
11
- };
12
- declare const ownerMiddleware: PluginFunction<OwnerMiddlewareOptions>;
13
- export default ownerMiddleware;
14
- //# sourceMappingURL=owner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"owner.d.ts","sourceRoot":"","sources":["../../src/middleware/owner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,sBAAsB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IACnE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI;KACxE,GAAG,IAAI,KAAK,GAAG,CAAC;CAClB,CAAC;AAEF,QAAA,MAAM,eAAe,EAAE,cAAc,CAAC,sBAAsB,CAqB3D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,14 +0,0 @@
1
- import { Schema, Types } from 'mongoose';
2
- const ownerMiddleware = (schema, { field = 'user', index = true, ref = 'User', required = true, } = {}) => {
3
- const fieldDescription = new Schema({
4
- [field]: {
5
- index,
6
- ref,
7
- required,
8
- type: Types.ObjectId,
9
- },
10
- });
11
- schema.add(fieldDescription);
12
- };
13
- export default ownerMiddleware;
14
- //# sourceMappingURL=owner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"owner.js","sourceRoot":"","sources":["../../src/middleware/owner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAenD,MAAM,eAAe,GAA2C,CAI9D,MAAuB,EACvB,EACE,KAAK,GAAG,MAAe,EACvB,KAAK,GAAG,IAAI,EACZ,GAAG,GAAG,MAAM,EACZ,QAAQ,GAAG,IAAI,MACkB,EAAE,EAC/B,EAAE;IACR,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAmB;QACpD,CAAC,KAAK,CAAC,EAAE;YACP,KAAK;YACL,GAAG;YACH,QAAQ;YACR,IAAI,EAAE,KAAK,CAAC,QAAQ;SACrB;KACF,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,18 +0,0 @@
1
- import { PluginFunction } from '../types.js';
2
- export type WithPassword<Field extends string = 'password', ComparisonFunction extends string = 'comparePassword'> = {
3
- [key in ComparisonFunction]: (password: string) => Promise<boolean>;
4
- } & {
5
- [key in Field]: string;
6
- };
7
- export declare const passwordRegExp: RegExp;
8
- export interface PasswordMiddlewareOptions<Field extends string = 'password', ComparisonFunction extends string = 'comparePassword'> {
9
- comparisonFunction?: ComparisonFunction;
10
- doesNotMatchMessage?: string;
11
- field?: Field;
12
- regExp?: RegExp;
13
- required?: boolean;
14
- saltingRounds?: number;
15
- }
16
- declare const passwordMiddleware: PluginFunction<PasswordMiddlewareOptions>;
17
- export default passwordMiddleware;
18
- //# sourceMappingURL=password.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,29 +0,0 @@
1
- import { compare, hash } from 'bcrypt';
2
- import { Schema } from 'mongoose';
3
- export const passwordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&*)(\][+=.,_-]).{8,}$/;
4
- const passwordMiddleware = (schema, { comparisonFunction = 'comparePassword', doesNotMatchMessage, field = 'password', regExp = passwordRegExp, required = true, saltingRounds = 10, } = {}) => {
5
- const fieldDescription = new Schema({
6
- [field]: {
7
- match: doesNotMatchMessage ? [regExp, doesNotMatchMessage] : regExp,
8
- required,
9
- type: String,
10
- },
11
- });
12
- schema.add(fieldDescription);
13
- schema.pre('save', async function schemaWithPasswordPreSave() {
14
- if (!this.isModified(field)) {
15
- return;
16
- }
17
- this.set(field, await hash(this.get(field), saltingRounds));
18
- });
19
- schema.methods[comparisonFunction] = async function comparePassword(candidate) {
20
- try {
21
- return await compare(candidate, this.get(field));
22
- }
23
- catch {
24
- return false;
25
- }
26
- };
27
- };
28
- export default passwordMiddleware;
29
- //# sourceMappingURL=password.js.map
@@ -1 +0,0 @@
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,43 +0,0 @@
1
- import { Types } from 'mongoose';
2
- import { Id } from '../helpers.js';
3
- import { PluginFunction } from '../types.js';
4
- export declare const defaultReactionTypes: readonly ["👍", "❤️", "🤔", "😂", "😮"];
5
- export type ReactionType = (typeof defaultReactionTypes)[number];
6
- export interface ReactionCountSummary {
7
- perType: Record<string, number>;
8
- total: number;
9
- }
10
- export type ReactionUserField<UserField extends string = 'user'> = {
11
- [key in UserField]: Types.ObjectId;
12
- };
13
- export type ReactionTypeField<TypeField extends string = 'type'> = {
14
- [key in TypeField]: string;
15
- };
16
- export type ReactionTimestampField<TimestampField extends string = 'createdAt'> = {
17
- [key in TimestampField]?: Date;
18
- };
19
- export type ReactionEntry<UserField extends string = 'user', TypeField extends string = 'type', TimestampField extends string = 'createdAt'> = ReactionTimestampField<TimestampField> & ReactionTypeField<TypeField> & ReactionUserField<UserField>;
20
- export type WithReactions<Field extends string = 'reactions', UserField extends string = 'user', TypeField extends string = 'type', TimestampField extends string = 'createdAt'> = {
21
- [key in Field]: ReactionEntry<UserField, TypeField, TimestampField>[];
22
- };
23
- export interface WithReactionsMethods {
24
- addReaction(user: Id, type: string, timestampValue?: Date): this;
25
- countReactions(type?: string): number | ReactionCountSummary;
26
- hasReaction(user: Id, type?: string): boolean;
27
- removeReaction(user: Id, type?: string): this;
28
- }
29
- export interface ReactionsMiddlewareOptions<Field extends string = 'reactions', UserField extends string = 'user', TypeField extends string = 'type', TimestampField extends string = 'createdAt'> {
30
- allowedTypes?: readonly string[];
31
- allowMultiplePerUser?: boolean;
32
- field?: Field;
33
- indexType?: -1 | 1 | boolean;
34
- indexUser?: -1 | 1 | boolean;
35
- timestamp?: boolean;
36
- timestampField?: TimestampField;
37
- typeField?: TypeField;
38
- userField?: UserField;
39
- userRef?: string;
40
- }
41
- declare const reactionsMiddleware: PluginFunction<ReactionsMiddlewareOptions>;
42
- export default reactionsMiddleware;
43
- //# sourceMappingURL=reactions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../src/middleware/reactions.ts"],"names":[],"mappings":"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"}
@@ -1,190 +0,0 @@
1
- import { Schema, Types } from 'mongoose';
2
- import { toObjectId, toStringId } from '../helpers.js';
3
- export const defaultReactionTypes = ['👍', '❤️', '🤔', '😂', '😮'];
4
- const reactionsMiddleware = (schema, { allowedTypes = defaultReactionTypes, allowMultiplePerUser = false, field = 'reactions', indexType = false, indexUser = true, timestamp = true, timestampField = 'createdAt', typeField = 'type', userField = 'user', userRef = 'User', } = {}) => {
5
- const allowedTypesSet = new Set(allowedTypes);
6
- const shouldEnforceAllowedTypes = allowedTypesSet.size > 0;
7
- const reactionSchemaDefinition = {
8
- [userField]: {
9
- ref: userRef,
10
- required: true,
11
- type: Types.ObjectId,
12
- },
13
- [typeField]: {
14
- required: true,
15
- type: String,
16
- ...(shouldEnforceAllowedTypes && { enum: Array.from(allowedTypesSet) }),
17
- },
18
- ...(timestamp && {
19
- [timestampField]: {
20
- default: Date.now,
21
- type: Date,
22
- },
23
- }),
24
- };
25
- const reactionsSubSchema = new Schema(reactionSchemaDefinition, {
26
- _id: false,
27
- });
28
- schema.add(new Schema({
29
- [field]: {
30
- default: [],
31
- type: [reactionsSubSchema],
32
- },
33
- }));
34
- if (indexUser) {
35
- schema.index({ [`${field}.${userField}`]: indexUser === true ? 1 : indexUser });
36
- }
37
- if (indexType) {
38
- schema.index({ [`${field}.${typeField}`]: indexType === true ? 1 : indexType });
39
- }
40
- const ensureAllowedType = (reactionType) => {
41
- if (shouldEnforceAllowedTypes && !allowedTypesSet.has(reactionType)) {
42
- throw new Error(`Reaction type "${reactionType}" is not permitted.`);
43
- }
44
- };
45
- const normalizeEntry = (entry) => {
46
- const userValue = entry[userField];
47
- const typeValue = entry[typeField];
48
- if (!userValue || !typeValue) {
49
- return null;
50
- }
51
- ensureAllowedType(typeValue);
52
- const normalized = {
53
- ...entry,
54
- [userField]: toObjectId(userValue),
55
- [typeField]: typeValue,
56
- };
57
- const rawTimestamp = entry[timestampField];
58
- if (timestamp) {
59
- if (rawTimestamp instanceof Date) {
60
- normalized[timestampField] = rawTimestamp;
61
- }
62
- else if (rawTimestamp === undefined) {
63
- normalized[timestampField] = new Date();
64
- }
65
- else if (typeof rawTimestamp === 'string' || typeof rawTimestamp === 'number') {
66
- normalized[timestampField] = new Date(rawTimestamp);
67
- }
68
- }
69
- else if (rawTimestamp !== undefined) {
70
- delete normalized[timestampField];
71
- }
72
- return normalized;
73
- };
74
- schema.pre('save', function reactionsPreSave() {
75
- const existing = this.get(field) ?? [];
76
- if (!existing.length) {
77
- return;
78
- }
79
- const normalizedEntries = [];
80
- const seenUsers = new Map();
81
- let modified = false;
82
- for (const entry of existing) {
83
- const normalized = normalizeEntry(entry);
84
- if (!normalized) {
85
- modified = true;
86
- continue;
87
- }
88
- if (!allowMultiplePerUser) {
89
- const userKey = normalized[userField].toString();
90
- const idx = seenUsers.get(userKey);
91
- if (idx !== undefined) {
92
- normalizedEntries[idx] = normalized;
93
- modified = true;
94
- }
95
- else {
96
- seenUsers.set(userKey, normalizedEntries.length);
97
- normalizedEntries.push(normalized);
98
- }
99
- }
100
- else {
101
- normalizedEntries.push(normalized);
102
- }
103
- }
104
- if (normalizedEntries.length !== existing.length || modified) {
105
- this.set(field, normalizedEntries);
106
- }
107
- });
108
- schema.methods.addReaction = function addReaction(user, reactionType, timestampValue) {
109
- ensureAllowedType(reactionType);
110
- const userId = toObjectId(user);
111
- const userKey = userId.toString();
112
- const reactions = (this.get(field) ?? [])
113
- .map((entry) => normalizeEntry(entry))
114
- .filter((entry) => entry !== null);
115
- if (!allowMultiplePerUser) {
116
- const existingIndex = reactions.findIndex((entry) => entry[userField]?.toString() === userKey);
117
- const newEntry = {
118
- [userField]: userId,
119
- [typeField]: reactionType,
120
- };
121
- if (timestamp) {
122
- newEntry[timestampField] = (timestampValue ?? new Date());
123
- }
124
- if (existingIndex !== -1) {
125
- reactions[existingIndex] = newEntry;
126
- }
127
- else {
128
- reactions.push(newEntry);
129
- }
130
- }
131
- else {
132
- const newEntry = {
133
- [userField]: userId,
134
- [typeField]: reactionType,
135
- };
136
- if (timestamp) {
137
- newEntry[timestampField] = (timestampValue ?? new Date());
138
- }
139
- reactions.push(newEntry);
140
- }
141
- this.set(field, reactions);
142
- return this;
143
- };
144
- schema.methods.removeReaction = function removeReaction(user, reactionType) {
145
- const userKey = toStringId(user);
146
- const reactions = this.get(field) ?? [];
147
- const filtered = reactions.filter((entry) => {
148
- const matchesUser = entry[userField]?.toString() === userKey;
149
- if (!matchesUser) {
150
- return true;
151
- }
152
- if (!reactionType) {
153
- return false;
154
- }
155
- return entry[typeField] !== reactionType;
156
- });
157
- if (filtered.length !== reactions.length) {
158
- this.set(field, filtered);
159
- }
160
- return this;
161
- };
162
- schema.methods.hasReaction = function hasReaction(user, reactionType) {
163
- const userKey = toStringId(user);
164
- const reactions = this.get(field) ?? [];
165
- return reactions.some((entry) => {
166
- if (entry[userField]?.toString() !== userKey) {
167
- return false;
168
- }
169
- if (reactionType) {
170
- return entry[typeField] === reactionType;
171
- }
172
- return true;
173
- });
174
- };
175
- schema.methods.countReactions = function countReactions(reactionType) {
176
- const reactions = this.get(field) ?? [];
177
- if (reactionType) {
178
- ensureAllowedType(reactionType);
179
- return reactions.filter((entry) => entry[typeField] === reactionType).length;
180
- }
181
- return reactions.reduce((accumulator, entry) => {
182
- const type = entry[typeField];
183
- accumulator.perType[type] = (accumulator.perType[type] ?? 0) + 1;
184
- accumulator.total += 1;
185
- return accumulator;
186
- }, { total: 0, perType: {} });
187
- };
188
- };
189
- export default reactionsMiddleware;
190
- //# sourceMappingURL=reactions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/middleware/reactions.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { PluginFunction } from '../types.js';
2
- export interface TagsMiddlewareOptions<Field extends string = 'tags'> {
3
- field?: Field;
4
- index?: 'hashed' | 'text' | false;
5
- unique?: boolean;
6
- validate?: (tags: string[]) => boolean;
7
- }
8
- export type WithTags<Field extends string = 'tags'> = {
9
- [key in Field]: string[];
10
- };
11
- declare const tagsMiddleware: PluginFunction<TagsMiddlewareOptions>;
12
- export default tagsMiddleware;
13
- //# sourceMappingURL=tags.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,26 +0,0 @@
1
- import { Schema } from 'mongoose';
2
- const tagsMiddleware = (schema, { field = 'tags', index = false, unique = true, validate, } = {}) => {
3
- const tagsSchema = new Schema({
4
- [field]: {
5
- type: [String],
6
- ...(validate && {
7
- validate: {
8
- message: 'Tags failed custom validation.',
9
- validator: (tags) => validate(tags),
10
- },
11
- }),
12
- },
13
- });
14
- schema.add(tagsSchema);
15
- if (index) {
16
- schema.index({ [field]: index });
17
- }
18
- schema.pre('save', function schemaWithTagsPreSave() {
19
- const tags = this.get(field);
20
- if (unique && tags) {
21
- this.set(field, Array.from(new Set(tags)));
22
- }
23
- });
24
- };
25
- export default tagsMiddleware;
26
- //# sourceMappingURL=tags.js.map
@@ -1 +0,0 @@
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,20 +0,0 @@
1
- import { PluginFunction } from '../types.js';
2
- export interface TimestampsMiddlewareOptions {
3
- creation?: boolean;
4
- creationField?: string;
5
- indexCreation?: boolean;
6
- indexUpdate?: boolean;
7
- update?: boolean;
8
- updateField?: string;
9
- updateTimestampOnCreation?: boolean;
10
- }
11
- export type WithCreated<Field extends string = 'created'> = {
12
- [key in Field]: Date;
13
- };
14
- export type WithTimestamps<Created extends string = 'created', Updated extends string = 'updated'> = WithCreated<Created> & WithUpdated<Updated>;
15
- export type WithUpdated<Field extends string = 'updated'> = {
16
- [key in Field]?: Date;
17
- };
18
- declare const timestampsMiddleware: PluginFunction<TimestampsMiddlewareOptions>;
19
- export default timestampsMiddleware;
20
- //# sourceMappingURL=timestamps.d.ts.map
@@ -1 +0,0 @@
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"}