@lenne.tech/nest-server 9.4.0 → 10.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.
Files changed (180) hide show
  1. package/dist/core/common/args/filter.args.js +2 -3
  2. package/dist/core/common/args/filter.args.js.map +1 -1
  3. package/dist/core/common/args/pagination.args.js +2 -3
  4. package/dist/core/common/args/pagination.args.js.map +1 -1
  5. package/dist/core/common/decorators/restricted.decorator.js +1 -0
  6. package/dist/core/common/decorators/restricted.decorator.js.map +1 -1
  7. package/dist/core/common/enums/comparison-operator.enum.js +1 -1
  8. package/dist/core/common/enums/comparison-operator.enum.js.map +1 -1
  9. package/dist/core/common/enums/logical-operator.enum.js +1 -1
  10. package/dist/core/common/enums/logical-operator.enum.js.map +1 -1
  11. package/dist/core/common/enums/process-type.enum.js +1 -1
  12. package/dist/core/common/enums/process-type.enum.js.map +1 -1
  13. package/dist/core/common/enums/role.enum.d.ts +2 -1
  14. package/dist/core/common/enums/role.enum.js +2 -1
  15. package/dist/core/common/enums/role.enum.js.map +1 -1
  16. package/dist/core/common/enums/sort-order.emum.js +1 -1
  17. package/dist/core/common/enums/sort-order.emum.js.map +1 -1
  18. package/dist/core/common/filters/http-exception-log.filter.js +2 -3
  19. package/dist/core/common/filters/http-exception-log.filter.js.map +1 -1
  20. package/dist/core/common/helpers/config.helper.js.map +1 -1
  21. package/dist/core/common/helpers/db.helper.js.map +1 -1
  22. package/dist/core/common/helpers/graphql.helper.js.map +1 -1
  23. package/dist/core/common/helpers/input.helper.js +1 -0
  24. package/dist/core/common/helpers/input.helper.js.map +1 -1
  25. package/dist/core/common/helpers/service.helper.js.map +1 -1
  26. package/dist/core/common/inputs/combined-filter.input.js +2 -3
  27. package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
  28. package/dist/core/common/inputs/filter.input.js +2 -3
  29. package/dist/core/common/inputs/filter.input.js.map +1 -1
  30. package/dist/core/common/inputs/single-filter.input.js +2 -3
  31. package/dist/core/common/inputs/single-filter.input.js.map +1 -1
  32. package/dist/core/common/inputs/sort.input.js +2 -3
  33. package/dist/core/common/inputs/sort.input.js.map +1 -1
  34. package/dist/core/common/interceptors/check-response.interceptor.js +2 -3
  35. package/dist/core/common/interceptors/check-response.interceptor.js.map +1 -1
  36. package/dist/core/common/interceptors/check-security.interceptor.js +2 -3
  37. package/dist/core/common/interceptors/check-security.interceptor.js.map +1 -1
  38. package/dist/core/common/models/core-persistence.model.js +2 -3
  39. package/dist/core/common/models/core-persistence.model.js.map +1 -1
  40. package/dist/core/common/pipes/check-input.pipe.js +2 -3
  41. package/dist/core/common/pipes/check-input.pipe.js.map +1 -1
  42. package/dist/core/common/pipes/map-and-validate.pipe.js +2 -3
  43. package/dist/core/common/pipes/map-and-validate.pipe.js.map +1 -1
  44. package/dist/core/common/plugins/complexity.plugin.js +2 -3
  45. package/dist/core/common/plugins/complexity.plugin.js.map +1 -1
  46. package/dist/core/common/scalars/any.scalar.js +2 -3
  47. package/dist/core/common/scalars/any.scalar.js.map +1 -1
  48. package/dist/core/common/scalars/date-timestamp.scalar.js +2 -3
  49. package/dist/core/common/scalars/date-timestamp.scalar.js.map +1 -1
  50. package/dist/core/common/scalars/date.scalar.js +2 -3
  51. package/dist/core/common/scalars/date.scalar.js.map +1 -1
  52. package/dist/core/common/scalars/json.scalar.js +2 -3
  53. package/dist/core/common/scalars/json.scalar.js.map +1 -1
  54. package/dist/core/common/services/config.service.js +1 -1
  55. package/dist/core/common/services/config.service.js.map +1 -1
  56. package/dist/core/common/services/email.service.js +2 -3
  57. package/dist/core/common/services/email.service.js.map +1 -1
  58. package/dist/core/common/services/mailjet.service.js +4 -5
  59. package/dist/core/common/services/mailjet.service.js.map +1 -1
  60. package/dist/core/common/services/module.service.js.map +1 -1
  61. package/dist/core/common/services/template.service.js +2 -3
  62. package/dist/core/common/services/template.service.js.map +1 -1
  63. package/dist/core/modules/auth/auth-guard-strategy.enum.js +1 -1
  64. package/dist/core/modules/auth/auth-guard-strategy.enum.js.map +1 -1
  65. package/dist/core/modules/auth/core-auth.controller.js +2 -3
  66. package/dist/core/modules/auth/core-auth.controller.js.map +1 -1
  67. package/dist/core/modules/auth/core-auth.model.js +2 -3
  68. package/dist/core/modules/auth/core-auth.model.js.map +1 -1
  69. package/dist/core/modules/auth/core-auth.module.js +2 -3
  70. package/dist/core/modules/auth/core-auth.module.js.map +1 -1
  71. package/dist/core/modules/auth/core-auth.resolver.js +2 -3
  72. package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
  73. package/dist/core/modules/auth/guards/auth.guard.js.map +1 -1
  74. package/dist/core/modules/auth/guards/refresh-token.guard.js +2 -3
  75. package/dist/core/modules/auth/guards/refresh-token.guard.js.map +1 -1
  76. package/dist/core/modules/auth/guards/roles.guard.js +2 -3
  77. package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
  78. package/dist/core/modules/auth/inputs/core-auth-sign-in.input.js +2 -3
  79. package/dist/core/modules/auth/inputs/core-auth-sign-in.input.js.map +1 -1
  80. package/dist/core/modules/auth/inputs/core-auth-sign-up.input.js +2 -3
  81. package/dist/core/modules/auth/inputs/core-auth-sign-up.input.js.map +1 -1
  82. package/dist/core/modules/auth/services/core-auth.service.js +2 -3
  83. package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
  84. package/dist/core/modules/auth/strategies/jwt-refresh.strategy.js +2 -3
  85. package/dist/core/modules/auth/strategies/jwt-refresh.strategy.js.map +1 -1
  86. package/dist/core/modules/auth/strategies/jwt.strategy.js +2 -3
  87. package/dist/core/modules/auth/strategies/jwt.strategy.js.map +1 -1
  88. package/dist/core/modules/file/core-file-info.model.js +2 -3
  89. package/dist/core/modules/file/core-file-info.model.js.map +1 -1
  90. package/dist/core/modules/file/core-file.controller.js +2 -3
  91. package/dist/core/modules/file/core-file.controller.js.map +1 -1
  92. package/dist/core/modules/file/core-file.resolver.js +2 -3
  93. package/dist/core/modules/file/core-file.resolver.js.map +1 -1
  94. package/dist/core/modules/user/core-user.model.js +2 -3
  95. package/dist/core/modules/user/core-user.model.js.map +1 -1
  96. package/dist/core/modules/user/core-user.service.js.map +1 -1
  97. package/dist/core/modules/user/inputs/core-user-create.input.js +2 -3
  98. package/dist/core/modules/user/inputs/core-user-create.input.js.map +1 -1
  99. package/dist/core/modules/user/inputs/core-user.input.js +2 -3
  100. package/dist/core/modules/user/inputs/core-user.input.js.map +1 -1
  101. package/dist/core.module.js +2 -3
  102. package/dist/core.module.js.map +1 -1
  103. package/dist/main.js.map +1 -1
  104. package/dist/server/common/models/persistence.model.js +2 -3
  105. package/dist/server/common/models/persistence.model.js.map +1 -1
  106. package/dist/server/common/services/cron-jobs.service.js +2 -3
  107. package/dist/server/common/services/cron-jobs.service.js.map +1 -1
  108. package/dist/server/modules/auth/auth.controller.js +2 -3
  109. package/dist/server/modules/auth/auth.controller.js.map +1 -1
  110. package/dist/server/modules/auth/auth.model.js +2 -3
  111. package/dist/server/modules/auth/auth.model.js.map +1 -1
  112. package/dist/server/modules/auth/auth.module.js +2 -3
  113. package/dist/server/modules/auth/auth.module.js.map +1 -1
  114. package/dist/server/modules/auth/auth.resolver.js +2 -3
  115. package/dist/server/modules/auth/auth.resolver.js.map +1 -1
  116. package/dist/server/modules/auth/auth.service.js +2 -3
  117. package/dist/server/modules/auth/auth.service.js.map +1 -1
  118. package/dist/server/modules/auth/inputs/auth-sign-in.input.js +2 -3
  119. package/dist/server/modules/auth/inputs/auth-sign-in.input.js.map +1 -1
  120. package/dist/server/modules/auth/inputs/auth-sign-up.input.js +2 -3
  121. package/dist/server/modules/auth/inputs/auth-sign-up.input.js.map +1 -1
  122. package/dist/server/modules/file/file-info.model.js +2 -3
  123. package/dist/server/modules/file/file-info.model.js.map +1 -1
  124. package/dist/server/modules/file/file.controller.js +2 -3
  125. package/dist/server/modules/file/file.controller.js.map +1 -1
  126. package/dist/server/modules/file/file.module.js +2 -3
  127. package/dist/server/modules/file/file.module.js.map +1 -1
  128. package/dist/server/modules/file/file.resolver.js +2 -3
  129. package/dist/server/modules/file/file.resolver.js.map +1 -1
  130. package/dist/server/modules/file/file.service.js +2 -3
  131. package/dist/server/modules/file/file.service.js.map +1 -1
  132. package/dist/server/modules/file/multer-config.service.js +2 -3
  133. package/dist/server/modules/file/multer-config.service.js.map +1 -1
  134. package/dist/server/modules/user/avatar.controller.js +2 -3
  135. package/dist/server/modules/user/avatar.controller.js.map +1 -1
  136. package/dist/server/modules/user/inputs/user-create.input.js +2 -3
  137. package/dist/server/modules/user/inputs/user-create.input.js.map +1 -1
  138. package/dist/server/modules/user/inputs/user.input.js +2 -3
  139. package/dist/server/modules/user/inputs/user.input.js.map +1 -1
  140. package/dist/server/modules/user/outputs/find-and-count-users-result.output.js +2 -3
  141. package/dist/server/modules/user/outputs/find-and-count-users-result.output.js.map +1 -1
  142. package/dist/server/modules/user/user.model.js +2 -3
  143. package/dist/server/modules/user/user.model.js.map +1 -1
  144. package/dist/server/modules/user/user.module.js +2 -3
  145. package/dist/server/modules/user/user.module.js.map +1 -1
  146. package/dist/server/modules/user/user.resolver.js +5 -6
  147. package/dist/server/modules/user/user.resolver.js.map +1 -1
  148. package/dist/server/modules/user/user.service.js +2 -3
  149. package/dist/server/modules/user/user.service.js.map +1 -1
  150. package/dist/server/server.controller.js +2 -3
  151. package/dist/server/server.controller.js.map +1 -1
  152. package/dist/server/server.module.js +2 -3
  153. package/dist/server/server.module.js.map +1 -1
  154. package/dist/test/test.helper.d.ts +3 -9
  155. package/dist/test/test.helper.js +1 -1
  156. package/dist/test/test.helper.js.map +1 -1
  157. package/dist/tsconfig.build.tsbuildinfo +1 -1
  158. package/package.json +48 -39
  159. package/src/core/common/decorators/restricted.decorator.ts +2 -1
  160. package/src/core/common/enums/role.enum.ts +3 -0
  161. package/src/core/common/helpers/config.helper.ts +1 -1
  162. package/src/core/common/helpers/db.helper.ts +1 -1
  163. package/src/core/common/helpers/graphql.helper.ts +1 -1
  164. package/src/core/common/helpers/input.helper.ts +4 -2
  165. package/src/core/common/helpers/service.helper.ts +2 -2
  166. package/src/core/common/services/config.service.ts +1 -1
  167. package/src/core/common/services/email.service.ts +1 -1
  168. package/src/core/common/services/mailjet.service.ts +1 -3
  169. package/src/core/common/services/module.service.ts +1 -1
  170. package/src/core/common/services/template.service.ts +2 -2
  171. package/src/core/modules/auth/guards/auth.guard.ts +1 -1
  172. package/src/core/modules/auth/services/core-auth.service.ts +1 -1
  173. package/src/core/modules/user/core-user.service.ts +2 -2
  174. package/src/core.module.ts +1 -1
  175. package/src/main.ts +2 -2
  176. package/src/server/common/models/persistence.model.ts +1 -1
  177. package/src/server/modules/file/file.resolver.ts +2 -2
  178. package/src/server/modules/user/user.resolver.ts +3 -3
  179. package/src/server/modules/user/user.service.ts +1 -1
  180. package/src/test/test.helper.ts +11 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lenne.tech/nest-server",
