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