@lenne.tech/nest-server 8.0.2 → 8.1.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.
Files changed (148) hide show
  1. package/dist/core/common/args/pagination.args.js +1 -1
  2. package/dist/core/common/args/pagination.args.js.map +1 -1
  3. package/dist/core/common/helpers/config.helper.d.ts +2 -1
  4. package/dist/core/common/helpers/config.helper.js +11 -7
  5. package/dist/core/common/helpers/config.helper.js.map +1 -1
  6. package/dist/core/common/helpers/context.helper.d.ts +7 -1
  7. package/dist/core/common/helpers/context.helper.js +33 -29
  8. package/dist/core/common/helpers/context.helper.js.map +1 -1
  9. package/dist/core/common/helpers/db.helper.d.ts +35 -0
  10. package/dist/core/common/helpers/db.helper.js +345 -0
  11. package/dist/core/common/helpers/db.helper.js.map +1 -0
  12. package/dist/core/common/helpers/file.helper.d.ts +8 -1
  13. package/dist/core/common/helpers/file.helper.js +43 -31
  14. package/dist/core/common/helpers/file.helper.js.map +1 -1
  15. package/dist/core/common/helpers/filter.helper.d.ts +3 -0
  16. package/dist/core/common/helpers/filter.helper.js +93 -81
  17. package/dist/core/common/helpers/filter.helper.js.map +1 -1
  18. package/dist/core/common/helpers/graphql.helper.d.ts +24 -1
  19. package/dist/core/common/helpers/graphql.helper.js +144 -96
  20. package/dist/core/common/helpers/graphql.helper.js.map +1 -1
  21. package/dist/core/common/helpers/input.helper.d.ts +29 -3
  22. package/dist/core/common/helpers/input.helper.js +222 -105
  23. package/dist/core/common/helpers/input.helper.js.map +1 -1
  24. package/dist/core/common/helpers/model.helper.d.ts +11 -0
  25. package/dist/core/common/helpers/model.helper.js +41 -29
  26. package/dist/core/common/helpers/model.helper.js.map +1 -1
  27. package/dist/core/common/helpers/service.helper.d.ts +21 -1
  28. package/dist/core/common/helpers/service.helper.js +80 -72
  29. package/dist/core/common/helpers/service.helper.js.map +1 -1
  30. package/dist/core/common/inputs/combined-filter.input.js +1 -1
  31. package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
  32. package/dist/core/common/inputs/core-input.input.js +1 -1
  33. package/dist/core/common/inputs/core-input.input.js.map +1 -1
  34. package/dist/core/common/interceptors/check-response.interceptor.js +1 -1
  35. package/dist/core/common/interceptors/check-response.interceptor.js.map +1 -1
  36. package/dist/core/common/interfaces/resolve-selector.interface.d.ts +5 -0
  37. package/dist/core/common/interfaces/resolve-selector.interface.js +3 -0
  38. package/dist/core/common/interfaces/resolve-selector.interface.js.map +1 -0
  39. package/dist/core/common/interfaces/service-options.interface.d.ts +30 -0
  40. package/dist/core/common/interfaces/service-options.interface.js +3 -0
  41. package/dist/core/common/interfaces/service-options.interface.js.map +1 -0
  42. package/dist/core/common/models/core-model.model.d.ts +4 -0
  43. package/dist/core/common/models/core-model.model.js +1 -1
  44. package/dist/core/common/models/core-model.model.js.map +1 -1
  45. package/dist/core/common/pipes/check-input.pipe.js +2 -2
  46. package/dist/core/common/pipes/check-input.pipe.js.map +1 -1
  47. package/dist/core/common/pipes/map-and-validate.pipe.js +1 -1
  48. package/dist/core/common/pipes/map-and-validate.pipe.js.map +1 -1
  49. package/dist/core/common/services/crud.service.d.ts +13 -0
  50. package/dist/core/common/services/crud.service.js +59 -0
  51. package/dist/core/common/services/crud.service.js.map +1 -0
  52. package/dist/core/common/services/email.service.js +8 -8
  53. package/dist/core/common/services/email.service.js.map +1 -1
  54. package/dist/core/common/services/module.service.d.ts +27 -0
  55. package/dist/core/common/services/module.service.js +41 -0
  56. package/dist/core/common/services/module.service.js.map +1 -0
  57. package/dist/core/common/types/core-model-constructor.type.d.ts +21 -0
  58. package/dist/core/common/types/core-model-constructor.type.js +3 -0
  59. package/dist/core/common/types/core-model-constructor.type.js.map +1 -0
  60. package/dist/core/common/types/field-selection.type.d.ts +4 -0
  61. package/dist/core/common/types/field-selection.type.js +3 -0
  62. package/dist/core/common/types/field-selection.type.js.map +1 -0
  63. package/dist/core/common/types/string-or-object-id.type.d.ts +2 -0
  64. package/dist/core/common/types/string-or-object-id.type.js +3 -0
  65. package/dist/core/common/types/string-or-object-id.type.js.map +1 -0
  66. package/dist/core/modules/auth/core-auth.resolver.d.ts +2 -1
  67. package/dist/core/modules/auth/core-auth.resolver.js +4 -3
  68. package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
  69. package/dist/core/modules/auth/services/core-auth-user.service.d.ts +3 -1
  70. package/dist/core/modules/auth/services/core-auth-user.service.js.map +1 -1
  71. package/dist/core/modules/auth/services/core-auth.service.d.ts +2 -1
  72. package/dist/core/modules/auth/services/core-auth.service.js +6 -4
  73. package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
  74. package/dist/core/modules/user/core-user.model.js +1 -1
  75. package/dist/core/modules/user/core-user.model.js.map +1 -1
  76. package/dist/core/modules/user/core-user.service.d.ts +16 -25
  77. package/dist/core/modules/user/core-user.service.js +79 -98
  78. package/dist/core/modules/user/core-user.service.js.map +1 -1
  79. package/dist/core.module.js +1 -1
  80. package/dist/core.module.js.map +1 -1
  81. package/dist/index.d.ts +8 -1
  82. package/dist/index.js +8 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/server/modules/auth/auth.resolver.d.ts +2 -1
  85. package/dist/server/modules/auth/auth.resolver.js +4 -3
  86. package/dist/server/modules/auth/auth.resolver.js.map +1 -1
  87. package/dist/server/modules/file/file.controller.js +1 -1
  88. package/dist/server/modules/file/file.controller.js.map +1 -1
  89. package/dist/server/modules/user/avatar.controller.js +1 -1
  90. package/dist/server/modules/user/avatar.controller.js.map +1 -1
  91. package/dist/server/modules/user/user.model.d.ts +1 -0
  92. package/dist/server/modules/user/user.module.js +7 -3
  93. package/dist/server/modules/user/user.module.js.map +1 -1
  94. package/dist/server/modules/user/user.resolver.d.ts +8 -7
  95. package/dist/server/modules/user/user.resolver.js +65 -45
  96. package/dist/server/modules/user/user.resolver.js.map +1 -1
  97. package/dist/server/modules/user/user.service.d.ts +9 -18
  98. package/dist/server/modules/user/user.service.js +19 -30
  99. package/dist/server/modules/user/user.service.js.map +1 -1
  100. package/dist/test/test.helper.d.ts +1 -2
  101. package/dist/test/test.helper.js +1 -16
  102. package/dist/test/test.helper.js.map +1 -1
  103. package/dist/tsconfig.build.tsbuildinfo +1 -1
  104. package/package.json +44 -45
  105. package/src/core/common/args/pagination.args.ts +2 -2
  106. package/src/core/common/helpers/config.helper.ts +26 -6
  107. package/src/core/common/helpers/context.helper.ts +42 -33
  108. package/src/core/common/helpers/db.helper.ts +580 -0
  109. package/src/core/common/helpers/file.helper.ts +76 -49
  110. package/src/core/common/helpers/filter.helper.ts +119 -96
  111. package/src/core/common/helpers/graphql.helper.ts +219 -117
  112. package/src/core/common/helpers/input.helper.ts +296 -106
  113. package/src/core/common/helpers/model.helper.ts +102 -57
  114. package/src/core/common/helpers/service.helper.ts +149 -117
  115. package/src/core/common/inputs/combined-filter.input.ts +2 -2
  116. package/src/core/common/inputs/core-input.input.ts +2 -2
  117. package/src/core/common/interceptors/check-response.interceptor.ts +2 -2
  118. package/src/core/common/interfaces/resolve-selector.interface.ts +9 -0
  119. package/src/core/common/interfaces/service-options.interface.ts +53 -0
  120. package/src/core/common/models/core-model.model.ts +6 -2
  121. package/src/core/common/pipes/check-input.pipe.ts +4 -4
  122. package/src/core/common/pipes/map-and-validate.pipe.ts +2 -2
  123. package/src/core/common/services/crud.service.ts +105 -0
  124. package/src/core/common/services/email.service.ts +9 -9
  125. package/src/core/common/services/module.service.ts +114 -0
  126. package/src/core/common/types/core-model-constructor.type.ts +30 -0
  127. package/src/core/common/types/field-selection.type.ts +8 -0
  128. package/src/core/common/types/string-or-object-id.type.ts +3 -0
  129. package/src/core/modules/auth/core-auth.module.ts +1 -1
  130. package/src/core/modules/auth/core-auth.resolver.ts +8 -3
  131. package/src/core/modules/auth/services/core-auth-user.service.ts +7 -1
  132. package/src/core/modules/auth/services/core-auth.service.ts +14 -4
  133. package/src/core/modules/user/core-user.model.ts +2 -1
  134. package/src/core/modules/user/core-user.service.ts +131 -194
  135. package/src/core.module.ts +2 -2
  136. package/src/index.ts +8 -1
  137. package/src/main.ts +1 -1
  138. package/src/server/modules/auth/auth.resolver.ts +8 -3
  139. package/src/server/modules/file/file.controller.ts +2 -2
  140. package/src/server/modules/user/avatar.controller.ts +2 -2
  141. package/src/server/modules/user/user.module.ts +7 -3
  142. package/src/server/modules/user/user.resolver.ts +62 -37
  143. package/src/server/modules/user/user.service.ts +23 -53
  144. package/src/test/test.helper.ts +31 -30
  145. package/dist/core/modules/user/core-basic-user.service.d.ts +0 -17
  146. package/dist/core/modules/user/core-basic-user.service.js +0 -73
  147. package/dist/core/modules/user/core-basic-user.service.js.map +0 -1
  148. package/src/core/modules/user/core-basic-user.service.ts +0 -138
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lenne.tech/nest-server",
3
- "version": "8.0.2",
3
+ "version": "8.1.0",
4
4
  "description": "Modern, fast, powerful Node.js web framework in TypeScript based on Nest with a GraphQL API and a connection to MongoDB (or other databases).",