3
- "version": "9.4.0",
3
+ "version": "10.0.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",
@@ -14,7 +14,7 @@
14
14
  "homepage": "https://github.com/lenneTech/nest-server",
15
15
  "license": "MIT",
16
16
  "scripts": {
17
- "build": "rimraf dist && tsc -p tsconfig.build.json",
17
+ "build": "rimraf dist && nest build",
18
18
  "build:pack": "npm pack && echo 'use file:/ROOT_PATH_TO_TGZ_FILE to integrate the package'",
19
19
  "build:dev": "npm run build && yalc push --private",
20
20
  "docs": "npm run docs:ci && open ./public/index.html",
@@ -33,8 +33,10 @@
33
33
  "start:prod": "./node_modules/.bin/grunt production",
34
34
  "start:nodemon": "ts-node -r tsconfig-paths/register src/main.ts",
35
35
  "start:debug": "nodemon --config nodemon-debug.json",
36
- "start:dev": "nodemon",
37
- "start:local": "NODE_ENV=local nodemon",
36
+ "start:dev": "nest start -b swc -w --type-check",
37
+ "start:dev:ts": "nodemon",
38
+ "start:local": "NODE_ENV=local nest start -b swc -w --type-check",
39
+ "start:local:ts": "NODE_ENV=local nodemon",
38
40
  "test": "NODE_ENV=local jest",
39
41
  "test:cov": "NODE_ENV=local jest --coverage",
40
42
  "test:debug": "NODE_ENV=local node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
@@ -60,16 +62,16 @@
60
62
  "node": ">= 16.13.0"
61
63
  },
