@e22m4u/ts-rest-router 0.1.2 → 0.2.0

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 (139) hide show
  1. package/README.md +59 -57
  2. package/dist/cjs/index.cjs +346 -360
  3. package/dist/esm/controller-registry.js +28 -28
  4. package/dist/esm/debuggable-service.d.ts +10 -1
  5. package/dist/esm/debuggable-service.js +14 -3
  6. package/dist/esm/decorators/after-action/after-action-decorator.d.ts +9 -0
  7. package/dist/esm/decorators/{before/before-decorator.js → after-action/after-action-decorator.js} +7 -7
  8. package/dist/esm/decorators/{before/before-decorator.spec.js → after-action/after-action-decorator.spec.js} +19 -19
  9. package/dist/esm/decorators/{after/after-metadata.d.ts → after-action/after-action-metadata.d.ts} +4 -4
  10. package/dist/esm/decorators/after-action/after-action-metadata.js +5 -0
  11. package/dist/esm/decorators/{after/after-reflector.d.ts → after-action/after-action-reflector.d.ts} +5 -5
  12. package/dist/esm/decorators/{after/after-reflector.js → after-action/after-action-reflector.js} +6 -6
  13. package/dist/esm/decorators/{before/before-reflector.spec.js → after-action/after-action-reflector.spec.js} +23 -23
  14. package/dist/esm/decorators/after-action/index.d.ts +3 -0
  15. package/dist/esm/decorators/after-action/index.js +3 -0
  16. package/dist/esm/decorators/before-action/before-action-decorator.d.ts +9 -0
  17. package/dist/esm/decorators/{after/after-decorator.js → before-action/before-action-decorator.js} +7 -7
  18. package/dist/esm/decorators/{after/after-decorator.spec.js → before-action/before-action-decorator.spec.js} +19 -19
  19. package/dist/esm/decorators/{before/before-metadata.d.ts → before-action/before-action-metadata.d.ts} +4 -4
  20. package/dist/esm/decorators/before-action/before-action-metadata.js +5 -0
  21. package/dist/esm/decorators/{before/before-reflector.d.ts → before-action/before-action-reflector.d.ts} +5 -5
  22. package/dist/esm/decorators/{before/before-reflector.js → before-action/before-action-reflector.js} +6 -6
  23. package/dist/esm/decorators/{after/after-reflector.spec.js → before-action/before-action-reflector.spec.js} +23 -23
  24. package/dist/esm/decorators/before-action/index.d.ts +3 -0
  25. package/dist/esm/decorators/before-action/index.js +3 -0
  26. package/dist/esm/decorators/index.d.ts +4 -4
  27. package/dist/esm/decorators/index.js +4 -4
  28. package/dist/esm/decorators/request-context/request-context-decorator.d.ts +4 -4
  29. package/dist/esm/decorators/request-context/request-context-decorator.js +4 -4
  30. package/dist/esm/decorators/request-context/request-context-decorator.spec.js +6 -0
  31. package/dist/esm/decorators/request-data/request-data-decorator.d.ts +10 -10
  32. package/dist/esm/decorators/request-data/request-data-decorator.js +10 -10
  33. package/dist/esm/decorators/request-data/request-data-decorator.spec.js +44 -32
  34. package/dist/esm/decorators/request-data/request-data-metadata.d.ts +1 -1
  35. package/dist/esm/decorators/rest-action/index.d.ts +3 -0
  36. package/dist/esm/decorators/rest-action/index.js +3 -0
  37. package/dist/esm/decorators/rest-action/rest-action-decorator.d.ts +57 -0
  38. package/dist/esm/decorators/rest-action/rest-action-decorator.js +52 -0
  39. package/dist/esm/decorators/rest-action/rest-action-decorator.spec.js +401 -0
  40. package/dist/esm/decorators/{action/action-metadata.d.ts → rest-action/rest-action-metadata.d.ts} +6 -6
  41. package/dist/esm/decorators/rest-action/rest-action-metadata.js +5 -0
  42. package/dist/esm/decorators/rest-action/rest-action-reflector.d.ts +22 -0
  43. package/dist/esm/decorators/{action/action-reflector.js → rest-action/rest-action-reflector.js} +6 -6
  44. package/dist/esm/decorators/{action/action-reflector.spec.js → rest-action/rest-action-reflector.spec.js} +13 -13
  45. package/dist/esm/decorators/rest-controller/index.d.ts +3 -0
  46. package/dist/esm/decorators/rest-controller/index.js +3 -0
  47. package/dist/esm/decorators/rest-controller/rest-controller-decorator.d.ts +14 -0
  48. package/dist/esm/decorators/{controller/controller-decorator.js → rest-controller/rest-controller-decorator.js} +5 -5
  49. package/dist/esm/decorators/{controller/controller-decorator.spec.js → rest-controller/rest-controller-decorator.spec.js} +15 -15
  50. package/dist/esm/decorators/{controller/controller-metadata.d.ts → rest-controller/rest-controller-metadata.d.ts} +5 -5
  51. package/dist/esm/decorators/rest-controller/rest-controller-metadata.js +5 -0
  52. package/dist/esm/decorators/rest-controller/rest-controller-reflector.d.ts +20 -0
  53. package/dist/esm/decorators/rest-controller/rest-controller-reflector.js +24 -0
  54. package/dist/esm/decorators/{controller/controller-reflector.spec.js → rest-controller/rest-controller-reflector.spec.js} +12 -12
  55. package/dist/esm/errors/not-a-controller-error.js +1 -1
  56. package/dist/esm/types.d.ts +0 -10
  57. package/dist/esm/utils/index.d.ts +0 -1
  58. package/dist/esm/utils/index.js +0 -1
  59. package/package.json +2 -2
  60. package/src/controller-registry.spec.ts +122 -122
  61. package/src/controller-registry.ts +33 -35
  62. package/src/debuggable-service.ts +17 -4
  63. package/src/decorators/{before/before-decorator.spec.ts → after-action/after-action-decorator.spec.ts} +19 -19
  64. package/src/decorators/{before/before-decorator.ts → after-action/after-action-decorator.ts} +9 -9
  65. package/src/decorators/{after/after-metadata.ts → after-action/after-action-metadata.ts} +5 -5
  66. package/src/decorators/{before/before-reflector.spec.ts → after-action/after-action-reflector.spec.ts} +33 -23
  67. package/src/decorators/{before/before-reflector.ts → after-action/after-action-reflector.ts} +13 -9
  68. package/src/decorators/after-action/index.ts +3 -0
  69. package/src/decorators/{after/after-decorator.spec.ts → before-action/before-action-decorator.spec.ts} +19 -19
  70. package/src/decorators/{after/after-decorator.ts → before-action/before-action-decorator.ts} +9 -9
  71. package/src/decorators/before-action/before-action-metadata.ts +17 -0
  72. package/src/decorators/{after/after-reflector.spec.ts → before-action/before-action-reflector.spec.ts} +40 -23
  73. package/src/decorators/{after/after-reflector.ts → before-action/before-action-reflector.ts} +18 -9
  74. package/src/decorators/before-action/index.ts +3 -0
  75. package/src/decorators/index.ts +4 -4
  76. package/src/decorators/request-context/request-context-decorator.spec.ts +7 -0
  77. package/src/decorators/request-context/request-context-decorator.ts +4 -4
  78. package/src/decorators/request-data/request-data-decorator.spec.ts +45 -32
  79. package/src/decorators/request-data/request-data-decorator.ts +10 -10
  80. package/src/decorators/request-data/request-data-metadata.ts +1 -1
  81. package/src/decorators/rest-action/index.ts +3 -0
  82. package/src/decorators/rest-action/rest-action-decorator.spec.ts +325 -0
  83. package/src/decorators/rest-action/rest-action-decorator.ts +166 -0
  84. package/src/decorators/{action/action-metadata.ts → rest-action/rest-action-metadata.ts} +7 -7
  85. package/src/decorators/{action/action-reflector.spec.ts → rest-action/rest-action-reflector.spec.ts} +13 -13
  86. package/src/decorators/rest-action/rest-action-reflector.ts +41 -0
  87. package/src/decorators/rest-controller/index.ts +3 -0
  88. package/src/decorators/{controller/controller-decorator.spec.ts → rest-controller/rest-controller-decorator.spec.ts} +16 -16
  89. package/src/decorators/{controller/controller-decorator.ts → rest-controller/rest-controller-decorator.ts} +14 -10
  90. package/src/decorators/{controller/controller-metadata.ts → rest-controller/rest-controller-metadata.ts} +6 -7
  91. package/src/decorators/{controller/controller-reflector.spec.ts → rest-controller/rest-controller-reflector.spec.ts} +21 -12
  92. package/src/decorators/rest-controller/rest-controller-reflector.ts +32 -0
  93. package/src/errors/not-a-controller-error.ts +4 -1
  94. package/src/types.ts +0 -10
  95. package/src/utils/index.ts +0 -1
  96. package/dist/esm/decorators/action/action-decorator.d.ts +0 -52
  97. package/dist/esm/decorators/action/action-decorator.js +0 -62
  98. package/dist/esm/decorators/action/action-decorator.spec.js +0 -59
  99. package/dist/esm/decorators/action/action-metadata.js +0 -5
  100. package/dist/esm/decorators/action/action-reflector.d.ts +0 -22
  101. package/dist/esm/decorators/action/index.d.ts +0 -3
  102. package/dist/esm/decorators/action/index.js +0 -3
  103. package/dist/esm/decorators/after/after-decorator.d.ts +0 -9
  104. package/dist/esm/decorators/after/after-metadata.js +0 -5
  105. package/dist/esm/decorators/after/index.d.ts +0 -3
  106. package/dist/esm/decorators/after/index.js +0 -3
  107. package/dist/esm/decorators/before/before-decorator.d.ts +0 -9
  108. package/dist/esm/decorators/before/before-metadata.js +0 -5
  109. package/dist/esm/decorators/before/index.d.ts +0 -3
  110. package/dist/esm/decorators/before/index.js +0 -3
  111. package/dist/esm/decorators/controller/controller-decorator.d.ts +0 -14
  112. package/dist/esm/decorators/controller/controller-metadata.js +0 -5
  113. package/dist/esm/decorators/controller/controller-reflector.d.ts +0 -20
  114. package/dist/esm/decorators/controller/controller-reflector.js +0 -24
  115. package/dist/esm/decorators/controller/index.d.ts +0 -3
  116. package/dist/esm/decorators/controller/index.js +0 -3
  117. package/dist/esm/utils/create-debugger.d.ts +0 -44
  118. package/dist/esm/utils/create-debugger.js +0 -81
  119. package/dist/esm/utils/create-debugger.spec.d.ts +0 -1
  120. package/dist/esm/utils/create-debugger.spec.js +0 -8
  121. package/src/decorators/action/action-decorator.spec.ts +0 -42
  122. package/src/decorators/action/action-decorator.ts +0 -98
  123. package/src/decorators/action/action-reflector.ts +0 -38
  124. package/src/decorators/action/index.ts +0 -3
  125. package/src/decorators/after/index.ts +0 -3
  126. package/src/decorators/before/before-metadata.ts +0 -17
  127. package/src/decorators/before/index.ts +0 -3
  128. package/src/decorators/controller/controller-reflector.ts +0 -28
  129. package/src/decorators/controller/index.ts +0 -3
  130. package/src/utils/create-debugger.spec.ts +0 -9
  131. package/src/utils/create-debugger.ts +0 -98
  132. /package/dist/esm/decorators/{action/action-decorator.spec.d.ts → after-action/after-action-decorator.spec.d.ts} +0 -0
  133. /package/dist/esm/decorators/{action/action-reflector.spec.d.ts → after-action/after-action-reflector.spec.d.ts} +0 -0
  134. /package/dist/esm/decorators/{after/after-decorator.spec.d.ts → before-action/before-action-decorator.spec.d.ts} +0 -0
  135. /package/dist/esm/decorators/{after/after-reflector.spec.d.ts → before-action/before-action-reflector.spec.d.ts} +0 -0
  136. /package/dist/esm/decorators/{before/before-decorator.spec.d.ts → rest-action/rest-action-decorator.spec.d.ts} +0 -0
  137. /package/dist/esm/decorators/{before/before-reflector.spec.d.ts → rest-action/rest-action-reflector.spec.d.ts} +0 -0
  138. /package/dist/esm/decorators/{controller/controller-decorator.spec.d.ts → rest-controller/rest-controller-decorator.spec.d.ts} +0 -0
  139. /package/dist/esm/decorators/{controller/controller-reflector.spec.d.ts → rest-controller/rest-controller-reflector.spec.d.ts} +0 -0
