@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
@@ -1,44 +0,0 @@
1
- /**
2
- * Debugger.
3
- */
4
- export type Debugger = (messageOrData: string | unknown, ...args: any[]) => void;
5
- /**
6
- * Create debugger.
7
- *
8
- * Base usage:
9
- * ```ts
10
- * const debug = createDebugger('myService');
11
- * debug('Service created.');
12
- * // ujut:myService Service created.
13
- * ```
14
- *
15
- * Nested namespaces:
16
- * ```ts
17
- * const debug1 = debug.bind('namespace1');
18
- * const debug2 = debug.bind('namespace2');
19
- * debug1('Application started'); // ujut:myService [namespace1] Application started
20
- * debug2('Connection established'); // ujut:myService [namespace2] Connection established
21
- * ```
22
- *
23
- * Value inspection:
24
- * ```ts
25
- * debug({foo: 'lorem', bar: 'ipsum'})
26
- * // ujut:myService {
27
- * // ujut:myService "foo": "lorem",
28
- * // ujut:myService "bar": "ipsum"
29
- * // ujut:myService }
30
- * ```
31
- *
32
- * Titled inspection output:
33
- * ```ts
34
- * debug({foo: 'lorem', bar: 'ipsum'}, 'My awesome output:')
35
- * // ujut:myService My awesome output:
36
- * // ujut:myService {
37
- * // ujut:myService "foo": "lorem",
38
- * // ujut:myService "bar": "ipsum"
39
- * // ujut:myService }
40
- * ```
41
- *
42
- * @param name
43
- */
44
- export declare function createDebugger(name: string): Debugger;
@@ -1,81 +0,0 @@
1
- import { inspect } from 'util';
2
- import DebugModule from 'debug';
3
- import { format } from '@e22m4u/js-format';
4
- /**
5
- * Colorize string.
6
- *
7
- * @param input
8
- */
9
- function colorizeString(input) {
10
- const c = Number(DebugModule['selectColor'](input));
11
- const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c);
12
- return `${colorCode};1m${input}\u001B[0m`;
13
- }
14
- /**
15
- * Create debugger.
16
- *
17
- * Base usage:
18
- * ```ts
19
- * const debug = createDebugger('myService');
20
- * debug('Service created.');
21
- * // ujut:myService Service created.
22
- * ```
23
- *
24
- * Nested namespaces:
25
- * ```ts
26
- * const debug1 = debug.bind('namespace1');
27
- * const debug2 = debug.bind('namespace2');
28
- * debug1('Application started'); // ujut:myService [namespace1] Application started
29
- * debug2('Connection established'); // ujut:myService [namespace2] Connection established
30
- * ```
31
- *
32
- * Value inspection:
33
- * ```ts
34
- * debug({foo: 'lorem', bar: 'ipsum'})
35
- * // ujut:myService {
36
- * // ujut:myService "foo": "lorem",
37
- * // ujut:myService "bar": "ipsum"
38
- * // ujut:myService }
39
- * ```
40
- *
41
- * Titled inspection output:
42
- * ```ts
43
- * debug({foo: 'lorem', bar: 'ipsum'}, 'My awesome output:')
44
- * // ujut:myService My awesome output:
45
- * // ujut:myService {
46
- * // ujut:myService "foo": "lorem",
47
- * // ujut:myService "bar": "ipsum"
48
- * // ujut:myService }
49
- * ```
50
- *
51
- * @param name
52
- */
53
- export function createDebugger(name) {
54
- const debuggerName = `tsRestRouter:${name}`;
55
- // включить вывод логов можно принудительно
56
- // if (!process.env.DEBUG) DebugModule.enable('ujut*');
57
- const debug = DebugModule(debuggerName);
58
- return function (messageOrData,
59
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
- ...args) {
61
- let prefix = '';
62
- if (typeof this === 'string') {
63
- const isDebugUsesColors = debug.useColors;
64
- prefix = isDebugUsesColors ? colorizeString(`[${this}] `) : `[${this}] `;
65
- }
66
- if (typeof messageOrData === 'string') {
67
- const interpolatedMessage = format(messageOrData, ...args);
68
- return debug(prefix + interpolatedMessage);
69
- }
70
- const inspectOptions = {
71
- showHidden: false,
72
- depth: null,
73
- colors: true,
74
- compact: false,
75
- };
76
- const multiString = inspect(messageOrData, inspectOptions);
77
- const rows = multiString.split('\n');
78
- const colorizedDebuggerName = colorizeString(debuggerName);
79
- [...args, ...rows].forEach(v => console.log(` ${colorizedDebuggerName} ${prefix}${v}`));
80
- };
81
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,8 +0,0 @@
1
- import { expect } from 'chai';
2
- import { createDebugger } from './create-debugger.js';
3
- describe('createDebugger', function () {
4
- it('returns a function', function () {
5
- const res = createDebugger('name');
6
- expect(typeof res).to.be.eq('function');
7
- });
8
- });
@@ -1,42 +0,0 @@
1
- import {expect} from 'chai';
2
- import {action} from './action-decorator.js';
3
- import {HttpMethod} from '@e22m4u/js-trie-router';
4
- import {ActionReflector} from './action-reflector.js';
5
-
6
- describe('action', function () {
7
- it('sets given options to the target metadata', function () {
8
- const options = {
9
- method: HttpMethod.GET,
10
- path: 'myPath',
11
- before: () => undefined,
12
- after: () => undefined,
13
- customOption: 'customOption',
14
- };
15
- class Target {
16
- @action(options)
17
- method() {}
18
- }
19
- const res = ActionReflector.getMetadata(Target);
20
- expect(res.get('method')).to.be.eql({
21
- ...options,
22
- propertyKey: 'method',
23
- });
24
- });
25
-
26
- it('overrides a given "propertyKey" option by the target method name', function () {
27
- const options = {
28
- propertyKey: 'myMethod',
29
- method: HttpMethod.GET,
30
- path: 'myPath',
31
- };
32
- class Target {
33
- @action(options)
34
- method() {}
35
- }
36
- const res = ActionReflector.getMetadata(Target);
37
- expect(res.get('method')).to.be.eql({
38
- ...options,
39
- propertyKey: 'method',
40
- });
41
- });
42
- });
@@ -1,98 +0,0 @@
1
- import {Flatten} from '../../types.js';
2
- import {Prototype} from '../../types.js';
3
- import {Constructor} from '../../types.js';
4
- import {HttpMethod} from '@e22m4u/js-trie-router';
5
- import {ActionMetadata} from './action-metadata.js';
6
- import {ActionReflector} from './action-reflector.js';
7
- import {DecoratorTargetType} from '@e22m4u/ts-reflector';
8
- import {getDecoratorTargetType} from '@e22m4u/ts-reflector';
9
-
10
- /**
11
- * Action options.
12
- */
13
- export type ActionOptions = Flatten<Omit<ActionMetadata, 'propertyKey'>>;
14
-
15
- /**
16
- * Action decorator.
17
- *
18
- * @param options
19
- */
20
- export function action<T extends object>(options: ActionOptions) {
21
- return function (
22
- target: Prototype<T>,
23
- propertyKey: string,
24
- descriptor: PropertyDescriptor,
25
- ) {
26
- const decoratorType = getDecoratorTargetType(
27
- target,
28
- propertyKey,
29
- descriptor,
30
- );
31
- if (decoratorType !== DecoratorTargetType.INSTANCE_METHOD)
32
- throw new Error(
33
- '@action decorator is only supported on an instance method.',
34
- );
35
- ActionReflector.setMetadata(
36
- {...options, propertyKey},
37
- target.constructor as Constructor<T>,
38
- propertyKey,
39
- );
40
- };
41
- }
42
-
43
- /**
44
- * Action method options.
45
- */
46
- export type ActionMethodOptions = Flatten<
47
- Omit<ActionOptions, 'method' | 'path'>
48
- >;
49
-
50
- /**
51
- * Get decorator.
52
- *
53
- * @param path
54
- * @param options
55
- */
56
- export const get = (path: string, options?: ActionMethodOptions) => {
57
- return action({...options, path, method: HttpMethod.GET});
58
- };
59
-
60
- /**
61
- * Post decorator.
62
- *
63
- * @param path
64
- * @param options
65
- */
66
- export const post = (path: string, options?: ActionMethodOptions) => {
67
- return action({...options, path, method: HttpMethod.POST});
68
- };
69
-
70
- /**
71
- * Put decorator.
72
- *
73
- * @param path
74
- * @param options
75
- */
76
- export const put = (path: string, options?: ActionMethodOptions) => {
77
- return action({...options, path, method: HttpMethod.PUT});
78
- };
79
-
80
- /**
81
- * Patch decorator.
82
- *
83
- * @param path
84
- * @param options
85
- */
86
- export const patch = (path: string, options?: ActionMethodOptions) => {
87
- return action({...options, path, method: HttpMethod.PATCH});
88
- };
89
-
90
- /**
91
- * Del decorator.
92
- *
93
- * @param path
94
- * @param options
95
- */
96
- export const del = (path: string, options?: ActionMethodOptions) => {
97
- return action({...options, path, method: HttpMethod.DELETE});
98
- };
@@ -1,38 +0,0 @@
1
- import {Constructor} from '../../types.js';
2
- import {Reflector} from '@e22m4u/ts-reflector';
3
- import {ActionMetadata} from './action-metadata.js';
4
- import {ActionMetadataMap} from './action-metadata.js';
5
- import {ACTIONS_METADATA_KEY} from './action-metadata.js';
6
-
7
- /**
8
- * Action reflector.
9
- */
10
- export class ActionReflector {
11
- /**
12
- * Set metadata.
13
- *
14
- * @param metadata
15
- * @param target
16
- * @param propertyKey
17
- */
18
- static setMetadata(
19
- metadata: ActionMetadata,
20
- target: Constructor,
21
- propertyKey: string,
22
- ) {
23
- const oldMap = Reflector.getOwnMetadata(ACTIONS_METADATA_KEY, target);
24
- const newMap = new Map(oldMap);
25
- newMap.set(propertyKey, metadata);
26
- Reflector.defineMetadata(ACTIONS_METADATA_KEY, newMap, target);
27
- }
28
-
29
- /**
30
- * Get metadata.
31
- *
32
- * @param target
33
- */
34
- static getMetadata(target: Constructor): ActionMetadataMap {
35
- const metadata = Reflector.getOwnMetadata(ACTIONS_METADATA_KEY, target);
36
- return metadata ?? new Map();
37
- }
38
- }
@@ -1,3 +0,0 @@
1
- export * from './action-metadata.js';
2
- export * from './action-reflector.js';
3
- export * from './action-decorator.js';
@@ -1,3 +0,0 @@
1
- export * from './after-metadata.js';
2
- export * from './after-reflector.js';
3
- export * from './after-decorator.js';
@@ -1,17 +0,0 @@
1
- import {MetadataKey} from '@e22m4u/ts-reflector';
2
- import {RoutePreHandler} from '@e22m4u/js-trie-router';
3
-
4
- /**
5
- * Before metadata.
6
- */
7
- export type BeforeMetadata = {
8
- propertyKey?: string;
9
- middleware: RoutePreHandler | RoutePreHandler[];
10
- };
11
-
12
- /**
13
- * Before metadata key.
14
- */
15
- export const BEFORE_METADATA_KEY = new MetadataKey<BeforeMetadata[]>(
16
- 'beforeMetadataKey',
17
- );
@@ -1,3 +0,0 @@
1
- export * from './before-metadata.js';
2
- export * from './before-reflector.js';
3
- export * from './before-decorator.js';
@@ -1,28 +0,0 @@
1
- import {Constructor} from '../../types.js';
2
- import {Reflector} from '@e22m4u/ts-reflector';
3
- import {ControllerMetadata} from './controller-metadata.js';
4
- import {CONTROLLER_METADATA_KEY} from './controller-metadata.js';
5
-
6
- /**
7
- * Controller reflector.
8
- */
9
- export class ControllerReflector {
10
- /**
11
- * Set metadata.
12
- *
13
- * @param metadata
14
- * @param target
15
- */
16
- static setMetadata(metadata: ControllerMetadata, target: Constructor) {
17
- return Reflector.defineMetadata(CONTROLLER_METADATA_KEY, metadata, target);
18
- }
19
-
20
- /**
21
- * Get metadata.
22
- *
23
- * @param target
24
- */
25
- static getMetadata(target: Constructor): ControllerMetadata | undefined {
26
- return Reflector.getOwnMetadata(CONTROLLER_METADATA_KEY, target);
27
- }
28
- }
@@ -1,3 +0,0 @@
1
- export * from './controller-metadata.js';
2
- export * from './controller-decorator.js';
3
- export * from './controller-reflector.js';
@@ -1,9 +0,0 @@
1
- import {expect} from 'chai';
2
- import {createDebugger} from './create-debugger.js';
3
-
4
- describe('createDebugger', function () {
5
- it('returns a function', function () {
6
- const res = createDebugger('name');
7
- expect(typeof res).to.be.eq('function');
8
- });
9
- });
@@ -1,98 +0,0 @@
1
- import {inspect} from 'util';
2
- import DebugModule from 'debug';
3
- import {AnyObject} from '../types.js';
4
- import {format} from '@e22m4u/js-format';
5
-
6
- /**
7
- * Debugger.
8
- */
9
- export type Debugger = (
10
- messageOrData: string | unknown,
11
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
- ...args: any[]
13
- ) => void;
14
-
15
- /**
16
- * Colorize string.
17
- *
18
- * @param input
19
- */
20
- function colorizeString(input: string): string {
21
- const c = Number(DebugModule['selectColor'](input));
22
- const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c);
23
- return `${colorCode};1m${input}\u001B[0m`;
24
- }
25
-
26
- /**
27
- * Create debugger.
28
- *
29
- * Base usage:
30
- * ```ts
31
- * const debug = createDebugger('myService');
32
- * debug('Service created.');
33
- * // ujut:myService Service created.
34
- * ```
35
- *
36
- * Nested namespaces:
37
- * ```ts
38
- * const debug1 = debug.bind('namespace1');
39
- * const debug2 = debug.bind('namespace2');
40
- * debug1('Application started'); // ujut:myService [namespace1] Application started
41
- * debug2('Connection established'); // ujut:myService [namespace2] Connection established
42
- * ```
43
- *
44
- * Value inspection:
45
- * ```ts
46
- * debug({foo: 'lorem', bar: 'ipsum'})
47
- * // ujut:myService {
48
- * // ujut:myService "foo": "lorem",
49
- * // ujut:myService "bar": "ipsum"
50
- * // ujut:myService }
51
- * ```
52
- *
53
- * Titled inspection output:
54
- * ```ts
55
- * debug({foo: 'lorem', bar: 'ipsum'}, 'My awesome output:')
56
- * // ujut:myService My awesome output:
57
- * // ujut:myService {
58
- * // ujut:myService "foo": "lorem",
59
- * // ujut:myService "bar": "ipsum"
60
- * // ujut:myService }
61
- * ```
62
- *
63
- * @param name
64
- */
65
- export function createDebugger(name: string): Debugger {
66
- const debuggerName = `tsRestRouter:${name}`;
67
- // включить вывод логов можно принудительно
68
- // if (!process.env.DEBUG) DebugModule.enable('ujut*');
69
- const debug = DebugModule(debuggerName);
70
- return function (
71
- this: unknown,
72
- messageOrData: string | unknown,
73
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
- ...args: any[]
75
- ) {
76
- let prefix = '';
77
- if (typeof this === 'string') {
78
- const isDebugUsesColors = (debug as AnyObject).useColors;
79
- prefix = isDebugUsesColors ? colorizeString(`[${this}] `) : `[${this}] `;
80
- }
81
- if (typeof messageOrData === 'string') {
82
- const interpolatedMessage = format(messageOrData, ...args);
83
- return debug(prefix + interpolatedMessage);
84
- }
85
- const inspectOptions = {
86
- showHidden: false,
87
- depth: null,
88
- colors: true,
89
- compact: false,
90
- };
91
- const multiString = inspect(messageOrData, inspectOptions);
92
- const rows = multiString.split('\n');
93
- const colorizedDebuggerName = colorizeString(debuggerName);
94
- [...args, ...rows].forEach(v =>
95
- console.log(` ${colorizedDebuggerName} ${prefix}${v}`),
96
- );
97
- };
98
- }