@deepkit/http 1.0.1-alpha.16 → 1.0.1-alpha.160

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 (124) hide show
  1. package/CHANGELOG.md +236 -0
  2. package/dist/cjs/index.d.ts +14 -10
  3. package/dist/cjs/index.js +19 -11
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/src/controllers.d.ts +10 -3
  6. package/dist/cjs/src/controllers.js +7 -3
  7. package/dist/cjs/src/controllers.js.map +1 -1
  8. package/dist/cjs/src/decorator.d.ts +144 -70
  9. package/dist/cjs/src/decorator.js +277 -102
  10. package/dist/cjs/src/decorator.js.map +1 -1
  11. package/dist/cjs/src/filter.d.ts +49 -0
  12. package/dist/cjs/src/filter.js +215 -0
  13. package/dist/cjs/src/filter.js.map +1 -0
  14. package/dist/cjs/src/http-app.d.ts +8 -0
  15. package/dist/cjs/src/http-app.js +16 -0
  16. package/dist/cjs/src/http-app.js.map +1 -0
  17. package/dist/cjs/src/http.d.ts +131 -32
  18. package/dist/cjs/src/http.js +523 -122
  19. package/dist/cjs/src/http.js.map +1 -1
  20. package/dist/cjs/src/kernel.d.ts +50 -9
  21. package/dist/cjs/src/kernel.js +109 -98
  22. package/dist/cjs/src/kernel.js.map +1 -1
  23. package/dist/cjs/src/logger.d.ts +3 -3
  24. package/dist/cjs/src/logger.js +9 -12
  25. package/dist/cjs/src/logger.js.map +1 -1
  26. package/dist/cjs/src/middleware.d.ts +61 -0
  27. package/dist/cjs/src/middleware.js +95 -0
  28. package/dist/cjs/src/middleware.js.map +1 -0
  29. package/dist/cjs/src/model.d.ts +270 -4
  30. package/dist/cjs/src/model.js +401 -3
  31. package/dist/cjs/src/model.js.map +1 -1
  32. package/dist/cjs/src/module.config.d.ts +149 -4
  33. package/dist/cjs/src/module.config.js +11 -6
  34. package/dist/cjs/src/module.config.js.map +1 -1
  35. package/dist/cjs/src/module.d.ts +14 -32
  36. package/dist/cjs/src/module.js +122 -7
  37. package/dist/cjs/src/module.js.map +1 -1
  38. package/dist/cjs/src/request-parser.d.ts +37 -0
  39. package/dist/cjs/src/request-parser.js +382 -0
  40. package/dist/cjs/src/request-parser.js.map +1 -0
  41. package/dist/cjs/src/router.d.ts +174 -75
  42. package/dist/cjs/src/router.js +469 -288
  43. package/dist/cjs/src/router.js.map +1 -1
  44. package/dist/cjs/src/static-serving.d.ts +32 -4
  45. package/dist/cjs/src/static-serving.js +115 -71
  46. package/dist/cjs/src/static-serving.js.map +1 -1
  47. package/dist/cjs/src/utils.js +2 -2
  48. package/dist/cjs/src/utils.js.map +1 -1
  49. package/dist/cjs/tsconfig.tsbuildinfo +1 -2916
  50. package/dist/esm/index.d.ts +14 -10
  51. package/dist/esm/index.js +14 -10
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/src/controllers.d.ts +10 -3
  54. package/dist/esm/src/controllers.js +7 -3
  55. package/dist/esm/src/controllers.js.map +1 -1
  56. package/dist/esm/src/decorator.d.ts +144 -70
  57. package/dist/esm/src/decorator.js +272 -99
  58. package/dist/esm/src/decorator.js.map +1 -1
  59. package/dist/esm/src/filter.d.ts +49 -0
  60. package/dist/esm/src/filter.js +209 -0
  61. package/dist/esm/src/filter.js.map +1 -0
  62. package/dist/esm/src/http-app.d.ts +8 -0
  63. package/dist/esm/src/http-app.js +12 -0
  64. package/dist/esm/src/http-app.js.map +1 -0
  65. package/dist/esm/src/http.d.ts +131 -32
  66. package/dist/esm/src/http.js +504 -121
  67. package/dist/esm/src/http.js.map +1 -1
  68. package/dist/esm/src/kernel.d.ts +50 -9
  69. package/dist/esm/src/kernel.js +110 -100
  70. package/dist/esm/src/kernel.js.map +1 -1
  71. package/dist/esm/src/logger.d.ts +3 -3
  72. package/dist/esm/src/logger.js +7 -11
  73. package/dist/esm/src/logger.js.map +1 -1
  74. package/dist/esm/src/middleware.d.ts +61 -0
  75. package/dist/esm/src/middleware.js +90 -0
  76. package/dist/esm/src/middleware.js.map +1 -0
  77. package/dist/esm/src/model.d.ts +270 -4
  78. package/dist/esm/src/model.js +357 -1
  79. package/dist/esm/src/model.js.map +1 -1
  80. package/dist/esm/src/module.config.d.ts +149 -4
  81. package/dist/esm/src/module.config.js +9 -5
  82. package/dist/esm/src/module.config.js.map +1 -1
  83. package/dist/esm/src/module.d.ts +14 -32
  84. package/dist/esm/src/module.js +121 -7
  85. package/dist/esm/src/module.js.map +1 -1
  86. package/dist/esm/src/request-parser.d.ts +37 -0
  87. package/dist/esm/src/request-parser.js +372 -0
  88. package/dist/esm/src/request-parser.js.map +1 -0
  89. package/dist/esm/src/router.d.ts +174 -75
  90. package/dist/esm/src/router.js +463 -285
  91. package/dist/esm/src/router.js.map +1 -1
  92. package/dist/esm/src/static-serving.d.ts +32 -4
  93. package/dist/esm/src/static-serving.js +107 -65
  94. package/dist/esm/src/static-serving.js.map +1 -1
  95. package/dist/esm/src/utils.js +1 -0
  96. package/dist/esm/src/utils.js.map +1 -1
  97. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -2916
  98. package/index.ts +14 -10
  99. package/package.json +30 -19
  100. package/src/controllers.ts +4 -3
  101. package/src/decorator.ts +242 -104
  102. package/src/filter.ts +224 -0
  103. package/src/http-app.ts +11 -0
  104. package/src/http.ts +501 -100
  105. package/src/kernel.ts +128 -80
  106. package/src/logger.ts +4 -6
  107. package/src/middleware.ts +116 -0
  108. package/src/model.ts +516 -5
  109. package/src/module.config.ts +168 -5
  110. package/src/module.ts +120 -7
  111. package/src/request-parser.ts +430 -0
  112. package/src/router.ts +546 -317
  113. package/src/static-serving.ts +120 -50
  114. package/src/utils.ts +0 -2
  115. package/tsconfig.esm.json +7 -7
  116. package/tsconfig.json +18 -11
  117. package/tsconfig.spec.json +8 -0
  118. package/dist/cjs/tests/router.spec.d.ts +0 -1
  119. package/dist/cjs/tests/router.spec.js +0 -481
  120. package/dist/cjs/tests/router.spec.js.map +0 -1
  121. package/dist/esm/tests/router.spec.d.ts +0 -1
  122. package/dist/esm/tests/router.spec.js +0 -479
  123. package/dist/esm/tests/router.spec.js.map +0 -1
  124. package/tests/router.spec.ts +0 -347
