@volcanicminds/backend 0.1.8 → 0.2.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 (75) hide show
  1. package/Dockerfile +1 -1
  2. package/README.md +14 -0
  3. package/TODO.md +1 -2
  4. package/dist/hooks/onRequest.js +2 -0
  5. package/dist/hooks/onRequest.js.map +1 -0
  6. package/dist/index.js +25 -77
  7. package/dist/index.js.map +1 -1
  8. package/dist/{api/me/controller/me.js → lib/api/user/controller/user.js} +9 -2
  9. package/dist/lib/api/user/controller/user.js.map +1 -0
  10. package/dist/{api/me → lib/api/user}/routes.js +66 -13
  11. package/dist/lib/api/user/routes.js.map +1 -0
  12. package/dist/{apollo → lib/apollo}/context.js +0 -0
  13. package/dist/lib/apollo/context.js.map +1 -0
  14. package/dist/{apollo → lib/apollo}/resolvers.js +0 -0
  15. package/dist/lib/apollo/resolvers.js.map +1 -0
  16. package/dist/{apollo → lib/apollo}/type-defs.js +0 -0
  17. package/dist/lib/apollo/type-defs.js.map +1 -0
  18. package/dist/{config → lib/config}/roles.js +1 -3
  19. package/dist/lib/config/roles.js.map +1 -0
  20. package/dist/lib/hooks/onRequest.js +2 -0
  21. package/dist/lib/hooks/onRequest.js.map +1 -0
  22. package/dist/lib/index.js +190 -0
  23. package/dist/lib/index.js.map +1 -0
  24. package/dist/lib/loader/hooks.js +32 -0
  25. package/dist/lib/loader/hooks.js.map +1 -0
  26. package/dist/{loader → lib/loader}/roles.js +2 -3
  27. package/dist/lib/loader/roles.js.map +1 -0
  28. package/dist/{loader → lib/loader}/router.js +3 -2
  29. package/dist/lib/loader/router.js.map +1 -0
  30. package/dist/{middleware → lib/middleware}/example.js +0 -0
  31. package/dist/lib/middleware/example.js.map +1 -0
  32. package/dist/{middleware → lib/middleware}/isAdmin.js +0 -0
  33. package/dist/lib/middleware/isAdmin.js.map +1 -0
  34. package/dist/{middleware → lib/middleware}/isAuthenticated.js +0 -0
  35. package/dist/lib/middleware/isAuthenticated.js.map +1 -0
  36. package/dist/lib/util/common.js +19 -0
  37. package/dist/lib/util/common.js.map +1 -0
  38. package/dist/{util → lib/util}/logger.js +0 -0
  39. package/dist/lib/util/logger.js.map +1 -0
  40. package/dist/{util → lib/util}/mark.js +1 -1
  41. package/dist/lib/util/mark.js.map +1 -0
  42. package/dist/{util → lib/util}/yn.js +0 -0
  43. package/dist/lib/util/yn.js.map +1 -0
  44. package/dist/server.js +1 -3
  45. package/dist/server.js.map +1 -1
  46. package/index.d.ts +3 -0
  47. package/{lib/index.ts → index.ts} +111 -82
  48. package/lib/api/{me/controller/me.ts → user/controller/user.ts} +10 -1
  49. package/lib/api/{me → user}/routes.ts +66 -13
  50. package/lib/config/roles.ts +1 -3
  51. package/lib/hooks/onRequest.ts +0 -0
  52. package/lib/loader/hooks.ts +33 -0
  53. package/lib/loader/roles.ts +4 -3
  54. package/lib/loader/router.ts +4 -1
  55. package/lib/util/common.ts +16 -0
  56. package/lib/util/mark.ts +1 -1
  57. package/package.json +5 -4
  58. package/server.ts +3 -0
  59. package/tsconfig.json +5 -3
  60. package/types/global.d.ts +16 -2
  61. package/dist/api/me/controller/me.js.map +0 -1
  62. package/dist/api/me/routes.js.map +0 -1
  63. package/dist/apollo/context.js.map +0 -1
  64. package/dist/apollo/resolvers.js.map +0 -1
  65. package/dist/apollo/type-defs.js.map +0 -1
  66. package/dist/config/roles.js.map +0 -1
  67. package/dist/loader/roles.js.map +0 -1
  68. package/dist/loader/router.js.map +0 -1
  69. package/dist/middleware/example.js.map +0 -1
  70. package/dist/middleware/isAdmin.js.map +0 -1
  71. package/dist/middleware/isAuthenticated.js.map +0 -1
  72. package/dist/util/logger.js.map +0 -1
  73. package/dist/util/mark.js.map +0 -1
  74. package/dist/util/yn.js.map +0 -1
  75. package/lib/server.ts +0 -7
