@spinajs/http 2.0.179 → 2.0.181

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 (247) hide show
  1. package/lib/cjs/bootstrap.d.ts +4 -4
  2. package/lib/cjs/bootstrap.js +29 -29
  3. package/lib/cjs/bootstrap.js.map +1 -1
  4. package/lib/cjs/config/http.d.ts +58 -58
  5. package/lib/cjs/config/http.js +86 -86
  6. package/lib/cjs/controllers.d.ts +48 -48
  7. package/lib/cjs/controllers.d.ts.map +1 -1
  8. package/lib/cjs/controllers.js +307 -312
  9. package/lib/cjs/controllers.js.map +1 -1
  10. package/lib/cjs/decorators.d.ts +183 -183
  11. package/lib/cjs/decorators.js +441 -441
  12. package/lib/cjs/hydrators/DateTimeHydrator.d.ts +5 -5
  13. package/lib/cjs/hydrators/DateTimeHydrator.js +36 -36
  14. package/lib/cjs/hydrators/DateTimeHydrator.js.map +1 -1
  15. package/lib/cjs/index.d.ts +9 -9
  16. package/lib/cjs/index.js +25 -25
  17. package/lib/cjs/interfaces.d.ts +569 -550
  18. package/lib/cjs/interfaces.d.ts.map +1 -1
  19. package/lib/cjs/interfaces.js +266 -259
  20. package/lib/cjs/interfaces.js.map +1 -1
  21. package/lib/cjs/middlewares/RealIp.d.ts +8 -8
  22. package/lib/cjs/middlewares/RealIp.js +34 -34
  23. package/lib/cjs/middlewares/RealIp.js.map +1 -1
  24. package/lib/cjs/middlewares/RequestId.d.ts +8 -8
  25. package/lib/cjs/middlewares/RequestId.js +35 -35
  26. package/lib/cjs/middlewares/RequestId.js.map +1 -1
  27. package/lib/cjs/middlewares/ResponseTime.d.ts +10 -10
  28. package/lib/cjs/middlewares/ResponseTime.js +41 -41
  29. package/lib/cjs/middlewares/ResponseTime.js.map +1 -1
  30. package/lib/cjs/response-methods/badRequest.d.ts +12 -12
  31. package/lib/cjs/response-methods/badRequest.js +20 -20
  32. package/lib/cjs/response-methods/conflict.d.ts +12 -12
  33. package/lib/cjs/response-methods/conflict.js +20 -20
  34. package/lib/cjs/response-methods/cookieResponse.d.ts +19 -19
  35. package/lib/cjs/response-methods/cookieResponse.js +73 -73
  36. package/lib/cjs/response-methods/created.d.ts +12 -12
  37. package/lib/cjs/response-methods/created.js +19 -19
  38. package/lib/cjs/response-methods/errorResponse.d.ts +7 -7
  39. package/lib/cjs/response-methods/errorResponse.js +24 -24
  40. package/lib/cjs/response-methods/file.d.ts +26 -26
  41. package/lib/cjs/response-methods/file.d.ts.map +1 -1
  42. package/lib/cjs/response-methods/file.js +112 -133
  43. package/lib/cjs/response-methods/file.js.map +1 -1
  44. package/lib/cjs/response-methods/forbidden.d.ts +12 -12
  45. package/lib/cjs/response-methods/forbidden.js +20 -20
  46. package/lib/cjs/response-methods/index.d.ts +13 -13
  47. package/lib/cjs/response-methods/index.js +29 -29
  48. package/lib/cjs/response-methods/noContent.d.ts +12 -12
  49. package/lib/cjs/response-methods/noContent.js +20 -20
  50. package/lib/cjs/response-methods/notAcceptable.d.ts +13 -13
  51. package/lib/cjs/response-methods/notAcceptable.js +21 -21
  52. package/lib/cjs/response-methods/notAllowed.d.ts +12 -12
  53. package/lib/cjs/response-methods/notAllowed.js +20 -20
  54. package/lib/cjs/response-methods/notFound.d.ts +12 -12
  55. package/lib/cjs/response-methods/notFound.js +20 -20
  56. package/lib/cjs/response-methods/ok.d.ts +12 -12
  57. package/lib/cjs/response-methods/ok.js +19 -19
  58. package/lib/cjs/response-methods/redirect.d.ts +12 -12
  59. package/lib/cjs/response-methods/redirect.js +19 -19
  60. package/lib/cjs/response-methods/serverError.d.ts +12 -12
  61. package/lib/cjs/response-methods/serverError.js +20 -20
  62. package/lib/cjs/response-methods/template.d.ts +15 -15
  63. package/lib/cjs/response-methods/template.js +36 -36
  64. package/lib/cjs/response-methods/unauthorized.d.ts +12 -12
  65. package/lib/cjs/response-methods/unauthorized.js +20 -20
  66. package/lib/cjs/response-methods/validationError.d.ts +12 -12
  67. package/lib/cjs/response-methods/validationError.js +20 -20
  68. package/lib/cjs/responses.d.ts +34 -34
  69. package/lib/cjs/responses.js +173 -173
  70. package/lib/cjs/route-args/ArgAsRequest.d.ts +11 -11
  71. package/lib/cjs/route-args/ArgAsRequest.js +24 -24
  72. package/lib/cjs/route-args/ArgAsRequest.js.map +1 -1
  73. package/lib/cjs/route-args/ArgAsResponse.d.ts +10 -10
  74. package/lib/cjs/route-args/ArgAsResponse.js +24 -24
  75. package/lib/cjs/route-args/ArgAsResponse.js.map +1 -1
  76. package/lib/cjs/route-args/ArgHydrator.d.ts +4 -4
  77. package/lib/cjs/route-args/ArgHydrator.js +6 -6
  78. package/lib/cjs/route-args/FromBody.d.ts +10 -10
  79. package/lib/cjs/route-args/FromBody.js +26 -26
  80. package/lib/cjs/route-args/FromBody.js.map +1 -1
  81. package/lib/cjs/route-args/FromCookie.d.ts +13 -13
  82. package/lib/cjs/route-args/FromCookie.js +72 -72
  83. package/lib/cjs/route-args/FromCookie.js.map +1 -1
  84. package/lib/cjs/route-args/FromDi.d.ts +13 -13
  85. package/lib/cjs/route-args/FromDi.js +35 -35
  86. package/lib/cjs/route-args/FromDi.js.map +1 -1
  87. package/lib/cjs/route-args/FromForm.d.ts +66 -92
  88. package/lib/cjs/route-args/FromForm.d.ts.map +1 -1
  89. package/lib/cjs/route-args/FromForm.js +214 -291
  90. package/lib/cjs/route-args/FromForm.js.map +1 -1
  91. package/lib/cjs/route-args/FromHeaderArg.d.ts +10 -10
  92. package/lib/cjs/route-args/FromHeaderArg.js +25 -25
  93. package/lib/cjs/route-args/FromHeaderArg.js.map +1 -1
  94. package/lib/cjs/route-args/FromParams.d.ts +10 -10
  95. package/lib/cjs/route-args/FromParams.js +27 -27
  96. package/lib/cjs/route-args/FromParams.js.map +1 -1
  97. package/lib/cjs/route-args/FromQuery.d.ts +10 -10
  98. package/lib/cjs/route-args/FromQuery.js +27 -27
  99. package/lib/cjs/route-args/FromQuery.js.map +1 -1
  100. package/lib/cjs/route-args/RequestFields.d.ts +40 -40
  101. package/lib/cjs/route-args/RequestFields.js +110 -110
  102. package/lib/cjs/route-args/RequestFields.js.map +1 -1
  103. package/lib/cjs/route-args/RouteArgs.d.ts +22 -22
  104. package/lib/cjs/route-args/RouteArgs.js +114 -114
  105. package/lib/cjs/route-args/RouteArgs.js.map +1 -1
  106. package/lib/cjs/route-args/index.d.ts +12 -12
  107. package/lib/cjs/route-args/index.js +28 -28
  108. package/lib/cjs/schemas/RouteArgsSchemas.d.ts +36 -36
  109. package/lib/cjs/schemas/RouteArgsSchemas.js +26 -26
  110. package/lib/cjs/server.d.ts +50 -50
  111. package/lib/cjs/server.js +272 -272
  112. package/lib/cjs/server.js.map +1 -1
  113. package/lib/cjs/transformers/PureTransformer.d.ts +9 -9
  114. package/lib/cjs/transformers/PureTransformer.js +27 -27
  115. package/lib/cjs/transformers/PureTransformer.js.map +1 -1
  116. package/lib/cjs/transformers/index.d.ts +1 -1
  117. package/lib/cjs/transformers/index.js +17 -17
  118. package/lib/cjs/uploaders/ImmediateFileUploader.d.ts +19 -0
  119. package/lib/cjs/uploaders/ImmediateFileUploader.d.ts.map +1 -0
  120. package/lib/cjs/uploaders/ImmediateFileUploader.js +69 -0
  121. package/lib/cjs/uploaders/ImmediateFileUploader.js.map +1 -0
  122. package/lib/mjs/bootstrap.d.ts +4 -4
  123. package/lib/mjs/bootstrap.js +26 -26
  124. package/lib/mjs/bootstrap.js.map +1 -1
  125. package/lib/mjs/config/http.d.ts +58 -58
  126. package/lib/mjs/config/http.js +81 -81
  127. package/lib/mjs/controllers.d.ts +48 -48
  128. package/lib/mjs/controllers.d.ts.map +1 -1
  129. package/lib/mjs/controllers.js +276 -281
  130. package/lib/mjs/controllers.js.map +1 -1
  131. package/lib/mjs/decorators.d.ts +183 -183
  132. package/lib/mjs/decorators.js +404 -404
  133. package/lib/mjs/exceptions.d.ts +1 -1
  134. package/lib/mjs/exceptions.js +1 -1
  135. package/lib/mjs/hydrators/DateTimeHydrator.d.ts +5 -5
  136. package/lib/mjs/hydrators/DateTimeHydrator.js +30 -30
  137. package/lib/mjs/hydrators/DateTimeHydrator.js.map +1 -1
  138. package/lib/mjs/index.d.ts +9 -9
  139. package/lib/mjs/index.js +9 -9
  140. package/lib/mjs/interfaces.d.ts +569 -550
  141. package/lib/mjs/interfaces.d.ts.map +1 -1
  142. package/lib/mjs/interfaces.js +257 -251
  143. package/lib/mjs/interfaces.js.map +1 -1
  144. package/lib/mjs/middlewares/RealIp.d.ts +8 -8
  145. package/lib/mjs/middlewares/RealIp.js +31 -31
  146. package/lib/mjs/middlewares/RealIp.js.map +1 -1
  147. package/lib/mjs/middlewares/RequestId.d.ts +8 -8
  148. package/lib/mjs/middlewares/RequestId.js +32 -32
  149. package/lib/mjs/middlewares/RequestId.js.map +1 -1
  150. package/lib/mjs/middlewares/ResponseTime.d.ts +10 -10
  151. package/lib/mjs/middlewares/ResponseTime.js +38 -38
  152. package/lib/mjs/middlewares/ResponseTime.js.map +1 -1
  153. package/lib/mjs/response-methods/badRequest.d.ts +12 -12
  154. package/lib/mjs/response-methods/badRequest.js +16 -16
  155. package/lib/mjs/response-methods/conflict.d.ts +12 -12
  156. package/lib/mjs/response-methods/conflict.js +16 -16
  157. package/lib/mjs/response-methods/cookieResponse.d.ts +19 -19
  158. package/lib/mjs/response-methods/cookieResponse.js +46 -46
  159. package/lib/mjs/response-methods/created.d.ts +12 -12
  160. package/lib/mjs/response-methods/created.js +15 -15
  161. package/lib/mjs/response-methods/errorResponse.d.ts +7 -7
  162. package/lib/mjs/response-methods/errorResponse.js +17 -17
  163. package/lib/mjs/response-methods/file.d.ts +26 -26
  164. package/lib/mjs/response-methods/file.d.ts.map +1 -1
  165. package/lib/mjs/response-methods/file.js +103 -124
  166. package/lib/mjs/response-methods/file.js.map +1 -1
  167. package/lib/mjs/response-methods/forbidden.d.ts +12 -12
  168. package/lib/mjs/response-methods/forbidden.js +16 -16
  169. package/lib/mjs/response-methods/index.d.ts +13 -13
  170. package/lib/mjs/response-methods/index.js +13 -13
  171. package/lib/mjs/response-methods/noContent.d.ts +12 -12
  172. package/lib/mjs/response-methods/noContent.js +16 -16
  173. package/lib/mjs/response-methods/notAcceptable.d.ts +13 -13
  174. package/lib/mjs/response-methods/notAcceptable.js +17 -17
  175. package/lib/mjs/response-methods/notAllowed.d.ts +12 -12
  176. package/lib/mjs/response-methods/notAllowed.js +16 -16
  177. package/lib/mjs/response-methods/notFound.d.ts +12 -12
  178. package/lib/mjs/response-methods/notFound.js +16 -16
  179. package/lib/mjs/response-methods/ok.d.ts +12 -12
  180. package/lib/mjs/response-methods/ok.js +15 -15
  181. package/lib/mjs/response-methods/redirect.d.ts +12 -12
  182. package/lib/mjs/response-methods/redirect.js +15 -15
  183. package/lib/mjs/response-methods/serverError.d.ts +12 -12
  184. package/lib/mjs/response-methods/serverError.js +16 -16
  185. package/lib/mjs/response-methods/template.d.ts +15 -15
  186. package/lib/mjs/response-methods/template.js +29 -29
  187. package/lib/mjs/response-methods/unauthorized.d.ts +12 -12
  188. package/lib/mjs/response-methods/unauthorized.js +16 -16
  189. package/lib/mjs/response-methods/validationError.d.ts +12 -12
  190. package/lib/mjs/response-methods/validationError.js +16 -16
  191. package/lib/mjs/responses.d.ts +34 -34
  192. package/lib/mjs/responses.js +143 -143
  193. package/lib/mjs/route-args/ArgAsRequest.d.ts +11 -11
  194. package/lib/mjs/route-args/ArgAsRequest.js +21 -21
  195. package/lib/mjs/route-args/ArgAsRequest.js.map +1 -1
  196. package/lib/mjs/route-args/ArgAsResponse.d.ts +10 -10
  197. package/lib/mjs/route-args/ArgAsResponse.js +21 -21
  198. package/lib/mjs/route-args/ArgAsResponse.js.map +1 -1
  199. package/lib/mjs/route-args/ArgHydrator.d.ts +4 -4
  200. package/lib/mjs/route-args/ArgHydrator.js +2 -2
  201. package/lib/mjs/route-args/FromBody.d.ts +10 -10
  202. package/lib/mjs/route-args/FromBody.js +23 -23
  203. package/lib/mjs/route-args/FromBody.js.map +1 -1
  204. package/lib/mjs/route-args/FromCookie.d.ts +13 -13
  205. package/lib/mjs/route-args/FromCookie.js +46 -46
  206. package/lib/mjs/route-args/FromCookie.js.map +1 -1
  207. package/lib/mjs/route-args/FromDi.d.ts +13 -13
  208. package/lib/mjs/route-args/FromDi.js +32 -32
  209. package/lib/mjs/route-args/FromDi.js.map +1 -1
  210. package/lib/mjs/route-args/FromForm.d.ts +66 -92
  211. package/lib/mjs/route-args/FromForm.d.ts.map +1 -1
  212. package/lib/mjs/route-args/FromForm.js +210 -284
  213. package/lib/mjs/route-args/FromForm.js.map +1 -1
  214. package/lib/mjs/route-args/FromHeaderArg.d.ts +10 -10
  215. package/lib/mjs/route-args/FromHeaderArg.js +22 -22
  216. package/lib/mjs/route-args/FromHeaderArg.js.map +1 -1
  217. package/lib/mjs/route-args/FromParams.d.ts +10 -10
  218. package/lib/mjs/route-args/FromParams.js +24 -24
  219. package/lib/mjs/route-args/FromParams.js.map +1 -1
  220. package/lib/mjs/route-args/FromQuery.d.ts +10 -10
  221. package/lib/mjs/route-args/FromQuery.js +24 -24
  222. package/lib/mjs/route-args/FromQuery.js.map +1 -1
  223. package/lib/mjs/route-args/RequestFields.d.ts +40 -40
  224. package/lib/mjs/route-args/RequestFields.js +107 -107
  225. package/lib/mjs/route-args/RequestFields.js.map +1 -1
  226. package/lib/mjs/route-args/RouteArgs.d.ts +22 -22
  227. package/lib/mjs/route-args/RouteArgs.js +107 -107
  228. package/lib/mjs/route-args/RouteArgs.js.map +1 -1
  229. package/lib/mjs/route-args/index.d.ts +12 -12
  230. package/lib/mjs/route-args/index.js +12 -12
  231. package/lib/mjs/schemas/RouteArgsSchemas.d.ts +36 -36
  232. package/lib/mjs/schemas/RouteArgsSchemas.js +23 -23
  233. package/lib/mjs/server.d.ts +50 -50
  234. package/lib/mjs/server.js +266 -266
  235. package/lib/mjs/server.js.map +1 -1
  236. package/lib/mjs/transformers/PureTransformer.d.ts +9 -9
  237. package/lib/mjs/transformers/PureTransformer.js +24 -24
  238. package/lib/mjs/transformers/PureTransformer.js.map +1 -1
  239. package/lib/mjs/transformers/index.d.ts +1 -1
  240. package/lib/mjs/transformers/index.js +1 -1
  241. package/lib/mjs/uploaders/ImmediateFileUploader.d.ts +19 -0
  242. package/lib/mjs/uploaders/ImmediateFileUploader.d.ts.map +1 -0
  243. package/lib/mjs/uploaders/ImmediateFileUploader.js +66 -0
  244. package/lib/mjs/uploaders/ImmediateFileUploader.js.map +1 -0
  245. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  246. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  247. package/package.json +17 -17