5
5
  "keywords": [
6
6
  "node",
@@ -32,9 +32,9 @@
32
32
  "test": "jest",
33
33
  "test:cov": "jest --coverage",
34
34
  "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
35
- "test:e2e": "jest --detectOpenHandles --config jest-e2e.json",
36
- "test:e2e-cov": "jest --detectOpenHandles --config jest-e2e.json --coverage",
37
- "test:ci": "jest --detectOpenHandles --config jest-e2e.json --ci",
35
+ "test:e2e": "jest --config jest-e2e.json",
36
+ "test:e2e-cov": "jest --config jest-e2e.json --coverage",
37
+ "test:ci": "jest --config jest-e2e.json --ci",
38
38
  "test:watch": "jest --watch",
39
39
  "prepack": "npm run prestart:prod",
40
40
  "prepare": "husky install",
@@ -52,72 +52,71 @@
52
52
  "node": ">= 16.13.0"
53
53
  },
54
54
  "dependencies": {
55
- "@apollo/gateway": "0.48.3",
56
- "@nestjs/apollo": "10.0.8",
57
- "@nestjs/common": "8.4.2",
58
- "@nestjs/core": "8.4.2",
59
- "@nestjs/graphql": "10.0.8",
55
+ "@apollo/gateway": "0.50.1",
56
+ "@nestjs/apollo": "10.0.9",
57
+ "@nestjs/common": "8.4.4",
58
+ "@nestjs/core": "8.4.4",
59
+ "@nestjs/graphql": "10.0.9",
60
60
  "@nestjs/jwt": "8.0.0",
61
61
  "@nestjs/mongoose": "9.0.3",
62
62
  "@nestjs/passport": "8.2.1",
63
- "@nestjs/platform-express": "8.4.2",
64
- "@nestjs/testing": "8.4.2",
63
+ "@nestjs/platform-express": "8.4.4",
65
64
  "@types/ejs": "3.1.0",
66
- "@types/jest": "27.4.1",
67
- "@types/lodash": "4.14.180",
65
+ "@types/lodash": "4.14.182",
68
66
  "@types/multer": "1.4.7",
69
- "@types/node": "17.0.22",
67
+ "@types/node": "17.0.25",
70
68
  "@types/node-mailjet": "3.3.8",
71
69
  "@types/nodemailer": "6.4.4",
72
70
  "@types/passport": "1.0.7",
73
- "@types/supertest": "2.0.12",
74
- "@typescript-eslint/eslint-plugin": "5.16.0",
75
- "@typescript-eslint/parser": "5.16.0",
76
- "apollo-server-core": "3.6.5",
77
- "apollo-server-express": "3.6.5",
71
+ "apollo-server-core": "3.6.7",
72
+ "apollo-server-express": "3.6.7",
78
73
  "bcrypt": "5.0.1",
79
74
  "class-transformer": "0.5.1",
80
75
  "class-validator": "0.13.2",
81
- "coffeescript": "2.6.1",
82
- "ejs": "3.1.6",
83
- "eslint": "8.11.0",
84
- "eslint-config-prettier": "8.5.0",
85
- "fastify": "3.27.4",
76
+ "ejs": "3.0.2",
86
77
  "graphql": "16.3.0",
87
78
  "graphql-subscriptions": "2.0.0",
88
- "grunt": "1.4.1",
89
- "grunt-bg-shell": "2.3.3",
90
- "grunt-contrib-clean": "2.0.0",
91
- "grunt-contrib-watch": "1.1.0",
92
- "grunt-sync": "0.8.2",
93
- "husky": "7.0.4",
94
- "jest": "27.5.1",
95
79
  "json-to-graphql-query": "2.2.3",
96
- "light-my-request": "4.8.0",
80
+ "light-my-request": "4.9.0",
97
81
  "lodash": "4.17.21",
98
- "mongodb": "4.4.1",
99
- "mongoose": "6.2.8",
82
+ "mongodb": "4.5.0",
83
+ "mongoose": "6.3.0",
100
84
  "multer": "1.4.4",
101
- "node-mailjet": "3.3.7",
85
+ "node-mailjet": "3.3.10",
102
86
  "nodemailer": "6.7.3",
103
87
  "nodemon": "2.0.15",
104
88
  "passport": "0.5.2",
105
89
  "passport-jwt": "4.0.0",
106
- "prettier": "2.6.0",
107
- "pretty-quick": "3.1.3",
108
90
  "reflect-metadata": "0.1.13",
109
91
  "rimraf": "3.0.2",
110
- "rxjs": "7.5.5",
111
- "supertest": "6.2.2",
112
- "ts-jest": "27.1.3",
113
- "ts-morph": "13.0.3",
114
- "ts-node": "10.7.0",
115
- "tsconfig-paths": "3.14.1",
116
- "typescript": "4.6.2"
92
+ "rxjs": "7.5.5"
117
93
  },
