nodester 0.0.1 → 0.0.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.
Files changed (68) hide show
  1. package/Readme.md +33 -39
  2. package/lib/application/index.js +110 -38
  3. package/lib/constants/Operations.js +23 -0
  4. package/lib/controllers/methods/index.js +194 -0
  5. package/lib/controllers/mixins/index.js +222 -0
  6. package/lib/database/connection.js +34 -0
  7. package/lib/database/migration.js +42 -0
  8. package/lib/database/utils.js +19 -0
  9. package/lib/enums/Enum.js +16 -0
  10. package/lib/facades/methods/index.js +173 -0
  11. package/lib/facades/mixins/index.js +111 -0
  12. package/lib/factories/errors/CustomError.js +7 -5
  13. package/lib/factories/responses/html.js +7 -2
  14. package/lib/factories/responses/rest.js +110 -0
  15. package/lib/http/codes/index.js +157 -0
  16. package/lib/{application/http → http}/request.js +6 -30
  17. package/lib/{application/http → http}/response.js +20 -53
  18. package/lib/middlewares/etag/index.js +62 -0
  19. package/lib/middlewares/ql/sequelize/index.js +34 -0
  20. package/lib/middlewares/ql/sequelize/interpreter/ModelsTree.js +121 -0
  21. package/lib/middlewares/ql/sequelize/interpreter/QueryLexer.js +456 -0
  22. package/lib/models/associate.js +17 -0
  23. package/lib/models/define.js +56 -14
  24. package/lib/models/mixins.js +100 -78
  25. package/lib/params/Params.js +37 -0
  26. package/lib/queries/Colander.js +84 -0
  27. package/lib/queries/NodesterQueryParams.js +139 -0
  28. package/lib/queries/traverse.js +311 -0
  29. package/lib/router/handlers.util.js +61 -0
  30. package/lib/router/index.js +386 -0
  31. package/lib/router/route.js +124 -0
  32. package/lib/router/routes.util.js +66 -0
  33. package/lib/stacks/MarkersStack.js +35 -0
  34. package/lib/{application → stacks}/MiddlewareStack.js +47 -13
  35. package/lib/utils/path.util.js +3 -1
  36. package/lib/utils/types.util.js +51 -1
  37. package/lib/validators/dates.js +25 -0
  38. package/lib/validators/numbers.js +14 -0
  39. package/package.json +31 -4
  40. package/tests/index.test.js +7 -2
  41. package/tests/nql.test.js +277 -0
  42. package/docs/App.md +0 -13
  43. package/docs/Queries.md +0 -61
  44. package/docs/Readme.md +0 -2
  45. package/docs/Routing.md +0 -34
  46. package/examples/goal/index.js +0 -23
  47. package/examples/rest/index.js +0 -25
  48. package/examples/rest/node_modules/.package-lock.json +0 -40
  49. package/examples/rest/package-lock.json +0 -72
  50. package/examples/rest/package.json +0 -14
  51. package/lib/constants/ConstantsEnum.js +0 -13
  52. package/lib/controllers/Controller.js +0 -474
  53. package/lib/controllers/JWTController.js +0 -240
  54. package/lib/controllers/ServiceController.js +0 -109
  55. package/lib/controllers/WebController.js +0 -75
  56. package/lib/facades/Facade.js +0 -388
  57. package/lib/facades/FacadeParams.js +0 -11
  58. package/lib/facades/ServiceFacade.js +0 -17
  59. package/lib/facades/jwt.facade.js +0 -273
  60. package/lib/factories/responses/api.js +0 -90
  61. package/lib/models/DisabledRefreshToken.js +0 -68
  62. package/lib/models/Extractor.js +0 -320
  63. package/lib/routers/Default/index.js +0 -143
  64. package/lib/routers/Default/layer.js +0 -50
  65. package/lib/routers/Main/index.js +0 -10
  66. package/lib/routers/Roles/index.js +0 -81
  67. package/lib/utils/params.util.js +0 -19
  68. /package/lib/{application/http → http}/utils.js +0 -0
@@ -1,81 +0,0 @@
1
- const express = require('express');
2
- // Utils:
3
- const cwd = process.cwd();
4
- const Path = require('path');
5
- // Custom error.
6
- const { Err } = require('nodester/factories/errors');
7
-
8
-
9
- class RolesRouter extends express.Router {
10
- constructor(
11
- rolesToRoutesMap={},
12
- pathToControllers=null
13
- ) {
14
- super();
15
-
16
- // rolesToRoutesMap is a map of role -> route -> controller:
17
- if (!rolesToRoutesMap) {
18
- const err = new Err('"rolesToRoutesMap" argument is required.');
19
- throw err;
20
- }
21
-
22
- if (!pathToControllers) {
23
- const err = new Err('"pathToControllers" argument is required.');
24
- throw err;
25
- }
26
-
27
- // Extract all available roles.
28
- const roles = Object.keys(rolesToRoutesMap);
29
-
30
- // Flip map (Make it route -> role -> controller):
31
- const routesToRolesMap = {};
32
- for (const role of roles) {
33
- const roleRoutes = rolesToRoutesMap[role]
34
-
35
- for (const route in roleRoutes) {
36
- // If this route is set:
37
- if (!!routesToRolesMap[route]) {
38
- // Add role to set.
39
- routesToRolesMap[route][role] = roleRoutes[route];
40
- }
41
- else {
42
- // Create set for this role.
43
- routesToRolesMap[route] = { [role]: roleRoutes[route] };
44
- }
45
- }
46
- }
47
-
48
- // At this point we have a map of route -> role -> controller.
49
- // Let's now set these routes to this Router:
50
- for (const route in routesToRolesMap) {
51
- const rolesAndControllersMap = routesToRolesMap[route];
52
-
53
- // Split route by space, as it has structure [<Rest method> <Route>]
54
- const routeParts = route.split(/\s+/);
55
- const routeMethod = routeParts[0].toLocaleLowerCase();
56
- const routePath = routeParts[1].replace(/\s\s+/g, ' ');
57
-
58
- // Set up this route:
59
- this.route(routePath)[routeMethod]((req, res, next) => {
60
- // Extract role:
61
- const role = req?.user?.role ?? 'visitor';
62
-
63
- // If no handler for this role-route, skip:
64
- if (!rolesAndControllersMap[role]) {
65
- return next();
66
- }
67
-
68
- const controllerAndMethod = rolesAndControllersMap[role].split('.');
69
- const controllerName = controllerAndMethod[0];
70
- const controllerMethod = controllerAndMethod[1];
71
-
72
- // Get controller from path.
73
- const controller = require(Path.join(cwd, pathToControllers, controllerName));
74
-
75
- return controller[controllerMethod](req, res, next);
76
- });
77
- }
78
- }
79
- }
80
-
81
- module.exports = RolesRouter;
@@ -1,19 +0,0 @@
1
-
2
- module.exports = Params;
3
-
4
- function Params(
5
- sourceObject={},
6
- defaultValuesList={}
7
- ) {
8
- const result = {};
9
-
10
- const keys = Object.keys(defaultValuesList);
11
- for (const key of keys) {
12
- result[key] = typeof sourceObject[key] !== 'boolean' && !sourceObject[key] ?
13
- defaultValuesList[key]
14
- :
15
- sourceObject[key];
16
- }
17
-
18
- return result;
19
- }
File without changes