@volcanicminds/backend 0.2.5 → 0.2.7

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/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM node:16-alpine
1
+ FROM node:18-alpine
2
2
 
3
3
  LABEL version="0.1.0"
4
4
  LABEL description="Volcanic Backend"
package/README.md CHANGED
@@ -15,13 +15,13 @@ And, what you see in [package.json](package.json).
15
15
 
16
16
  ## How to install
17
17
 
18
- ```js
18
+ ```ts
19
19
  yarn add @volcanicminds/backend
20
20
  ```
21
21
 
22
22
  ## How to upgrade packages
23
23
 
24
- ```js
24
+ ```ts
25
25
  yarn upgrade-deps
26
26
  ```
27
27
 
@@ -56,7 +56,7 @@ For docker may be useful set HOST as 0.0.0.0 (instead 127.0.0.1).
56
56
 
57
57
  ## How to run
58
58
 
59
- ```js
59
+ ```ts
60
60
  yarn dev
61
61
  yarn start
62
62
  yarn prod
@@ -66,7 +66,7 @@ When you execute `yarn dev` the server is restarted whenever a .js/.ts file is c
66
66
 
67
67
  ## How to test (logic)
68
68
 
69
- ```js
69
+ ```ts
70
70
  yarn test
71
71
  yarn test -t 'Logging'
72
72
  ```
@@ -96,7 +96,7 @@ Log levels:
96
96
 
97
97
  a bit of code:
98
98
 
99
- ```js
99
+ ```ts
100
100
  log.trace('Annoying message')
101
101
  log.debug('Where is my bug?')
102
102
  log.info('Useful information')
@@ -124,7 +124,7 @@ Other settings:
124
124
 
125
125
  Defaults, see [logger.ts](./lib/util/logger.ts):
126
126
 
127
- ```js
127
+ ```ts
128
128
  const logColorize = yn(LOG_COLORIZE, true)
129
129
  const logTimestamp = yn(LOG_TIMESTAMP, true)
130
130
  const logTimestampReadable = yn(LOG_TIMESTAMP_READABLE, true)
@@ -158,7 +158,7 @@ SRV_COMPRESS=false
158
158
 
159
159
  Minimal setup (routes.ts):
160
160
 
161
- ```js
161
+ ```ts
162
162
  module.exports = {
163
163
  routes: [
164
164
  {
@@ -177,7 +177,7 @@ Some notes:
177
177
  - It's possible define a list of **roles** (optional).
178
178
  - It's possible define a list of **middleware** (optional).
179
179
 
180
- ```js
180
+ ```ts
181
181
  module.exports = {
182
182
  config: {
183
183
  title: 'Example of routes.ts',
@@ -226,7 +226,7 @@ module.exports = {
226
226
 
227
227
  ## Controllers
228
228
 
229
- ```js
229
+ ```ts
230
230
  import { FastifyReply, FastifyRequest } from '@volcanicminds/backend'
231
231
 
232
232
  export async function user(req: FastifyRequest, reply: FastifyReply) {
@@ -247,7 +247,7 @@ By default, there are some basic roles:
247
247
 
248
248
  In this way you can add custom roles:
249
249
 
250
- ```js
250
+ ```ts
251
251
  import { Role } from '@volcanicminds/backend'
252
252
 
253
253
  export const roles: Role[] = [
@@ -261,17 +261,21 @@ export const roles: Role[] = [
261
261
 
262
262
  You can use something like this to specify which roles (routes.ts) can recall some routes:
263
263
 
264
- ```js
264
+ ```ts
265
265
  roles: [roles.admin, roles.public]
266
266
  ```
267
267
 
268
+ ## Database
269
+
270
+ Use package `@volcaniminds/typeorm`
271
+
268
272
  ## Hooks
269
273
 
270
274
  It's possible add hook to application or request/reply lifecycles. More info on [Fastify Hooks](https://www.fastify.io/docs/latest/Reference/Hooks/).
271
275
 
272
276
  Available hooks are:
273
277
 