package/Dockerfile CHANGED
@@ -17,5 +17,5 @@ RUN apk --no-cache add curl
17
17
  # Bundle app source
18
18
  COPY . .
19
19
 
20
- # EXPOSE 2230
20
+ EXPOSE 2230
21
21
  CMD [ "yarn", "start" ]
package/README.md CHANGED
@@ -132,6 +132,7 @@ SWAGGER=true
132
132
  SWAGGER_TITLE=API Documentation
133
133
  SWAGGER_DESCRIPTION=List of available APIs and schemes to use
134
134
  SWAGGER_VERSION=0.1.0
135
+ SWAGGER_PREFIX_URL=/documentation
135
136
  ```
136
137
 
137
138
  ## Fastify modules
@@ -215,6 +216,19 @@ module.exports = {
215
216
  }
216
217
  ```
217
218
 
219
+ ## Controllers
220
+
221
+ ```js
222
+ import { FastifyReply, FastifyRequest } from '@volcanicminds/backend'
223
+
224
+ export async function user(req: FastifyRequest, reply: FastifyReply) {
225
+ reply.send(req.user || {})
226
+ }
227
+ ```
228
+
229
+ An useful method is `req.data()` to grab **query** or **body** parameters.
230
+ An useful method is `req.pars()` to grab **params** data.
231
+
218
232
  ## Roles
219
233
 
220
234
  By default, there are some basic roles:
package/TODO.md CHANGED
@@ -6,11 +6,10 @@ https://github.com/fastify/fastify-swagger
6
6
  https://www.fastify.io/docs/latest/Reference/Validation-and-Serialization/
7
7
  https://json-schema.org/draft/2020-12/json-schema-validation.html#name-pattern
8
8
 
9
- - roles
10
9
  - database psql
11
10
  - hooks (esposti, es come middlewares ma per nome file specifico es onReady ecc)
12
11
  - models
13
12
  - validations
14
13
  - authentication
15
- - testare middlewares
16
14
  - metrics (plugin?)
15
+ - api versioning
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=onRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onRequest.js","sourceRoot":"","sources":["../../hooks/onRequest.ts"],"names":[],"mappings":""}
package/dist/index.js CHANGED
@@ -35,13 +35,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.getData = void 0;
38
39
  const dotenv_1 = __importDefault(require("dotenv"));
39
40
  dotenv_1.default.config();
40
- const yn_1 = __importDefault(require("./util/yn"));
41
- const logger_1 = __importDefault(require("./util/logger"));
42
- const mark = __importStar(require("./util/mark"));
43
- const loaderRoles = __importStar(require("./loader/roles"));
44
- const loaderRouter = __importStar(require("./loader/router"));
41
+ const yn_1 = __importDefault(require("./lib/util/yn"));
42
+ const logger_1 = __importDefault(require("./lib/util/logger"));
43
+ const mark = __importStar(require("./lib/util/mark"));
44
+ const loaderRoles = __importStar(require("./lib/loader/roles"));
45
+ const loaderRouter = __importStar(require("./lib/loader/router"));
46
+ const loaderHooks = __importStar(require("./lib/loader/hooks"));
45
47
  const fastify_1 = __importDefault(require("fastify"));
46
48
  const swagger_1 = __importDefault(require("@fastify/swagger"));
47
49
  const swagger_ui_1 = __importDefault(require("@fastify/swagger-ui"));
@@ -51,9 +53,10 @@ const compress_1 = __importDefault(require("@fastify/compress"));
51
53
  const rate_limit_1 = __importDefault(require("@fastify/rate-limit"));
52
54
  const server_1 = require("@apollo/server");
53
55
  const fastify_2 = __importStar(require("@as-integrations/fastify"));