118
94
  "devDependencies": {
95
+ "@nestjs/testing": "8.4.4",
96
+ "@types/jest": "27.4.1",
97
+ "@types/supertest": "2.0.12",
98
+ "@typescript-eslint/eslint-plugin": "5.20.0",
99
+ "@typescript-eslint/parser": "5.20.0",
100
+ "coffeescript": "2.6.1",
101
+ "eslint": "8.13.0",
102
+ "eslint-config-prettier": "8.5.0",
119
103
  "find-file-up": "2.0.1",
120
- "pm2": "5.2.0"
104
+ "grunt": "1.5.2",
105
+ "grunt-bg-shell": "2.3.3",
106
+ "grunt-contrib-clean": "2.0.1",
107
+ "grunt-contrib-watch": "1.1.0",
108
+ "grunt-sync": "0.8.2",
109
+ "husky": "7.0.4",
110
+ "jest": "27.5.1",
111
+ "pm2": "5.2.0",
112
+ "prettier": "2.6.2",
113
+ "pretty-quick": "3.1.3",
114
+ "supertest": "6.2.2",
115
+ "ts-jest": "27.1.4",
116
+ "ts-morph": "14.0.0",
117
+ "ts-node": "10.7.0",
118
+ "tsconfig-paths": "3.14.1",
119
+ "typescript": "4.6.3"
121
120
  },