package/README.md CHANGED
@@ -8,7 +8,7 @@ REST маршрутизатор на основе контроллеров дл
8
8
  - Типизированные параметры запросов (body, query, params).
9
9
  - Поддержка middleware до и после обработки запроса.
10
10
  - Валидация входящих данных.
11
- - Поддержка всех HTTP методов (GET, POST, PUT, DELETE и т.д.).
11
+ - Поддержка всех HTTP методов (GET, POST, PUT, PATCH и DELETE).
12
12
 
13
13
  ## Установка
14
14
 
@@ -30,27 +30,27 @@ npm install @e22m4u/ts-rest-router
30
30
 
31
31
  ## Базовое использование
32
32
 
33
- Создание контроллера и методов
33
+ Создание контроллера и методов.
34
34
 
35
35
  ```ts
36
- import {get} from '@e22m4u/ts-rest-router';
37
- import {post} from '@e22m4u/ts-rest-router';
38
- import {field} from '@e22m4u/ts-rest-router';
39
36
  import {DataType} from '@e22m4u/ts-rest-router';
40
- import {controller} from '@e22m4u/ts-rest-router';
41
-
42
- @controller('/users') // путь контроллера
43
- class UserController { // класс контроллера
44
- @post('/login') // метод POST /users/login
37
+ import {getAction} from '@e22m4u/ts-rest-router';
38
+ import {postAction} from '@e22m4u/ts-rest-router';
39
+ import {requestField} from '@e22m4u/ts-rest-router';
40
+ import {restController} from '@e22m4u/ts-rest-router';
41
+
42
+ @restController('/users') // путь контроллера
43
+ class UserController { // класс контроллера
44
+ @postAction('/login') // метод POST /users/login
45
45
  async login(
46
- @field('username', { // поле "username" в теле запроса
47
- type: DataType.STRING, // тип параметра допускает только строки
48
- required: true, // параметр является обязательным
46
+ @requestField('username', { // поле "username" в теле запроса
47
+ type: DataType.STRING, // тип параметра допускает только строки
48
+ required: true, // параметр является обязательным
49
49
  })
50
50
  username: string,
51
- @field('password', { // поле "password" в теле запроса
52
- type: DataType.STRING, // тип параметра допускает только строки
53
- required: true, // параметр является обязательным
51
+ @requestField('password', { // поле "password" в теле запроса
52
+ type: DataType.STRING, // тип параметра допускает только строки
53
+ required: true, // параметр является обязательным
54
54
  })
55
55
  password: string,
56
56
  ) {
@@ -63,13 +63,13 @@ class UserController { // класс контроллера
63
63
  }
64
64
  ```
