@volcanicminds/backend 2.1.0 → 2.1.2
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/hooks/onError.d.ts +2 -1
- package/dist/lib/hooks/onError.d.ts.map +1 -1
- package/dist/lib/hooks/onError.js +23 -1
- package/dist/lib/hooks/onError.js.map +1 -1
- package/dist/lib/loader/hooks.d.ts +1 -1
- package/dist/lib/loader/hooks.d.ts.map +1 -1
- package/dist/lib/loader/hooks.js +11 -8
- package/dist/lib/loader/hooks.js.map +1 -1
- package/dist/lib/loader/router.d.ts +1 -3
- package/dist/lib/loader/router.d.ts.map +1 -1
- package/dist/lib/loader/router.js +92 -57
- package/dist/lib/loader/router.js.map +1 -1
- package/dist/lib/loader/schemas.d.ts +1 -1
- package/dist/lib/loader/schemas.d.ts.map +1 -1
- package/dist/lib/loader/schemas.js +22 -16
- package/dist/lib/loader/schemas.js.map +1 -1
- package/lib/hooks/onError.ts +30 -2
- package/lib/loader/hooks.ts +12 -8
- package/lib/loader/router.ts +108 -86
- package/lib/loader/schemas.ts +24 -16
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAWtD,OAAO,OAA4B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAWtD,OAAO,OAA4B,MAAM,SAAS,CAAA;AAqIlD,QAAA,MAAM,KAAK,GAAU,eAAe,6NA2NnC,CAAA;AAED,YAAY,EACV,MAAM,EACN,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -52,10 +52,9 @@ async function addApolloRouting(server, apollo) {
|
|
|
52
52
|
}
|
|
53
53
|
async function addFastifyRouting(server) {
|
|
54
54
|
log.trace('Add server routes');
|
|
55
|
-
loaderHooks.apply(server);
|
|
56
|
-
loaderSchemas.apply(server);
|
|
57
|
-
|
|
58
|
-
routes && loaderRouter.apply(server, routes);
|
|
55
|
+
await loaderHooks.apply(server);
|
|
56
|
+
await loaderSchemas.apply(server);
|
|
57
|
+
await loaderRouter.apply(server);
|
|
59
58
|
}
|
|
60
59
|
async function addFastifySwagger(server) {
|
|
61
60
|
const { SWAGGER, SWAGGER_TITLE, SWAGGER_DESCRIPTION, SWAGGER_VERSION, SWAGGER_PREFIX_URL, SWAGGER_HOST } = process.env;
|
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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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { FastifyRequest, FastifyReply } from 'fastify';
|
|
2
|
+
declare const _default: (req: FastifyRequest, reply: FastifyReply, error: any) => Promise<never>;
|
|
2
3
|
export default _default;
|
|
3
4
|
//# sourceMappingURL=onError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onError.d.ts","sourceRoot":"","sources":["../../../lib/hooks/onError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onError.d.ts","sourceRoot":"","sources":["../../../lib/hooks/onError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;yBAEhC,KAAK,cAAc,EAAE,OAAO,YAAY,EAAE,OAAO,GAAG;AAA1E,wBA6BC"}
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
export default async (req, reply, error) => {
|
|
2
|
-
log.e && log.error(`${error}`);
|
|
2
|
+
log.e && log.error(`${error?.message || error}`);
|
|
3
3
|
log.t && log.trace(error);
|
|
4
|
+
if (error.statusCode && error.statusCode >= 400) {
|
|
5
|
+
return reply.code(error.statusCode).send(error);
|
|
6
|
+
}
|
|
7
|
+
if (error.message === 'Wrong credentials' || error.message === 'Unauthorized') {
|
|
8
|
+
return reply.code(403).send({
|
|
9
|
+
statusCode: 403,
|
|
10
|
+
error: 'Forbidden',
|
|
11
|
+
message: error.message
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
if (error.message.includes('not found')) {
|
|
15
|
+
return reply.code(404).send({
|
|
16
|
+
statusCode: 404,
|
|
17
|
+
error: 'Not Found',
|
|
18
|
+
message: error.message
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return reply.code(500).send({
|
|
22
|
+
statusCode: 500,
|
|
23
|
+
error: 'Internal Server Error',
|
|
24
|
+
message: error.message
|
|
25
|
+
});
|
|
4
26
|
};
|
|
5
27
|
//# sourceMappingURL=onError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onError.js","sourceRoot":"","sources":["../../../lib/hooks/onError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onError.js","sourceRoot":"","sources":["../../../lib/hooks/onError.ts"],"names":[],"mappings":"AAEA,eAAe,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,KAAU,EAAE,EAAE;IAC5E,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;IAChD,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAEzB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,mBAAmB,IAAI,KAAK,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;QAC9E,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QAC1B,UAAU,EAAE,GAAG;QACf,KAAK,EAAE,uBAAuB;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function apply(server: any): void
|
|
1
|
+
export declare function apply(server: any): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../lib/loader/hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../lib/loader/hooks.ts"],"names":[],"mappings":"AAoBA,wBAAsB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BtD"}
|
package/dist/lib/loader/hooks.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { normalizePatterns } from '../util/path.js';
|
|
2
2
|
import { globSync } from 'glob';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
import require from '../util/require.js';
|
|
5
4
|
const hooks = [
|
|
6
5
|
'onRequest',
|
|
7
6
|
'onError',
|
|
@@ -17,22 +16,26 @@ const hooks = [
|
|
|
17
16
|
'preSerialization',
|
|
18
17
|
'preHandler'
|
|
19
18
|
];
|
|
20
|
-
export function apply(server) {
|
|
19
|
+
export async function apply(server) {
|
|
21
20
|
const patterns = normalizePatterns(['..', 'hooks', '*.{ts,js}'], ['src', 'hooks', '*.{ts,js}']);
|
|
22
21
|
const allHooks = hooks.reduce((acc, v) => ({ ...acc, [v]: [] }), {});
|
|
23
|
-
|
|
22
|
+
for (const pattern of patterns) {
|
|
24
23
|
log.t && log.trace('Looking for ' + pattern);
|
|
25
|
-
globSync(pattern, { windowsPathsNoEscape: true })
|
|
24
|
+
const files = globSync(pattern, { windowsPathsNoEscape: true });
|
|
25
|
+
for (const f of files) {
|
|
26
|
+
if (f.endsWith('.d.ts'))
|
|
27
|
+
continue;
|
|
26
28
|
const hookName = path.basename(f, path.extname(f));
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
+
const module = await import(f);
|
|
30
|
+
const fn = module.default || module;
|
|
31
|
+
if (fn != null && typeof fn === 'function') {
|
|
29
32
|
if (allHooks[hookName] == null) {
|
|
30
33
|
allHooks[hookName] = [];
|
|
31
34
|
}
|
|
32
35
|
allHooks[hookName].push((...args) => fn(...args));
|
|
33
36
|
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
36
39
|
hooks.map((hookName) => {
|
|
37
40
|
const fns = allHooks[hookName];
|
|
38
41
|
log.t && log.trace(`* Add ${fns?.length || 0} hooks for ${hookName}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../lib/loader/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../lib/loader/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,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,CAAC,KAAK,UAAU,KAAK,CAAC,MAAW;IACrC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;IAC/F,MAAM,QAAQ,GAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEvF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAA;QAE/D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAQ;YAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAA;YAEnC,IAAI,EAAE,IAAI,IAAI,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC/B,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAgB,CAAA;gBACvC,CAAC;gBACD,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,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,SAAS,GAAG,EAAE,MAAM,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAA;QACrE,GAAG,EAAE,MAAM,GAAG,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;IAEF,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function load(): ConfiguredRoute[];
|
|
3
|
-
export declare function apply(server: any, routes: ConfiguredRoute[]): void;
|
|
1
|
+
export declare function apply(server: any): Promise<void>;
|
|
4
2
|
//# sourceMappingURL=router.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"AAuQA,wBAAsB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtD"}
|
|
@@ -2,19 +2,72 @@ import yn from '../util/yn.js';
|
|
|
2
2
|
import { normalizePatterns } from '../util/path.js';
|
|
3
3
|
import { globSync } from 'glob';
|
|
4
4
|
import path from 'path';
|
|
5
|
-
import
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
6
8
|
const methods = ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'PATCH', 'OPTIONS'];
|
|
7
|
-
|
|
9
|
+
async function tryToLoadFile(fileName) {
|
|
10
|
+
try {
|
|
11
|
+
const module = await import(fileName);
|
|
12
|
+
return module.default || module;
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function loadMiddleware(base, middleware = '') {
|
|
19
|
+
const key = 'global.';
|
|
20
|
+
const isGlobal = middleware.indexOf(key) > -1;
|
|
21
|
+
let loadedModule = null;
|
|
22
|
+
if (isGlobal) {
|
|
23
|
+
const name = middleware.substring(key.length);
|
|
24
|
+
const localPath = path.resolve(process.cwd() + '/src/middleware/' + name + '.ts');
|
|
25
|
+
const localPathJs = path.resolve(process.cwd() + '/src/middleware/' + name + '.js');
|
|
26
|
+
loadedModule = await tryToLoadFile(localPath);
|
|
27
|
+
if (!loadedModule)
|
|
28
|
+
loadedModule = await tryToLoadFile(localPathJs);
|
|
29
|
+
if (!loadedModule) {
|
|
30
|
+
const libPath = path.resolve(__dirname + '/../middleware/' + name + '.js');
|
|
31
|
+
loadedModule = await tryToLoadFile(libPath);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const routeMiddPath = path.resolve(base + '/middleware/' + middleware);
|
|
36
|
+
loadedModule = await tryToLoadFile(routeMiddPath + '.ts');
|
|
37
|
+
if (!loadedModule)
|
|
38
|
+
loadedModule = await tryToLoadFile(routeMiddPath + '.js');
|
|
39
|
+
if (!loadedModule)
|
|
40
|
+
loadedModule = await tryToLoadFile(routeMiddPath);
|
|
41
|
+
}
|
|
42
|
+
if (!loadedModule) {
|
|
43
|
+
log.error(`Middleware ${middleware} not loaded`);
|
|
44
|
+
throw new Error(`Middleware ${middleware} not loaded`);
|
|
45
|
+
}
|
|
46
|
+
return loadedModule;
|
|
47
|
+
}
|
|
48
|
+
async function loadMiddlewares(base, middlewares = []) {
|
|
49
|
+
const midds = {};
|
|
50
|
+
for (const m of middlewares) {
|
|
51
|
+
const middleware = await loadMiddleware(base, m);
|
|
52
|
+
Object.keys(middleware).map((name) => (midds[name] = [...(midds[name] || []), middleware[name]]));
|
|
53
|
+
}
|
|
54
|
+
return midds;
|
|
55
|
+
}
|
|
56
|
+
async function load() {
|
|
8
57
|
const validRoutes = [];
|
|
9
58
|
const patterns = normalizePatterns(['..', 'api', '**', 'routes.{ts,js}'], ['src', 'api', '**', 'routes.{ts,js}']);
|
|
10
59
|
const authMiddlewares = ['global.isAuthenticated', 'global.isAdmin'];
|
|
11
|
-
|
|
60
|
+
for (const pattern of patterns) {
|
|
12
61
|
log.t && log.trace('Looking for ' + pattern);
|
|
13
|
-
globSync(pattern, { windowsPathsNoEscape: true })
|
|
62
|
+
const files = globSync(pattern, { windowsPathsNoEscape: true });
|
|
63
|
+
for (const f of files) {
|
|
64
|
+
if (f.endsWith('.d.ts'))
|
|
65
|
+
continue;
|
|
14
66
|
const base = path.dirname(f);
|
|
15
67
|
const dir = path.basename(base);
|
|
16
68
|
const file = path.join(dir, path.basename(f));
|
|
17
|
-
const
|
|
69
|
+
const module = await import(f);
|
|
70
|
+
const routesjs = module.default || module;
|
|
18
71
|
const { routes = [], config: defaultConfig = {} } = routesjs || {};
|
|
19
72
|
log.t && log.trace(`* Add ${routes.length} routes from ${file}`);
|
|
20
73
|
routes.forEach((route, index) => {
|
|
@@ -41,15 +94,12 @@ export function load() {
|
|
|
41
94
|
const num = index + 1;
|
|
42
95
|
const handlerParts = handler.split('.');
|
|
43
96
|
if (enable) {
|
|
44
|
-
if (!pathName.startsWith('/'))
|
|
97
|
+
if (!pathName.startsWith('/'))
|
|
45
98
|
errors.push(`Error in [${file}] bad path [${pathName}] at route n. ${num}`);
|
|
46
|
-
|
|
47
|
-
if (!methods.includes(method)) {
|
|
99
|
+
if (!methods.includes(method))
|
|
48
100
|
errors.push(`Error in [${file}] bad method [${method}] at route n. ${num}`);
|
|
49
|
-
|
|
50
|
-
if (handlerParts.length !== 2) {
|
|
101
|
+
if (handlerParts.length !== 2)
|
|
51
102
|
errors.push(`Error in [${file}] bad handler [${handler}] at route n. ${num}`);
|
|
52
|
-
}
|
|
53
103
|
const key = method + endpoint + version;
|
|
54
104
|
if (validRoutes.some((r) => `${r.method}${r.path}${r.doc?.version}` === key)) {
|
|
55
105
|
errors.push(`Error in [${file}] duplicated path [${pathName}] at route n. ${num}`);
|
|
@@ -97,52 +147,18 @@ export function load() {
|
|
|
97
147
|
});
|
|
98
148
|
}
|
|
99
149
|
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
102
152
|
log.d && log.debug(`Routes loaded: ${validRoutes.length}`);
|
|
103
153
|
return validRoutes;
|
|
104
154
|
}
|
|
105
|
-
async function
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
resolve(required);
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
reject(err);
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
async function loadMiddleware(base, middleware = '') {
|
|
117
|
-
const key = 'global.';
|
|
118
|
-
const isGlobal = middleware.indexOf(key) > -1;
|
|
119
|
-
let required = null;
|
|
120
|
-
if (isGlobal) {
|
|
121
|
-
const name = middleware.substring(key.length);
|
|
122
|
-
required = await tryToLoadFile(path.resolve(process.cwd() + '/src/middleware/' + name)).catch(async () => {
|
|
123
|
-
return await tryToLoadFile(path.resolve(__dirname + '/../middleware/' + name));
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
required = await tryToLoadFile(path.resolve(base + '/middleware/' + middleware));
|
|
155
|
+
async function applyRoutes(server, routes) {
|
|
156
|
+
if (!routes || routes.length === 0) {
|
|
157
|
+
log.w && log.warn('No routes to apply to server');
|
|
158
|
+
return;
|
|
128
159
|
}
|
|
129
|
-
if (!required) {
|
|
130
|
-
log.error(`Middleware ${middleware} not loaded`);
|
|
131
|
-
throw new Error(`Middleware ${middleware} not loaded`);
|
|
132
|
-
}
|
|
133
|
-
return required;
|
|
134
|
-
}
|
|
135
|
-
async function loadMiddlewares(base, middlewares = []) {
|
|
136
|
-
const midds = {};
|
|
137
|
-
await Promise.all(middlewares.map(async (m) => {
|
|
138
|
-
const middleware = await loadMiddleware(base, m);
|
|
139
|
-
Object.keys(middleware).map((name) => (midds[name] = [...(midds[name] || []), middleware[name]]));
|
|
140
|
-
}));
|
|
141
|
-
return midds;
|
|
142
|
-
}
|
|
143
|
-
export function apply(server, routes) {
|
|
144
160
|
log.t && log.trace(`Apply ${routes.length} routes to server with pid ${process.pid}`);
|
|
145
|
-
|
|
161
|
+
for (const route of routes) {
|
|
146
162
|
if (route?.enable) {
|
|
147
163
|
const { handler, method, path, middlewares, roles, rawBody, rateLimit, base, file, func, doc } = route;
|
|
148
164
|
log.t && log.trace(`* Add path ${method} ${path} on handle ${handler}`);
|
|
@@ -159,16 +175,35 @@ export function apply(server, routes) {
|
|
|
159
175
|
},
|
|
160
176
|
handler: async function (req, reply) {
|
|
161
177
|
try {
|
|
162
|
-
|
|
163
|
-
|
|
178
|
+
let module;
|
|
179
|
+
try {
|
|
180
|
+
module = await import(file + '.js');
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
try {
|
|
184
|
+
module = await import(file + '.ts');
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
module = await import(file);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
164
190
|
}
|
|
165
191
|
catch (err) {
|
|
166
|
-
log.e && log.error(`Cannot
|
|
167
|
-
return reply.code(500).send(`Invalid handler ${handler}`);
|
|
192
|
+
log.e && log.error(`Cannot load module ${file}: ${err}`);
|
|
193
|
+
return reply.code(500).send(`Invalid handler module ${handler}`);
|
|
168
194
|
}
|
|
195
|
+
if (!module || typeof module[func] !== 'function') {
|
|
196
|
+
log.e && log.error(`Method ${func} not found in ${file}`);
|
|
197
|
+
return reply.code(500).send(`Invalid handler method ${handler}`);
|
|
198
|
+
}
|
|
199
|
+
return await module[func](req, reply);
|
|
169
200
|
}
|
|
170
201
|
});
|
|
171
202
|
}
|
|
172
|
-
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
export async function apply(server) {
|
|
206
|
+
const routes = await load();
|
|
207
|
+
return await applyRoutes(server, routes);
|
|
173
208
|
}
|
|
174
209
|
//# sourceMappingURL=router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAA;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../lib/loader/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function apply(server: any): void
|
|
1
|
+
export declare function apply(server: any): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":"AAIA,wBAAsB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEtD"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { normalizePatterns } from '../util/path.js';
|
|
2
2
|
import { globSync } from 'glob';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
|
|
5
|
-
export function apply(server) {
|
|
4
|
+
export async function apply(server) {
|
|
6
5
|
const [baseSchemaPath, customSchemaPath] = normalizePatterns(['..', 'schemas', '*.{ts,js}'], ['src', 'schemas', '*.{ts,js}']);
|
|
7
6
|
const customSchemas = [];
|
|
8
7
|
const customSchemaIds = new Set();
|
|
9
8
|
let schemaCount = 0;
|
|
10
9
|
log.t && log.trace('Looking for custom schemas in ' + customSchemaPath);
|
|
11
|
-
globSync(customSchemaPath, { windowsPathsNoEscape: true })
|
|
10
|
+
const customFiles = globSync(customSchemaPath, { windowsPathsNoEscape: true });
|
|
11
|
+
for (const f of customFiles) {
|
|
12
|
+
if (f.endsWith('.d.ts'))
|
|
13
|
+
continue;
|
|
12
14
|
try {
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
+
const schemaModule = await import(f);
|
|
16
|
+
const schemaClass = schemaModule.default || schemaModule;
|
|
17
|
+
const schemaNames = Object.keys(schemaModule);
|
|
15
18
|
schemaNames.forEach((name) => {
|
|
16
|
-
const schema =
|
|
17
|
-
if (schema
|
|
19
|
+
const schema = schemaModule[name];
|
|
20
|
+
if (schema && typeof schema === 'object' && schema.$id) {
|
|
18
21
|
customSchemas.push(schema);
|
|
19
22
|
customSchemaIds.add(schema.$id);
|
|
20
23
|
}
|
|
@@ -23,21 +26,24 @@ export function apply(server) {
|
|
|
23
26
|
catch (e) {
|
|
24
27
|
log.w && log.warn(`Could not load custom schema file: ${f}`, e);
|
|
25
28
|
}
|
|
26
|
-
}
|
|
29
|
+
}
|
|
27
30
|
customSchemas.forEach((schema) => {
|
|
28
31
|
log.trace(`* Registering custom schema [${schema.$id}]`);
|
|
29
32
|
server.addSchema(schema);
|
|
30
33
|
schemaCount++;
|
|
31
34
|
});
|
|
32
35
|
log.t && log.trace('Looking for base schemas in ' + baseSchemaPath);
|
|
33
|
-
globSync(baseSchemaPath, { windowsPathsNoEscape: true })
|
|
36
|
+
const baseFiles = globSync(baseSchemaPath, { windowsPathsNoEscape: true });
|
|
37
|
+
for (const f of baseFiles) {
|
|
38
|
+
if (f.endsWith('.d.ts'))
|
|
39
|
+
continue;
|
|
34
40
|
try {
|
|
35
41
|
const schemaFileName = path.basename(f);
|
|
36
|
-
const
|
|
37
|
-
const schemaNames = Object.keys(
|
|
42
|
+
const schemaModule = await import(f);
|
|
43
|
+
const schemaNames = Object.keys(schemaModule);
|
|
38
44
|
schemaNames.forEach((name) => {
|
|
39
|
-
const schema =
|
|
40
|
-
if (schema
|
|
45
|
+
const schema = schemaModule[name];
|
|
46
|
+
if (schema && typeof schema === 'object' && schema.$id) {
|
|
41
47
|
if (customSchemaIds.has(schema.$id)) {
|
|
42
48
|
log.w &&
|
|
43
49
|
log.warn(`* Base schema [${schema.$id}] from ${schemaFileName} is overridden by a custom schema and will be ignored.`);
|
|
@@ -48,15 +54,15 @@ export function apply(server) {
|
|
|
48
54
|
schemaCount++;
|
|
49
55
|
}
|
|
50
56
|
}
|
|
51
|
-
else {
|
|
52
|
-
log.w && log.warn(`* Schema with no $id found in ${schemaFileName}, cannot be registered.`);
|
|
57
|
+
else if (name !== 'default') {
|
|
58
|
+
log.w && log.warn(`* Schema with no $id found in ${schemaFileName} (export ${name}), cannot be registered.`);
|
|
53
59
|
}
|
|
54
60
|
});
|
|
55
61
|
}
|
|
56
62
|
catch (e) {
|
|
57
63
|
log.w && log.warn(`Could not load base schema file: ${f}`, e);
|
|
58
64
|
}
|
|
59
|
-
}
|
|
65
|
+
}
|
|
60
66
|
log.d && log.debug(`Schemas loaded: ${schemaCount} referenceable by $ref`);
|
|
61
67
|
}
|
|
62
68
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../lib/loader/schemas.ts"],"names":[],"mappings":"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"}
|
package/lib/hooks/onError.ts
CHANGED
|
@@ -1,4 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { FastifyRequest, FastifyReply } from 'fastify'
|
|
2
|
+
|
|
3
|
+
export default async (req: FastifyRequest, reply: FastifyReply, error: any) => {
|
|
4
|
+
log.e && log.error(`${error?.message || error}`)
|
|
3
5
|
log.t && log.trace(error)
|
|
6
|
+
|
|
7
|
+
if (error.statusCode && error.statusCode >= 400) {
|
|
8
|
+
return reply.code(error.statusCode).send(error)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
if (error.message === 'Wrong credentials' || error.message === 'Unauthorized') {
|
|
12
|
+
return reply.code(403).send({
|
|
13
|
+
statusCode: 403,
|
|
14
|
+
error: 'Forbidden',
|
|
15
|
+
message: error.message
|
|
16
|
+
})
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (error.message.includes('not found')) {
|
|
20
|
+
return reply.code(404).send({
|
|
21
|
+
statusCode: 404,
|
|
22
|
+
error: 'Not Found',
|
|
23
|
+
message: error.message
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return reply.code(500).send({
|
|
28
|
+
statusCode: 500,
|
|
29
|
+
error: 'Internal Server Error',
|
|
30
|
+
message: error.message
|
|
31
|
+
})
|
|
4
32
|
}
|
package/lib/loader/hooks.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { normalizePatterns } from '../util/path.js'
|
|
2
2
|
import { globSync } from 'glob'
|
|
3
3
|
import path from 'path'
|
|
4
|
-
import require from '../util/require.js'
|
|
5
4
|
|
|
6
5
|
const hooks = [
|
|
7
6
|
'onRequest',
|
|
@@ -19,24 +18,29 @@ const hooks = [
|
|
|
19
18
|
'preHandler'
|
|
20
19
|
]
|
|
21
20
|
|
|
22
|
-
export function apply(server: any): void {
|
|
21
|
+
export async function apply(server: any): Promise<void> {
|
|
23
22
|
const patterns = normalizePatterns(['..', 'hooks', '*.{ts,js}'], ['src', 'hooks', '*.{ts,js}'])
|
|
24
23
|
const allHooks: any = hooks.reduce((acc, v) => ({ ...acc, [v]: [] as Function[] }), {})
|
|
25
24
|
|
|
26
|
-
|
|
25
|
+
for (const pattern of patterns) {
|
|
27
26
|
log.t && log.trace('Looking for ' + pattern)
|
|
28
|
-
globSync(pattern, { windowsPathsNoEscape: true })
|
|
27
|
+
const files = globSync(pattern, { windowsPathsNoEscape: true })
|
|
28
|
+
|
|
29
|
+
for (const f of files) {
|
|
30
|
+
if (f.endsWith('.d.ts')) continue
|
|
31
|
+
|
|
29
32
|
const hookName = path.basename(f, path.extname(f))
|
|
30
|
-
const
|
|
33
|
+
const module = await import(f)
|
|
34
|
+
const fn = module.default || module
|
|
31
35
|
|
|
32
|
-
if (fn != null) {
|
|
36
|
+
if (fn != null && typeof fn === 'function') {
|
|
33
37
|
if (allHooks[hookName] == null) {
|
|
34
38
|
allHooks[hookName] = [] as Function[]
|
|
35
39
|
}
|
|
36
40
|
allHooks[hookName].push((...args) => fn(...args))
|
|
37
41
|
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
40
44
|
|
|
41
45
|
hooks.map((hookName) => {
|
|
42
46
|
const fns: Function[] = allHooks[hookName]
|
package/lib/loader/router.ts
CHANGED
|
@@ -4,24 +4,86 @@ import { FastifyReply, FastifyRequest } from 'fastify'
|
|
|
4
4
|
import { normalizePatterns } from '../util/path.js'
|
|
5
5
|
import { globSync } from 'glob'
|
|
6
6
|
import path from 'path'
|
|
7
|
+
import { fileURLToPath } from 'url'
|
|
7
8
|
import require from '../util/require.js'
|
|
8
9
|
|
|
10
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
11
|
+
const __dirname = path.dirname(__filename)
|
|
12
|
+
|
|
9
13
|
const methods = ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'PATCH', 'OPTIONS']
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
async function tryToLoadFile(fileName: string) {
|
|
16
|
+
try {
|
|
17
|
+
const module = await import(fileName)
|
|
18
|
+
return module.default || module
|
|
19
|
+
} catch (err) {
|
|
20
|
+
return null
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async function loadMiddleware(base: string, middleware: string = '') {
|
|
25
|
+
const key = 'global.'
|
|
26
|
+
const isGlobal = middleware.indexOf(key) > -1
|
|
27
|
+
let loadedModule: any = null
|
|
28
|
+
|
|
29
|
+
if (isGlobal) {
|
|
30
|
+
const name = middleware.substring(key.length)
|
|
31
|
+
// Prova path locali (es. src/middleware/auth.ts)
|
|
32
|
+
const localPath = path.resolve(process.cwd() + '/src/middleware/' + name + '.ts') // Prova TS
|
|
33
|
+
const localPathJs = path.resolve(process.cwd() + '/src/middleware/' + name + '.js') // Prova JS (dist)
|
|
34
|
+
|
|
35
|
+
loadedModule = await tryToLoadFile(localPath)
|
|
36
|
+
if (!loadedModule) loadedModule = await tryToLoadFile(localPathJs)
|
|
37
|
+
|
|
38
|
+
// Se non trova locale, prova interno alla lib
|
|
39
|
+
if (!loadedModule) {
|
|
40
|
+
const libPath = path.resolve(__dirname + '/../middleware/' + name + '.js')
|
|
41
|
+
loadedModule = await tryToLoadFile(libPath)
|
|
42
|
+
}
|
|
43
|
+
} else {
|
|
44
|
+
// Middleware locale alla route
|
|
45
|
+
const routeMiddPath = path.resolve(base + '/middleware/' + middleware)
|
|
46
|
+
// Qui è difficile indovinare l'estensione se non fornita, assumiamo che il loader sappia cosa fa o proviamo entrambe
|
|
47
|
+
loadedModule = await tryToLoadFile(routeMiddPath + '.ts')
|
|
48
|
+
if (!loadedModule) loadedModule = await tryToLoadFile(routeMiddPath + '.js')
|
|
49
|
+
if (!loadedModule) loadedModule = await tryToLoadFile(routeMiddPath) // Magari ha già estensione
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (!loadedModule) {
|
|
53
|
+
log.error(`Middleware ${middleware} not loaded`)
|
|
54
|
+
throw new Error(`Middleware ${middleware} not loaded`)
|
|
55
|
+
}
|
|
56
|
+
return loadedModule
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function loadMiddlewares(base: string, middlewares: string[] = []) {
|
|
60
|
+
const midds = {}
|
|
61
|
+
for (const m of middlewares) {
|
|
62
|
+
const middleware = await loadMiddleware(base, m)
|
|
63
|
+
// I middleware possono esportare più funzioni (preHandler, preSerialization, ecc.)
|
|
64
|
+
Object.keys(middleware).map((name) => (midds[name] = [...(midds[name] || []), middleware[name]]))
|
|
65
|
+
}
|
|
66
|
+
return midds
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
async function load(): Promise<ConfiguredRoute[]> {
|
|
12
70
|
const validRoutes: ConfiguredRoute[] = []
|
|
13
71
|
const patterns = normalizePatterns(['..', 'api', '**', 'routes.{ts,js}'], ['src', 'api', '**', 'routes.{ts,js}'])
|
|
14
72
|
const authMiddlewares = ['global.isAuthenticated', 'global.isAdmin']
|
|
15
73
|
|
|
16
|
-
|
|
74
|
+
for (const pattern of patterns) {
|
|
17
75
|
log.t && log.trace('Looking for ' + pattern)
|
|
18
|
-
globSync(pattern, { windowsPathsNoEscape: true })
|
|
76
|
+
const files = globSync(pattern, { windowsPathsNoEscape: true })
|
|
77
|
+
|
|
78
|
+
for (const f of files) {
|
|
79
|
+
if (f.endsWith('.d.ts')) continue
|
|
80
|
+
|
|
19
81
|
const base = path.dirname(f)
|
|
20
82
|
const dir = path.basename(base)
|
|
21
83
|
const file = path.join(dir, path.basename(f))
|
|
22
84
|
|
|
23
|
-
|
|
24
|
-
const routesjs =
|
|
85
|
+
const module = await import(f)
|
|
86
|
+
const routesjs = module.default || module
|
|
25
87
|
const { routes = [], config: defaultConfig = {} } = routesjs || {}
|
|
26
88
|
|
|
27
89
|
log.t && log.trace(`* Add ${routes.length} routes from ${file}`)
|
|
@@ -42,7 +104,7 @@ export function load(): ConfiguredRoute[] {
|
|
|
42
104
|
let requiredRoles: Role[] = []
|
|
43
105
|
|
|
44
106
|
try {
|
|
45
|
-
requiredRoles = rsp.some((r) => r.code === roles.admin.code) ? rsp : [...rsp, roles.admin]
|
|
107
|
+
requiredRoles = rsp.some((r) => r.code === roles.admin.code) ? rsp : [...rsp, roles.admin]
|
|
46
108
|
} catch (err) {
|
|
47
109
|
log.e && log.error(`Error in loading roles for ${methodCase} ${pathName} (${handler})`)
|
|
48
110
|
log.t && log.trace(err)
|
|
@@ -57,7 +119,6 @@ export function load(): ConfiguredRoute[] {
|
|
|
57
119
|
config.security = 'bearer'
|
|
58
120
|
}
|
|
59
121
|
|
|
60
|
-
// specific route config
|
|
61
122
|
const {
|
|
62
123
|
title = '',
|
|
63
124
|
description = '',
|
|
@@ -74,24 +135,15 @@ export function load(): ConfiguredRoute[] {
|
|
|
74
135
|
rawBody = false
|
|
75
136
|
} = config || {}
|
|
76
137
|
|
|
77
|
-
// adjust something
|
|
78
138
|
const endpoint = `${dir}${pathName.replace(/\/+$/, '')}`
|
|
79
139
|
const method = methodCase.toUpperCase()
|
|
80
140
|
const num = index + 1
|
|
81
141
|
const handlerParts = handler.split('.')
|
|
82
142
|
|
|
83
143
|
if (enable) {
|
|
84
|
-
if (!pathName.startsWith('/')) {
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (!methods.includes(method)) {
|
|
89
|
-
errors.push(`Error in [${file}] bad method [${method}] at route n. ${num}`)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (handlerParts.length !== 2) {
|
|
93
|
-
errors.push(`Error in [${file}] bad handler [${handler}] at route n. ${num}`)
|
|
94
|
-
}
|
|
144
|
+
if (!pathName.startsWith('/')) errors.push(`Error in [${file}] bad path [${pathName}] at route n. ${num}`)
|
|
145
|
+
if (!methods.includes(method)) errors.push(`Error in [${file}] bad method [${method}] at route n. ${num}`)
|
|
146
|
+
if (handlerParts.length !== 2) errors.push(`Error in [${file}] bad handler [${handler}] at route n. ${num}`)
|
|
95
147
|
|
|
96
148
|
const key = method + endpoint + version
|
|
97
149
|
if (validRoutes.some((r) => `${r.method}${r.path}${r.doc?.version}` === key)) {
|
|
@@ -122,19 +174,7 @@ export function load(): ConfiguredRoute[] {
|
|
|
122
174
|
version,
|
|
123
175
|
security: security === 'bearer' ? [{ Bearer: [] }] : security,
|
|
124
176
|
response
|
|
125
|
-
} as
|
|
126
|
-
summary: string
|
|
127
|
-
description: string
|
|
128
|
-
deprecated: boolean
|
|
129
|
-
tags: string[]
|
|
130
|
-
version: string
|
|
131
|
-
security: any
|
|
132
|
-
response: any
|
|
133
|
-
querystring: any | undefined
|
|
134
|
-
params: any | undefined
|
|
135
|
-
body: any | undefined
|
|
136
|
-
consumes: any | undefined
|
|
137
|
-
}
|
|
177
|
+
} as any
|
|
138
178
|
|
|
139
179
|
if (query) doc.querystring = query
|
|
140
180
|
if (params) doc.params = params
|
|
@@ -153,67 +193,26 @@ export function load(): ConfiguredRoute[] {
|
|
|
153
193
|
base,
|
|
154
194
|
file: path.join(base, defaultConfig.controller || 'controller', handlerParts[0]),
|
|
155
195
|
func: handlerParts[1],
|
|
156
|
-
doc: doc
|
|
196
|
+
doc: doc
|
|
157
197
|
})
|
|
158
198
|
}
|
|
159
199
|
})
|
|
160
|
-
}
|
|
161
|
-
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
162
202
|
|
|
163
203
|
log.d && log.debug(`Routes loaded: ${validRoutes.length}`)
|
|
164
204
|
return validRoutes
|
|
165
205
|
}
|
|
166
206
|
|
|
167
|
-
async function
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
resolve(required)
|
|
172
|
-
} catch (err) {
|
|
173
|
-
reject(err)
|
|
174
|
-
}
|
|
175
|
-
})
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
async function loadMiddleware(base: string, middleware: string = '') {
|
|
179
|
-
const key = 'global.'
|
|
180
|
-
const isGlobal = middleware.indexOf(key) > -1
|
|
181
|
-
let required: any = null
|
|
182
|
-
|
|
183
|
-
if (isGlobal) {
|
|
184
|
-
const name = middleware.substring(key.length)
|
|
185
|
-
required = await tryToLoadFile(path.resolve(process.cwd() + '/src/middleware/' + name)).catch(async () => {
|
|
186
|
-
return await tryToLoadFile(path.resolve(__dirname + '/../middleware/' + name))
|
|
187
|
-
})
|
|
188
|
-
} else {
|
|
189
|
-
required = await tryToLoadFile(path.resolve(base + '/middleware/' + middleware))
|
|
207
|
+
async function applyRoutes(server: any, routes: ConfiguredRoute[]): Promise<void> {
|
|
208
|
+
if (!routes || routes.length === 0) {
|
|
209
|
+
log.w && log.warn('No routes to apply to server')
|
|
210
|
+
return
|
|
190
211
|
}
|
|
191
212
|
|
|
192
|
-
if (!required) {
|
|
193
|
-
log.error(`Middleware ${middleware} not loaded`)
|
|
194
|
-
throw new Error(`Middleware ${middleware} not loaded`)
|
|
195
|
-
}
|
|
196
|
-
return required
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
async function loadMiddlewares(base: string, middlewares: string[] = []) {
|
|
200
|
-
const midds = {}
|
|
201
|
-
await Promise.all(
|
|
202
|
-
middlewares.map(async (m) => {
|
|
203
|
-
const middleware = await loadMiddleware(base, m)
|
|
204
|
-
Object.keys(middleware).map((name) => (midds[name] = [...(midds[name] || []), middleware[name]]))
|
|
205
|
-
})
|
|
206
|
-
)
|
|
207
|
-
// log.debug(base + ' middleware ' + middlewares.length + ' -> ' + Object.keys(midds))
|
|
208
|
-
return midds
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// preParsing, preValidation, preHandler, preSerialization, ..
|
|
212
|
-
|
|
213
|
-
export function apply(server: any, routes: ConfiguredRoute[]): void {
|
|
214
213
|
log.t && log.trace(`Apply ${routes.length} routes to server with pid ${process.pid}`)
|
|
215
214
|
|
|
216
|
-
|
|
215
|
+
for (const route of routes) {
|
|
217
216
|
if (route?.enable) {
|
|
218
217
|
const { handler, method, path, middlewares, roles, rawBody, rateLimit, base, file, func, doc } = route
|
|
219
218
|
|
|
@@ -232,14 +231,37 @@ export function apply(server: any, routes: ConfiguredRoute[]): void {
|
|
|
232
231
|
},
|
|
233
232
|
handler: async function (req: FastifyRequest, reply: FastifyReply) {
|
|
234
233
|
try {
|
|
235
|
-
|
|
236
|
-
|
|
234
|
+
// Import dinamico del controller
|
|
235
|
+
// Dobbiamo assicurarci che 'file' abbia l'estensione corretta o che il resolver la trovi
|
|
236
|
+
// In ESM strict, meglio provare ad aggiungere .js se manca, o lasciare che Node risolva se è un path assoluto
|
|
237
|
+
let module
|
|
238
|
+
try {
|
|
239
|
+
module = await import(file + '.js')
|
|
240
|
+
} catch {
|
|
241
|
+
try {
|
|
242
|
+
module = await import(file + '.ts')
|
|
243
|
+
} catch {
|
|
244
|
+
module = await import(file)
|
|
245
|
+
}
|
|
246
|
+
}
|
|
237
247
|
} catch (err) {
|
|
238
|
-
log.e && log.error(`Cannot
|
|
239
|
-
return reply.code(500).send(`Invalid handler ${handler}`)
|
|
248
|
+
log.e && log.error(`Cannot load module ${file}: ${err}`)
|
|
249
|
+
return reply.code(500).send(`Invalid handler module ${handler}`)
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if (!module || typeof module[func] !== 'function') {
|
|
253
|
+
log.e && log.error(`Method ${func} not found in ${file}`)
|
|
254
|
+
return reply.code(500).send(`Invalid handler method ${handler}`)
|
|
240
255
|
}
|
|
256
|
+
|
|
257
|
+
return await module[func](req, reply)
|
|
241
258
|
}
|
|
242
259
|
})
|
|
243
260
|
}
|
|
244
|
-
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export async function apply(server: any): Promise<void> {
|
|
265
|
+
const routes = await load()
|
|
266
|
+
return await applyRoutes(server, routes)
|
|
245
267
|
}
|
package/lib/loader/schemas.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { normalizePatterns } from '../util/path.js'
|
|
2
2
|
import { globSync } from 'glob'
|
|
3
3
|
import path from 'path'
|
|
4
|
-
import require from '../util/require.js'
|
|
5
4
|
|
|
6
|
-
export function apply(server: any): void {
|
|
5
|
+
export async function apply(server: any): Promise<void> {
|
|
7
6
|
const [baseSchemaPath, customSchemaPath] = normalizePatterns(
|
|
8
7
|
['..', 'schemas', '*.{ts,js}'],
|
|
9
8
|
['src', 'schemas', '*.{ts,js}']
|
|
@@ -14,14 +13,19 @@ export function apply(server: any): void {
|
|
|
14
13
|
let schemaCount = 0
|
|
15
14
|
|
|
16
15
|
log.t && log.trace('Looking for custom schemas in ' + customSchemaPath)
|
|
17
|
-
globSync(customSchemaPath, { windowsPathsNoEscape: true })
|
|
16
|
+
const customFiles = globSync(customSchemaPath, { windowsPathsNoEscape: true })
|
|
17
|
+
|
|
18
|
+
for (const f of customFiles) {
|
|
19
|
+
if (f.endsWith('.d.ts')) continue
|
|
20
|
+
|
|
18
21
|
try {
|
|
19
|
-
const
|
|
20
|
-
const
|
|
22
|
+
const schemaModule = await import(f)
|
|
23
|
+
const schemaClass = schemaModule.default || schemaModule
|
|
24
|
+
const schemaNames = Object.keys(schemaModule)
|
|
21
25
|
|
|
22
26
|
schemaNames.forEach((name) => {
|
|
23
|
-
const schema =
|
|
24
|
-
if (schema
|
|
27
|
+
const schema = schemaModule[name]
|
|
28
|
+
if (schema && typeof schema === 'object' && schema.$id) {
|
|
25
29
|
customSchemas.push(schema)
|
|
26
30
|
customSchemaIds.add(schema.$id)
|
|
27
31
|
}
|
|
@@ -29,7 +33,7 @@ export function apply(server: any): void {
|
|
|
29
33
|
} catch (e) {
|
|
30
34
|
log.w && log.warn(`Could not load custom schema file: ${f}`, e)
|
|
31
35
|
}
|
|
32
|
-
}
|
|
36
|
+
}
|
|
33
37
|
|
|
34
38
|
customSchemas.forEach((schema) => {
|
|
35
39
|
log.trace(`* Registering custom schema [${schema.$id}]`)
|
|
@@ -38,15 +42,19 @@ export function apply(server: any): void {
|
|
|
38
42
|
})
|
|
39
43
|
|
|
40
44
|
log.t && log.trace('Looking for base schemas in ' + baseSchemaPath)
|
|
41
|
-
globSync(baseSchemaPath, { windowsPathsNoEscape: true })
|
|
45
|
+
const baseFiles = globSync(baseSchemaPath, { windowsPathsNoEscape: true })
|
|
46
|
+
|
|
47
|
+
for (const f of baseFiles) {
|
|
48
|
+
if (f.endsWith('.d.ts')) continue
|
|
49
|
+
|
|
42
50
|
try {
|
|
43
51
|
const schemaFileName = path.basename(f)
|
|
44
|
-
const
|
|
45
|
-
const schemaNames = Object.keys(
|
|
52
|
+
const schemaModule = await import(f)
|
|
53
|
+
const schemaNames = Object.keys(schemaModule)
|
|
46
54
|
|
|
47
55
|
schemaNames.forEach((name) => {
|
|
48
|
-
const schema =
|
|
49
|
-
if (schema
|
|
56
|
+
const schema = schemaModule[name]
|
|
57
|
+
if (schema && typeof schema === 'object' && schema.$id) {
|
|
50
58
|
if (customSchemaIds.has(schema.$id)) {
|
|
51
59
|
log.w &&
|
|
52
60
|
log.warn(
|
|
@@ -57,14 +65,14 @@ export function apply(server: any): void {
|
|
|
57
65
|
server.addSchema(schema)
|
|
58
66
|
schemaCount++
|
|
59
67
|
}
|
|
60
|
-
} else {
|
|
61
|
-
log.w && log.warn(`* Schema with no $id found in ${schemaFileName}, cannot be registered.`)
|
|
68
|
+
} else if (name !== 'default') {
|
|
69
|
+
log.w && log.warn(`* Schema with no $id found in ${schemaFileName} (export ${name}), cannot be registered.`)
|
|
62
70
|
}
|
|
63
71
|
})
|
|
64
72
|
} catch (e) {
|
|
65
73
|
log.w && log.warn(`Could not load base schema file: ${f}`, e)
|
|
66
74
|
}
|
|
67
|
-
}
|
|
75
|
+
}
|
|
68
76
|
|
|
69
77
|
log.d && log.debug(`Schemas loaded: ${schemaCount} referenceable by $ref`)
|
|
70
78
|
}
|