274
- ```js
278
+ ```ts
275
279
  const hooks = [
276
280
  'onRequest',
277
281
  'onError',
@@ -291,7 +295,7 @@ const hooks = [
291
295
 
292
296
  Under `src` create the `hooks` folder and inside add the hook as shown in the fastify docs, for example:
293
297
 
294
- ```js
298
+ ```ts
295
299
  // src/hooks/onRequest.ts
296
300
 
297
301
  async function hook(req, reply) {
@@ -300,3 +304,28 @@ async function hook(req, reply) {
300
304
 
301
305
  export { hook }
302
306
  ```
307
+
308
+ ## Schemas
309
+
310
+ It's possible add schemas referenceable by `$ref`. More info on [Fastify Validation & Serialization](https://www.fastify.io/docs/latest/Reference/Validation-and-Serialization/).
311
+
312
+ Under `src` create the `schemas` folder and inside add the schema as shown in the fastify docs, for example:
313
+
314
+ ```ts
315
+ module.exports = {
316
+ $id: 'commonSchema',
317
+ type: 'object',
318
+ properties: {
319
+ hello: { type: 'string' }
320
+ }
321
+ }
322
+ ```
323
+
324
+ So, in your `routes.ts` you'll can use something like this:
325
+
326
+ ```ts
327
+ params: { $ref: 'commonSchema#' },
328
+ query: { $ref: 'commonSchema#' },
329
+ body: { $ref: 'commonSchema#' },
330
+ headers: { $ref: 'commonSchema#' }
331
+ ```
package/TODO.md CHANGED
@@ -9,7 +9,6 @@ https://json-schema.org/draft/2020-12/json-schema-validation.html#name-pattern
9
9
  - route schemas ($ref)
10
10
  - validations
11
11
  - authentication
12
- - metrics (plugin?)
13
12
  - api versioning
14
13
 
15
14
  ## knex
package/dist/index.js CHANGED
@@ -44,6 +44,7 @@ const mark = __importStar(require("./lib/util/mark"));
44
44
  const loaderRoles = __importStar(require("./lib/loader/roles"));
45
45
  const loaderRouter = __importStar(require("./lib/loader/router"));
46
46
  const loaderHooks = __importStar(require("./lib/loader/hooks"));
47
+ const loaderSchemas = __importStar(require("./lib/loader/schemas"));
47
48
  const fastify_1 = __importDefault(require("fastify"));
48
49
  const swagger_1 = __importDefault(require("@fastify/swagger"));
49
50
  const swagger_ui_1 = __importDefault(require("@fastify/swagger-ui"));
@@ -56,6 +57,7 @@ const fastify_2 = __importStar(require("@as-integrations/fastify"));
56
57
  const context_1 = require("./lib/apollo/context");
57
58
  const resolvers_1 = __importDefault(require("./lib/apollo/resolvers"));
58
59
  const type_defs_1 = __importDefault(require("./lib/apollo/type-defs"));
60
+ global.log = logger_1.default;
59
61
  function attachApollo(fastify) {
60
62
  return __awaiter(this, void 0, void 0, function* () {
61
63
  log.info('Attach ApolloServer to Fastify');
@@ -82,7 +84,7 @@ function addFastifyRouting(fastify) {
82
84
  return __awaiter(this, void 0, void 0, function* () {
83
85
  log.trace('Add fastify routes');
84
86
  loaderHooks.apply(fastify);
85
- fastify.addHook('onRequest', (req, reply) => __awaiter(this, void 0, void 0, function* () { }));
87
+ loaderSchemas.apply(fastify);
86
88
  const routes = loaderRouter.load();
87
89
  routes && loaderRouter.apply(fastify, routes);
88
90
  });
@@ -130,7 +132,6 @@ function addFastifySwagger(fastify) {
130
132
  const start = () => __awaiter(void 0, void 0, void 0, function* () {
131
133
  const begin = new Date().getTime();
132
134
  mark.print(logger_1.default);
133
- global.log = logger_1.default;
134
135
  global.roles = loaderRoles.load();
135
136
  const opts = (0, yn_1.default)(process.env.LOG_FASTIFY, false) ? { logger: logger_1.default } : {};
136
137
  const fastify = yield (0, fastify_1.default)(opts);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,23 @@ module.exports = {
51
51
  description: 'Check if the current user is an admin',
52
52
  enable: true,
53
53
  deprecated: false,
54
- version: false
54
+ version: false,
55
+ response: {
56
+ 403: {
57
+ description: 'Successful response',
58
+ type: 'object',
59
+ properties: {
60
+ hello: { type: 'string' }
61
+ }
62
+ },
63
+ 200: {
64
+ description: 'Default response',
65
+ type: 'object',
66
+ properties: {
67
+ ok: { type: 'boolean' }
68
+ }
69
+ }
70
+ }
55
71
  }
56
72
  }
57
73
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/users/routes.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,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,WAAW;YACpB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,kBAAkB;gBAC/B,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,cAAc;YACvB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EAAE,uCAAuC;gBACpD,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,KAAK;aACf;SACF;KACF;CACF,CAAA"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../lib/api/users/routes.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,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,WAAW;YACpB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,kBAAkB;gBAC/B,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,cAAc;YACvB,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,MAAM,EAAE;gBACN,KAAK,EAAE,sBAAsB;gBAC7B,WAAW,EAAE,uCAAuC;gBACpD,MAAM,EAAE,IAAI;gBACZ,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,SAAS,EAAE;yBACxB;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAA"}
@@ -22,7 +22,7 @@ function apply(server) {
22
22
  const patterns = [`${__dirname}/../hooks/*.{ts,js}`, `${process.cwd()}/src/hooks/*.{ts,js}`];
23
23
  const allHooks = hooks.reduce((acc, v) => (Object.assign(Object.assign({}, acc), { [v]: [] })), {});
24
24
  patterns.forEach((pattern) => {
25
- log.d && log.debug('Looking for ' + pattern);
25
+ log.t && log.trace('Looking for ' + pattern);
26
26
  glob.sync(pattern).forEach((f) => {
27
27
  const hookName = path.basename(f, path.extname(f));
28
28
  const fn = require(f);
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../lib/loader/hooks.ts"],"names":[],"mappings":";;;AAAA,MAAM,KAAK,GAAG;IACZ,WAAW;IACX,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,SAAS;IACT,SAAS;IACT,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,kBAAkB;IAClB,YAAY;CACb,CAAA;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,SAAgB,KAAK,CAAC,MAAW;IAE/B,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,qBAAqB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;IAC5F,MAAM,QAAQ,GAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAM,GAAG,KAAE,CAAC,CAAC,CAAC,EAAE,EAAgB,IAAG,EAAE,EAAE,CAAC,CAAA;IAGvF,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,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAClD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAErB,IAAI,EAAE,IAAI,IAAI,EAAE;gBACd,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;oBAC9B,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAgB,CAAA;iBACtC;gBACD,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;aAClD;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrB,MAAM,GAAG,GAAe,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC1C,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,KAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAA;QACrE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,IAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAc,CAAC,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;AACJ,CAAC;AA1BD,sBA0BC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../lib/loader/hooks.ts"],"names":[],"mappings":";;;AAAA,MAAM,KAAK,GAAG;IACZ,WAAW;IACX,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,SAAS;IACT,SAAS;IACT,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,kBAAkB;IAClB,YAAY;CACb,CAAA;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,SAAgB,KAAK,CAAC,MAAW;IAC/B,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,qBAAqB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;IAC5F,MAAM,QAAQ,GAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAM,GAAG,KAAE,CAAC,CAAC,CAAC,EAAE,EAAgB,IAAG,EAAE,EAAE,CAAC,CAAA;IAEvF,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,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAClD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAErB,IAAI,EAAE,IAAI,IAAI,EAAE;gBACd,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;oBAC9B,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAgB,CAAA;iBACtC;gBACD,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;aAClD;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrB,MAAM,GAAG,GAAe,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC1C,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,KAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAA;QACrE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,IAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAc,CAAC,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;AACJ,CAAC;AAxBD,sBAwBC"}
@@ -6,7 +6,7 @@ function load() {
6
6
  const roles = {};
7
7
  const patterns = [`${__dirname}/../config/roles.{ts,js}`, `${process.cwd()}/src/config/roles.{ts,js}`];
8
8
  patterns.forEach((pattern) => {
9
- log.d && log.debug('Looking for ' + pattern);
9
+ log.t && log.trace('Looking for ' + pattern);
10
10
  glob.sync(pattern).forEach((f) => {
11
11
  const configRoles = require(f);
12
12
  configRoles.forEach((role) => {
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../lib/loader/roles.ts"],"names":[],"mappings":";;;AAGA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAG5B,SAAgB,IAAI;IAClB,MAAM,KAAK,GAAU,EAAE,CAAA;IAEvB,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,0BAA0B,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAA;IACtG,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,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAE9B,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;AAhBD,oBAgBC"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../lib/loader/roles.ts"],"names":[],"mappings":";;;AACA,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,2BAA2B,CAAC,CAAA;IACtG,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,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAE9B,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;AAhBD,oBAgBC"}
@@ -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.d && log.debug('Looking for ' + pattern);
20
+ log.t && log.trace('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);
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apply = void 0;
4
+ const glob = require('glob');
5
+ const path = require('path');
6
+ function apply(server) {
7
+ const patterns = [`${__dirname}/../schemas/*.{ts,js}`, `${process.cwd()}/src/schemas/*.{ts,js}`];
8
+ let schemaCount = 0;
9
+ patterns.forEach((pattern) => {
10
+ log.t && log.trace('Looking for ' + pattern);
11
+ glob.sync(pattern).forEach((f) => {
12
+ const schemaName = path.basename(f);
13
+ const schema = require(f);
14
+ if (schema != null) {
15
+ log.debug(`* Schema [${schema === null || schema === void 0 ? void 0 : schema.$id}] loaded from ${schemaName}`);
16
+ server.addSchema(schema);
17
+ schemaCount++;
18
+ }
19
+ });
20
+ });
21
+ log.debug(`Schemas loaded: ${schemaCount} referenceable by $ref`);
22
+ }
23
+ exports.apply = apply;
24
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,SAAgB,KAAK,CAAC,MAAW;IAC/B,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,uBAAuB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAA;IAEhG,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,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,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YACnC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACzB,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,GAAG,CAAC,KAAK,CAAC,aAAa,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,iBAAiB,UAAU,EAAE,CAAC,CAAA;gBAChE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;gBACxB,WAAW,EAAE,CAAA;aACd;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,KAAK,CAAC,mBAAmB,WAAW,wBAAwB,CAAC,CAAA;AACnE,CAAC;AAlBD,sBAkBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"isAuthenticated.js","sourceRoot":"","sources":["../../../lib/middleware/isAuthenticated.ts"],"names":[],"mappings":";;AAEA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;AACtB,MAAM,CAAC,OAAO,GAAG,CAAC,GAAmB,EAAE,GAAiB,EAAE,IAAS,EAAE,EAAE;;IACrE,IAAI;QAEF,IAAI,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,EAAE,CAAA,EAAE;YAClB,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,4BAA4B,IAAG,MAAA,GAAG,CAAC,IAAI,0CAAE,EAAE,CAAA,CAAC,CAAA;YAC/D,OAAO,IAAI,EAAE,CAAA;SACd;QACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;KAC1C;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;QAC1D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACxB;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"isAuthenticated.js","sourceRoot":"","sources":["../../../lib/middleware/isAuthenticated.ts"],"names":[],"mappings":";;AAEA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;AACtB,MAAM,CAAC,OAAO,GAAG,CAAC,GAAmB,EAAE,GAAiB,EAAE,IAAS,EAAE,EAAE;;IACrE,IAAI;QACF,IAAI,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,EAAE,CAAA,EAAE;YAClB,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,4BAA4B,IAAG,MAAA,GAAG,CAAC,IAAI,0CAAE,EAAE,CAAA,CAAC,CAAA;YAC/D,OAAO,IAAI,EAAE,CAAA;SACd;QACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;KAC1C;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;QAC1D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACxB;AACH,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ module.exports = {
3
+ $id: 'commonSchema',
4
+ type: 'object',
5
+ properties: {
6
+ hello: { type: 'string' }
7
+ }
8
+ };
9
+ //# sourceMappingURL=example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../../../lib/schemas/example.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC1B;CACF,CAAA"}
package/index.ts CHANGED
@@ -9,6 +9,7 @@ import * as mark from './lib/util/mark'
9
9
  import * as loaderRoles from './lib/loader/roles'
10
10
  import * as loaderRouter from './lib/loader/router'
11
11
  import * as loaderHooks from './lib/loader/hooks'
12
+ import * as loaderSchemas from './lib/loader/schemas'
12
13
 
13
14
  import Fastify, { FastifyInstance } from 'fastify'
14
15
  import swagger from '@fastify/swagger'
@@ -20,11 +21,13 @@ import compress from '@fastify/compress'
20
21
  import rateLimit from '@fastify/rate-limit'
21
22
 
22
23
  import { ApolloServer } from '@apollo/server'
23
- import fastifyApollo, { fastifyApolloHandler, fastifyApolloDrainPlugin } from '@as-integrations/fastify'
24
+ import fastifyApollo, { fastifyApolloDrainPlugin } from '@as-integrations/fastify'
24
25
  import { myContextFunction, MyContext } from './lib/apollo/context'
25
26
  import resolvers from './lib/apollo/resolvers'
26
27
  import typeDefs from './lib/apollo/type-defs'
27
28
 
29
+ global.log = logger
30
+
28
31
  async function attachApollo(fastify: FastifyInstance) {
29
32
  log.info('Attach ApolloServer to Fastify')
30
33
  const apollo = new ApolloServer<MyContext>({
@@ -59,8 +62,7 @@ async function addFastifyRouting(fastify: FastifyInstance) {
59
62
  log.trace('Add fastify routes')
60
63
 
61
64
  loaderHooks.apply(fastify)
62
-
63
- fastify.addHook('onRequest', async (req, reply) => {})
65
+ loaderSchemas.apply(fastify)
64
66
 
65
67
  const routes = loaderRouter.load()
66
68
  routes && loaderRouter.apply(fastify, routes)
@@ -162,8 +164,6 @@ async function addFastifySwagger(fastify: FastifyInstance) {
162
164
  const start = async () => {
163
165
  const begin = new Date().getTime()
164
166
  mark.print(logger)
165
-
166
- global.log = logger
167
167
  global.roles = loaderRoles.load()
168
168
 
169
169
  const opts = yn(process.env.LOG_FASTIFY, false) ? { logger: logger } : {}
@@ -187,8 +187,6 @@ const start = async () => {
187
187
  const apollo = loadApollo ? await attachApollo(fastify) : null
188
188
  // Helmet is not usable with Apollo Server
189
189
  !loadApollo && addPluginHelmet && (await fastify.register(helmet))
190
-
191
- // Usable with Apollo Server
192
190
  addPluginRateLimit && (await fastify.register(rateLimit))
193
191
  addPluginCors && (await fastify.register(cors))
194
192
  addPluginCompress && (await fastify.register(compress))
@@ -50,7 +50,23 @@ module.exports = {
50
50
  description: 'Check if the current user is an admin',
51
51
  enable: true,
52
52
  deprecated: false,
53
- version: false
53
+ version: false,
54
+ response: {
55
+ 403: {
56
+ description: 'Successful response',
57
+ type: 'object',
58
+ properties: {
59
+ hello: { type: 'string' }
60
+ }
61
+ },
62
+ 200: {
63
+ description: 'Default response',
64
+ type: 'object',
65
+ properties: {
66
+ ok: { type: 'boolean' }
67
+ }
68
+ }
69
+ } // swagger
54
70
  }
55
71
  }
56
72
  ]
@@ -18,13 +18,11 @@ const glob = require('glob')
18
18
  const path = require('path')
19
19
 
20
20
  export function apply(server: any): void {
21
- //const patterns = [`{${__dirname},${process.cwd()}}/../hooks/*.{ts,js}`]
22
21
  const patterns = [`${__dirname}/../hooks/*.{ts,js}`, `${process.cwd()}/src/hooks/*.{ts,js}`]
23
22
  const allHooks: any = hooks.reduce((acc, v) => ({ ...acc, [v]: [] as Function[] }), {})
24
- // log.error(allHooks)
25
23
 
26
24
  patterns.forEach((pattern) => {
27
- log.d && log.debug('Looking for ' + pattern)
25
+ log.t && log.trace('Looking for ' + pattern)
28
26
  glob.sync(pattern).forEach((f: string) => {
29
27
  const hookName = path.basename(f, path.extname(f))
30
28
  const fn = require(f)
@@ -1,15 +1,12 @@
1
1
  import { Role, Roles } from '../../types/global'
2
- // import { roles as configRoles } from '../config/roles'
3
-
4
2
  const glob = require('glob')
5
- // const path = require('path')
6
3
 
7
4
  export function load() {
8
5
  const roles: Roles = {}
9
6
 
10
7
  const patterns = [`${__dirname}/../config/roles.{ts,js}`, `${process.cwd()}/src/config/roles.{ts,js}`]
11
8
  patterns.forEach((pattern) => {
12
- log.d && log.debug('Looking for ' + pattern)
9
+ log.t && log.trace('Looking for ' + pattern)
13
10
  glob.sync(pattern).forEach((f: string) => {
14
11
  const configRoles = require(f)
15
12
 
@@ -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.d && log.debug('Looking for ' + pattern)
13
+ log.t && log.trace('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)
@@ -94,7 +94,7 @@ export function load(): ConfiguredRoute[] {
94
94
  base,
95
95
  file: path.join(base, defaultConfig.controller, handlerParts[0]),
96
96
  func: handlerParts[1],
97
- // swagger
97
+ // swagger: doc
98
98
  doc: {
99
99
  summary: title,
100
100
  description,
@@ -0,0 +1,22 @@
1
+ const glob = require('glob')
2
+ const path = require('path')
3
+
4
+ export function apply(server: any): void {
5
+ const patterns = [`${__dirname}/../schemas/*.{ts,js}`, `${process.cwd()}/src/schemas/*.{ts,js}`]
6
+
7
+ let schemaCount = 0
8
+ patterns.forEach((pattern) => {
9
+ log.t && log.trace('Looking for ' + pattern)
10
+ glob.sync(pattern).forEach((f: string) => {
11
+ const schemaName = path.basename(f)
12
+ const schema = require(f)
13
+ if (schema != null) {
14
+ log.debug(`* Schema [${schema?.$id}] loaded from ${schemaName}`)
15
+ server.addSchema(schema)
16
+ schemaCount++
17
+ }
18
+ })
19
+ })
20
+
21
+ log.debug(`Schemas loaded: ${schemaCount} referenceable by $ref`)
22
+ }
@@ -3,7 +3,6 @@ import { FastifyReply, FastifyRequest } from 'fastify'
3
3
  const log = global.log
4
4
  module.exports = (req: FastifyRequest, res: FastifyReply, next: any) => {
5
5
  try {
6
- // TODO: do something and then you can throw an exception or call next()..
7
6
  if (!!req.user?.id) {
8
7
  log.d && log.trace('isAuthenticated - user id ' + req.user?.id)
9
8
  return next()
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ $id: 'commonSchema',
3
+ type: 'object',
4
+ properties: {
5
+ hello: { type: 'string' }
6
+ }
7
+ }
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
3
  /**
4
- * Minimal logger thanks to Pino
4
+ * Minimal logger (thanks Pino)
5
5
  */
6
6
 
7
7
  // log.debug('test log test log test log')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "codename": "turin",
5
5
  "license": "MIT",
6
6
  "description": "The volcanic (minds) backend",
@@ -42,15 +42,15 @@
42
42
  "upgrade-deps": "npm-upgrade"
43
43
  },
44
44
  "dependencies": {
45
- "@apollo/server": "^4.0.2",
45
+ "@apollo/server": "^4.1.1",
46
46
  "@as-integrations/fastify": "^1.1.0",
47
47
  "@fastify/compress": "^6.1.1",
48
- "@fastify/cors": "^8.1.0",
48
+ "@fastify/cors": "^8.2.0",
49
49
  "@fastify/helmet": "^10.0.2",
50
50
  "@fastify/rate-limit": "^7.5.0",
51
- "@fastify/swagger": "^8.0.0",
52
- "@fastify/swagger-ui": "^1.1.0",
53
- "@types/node": "^18.11.3",
51
+ "@fastify/swagger": "^8.1.0",
52
+ "@fastify/swagger-ui": "^1.2.0",
53
+ "@types/node": "^18.11.9",
54
54
  "dotenv": "^16.0.3",
55
55
  "fastify": "^4.9.2",
56
56
  "graphql": "^16.6.0",
@@ -60,7 +60,7 @@
60
60
  "root-require": "^0.3.1"
61
61
  },
62
62
  "devDependencies": {
63
- "jest": "^29.2.1",
63
+ "jest": "^29.3.1",
64
64
  "nodemon": "^2.0.20",
65
65
  "npm-upgrade": "^3.1.0",
66
66
  "ts-node": "^10.9.1",