65
65
 
66
- Регистрация контроллеров и запуск сервера
66
+ Регистрация контроллеров и запуск сервера.
67
67
 
68
68
  ```ts
69
69
  import http from 'http';
70
70
  import {RestRouter} from '@e22m4u/ts-rest-router';
71
71
 
72
- // создание роутера и регистрация контроллеров
72
+ // создание маршрутизатора и регистрация контроллеров
73
73
  const router = new RestRouter();
74
74
  router.registerController(UserController);
75
75
  router.registerController(ProductController);
@@ -88,40 +88,42 @@ server.listen('8080', '0.0.0.0', () => {
88
88
 
89
89
  Контроллер и методы:
90
90
 
91
- - `@controller` - определяет класс как контроллер
92
- - `@action` - базовый декоратор для методов
93
- - `@get` - GET запросы
94
- - `@post` - POST запросы
95
- - `@put` - PUT запросы
96
- - `@patch` - PATCH запросы
97
- - `@del` - DELETE запросы
91
+ - `@restController` - определяет класс как контроллер;
92
+ - `@restAction` - базовый декоратор для методов;
93
+ - `@getAction` - метод GET;
94
+ - `@postAction` - метод POST;
95
+ - `@putAction` - метод PUT;
96
+ - `@patchAction` - метод PATCH;
97
+ - `@deleteAction` - метод DELETE;
98
98
 
99
99
  Хуки запроса:
100
100
 
101
- - `@before` - middleware перед обработкой запроса
102
- - `@after` - middleware после обработки запроса
101
+ - `@beforeAction` - middleware перед обработкой запроса;
102
+ - `@afterAction` - middleware после обработки запроса;
103
103
 
104
104
  Параметры запроса:
105
105
 
106
- - `@param` - один параметр URL
107
- - `@params` - все параметры URL как объект
108
- - `@query` - один query параметр
109
- - `@queries` - все query параметры как объект
110
- - `@body` - тело запроса
111
- - `@field` - поле в теле запроса
112
- - `@header` - один заголовок
113
- - `@headers` - все заголовки как объект
114
- - `@cookie` - одна cookie
115
- - `@cookies` - все cookies как объект
116
- - `@requestContext` - доступ к контексту запроса
117
- - `@requestData` - универсальный декоратор для доступа к данным запроса
118
-
119
- #### `@controller(options?: ControllerOptions)`
106
+ - `@requestParam` - определенный URL параметр;
107
+ - `@requestParams` - все параметры URL как объект;
108
+ - `@requestQuery` - определенный query параметр;
109
+ - `@requestQueries` - все query параметры как объект;
110
+ - `@requestBody` - тело запроса;
111
+ - `@requestField` - поле в теле запроса;
112
+ - `@requestHeader` - определенный заголовок запроса;
113
+ - `@requestHeaders` - все заголовки запроса как объект;
114
+ - `@requestCookie` - определенный cookie запроса;
115
+ - `@requestCookies` - все cookies запроса как объект;
116
+ - `@requestContext` - доступ к контексту запроса;
117
+ - `@requestData` - доступ к данным запроса;
118
+ - `@httpRequest` - экземпляр `IncomingMessage`;
119
+ - `@httpResponse` - экземпляр `ServerResponse`;
120
+
121
+ #### `@restController(options?: ControllerOptions)`
120
122
 
121
123
  Определение контроллера.
122
124
 
123
125
  ```ts
