@volcanicminds/backend 0.2.4 → 0.2.6
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/README.md +13 -13
- package/TODO.md +1 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/index.ts +3 -6
- package/package.json +1 -1
- package/server.ts +1 -1
- package/types/global.d.ts +4 -2
- package/types/database.d.ts +0 -7
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
|
-
```
|
|
18
|
+
```ts
|
|
19
19
|
yarn add @volcanicminds/backend
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## How to upgrade packages
|
|
23
23
|
|
|
24
|
-
```
|
|
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
|
-
```
|
|
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
|
-
```
|
|
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
|
-
```
|
|
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
|
-
```
|
|
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
|
-
```
|
|
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
|
-
```
|
|
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
|
-
```
|
|
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
|
-
```
|
|
250
|
+
```ts
|
|
251
251
|
import { Role } from '@volcanicminds/backend'
|
|
252
252
|
|
|
253
253
|
export const roles: Role[] = [
|
|
@@ -261,7 +261,7 @@ 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
|
-
```
|
|
264
|
+
```ts
|
|
265
265
|
roles: [roles.admin, roles.public]
|
|
266
266
|
```
|
|
267
267
|
|
|
@@ -271,7 +271,7 @@ It's possible add hook to application or request/reply lifecycles. More info on
|
|
|
271
271
|
|
|
272
272
|
Available hooks are:
|
|
273
273
|
|
|
274
|
-
```
|
|
274
|
+
```ts
|
|
275
275
|
const hooks = [
|
|
276
276
|
'onRequest',
|
|
277
277
|
'onError',
|
|
@@ -291,7 +291,7 @@ const hooks = [
|
|
|
291
291
|
|
|
292
292
|
Under `src` create the `hooks` folder and inside add the hook as shown in the fastify docs, for example:
|
|
293
293
|
|
|
294
|
-
```
|
|
294
|
+
```ts
|
|
295
295
|
// src/hooks/onRequest.ts
|
|
296
296
|
|
|
297
297
|
async function hook(req, reply) {
|
package/TODO.md
CHANGED
|
@@ -6,8 +6,7 @@ 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
|
-
-
|
|
10
|
-
- models
|
|
9
|
+
- route schemas ($ref)
|
|
11
10
|
- validations
|
|
12
11
|
- authentication
|
|
13
12
|
- metrics (plugin?)
|
package/dist/index.js
CHANGED
|
@@ -56,6 +56,7 @@ const fastify_2 = __importStar(require("@as-integrations/fastify"));
|
|
|
56
56
|
const context_1 = require("./lib/apollo/context");
|
|
57
57
|
const resolvers_1 = __importDefault(require("./lib/apollo/resolvers"));
|
|
58
58
|
const type_defs_1 = __importDefault(require("./lib/apollo/type-defs"));
|
|
59
|
+
global.log = logger_1.default;
|
|
59
60
|
function attachApollo(fastify) {
|
|
60
61
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
62
|
log.info('Attach ApolloServer to Fastify');
|
|
@@ -130,7 +131,6 @@ function addFastifySwagger(fastify) {
|
|
|
130
131
|
const start = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
131
132
|
const begin = new Date().getTime();
|
|
132
133
|
mark.print(logger_1.default);
|
|
133
|
-
global.log = logger_1.default;
|
|
134
134
|
global.roles = loaderRoles.load();
|
|
135
135
|
const opts = (0, yn_1.default)(process.env.LOG_FASTIFY, false) ? { logger: logger_1.default } : {};
|
|
136
136
|
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":"AAAA,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEZ,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AAEf,uDAA8B;AAC9B,+DAAsC;AACtC,sDAAuC;AACvC,gEAAiD;AACjD,kEAAmD;AACnD,gEAAiD;AAEjD,sDAAkD;AAClD,+DAAsC;AACtC,qEAA2C;AAE3C,yDAAgC;AAChC,6DAAoC;AACpC,iEAAwC;AACxC,qEAA2C;AAE3C,2CAA6C;AAC7C,oEAAwG;AACxG,kDAAmE;AACnE,uEAA8C;AAC9C,uEAA6C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAA;AACnC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAA"}
|
package/index.ts
CHANGED
|
@@ -20,11 +20,13 @@ import compress from '@fastify/compress'
|
|
|
20
20
|
import rateLimit from '@fastify/rate-limit'
|
|
21
21
|
|
|
22
22
|
import { ApolloServer } from '@apollo/server'
|
|
23
|
-
import fastifyApollo, {
|
|
23
|
+
import fastifyApollo, { fastifyApolloDrainPlugin } from '@as-integrations/fastify'
|
|
24
24
|
import { myContextFunction, MyContext } from './lib/apollo/context'
|
|
25
25
|
import resolvers from './lib/apollo/resolvers'
|
|
26
26
|
import typeDefs from './lib/apollo/type-defs'
|
|
27
27
|
|
|
28
|
+
global.log = logger
|
|
29
|
+
|
|
28
30
|
async function attachApollo(fastify: FastifyInstance) {
|
|
29
31
|
log.info('Attach ApolloServer to Fastify')
|
|
30
32
|
const apollo = new ApolloServer<MyContext>({
|
|
@@ -59,7 +61,6 @@ async function addFastifyRouting(fastify: FastifyInstance) {
|
|
|
59
61
|
log.trace('Add fastify routes')
|
|
60
62
|
|
|
61
63
|
loaderHooks.apply(fastify)
|
|
62
|
-
|
|
63
64
|
fastify.addHook('onRequest', async (req, reply) => {})
|
|
64
65
|
|
|
65
66
|
const routes = loaderRouter.load()
|
|
@@ -162,8 +163,6 @@ async function addFastifySwagger(fastify: FastifyInstance) {
|
|
|
162
163
|
const start = async () => {
|
|
163
164
|
const begin = new Date().getTime()
|
|
164
165
|
mark.print(logger)
|
|
165
|
-
|
|
166
|
-
global.log = logger
|
|
167
166
|
global.roles = loaderRoles.load()
|
|
168
167
|
|
|
169
168
|
const opts = yn(process.env.LOG_FASTIFY, false) ? { logger: logger } : {}
|
|
@@ -187,8 +186,6 @@ const start = async () => {
|
|
|
187
186
|
const apollo = loadApollo ? await attachApollo(fastify) : null
|
|
188
187
|
// Helmet is not usable with Apollo Server
|
|
189
188
|
!loadApollo && addPluginHelmet && (await fastify.register(helmet))
|
|
190
|
-
|
|
191
|
-
// Usable with Apollo Server
|
|
192
189
|
addPluginRateLimit && (await fastify.register(rateLimit))
|
|
193
190
|
addPluginCors && (await fastify.register(cors))
|
|
194
191
|
addPluginCompress && (await fastify.register(compress))
|
package/package.json
CHANGED
package/server.ts
CHANGED
package/types/global.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { FastifyRequest, FastifyReply } from 'fastify'
|
|
2
|
-
import { Connection } from './database'
|
|
3
2
|
|
|
4
3
|
export interface AuthenticatedUser {
|
|
5
4
|
id: number
|
|
@@ -98,7 +97,10 @@ export interface global {}
|
|
|
98
97
|
declare global {
|
|
99
98
|
var log: any
|
|
100
99
|
var roles: Roles
|
|
101
|
-
var
|
|
100
|
+
var database: {
|
|
101
|
+
model: any
|
|
102
|
+
repository: any
|
|
103
|
+
}
|
|
102
104
|
}
|
|
103
105
|
|
|
104
106
|
export { global }
|