122
121
  "jest": {
123
122
  "collectCoverage": true,
@@ -1,6 +1,6 @@
1
1
  import { IsOptional, Max } from 'class-validator';
2
2
  import { ArgsType, Field, Int } from '@nestjs/graphql';
3
- import { ModelHelper } from '../helpers/model.helper';
3
+ import { maps } from '../helpers/model.helper';
4
4
  import { CoreInput } from '../inputs/core-input.input';
5
5
  import { SortInput } from '../inputs/sort.input';
6
6
 
@@ -90,7 +90,7 @@ export class PaginationArgs extends CoreInput {
90
90
  } = {}
91
91
  ): this {
92
92
  super.map(data, options);
93
- this.sort = ModelHelper.maps(data.sort, SortInput, options.cloneDeep);
93
+ this.sort = maps(data.sort, SortInput, options.cloneDeep);
94
94
  Object.keys(this).forEach((key) => this[key] === undefined && delete this[key]);
95
95
  return this;
96
96
  }
@@ -2,8 +2,9 @@ import * as _ from 'lodash';
2
2
 
3
3
  /**
4
4
  * Helper class for configurations
5
+ * @deprecated use functions directly
5
6
  */
6
- export class Config {
7
+ export default class Config {
7
8
  /**
8
9
  * Special merge function (e.g. for configurations)
9
10
  *
@@ -19,10 +20,29 @@ export class Config {
19
20
  * @returns {any}
20
21
  */
21
22
  public static merge(obj: Record<string, any>, ...sources: any[]): any {
22
- return _.mergeWith(obj, ...sources, (objValue: any, srcValue: any) => {
23
- if (Array.isArray(srcValue)) {
24
- return srcValue;
25
- }
26
- });
23
+ return merge(obj, sources);
27
24
  }
28
25
  }
26
+
27
+ /**
28
+ * Special merge function (e.g. for configurations)
29
+ *
30
+ * It acts like the merge function of lodash:
31
+ * - Source objects are merged into the destination object
32
+ * - Source objects are applied from left to right
33
+ * - Subsequent sources overwrite property assignments of previous sources
34
+ *
35
+ * except that arrays are not merged but overwrite arrays of previous sources.
36
+ *
37
+ * @param {any} obj destination object
38
+ * @param {any[]} sources source objects
39
+ * @returns {any}
40
+ */
41
+
42
+ export function merge(obj: Record<string, any>, ...sources: any[]): any {
43
+ return _.mergeWith(obj, ...sources, (objValue: any, srcValue: any) => {
44
+ if (Array.isArray(srcValue)) {
45
+ return srcValue;
46
+ }
47
+ });
48
+ }
@@ -3,48 +3,57 @@ import { GqlExecutionContext } from '@nestjs/graphql';
3
3
 
4
4
  /**
5
5
  * Helper for context processing
6
+ * @deprecated use functions directly
6
7
  */
7
- export class Context {
8
+ export default class Context {
8
9
  /**
9
10
  * Get data from Context
11
+ * @deprecated use getContextData function
10
12
  */
11
13
  public static getData(context: ExecutionContext): { currentUser: { [key: string]: any }; args: any } {
12
- // Check context
13
- if (!context) {
14
- return { currentUser: null, args: null };
15
- }
14
+ return getContextData(context);
15
+ }
16
+ }
16
17
 
17
- // Init data
18
- let user: { [key: string]: any };
19
- let ctx: any = null;
20
- try {
21
- ctx = GqlExecutionContext.create(context)?.getContext();
22
- } catch (e) {
23
- // console.log(e);
24
- }
18
+ /**
19
+ * Get data from Context
20
+ */
21
+ export function getContextData(context: ExecutionContext): { currentUser: { [key: string]: any }; args: any } {
22
+ // Check context
23
+ if (!context) {
24
+ return { currentUser: null, args: null };
25
+ }
25
26
 
26
- let args: any;
27
- try {
28
- args = GqlExecutionContext.create(context)?.getArgs();
29
- } catch (e) {
30
- // console.log(e);
31
- }
27
+ // Init data
28
+ let user: { [key: string]: any };
29
+ let ctx: any = null;
30
+ try {
31
+ ctx = GqlExecutionContext.create(context)?.getContext();
32
+ } catch (e) {
33
+ // console.log(e);
34
+ }
35
+
36
+ let args: any;
37
+ try {
38
+ args = GqlExecutionContext.create(context)?.getArgs();
39
+ } catch (e) {
40
+ // console.log(e);
41
+ }
32
42
 
33
- // Get data
34
- if (ctx) {
35
- // User from GraphQL context
36
- user = ctx?.user || ctx?.req?.user;
37
- } else {
38
- const request = context?.switchToHttp ? context.switchToHttp()?.getRequest() : null;
39
- if (request) {
40
- args = request.body;
43
+ // Get data
44
+ if (ctx) {
45
+ // User from GraphQL context
46
+ user = ctx?.user || ctx?.req?.user;
47
+ } else {
48
+ const request = context?.switchToHttp ? context.switchToHttp()?.getRequest() : null;
49
+ if (request) {
50
+ args = request.body;
41
51
 
42
- // User from REST context
43
- user = request.user;
44
- }
52
+ // User from REST context
53
+ user = request.user;
45
54
  }
46
-
47
- // Return data
48
- return { currentUser: user, args };
49
55
  }
56
+
57
+ // Return data
58
+ return { currentUser: user, args };
50
59
  }