124
- @controller()
126
+ @restController()
125
127
  class UserController {
126
128
  // методы контроллера
127
129
  }
@@ -130,7 +132,7 @@ class UserController {
130
132
  Определение пути контроллера.
131
133
 
132
134
  ```ts
133
- @controller('/users') // путь контроллера
135
+ @restController('/users') // путь контроллера
134
136
  class UserController {
135
137
  // методы контроллера
136
138
  }
@@ -139,7 +141,7 @@ class UserController {
139
141
  Дополнительные параметры декоратора.
140
142
 
141
143
  ```ts
142
- @controller({
144
+ @restController({
143
145
  path: '/api', // путь контроллера
144
146
  before: [authMiddleware], // middleware до обработки запроса
145
147
  after: [loggerMiddleware], // middleware после обработки запроса
@@ -149,18 +151,18 @@ class UserController {
149
151
  }
150
152
  ```
151
153
 
152
- #### `@get(path: string, options?: ActionOptions)`
154
+ #### `@getAction(path: string, options?: ActionOptions)`
153
155
 
154
156
  Определение метода GET.
155
157
 
156
158
  ```ts
157
- @controller('/users') // путь контроллера
158
- class UserController { // класс контроллера
159
- @get('/whoAmI') // маршрут GET /users/whoAmI
159
+ @restController('/users') // путь контроллера
160
+ class UserController { // класс контроллера
161
+ @getAction('/whoAmI') // маршрут GET /users/whoAmI
160
162
  async whoAmI() {
161
- return { // если метод возвращает объект,
162
- name: 'John', // то результат будет представлен
163
- surname: 'Doe', // как "Content-Type: application/json"
163
+ return { // если метод возвращает объект,
164
+ name: 'John', // то результат будет представлен
165
+ surname: 'Doe', // как "Content-Type: application/json"
164
166
  };
165
167
  }
166
168
  }
@@ -169,9 +171,9 @@ class UserController { // класс контроллера
169
171
  Дополнительные параметры декоратора.
170
172
 
171
173
  ```ts
172
- @controller('/users') // путь контроллера
174
+ @restController('/users') // путь контроллера
173
175
  class UserController { // класс контроллера
174
- @get('/whoAmI', { // маршрут GET /users/whoAmI
176
+ @getAction('/whoAmI', { // маршрут GET /users/whoAmI
175
177
  before: [authMiddleware], // middleware до обработки запроса
176
178
  after: [loggerMiddleware], // middleware после обработки запроса
177
179
  })
@@ -191,9 +193,9 @@ class UserController { // класс контроллера
191
193
  ```ts
192
194
  import {RequestContext} from '@e22m4u/js-trie-router';
193
195
 
194
- @controller('/users') // путь контроллера
196
+ @restController('/users') // путь контроллера
195
197
  class UserController { // класс контроллера
196
- @get('/:id') // маршрут GET /users/:id
198
+ @getAction('/:id') // маршрут GET /users/:id
197
199
  findById(
198
200
  @requestContext() // включениее контекста запроса
199
201
  ctx: RequestContext, // в качестве параметра метода
@@ -218,9 +220,9 @@ class UserController { // класс контроллера
218
220
  import {ServerResponse} from 'http';
219
221
  import {IncomingMessage} from 'http';
220
222
 
221
- @controller('/users') // путь контроллера
223
+ @restController('/users') // путь контроллера
222
224
  class UserController { // класс контроллера
223
- @get('/:id') // маршрут GET /users/:id
225
+ @getAction('/:id') // маршрут GET /users/:id
224
226
  findById(
225
227
  @requestContext('req') // декоратор контекста запроса
226
228
  req: IncomingMessage, // включающий свойство "req"