54
- const context_1 = require("./apollo/context");
55
- const resolvers_1 = __importDefault(require("./apollo/resolvers"));
56
- const type_defs_1 = __importDefault(require("./apollo/type-defs"));
56
+ const context_1 = require("./lib/apollo/context");
57
+ const resolvers_1 = __importDefault(require("./lib/apollo/resolvers"));
58
+ const type_defs_1 = __importDefault(require("./lib/apollo/type-defs"));
59
+ const common_1 = require("./lib/util/common");
57
60
  function attachApollo(fastify) {
58
61
  return __awaiter(this, void 0, void 0, function* () {
59
62
  log.info('Attach ApolloServer to Fastify');
@@ -79,39 +82,25 @@ function addApolloRouting(fastify, apollo) {
79
82
  function addFastifyRouting(fastify) {
80
83
  return __awaiter(this, void 0, void 0, function* () {
81
84
  log.trace('Add fastify routes');
82
- fastify.addHook('onSend', (req, reply) => __awaiter(this, void 0, void 0, function* () {
83
- log.debug('onSend');
84
- }));
85
+ loaderHooks.apply(fastify);
85
86
  fastify.addHook('onResponse', (req, reply) => __awaiter(this, void 0, void 0, function* () {
86
- log.debug('onResponse');
87
- }));
88
- fastify.addHook('onTimeout', (req, reply) => __awaiter(this, void 0, void 0, function* () {
89
- log.debug('onTimeout');
90
- }));
91
- fastify.addHook('onReady', () => __awaiter(this, void 0, void 0, function* () {
92
- log.debug('onReady');
93
- }));
94
- fastify.addHook('onClose', (instance) => __awaiter(this, void 0, void 0, function* () {
95
- log.debug('onClose');
87
+ var _a;
88
+ const elapsed = new Date().getTime() - (((_a = req.start) === null || _a === void 0 ? void 0 : _a.getTime()) || 0);
89
+ const message = `Return ${reply.statusCode} - ${req.method} ${req.url} (${elapsed}ms)`;
90
+ reply.statusCode < 300 ? log.info(message) : reply.statusCode < 400 ? log.warn(message) : log.error(message);
96
91
  }));
97
92
  fastify.addHook('onError', (req, reply, error) => __awaiter(this, void 0, void 0, function* () {
98
93
  log.debug(`onError ${error}`);
99
94
  }));
100
95
  fastify.addHook('onRequest', (req, reply) => __awaiter(this, void 0, void 0, function* () {
101
- log.debug(`onRequest ${req.method} ${req.url}`);
96
+ req.start = new Date();
102
97
  req.user = {
103
98
  id: 306,
104
99
  name: 'Huseyin',
105
100
  roles: ['admin', 'public']
106
101
  };
107
- }));
108
- fastify.addHook('preParsing', (req) => __awaiter(this, void 0, void 0, function* () {
109
- log.debug(`preParsing ${req.method} ${req.url}`);
110
- req.user = {
111
- id: 42,
112
- name: 'Jane Doe',
113
- roles: ['admin', 'public']
114
- };
102
+ req.data = () => (0, common_1.getData)(req);
103
+ req.pars = () => (0, common_1.getParams)(req);
115
104
  }));
116
105
  const routes = loaderRouter.load();
117
106
  routes && loaderRouter.apply(fastify, routes);
@@ -119,7 +108,7 @@ function addFastifyRouting(fastify) {
119
108
  }
120
109
  function addFastifySwagger(fastify) {
121
110
  return __awaiter(this, void 0, void 0, function* () {
122
- const { NODE_ENV, SWAGGER, SWAGGER_TITLE, SWAGGER_DESCRIPTION, SWAGGER_VERSION } = process.env;
111
+ const { NODE_ENV, SWAGGER, SWAGGER_TITLE, SWAGGER_DESCRIPTION, SWAGGER_VERSION, SWAGGER_PREFIX_URL } = process.env;
123
112
  const loadSwagger = (0, yn_1.default)(SWAGGER, false);
124
113
  if (loadSwagger && NODE_ENV !== 'production') {
125
114
  log.trace('Add swagger plugin');
@@ -135,7 +124,7 @@ function addFastifySwagger(fastify) {
135
124
  }
136
125
  });
137
126
  yield fastify.register(swagger_ui_1.default, {
138
- routePrefix: '/documentation',
127
+ routePrefix: SWAGGER_PREFIX_URL || '/documentation',
139
128
  uiConfig: {
140
129
  docExpansion: 'list',
141
130
  deepLinking: true,
@@ -152,51 +141,6 @@ function addFastifySwagger(fastify) {
152
141
  staticCSP: true,
153
142
  transformStaticCSP: (header) => header
154
143
  });
155
- yield fastify.put('/some-route/:id', {
156
- schema: {
157
- description: 'post some data',
158
- tags: ['user', 'code'],
159
- deprecated: true,
160
- summary: 'qwerty',
161
- params: {
162
- type: 'object',
163
- properties: {
164
- id: {
165
- type: 'string',
166
- description: 'user id'
167
- }
168
- }
169
- },
170
- body: {
171
- type: 'object',
172
- properties: {
173
- hello: { type: 'string' },
174
- obj: {
175
- type: 'object',
176
- properties: {
177
- some: { type: 'string' }
178
- }
179
- }
180
- }
181
- },
182
- response: {
183
- 201: {
184
- description: 'Successful response',
185
- type: 'object',
186
- properties: {
187
- hello: { type: 'string' }
188
- }
189
- },
190
- default: {
191
- description: 'Default response',
192
- type: 'object',
193
- properties: {
194
- foo: { type: 'string' }
195
- }
196
- }
197
- }
198
- }
199
- }, (req, reply) => { });
200
144
  }
201
145
  });
202
146
  }
@@ -236,9 +180,13 @@ const start = () => __awaiter(void 0, void 0, void 0, function* () {
236
180
  const elapsed = (new Date().getTime() - begin) / 100;
237
181
  log.info(`All stuff loaded in ${elapsed} sec`);
238
182
  log.info(`🚀 Server ready at ${address}`);
183
+ const loadSwagger = (0, yn_1.default)(process.env.SWAGGER, false);
184
+ loadSwagger && log.info(`📄 Swagger ready at ${address}${process.env.SWAGGER_PREFIX_URL || '/documentation'}`);
239
185
  });
240
186
  return fastify;
241
187
  });
188
+ var common_2 = require("./lib/util/common");
189
+ Object.defineProperty(exports, "getData", { enumerable: true, get: function () { return common_2.getData; } });
242
190
  module.exports = start;
243
191
  module.exports.server = start;
244
192
  module.exports.default = start;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -25,8 +25,15 @@ function isAdmin(req, reply) {
25
25
  exports.isAdmin = isAdmin;
26
26
  function demo(req, reply) {
27
27
  return __awaiter(this, void 0, void 0, function* () {
28
- reply.send({ demo: true });
28
+ const data = req.data();
29
+ log.debug('data ' + data.id + ' ' + data.role);
30
+ reply.send({
31
+ id: data.id || 'notfound',
32
+ demo: true,
33
+ date: new Date(),
34
+ body: data
35
+ });
29
36
  });
30
37
  }
31
38
  exports.demo = demo;
32
- //# sourceMappingURL=me.js.map
39
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../../lib/api/user/controller/user.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,SAAsB,IAAI,CAAC,GAAmB,EAAE,KAAmB;;QACjE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC5B,CAAC;CAAA;AAFD,oBAEC;AAED,SAAsB,OAAO,CAAC,GAAmB,EAAE,KAAmB;;;QACpE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,KAAK,KAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;;CAC5E;AAFD,0BAEC;AAED,SAAsB,IAAI,CAAC,GAAmB,EAAE,KAAmB;;QACjE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEvB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;QAE9C,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,UAAU;YACzB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,IAAI,EAAE,IAAI;SACX,CAAC,CAAA;IACJ,CAAC;CAAA;AAXD,oBAWC"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  module.exports = {
3
3
  config: {
4
- title: 'Useful functions',
5
- description: 'Useful functions',
4
+ title: 'User useful functions',
5
+ description: 'User useful functions',
6
6
  controller: 'controller',
7
- tags: ['user', 'code'],
7
+ tags: ['user'],
8
8
  enable: true,
9
9
  deprecated: false,
10
10
  version: false
@@ -14,13 +14,13 @@ module.exports = {
14
14
  method: 'GET',
15
15
  path: '/',
16
16
  roles: [],
17
- handler: 'me.user',
17
+ handler: 'user.user',
18
18
  middlewares: ['global.isAuthenticated'],
19
19
  config: {
20
20
  enable: true,
21
- title: 'Me title',
22
- description: 'Me description',
23
- tags: ['user', 'code'],
21
+ title: 'Get current user',
22
+ description: 'Get current user',
23
+ tags: ['user'],
24
24
  deprecated: false,
25
25
  version: false,
26
26
  response: {
@@ -45,11 +45,11 @@ module.exports = {
45
45
  method: 'GET',
46
46
  path: '/is-admin',
47
47
  roles: [],
48
- handler: 'me.isAdmin',
48
+ handler: 'user.isAdmin',
49
49
  middlewares: ['global.isAuthenticated'],
50
50
  config: {
51
- title: 'Admin',
52
- description: 'Admin',
51
+ title: 'Check if is an admin',
52
+ description: 'Check if the current user is an admin',
53
53
  enable: true,
54
54
  deprecated: false,
55
55
  version: false
@@ -59,10 +59,10 @@ module.exports = {
59
59
  method: 'GET',
60
60
  path: '/demo',
61
61
  roles: [],
62
- handler: 'me.demo',
62
+ handler: 'user.demo',
63
63
  middlewares: ['global.isAdmin'],
64
64
  config: {
65
- enable: true,
65
+ enable: false,
66
66
  title: 'Me title',
67
67
  description: 'Me description',
68
68
  tags: ['user', 'code'],
@@ -89,7 +89,60 @@ module.exports = {
89
89
  description: 'Default response',
90
90
  type: 'object',
91
91
  properties: {
92
- foo: { type: 'string' }
92
+ id: { type: 'string' },
93
+ demo: { type: 'boolean' },
94
+ date: { type: 'string' },
95
+ query: { type: 'object' },
96
+ body: { type: 'object' }
97
+ }
98
+ }
99
+ }
100
+ }
101
+ },
102
+ {
103
+ method: 'POST',
104
+ path: '/demo',
105
+ roles: [],
106
+ handler: 'user.demo',
107
+ middlewares: ['global.isAdmin'],
108
+ config: {
109
+ enable: false,
110
+ title: 'Me title',
111
+ description: 'Me description',
112
+ tags: ['user', 'code'],
113
+ deprecated: false,
114
+ version: false,
115
+ body: {
116
+ type: 'object',
117
+ properties: {
118
+ id: {
119
+ type: 'string',
120
+ description: 'user id'
121
+ }
122
+ }
123
+ },
124
+ response: {
125
+ 201: {
126
+ description: 'Successful response',
127
+ type: 'object',
128
+ properties: {
129
+ hello: { type: 'string' }
130
+ }
131
+ },
132
+ 200: {
133
+ description: 'Default response',
134
+ type: 'object',
135
+ properties: {
136
+ id: { type: 'string' },
137
+ demo: { type: 'boolean' },
138
+ date: { type: 'string' },
139
+ body: {
140
+ type: 'object',
141
+ properties: {
142
+ id: { type: 'string' },
143
+ role: { type: 'string' }
144
+ }
145
+ }
93
146
  }
94
147
  }
95
148
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/user/routes.ts"],"names":[],"mappings":"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"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../lib/apollo/context.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;;;;;AAQL,MAAM,iBAAiB,GAA4C,GAAS,EAAE;IAAC,OAAA,CAAC;QACrF,QAAQ,EAAE,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;KAClD,CAAC,CAAA;EAAA,CAAA;AAFW,QAAA,iBAAiB,qBAE5B"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../lib/apollo/resolvers.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAIZ,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE;QACL,UAAU,EAAE,CAAC,MAAW,EAAE,IAAS,EAAE,OAAkB,EAAE,IAAS,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ;KACxF;CACF,CAAA;AAED,kBAAe,SAAS,CAAA"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-defs.js","sourceRoot":"","sources":["../../../lib/apollo/type-defs.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,MAAM,QAAQ,GAAG;;;;CAIhB,CAAA;AAED,kBAAe,QAAQ,CAAA"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.roles = void 0;
4
- exports.roles = [
2
+ module.exports = [
5
3
  {
6
4
  code: 'public',
7
5
  name: 'Public',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../lib/config/roles.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,YAAY;KAC1B;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,iBAAiB;KAC/B;CACF,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=onRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onRequest.js","sourceRoot":"","sources":["../../../lib/hooks/onRequest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,190 @@
1
+ 'use strict';
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const dotenv_1 = __importDefault(require("dotenv"));
39
+ dotenv_1.default.config();
40
+ const yn_1 = __importDefault(require("./util/yn"));
41
+ const logger_1 = __importDefault(require("./util/logger"));
42
+ const mark = __importStar(require("./util/mark"));
43
+ const loaderRoles = __importStar(require("./loader/roles"));
44
+ const loaderRouter = __importStar(require("./loader/router"));
45
+ const loaderHooks = __importStar(require("./loader/hooks"));
46
+ const fastify_1 = __importDefault(require("fastify"));
47
+ const swagger_1 = __importDefault(require("@fastify/swagger"));
48
+ const swagger_ui_1 = __importDefault(require("@fastify/swagger-ui"));
49
+ const cors_1 = __importDefault(require("@fastify/cors"));
50
+ const helmet_1 = __importDefault(require("@fastify/helmet"));
51
+ const compress_1 = __importDefault(require("@fastify/compress"));
52
+ const rate_limit_1 = __importDefault(require("@fastify/rate-limit"));
53
+ const server_1 = require("@apollo/server");
54
+ const fastify_2 = __importStar(require("@as-integrations/fastify"));
55
+ const context_1 = require("./apollo/context");
56
+ const resolvers_1 = __importDefault(require("./apollo/resolvers"));
57
+ const type_defs_1 = __importDefault(require("./apollo/type-defs"));
58
+ const common_1 = require("./util/common");
59
+ function attachApollo(fastify) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ log.info('Attach ApolloServer to Fastify');
62
+ const apollo = new server_1.ApolloServer({
63
+ typeDefs: type_defs_1.default,
64
+ resolvers: resolvers_1.default,
65
+ plugins: [(0, fastify_2.fastifyApolloDrainPlugin)(fastify)]
66
+ });
67
+ yield apollo.start();
68
+ return apollo;
69
+ });
70
+ }
71
+ function addApolloRouting(fastify, apollo) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ if (apollo) {
74
+ log.trace('Add graphql routes');
75
+ yield fastify.register((0, fastify_2.default)(apollo), {
76
+ context: context_1.myContextFunction
77
+ });
78
+ }
79
+ });
80
+ }
81
+ function addFastifyRouting(fastify) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ log.trace('Add fastify routes');
84
+ loaderHooks.apply(fastify);
85
+ fastify.addHook('onResponse', (req, reply) => __awaiter(this, void 0, void 0, function* () {
86
+ var _a;
87
+ const elapsed = new Date().getTime() - (((_a = req.start) === null || _a === void 0 ? void 0 : _a.getTime()) || 0);
88
+ const message = `Return ${reply.statusCode} - ${req.method} ${req.url} (${elapsed}ms)`;
89
+ reply.statusCode < 300 ? log.info(message) : reply.statusCode < 400 ? log.warn(message) : log.error(message);
90
+ }));
91
+ fastify.addHook('onError', (req, reply, error) => __awaiter(this, void 0, void 0, function* () {
92
+ log.debug(`onError ${error}`);
93
+ }));
94
+ fastify.addHook('onRequest', (req, reply) => __awaiter(this, void 0, void 0, function* () {
95
+ req.start = new Date();
96
+ req.user = {
97
+ id: 306,
98
+ name: 'Huseyin',
99
+ roles: ['admin', 'public']
100
+ };
101
+ req.data = () => (0, common_1.getData)(req);
102
+ req.pars = () => (0, common_1.getParams)(req);
103
+ }));
104
+ const routes = loaderRouter.load();
105
+ routes && loaderRouter.apply(fastify, routes);
106
+ });
107
+ }
108
+ function addFastifySwagger(fastify) {
109
+ return __awaiter(this, void 0, void 0, function* () {
110
+ const { NODE_ENV, SWAGGER, SWAGGER_TITLE, SWAGGER_DESCRIPTION, SWAGGER_VERSION, SWAGGER_PREFIX_URL } = process.env;
111
+ const loadSwagger = (0, yn_1.default)(SWAGGER, false);
112
+ if (loadSwagger && NODE_ENV !== 'production') {
113
+ log.trace('Add swagger plugin');
114
+ yield fastify.register(swagger_1.default, {
115
+ swagger: {
116
+ info: {
117
+ title: SWAGGER_TITLE || 'API Documentation',
118
+ description: SWAGGER_DESCRIPTION || 'List of available APIs and schemes to use',
119
+ version: SWAGGER_VERSION || '0.1.0'
120
+ },
121
+ consumes: ['application/json'],
122
+ produces: ['application/json']
123
+ }
124
+ });
125
+ yield fastify.register(swagger_ui_1.default, {
126
+ routePrefix: SWAGGER_PREFIX_URL || '/documentation',
127
+ uiConfig: {
128
+ docExpansion: 'list',
129
+ deepLinking: true,
130
+ defaultModelsExpandDepth: 1
131
+ },
132
+ uiHooks: {
133
+ onRequest: function (request, reply, next) {
134
+ next();
135
+ },
136
+ preHandler: function (request, reply, next) {
137
+ next();
138
+ }
139
+ },
140
+ staticCSP: true,
141
+ transformStaticCSP: (header) => header
142
+ });
143
+ }
144
+ });
145
+ }
146
+ const start = () => __awaiter(void 0, void 0, void 0, function* () {
147
+ const begin = new Date().getTime();
148
+ mark.print(logger_1.default);
149
+ global.log = logger_1.default;
150
+ global.roles = loaderRoles.load();
151
+ const opts = (0, yn_1.default)(process.env.LOG_FASTIFY, false) ? { logger: logger_1.default } : {};
152
+ const fastify = yield (0, fastify_1.default)(opts);
153
+ const { HOST: host = '0.0.0.0', PORT: port = '2230', GRAPHQL } = process.env;
154
+ const { SRV_CORS, SRV_HELMET, SRV_RATELIMIT, SRV_COMPRESS } = process.env;
155
+ const loadApollo = (0, yn_1.default)(GRAPHQL, true);
156
+ const addPluginCors = (0, yn_1.default)(SRV_CORS, true);
157
+ const addPluginHelmet = (0, yn_1.default)(SRV_HELMET, true);
158
+ const addPluginRateLimit = (0, yn_1.default)(SRV_RATELIMIT, true);
159
+ const addPluginCompress = (0, yn_1.default)(SRV_COMPRESS, true);
160
+ log.t && log.trace(`Attach Apollo Server ${loadApollo}`);
161
+ log.t && log.trace(`Add plugin CORS: ${addPluginCors}`);
162
+ log.t && log.trace(`Add plugin HELMET: ${!loadApollo ? addPluginHelmet : 'Not usable with Apollo'}`);
163
+ log.t && log.trace(`Add plugin COMPRESS: ${addPluginCompress}`);
164
+ log.t && log.trace(`Add plugin RATELIMIT: ${addPluginRateLimit}`);
165
+ const apollo = loadApollo ? yield attachApollo(fastify) : null;
166
+ !loadApollo && addPluginHelmet && (yield fastify.register(helmet_1.default));
167
+ addPluginRateLimit && (yield fastify.register(rate_limit_1.default));
168
+ addPluginCors && (yield fastify.register(cors_1.default));
169
+ addPluginCompress && (yield fastify.register(compress_1.default));
170
+ yield addFastifySwagger(fastify);
171
+ yield addApolloRouting(fastify, apollo);
172
+ yield addFastifyRouting(fastify);
173
+ yield fastify
174
+ .listen({
175
+ port: Number(port),
176
+ host: host
177
+ })
178
+ .then((address) => {
179
+ const elapsed = (new Date().getTime() - begin) / 100;
180
+ log.info(`All stuff loaded in ${elapsed} sec`);
181
+ log.info(`🚀 Server ready at ${address}`);
182
+ const loadSwagger = (0, yn_1.default)(process.env.SWAGGER, false);
183
+ loadSwagger && log.info(`📄 Swagger ready at ${address}${process.env.SWAGGER_PREFIX_URL || '/documentation'}`);
184
+ });
185
+ return fastify;
186
+ });
187
+ module.exports = start;
188
+ module.exports.server = start;
189
+ module.exports.default = start;
190
+ //# sourceMappingURL=index.js.map