@volcanicminds/backend 0.2.27 → 0.2.28
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 +26 -11
- package/TODO.md +0 -1
- package/dist/index.js +7 -19
- package/dist/index.js.map +1 -1
- package/dist/lib/config/plugins.js +24 -0
- package/dist/lib/config/plugins.js.map +1 -0
- package/dist/lib/loader/plugins.js +24 -0
- package/dist/lib/loader/plugins.js.map +1 -0
- package/index.ts +7 -31
- package/lib/config/plugins.ts +24 -0
- package/lib/loader/plugins.ts +23 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -49,11 +49,6 @@ SWAGGER_HOST=myawesome.backend.com
|
|
|
49
49
|
SWAGGER_TITLE=API Documentation
|
|
50
50
|
SWAGGER_DESCRIPTION=List of available APIs and schemas to use
|
|
51
51
|
SWAGGER_VERSION=0.1.0
|
|
52
|
-
|
|
53
|
-
SRV_CORS=false
|
|
54
|
-
SRV_HELMET=false
|
|
55
|
-
SRV_RATELIMIT=false
|
|
56
|
-
SRV_COMPRESS=false
|
|
57
52
|
```
|
|
58
53
|
|
|
59
54
|
For docker may be useful set HOST as 0.0.0.0 (instead 127.0.0.1).
|
|
@@ -160,13 +155,32 @@ SWAGGER_PREFIX_URL=/documentation
|
|
|
160
155
|
|
|
161
156
|
## Fastify modules
|
|
162
157
|
|
|
163
|
-
|
|
158
|
+
Under the folder `src/config` is possible add a file `plugin.ts` where you can activate/customize some modules in this way:
|
|
164
159
|
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
160
|
+
```ts
|
|
161
|
+
// src/config/plugins.ts
|
|
162
|
+
module.exports = [
|
|
163
|
+
{
|
|
164
|
+
name: 'cors',
|
|
165
|
+
enable: false,
|
|
166
|
+
options: {}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: 'rateLimit',
|
|
170
|
+
enable: false,
|
|
171
|
+
options: {}
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
name: 'helmet',
|
|
175
|
+
enable: false,
|
|
176
|
+
options: {}
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: 'compress',
|
|
180
|
+
enable: false,
|
|
181
|
+
options: {}
|
|
182
|
+
}
|
|
183
|
+
]
|
|
170
184
|
```
|
|
171
185
|
|
|
172
186
|
## Routes
|
|
@@ -193,6 +207,7 @@ Some notes:
|
|
|
193
207
|
- It's possible define a list of **middleware** (optional).
|
|
194
208
|
|
|
195
209
|
```ts
|
|
210
|
+
// src/api/example/routes.ts
|
|
196
211
|
module.exports = {
|
|
197
212
|
config: {
|
|
198
213
|
title: 'Example of routes.ts',
|
package/TODO.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -40,6 +40,7 @@ dotenv_1.default.config();
|
|
|
40
40
|
const yn_1 = __importDefault(require("./lib/util/yn"));
|
|
41
41
|
const logger_1 = __importDefault(require("./lib/util/logger"));
|
|
42
42
|
const mark = __importStar(require("./lib/util/mark"));
|
|
43
|
+
const loaderPlugins = __importStar(require("./lib/loader/plugins"));
|
|
43
44
|
const loaderRoles = __importStar(require("./lib/loader/roles"));
|
|
44
45
|
const loaderRouter = __importStar(require("./lib/loader/router"));
|
|
45
46
|
const loaderHooks = __importStar(require("./lib/loader/hooks"));
|
|
@@ -146,26 +147,13 @@ const start = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
146
147
|
const opts = (0, yn_1.default)(process.env.LOG_FASTIFY, false) ? { logger: logger_1.default } : {};
|
|
147
148
|
const fastify = yield (0, fastify_1.default)(opts);
|
|
148
149
|
const { HOST: host = '0.0.0.0', PORT: port = '2230', GRAPHQL } = process.env;
|
|
149
|
-
const {
|
|
150
|
+
const { JWT_SECRET, JWT_EXPIRES_IN = '15d' } = process.env;
|
|
150
151
|
const loadApollo = (0, yn_1.default)(GRAPHQL, false);
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
log.t && log.trace(`Add plugin CORS: ${addPluginCors}`);
|
|
157
|
-
log.t && log.trace(`Add plugin HELMET: ${!loadApollo ? addPluginHelmet : 'Not usable with Apollo'}`);
|
|
158
|
-
log.t && log.trace(`Add plugin COMPRESS: ${addPluginCompress}`);
|
|
159
|
-
log.t && log.trace(`Add plugin RATELIMIT: ${addPluginRateLimit}`);
|
|
160
|
-
!loadApollo && addPluginHelmet && (yield fastify.register(helmet_1.default));
|
|
161
|
-
addPluginRateLimit && (yield fastify.register(rate_limit_1.default));
|
|
162
|
-
addPluginCors &&
|
|
163
|
-
(yield fastify.register(cors_1.default, {
|
|
164
|
-
origin: '*',
|
|
165
|
-
allowedHeaders: ['v-total', 'v-count', 'v-page', 'v-pageSize'],
|
|
166
|
-
exposedHeaders: ['v-total', 'v-count', 'v-page', 'v-pageSize']
|
|
167
|
-
}));
|
|
168
|
-
addPluginCompress && (yield fastify.register(compress_1.default));
|
|
152
|
+
const plugins = loaderPlugins.load();
|
|
153
|
+
!loadApollo && (plugins === null || plugins === void 0 ? void 0 : plugins.helmet) && (yield fastify.register(helmet_1.default));
|
|
154
|
+
(plugins === null || plugins === void 0 ? void 0 : plugins.rateLimit) && (yield fastify.register(rate_limit_1.default));
|
|
155
|
+
(plugins === null || plugins === void 0 ? void 0 : plugins.cors) && (yield fastify.register(cors_1.default, plugins.cors || {}));
|
|
156
|
+
(plugins === null || plugins === void 0 ? void 0 : plugins.compress) && (yield fastify.register(compress_1.default));
|
|
169
157
|
log.t && log.trace(`Add JWT - expiresIn: ${JWT_EXPIRES_IN}`);
|
|
170
158
|
yield fastify.register(jwt_1.default, {
|
|
171
159
|
secret: JWT_SECRET || 'supersecret',
|
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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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
module.exports = [
|
|
3
|
+
{
|
|
4
|
+
name: 'cors',
|
|
5
|
+
enable: false,
|
|
6
|
+
options: {}
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
name: 'rateLimit',
|
|
10
|
+
enable: false,
|
|
11
|
+
options: {}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'helmet',
|
|
15
|
+
enable: false,
|
|
16
|
+
options: {}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'compress',
|
|
20
|
+
enable: false,
|
|
21
|
+
options: {}
|
|
22
|
+
}
|
|
23
|
+
];
|
|
24
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../lib/config/plugins.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,OAAO,GAAG;IACf;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;KACZ;CACF,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.load = void 0;
|
|
4
|
+
const glob = require('glob');
|
|
5
|
+
function load() {
|
|
6
|
+
const plugins = {};
|
|
7
|
+
const patterns = [`${__dirname}/../config/plugins.{ts,js}`, `${process.cwd()}/src/config/plugins.{ts,js}`];
|
|
8
|
+
patterns.forEach((pattern) => {
|
|
9
|
+
log.t && log.trace('Looking for ' + pattern);
|
|
10
|
+
glob.sync(pattern).forEach((f) => {
|
|
11
|
+
const configPlugins = require(f);
|
|
12
|
+
configPlugins.forEach((plugin) => {
|
|
13
|
+
plugins[plugin.name] = plugin.enable ? plugin.options : false;
|
|
14
|
+
log.t && log.trace(`* Plugin ${plugin.name} ${plugin.enable ? 'enabled' : 'disabled'}`);
|
|
15
|
+
log.error(plugin);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
const enabledPulgins = Object.keys(plugins).filter((p) => !!plugins[p]);
|
|
20
|
+
log.d && log.debug(`Plugins loaded: ${enabledPulgins.length > 0 ? enabledPulgins.join(', ') : 0}`);
|
|
21
|
+
return plugins;
|
|
22
|
+
}
|
|
23
|
+
exports.load = load;
|
|
24
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../lib/loader/plugins.ts"],"names":[],"mappings":";;;AAEA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,SAAgB,IAAI;IAClB,MAAM,OAAO,GAAQ,EAAE,CAAA;IAEvB,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,4BAA4B,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAA;IAC1G,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,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAChC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;gBAC7D,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;gBACvF,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACnB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACvE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,mBAAmB,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAClG,OAAO,OAAO,CAAA;AAChB,CAAC;AAlBD,oBAkBC"}
|
package/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ dotenv.config()
|
|
|
6
6
|
import yn from './lib/util/yn'
|
|
7
7
|
import logger from './lib/util/logger'
|
|
8
8
|
import * as mark from './lib/util/mark'
|
|
9
|
+
import * as loaderPlugins from './lib/loader/plugins'
|
|
9
10
|
import * as loaderRoles from './lib/loader/roles'
|
|
10
11
|
import * as loaderRouter from './lib/loader/router'
|
|
11
12
|
import * as loaderHooks from './lib/loader/hooks'
|
|
@@ -140,41 +141,16 @@ const start = async () => {
|
|
|
140
141
|
const fastify = await Fastify(opts)
|
|
141
142
|
|
|
142
143
|
const { HOST: host = '0.0.0.0', PORT: port = '2230', GRAPHQL } = process.env
|
|
143
|
-
const {
|
|
144
|
+
const { JWT_SECRET, JWT_EXPIRES_IN = '15d' } = process.env
|
|
144
145
|
|
|
145
146
|
const loadApollo = yn(GRAPHQL, false)
|
|
146
|
-
const
|
|
147
|
-
const addPluginHelmet = yn(SRV_HELMET, false)
|
|
148
|
-
const addPluginRateLimit = yn(SRV_RATELIMIT, false)
|
|
149
|
-
const addPluginCompress = yn(SRV_COMPRESS, false)
|
|
150
|
-
|
|
151
|
-
log.t && log.trace(`Attach Apollo Server ${loadApollo}`)
|
|
152
|
-
log.t && log.trace(`Add plugin CORS: ${addPluginCors}`)
|
|
153
|
-
log.t && log.trace(`Add plugin HELMET: ${!loadApollo ? addPluginHelmet : 'Not usable with Apollo'}`)
|
|
154
|
-
log.t && log.trace(`Add plugin COMPRESS: ${addPluginCompress}`)
|
|
155
|
-
log.t && log.trace(`Add plugin RATELIMIT: ${addPluginRateLimit}`)
|
|
147
|
+
const plugins = loaderPlugins.load()
|
|
156
148
|
|
|
157
149
|
// Helmet is not usable with Apollo Server
|
|
158
|
-
!loadApollo &&
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
origin: '*',
|
|
163
|
-
methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD'],
|
|
164
|
-
maxAge: 31536000,
|
|
165
|
-
credentials: true,
|
|
166
|
-
allowedHeaders: [
|
|
167
|
-
'Content-Type',
|
|
168
|
-
'Content-Length',
|
|
169
|
-
'Authorization',
|
|
170
|
-
'Origin',
|
|
171
|
-
'v-total',
|
|
172
|
-
'v-count',
|
|
173
|
-
'v-page',
|
|
174
|
-
'v-pageSize'
|
|
175
|
-
]
|
|
176
|
-
}))
|
|
177
|
-
addPluginCompress && (await fastify.register(compress))
|
|
150
|
+
!loadApollo && plugins?.helmet && (await fastify.register(helmet))
|
|
151
|
+
plugins?.rateLimit && (await fastify.register(rateLimit))
|
|
152
|
+
plugins?.cors && (await fastify.register(cors, plugins.cors || {}))
|
|
153
|
+
plugins?.compress && (await fastify.register(compress))
|
|
178
154
|
|
|
179
155
|
// JWT Validator
|
|
180
156
|
log.t && log.trace(`Add JWT - expiresIn: ${JWT_EXPIRES_IN}`)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
module.exports = [
|
|
4
|
+
{
|
|
5
|
+
name: 'cors',
|
|
6
|
+
enable: false,
|
|
7
|
+
options: {}
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
name: 'rateLimit',
|
|
11
|
+
enable: false,
|
|
12
|
+
options: {}
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'helmet',
|
|
16
|
+
enable: false,
|
|
17
|
+
options: {}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'compress',
|
|
21
|
+
enable: false,
|
|
22
|
+
options: {}
|
|
23
|
+
}
|
|
24
|
+
]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { config } from 'dotenv'
|
|
2
|
+
|
|
3
|
+
const glob = require('glob')
|
|
4
|
+
|
|
5
|
+
export function load() {
|
|
6
|
+
const plugins: any = {}
|
|
7
|
+
|
|
8
|
+
const patterns = [`${__dirname}/../config/plugins.{ts,js}`, `${process.cwd()}/src/config/plugins.{ts,js}`]
|
|
9
|
+
patterns.forEach((pattern) => {
|
|
10
|
+
log.t && log.trace('Looking for ' + pattern)
|
|
11
|
+
glob.sync(pattern).forEach((f: string) => {
|
|
12
|
+
const configPlugins = require(f)
|
|
13
|
+
configPlugins.forEach((plugin) => {
|
|
14
|
+
plugins[plugin.name] = plugin.enable ? plugin.options : false
|
|
15
|
+
log.t && log.trace(`* Plugin ${plugin.name} ${plugin.enable ? 'enabled' : 'disabled'}`)
|
|
16
|
+
log.error(plugin)
|
|
17
|
+
})
|
|
18
|
+
})
|
|
19
|
+
})
|
|
20
|
+
const enabledPulgins = Object.keys(plugins).filter((p) => !!plugins[p])
|
|
21
|
+
log.d && log.debug(`Plugins loaded: ${enabledPulgins.length > 0 ? enabledPulgins.join(', ') : 0}`)
|
|
22
|
+
return plugins
|
|
23
|
+
}
|