@volcanicminds/backend 0.2.6 → 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 +1 -1
- package/README.md +29 -0
- package/TODO.md +0 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api/users/routes.js +17 -1
- package/dist/lib/api/users/routes.js.map +1 -1
- package/dist/lib/loader/hooks.js +1 -1
- package/dist/lib/loader/hooks.js.map +1 -1
- package/dist/lib/loader/roles.js +1 -1
- package/dist/lib/loader/roles.js.map +1 -1
- package/dist/lib/loader/router.js +1 -1
- package/dist/lib/loader/schemas.js +24 -0
- package/dist/lib/loader/schemas.js.map +1 -0
- package/dist/lib/middleware/isAuthenticated.js.map +1 -1
- package/dist/lib/schemas/example.js +9 -0
- package/dist/lib/schemas/example.js.map +1 -0
- package/index.ts +2 -1
- package/lib/api/users/routes.ts +17 -1
- package/lib/loader/hooks.ts +1 -3
- package/lib/loader/roles.ts +1 -4
- package/lib/loader/router.ts +2 -2
- package/lib/loader/schemas.ts +22 -0
- package/lib/middleware/isAuthenticated.ts +0 -1
- package/lib/schemas/example.ts +7 -0
- package/lib/util/logger.ts +1 -1
- package/package.json +7 -7
package/Dockerfile
CHANGED
package/README.md
CHANGED
|
@@ -265,6 +265,10 @@ You can use something like this to specify which roles (routes.ts) can recall so
|
|
|
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/).
|
|
@@ -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
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"));
|
|
@@ -83,7 +84,7 @@ function addFastifyRouting(fastify) {
|
|
|
83
84
|
return __awaiter(this, void 0, void 0, function* () {
|
|
84
85
|
log.trace('Add fastify routes');
|
|
85
86
|
loaderHooks.apply(fastify);
|
|
86
|
-
|
|
87
|
+
loaderSchemas.apply(fastify);
|
|
87
88
|
const routes = loaderRouter.load();
|
|
88
89
|
routes && loaderRouter.apply(fastify, routes);
|
|
89
90
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEZ,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AAEf,uDAA8B;AAC9B,+DAAsC;AACtC,sDAAuC;AACvC,gEAAiD;AACjD,kEAAmD;AACnD,gEAAiD;
|
|
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;
|
|
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"}
|
package/dist/lib/loader/hooks.js
CHANGED
|
@@ -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.
|
|
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;
|
|
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"}
|
package/dist/lib/loader/roles.js
CHANGED
|
@@ -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.
|
|
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":";;;
|
|
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.
|
|
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;
|
|
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 @@
|
|
|
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'
|
|
@@ -61,7 +62,7 @@ async function addFastifyRouting(fastify: FastifyInstance) {
|
|
|
61
62
|
log.trace('Add fastify routes')
|
|
62
63
|
|
|
63
64
|
loaderHooks.apply(fastify)
|
|
64
|
-
|
|
65
|
+
loaderSchemas.apply(fastify)
|
|
65
66
|
|
|
66
67
|
const routes = loaderRouter.load()
|
|
67
68
|
routes && loaderRouter.apply(fastify, routes)
|
package/lib/api/users/routes.ts
CHANGED
|
@@ -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
|
]
|
package/lib/loader/hooks.ts
CHANGED
|
@@ -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.
|
|
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)
|
package/lib/loader/roles.ts
CHANGED
|
@@ -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.
|
|
9
|
+
log.t && log.trace('Looking for ' + pattern)
|
|
13
10
|
glob.sync(pattern).forEach((f: string) => {
|
|
14
11
|
const configRoles = require(f)
|
|
15
12
|
|
package/lib/loader/router.ts
CHANGED
|
@@ -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.
|
|
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()
|
package/lib/util/logger.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volcanicminds/backend",
|
|
3
|
-
"version": "0.2.
|
|
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.
|
|
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.
|
|
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.
|
|
52
|
-
"@fastify/swagger-ui": "^1.
|
|
53
|
-
"@types/node": "^18.11.
|
|
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.
|
|
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",
|