62
64
  "dependencies": {
63
- "@apollo/gateway": "2.4.0",
64
- "@nestjs/apollo": "11.0.4",
65
- "@nestjs/common": "9.3.12",
66
- "@nestjs/core": "9.3.12",
67
- "@nestjs/graphql": "11.0.4",
68
- "@nestjs/jwt": "10.0.2",
69
- "@nestjs/mongoose": "9.2.2",
70
- "@nestjs/passport": "9.0.3",
71
- "@nestjs/platform-express": "9.3.12",
72
- "@nestjs/schedule": "2.2.0",
65
+ "@apollo/gateway": "2.4.9",
66
+ "@nestjs/apollo": "12.0.7",
67
+ "@nestjs/common": "10.0.5",
68
+ "@nestjs/core": "10.0.5",
69
+ "@nestjs/graphql": "12.0.8",
70
+ "@nestjs/jwt": "10.1.0",
71
+ "@nestjs/mongoose": "10.0.0",
72
+ "@nestjs/passport": "10.0.0",
73
+ "@nestjs/platform-express": "10.0.5",
74
+ "@nestjs/schedule": "3.0.1",
73
75
  "apollo-server-core": "3.11.1",
74
76
  "apollo-server-express": "3.11.1",
75
77
  "bcrypt": "5.1.0",
@@ -78,46 +80,52 @@
78
80
  "compression": "1.7.4",
79
81
  "cookie-parser": "1.4.6",
80
82
  "ejs": "3.1.9",
81
- "graphql": "16.6.0",
83
+ "graphql": "16.7.1",
82
84
  "graphql-query-complexity": "0.12.0",
83
85
  "graphql-subscriptions": "2.0.0",
84
86
  "graphql-upload": "15.0.2",
85
87
  "js-sha256": "0.9.0",
86
88
  "json-to-graphql-query": "2.2.5",
87
- "light-my-request": "5.9.1",
89
+ "light-my-request": "5.10.0",
88
90
  "lodash": "4.17.21",
89
- "mongodb": "4.14.0",
90
- "mongoose": "6.10.4",
91
+ "mongodb": "4.16.0",
92
+ "mongoose": "6.11.3",
91
93
  "mongoose-gridfs": "1.3.0",
92
94
  "multer": "1.4.5-lts.1",
93
95
  "multer-gridfs-storage": "5.0.2",
94
- "node-mailjet": "6.0.2",
95
- "nodemailer": "6.9.1",
96
- "nodemon": "2.0.22",
96
+ "node-mailjet": "6.0.3",
97
+ "nodemailer": "6.9.3",
98
+ "nodemon": "3.0.1",
97
99
  "passport": "0.6.0",
98
100
  "passport-jwt": "4.0.1",
99
101
  "reflect-metadata": "0.1.13",
100
102
  "rfdc": "1.3.0",
101
- "rimraf": "4.4.1",
102
- "rxjs": "7.8.0"
103
+ "rimraf": "5.0.1",
104
+ "rxjs": "7.8.1"
103
105
  },
