@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
@@ -5,16 +5,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { expect } from 'chai';
8
- import { controller } from './controller-decorator.js';
9
- import { ControllerReflector } from './controller-reflector.js';
10
- describe('controller', function () {
8
+ import { restController } from './rest-controller-decorator.js';
9
+ import { RestControllerReflector } from './rest-controller-reflector.js';
10
+ describe('restController', function () {
11
11
  it('does not require options', function () {
12
12
  let Target = class Target {
13
13
  };
14
14
  Target = __decorate([
15
- controller()
15
+ restController()
16
16
  ], Target);
17
- const res = ControllerReflector.getMetadata(Target);
17
+ const res = RestControllerReflector.getMetadata(Target);
18
18
  expect(res).to.be.eql({ className: 'Target' });
19
19
  });
20
20
  it('sets given options to the target metadata', function () {
@@ -27,9 +27,9 @@ describe('controller', function () {
27
27
  let Target = class Target {
28
28
  };
29
29
  Target = __decorate([
30
- controller(options)
30
+ restController(options)
31
31
  ], Target);
32
- const res = ControllerReflector.getMetadata(Target);
32
+ const res = RestControllerReflector.getMetadata(Target);
33
33
  expect(res).to.be.eql({
34
34
  ...options,
35
35
  className: 'Target',
@@ -39,18 +39,18 @@ describe('controller', function () {
39
39
  let Target = class Target {
40
40
  };
41
41
  Target = __decorate([
42
- controller({ className: 'myClassName' })
42
+ restController({ className: 'myClassName' })
43
43
  ], Target);
44
- const res = ControllerReflector.getMetadata(Target);
44
+ const res = RestControllerReflector.getMetadata(Target);
45
45
  expect(res).to.be.eql({ className: 'Target' });
46
46
  });
47
47
  it('allows to pass the path option to the first parameter', function () {
48
48
  let Target = class Target {
49
49
  };
50
50
  Target = __decorate([
51
- controller('myPath')
51
+ restController('myPath')
52
52
  ], Target);
53
- const res = ControllerReflector.getMetadata(Target);
53
+ const res = RestControllerReflector.getMetadata(Target);
54
54
  expect(res).to.be.eql({ className: 'Target', path: 'myPath' });
55
55
  });
56
56
  it('merges two given arguments in the target metadata', function () {
@@ -58,18 +58,18 @@ describe('controller', function () {
58
58
  let Target = class Target {
59
59
  };
60
60
  Target = __decorate([
61
- controller('myPath', { before })
61
+ restController('myPath', { before })
62
62
  ], Target);
63
- const res = ControllerReflector.getMetadata(Target);
63
+ const res = RestControllerReflector.getMetadata(Target);
64
64
  expect(res).to.be.eql({ className: 'Target', path: 'myPath', before });
65
65
  });
66
66
  it('overrides the path option by the first argument', function () {
67
67
  let Target = class Target {
68
68
  };
69
69
  Target = __decorate([
70
- controller('myPath1', { path: 'myPath2' })
70
+ restController('myPath1', { path: 'myPath2' })
71
71
  ], Target);
72
- const res = ControllerReflector.getMetadata(Target);
72
+ const res = RestControllerReflector.getMetadata(Target);
73
73
  expect(res).to.be.eql({ className: 'Target', path: 'myPath1' });
74
74
  });
75
75
  });
@@ -1,16 +1,16 @@
1
+ import { MetadataKey } from '@e22m4u/ts-reflector';
1
2
  import { RoutePreHandler } from '@e22m4u/js-trie-router';
2
3
  import { RoutePostHandler } from '@e22m4u/js-trie-router';
3
- import { MetadataKey } from '@e22m4u/ts-reflector';
4
4
  /**
5
- * Controller metadata.
5
+ * Rest controller metadata.
6
6
  */
7
- export type ControllerMetadata = {
7
+ export type RestControllerMetadata = {
8
8
  className: string;
9
9
  path?: string;
10
10
  before?: RoutePreHandler | RoutePreHandler[];
11
11
  after?: RoutePostHandler | RoutePostHandler[];
12
12
  };
13
13
  /**
14
- * Controller metadata key.
14
+ * Rest controller metadata key.
15
15
  */
16
- export declare const CONTROLLER_METADATA_KEY: MetadataKey<ControllerMetadata>;
16
+ export declare const REST_CONTROLLER_METADATA_KEY: MetadataKey<RestControllerMetadata>;
@@ -0,0 +1,5 @@
1
+ import { MetadataKey } from '@e22m4u/ts-reflector';
2
+ /**
3
+ * Rest controller metadata key.
4
+ */
5
+ export const REST_CONTROLLER_METADATA_KEY = new MetadataKey('restControllerMetadataKey');
@@ -0,0 +1,20 @@
1
+ import { Constructor } from '../../types.js';
2
+ import { RestControllerMetadata } from './rest-controller-metadata.js';
3
+ /**
4
+ * Rest controller reflector.
5
+ */
6
+ export declare class RestControllerReflector {
7
+ /**
8
+ * Set metadata.
9
+ *
10
+ * @param metadata
11
+ * @param target
12
+ */
13
+ static setMetadata(metadata: RestControllerMetadata, target: Constructor): void;
14
+ /**
15
+ * Get metadata.
16
+ *
17
+ * @param target
18
+ */
19
+ static getMetadata(target: Constructor): RestControllerMetadata | undefined;
20
+ }
@@ -0,0 +1,24 @@
1
+ import { Reflector } from '@e22m4u/ts-reflector';
2
+ import { REST_CONTROLLER_METADATA_KEY } from './rest-controller-metadata.js';
3
+ /**
4
+ * Rest controller reflector.
5
+ */
6
+ export class RestControllerReflector {
7
+ /**
8
+ * Set metadata.
9
+ *
10
+ * @param metadata
11
+ * @param target
12
+ */
13
+ static setMetadata(metadata, target) {
14
+ return Reflector.defineMetadata(REST_CONTROLLER_METADATA_KEY, metadata, target);
15
+ }
16
+ /**
17
+ * Get metadata.
18
+ *
19
+ * @param target
20
+ */
21
+ static getMetadata(target) {
22
+ return Reflector.getOwnMetadata(REST_CONTROLLER_METADATA_KEY, target);
23
+ }
24
+ }
@@ -1,16 +1,16 @@
1
1
  import { expect } from 'chai';
2
2
  import { describe } from 'mocha';
3
3
  import { Reflector } from '@e22m4u/ts-reflector';
4
- import { ControllerReflector } from './controller-reflector.js';
5
- import { CONTROLLER_METADATA_KEY } from './controller-metadata.js';
6
- describe('ControllerReflector', function () {
4
+ import { RestControllerReflector } from './rest-controller-reflector.js';
5
+ import { REST_CONTROLLER_METADATA_KEY } from './rest-controller-metadata.js';
6
+ describe('RestControllerReflector', function () {
7
7
  describe('setMetadata', function () {
8
8
  it('sets a given value as target metadata', function () {
9
9
  class Target {
10
10
  }
11
11
  const md = { className: 'Target' };
12
- ControllerReflector.setMetadata(md, Target);
13
- const res = Reflector.getOwnMetadata(CONTROLLER_METADATA_KEY, Target);
12
+ RestControllerReflector.setMetadata(md, Target);
13
+ const res = Reflector.getOwnMetadata(REST_CONTROLLER_METADATA_KEY, Target);
14
14
  expect(res).to.be.eq(md);
15
15
  });
16
16
  it('overrides existing metadata', function () {
@@ -18,11 +18,11 @@ describe('ControllerReflector', function () {
18
18
  }
19
19
  const md1 = { className: 'Target', path: 'path1' };
20
20
  const md2 = { className: 'Target', path: 'path2' };
21
- ControllerReflector.setMetadata(md1, Target);
22
- const res1 = Reflector.getOwnMetadata(CONTROLLER_METADATA_KEY, Target);
21
+ RestControllerReflector.setMetadata(md1, Target);
22
+ const res1 = Reflector.getOwnMetadata(REST_CONTROLLER_METADATA_KEY, Target);
23
23
  expect(res1).to.be.eq(md1);
24
- ControllerReflector.setMetadata(md2, Target);
25
- const res2 = Reflector.getOwnMetadata(CONTROLLER_METADATA_KEY, Target);
24
+ RestControllerReflector.setMetadata(md2, Target);
25
+ const res2 = Reflector.getOwnMetadata(REST_CONTROLLER_METADATA_KEY, Target);
26
26
  expect(res2).to.be.eq(md2);
27
27
  });
28
28
  });
@@ -31,14 +31,14 @@ describe('ControllerReflector', function () {
31
31
  class Target {
32
32
  }
33
33
  const md = { className: 'Target' };
34
- Reflector.defineMetadata(CONTROLLER_METADATA_KEY, md, Target);
35
- const res = ControllerReflector.getMetadata(Target);
34
+ Reflector.defineMetadata(REST_CONTROLLER_METADATA_KEY, md, Target);
35
+ const res = RestControllerReflector.getMetadata(Target);
36
36
  expect(res).to.be.eq(md);
37
37
  });
38
38
  it('returns undefined if no metadata', function () {
39
39
  class Target {
40
40
  }
41
- const res = ControllerReflector.getMetadata(Target);
41
+ const res = RestControllerReflector.getMetadata(Target);
42
42
  expect(res).to.be.undefined;
43
43
  });
44
44
  });
@@ -9,6 +9,6 @@ export class NotAControllerError extends Errorf {
9
9
  * @param value
10
10
  */
11
11
  constructor(value) {
12
- super('%v is not a controller, do use @controller decorator on it.', value);
12
+ super('%v is not a controller, do use @restController decorator on it.', value);
13
13
  }
14
14
  }
@@ -35,16 +35,6 @@ export type Identity<T> = T;
35
35
  export type Flatten<T> = Identity<{
36
36
  [k in keyof T]: T[k];
37
37
  }>;
38
- /**
39
- * A promise or value.
40
- */
41
- export type ValueOrPromise<T> = T | PromiseLike<T>;
42
- /**
43
- * Plain object.
44
- */
45
- export type PlainObject = {
46
- [key: string]: unknown;
47
- };
48
38
  /**
49
39
  * Remove null and undefined from T.
50
40
  */
@@ -1,4 +1,3 @@
1
1
  export * from './capitalize.js';
2
2
  export * from './create-error.js';
3
3
  export * from './to-camel-case.js';
4
- export * from './create-debugger.js';
@@ -1,4 +1,3 @@
1
1
  export * from './capitalize.js';
2
2
  export * from './create-error.js';
3
3
  export * from './to-camel-case.js';
4
- export * from './create-debugger.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e22m4u/ts-rest-router",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "REST маршрутизатор на основе контроллеров для TypeScript",
5
5
  "author": "e22m4u <e22m4u@yandex.ru>",
6
6
  "license": "MIT",
@@ -41,12 +41,12 @@
41
41
  "prepare": "husky"
42
42
  },
43
43
  "dependencies": {
44
+ "@e22m4u/js-debug": "~0.0.6",
44
45
  "@e22m4u/js-format": "~0.1.0",
45
46
  "@e22m4u/js-service": "~0.2.0",
46
47
  "@e22m4u/js-trie-router": "~0.0.1",
47
48
  "@e22m4u/ts-data-schema": "~0.0.1",
48
49
  "@e22m4u/ts-reflector": "~0.1.0",
49
- "debug": "~4.4.0",
50
50
  "http-errors": "~2.0.0"
51
51
  },
52
52
  "devDependencies": {