@volcanicminds/backend 0.1.6 → 0.1.9

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.
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- v16.13.2
1
+ v18.12.0
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
@@ -145,7 +146,7 @@ SRV_RATELIMIT=false
145
146
  SRV_COMPRESS=false
146
147
  ```
147
148
 
148
- # Routes
149
+ ## Routes
149
150
 
150
151
  Minimal setup (routes.ts):
151
152
 
@@ -214,3 +215,44 @@ module.exports = {
214
215
  ]
215
216
  }
216
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
+
232
+ ## Roles
233
+
234
+ By default, there are some basic roles:
235
+
236
+ - **public**
237
+ - **admin**
238
+ - **backoffice**
239
+
240
+ In this way you can add custom roles:
241
+
242
+ ```js
243
+ import { Role } from '@volcanicminds/backend'
244
+
245
+ export const roles: Role[] = [
246
+ {
247
+ code: 'customer',
248
+ name: 'Customer',
249
+ description: 'Customer role'
250
+ }
251
+ ]
252
+ ```
253
+
254
+ You can use something like this to specify which roles (routes.ts) can recall some routes:
255
+
256
+ ```js
257
+ roles: [roles.admin, roles.public]
258
+ ```
package/TODO.md CHANGED
@@ -6,11 +6,9 @@ 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?)
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../lib/config/roles.ts"],"names":[],"mappings":";;;AASa,QAAA,KAAK,GAAW;IAC3B;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"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../lib/config/roles.ts"],"names":[],"mappings":";;;AAEa,QAAA,KAAK,GAAW;IAC3B;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"}
package/dist/index.js CHANGED
@@ -54,6 +54,7 @@ const fastify_2 = __importStar(require("@as-integrations/fastify"));
54
54
  const context_1 = require("./apollo/context");
55
55
  const resolvers_1 = __importDefault(require("./apollo/resolvers"));
56
56
  const type_defs_1 = __importDefault(require("./apollo/type-defs"));
57
+ const common_1 = require("./util/common");
57
58
  function attachApollo(fastify) {
58
59
  return __awaiter(this, void 0, void 0, function* () {
59
60
  log.info('Attach ApolloServer to Fastify');
@@ -69,7 +70,7 @@ function attachApollo(fastify) {
69
70
  function addApolloRouting(fastify, apollo) {
70
71
  return __awaiter(this, void 0, void 0, function* () {
71
72
  if (apollo) {
72
- log.info('Add graphql routes');
73
+ log.trace('Add graphql routes');
73
74
  yield fastify.register((0, fastify_2.default)(apollo), {
74
75
  context: context_1.myContextFunction
75
76
  });
@@ -78,40 +79,25 @@ function addApolloRouting(fastify, apollo) {
78
79
  }
79
80
  function addFastifyRouting(fastify) {
80
81
  return __awaiter(this, void 0, void 0, function* () {
81
- log.info('Add fastify routes');
82
- fastify.addHook('onSend', (req, reply) => __awaiter(this, void 0, void 0, function* () {
83
- log.debug('onSend');
84
- }));
82
+ log.trace('Add fastify routes');
85
83
  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');
84
+ var _a;
85
+ const elapsed = new Date().getTime() - (((_a = req.start) === null || _a === void 0 ? void 0 : _a.getTime()) || 0);
86
+ const message = `Return ${reply.statusCode} - ${req.method} ${req.url} (${elapsed}ms)`;
87
+ reply.statusCode < 300 ? log.info(message) : reply.statusCode < 400 ? log.warn(message) : log.error(message);
96
88
  }));
97
89
  fastify.addHook('onError', (req, reply, error) => __awaiter(this, void 0, void 0, function* () {
98
90
  log.debug(`onError ${error}`);
99
91
  }));
100
92
  fastify.addHook('onRequest', (req, reply) => __awaiter(this, void 0, void 0, function* () {
101
- log.debug(`onRequest ${req.method} ${req.url}`);
93
+ req.start = new Date();
102
94
  req.user = {
103
95
  id: 306,
104
96
  name: 'Huseyin',
105
97
  roles: ['admin', 'public']
106
98
  };
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
- };
99
+ req.data = () => (0, common_1.getData)(req);
100
+ req.pars = () => (0, common_1.getParams)(req);
115
101
  }));
116
102
  const routes = loaderRouter.load();
117
103
  routes && loaderRouter.apply(fastify, routes);
@@ -119,10 +105,10 @@ function addFastifyRouting(fastify) {
119
105
  }
120
106
  function addFastifySwagger(fastify) {
121
107
  return __awaiter(this, void 0, void 0, function* () {
122
- const { NODE_ENV, SWAGGER, SWAGGER_TITLE, SWAGGER_DESCRIPTION, SWAGGER_VERSION } = process.env;
108
+ const { NODE_ENV, SWAGGER, SWAGGER_TITLE, SWAGGER_DESCRIPTION, SWAGGER_VERSION, SWAGGER_PREFIX_URL } = process.env;
123
109
  const loadSwagger = (0, yn_1.default)(SWAGGER, false);
124
110
  if (loadSwagger && NODE_ENV !== 'production') {
125
- log.info('Add swagger plugin');
111
+ log.trace('Add swagger plugin');
126
112
  yield fastify.register(swagger_1.default, {
127
113
  swagger: {
128
114
  info: {
@@ -135,7 +121,7 @@ function addFastifySwagger(fastify) {
135
121
  }
136
122
  });
137
123
  yield fastify.register(swagger_ui_1.default, {
138
- routePrefix: '/documentation',
124
+ routePrefix: SWAGGER_PREFIX_URL || '/documentation',
139
125
  uiConfig: {
140
126
  docExpansion: 'list',
141
127
  deepLinking: true,
@@ -152,51 +138,6 @@ function addFastifySwagger(fastify) {
152
138
  staticCSP: true,
153
139
  transformStaticCSP: (header) => header
154
140
  });
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
141
  }
201
142
  });
202
143
  }
@@ -236,6 +177,8 @@ const start = () => __awaiter(void 0, void 0, void 0, function* () {
236
177
  const elapsed = (new Date().getTime() - begin) / 100;
237
178
  log.info(`All stuff loaded in ${elapsed} sec`);
238
179
  log.info(`🚀 Server ready at ${address}`);
180
+ const loadSwagger = (0, yn_1.default)(process.env.SWAGGER, false);
181
+ loadSwagger && log.info(`📄 Swagger ready at ${address}${process.env.SWAGGER_PREFIX_URL || '/documentation'}`);
239
182
  });
240
183
  return fastify;
241
184
  });
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":["../lib/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEZ,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AAEf,mDAA0B;AAC1B,2DAAkC;AAClC,kDAAmC;AACnC,4DAA6C;AAC7C,8DAA+C;AAE/C,sDAAkD;AAClD,+DAAsC;AACtC,qEAA2C;AAE3C,yDAAgC;AAChC,6DAAoC;AACpC,iEAAwC;AACxC,qEAA2C;AAE3C,2CAA6C;AAC7C,oEAAwG;AACxG,8CAA+D;AAC/D,mEAA0C;AAC1C,mEAAyC;AACzC,0CAAkD;AAGlD,SAAe,YAAY,CAAC,OAAwB;;QAClD,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAY;YACzC,QAAQ,EAAR,mBAAQ;YACR,SAAS,EAAT,mBAAS;YACT,OAAO,EAAE,CAAC,IAAA,kCAAwB,EAAC,OAAO,CAAC,CAAC;SAC7C,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAED,SAAe,gBAAgB,CAAC,OAAwB,EAAE,MAAsC;;QAC9F,IAAI,MAAM,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YAC/B,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAA,iBAAa,EAAC,MAAM,CAAC,EAAE;gBAC5C,OAAO,EAAE,2BAAiB;aAC3B,CAAC,CAAA;SASH;IACH,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,OAAwB;;QACvD,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAM/B,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAO,GAAG,EAAE,KAAK,EAAE,EAAE;;YACjD,MAAM,OAAO,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA,MAAA,GAAG,CAAC,KAAK,0CAAE,OAAO,EAAE,KAAI,CAAC,CAAC,CAAA;YAC1E,MAAM,OAAO,GAAW,UAAU,KAAK,CAAC,UAAU,MAAM,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,KAAK,CAAA;YAC9F,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAG9G,CAAC,CAAA,CAAC,CAAA;QAcF,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrD,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAA;QAC/B,CAAC,CAAA,CAAC,CAAA;QAEF,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAO,GAAG,EAAE,KAAK,EAAE,EAAE;YAChD,GAAG,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;YACtB,GAAG,CAAC,IAAI,GAAG;gBACT,EAAE,EAAE,GAAG;gBACP,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;aAC3B,CAAA;YACD,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,CAAA;YAC7B,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAA;QACjC,CAAC,CAAA,CAAC,CAAA;QAWF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;QAClC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,OAAwB;;QACvD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;QAElH,MAAM,WAAW,GAAG,IAAA,YAAE,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,WAAW,IAAI,QAAQ,KAAK,YAAY,EAAE;YAC5C,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YAE/B,MAAM,OAAO,CAAC,QAAQ,CAAC,iBAAO,EAAE;gBAC9B,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,KAAK,EAAE,aAAa,IAAI,mBAAmB;wBAC3C,WAAW,EAAE,mBAAmB,IAAI,2CAA2C;wBAC/E,OAAO,EAAE,eAAe,IAAI,OAAO;qBACpC;oBACD,QAAQ,EAAE,CAAC,kBAAkB,CAAC;oBAC9B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;iBAC/B;aACF,CAAC,CAAA;YAEF,MAAM,OAAO,CAAC,QAAQ,CAAC,oBAAS,EAAE;gBAChC,WAAW,EAAE,kBAAkB,IAAI,gBAAgB;gBACnD,QAAQ,EAAE;oBACR,YAAY,EAAE,MAAM;oBACpB,WAAW,EAAE,IAAI;oBACjB,wBAAwB,EAAE,CAAC;iBAC5B;gBACD,OAAO,EAAE;oBACP,SAAS,EAAE,UAAU,OAAO,EAAE,KAAK,EAAE,IAAI;wBACvC,IAAI,EAAE,CAAA;oBACR,CAAC;oBACD,UAAU,EAAE,UAAU,OAAO,EAAE,KAAK,EAAE,IAAI;wBACxC,IAAI,EAAE,CAAA;oBACR,CAAC;iBACF;gBACD,SAAS,EAAE,IAAI;gBACf,kBAAkB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;aACvC,CAAC,CAAA;SAmDH;IACH,CAAC;CAAA;AAED,MAAM,KAAK,GAAG,GAAS,EAAE;IACvB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAClC,IAAI,CAAC,KAAK,CAAC,gBAAM,CAAC,CAAA;IAElB,MAAM,CAAC,GAAG,GAAG,gBAAM,CAAA;IACnB,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAEjC,MAAM,IAAI,GAAG,IAAA,YAAE,EAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACzE,MAAM,OAAO,GAAG,MAAM,IAAA,iBAAO,EAAC,IAAI,CAAC,CAAA;IAEnC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IAC5E,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IAEzE,MAAM,UAAU,GAAG,IAAA,YAAE,EAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACpC,MAAM,aAAa,GAAG,IAAA,YAAE,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACxC,MAAM,eAAe,GAAG,IAAA,YAAE,EAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC5C,MAAM,kBAAkB,GAAG,IAAA,YAAE,EAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IAClD,MAAM,iBAAiB,GAAG,IAAA,YAAE,EAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAEhD,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAA;IACxD,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAA;IACvD,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAA;IACpG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,wBAAwB,iBAAiB,EAAE,CAAC,CAAA;IAC/D,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,yBAAyB,kBAAkB,EAAE,CAAC,CAAA;IAEjE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAE9D,CAAC,UAAU,IAAI,eAAe,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,gBAAM,CAAC,CAAC,CAAA;IAGlE,kBAAkB,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,oBAAS,CAAC,CAAC,CAAA;IACzD,aAAa,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,cAAI,CAAC,CAAC,CAAA;IAC/C,iBAAiB,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,kBAAQ,CAAC,CAAC,CAAA;IAEvD,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACvC,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAEhC,MAAM,OAAO;SACV,MAAM,CAAC;QACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,IAAI;KACX,CAAC;SACD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAA;QACpD,GAAG,CAAC,IAAI,CAAC,uBAAuB,OAAO,MAAM,CAAC,CAAA;QAC9C,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAA;QAEzC,MAAM,WAAW,GAAG,IAAA,YAAE,EAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAClD,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,uBAAuB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,gBAAgB,EAAE,CAAC,CAAA;IAChH,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA,CAAA;AAaD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAA;AACtB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAA;AAC7B,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAA"}
@@ -1,27 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.load = void 0;
4
- const roles_1 = require("../config/roles");
5
4
  const glob = require('glob');
6
5
  const path = require('path');
7
6
  function load() {
8
7
  const roles = {};
9
- roles_1.roles.forEach((role) => {
10
- roles[role.code] = role;
11
- });
12
8
  const patterns = [`${__dirname}/../config/roles.{ts,js}`, `${process.cwd()}/config/roles.{ts,js}`];
13
9
  patterns.forEach((pattern) => {
14
- log.i && log.info('Looking for ' + pattern);
15
- glob.sync(pattern).forEach((f, index, values) => {
16
- const base = path.dirname(f);
17
- const dir = path.basename(base);
18
- const file = path.join(dir, path.basename(f));
19
- const groupjs = require(f);
20
- console.log(file);
21
- console.log(groupjs);
10
+ log.d && log.debug('Looking for ' + pattern);
11
+ glob.sync(pattern).forEach((f) => {
12
+ const { roles: configRoles = [] } = require(f);
13
+ configRoles.forEach((role) => {
14
+ roles[role.code] = role;
15
+ });
22
16
  });
23
17
  });
24
- return Object.assign({}, roles);
18
+ log.i && log.info('Roles loaded: ' + Object.keys(roles).join(', '));
19
+ return roles;
25
20
  }
26
21
  exports.load = load;
27
22
  //# sourceMappingURL=roles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../lib/loader/roles.ts"],"names":[],"mappings":";;;AACA,2CAAsD;AAEtD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,SAAgB,IAAI;IAClB,MAAM,KAAK,GAEP,EAAE,CAAA;IAEN,aAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,KAAK,CAAC,IAAI,CAAC,IAAe,CAAC,GAAG,IAAI,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,0BAA0B,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAA;IAElG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,KAAa,EAAE,MAAgB,EAAE,EAAE;YACxE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YAG7C,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,kBAAK,KAAK,CAAW,CAAA;AAC9B,CAAC;AA1BD,oBA0BC"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../lib/loader/roles.ts"],"names":[],"mappings":";;;AAGA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,SAAgB,IAAI;IAClB,MAAM,KAAK,GAAU,EAAE,CAAA;IAEvB,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,0BAA0B,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAA;IAClG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;YACvC,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAC9C,WAAW,CAAC,OAAO,CAAC,CAAC,IAAU,EAAE,EAAE;gBACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YACzB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACnE,OAAO,KAAK,CAAA;AACd,CAAC;AAfD,oBAeC"}
@@ -17,7 +17,7 @@ function load() {
17
17
  const validRoutes = [];
18
18
  const patterns = [`${__dirname}/../api/**/routes.{ts,js}`, `${process.cwd()}/src/api/**/routes.{ts,js}`];
19
19
  patterns.forEach((pattern) => {
20
- log.i && log.info('Looking for ' + pattern);
20
+ log.d && log.debug('Looking for ' + pattern);
21
21
  glob.sync(pattern).forEach((f, index, values) => {
22
22
  const base = path.dirname(f);
23
23
  const dir = path.basename(base);
@@ -30,12 +30,11 @@ function load() {
30
30
  defaultConfig.deprecated = false;
31
31
  if (defaultConfig.controller == null)
32
32
  defaultConfig.controller = 'controller';
33
- log.i && log.info(`Load ${file} with ${routes.length} routes defined`);
34
- log.d && log.debug(`Valid routes loaded from ${file}`);
33
+ log.i && log.info(`Routes loaded: ${file} with ${routes.length} routes defined`);
35
34
  routes.forEach((route, index) => {
36
35
  const errors = [];
37
36
  const { method: methodCase, path: pathName = '/', handler, config, middlewares = [], roles = [] } = route;
38
- const { title = '', description = '', enable = defaultConfig.enable || true, deprecated = defaultConfig.deprecated || false, version = defaultConfig.version || '', params, body, response } = config || {};
37
+ const { title = '', description = '', enable = defaultConfig.enable || true, deprecated = defaultConfig.deprecated || false, tags = defaultConfig.tags || false, version = defaultConfig.version || '', query, params, body, response } = config || {};
39
38
  const endpoint = `${dir}${pathName.replace(/\/+$/, '')}`;
40
39
  const method = methodCase.toUpperCase();
41
40
  const num = index + 1;
@@ -77,7 +76,9 @@ function load() {
77
76
  summary: title,
78
77
  description,
79
78
  deprecated,
79
+ tags,
80
80
  version,
81
+ querystring: query,
81
82
  params,
82
83
  body,
83
84
  response
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../lib/loader/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../lib/loader/router.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -1,5 +1,3 @@
1
1
  'use strict';
2
- const server = require('./index');
3
- server();
4
- console.log('As soon as possible');
2
+ require('./index')();
5
3
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../lib/server.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,MAAM,EAAE,CAAA;AAGR,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../lib/server.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,CAAC,SAAS,CAAC,EAAE,CAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getParams = exports.getData = void 0;
4
+ function getData(req) {
5
+ if (!req)
6
+ return {};
7
+ const hasValues = (obj) => Object.values(obj || {}).some((v) => v !== null && typeof v !== 'undefined');
8
+ const data = hasValues(req.query) ? req.query : hasValues(req.body) ? req.body : null;
9
+ return !data ? {} : Object.assign({}, data);
10
+ }
11
+ exports.getData = getData;
12
+ function getParams(req) {
13
+ if (!req)
14
+ return {};
15
+ const data = req.params || {};
16
+ return !data ? {} : Object.assign({}, data);
17
+ }
18
+ exports.getParams = getParams;
19
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../lib/util/common.ts"],"names":[],"mappings":";;;AAGA,SAAgB,OAAO,CAAC,GAAmB;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,WAAW,CAAC,CAAA;IACvG,MAAM,IAAI,GAAQ,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAW,CAAC,CAAC,mBAAM,IAAI,CAAE,CAAA;AAC3C,CAAC;AAND,0BAMC;AAED,SAAgB,SAAS,CAAC,GAAmB;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IACnB,MAAM,IAAI,GAAQ,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAW,CAAC,CAAC,mBAAM,IAAI,CAAE,CAAA;AAC3C,CAAC;AAJD,8BAIC"}
package/index.d.ts CHANGED
@@ -4,9 +4,11 @@ export {
4
4
  FastifyRequest,
5
5
  AuthenticatedUser,
6
6
  Role,
7
- RoleKey,
7
+ Data,
8
8
  Roles,
9
9
  Route,
10
10
  RouteConfig,
11
11
  ConfiguredRoute
12
12
  } from './types/global'
13
+
14
+ export { getData } from './lib/util/common'
@@ -9,5 +9,14 @@ export async function isAdmin(req: FastifyRequest, reply: FastifyReply) {
9
9
  }
10
10
 
11
11
  export async function demo(req: FastifyRequest, reply: FastifyReply) {
12
- reply.send({ demo: true })
12
+ const data = req.data() // query or body
13
+
14
+ log.debug('data ' + data.id + ' ' + data.role)
15
+
16
+ reply.send({
17
+ id: data.id || 'notfound',
18
+ demo: true,
19
+ date: new Date(),
20
+ body: data
21
+ })
13
22
  }
@@ -1,9 +1,9 @@
1
1
  module.exports = {
2
2
  config: {
3
- title: 'Useful functions',
4
- description: 'Useful functions',
3
+ title: 'User useful functions',
4
+ description: 'User useful functions',
5
5
  controller: 'controller',
6
- tags: ['user', 'code'], // swagger
6
+ tags: ['user'], // swagger
7
7
  enable: true,
8
8
  deprecated: false, // swagger
9
9
  version: false // swagger
@@ -13,13 +13,13 @@ module.exports = {
13
13
  method: 'GET',
14
14
  path: '/',
15
15
  roles: [],
16
- handler: 'me.user',
16
+ handler: 'user.user',
17
17
  middlewares: ['global.isAuthenticated'],
18
18
  config: {
19
19
  enable: true,
20
- title: 'Me title', // swagger summary
21
- description: 'Me description', // swagger
22
- tags: ['user', 'code'], // swagger
20
+ title: 'Get current user', // swagger summary
21
+ description: 'Get current user', // swagger
22
+ tags: ['user'], // swagger
23
23
  deprecated: false, // swagger
24
24
  version: false, // swagger
25
25
  response: {
@@ -44,11 +44,11 @@ module.exports = {
44
44
  method: 'GET',
45
45
  path: '/is-admin',
46
46
  roles: [],
47
- handler: 'me.isAdmin',
47
+ handler: 'user.isAdmin',
48
48
  middlewares: ['global.isAuthenticated'],
49
49
  config: {
50
- title: 'Admin',
51
- description: 'Admin',
50
+ title: 'Check if is an admin',
51
+ description: 'Check if the current user is an admin',
52
52
  enable: true,
53
53
  deprecated: false,
54
54
  version: false
@@ -58,10 +58,10 @@ module.exports = {
58
58
  method: 'GET',
59
59
  path: '/demo',
60
60
  roles: [],
61
- handler: 'me.demo',
61
+ handler: 'user.demo',
62
62
  middlewares: ['global.isAdmin'],
63
63
  config: {
64
- enable: true,
64
+ enable: false,
65
65
  title: 'Me title', // swagger summary
66
66
  description: 'Me description', // swagger
67
67
  tags: ['user', 'code'], // swagger
@@ -88,7 +88,60 @@ module.exports = {
88
88
  description: 'Default response',
89
89
  type: 'object',
90
90
  properties: {
91
- foo: { type: 'string' }
91
+ id: { type: 'string' },
92
+ demo: { type: 'boolean' },
93
+ date: { type: 'string' },
94
+ query: { type: 'object' },
95
+ body: { type: 'object' }
96
+ }
97
+ }
98
+ } // swagger
99
+ }
100
+ },
101
+ {
102
+ method: 'POST',
103
+ path: '/demo',
104
+ roles: [],
105
+ handler: 'user.demo',
106
+ middlewares: ['global.isAdmin'],
107
+ config: {
108
+ enable: false,
109
+ title: 'Me title', // swagger summary
110
+ description: 'Me description', // swagger
111
+ tags: ['user', 'code'], // swagger
112
+ deprecated: false, // swagger
113
+ version: false, // swagger
114
+ body: {
115
+ type: 'object',
116
+ properties: {
117
+ id: {
118
+ type: 'string',
119
+ description: 'user id'
120
+ }
121
+ }
122
+ }, // swagger
123
+ response: {
124
+ 201: {
125
+ description: 'Successful response',
126
+ type: 'object',
127
+ properties: {
128
+ hello: { type: 'string' }
129
+ }
130
+ },
131
+ 200: {
132
+ description: 'Default response',
133
+ type: 'object',
134
+ properties: {
135
+ id: { type: 'string' },
136
+ demo: { type: 'boolean' },
137
+ date: { type: 'string' },
138
+ body: {
139
+ type: 'object',
140
+ properties: {
141
+ id: { type: 'string' },
142
+ role: { type: 'string' }
143
+ }
144
+ }
92
145
  }
93
146
  }
94
147
  } // swagger
@@ -1,11 +1,4 @@
1
1
  import { Role } from '../../types/global'
2
- export {}
3
-
4
- // additional roles
5
- declare global {
6
- enum RoleKey {}
7
- // customer = 'customer'
8
- }
9
2
 
10
3
  export const roles: Role[] = [
11
4
  {
package/lib/index.ts CHANGED
@@ -23,6 +23,8 @@ import fastifyApollo, { fastifyApolloHandler, fastifyApolloDrainPlugin } from '@
23
23
  import { myContextFunction, MyContext } from './apollo/context'
24
24
  import resolvers from './apollo/resolvers'
25
25
  import typeDefs from './apollo/type-defs'
26
+ import { getParams, getData } from './util/common'
27
+ // import { FastifyRequest } from './../types/global'
26
28
 
27
29
  async function attachApollo(fastify: FastifyInstance) {
28
30
  log.info('Attach ApolloServer to Fastify')
@@ -39,7 +41,7 @@ async function attachApollo(fastify: FastifyInstance) {
39
41
 
40
42
  async function addApolloRouting(fastify: FastifyInstance, apollo: ApolloServer<MyContext> | null) {
41
43
  if (apollo) {
42
- log.info('Add graphql routes')
44
+ log.trace('Add graphql routes')
43
45
  await fastify.register(fastifyApollo(apollo), {
44
46
  context: myContextFunction
45
47
  })
@@ -55,60 +57,66 @@ async function addApolloRouting(fastify: FastifyInstance, apollo: ApolloServer<M
55
57
  }
56
58
 
57
59
  async function addFastifyRouting(fastify: FastifyInstance) {
58
- log.info('Add fastify routes')
60
+ log.trace('Add fastify routes')
59
61
 
60
- fastify.addHook('onSend', async (req, reply) => {
61
- log.debug('onSend')
62
- })
62
+ // fastify.addHook('onSend', async (req, reply) => {
63
+ // log.debug('onSend')
64
+ // })
63
65
 
64
66
  fastify.addHook('onResponse', async (req, reply) => {
65
- log.debug('onResponse')
67
+ const elapsed: number = new Date().getTime() - (req.start?.getTime() || 0)
68
+ const message: string = `Return ${reply.statusCode} - ${req.method} ${req.url} (${elapsed}ms)`
69
+ reply.statusCode < 300 ? log.info(message) : reply.statusCode < 400 ? log.warn(message) : log.error(message)
70
+ // log.debug(req)
71
+ // log.debug('onResponse')
66
72
  })
67
73
 
68
- fastify.addHook('onTimeout', async (req, reply) => {
69
- log.debug('onTimeout')
70
- })
74
+ // fastify.addHook('onTimeout', async (req, reply) => {
75
+ // log.debug('onTimeout')
76
+ // })
71
77
 
72
- fastify.addHook('onReady', async () => {
73
- log.debug('onReady')
74
- })
78
+ // fastify.addHook('onReady', async () => {
79
+ // log.debug('onReady')
80
+ // })
75
81
 
76
- fastify.addHook('onClose', async (instance) => {
77
- log.debug('onClose')
78
- })
82
+ // fastify.addHook('onClose', async (instance) => {
83
+ // log.debug('onClose')
84
+ // })
79
85
 
80
86
  fastify.addHook('onError', async (req, reply, error) => {
81
87
  log.debug(`onError ${error}`)
82
88
  })
83
89
 
84
90
  fastify.addHook('onRequest', async (req, reply) => {
85
- log.debug(`onRequest ${req.method} ${req.url}`)
91
+ req.start = new Date()
86
92
  req.user = {
87
93
  id: 306,
88
94
  name: 'Huseyin',
89
95
  roles: ['admin', 'public']
90
96
  }
97
+ req.data = () => getData(req)
98
+ req.pars = () => getParams(req)
91
99
  })
92
100
 
93
- fastify.addHook('preParsing', async (req) => {
94
- log.debug(`preParsing ${req.method} ${req.url}`)
95
- req.user = {
96
- id: 42,
97
- name: 'Jane Doe',
98
- roles: ['admin', 'public']
99
- }
100
- })
101
+ // fastify.addHook('preParsing', async (req) => {
102
+ // log.debug(`preParsing ${req.method} ${req.url}`)
103
+ // req.user = {
104
+ // id: 42,
105
+ // name: 'Jane Doe',
106
+ // roles: ['admin', 'public']
107
+ // }
108
+ // })
101
109
 
102
110
  const routes = loaderRouter.load()
103
111
  routes && loaderRouter.apply(fastify, routes)
104
112
  }
105
113
 
106
114
  async function addFastifySwagger(fastify: FastifyInstance) {
107
- const { NODE_ENV, SWAGGER, SWAGGER_TITLE, SWAGGER_DESCRIPTION, SWAGGER_VERSION } = process.env
108
- const loadSwagger = yn(SWAGGER, false)
115
+ const { NODE_ENV, SWAGGER, SWAGGER_TITLE, SWAGGER_DESCRIPTION, SWAGGER_VERSION, SWAGGER_PREFIX_URL } = process.env
109
116
 
117
+ const loadSwagger = yn(SWAGGER, false)
110
118
  if (loadSwagger && NODE_ENV !== 'production') {
111
- log.info('Add swagger plugin')
119
+ log.trace('Add swagger plugin')
112
120
 
113
121
  await fastify.register(swagger, {
114
122
  swagger: {
@@ -123,7 +131,7 @@ async function addFastifySwagger(fastify: FastifyInstance) {
123
131
  })
124
132
 
125
133
  await fastify.register(swaggerUI, {
126
- routePrefix: '/documentation',
134
+ routePrefix: SWAGGER_PREFIX_URL || '/documentation',
127
135
  uiConfig: {
128
136
  docExpansion: 'list',
129
137
  deepLinking: true,
@@ -141,55 +149,55 @@ async function addFastifySwagger(fastify: FastifyInstance) {
141
149
  transformStaticCSP: (header) => header
142
150
  })
143
151
 
144
- await fastify.put(
145
- '/some-route/:id',
146
- {
147
- schema: {
148
- description: 'post some data',
149
- tags: ['user', 'code'],
150
- deprecated: true,
151
- summary: 'qwerty',
152
- params: {
153
- type: 'object',
154
- properties: {
155
- id: {
156
- type: 'string',
157
- description: 'user id'
158
- }
159
- }
160
- },
161
- body: {
162
- type: 'object',
163
- properties: {
164
- hello: { type: 'string' },
165
- obj: {
166
- type: 'object',
167
- properties: {
168
- some: { type: 'string' }
169
- }
170
- }
171
- }
172
- },
173
- response: {
174
- 201: {
175
- description: 'Successful response',
176
- type: 'object',
177
- properties: {
178
- hello: { type: 'string' }
179
- }
180
- },
181
- default: {
182
- description: 'Default response',
183
- type: 'object',
184
- properties: {
185
- foo: { type: 'string' }
186
- }
187
- }
188
- }
189
- }
190
- },
191
- (req, reply) => {}
192
- )
152
+ // await fastify.put(
153
+ // '/some-route/:id',
154
+ // {
155
+ // schema: {
156
+ // description: 'post some data',
157
+ // tags: ['user', 'code'],
158
+ // deprecated: true,
159
+ // summary: 'qwerty',
160
+ // params: {
161
+ // type: 'object',
162
+ // properties: {
163
+ // id: {
164
+ // type: 'string',
165
+ // description: 'user id'
166
+ // }
167
+ // }
168
+ // },
169
+ // body: {
170
+ // type: 'object',
171
+ // properties: {
172
+ // hello: { type: 'string' },
173
+ // obj: {
174
+ // type: 'object',
175
+ // properties: {
176
+ // some: { type: 'string' }
177
+ // }
178
+ // }
179
+ // }
180
+ // },
181
+ // response: {
182
+ // 201: {
183
+ // description: 'Successful response',
184
+ // type: 'object',
185
+ // properties: {
186
+ // hello: { type: 'string' }
187
+ // }
188
+ // },
189
+ // default: {
190
+ // description: 'Default response',
191
+ // type: 'object',
192
+ // properties: {
193
+ // foo: { type: 'string' }
194
+ // }
195
+ // }
196
+ // }
197
+ // }
198
+ // },
199
+ // (req, reply) => {}
200
+ // )
193
201
  }
194
202
  }
195
203
 
@@ -240,6 +248,9 @@ const start = async () => {
240
248
  const elapsed = (new Date().getTime() - begin) / 100
241
249
  log.info(`All stuff loaded in ${elapsed} sec`)
242
250
  log.info(`🚀 Server ready at ${address}`)
251
+
252
+ const loadSwagger = yn(process.env.SWAGGER, false)
253
+ loadSwagger && log.info(`📄 Swagger ready at ${address}${process.env.SWAGGER_PREFIX_URL || '/documentation'}`)
243
254
  })
244
255
 
245
256
  return fastify
@@ -1,33 +1,22 @@
1
- import { Role, RoleKey, Roles } from '../../types/global'
2
- import { roles as configRoles } from '../config/roles'
1
+ import { Role, Roles } from '../../types/global'
2
+ // import { roles as configRoles } from '../config/roles'
3
3
 
4
4
  const glob = require('glob')
5
5
  const path = require('path')
6
6
 
7
7
  export function load() {
8
- const roles: {
9
- [key in RoleKey]?: Role
10
- } = {}
11
-
12
- configRoles.forEach((role) => {
13
- roles[role.code as RoleKey] = role
14
- })
8
+ const roles: Roles = {}
15
9
 
16
10
  const patterns = [`${__dirname}/../config/roles.{ts,js}`, `${process.cwd()}/config/roles.{ts,js}`]
17
-
18
11
  patterns.forEach((pattern) => {
19
- log.i && log.info('Looking for ' + pattern)
20
- glob.sync(pattern).forEach((f: string, index: number, values: string[]) => {
21
- const base = path.dirname(f)
22
- const dir = path.basename(base)
23
- const file = path.join(dir, path.basename(f))
24
-
25
- // allow array or structure
26
- const groupjs = require(f)
27
- console.log(file)
28
- console.log(groupjs)
12
+ log.d && log.debug('Looking for ' + pattern)
13
+ glob.sync(pattern).forEach((f: string) => {
14
+ const { roles: configRoles = [] } = require(f)
15
+ configRoles.forEach((role: Role) => {
16
+ roles[role.code] = role
17
+ })
29
18
  })
30
19
  })
31
-
32
- return { ...roles } as Roles
20
+ log.i && log.info('Roles loaded: ' + Object.keys(roles).join(', '))
21
+ return roles
33
22
  }
@@ -10,7 +10,7 @@ export function load(): ConfiguredRoute[] {
10
10
  const patterns = [`${__dirname}/../api/**/routes.{ts,js}`, `${process.cwd()}/src/api/**/routes.{ts,js}`]
11
11
 
12
12
  patterns.forEach((pattern) => {
13
- log.i && log.info('Looking for ' + pattern)
13
+ log.d && log.debug('Looking for ' + pattern)
14
14
  glob.sync(pattern).forEach((f: string, index: number, values: string[]) => {
15
15
  const base = path.dirname(f)
16
16
  const dir = path.basename(base)
@@ -25,8 +25,7 @@ export function load(): ConfiguredRoute[] {
25
25
  if (defaultConfig.deprecated == null) defaultConfig.deprecated = false
26
26
  if (defaultConfig.controller == null) defaultConfig.controller = 'controller'
27
27
 
28
- log.i && log.info(`Load ${file} with ${routes.length} routes defined`)
29
- log.d && log.debug(`Valid routes loaded from ${file}`)
28
+ log.i && log.info(`Routes loaded: ${file} with ${routes.length} routes defined`)
30
29
 
31
30
  routes.forEach((route: Route, index: number) => {
32
31
  const errors: string[] = []
@@ -38,7 +37,9 @@ export function load(): ConfiguredRoute[] {
38
37
  description = '',
39
38
  enable = defaultConfig.enable || true,
40
39
  deprecated = defaultConfig.deprecated || false,
40
+ tags = defaultConfig.tags || false,
41
41
  version = defaultConfig.version || '',
42
+ query,
42
43
  params,
43
44
  body,
44
45
  response
@@ -98,7 +99,9 @@ export function load(): ConfiguredRoute[] {
98
99
  summary: title,
99
100
  description,
100
101
  deprecated,
102
+ tags,
101
103
  version,
104
+ querystring: query,
102
105
  params,
103
106
  body,
104
107
  response
package/lib/server.ts CHANGED
@@ -1,7 +1,3 @@
1
1
  'use strict'
2
2
 
3
- const server = require('./index')
4
- server()
5
-
6
- // as soon as possible
7
- console.log('As soon as possible')
3
+ require('./index')()
@@ -0,0 +1,16 @@
1
+ import { FastifyRequest } from 'fastify'
2
+ import { Data } from '../../types/global'
3
+
4
+ export function getData(req: FastifyRequest): Data {
5
+ if (!req) return {}
6
+
7
+ const hasValues = (obj) => Object.values(obj || {}).some((v) => v !== null && typeof v !== 'undefined')
8
+ const data: any = hasValues(req.query) ? req.query : hasValues(req.body) ? req.body : null
9
+ return !data ? ({} as Data) : { ...data }
10
+ }
11
+
12
+ export function getParams(req: FastifyRequest): Data {
13
+ if (!req) return {}
14
+ const data: any = req.params || {}
15
+ return !data ? ({} as Data) : { ...data }
16
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "0.1.6",
3
+ "version": "0.1.9",
4
4
  "codename": "turin",
5
5
  "license": "MIT",
6
6
  "description": "The volcanic (minds) backend",
package/types/global.d.ts CHANGED
@@ -12,14 +12,12 @@ export interface Role {
12
12
  description: string
13
13
  }
14
14
 
15
- export declare enum RoleKey {
16
- public = 'public',
17
- admin = 'admin',
18
- backoffice = 'backoffice'
15
+ export interface Roles {
16
+ [option: string]: Role
19
17
  }
20
18
 
21
- export declare type Roles = {
22
- [key in RoleKey]: Role
19
+ export interface Data {
20
+ [option: string]: any
23
21
  }
24
22
 
25
23
  export interface RouteConfig {
@@ -27,9 +25,11 @@ export interface RouteConfig {
27
25
  description: string
28
26
  enable: boolean
29
27
  deprecated: boolean
28
+ tags?: string[]
30
29
  version: string
31
- params?: any
32
- body?: any
30
+ params?: Data
31
+ query?: Data
32
+ body?: Data
33
33
  response?: any
34
34
  }
35
35
 
@@ -56,8 +56,10 @@ export interface ConfiguredRoute {
56
56
  summary?: string
57
57
  description?: string
58
58
  deprecated?: boolean
59
+ tags?: string[]
59
60
  version?: string
60
61
  params?: any
62
+ querystring?: any
61
63
  body?: any
62
64
  response?: any
63
65
  }
@@ -67,11 +69,17 @@ declare module 'fastify' {
67
69
  import { FastifyRequest } from 'fastify'
68
70
  export interface FastifyRequest {
69
71
  user?: AuthenticatedUser
72
+ start?: Date
73
+ data(): Data
74
+ pars(): Data
70
75
  }
71
76
  }
72
77
 
73
78
  export interface FastifyRequest extends FastifyRequest {
74
79
  user?: AuthenticatedUser
80
+ start?: Date
81
+ data(): Data
82
+ pars(): Data
75
83
  }
76
84
 
77
85
  export interface FastifyReply extends FastifyReply {}
@@ -1 +0,0 @@
1
- {"version":3,"file":"me.js","sourceRoot":"","sources":["../../../../lib/api/me/controller/me.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,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5B,CAAC;CAAA;AAFD,oBAEC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../lib/api/me/routes.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,kBAAkB;QAC/B,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,KAAK;KACf;IACD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;gBACtB,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,qBAAqB;wBAClC,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC1B;qBACF;oBACD,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACvB;qBACF;iBACF;aACF;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,KAAK,EAAE,OAAO;gBACd,WAAW,EAAE,OAAO;gBACpB,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;aACf;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,CAAC,gBAAgB,CAAC;YAC/B,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;gBACtB,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,EAAE,EAAE;4BACF,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,SAAS;yBACvB;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,WAAW,EAAE,qBAAqB;wBAClC,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC1B;qBACF;oBACD,GAAG,EAAE;wBACH,WAAW,EAAE,kBAAkB;wBAC/B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACxB;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAA"}