@@ -1,551 +1,570 @@
1
- import * as express from 'express';
2
- import { Constructor, AsyncService } from '@spinajs/di';
3
- import { fs } from '@spinajs/fs';
4
- /**
5
- * Accept header enum
6
- */
7
- export declare enum HttpAcceptHeaders {
8
- /**
9
- * Accept header for JSON
10
- */
11
- JSON = 1,
12
- /**
13
- * Accept header for HTML
14
- */
15
- HTML = 2,
16
- /**
17
- * Accept header for XML
18
- */
19
- XML = 4,
20
- /**
21
- * Plain text
22
- */
23
- TEXT = 8,
24
- /**
25
- * Image response
26
- */
27
- IMAGE = 16,
28
- PDF = 32,
29
- /**
30
- * Accept other request type ( let server decide )
31
- */
32
- OTHER = 64,
33
- /**
34
- * Accept all accept headers shorcut
35
- */
36
- ALL = 7
37
- }
38
- /**
39
- * Config options for static files
40
- */
41
- export interface IHttpStaticFileConfiguration {
42
- /**
43
- * virtual prefix in url eg. http://localhost:3000/static/images/kitten.jpg
44
- */
45
- Route: string;
46
- /**
47
- * full path to folder with static content
48
- */
49
- Path: string;
50
- }
51
- /**
52
- * Uploaded file fields
53
- */
54
- export interface IUploadedFile {
55
- /**
56
- * File size in bytes
57
- */
58
- Size: number;
59
- /**
60
- * Original file name
61
- */
62
- Name: string;
63
- /**
64
- * Filename without path
65
- */
66
- BaseName: string;
67
- /**
68
- * Mime type of file
69
- */
70
- Type: string;
71
- LastModifiedDate?: Date;
72
- Hash?: string;
73
- /**
74
- * File system provider used to store this file eg. could be local, or aws s3 etc
75
- */
76
- Provider: fs;
77
- }
78
- export interface Request extends express.Request {
79
- storage: IActionLocalStoregeContext;
80
- }
81
- export interface IActionLocalStoregeContext {
82
- requestId: string;
83
- responseStart: Date;
84
- responseEnd: Date;
85
- responseTime: number;
86
- realIp: string;
87
- }
88
- export declare abstract class ServerMiddleware extends AsyncService {
89
- Order: number;
90
- abstract before(): (req: Request, res: express.Response, next: express.NextFunction) => void | null;
91
- abstract after(): (req: Request, res: express.Response, next: express.NextFunction) => void | null;
92
- }
93
- /**
94
- * HTTP response statuses
95
- */
96
- export declare enum HTTP_STATUS_CODE {
97
- /**
98
- * All ok with content
99
- */
100
- OK = 200,
101
- /**
102
- * Request is OK and new resource has been created.
103
- */
104
- CREATED = 201,
105
- /**
106
- * Request is accepted, but has not been completed yet.
107
- */
108
- ACCEPTED = 202,
109
- /**
110
- * ALl is ok & no content to return
111
- */
112
- NO_CONTENT = 204,
113
- /**
114
- * The server is delivering only part of the resource (byte serving) due to a range header
115
- * sent by the client. The range header is used by HTTP clients to enable resuming of
116
- * interrupted downloads, or split a download into multiple simultaneous streams.
117
- */
118
- PARTIAL_CONTENT = 206,
119
- /**
120
- * Resource is not modified
121
- */
122
- NOT_MODIFIED = 304,
123
- /**
124
- * Invalid request, eg. invalid parameters
125
- */
126
- BAD_REQUEST = 400,
127
- /**
128
- * Auth required
129
- */
130
- UNAUTHORIZED = 401,
131
- /**
132
- * No permission
133
- */
134
- FORBIDDEN = 403,
135
- /**
136
- * Resource not found
137
- */
138
- NOT_FOUND = 404,
139
- /**
140
- * Not acceptable request headers (Accept header)
141
- */
142
- NOT_ACCEPTABLE = 406,
143
- /**
144
- * Method not allowed eg. DELETE not allowed on resource, or login second time
145
- */
146
- NOT_ALLOWED = 405,
147
- /**
148
- * Conflict
149
- */
150
- CONFLICT = 409,
151
- /**
152
- * Internal server error.
153
- */
154
- INTERNAL_ERROR = 500,
155
- /**
156
- * Method not implemented
157
- */
158
- NOT_IMPLEMENTED = 501
159
- }
160
- /**
161
- * Avaible route types, match HTTP methods
162
- */
163
- export declare enum RouteType {
164
- /**
165
- * POST method - used to create new resource or send data to server
166
- */
167
- POST = "post",
168
- /**
169
- * GET method - used to retrieve data from server
170
- */
171
- GET = "get",
172
- /**
173
- * PUT method - used to updates resource
174
- */
175
- PUT = "put",
176
- /**
177
- * DELETE method - used to delete resource
178
- */
179
- DELETE = "delete",
180
- /**
181
- * PATCH method - used to partially update resource eg. one field
182
- */
183
- PATCH = "patch",
184
- /**
185
- * HEAD method - same as get, but returns no data. usefull for checking if resource exists etc.
186
- */
187
- HEAD = "head",
188
- /**
189
- * FILE method - spine special route type. Internall its simple GET method, but informs that specified route returns binary file
190
- */
191
- FILE = "file",
192
- UNKNOWN = "unknown"
193
- }
194
- export declare enum UuidVersion {
195
- v1 = 0,
196
- v3 = 1,
197
- v4 = 2,
198
- v5 = 3
199
- }
200
- /**
201
- * Avaible route parameters type
202
- */
203
- export declare enum ParameterType {
204
- /**
205
- * Standard request whole fields
206
- */
207
- BodyField = "BodyFieldRouteArgs",
208
- QueryField = "QueryFieldRouteArgs",
209
- ParamField = "ParamFieldRouteArgs",
210
- Headers = "HeadersFieldRouteArgs",
211
- /**
212
- * Request type from request header
213
- */
214
- RequestType = "RequestTypeRouteArgs",
215
- /**
216
- * Parameter is injected from DI container & resolved
217
- */
218
- FromDi = "FromDi",
219
- /**
220
- * Parameter value is taken from query string eg. `?name=flavio`
221
- */
222
- FromQuery = "FromQuery",
223
- /**
224
- * From message body, eg. POST json object
225
- */
226
- FromBody = "FromBody",
227
- /**
228
- * From url params eg: `/:id`
229
- */
230
- FromParams = "FromParams",
231
- /**
232
- * From form file field
233
- */
234
- FromFile = "FromFile",
235
- /**
236
- * From form
237
- */
238
- FromForm = "FromForm",
239
- /**
240
- * From cvs file
241
- */
242
- FromCSV = "FromCSV",
243
- /**
244
- * From JSON file
245
- */
246
- FromJSONFile = "FromJSONFile",
247
- /**
248
- * From form field
249
- */
250
- FormField = "FromFormField",
251
- /**
252
- * From model object
253
- */
254
- FromModel = "FromModel",
255
- /**
256
- * Data from coockie
257
- */
258
- FromCookie = "FromCookie",
259
- /**
260
- * From http header
261
- */
262
- FromHeader = "FromHeader",
263
- /**
264
- * Req from express
265
- */
266
- Req = "ArgAsRequest",
267
- Res = "ArgAsResponse",
268
- /**
269
- * Other custom arguments
270
- */
271
- Other = "Other"
272
- }
273
- export interface IFormOptions {
274
- multiples: boolean;
275
- }
276
- export interface IFormOptions {
277
- /**
278
- * default 1000; limit the number of fields that the Querystring parser will decode, set 0 for unlimited
279
- */
280
- maxFields?: number;
281
- /**
282
- * default 20 * 1024 * 1024 (20mb); limit the amount of memory all fields together (except files) can allocate in bytes.
283
- */
284
- maxFieldsSize?: number;
285
- /**
286
- * default 'utf-8'; sets encoding for incoming form fields,
287
- */
288
- encoding?: string;
289
- }
290
- export interface IUploadOptions {
291
- /**
292
- * default false; include checksums calculated for incoming files, set this to some hash algorithm, see crypto.createHash for available algorithms
293
- */
294
- hash?: false;
295
- /**
296
- * File provider name used to upload files
297
- * Defaults to default provider set in fs.defaultProvider config options
298
- */
299
- provider?: string;
300
- /**
301
- * default false; when you call the .parse method, the files argument (of the callback) will contain arrays of files for inputs which submit multiple files using the HTML5 multiple attribute. Also, the fields argument will contain arrays of values for fields that have names ending with '[]'.
302
- */
303
- multiples?: boolean;
304
- enabledPlugins?: string[];
305
- /**
306
- * default 200 * 1024 * 1024 (200mb); limit the size of uploaded file.
307
- */
308
- maxFileSize?: number;
309
- /**
310
- * default false; to include the extensions of the original files or not
311
- */
312
- keepExtensions?: boolean;
313
- /**
314
- * Should obtain fileInfo when uploading ?
315
- */
316
- fileInfo?: boolean;
317
- }
318
- /**
319
- * Describes parameters passed to route.
320
- */
321
- export interface IRouteParameter<T = any> {
322
- /**
323
- * Parameter index in function args
324
- */
325
- Index: number;
326
- /**
327
- * Is value taken from query string, url params or message body
328
- */
329
- Type: ParameterType | string;
330
- /**
331
- * Schema for validation parameter ( raw value eg. to check if matches string / number constrain)
332
- */
333
- RouteParamSchema?: any;
334
- /**
335
- * Schema for paramater
336
- */
337
- Schema?: any;
338
- /**
339
- * Additional options
340
- */
341
- Options?: T;
342
- /**
343
- * Parameter runtime type eg. number or class
344
- */
345
- RuntimeType: any;
346
- /**
347
- * Name of parameter eg. `id`
348
- */
349
- Name: string;
350
- }
351
- /**
352
- * Route action call spefici data. Used to pass data / arguments when parsing
353
- * action parameters for specific call. Eg. to parse form data, and extract it
354
- * as different arguments.
355
- */
356
- export interface IRouteCall {
357
- Payload: any;
358
- }
359
- export interface ICookieOptions {
360
- maxAge?: number | undefined;
361
- signed?: boolean | undefined;
362
- expires?: Date | undefined;
363
- httpOnly?: boolean | undefined;
364
- path?: string | undefined;
365
- domain?: string | undefined;
366
- secure?: boolean | undefined;
367
- sameSite?: boolean | 'lax' | 'strict' | 'none' | undefined;
368
- }
369
- export interface IRoute {
370
- /**
371
- * url path eg. /foo/bar/:id
372
- */
373
- Path: string;
374
- /**
375
- * HTTP request method, used internally. Not visible to others.
376
- */
377
- InternalType: RouteType;
378
- /**
379
- * SPINAJS API method type, mostly same as HTTP type, but can be non standard type eg. FILE
380
- * This type is visible outside in api discovery.
381
- */
382
- Type: RouteType;
383
- /**
384
- * Method name assigned to this route eg. `findUsers`
385
- */
386
- Method: string;
387
- /**
388
- * Custom route parameters taken from query string or message body
389
- */
390
- Parameters: Map<number, IRouteParameter>;
391
- /**
392
- * Assigned middlewares to route
393
- */
394
- Middlewares: IMiddlewareDescriptor[];
395
- /**
396
- * Assigned policies to route
397
- */
398
- Policies: IPolicyDescriptor[];
399
- /**
400
- * Additional route options eg. file size etc.
401
- */
402
- Options: any;
403
- Schema: any;
404
- }
405
- export interface IMiddlewareDescriptor {
406
- Type: Constructor<RouteMiddleware>;
407
- Options: any[];
408
- }
409
- export interface IController {
410
- /**
411
- * Express router with middleware stack
412
- */
413
- Router: express.Router;
414
- /**
415
- * Controller descriptor
416
- */
417
- Descriptor: IControllerDescriptor;
418
- /**
419
- * Base path for all controller routes eg. my/custom/path/
420
- *
421
- * It can be defined via `@BasePath` decorator, defaults to controller name without `Controller` part.
422
- */
423
- BasePath: string;
424
- }
425
- /**
426
- * Middlewares are classes that can change request object or perform specific task before & after route execution
427
- * eg. route parameter logging / headers check etc.
428
- */
429
- export declare abstract class RouteMiddleware {
430
- /**
431
- * Inform, if middleware is enabled for given action
432
- */
433
- abstract isEnabled(route: IRoute, controller: IController): boolean;
434
- /**
435
- * Called before action in middleware stack eg. to modify req or resp objects.
436
- * Its express middleware func
437
- */
438
- abstract onBefore(req: express.Request, res: express.Response, route: IRoute, controller: IController): Promise<void>;
439
- /**
440
- * Called after action response, is framework middleware
441
- * Used to modify response returned by actions in controller
442
- * eg. filter out data
443
- *
444
- */
445
- abstract onResponse(response: Response, route: IRoute, controller: IController): Promise<void>;
446
- /**
447
- * Called after action in middleware stack eg. to modify express response.
448
- * Its express middleware func
449
- */
450
- abstract onAfter(req: express.Request, res: express.Response, route: IRoute, controller: IController): Promise<void>;
451
- }
452
- /**
453
- * Descriptor for policies eg. attached routes, passed options eg. token etc.
454
- */
455
- export interface IPolicyDescriptor {
456
- Type: Constructor<BasePolicy> | string;
457
- Options: any[];
458
- }
459
- export type ResponseFunction = (req: express.Request, res: express.Response) => void;
460
- export declare abstract class Response {
461
- protected responseData: any;
462
- constructor(responseData: any);
463
- abstract execute(req: express.Request, res: express.Response, next?: express.NextFunction): Promise<ResponseFunction | void>;
464
- }
465
- /**
466
- * Base class for policies.
467
- *
468
- * Policies checks if route can be executed eg. user have proper role
469
- */
470
- export declare abstract class BasePolicy {
471
- /**
472
- * Checks if policy is enabled for given action & controlle eg. user session exists
473
- *
474
- * @param action action that is executed ( route info )
475
- * @param instance controller instance
476
- */
477
- abstract isEnabled(action: IRoute, instance: IController): boolean;
478
- /**
479
- *
480
- * Executes policy, when throws exception - route is not executed
481
- *
482
- * @param req express request object
483
- */
484
- abstract execute(req: Request, action: IRoute, instance: IController): Promise<void>;
485
- }
486
- /**
487
- * Descriptor for controller
488
- */
489
- export interface IControllerDescriptor {
490
- /**
491
- * Controller routes
492
- */
493
- Routes: Map<string | symbol, IRoute>;
494
- /**
495
- * Controller - wise middlewares
496
- */
497
- Middlewares: IMiddlewareDescriptor[];
498
- /**
499
- * Controller - wise policies
500
- */
501
- Policies: IPolicyDescriptor[];
502
- /**
503
- * Base url path for controller ( added for all child url's)
504
- */
505
- BasePath: string;
506
- }
507
- /**
508
- * Base class for data transformers.
509
- *
510
- * Data formatter helps transforms data for desired format.
511
- * Eg. we have API function that returns some data, but we want
512
- * to easily transform data for some client
513
- * eg. plain array to format that datatables.net can easily read
514
- */
515
- export declare abstract class DataTransformer<T = any, U = any> {
516
- /**
517
- * Transforms data from one format to another
518
- *
519
- * @param data - input data
520
- */
521
- abstract transform(data: T, request: express.Request): U;
522
- abstract get Type(): string;
523
- }
524
- export type RouteCallback = (req: express.Request, res: express.Response, next: express.NextFunction) => (req: express.Request, res: express.Response) => void;
525
- export interface IFileResponseOptions {
526
- /**
527
- * Path to file
528
- */
529
- path: string;
530
- /**
531
- * File system provider, default is local
532
- */
533
- provider?: string;
534
- /**
535
- * File name ( for browser )
536
- */
537
- filename: string;
538
- /**
539
- * If not provided, it will be guessed
540
- */
541
- mimeType?: string;
542
- /**
543
- * Should delete file after downloaded eg. generated temp file
544
- */
545
- deleteAfterDownload?: boolean;
546
- }
547
- export interface ITemplateResponseOptions {
548
- template: string;
549
- provider?: string;
550
- }
1
+ import * as express from 'express';
2
+ import { Constructor, AsyncService } from '@spinajs/di';
3
+ import { fs } from '@spinajs/fs';
4
+ import formidable from 'formidable';
5
+ /**
6
+ * Accept header enum
7
+ */
8
+ export declare enum HttpAcceptHeaders {
9
+ /**
10
+ * Accept header for JSON
11
+ */
12
+ JSON = 1,
13
+ /**
14
+ * Accept header for HTML
15
+ */
16
+ HTML = 2,
17
+ /**
18
+ * Accept header for XML
19
+ */
20
+ XML = 4,
21
+ /**
22
+ * Plain text
23
+ */
24
+ TEXT = 8,
25
+ /**
26
+ * Image response
27
+ */
28
+ IMAGE = 16,
29
+ PDF = 32,
30
+ /**
31
+ * Accept other request type ( let server decide )
32
+ */
33
+ OTHER = 64,
34
+ /**
35
+ * Accept all accept headers shorcut
36
+ */
37
+ ALL = 7
38
+ }
39
+ /**
40
+ * Config options for static files
41
+ */
42
+ export interface IHttpStaticFileConfiguration {
43
+ /**
44
+ * virtual prefix in url eg. http://localhost:3000/static/images/kitten.jpg
45
+ */
46
+ Route: string;
47
+ /**
48
+ * full path to folder with static content
49
+ */
50
+ Path: string;
51
+ }
52
+ /**
53
+ * Uploaded file fields
54
+ */
55
+ export interface IUploadedFile {
56
+ /**
57
+ * File size in bytes
58
+ */
59
+ Size: number;
60
+ /**
61
+ * Original file name
62
+ */
63
+ Name: string;
64
+ /**
65
+ * Filename without path
66
+ */
67
+ BaseName: string;
68
+ /**
69
+ * Mime type of file
70
+ */
71
+ Type: string;
72
+ LastModifiedDate?: Date;
73
+ Hash?: string;
74
+ /**
75
+ * File system provider used to store this file eg. could be local, or aws s3 etc
76
+ */
77
+ Provider: fs;
78
+ }
79
+ export interface Request extends express.Request {
80
+ storage: IActionLocalStoregeContext;
81
+ }
82
+ /**
83
+ * File upload provider, used to copy incoming formidable
84
+ * file to desired location eg. local, aws s3 etc.
85
+ */
86
+ export declare abstract class FormFileUploader {
87
+ abstract upload(file: formidable.File, dst: string): Promise<IUploadedFile>;
88
+ }
89
+ export interface IActionLocalStoregeContext {
90
+ requestId: string;
91
+ responseStart: Date;
92
+ responseEnd: Date;
93
+ responseTime: number;
94
+ realIp: string;
95
+ }
96
+ export declare abstract class ServerMiddleware extends AsyncService {
97
+ Order: number;
98
+ abstract before(): (req: Request, res: express.Response, next: express.NextFunction) => void | null;
99
+ abstract after(): (req: Request, res: express.Response, next: express.NextFunction) => void | null;
100
+ }
101
+ /**
102
+ * HTTP response statuses
103
+ */
104
+ export declare enum HTTP_STATUS_CODE {
105
+ /**
106
+ * All ok with content
107
+ */
108
+ OK = 200,
109
+ /**
110
+ * Request is OK and new resource has been created.
111
+ */
112
+ CREATED = 201,
113
+ /**
114
+ * Request is accepted, but has not been completed yet.
115
+ */
116
+ ACCEPTED = 202,
117
+ /**
118
+ * ALl is ok & no content to return
119
+ */
120
+ NO_CONTENT = 204,
121
+ /**
122
+ * The server is delivering only part of the resource (byte serving) due to a range header
123
+ * sent by the client. The range header is used by HTTP clients to enable resuming of
124
+ * interrupted downloads, or split a download into multiple simultaneous streams.
125
+ */
126
+ PARTIAL_CONTENT = 206,
127
+ /**
128
+ * Resource is not modified
129
+ */
130
+ NOT_MODIFIED = 304,
131
+ /**
132
+ * Invalid request, eg. invalid parameters
133
+ */
134
+ BAD_REQUEST = 400,
135
+ /**
136
+ * Auth required
137
+ */
138
+ UNAUTHORIZED = 401,
139
+ /**
140
+ * No permission
141
+ */
142
+ FORBIDDEN = 403,
143
+ /**
144
+ * Resource not found
145
+ */
146
+ NOT_FOUND = 404,
147
+ /**
148
+ * Not acceptable request headers (Accept header)
149
+ */
150
+ NOT_ACCEPTABLE = 406,
151
+ /**
152
+ * Method not allowed eg. DELETE not allowed on resource, or login second time
153
+ */
154
+ NOT_ALLOWED = 405,
155
+ /**
156
+ * Conflict
157
+ */
158
+ CONFLICT = 409,
159
+ /**
160
+ * Internal server error.
161
+ */
162
+ INTERNAL_ERROR = 500,
163
+ /**
164
+ * Method not implemented
165
+ */
166
+ NOT_IMPLEMENTED = 501
167
+ }
168
+ /**
169
+ * Avaible route types, match HTTP methods
170
+ */
171
+ export declare enum RouteType {
172
+ /**
173
+ * POST method - used to create new resource or send data to server
174
+ */
175
+ POST = "post",
176
+ /**
177
+ * GET method - used to retrieve data from server
178
+ */
179
+ GET = "get",
180
+ /**
181
+ * PUT method - used to updates resource
182
+ */
183
+ PUT = "put",
184
+ /**
185
+ * DELETE method - used to delete resource
186
+ */
187
+ DELETE = "delete",
188
+ /**
189
+ * PATCH method - used to partially update resource eg. one field
190
+ */
191
+ PATCH = "patch",
192
+ /**
193
+ * HEAD method - same as get, but returns no data. usefull for checking if resource exists etc.
194
+ */
195
+ HEAD = "head",
196
+ /**
197
+ * FILE method - spine special route type. Internall its simple GET method, but informs that specified route returns binary file
198
+ */
199
+ FILE = "file",
200
+ UNKNOWN = "unknown"
201
+ }
202
+ export declare enum UuidVersion {
203
+ v1 = 0,
204
+ v3 = 1,
205
+ v4 = 2,
206
+ v5 = 3
207
+ }
208
+ /**
209
+ * Avaible route parameters type
210
+ */
211
+ export declare enum ParameterType {
212
+ /**
213
+ * Standard request whole fields
214
+ */
215
+ BodyField = "BodyFieldRouteArgs",
216
+ QueryField = "QueryFieldRouteArgs",
217
+ ParamField = "ParamFieldRouteArgs",
218
+ Headers = "HeadersFieldRouteArgs",
219
+ /**
220
+ * Request type from request header
221
+ */
222
+ RequestType = "RequestTypeRouteArgs",
223
+ /**
224
+ * Parameter is injected from DI container & resolved
225
+ */
226
+ FromDi = "FromDi",
227
+ /**
228
+ * Parameter value is taken from query string eg. `?name=flavio`
229
+ */
230
+ FromQuery = "FromQuery",
231
+ /**
232
+ * From message body, eg. POST json object
233
+ */
234
+ FromBody = "FromBody",
235
+ /**
236
+ * From url params eg: `/:id`
237
+ */
238
+ FromParams = "FromParams",
239
+ /**
240
+ * From form file field
241
+ */
242
+ FromFile = "FromFile",
243
+ /**
244
+ * From form
245
+ */
246
+ FromForm = "FromForm",
247
+ /**
248
+ * From cvs file
249
+ */
250
+ FromCSV = "FromCSV",
251
+ /**
252
+ * From JSON file
253
+ */
254
+ FromJSONFile = "FromJSONFile",
255
+ /**
256
+ * From form field
257
+ */
258
+ FormField = "FromFormField",
259
+ /**
260
+ * From model object
261
+ */
262
+ FromModel = "FromModel",
263
+ /**
264
+ * Data from coockie
265
+ */
266
+ FromCookie = "FromCookie",
267
+ /**
268
+ * From http header
269
+ */
270
+ FromHeader = "FromHeader",
271
+ /**
272
+ * Req from express
273
+ */
274
+ Req = "ArgAsRequest",
275
+ Res = "ArgAsResponse",
276
+ /**
277
+ * Other custom arguments
278
+ */
279
+ Other = "Other"
280
+ }
281
+ export interface IFormOptions {
282
+ multiples: boolean;
283
+ }
284
+ export interface IFormOptions {
285
+ /**
286
+ * default 1000; limit the number of fields that the Querystring parser will decode, set 0 for unlimited
287
+ */
288
+ maxFields?: number;
289
+ /**
290
+ * default 20 * 1024 * 1024 (20mb); limit the amount of memory all fields together (except files) can allocate in bytes.
291
+ */
292
+ maxFieldsSize?: number;
293
+ /**
294
+ * default 'utf-8'; sets encoding for incoming form fields,
295
+ */
296
+ encoding?: string;
297
+ }
298
+ export interface IUploadOptions {
299
+ /**
300
+ * default false; include checksums calculated for incoming files, set this to some hash algorithm, see crypto.createHash for available algorithms
301
+ */
302
+ hash?: false;
303
+ /**
304
+ * File provider name used to upload files
305
+ * Defaults to default provider set is copy immediately to fs
306
+ *
307
+ * Set this for eg. if lazy copying is needed eg. to aws s3 to not stall main thread
308
+ */
309
+ uploader?: string;
310
+ /**
311
+ * File system provider used to upload files. Default is taken from configuration
312
+ * DefaultFsProvider
313
+ */
314
+ uploaderFs?: string;
315
+ /**
316
+ * default false; when you call the .parse method, the files argument (of the callback) will contain arrays of files for inputs which submit multiple files using the HTML5 multiple attribute. Also, the fields argument will contain arrays of values for fields that have names ending with '[]'.
317
+ */
318
+ multiples?: boolean;
319
+ enabledPlugins?: string[];
320
+ /**
321
+ * default 200 * 1024 * 1024 (200mb); limit the size of uploaded file.
322
+ */
323
+ maxFileSize?: number;
324
+ /**
325
+ * default false; to include the extensions of the original files or not
326
+ */
327
+ keepExtensions?: boolean;
328
+ /**
329
+ * Should obtain fileInfo when uploading ?
330
+ */
331
+ fileInfo?: boolean;
332
+ /**
333
+ * Is this file / files required ?
334
+ */
335
+ required?: boolean;
336
+ }
337
+ /**
338
+ * Describes parameters passed to route.
339
+ */
340
+ export interface IRouteParameter<T = any> {
341
+ /**
342
+ * Parameter index in function args
343
+ */
344
+ Index: number;
345
+ /**
346
+ * Is value taken from query string, url params or message body
347
+ */
348
+ Type: ParameterType | string;
349
+ /**
350
+ * Schema for validation parameter ( raw value eg. to check if matches string / number constrain)
351
+ */
352
+ RouteParamSchema?: any;
353
+ /**
354
+ * Schema for paramater
355
+ */
356
+ Schema?: any;
357
+ /**
358
+ * Additional options
359
+ */
360
+ Options?: T;
361
+ /**
362
+ * Parameter runtime type eg. number or class
363
+ */
364
+ RuntimeType: any;
365
+ /**
366
+ * Name of parameter eg. `id`
367
+ */
368
+ Name: string;
369
+ }
370
+ /**
371
+ * Route action call spefici data. Used to pass data / arguments when parsing
372
+ * action parameters for specific call. Eg. to parse form data, and extract it
373
+ * as different arguments.
374
+ */
375
+ export interface IRouteCall {
376
+ Payload: any;
377
+ }
378
+ export interface ICookieOptions {
379
+ maxAge?: number | undefined;
380
+ signed?: boolean | undefined;
381
+ expires?: Date | undefined;
382
+ httpOnly?: boolean | undefined;
383
+ path?: string | undefined;
384
+ domain?: string | undefined;
385
+ secure?: boolean | undefined;
386
+ sameSite?: boolean | 'lax' | 'strict' | 'none' | undefined;
387
+ }
388
+ export interface IRoute {
389
+ /**
390
+ * url path eg. /foo/bar/:id
391
+ */
392
+ Path: string;
393
+ /**
394
+ * HTTP request method, used internally. Not visible to others.
395
+ */
396
+ InternalType: RouteType;
397
+ /**
398
+ * SPINAJS API method type, mostly same as HTTP type, but can be non standard type eg. FILE
399
+ * This type is visible outside in api discovery.
400
+ */
401
+ Type: RouteType;
402
+ /**
403
+ * Method name assigned to this route eg. `findUsers`
404
+ */
405
+ Method: string;
406
+ /**
407
+ * Custom route parameters taken from query string or message body
408
+ */
409
+ Parameters: Map<number, IRouteParameter>;
410
+ /**
411
+ * Assigned middlewares to route
412
+ */
413
+ Middlewares: IMiddlewareDescriptor[];
414
+ /**
415
+ * Assigned policies to route
416
+ */
417
+ Policies: IPolicyDescriptor[];
418
+ /**
419
+ * Additional route options eg. file size etc.
420
+ */
421
+ Options: any;
422
+ Schema: any;
423
+ }
424
+ export interface IMiddlewareDescriptor {
425
+ Type: Constructor<RouteMiddleware>;
426
+ Options: any[];
427
+ }
428
+ export interface IController {
429
+ /**
430
+ * Express router with middleware stack
431
+ */
432
+ Router: express.Router;
433
+ /**
434
+ * Controller descriptor
435
+ */
436
+ Descriptor: IControllerDescriptor;
437
+ /**
438
+ * Base path for all controller routes eg. my/custom/path/
439
+ *
440
+ * It can be defined via `@BasePath` decorator, defaults to controller name without `Controller` part.
441
+ */
442
+ BasePath: string;
443
+ }
444
+ /**
445
+ * Middlewares are classes that can change request object or perform specific task before & after route execution
446
+ * eg. route parameter logging / headers check etc.
447
+ */
448
+ export declare abstract class RouteMiddleware {
449
+ /**
450
+ * Inform, if middleware is enabled for given action
451
+ */
452
+ abstract isEnabled(route: IRoute, controller: IController): boolean;
453
+ /**
454
+ * Called before action in middleware stack eg. to modify req or resp objects.
455
+ * Its express middleware func
456
+ */
457
+ abstract onBefore(req: express.Request, res: express.Response, route: IRoute, controller: IController): Promise<void>;
458
+ /**
459
+ * Called after action response, is framework middleware
460
+ * Used to modify response returned by actions in controller
461
+ * eg. filter out data
462
+ *
463
+ */
464
+ abstract onResponse(response: Response, route: IRoute, controller: IController): Promise<void>;
465
+ /**
466
+ * Called after action in middleware stack eg. to modify express response.
467
+ * Its express middleware func
468
+ */
469
+ abstract onAfter(req: express.Request, res: express.Response, route: IRoute, controller: IController): Promise<void>;
470
+ }
471
+ /**
472
+ * Descriptor for policies eg. attached routes, passed options eg. token etc.
473
+ */
474
+ export interface IPolicyDescriptor {
475
+ Type: Constructor<BasePolicy> | string;
476
+ Options: any[];
477
+ }
478
+ export type ResponseFunction = (req: express.Request, res: express.Response) => void;
479
+ export declare abstract class Response {
480
+ protected responseData: any;
481
+ constructor(responseData: any);
482
+ abstract execute(req: express.Request, res: express.Response, next?: express.NextFunction): Promise<ResponseFunction | void>;
483
+ }
484
+ /**
485
+ * Base class for policies.
486
+ *
487
+ * Policies checks if route can be executed eg. user have proper role
488
+ */
489
+ export declare abstract class BasePolicy {
490
+ /**
491
+ * Checks if policy is enabled for given action & controlle eg. user session exists
492
+ *
493
+ * @param action action that is executed ( route info )
494
+ * @param instance controller instance
495
+ */
496
+ abstract isEnabled(action: IRoute, instance: IController): boolean;
497
+ /**
498
+ *
499
+ * Executes policy, when throws exception - route is not executed
500
+ *
501
+ * @param req express request object
502
+ */
503
+ abstract execute(req: Request, action: IRoute, instance: IController): Promise<void>;
504
+ }
505
+ /**
506
+ * Descriptor for controller
507
+ */
508
+ export interface IControllerDescriptor {
509
+ /**
510
+ * Controller routes
511
+ */
512
+ Routes: Map<string | symbol, IRoute>;
513
+ /**
514
+ * Controller - wise middlewares
515
+ */
516
+ Middlewares: IMiddlewareDescriptor[];
517
+ /**
518
+ * Controller - wise policies
519
+ */
520
+ Policies: IPolicyDescriptor[];
521
+ /**
522
+ * Base url path for controller ( added for all child url's)
523
+ */
524
+ BasePath: string;
525
+ }
526
+ /**
527
+ * Base class for data transformers.
528
+ *
529
+ * Data formatter helps transforms data for desired format.
530
+ * Eg. we have API function that returns some data, but we want
531
+ * to easily transform data for some client
532
+ * eg. plain array to format that datatables.net can easily read
533
+ */
534
+ export declare abstract class DataTransformer<T = any, U = any> {
535
+ /**
536
+ * Transforms data from one format to another
537
+ *
538
+ * @param data - input data
539
+ */
540
+ abstract transform(data: T, request: express.Request): U;
541
+ abstract get Type(): string;
542
+ }
543
+ export type RouteCallback = (req: express.Request, res: express.Response, next: express.NextFunction) => (req: express.Request, res: express.Response) => void;
544
+ export interface IFileResponseOptions {
545
+ /**
546
+ * Path to file
547
+ */
548
+ path: string;
549
+ /**
550
+ * File system provider, default is local
551
+ */
552
+ provider?: string;
553
+ /**
554
+ * File name ( for browser )
555
+ */
556
+ filename: string;
557
+ /**
558
+ * If not provided, it will be guessed
559
+ */
560
+ mimeType?: string;
561
+ /**
562
+ * Should delete file after downloaded eg. generated temp file
563
+ */
564
+ deleteAfterDownload?: boolean;
565
+ }
566
+ export interface ITemplateResponseOptions {
567
+ template: string;
568
+ provider?: string;
569
+ }
551
570
  //# sourceMappingURL=interfaces.d.ts.map