104
106
  "devDependencies": {
105
- "@nestjs/testing": "9.3.12",
106
- "@types/compression": "1.7.2",
107
+ "@nestjs/cli": "10.1.8",
108
+ "@nestjs/schematics": "10.0.1",
109
+ "@nestjs/testing": "10.0.5",
110
+ "@swc/cli": "^0.1.62",
111
+ "@swc/core": "1.3.69",
112
+ "@swc/jest": "0.2.26",
113
+ "@types/compression": "^1.7.2",
107
114
  "@types/cookie-parser": "1.4.3",
108
115
  "@types/cron": "2.0.1",
109
116
  "@types/ejs": "3.1.2",
110
- "@types/jest": "29.5.0",
111
- "@types/lodash": "4.14.192",
117
+ "@types/express": "4.17.17",
118
+ "@types/jest": "29.5.3",
119
+ "@types/lodash": "4.14.195",
112
120
  "@types/multer": "1.4.7",
113
- "@types/node": "18.15.10",
114
- "@types/nodemailer": "6.4.7",
121
+ "@types/node": "20.4.2",
122
+ "@types/nodemailer": "6.4.8",
115
123
  "@types/passport": "1.0.12",
116
124
  "@types/supertest": "2.0.12",
117
- "@typescript-eslint/eslint-plugin": "5.57.0",
118
- "@typescript-eslint/parser": "5.57.0",
125
+ "@typescript-eslint/eslint-plugin": "6.0.0",
126
+ "@typescript-eslint/parser": "6.0.0",
119
127
  "coffeescript": "2.7.0",
120
- "eslint": "8.36.0",
128
+ "eslint": "8.45.0",
121
129
  "eslint-config-prettier": "8.8.0",
122
130
  "find-file-up": "2.0.1",
123
131
  "grunt": "1.6.1",
@@ -126,17 +134,18 @@
126
134
  "grunt-contrib-watch": "1.1.0",
127
135
  "grunt-sync": "0.8.2",
128
136
  "husky": "8.0.3",
129
- "jest": "29.5.0",
137
+ "jest": "29.6.1",
130
138
  "npm-watch": "0.11.0",
131
139
  "pm2": "5.3.0",
132
- "prettier": "2.8.7",
140
+ "prettier": "2.8.8",
133
141
  "pretty-quick": "3.1.3",
134
142
  "supertest": "6.3.3",
135
- "ts-jest": "29.0.5",
136
- "ts-morph": "17.0.1",
143
+ "ts-jest": "29.1.1",
144
+ "ts-loader": "9.4.4",
145
+ "ts-morph": "19.0.0",
137
146
  "ts-node": "10.9.1",
138
- "tsconfig-paths": "4.1.2",
139
- "typescript": "5.0.2",
147
+ "tsconfig-paths": "4.2.0",
148
+ "typescript": "5.1.6",
140
149
  "yalc": "1.0.0-pre.53"
141
150
  },