@@ -1,479 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- import { expect, test } from '@jest/globals';
14
- import 'reflect-metadata';
15
- import { dotToUrlPath, RouteParameterResolverTag, Router } from '../src/router';
16
- import { http, httpClass } from '../src/decorator';
17
- import { t } from '@deepkit/type';
18
- import { HttpListener, JSONResponse } from '../src/http';
19
- import { HttpKernel } from '../src/kernel';
20
- import { EventDispatcher } from '@deepkit/event';
21
- import { InjectorContext, Tag } from '@deepkit/injector';
22
- import { Logger } from '@deepkit/logger';
23
- import { HttpRequest } from '../src/model';
24
- import { TagProviders } from '@deepkit/app';
25
- function createHttpKernel(controllers, providers = []) {
26
- const tagProviders = new TagProviders();
27
- for (const provider of providers)
28
- if (provider instanceof Tag)
29
- tagProviders.tags.push(provider);
30
- const router = Router.forControllers(controllers, tagProviders);
31
- const injector = InjectorContext.forProviders([{ provide: Router, useValue: router }, ...controllers, HttpListener, Logger, ...providers]);
32
- const eventDispatcher = new EventDispatcher(injector);
33
- eventDispatcher.registerListener(HttpListener);
34
- return new HttpKernel(router, eventDispatcher, injector, new Logger(), false);
35
- }
36
- test('router', async () => {
37
- var _a, _b, _c;
38
- class Controller {
39
- helloWorld() {
40
- }
41
- hello(name) {
42
- }
43
- userStatic(id) {
44
- }
45
- userStatic2(id, id2) {
46
- }
47
- static() {
48
- }
49
- }
50
- __decorate([
51
- http.GET(),
52
- __metadata("design:type", Function),
53
- __metadata("design:paramtypes", []),
54
- __metadata("design:returntype", void 0)
55
- ], Controller.prototype, "helloWorld", null);
56
- __decorate([
57
- http.GET(':name'),
58
- __metadata("design:type", Function),
59
- __metadata("design:paramtypes", [String]),
60
- __metadata("design:returntype", void 0)
61
- ], Controller.prototype, "hello", null);
62
- __decorate([
63
- http.GET('/user/:id/static'),
64
- __metadata("design:type", Function),
65
- __metadata("design:paramtypes", [String]),
66
- __metadata("design:returntype", void 0)
67
- ], Controller.prototype, "userStatic", null);
68
- __decorate([
69
- http.GET('/user2/:id/static/:id2'),
70
- __metadata("design:type", Function),
71
- __metadata("design:paramtypes", [String, String]),
72
- __metadata("design:returntype", void 0)
73
- ], Controller.prototype, "userStatic2", null);
74
- __decorate([
75
- http.GET('/static'),
76
- __metadata("design:type", Function),
77
- __metadata("design:paramtypes", []),
78
- __metadata("design:returntype", void 0)
79
- ], Controller.prototype, "static", null);
80
- const router = Router.forControllers([Controller]);
81
- expect((_a = (await router.resolve('GET', '/'))) === null || _a === void 0 ? void 0 : _a.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'helloWorld' });
82
- expect((_b = (await router.resolve('GET', '/peter'))) === null || _b === void 0 ? void 0 : _b.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'hello' });
83
- expect((_c = (await router.resolve('GET', '/peter'))) === null || _c === void 0 ? void 0 : _c.parameters(undefined)).toEqual(['peter']);
84
- const userStatic = await router.resolve('GET', '/user/1233/static');
85
- expect(userStatic === null || userStatic === void 0 ? void 0 : userStatic.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'userStatic' });
86
- expect(userStatic === null || userStatic === void 0 ? void 0 : userStatic.parameters(undefined)).toEqual(['1233']);
87
- const userStatic2 = await router.resolve('GET', '/user2/1233/static/123');
88
- expect(userStatic2 === null || userStatic2 === void 0 ? void 0 : userStatic2.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'userStatic2' });
89
- expect(userStatic2 === null || userStatic2 === void 0 ? void 0 : userStatic2.parameters(undefined)).toEqual(['1233', '123']);
90
- });
91
- test('router parameters', async () => {
92
- var _a;
93
- class Controller {
94
- string(name) {
95
- return new JSONResponse(name);
96
- }
97
- number(id) {
98
- return new JSONResponse(id);
99
- }
100
- boolean(yes) {
101
- return new JSONResponse(yes);
102
- }
103
- any(path) {
104
- return new JSONResponse(path);
105
- }
106
- }
107
- __decorate([
108
- http.GET('/user/:name'),
109
- __metadata("design:type", Function),
110
- __metadata("design:paramtypes", [String]),
111
- __metadata("design:returntype", void 0)
112
- ], Controller.prototype, "string", null);
113
- __decorate([
114
- http.GET('/user-id/:id'),
115
- __metadata("design:type", Function),
116
- __metadata("design:paramtypes", [Number]),
117
- __metadata("design:returntype", void 0)
118
- ], Controller.prototype, "number", null);
119
- __decorate([
120
- http.GET('/boolean/:yes'),
121
- __metadata("design:type", Function),
122
- __metadata("design:paramtypes", [Boolean]),
123
- __metadata("design:returntype", void 0)
124
- ], Controller.prototype, "boolean", null);
125
- __decorate([
126
- http.GET(':path').regexp('path', '.*'),
127
- __metadata("design:type", Function),
128
- __metadata("design:paramtypes", [String]),
129
- __metadata("design:returntype", void 0)
130
- ], Controller.prototype, "any", null);
131
- const router = Router.forControllers([Controller]);
132
- expect((_a = (await router.resolve('GET', '/user/peter'))) === null || _a === void 0 ? void 0 : _a.routeConfig.action).toMatchObject({ controller: Controller, methodName: 'string' });
133
- const httpKernel = createHttpKernel([Controller]);
134
- expect(await httpKernel.handleRequestFor('GET', '/user/peter')).toBe('peter');
135
- expect(await httpKernel.handleRequestFor('GET', '/user-id/123')).toBe(123);
136
- expect(await httpKernel.handleRequestFor('GET', '/user-id/asd')).toMatchObject({ message: 'Validation failed: id(No number given): invalid_number' });
137
- expect(await httpKernel.handleRequestFor('GET', '/boolean/1')).toBe(true);
138
- expect(await httpKernel.handleRequestFor('GET', '/boolean/false')).toBe(false);
139
- expect(await httpKernel.handleRequestFor('GET', '/any')).toBe('any');
140
- expect(await httpKernel.handleRequestFor('GET', '/any/path')).toBe('any/path');
141
- });
142
- test('router HttpRequest', async () => {
143
- class Controller {
144
- anyReq(req, path) {
145
- return [req.url, path];
146
- }
147
- }
148
- __decorate([
149
- http.GET(':path').regexp('path', '.*'),
150
- __metadata("design:type", Function),
151
- __metadata("design:paramtypes", [HttpRequest, String]),
152
- __metadata("design:returntype", void 0)
153
- ], Controller.prototype, "anyReq", null);
154
- const httpKernel = createHttpKernel([Controller]);
155
- expect(await httpKernel.handleRequestFor('GET', '/req/any/path')).toEqual(['/req/any/path', 'req/any/path']);
156
- });
157
- test('router parameterResolver', async () => {
158
- class User {
159
- constructor(username) {
160
- this.username = username;
161
- }
162
- }
163
- class Controller {
164
- route1(user) {
165
- return [user.username];
166
- }
167
- route2(user) {
168
- return [user.username];
169
- }
170
- }
171
- __decorate([
172
- http.GET('user/:username'),
173
- __metadata("design:type", Function),
174
- __metadata("design:paramtypes", [User]),
175
- __metadata("design:returntype", void 0)
176
- ], Controller.prototype, "route1", null);
177
- __decorate([
178
- http.GET('group'),
179
- __metadata("design:type", Function),
180
- __metadata("design:paramtypes", [User]),
181
- __metadata("design:returntype", void 0)
182
- ], Controller.prototype, "route2", null);
183
- class MyRouteParameterResolver {
184
- resolve(context) {
185
- if (!context.parameters.username)
186
- throw new Error('No :username specified');
187
- return new User(context.parameters.username);
188
- }
189
- }
190
- const httpKernel = createHttpKernel([Controller], [RouteParameterResolverTag.provide(MyRouteParameterResolver).forClassType(User)]);
191
- expect(await httpKernel.handleRequestFor('GET', '/user/peter')).toEqual(['peter']);
192
- expect(await httpKernel.handleRequestFor('GET', '/group')).toEqual('Internal error');
193
- });
194
- test('router body', async () => {
195
- class Body {
196
- }
197
- __decorate([
198
- t,
199
- __metadata("design:type", String)
200
- ], Body.prototype, "username", void 0);
201
- class Controller {
202
- anyReq(body, req) {
203
- return [body.username, body instanceof Body, req.url];
204
- }
205
- }
206
- __decorate([
207
- http.POST(),
208
- __param(0, http.body()),
209
- __metadata("design:type", Function),
210
- __metadata("design:paramtypes", [Body, HttpRequest]),
211
- __metadata("design:returntype", void 0)
212
- ], Controller.prototype, "anyReq", null);
213
- const httpKernel = createHttpKernel([Controller]);
214
- expect(await httpKernel.handleRequestFor('POST', '/', { username: 'Peter' })).toEqual(['Peter', true, '/']);
215
- });
216
- test('router body double', async () => {
217
- class Body {
218
- }
219
- __decorate([
220
- t,
221
- __metadata("design:type", String)
222
- ], Body.prototype, "username", void 0);
223
- class Controller {
224
- anyReq(body, body2, req) {
225
- return [body2.username, body2 instanceof Body && body instanceof Body, req.url];
226
- }
227
- }
228
- __decorate([
229
- http.POST(),
230
- __param(0, http.body()), __param(1, http.body()),
231
- __metadata("design:type", Function),
232
- __metadata("design:paramtypes", [Body, Body, HttpRequest]),
233
- __metadata("design:returntype", void 0)
234
- ], Controller.prototype, "anyReq", null);
235
- const httpData = httpClass._fetch(Controller);
236
- if (!httpData)
237
- throw new Error('httpClass undefined');
238
- const action = [...httpData.getActions()][0];
239
- expect(action.methodName).toBe('anyReq');
240
- expect(action.httpMethod).toBe('POST');
241
- expect(action.parameters['body']).not.toBeUndefined();
242
- expect(action.parameters['body'].name).toBe('body');
243
- expect(action.parameters['body2']).not.toBeUndefined();
244
- expect(action.parameters['body2'].name).toBe('body2');
245
- const httpKernel = createHttpKernel([Controller]);
246
- expect(await httpKernel.handleRequestFor('POST', '/', { username: 'Peter' })).toEqual(['Peter', true, '/']);
247
- });
248
- test('router groups', async () => {
249
- {
250
- class Controller {
251
- a() {
252
- }
253
- b() {
254
- }
255
- c() {
256
- }
257
- }
258
- __decorate([
259
- http.GET('a').group('a'),
260
- __metadata("design:type", Function),
261
- __metadata("design:paramtypes", []),
262
- __metadata("design:returntype", void 0)
263
- ], Controller.prototype, "a", null);
264
- __decorate([
265
- http.GET('b'),
266
- __metadata("design:type", Function),
267
- __metadata("design:paramtypes", []),
268
- __metadata("design:returntype", void 0)
269
- ], Controller.prototype, "b", null);
270
- __decorate([
271
- http.GET('c').group('c'),
272
- __metadata("design:type", Function),
273
- __metadata("design:paramtypes", []),
274
- __metadata("design:returntype", void 0)
275
- ], Controller.prototype, "c", null);
276
- const httpData = httpClass._fetch(Controller);
277
- if (!httpData)
278
- throw new Error('httpClass undefined');
279
- expect(httpData.getAction('a').groups).toEqual(['a']);
280
- expect(httpData.getAction('b').groups).toEqual([]);
281
- expect(httpData.getAction('c').groups).toEqual(['c']);
282
- }
283
- {
284
- let Controller = class Controller {
285
- a() {
286
- }
287
- b() {
288
- }
289
- c() {
290
- }
291
- };
292
- __decorate([
293
- http.GET('a').group('a'),
294
- __metadata("design:type", Function),
295
- __metadata("design:paramtypes", []),
296
- __metadata("design:returntype", void 0)
297
- ], Controller.prototype, "a", null);
298
- __decorate([
299
- http.GET('b'),
300
- __metadata("design:type", Function),
301
- __metadata("design:paramtypes", []),
302
- __metadata("design:returntype", void 0)
303
- ], Controller.prototype, "b", null);
304
- __decorate([
305
- http.GET('c').group('c'),
306
- __metadata("design:type", Function),
307
- __metadata("design:paramtypes", []),
308
- __metadata("design:returntype", void 0)
309
- ], Controller.prototype, "c", null);
310
- Controller = __decorate([
311
- http.groupAll('all')
312
- ], Controller);
313
- const httpData = httpClass._fetch(Controller);
314
- if (!httpData)
315
- throw new Error('httpClass undefined');
316
- expect(httpData.getAction('a').groups).toEqual(['a', 'all']);
317
- expect(httpData.getAction('b').groups).toEqual(['all']);
318
- expect(httpData.getAction('c').groups).toEqual(['c', 'all']);
319
- }
320
- expect(() => {
321
- let ControllerC = class ControllerC {
322
- };
323
- ControllerC = __decorate([
324
- http.group('all')
325
- ], ControllerC);
326
- }).toThrow('Property decorators can only be used on class properties');
327
- });
328
- test('router query', async () => {
329
- class Controller {
330
- anyReq(test) {
331
- return test;
332
- }
333
- }
334
- __decorate([
335
- http.GET('my-action'),
336
- __param(0, http.query().optional),
337
- __metadata("design:type", Function),
338
- __metadata("design:paramtypes", [Number]),
339
- __metadata("design:returntype", void 0)
340
- ], Controller.prototype, "anyReq", null);
341
- const httpData = httpClass._fetch(Controller);
342
- if (!httpData)
343
- throw new Error('httpClass undefined');
344
- const action = [...httpData.getActions()][0];
345
- expect(action.methodName).toBe('anyReq');
346
- expect(action.httpMethod).toBe('GET');
347
- expect(action.parameters['test']).not.toBeUndefined();
348
- expect(action.parameters['test'].name).toBe('test');
349
- expect(action.parameters['test'].type).toBe('query');
350
- const httpKernel = createHttpKernel([Controller]);
351
- expect(await httpKernel.handleRequestFor('GET', '/my-action?test=123')).toEqual(123);
352
- expect(await httpKernel.handleRequestFor('GET', '/my-action')).toEqual(undefined);
353
- });
354
- test('router query all', async () => {
355
- class AnyReqQuery {
356
- }
357
- __decorate([
358
- t.optional,
359
- __metadata("design:type", String)
360
- ], AnyReqQuery.prototype, "test", void 0);
361
- __decorate([
362
- t.optional,
363
- __metadata("design:type", String)
364
- ], AnyReqQuery.prototype, "filter", void 0);
365
- __decorate([
366
- t.optional,
367
- __metadata("design:type", Number)
368
- ], AnyReqQuery.prototype, "page", void 0);
369
- class Controller {
370
- anyReq(anyReqQuery) {
371
- return anyReqQuery;
372
- }
373
- }
374
- __decorate([
375
- http.GET('my-action'),
376
- __param(0, http.queries()),
377
- __metadata("design:type", Function),
378
- __metadata("design:paramtypes", [AnyReqQuery]),
379
- __metadata("design:returntype", void 0)
380
- ], Controller.prototype, "anyReq", null);
381
- const httpKernel = createHttpKernel([Controller]);
382
- expect(await httpKernel.handleRequestFor('GET', '/my-action?test=123')).toEqual({ test: '123' });
383
- expect(await httpKernel.handleRequestFor('GET', '/my-action')).toEqual({});
384
- expect(await httpKernel.handleRequestFor('GET', '/my-action?filter=page&page=5')).toEqual({ filter: 'page', page: 5 });
385
- });
386
- test('router dotToUrlPath', () => {
387
- expect(dotToUrlPath('peter')).toBe('peter');
388
- expect(dotToUrlPath('foo.bar')).toBe('foo[bar]');
389
- expect(dotToUrlPath('foo.bar.deep')).toBe('foo[bar][deep]');
390
- expect(dotToUrlPath('foo.bar.deep.very')).toBe('foo[bar][deep][very]');
391
- });
392
- test('router url resolve', async () => {
393
- class AnyReqQuery {
394
- }
395
- __decorate([
396
- t.optional,
397
- __metadata("design:type", String)
398
- ], AnyReqQuery.prototype, "test", void 0);
399
- __decorate([
400
- t.optional,
401
- __metadata("design:type", String)
402
- ], AnyReqQuery.prototype, "filter", void 0);
403
- __decorate([
404
- t.optional,
405
- __metadata("design:type", Number)
406
- ], AnyReqQuery.prototype, "page", void 0);
407
- class Controller {
408
- first() {
409
- return '';
410
- }
411
- second(peter) {
412
- return '';
413
- }
414
- secondQuery(peter) {
415
- return '';
416
- }
417
- secondQuery2(peter) {
418
- return '';
419
- }
420
- third(params) {
421
- return params;
422
- }
423
- third2(params) {
424
- return params;
425
- }
426
- }
427
- __decorate([
428
- http.GET('').name('first'),
429
- __metadata("design:type", Function),
430
- __metadata("design:paramtypes", []),
431
- __metadata("design:returntype", void 0)
432
- ], Controller.prototype, "first", null);
433
- __decorate([
434
- http.GET(':peter').name('second'),
435
- __metadata("design:type", Function),
436
- __metadata("design:paramtypes", [String]),
437
- __metadata("design:returntype", void 0)
438
- ], Controller.prototype, "second", null);
439
- __decorate([
440
- http.GET('').name('secondQuery'),
441
- __param(0, http.query()),
442
- __metadata("design:type", Function),
443
- __metadata("design:paramtypes", [String]),
444
- __metadata("design:returntype", void 0)
445
- ], Controller.prototype, "secondQuery", null);
446
- __decorate([
447
- http.GET('').name('secondQuery2'),
448
- __param(0, http.query('changed')),
449
- __metadata("design:type", Function),
450
- __metadata("design:paramtypes", [String]),
451
- __metadata("design:returntype", void 0)
452
- ], Controller.prototype, "secondQuery2", null);
453
- __decorate([
454
- http.GET('third').name('third'),
455
- __param(0, http.queries()),
456
- __metadata("design:type", Function),
457
- __metadata("design:paramtypes", [AnyReqQuery]),
458
- __metadata("design:returntype", void 0)
459
- ], Controller.prototype, "third", null);
460
- __decorate([
461
- http.GET('third2').name('third2'),
462
- __param(0, http.queries('deep')),
463
- __metadata("design:type", Function),
464
- __metadata("design:paramtypes", [AnyReqQuery]),
465
- __metadata("design:returntype", void 0)
466
- ], Controller.prototype, "third2", null);
467
- const router = Router.forControllers([Controller]);
468
- expect(router.resolveUrl('first')).toBe('/');
469
- expect(router.resolveUrl('second', { peter: 'foo' })).toBe('/foo');
470
- expect(router.resolveUrl('secondQuery', { peter: 'foo' })).toBe('/?peter=foo');
471
- expect(router.resolveUrl('secondQuery2', { peter: 'foo' })).toBe('/?changed=foo');
472
- expect(router.resolveUrl('third', {})).toBe('/third');
473
- expect(router.resolveUrl('third', { params: { test: 123 } })).toBe('/third?test=123');
474
- expect(router.resolveUrl('third', { params: { test: 123, filter: 'peter' } })).toBe('/third?test=123&filter=peter');
475
- expect(router.resolveUrl('third2', {})).toBe('/third2');
476
- expect(router.resolveUrl('third2', { params: { test: 123 } })).toBe('/third2?deep[test]=123');
477
- expect(router.resolveUrl('third2', { params: { test: 123, filter: 'peter' } })).toBe('/third2?deep[test]=123&deep[filter]=peter');
478
- });
479
- //# sourceMappingURL=router.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.spec.js","sourceRoot":"","sources":["../../../tests/router.spec.ts"],"names":[],"mappings":"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"}