nodester 0.1.5 → 0.2.1
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 +25 -61
- package/lib/application/index.js +185 -63
- package/lib/body/extract.js +15 -4
- package/lib/constants/Bounds.js +15 -0
- package/lib/constants/Clauses.js +13 -0
- package/lib/constants/ResponseFormats.js +2 -2
- package/lib/controllers/methods/index.js +7 -0
- package/lib/controllers/mixins/index.js +36 -36
- package/lib/database/connection.js +6 -0
- package/lib/database/migration.js +14 -4
- package/lib/facades/methods/index.js +10 -9
- package/lib/facades/mixins/index.js +67 -13
- package/lib/factories/responses/rest.js +25 -13
- package/lib/http/{request.js → request/index.js} +53 -75
- package/lib/http/request/utils.js +27 -0
- package/lib/http/response/headers.js +138 -0
- package/lib/http/response/index.js +248 -0
- package/lib/http/response/utils.js +38 -0
- package/lib/middlewares/SearchParams/index.js +25 -0
- package/lib/middlewares/cookies/index.js +44 -0
- package/lib/middlewares/etag/index.js +32 -15
- package/lib/middlewares/formidable/index.js +30 -25
- package/lib/middlewares/ql/sequelize/index.js +11 -2
- package/lib/middlewares/ql/sequelize/interpreter/QueryLexer.js +10 -2
- package/lib/middlewares/render/index.js +62 -0
- package/lib/models/associate.js +25 -1
- package/lib/models/define.js +19 -15
- package/lib/models/mixins.js +7 -0
- package/lib/query/traverse.js +97 -63
- package/lib/router/handlers.util.js +1 -0
- package/lib/router/index.js +193 -98
- package/lib/router/markers.js +7 -0
- package/lib/router/route.js +5 -0
- package/lib/router/routes.util.js +12 -14
- package/lib/router/utils.js +7 -0
- package/lib/stacks/MarkersStack.js +41 -3
- package/lib/stacks/MiddlewaresStack.js +200 -0
- package/lib/structures/Enum.js +46 -0
- package/lib/structures/Filter.js +157 -0
- package/lib/structures/Params.js +55 -0
- package/lib/tools/sql.tool.js +7 -0
- package/lib/utils/objects.util.js +31 -24
- package/lib/utils/sanitizations.util.js +10 -4
- package/lib/validators/arguments.js +68 -0
- package/lib/validators/dates.js +7 -0
- package/lib/validators/numbers.js +7 -0
- package/package.json +11 -8
- package/tests/index.test.js +4 -4
- package/tests/nql.test.js +18 -1
- package/lib/database/utils.js +0 -19
- package/lib/enums/Enum.js +0 -16
- package/lib/filters/Filter.js +0 -109
- package/lib/http/response.js +0 -1074
- package/lib/http/utils.js +0 -254
- package/lib/params/Params.js +0 -37
- package/lib/policies/Role.js +0 -77
- package/lib/policies/RoleExtracting.js +0 -97
- package/lib/services/includes.service.js +0 -79
- package/lib/services/jwt.service.js +0 -147
- package/lib/stacks/MiddlewareStack.js +0 -159
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
const finalhandler = require('finalhandler');
|
|
2
|
-
const consl = require('nodester/loggers/console');
|
|
3
|
-
const debug = require('debug')('nodester:MiddlewareStack');
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
module.exports = class MiddlewareStack {
|
|
7
|
-
constructor(opts={}) {
|
|
8
|
-
// This array MUST stay flat!
|
|
9
|
-
this.middlewares = [];
|
|
10
|
-
|
|
11
|
-
// Indicates whether we can add more middlewares or no.
|
|
12
|
-
this.isLocked = false;
|
|
13
|
-
this.finalhandlerEnabled = !!opts.finalhandlerEnabled;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const env = process.env.NODE_ENV || 'development';
|
|
17
|
-
// Final middleware & error handler.
|
|
18
|
-
this.finalhandler = (req, res) => finalhandler(req, res, {
|
|
19
|
-
env: env,
|
|
20
|
-
onerror: consl.error.bind(this)
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Add the given middleware `fn` to the stack.
|
|
27
|
-
*
|
|
28
|
-
* @param {Function} fn
|
|
29
|
-
* @param {Integer} index (0 or undefined)
|
|
30
|
-
* @return {Integer} index of new middleware
|
|
31
|
-
*
|
|
32
|
-
* @api public
|
|
33
|
-
*/
|
|
34
|
-
add(fn, index) {
|
|
35
|
-
if (this.isLocked) {
|
|
36
|
-
const err = new Error(`Can't add more middlewares while stack is locked.`);
|
|
37
|
-
throw err;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (typeof fn !== 'function') {
|
|
41
|
-
const err = new TypeError('middleware must be a function!');
|
|
42
|
-
throw err;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (!!index && isNaN(index)) {
|
|
46
|
-
const err = new TypeError('"index" must be an Integer!');
|
|
47
|
-
throw err;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
let pushedIndex = -1;
|
|
51
|
-
|
|
52
|
-
if (index === 0) {
|
|
53
|
-
this.middlewares.unshift(fn);
|
|
54
|
-
pushedIndex = 0;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
pushedIndex = this.middlewares.push(fn);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
debug(`added middleware (${ pushedIndex })`);
|
|
61
|
-
return pushedIndex;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Removes middleware at index.
|
|
67
|
-
*
|
|
68
|
-
* @param {Integer} index
|
|
69
|
-
* @return {MiddlewareStack} self
|
|
70
|
-
*
|
|
71
|
-
* @api public
|
|
72
|
-
*/
|
|
73
|
-
remove(index=-1) {
|
|
74
|
-
if (this.isLocked) {
|
|
75
|
-
const err = new Error(`Can't remove middlewares while stack is locked.`);
|
|
76
|
-
throw err;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (isNaN(index)) {
|
|
80
|
-
const err = new TypeError('"index" must be an Integer!');
|
|
81
|
-
throw err;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
this.middlewares.splice(index, 1);
|
|
85
|
-
debug(`removed middleware (${ index })`);
|
|
86
|
-
return this;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
/*
|
|
91
|
-
* Prepare stack for processing.
|
|
92
|
-
*
|
|
93
|
-
* @api public
|
|
94
|
-
*/
|
|
95
|
-
lock() {
|
|
96
|
-
if (this.finalhandlerEnabled) {
|
|
97
|
-
// Add final handler to the stack.
|
|
98
|
-
this.add((req, res)=>this.finalhandler(req, res)());
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Stack is ready.
|
|
102
|
-
this.isLocked = true;
|
|
103
|
-
|
|
104
|
-
debug(`stack is locked`);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
/*
|
|
109
|
-
* Unlocks stack.
|
|
110
|
-
*
|
|
111
|
-
* @api public
|
|
112
|
-
*/
|
|
113
|
-
unlock() {
|
|
114
|
-
this.isLocked = false;
|
|
115
|
-
|
|
116
|
-
if (this.finalhandlerEnabled) {
|
|
117
|
-
this.middlewares.pop();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
debug(`stack is unlocked`);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
/*
|
|
125
|
-
* Start chain.
|
|
126
|
-
*
|
|
127
|
-
* @api public
|
|
128
|
-
*/
|
|
129
|
-
process(req, res, next) {
|
|
130
|
-
let middlewareOffset = -1;
|
|
131
|
-
|
|
132
|
-
const _next = (...args) => {
|
|
133
|
-
middlewareOffset += 1;
|
|
134
|
-
const fn = this.middlewares[middlewareOffset];
|
|
135
|
-
|
|
136
|
-
try {
|
|
137
|
-
if (!fn && !next) {
|
|
138
|
-
const err = new TypeError(`Handler for ${ req.method } ${ req.url } is not defined.`);
|
|
139
|
-
throw err;
|
|
140
|
-
}
|
|
141
|
-
else if (!fn && !!next) {
|
|
142
|
-
return next.call(null, req, res, next, ...args);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return fn.call(null, req, res, _next, ...args);
|
|
146
|
-
}
|
|
147
|
-
catch(error) {
|
|
148
|
-
return this.finalhandler(req, res)(error);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return _next();
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
get length() {
|
|
157
|
-
return this.middlewares.length;
|
|
158
|
-
}
|
|
159
|
-
}
|