nodester 0.2.5 → 0.2.8

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 (64) hide show
  1. package/.eslintrc.js +13 -0
  2. package/Readme.md +12 -4
  3. package/lib/application/index.js +61 -53
  4. package/lib/body/extract.js +10 -10
  5. package/lib/controllers/methods/index.js +29 -14
  6. package/lib/controllers/mixins/index.js +13 -13
  7. package/lib/database/connection.js +78 -17
  8. package/lib/database/migration.js +9 -3
  9. package/lib/errors/CustomError.js +7 -2
  10. package/lib/errors/NodesterError.js +10 -2
  11. package/lib/errors/NodesterQueryError.js +9 -2
  12. package/lib/errors/index.js +2 -2
  13. package/lib/facades/methods/index.js +15 -15
  14. package/lib/facades/mixins/index.js +12 -12
  15. package/lib/factories/responses/html.js +20 -9
  16. package/lib/factories/responses/rest.js +21 -19
  17. package/lib/http/codes/descriptions.js +4 -3
  18. package/lib/http/codes/index.js +3 -2
  19. package/lib/http/codes/symbols.js +3 -2
  20. package/lib/http/request/index.js +20 -250
  21. package/lib/http/request/utils.js +4 -4
  22. package/lib/http/response/headers.js +16 -19
  23. package/lib/http/response/index.js +25 -28
  24. package/lib/http/response/utils.js +7 -6
  25. package/lib/loggers/console.js +3 -4
  26. package/lib/loggers/dev.js +3 -4
  27. package/lib/middlewares/404/index.js +38 -0
  28. package/lib/middlewares/SearchParams/index.js +3 -3
  29. package/lib/middlewares/cookies/index.js +2 -2
  30. package/lib/middlewares/etag/index.js +10 -8
  31. package/lib/middlewares/formidable/index.js +2 -2
  32. package/lib/middlewares/ql/sequelize/index.js +2 -2
  33. package/lib/middlewares/ql/sequelize/interpreter/ModelsTree.js +25 -4
  34. package/lib/middlewares/ql/sequelize/interpreter/QueryLexer.js +30 -18
  35. package/lib/middlewares/render/index.js +3 -3
  36. package/lib/models/associate.js +3 -2
  37. package/lib/models/define.js +37 -18
  38. package/lib/models/mixins.js +9 -9
  39. package/lib/query/traverse.js +40 -32
  40. package/lib/router/handlers.util.js +5 -5
  41. package/lib/router/index.js +84 -70
  42. package/lib/router/markers.js +5 -5
  43. package/lib/router/route.js +18 -19
  44. package/lib/router/routes.util.js +4 -4
  45. package/lib/router/utils.js +2 -2
  46. package/lib/stacks/MarkersStack.js +11 -9
  47. package/lib/stacks/MiddlewaresStack.js +25 -21
  48. package/lib/structures/Enum.js +8 -2
  49. package/lib/structures/Filter.js +31 -29
  50. package/lib/structures/Params.js +3 -3
  51. package/lib/tools/nql.tool.js +10 -2
  52. package/lib/tools/sql.tool.js +19 -2
  53. package/lib/utils/json.util.js +28 -27
  54. package/lib/utils/models.js +3 -2
  55. package/lib/utils/objects.util.js +10 -11
  56. package/lib/utils/path.util.js +9 -3
  57. package/lib/utils/sanitizations.util.js +3 -2
  58. package/lib/utils/types.util.js +11 -4
  59. package/lib/validators/arguments.js +28 -9
  60. package/lib/validators/dates.js +4 -5
  61. package/lib/validators/numbers.js +4 -4
  62. package/package.json +43 -39
  63. package/tests/nql.test.js +20 -7
  64. /package/lib/constants/{Operations.js → Operators.js} +0 -0
package/tests/nql.test.js CHANGED
@@ -17,8 +17,10 @@ describe('nodester Query Language', () => {
17
17
  const queryStrings = [
18
18
  // Simple where.
19
19
  'id=10',
20
+ // Only certain attributes.
21
+ 'a=id,text',
20
22
  // All possible params.
21
- 'id=10&position=4&limit=3&skip=10&order=desc&order_by=index&fields=id,content,position,created_at',
23
+ 'id=10&position=4&limit=3&skip=10&order=desc&order_by=index&a=id,content,position,created_at',
22
24
  ];
23
25
 
24
26
  it('Simple where', () => {
@@ -32,14 +34,25 @@ describe('nodester Query Language', () => {
32
34
  expect(result).toMatchObject(expected);
33
35
  });
34
36
 
35
- test('All possible params', () => {
37
+ it('Only certain attributes', () => {
36
38
  const lexer = new QueryLexer( queryStrings[1] );
37
39
  const result = lexer.query;
38
40
 
41
+ const tree = new ModelsTree();
42
+ tree.node.attributes = [ 'id', 'text' ];
43
+ const expected = tree.root.toObject();
44
+
45
+ expect(result).toMatchObject(expected);
46
+ });
47
+
48
+ test('All possible params', () => {
49
+ const lexer = new QueryLexer( queryStrings[2] );
50
+ const result = lexer.query;
51
+
39
52
 
40
53
  const tree = new ModelsTree();
41
54
  tree.node.addWhere({ id: ['10'], position: ['4'] });
42
- tree.node.fields = [ 'id', 'content', 'position', 'created_at' ];
55
+ tree.node.attributes = [ 'id', 'content', 'position', 'created_at' ];
43
56
  tree.node.limit = 3;
44
57
  tree.node.skip = 10;
45
58
  tree.node.order = 'desc';
@@ -55,7 +68,7 @@ describe('nodester Query Language', () => {
55
68
  // Simple includes.
56
69
  'includes=comments&id=7',
57
70
  // Include with All possible params.
58
- 'includes=comments(id=10&position=4&limit=3&skip=10&order=desc&order_by=index&fields=id,content,position)',
71
+ 'includes=comments(id=10&position=4&limit=3&skip=10&order=desc&order_by=index&a=id,content,position)',
59
72
 
60
73
  // 2 horizontals
61
74
  'includes=comments,users&id=1000',
@@ -66,7 +79,7 @@ describe('nodester Query Language', () => {
66
79
  'in=reactions,comments(user_id=gte(4)&skip=10&limit=2).users,likes,reposts',
67
80
 
68
81
  // Separated includes.
69
- 'includes=comments(order=rand)&id=7&limit=3&includes=users(fields=id,content)',
82
+ 'includes=comments(order=rand)&id=7&limit=3&includes=users(a=id,content)',
70
83
  ];
71
84
 
72
85
  test('Simple includes', () => {
@@ -89,7 +102,7 @@ describe('nodester Query Language', () => {
89
102
  const tree = new ModelsTree();
90
103
  tree.include('comments').use('comments');
91
104
  tree.node.addWhere({ id: ['10'], position: ['4'] });
92
- tree.node.fields = [ 'id', 'content', 'position' ];
105
+ tree.node.attributes = [ 'id', 'content', 'position' ];
93
106
  tree.node.limit = 3;
94
107
  tree.node.skip = 10;
95
108
  tree.node.order = 'desc';
@@ -171,7 +184,7 @@ describe('nodester Query Language', () => {
171
184
  tree.node.order = 'rand';
172
185
  tree.up();
173
186
  tree.include('users').use('users');
174
- tree.node.fields = [ 'id', 'content' ];
187
+ tree.node.attributes = [ 'id', 'content' ];
175
188
  const expected = tree.root.toObject();
176
189
 
177
190
  expect(result).toMatchObject(expected);
File without changes