142
151
  "overrides": {
@@ -154,7 +163,7 @@
154
163
  ],
155
164
  "rootDir": "src",
156
165
  "testEnvironment": "node",
157
- "testRegex": ".spec.ts$",
166
+ "testRegex": ".*\\.spec\\.ts$",
158
167
  "transform": {
159
168
  ".+\\.(t|j)s$": "ts-jest"
160
169
  }
@@ -4,7 +4,7 @@ import { ProcessType } from '../enums/process-type.enum';
4
4
  import { RoleEnum } from '../enums/role.enum';
5
5
  import { getIncludedIds } from '../helpers/db.helper';
6
6
  import { RequireAtLeastOne } from '../types/required-at-least-one.type';
7
- import * as _ from 'lodash';
7
+ import _ = require('lodash');
8
8
 
9
9
  /**
10
10
  * Restricted meta key
@@ -137,6 +137,7 @@ export const checkRestricted = (
137
137
  roles.includes(RoleEnum.S_EVERYONE) ||
138
138
  user?.hasRole?.(roles) ||
139
139
  (user?.id && roles.includes(RoleEnum.S_USER)) ||
140
+ (roles.includes(RoleEnum.S_SELF) && getIncludedIds(config.dbObject, user)) ||
140
141
  (roles.includes(RoleEnum.S_CREATOR) && getIncludedIds(config.dbObject?.createdBy, user))
141
142
  ) {
142
143
  valid = true;
@@ -53,4 +53,7 @@ export enum RoleEnum {
53
53
 
54
54
  // User must be the creator of the processed object(s) (see createdBy property of object(s))
55
55
  S_CREATOR = 's_creator',
56
+
57
+ // User must be herself/himself
58
+ S_SELF = 's_self',
56
59
  }
@@ -1,4 +1,4 @@
1
- import * as _ from 'lodash';
1
+ import _ = require('lodash');
2
2
 
3
3
  /**
4
4
  * Helper class for configurations
@@ -1,5 +1,5 @@
1
1
  import { FieldNode, GraphQLResolveInfo, SelectionNode } from 'graphql';
2
- import * as _ from 'lodash';
2
+ import _ = require('lodash');
3
3
  import { Document, Model, PopulateOptions, Query, Types } from 'mongoose';
4
4
  import { ResolveSelector } from '../interfaces/resolve-selector.interface';
5
5
  import { CoreModel } from '../models/core-model.model';
@@ -12,7 +12,7 @@ import {
12
12
  ValueNode,
13
13
  VariableNode,
14
14
  } from 'graphql';
15
- import * as _ from 'lodash';
15
+ import _ = require('lodash');
16
16
 
17
17
  /**
18
18
  * Interface for GraphQLFieldsConfig
@@ -3,8 +3,8 @@ import { plainToInstance } from 'class-transformer';
3
3
  import { validate } from 'class-validator';
4
4
  import { ValidatorOptions } from 'class-validator/types/validation/ValidatorOptions';
5
5
  import { Kind } from 'graphql/index';
6
- import * as _ from 'lodash';
7
- import * as rfdc from 'rfdc';
6
+ import _ = require('lodash');
7
+ import rfdc = require('rfdc');
8
8
  import { checkRestricted } from '../decorators/restricted.decorator';
9
9
  import { ProcessType } from '../enums/process-type.enum';
10
10
  import { RoleEnum } from '../enums/role.enum';
@@ -250,6 +250,8 @@ export async function check(
250
250
  (roles.includes(RoleEnum.S_USER) && user?.id) ||
251
251
  // check if the user has at least one of the required roles
252
252
  user?.hasRole?.(roles) ||
253
+ // check if the user is herself / himself
254
+ (roles.includes(RoleEnum.S_SELF) && equalIds(config.dbObject, user)) ||
253
255
  // check if the user is the creator
254
256
  (roles.includes(RoleEnum.S_CREATOR) && equalIds(config.dbObject?.createdBy, user))
255
257
  ) {
@@ -1,8 +1,8 @@
1
1
  import { UnauthorizedException } from '@nestjs/common';
2
- import * as bcrypt from 'bcrypt';
2
+ import bcrypt = require('bcrypt');
3
3
  import { plainToInstance } from 'class-transformer';
4
4
  import { sha256 } from 'js-sha256';
5
- import * as _ from 'lodash';
5
+ import _ = require('lodash');
6
6
  import { Types } from 'mongoose';
7
7
  import { RoleEnum } from '../enums/role.enum';
8
8
  import { PrepareInputOptions } from '../interfaces/prepare-input-options.interface';
@@ -1,4 +1,4 @@
1
- import * as _ from 'lodash';
1
+ import _ = require('lodash');
2
2
  import { cloneDeep } from 'lodash';
3
3
  import { BehaviorSubject, firstValueFrom } from 'rxjs';
4
4
  import { filter, map } from 'rxjs/operators';
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@nestjs/common';
2
- import * as nodemailer from 'nodemailer';
2
+ import nodemailer = require('nodemailer');
3
3
  import { Attachment } from 'nodemailer/lib/mailer';
4
4
  import { isNonEmptyString, isTrue, returnFalse } from '../helpers/input.helper';
5
5
  import { ConfigService } from './config.service';
@@ -1,8 +1,6 @@
1
1
  import { HttpException, Injectable } from '@nestjs/common';
2
- import { template } from 'lodash';
3
2
  import { ConfigService } from './config.service';
4
- // eslint-disable-next-line
5
- const Mailjet = require('node-mailjet');
3
+ import Mailjet from 'node-mailjet';
6
4
 
7
5
  /**
8
6
  * Mailjet service
@@ -1,4 +1,4 @@
1
- import * as _ from 'lodash';
1
+ import _ = require('lodash');
2
2
  import { Document, Model, Types } from 'mongoose';
3
3
  import { ProcessType } from '../enums/process-type.enum';
4
4
  import { getStringIds, popAndMap } from '../helpers/db.helper';
@@ -1,7 +1,7 @@
1
1
  import { Injectable } from '@nestjs/common';
2
- import * as ejs from 'ejs';
2
+ import ejs = require('ejs');
3
3
  import { TemplateFunction } from 'ejs';
4
- import * as fs from 'fs';
4
+ import fs = require('fs');
5
5
  import { join } from 'path';
6
6
  import { ConfigService } from './config.service';
7
7
 
@@ -3,7 +3,7 @@ import { GqlExecutionContext } from '@nestjs/graphql';
3
3
  import { AuthModuleOptions, Type } from '@nestjs/passport';
4
4
  import { defaultOptions } from '@nestjs/passport/dist/options';
5
5
  import { memoize } from '@nestjs/passport/dist/utils/memoize.util';
6
- import * as passport from 'passport';
6
+ import passport = require('passport');
7
7
  import { AuthGuardStrategy } from '../auth-guard-strategy.enum';
8
8
  import { ExpiredRefreshTokenException } from '../exceptions/expired-refresh-token.exception';
9
9
  import { ExpiredTokenException } from '../exceptions/expired-token.exception';
@@ -1,6 +1,6 @@
1
1
  import { BadRequestException, Injectable, UnauthorizedException } from '@nestjs/common';
2
2
  import { JwtService } from '@nestjs/jwt';
3
- import * as bcrypt from 'bcrypt';
3
+ import bcrypt = require('bcrypt');
4
4
  import { randomUUID } from 'crypto';
5
5
  import { sha256 } from 'js-sha256';
6
6
  import { getStringIds } from '../../../common/helpers/db.helper';
@@ -1,6 +1,6 @@
1
1
  import { BadRequestException, NotFoundException, UnprocessableEntityException } from '@nestjs/common';
2
- import * as bcrypt from 'bcrypt';
3
- import * as crypto from 'crypto';
2
+ import bcrypt = require('bcrypt');
3
+ import crypto = require('crypto');
4
4
  import { sha256 } from 'js-sha256';
5
5
  import { Document, Model } from 'mongoose';
6
6
  import { assignPlain, prepareServiceOptionsForCreate } from '../../common/helpers/input.helper';
@@ -4,7 +4,7 @@ import { APP_PIPE } from '@nestjs/core';
4
4
  import { GraphQLModule } from '@nestjs/graphql';
5
5
  import { MongooseModule } from '@nestjs/mongoose';
6
6
  import { Context } from 'apollo-server-core';
7
- import * as graphqlUploadExpress from 'graphql-upload/graphqlUploadExpress.js';
7
+ import graphqlUploadExpress = require('graphql-upload/graphqlUploadExpress.js');
8
8
  import { merge } from './core/common/helpers/config.helper';
9
9
  import { IServerOptions } from './core/common/interfaces/server-options.interface';
10
10
  import { MapAndValidatePipe } from './core/common/pipes/map-and-validate.pipe';
package/src/main.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { NestFactory } from '@nestjs/core';
2
2
  import { NestExpressApplication } from '@nestjs/platform-express';
3
3
  import { exec } from 'child_process';
4
- import * as compression from 'compression';
5
- import * as cookieParser from 'cookie-parser';
4
+ import compression = require('compression');
5
+ import cookieParser = require('cookie-parser');
6
6
  import envConfig from './config.env';
7
7
  import { HttpExceptionLogFilter } from './core/common/filters/http-exception-log.filter';
8
8
  import { ServerModule } from './server/server.module';
@@ -1,5 +1,5 @@
1
1
  import { Types } from 'mongoose';
2
- import * as mongoose from 'mongoose';
2
+ import mongoose = require('mongoose');
3
3
  import { Prop } from '@nestjs/mongoose';
4
4
  import { Field, ObjectType } from '@nestjs/graphql';
5
5
  import { CorePersistenceModel } from '../../../core/common/models/core-persistence.model';
@@ -1,7 +1,7 @@
1
1
  import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
2
- import * as fs from 'fs';
2
+ import fs = require('fs');
3
3
  import { createWriteStream } from 'fs';
4
- import * as GraphQLUpload from 'graphql-upload/GraphQLUpload.js';
4
+ import GraphQLUpload = require('graphql-upload/GraphQLUpload.js');
5
5
  import { Roles } from '../../../core/common/decorators/roles.decorator';
6
6
  import { RoleEnum } from '../../../core/common/enums/role.enum';
7
7
  import { FileUpload } from '../../../core/modules/file/interfaces/file-upload.interface';
@@ -62,7 +62,7 @@ export class UserResolver {
62
62
  async getUser(@GraphQLServiceOptions() serviceOptions: ServiceOptions, @Args('id') id: string): Promise<User> {
63
63
  return await this.userService.get(id, {
64
64
  ...serviceOptions,
65
- roles: [RoleEnum.ADMIN, RoleEnum.S_CREATOR],
65
+ roles: [RoleEnum.ADMIN, RoleEnum.S_CREATOR, RoleEnum.S_SELF],
66
66
  });
67
67
  }
68
68
 
@@ -111,7 +111,7 @@ export class UserResolver {
111
111
  async deleteUser(@GraphQLServiceOptions() serviceOptions: ServiceOptions, @Args('id') id: string): Promise<User> {
112
112
  return await this.userService.delete(id, {
113
113
  ...serviceOptions,
114
- roles: [RoleEnum.ADMIN, RoleEnum.S_CREATOR],
114
+ roles: [RoleEnum.ADMIN, RoleEnum.S_CREATOR, RoleEnum.S_SELF],
115
115
  });
116
116
  }
117
117
 
@@ -138,7 +138,7 @@ export class UserResolver {
138
138
  return await this.userService.update(id, input, {
139
139
  ...serviceOptions,
140
140
  inputType: UserInput,
141
- roles: [RoleEnum.ADMIN, RoleEnum.S_CREATOR],
141
+ roles: [RoleEnum.ADMIN, RoleEnum.S_CREATOR, RoleEnum.S_SELF],
142
142
  });
143
143
  }
144
144
 
@@ -1,6 +1,6 @@
1
1
  import { Inject, Injectable, UnauthorizedException, UnprocessableEntityException } from '@nestjs/common';
2
2
  import { InjectModel } from '@nestjs/mongoose';
3
- import * as fs from 'fs';
3
+ import fs = require('fs');
4
4
  import { PubSub } from 'graphql-subscriptions';
5
5
  import { Model } from 'mongoose';
6
6
  import { ServiceOptions } from '../../../core/common/interfaces/service-options.interface';
@@ -1,14 +1,11 @@
1
1
  import { INestApplication } from '@nestjs/common';
2
2
  import { Blob } from 'buffer';
3
- import * as fs from 'fs';
4
3
  import { createClient } from 'graphql-ws';
5
4
  import { jsonToGraphQLQuery } from 'json-to-graphql-query';
6
- import * as LightMyRequest from 'light-my-request';
7
5
  import { Types } from 'mongoose';
8
- import * as superagent from 'superagent';
9
- import * as supertest from 'supertest';
10
- import * as util from 'util';
11
- import * as ws from 'ws';
6
+ import supertest = require('supertest');
7
+ import util = require('util');
8
+ import ws = require('ws');
12
9
  import { getStringIds } from '../core/common/helpers/db.helper';
13
10
 
14
11
  /**
@@ -66,7 +63,7 @@ export interface TestGraphQLConfig {
66
63
  }
67
64
 
68
65
  export interface TestGraphQLAttachment {
69
- file: Blob | Buffer | fs.ReadStream | string | boolean | number;
66
+ file: Blob | Buffer | ReadableStream | string | boolean | number;
70
67
  options?: string | { filename?: string | undefined; contentType?: string | undefined };
71
68
  }
72
69
 
@@ -157,7 +154,7 @@ export class TestHelper {
157
154
  * Download file from URL
158
155
  * @return Superagent response with additional data field containing the content of the file
159
156
  */
160
- download(url: string, token?: string): Promise<superagent.Response & { data: string }> {
157
+ download(url: string, token?: string): Promise<any> {
161
158
  return new Promise((resolve, reject) => {
162
159
  const request = supertest((this.app as INestApplication).getHttpServer()).get(url);
163
160
  if (token) {
@@ -176,9 +173,9 @@ export class TestHelper {
176
173
  err ? reject(err) : callback(null, null);
177
174
  });
178
175
  })
179
- .end((err, res: superagent.Response) => {
180
- (res as superagent.Response & { data: string }).data = Buffer.from(data, 'binary').toString();
181
- err ? reject(err) : resolve(res as superagent.Response & { data: string });
176
+ .end((err, res: any) => {
177
+ (res as any & { data: string }).data = Buffer.from(data, 'binary').toString();
178
+ err ? reject(err) : resolve(res as any);
182
179
  });
183
180
  });
184
181
  }
@@ -269,7 +266,7 @@ export class TestHelper {
269
266
  }
270
267
 
271
268
  // Request configuration
272
- const requestConfig: LightMyRequest.InjectOptions = {
269
+ const requestConfig: any = {
273
270
  method: 'POST',
274
271
  url: '/graphql',
275
272
  payload: { query },
@@ -320,7 +317,7 @@ export class TestHelper {
320
317
  const { token, statusCode, log, logError, attachments } = config;
321
318
 
322
319
  // Request configuration
323
- const requestConfig: LightMyRequest.InjectOptions = {
320
+ const requestConfig: any = {
324
321
  method: config.method,
325
322
  url,
326
323
  };
@@ -427,7 +424,7 @@ export class TestHelper {
427
424
  */
428
425
  protected async getResponse(
429
426
  token: string,
430
- requestConfig: LightMyRequest.InjectOptions,
427
+ requestConfig: any,
431
428
  statusCode: number,
432
429
  log: boolean,
433
430
  logError: boolean,