moost 0.0.1-beta.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 (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +35 -0
  3. package/dist/moost.cjs.prod.js +742 -0
  4. package/dist/moost.d.ts +274 -0
  5. package/dist/moost.esm-bundler.js +693 -0
  6. package/dist/src/binding/bind-controller.d.ts +13 -0
  7. package/dist/src/binding/bind-controller.d.ts.map +1 -0
  8. package/dist/src/binding/bind-handler.d.ts +18 -0
  9. package/dist/src/binding/bind-handler.d.ts.map +1 -0
  10. package/dist/src/binding/index.d.ts +3 -0
  11. package/dist/src/binding/index.d.ts.map +1 -0
  12. package/dist/src/binding/tests/binding.spec.d.ts +2 -0
  13. package/dist/src/binding/tests/binding.spec.d.ts.map +1 -0
  14. package/dist/src/binding/utils.d.ts +3 -0
  15. package/dist/src/binding/utils.d.ts.map +1 -0
  16. package/dist/src/class-function/class-function.d.ts +4 -0
  17. package/dist/src/class-function/class-function.d.ts.map +1 -0
  18. package/dist/src/class-function/index.d.ts +2 -0
  19. package/dist/src/class-function/index.d.ts.map +1 -0
  20. package/dist/src/class-function/types.d.ts +9 -0
  21. package/dist/src/class-function/types.d.ts.map +1 -0
  22. package/dist/src/composables/cache-object.d.ts +3 -0
  23. package/dist/src/composables/cache-object.d.ts.map +1 -0
  24. package/dist/src/composables/controller-meta.d.ts +8 -0
  25. package/dist/src/composables/controller-meta.d.ts.map +1 -0
  26. package/dist/src/composables/index.d.ts +2 -0
  27. package/dist/src/composables/index.d.ts.map +1 -0
  28. package/dist/src/decorators/circular.decorator.d.ts +3 -0
  29. package/dist/src/decorators/circular.decorator.d.ts.map +1 -0
  30. package/dist/src/decorators/common.decorator.d.ts +4 -0
  31. package/dist/src/decorators/common.decorator.d.ts.map +1 -0
  32. package/dist/src/decorators/controller.decorator.d.ts +6 -0
  33. package/dist/src/decorators/controller.decorator.d.ts.map +1 -0
  34. package/dist/src/decorators/http-method.decorator.d.ts +8 -0
  35. package/dist/src/decorators/http-method.decorator.d.ts.map +1 -0
  36. package/dist/src/decorators/index.d.ts +10 -0
  37. package/dist/src/decorators/index.d.ts.map +1 -0
  38. package/dist/src/decorators/injectable.decorator.d.ts +3 -0
  39. package/dist/src/decorators/injectable.decorator.d.ts.map +1 -0
  40. package/dist/src/decorators/intercept.decorator.d.ts +20 -0
  41. package/dist/src/decorators/intercept.decorator.d.ts.map +1 -0
  42. package/dist/src/decorators/pipe.decorator.d.ts +3 -0
  43. package/dist/src/decorators/pipe.decorator.d.ts.map +1 -0
  44. package/dist/src/decorators/provide.decorator.d.ts +5 -0
  45. package/dist/src/decorators/provide.decorator.d.ts.map +1 -0
  46. package/dist/src/decorators/resolve.decorator.d.ts +21 -0
  47. package/dist/src/decorators/resolve.decorator.d.ts.map +1 -0
  48. package/dist/src/decorators/tests/circular.artifacts.d.ts +7 -0
  49. package/dist/src/decorators/tests/circular.artifacts.d.ts.map +1 -0
  50. package/dist/src/decorators/tests/circular.spec.d.ts +2 -0
  51. package/dist/src/decorators/tests/circular.spec.d.ts.map +1 -0
  52. package/dist/src/decorators/tests/common.artifacts.d.ts +4 -0
  53. package/dist/src/decorators/tests/common.artifacts.d.ts.map +1 -0
  54. package/dist/src/decorators/tests/common.spec.d.ts +2 -0
  55. package/dist/src/decorators/tests/common.spec.d.ts.map +1 -0
  56. package/dist/src/decorators/tests/controller.spec.d.ts +2 -0
  57. package/dist/src/decorators/tests/controller.spec.d.ts.map +1 -0
  58. package/dist/src/decorators/tests/http-method.artifacts.d.ts +12 -0
  59. package/dist/src/decorators/tests/http-method.artifacts.d.ts.map +1 -0
  60. package/dist/src/decorators/tests/http-method.spec.d.ts +2 -0
  61. package/dist/src/decorators/tests/http-method.spec.d.ts.map +1 -0
  62. package/dist/src/decorators/tests/injectable.spec.d.ts +2 -0
  63. package/dist/src/decorators/tests/injectable.spec.d.ts.map +1 -0
  64. package/dist/src/decorators/tests/intercept.spec.d.ts +2 -0
  65. package/dist/src/decorators/tests/intercept.spec.d.ts.map +1 -0
  66. package/dist/src/decorators/tests/pipe.artifacts.d.ts +4 -0
  67. package/dist/src/decorators/tests/pipe.artifacts.d.ts.map +1 -0
  68. package/dist/src/decorators/tests/pipe.spec.d.ts +2 -0
  69. package/dist/src/decorators/tests/pipe.spec.d.ts.map +1 -0
  70. package/dist/src/decorators/tests/provide.artifacts.d.ts +9 -0
  71. package/dist/src/decorators/tests/provide.artifacts.d.ts.map +1 -0
  72. package/dist/src/decorators/tests/provide.spec.d.ts +2 -0
  73. package/dist/src/decorators/tests/provide.spec.d.ts.map +1 -0
  74. package/dist/src/decorators/tests/resolve.artifacts.d.ts +4 -0
  75. package/dist/src/decorators/tests/resolve.artifacts.d.ts.map +1 -0
  76. package/dist/src/decorators/tests/resolve.spec.d.ts +2 -0
  77. package/dist/src/decorators/tests/resolve.spec.d.ts.map +1 -0
  78. package/dist/src/decorators/tests/validate.artifacts.d.ts +21 -0
  79. package/dist/src/decorators/tests/validate.artifacts.d.ts.map +1 -0
  80. package/dist/src/decorators/tests/validate.spec.d.ts +2 -0
  81. package/dist/src/decorators/tests/validate.spec.d.ts.map +1 -0
  82. package/dist/src/decorators/validate.decorator.d.ts +10 -0
  83. package/dist/src/decorators/validate.decorator.d.ts.map +1 -0
  84. package/dist/src/index.d.ts +7 -0
  85. package/dist/src/index.d.ts.map +1 -0
  86. package/dist/src/metadata/index.d.ts +2 -0
  87. package/dist/src/metadata/index.d.ts.map +1 -0
  88. package/dist/src/metadata/infact.d.ts +7 -0
  89. package/dist/src/metadata/infact.d.ts.map +1 -0
  90. package/dist/src/metadata/moost-metadata.d.ts +62 -0
  91. package/dist/src/metadata/moost-metadata.d.ts.map +1 -0
  92. package/dist/src/metadata/valido.d.ts +3 -0
  93. package/dist/src/metadata/valido.d.ts.map +1 -0
  94. package/dist/src/moost.d.ts +34 -0
  95. package/dist/src/moost.d.ts.map +1 -0
  96. package/dist/src/moost.spec.d.ts +2 -0
  97. package/dist/src/moost.spec.d.ts.map +1 -0
  98. package/dist/src/pipes/generic-types-cast.pipe.d.ts +3 -0
  99. package/dist/src/pipes/generic-types-cast.pipe.d.ts.map +1 -0
  100. package/dist/src/pipes/index.d.ts +5 -0
  101. package/dist/src/pipes/index.d.ts.map +1 -0
  102. package/dist/src/pipes/resolve.pipe.d.ts +3 -0
  103. package/dist/src/pipes/resolve.pipe.d.ts.map +1 -0
  104. package/dist/src/pipes/run-pipes.d.ts +5 -0
  105. package/dist/src/pipes/run-pipes.d.ts.map +1 -0
  106. package/dist/src/pipes/shared-pipes.d.ts +3 -0
  107. package/dist/src/pipes/shared-pipes.d.ts.map +1 -0
  108. package/dist/src/pipes/types.d.ts +21 -0
  109. package/dist/src/pipes/types.d.ts.map +1 -0
  110. package/dist/src/pipes/validate.pipe.d.ts +7 -0
  111. package/dist/src/pipes/validate.pipe.d.ts.map +1 -0
  112. package/dist/src/pipes/validation.spec.d.ts +2 -0
  113. package/dist/src/pipes/validation.spec.d.ts.map +1 -0
  114. package/dist/src/tests/e2e.artifacts.d.ts +17 -0
  115. package/dist/src/tests/e2e.artifacts.d.ts.map +1 -0
  116. package/dist/src/tests/e2e.spec.d.ts +2 -0
  117. package/dist/src/tests/e2e.spec.d.ts.map +1 -0
  118. package/dist/src/tests/request.artifacts.d.ts +10 -0
  119. package/dist/src/tests/request.artifacts.d.ts.map +1 -0
  120. package/dist/src/types.d.ts +8 -0
  121. package/dist/src/types.d.ts.map +1 -0
  122. package/dist/src/utils/banner.d.ts +2 -0
  123. package/dist/src/utils/banner.d.ts.map +1 -0
  124. package/dist/src/utils/log.d.ts +5 -0
  125. package/dist/src/utils/log.d.ts.map +1 -0
  126. package/dist/src/utils/panic.d.ts +2 -0
  127. package/dist/src/utils/panic.d.ts.map +1 -0
  128. package/index.js +2 -0
  129. package/package.json +90 -0
@@ -0,0 +1,274 @@
1
+ import { Mate } from '@prostojs/mate';
2
+ import { TProstoMetadata } from '@prostojs/mate';
3
+ import { TProstoParamsMetadata } from '@prostojs/mate';
4
+ import { TProvideFn } from '@prostojs/infact';
5
+ import { TProvideRegistry } from '@prostojs/infact';
6
+ import { TValidoDtoOptions } from '@prostojs/valido';
7
+ import { TValidoFn } from '@prostojs/valido';
8
+ import { TWooksOptions } from 'wooks';
9
+ import { validoIsBoolean } from '@prostojs/valido';
10
+ import { validoIsNumber } from '@prostojs/valido';
11
+ import { validoIsString } from '@prostojs/valido';
12
+ import { Wooks } from 'wooks';
13
+
14
+ export declare const All: (path?: string) => MethodDecorator;
15
+
16
+ export declare function Body(): ParameterDecorator;
17
+
18
+ export declare function Circular<T = unknown>(resolver: () => TClassConstructor<T>): ParameterDecorator;
19
+
20
+ export declare function Const(value: unknown, label?: string): ParameterDecorator;
21
+
22
+ export declare function Controller(prefix?: string): ClassDecorator;
23
+
24
+ export declare function Cookie(name: string): ParameterDecorator;
25
+
26
+ export declare const Delete: (path?: string) => MethodDecorator;
27
+
28
+ export declare function Dto(dtoOptions?: TValidoDtoOptions): ClassDecorator;
29
+
30
+ export declare const genericTypesCastPipe: (strict?: boolean) => TPipeFn;
31
+
32
+ export declare const Get: (path?: string) => MethodDecorator;
33
+
34
+ export declare function getMoostMate(): Mate<TMoostMetadata>;
35
+
36
+ export declare function Header(name: string): ParameterDecorator;
37
+
38
+ export declare function HttpMethod(method: '*' | 'GET' | 'PUT' | 'POST' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS', path?: string): MethodDecorator;
39
+
40
+ export declare function ImportController(controller: TFunction | TObject, provide?: TProvideRegistry): ClassDecorator;
41
+
42
+ export declare function ImportController(prefix: string, controller: TFunction | TObject, provide?: TProvideRegistry): ClassDecorator;
43
+
44
+ export declare function Inject(type: string | TClassConstructor): ParameterDecorator;
45
+
46
+ export declare function Injectable(scope?: true | TInjectableScope): ClassDecorator;
47
+
48
+ export declare function Intercept(handler: TCallableClassFunction<TInterceptorFn>, priority?: TInterceptorPriority): ClassDecorator & MethodDecorator;
49
+
50
+ export declare function Ip(opts?: {
51
+ trustProxy: boolean;
52
+ }): ParameterDecorator;
53
+
54
+ export declare function IpList(): ParameterDecorator;
55
+
56
+ export declare function IsArray<T = unknown>(opts?: TValidateArrayOptions<T>): PropertyDecorator & ParameterDecorator;
57
+
58
+ export declare function IsBoolean(...args: Parameters<typeof validoIsBoolean>): PropertyDecorator & ParameterDecorator;
59
+
60
+ export declare function IsNumber(...args: Parameters<typeof validoIsNumber>): PropertyDecorator & ParameterDecorator;
61
+
62
+ export declare function IsString(...args: Parameters<typeof validoIsString>): PropertyDecorator & ParameterDecorator;
63
+
64
+ export declare function IsTypeOf(type: 'string' | 'object' | 'number' | 'boolean', errorText?: string): PropertyDecorator & ParameterDecorator;
65
+
66
+ export declare function Label(value: string): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
67
+
68
+ export declare function Method(): ParameterDecorator;
69
+
70
+ export declare class Moost {
71
+ protected options?: TMoostOptions | undefined;
72
+ pipes: TPipeData[];
73
+ interceptors: TInterceptorData[];
74
+ provide: TProvideRegistry;
75
+ constructor(options?: TMoostOptions | undefined);
76
+ protected wooksApp?: Wooks;
77
+ protected unregisteredControllers: (TObject | TFunction)[];
78
+ listen(): Promise<Wooks>;
79
+ listen(port: number): Promise<Wooks>;
80
+ listen(port: number, cb: () => void): Promise<Wooks>;
81
+ listen(port: number, hostname: string): Promise<Wooks>;
82
+ listen(port: number, hostname: string, cb: () => void): Promise<Wooks>;
83
+ close(): Promise<unknown> | undefined;
84
+ private init;
85
+ protected bindControllers(): Promise<void>;
86
+ protected bindController(controller: TFunction | TObject, provide: TProvideRegistry, globalPrefix: string, replaceOwnPrefix?: string): Promise<void>;
87
+ applyGlobalPipes(...items: (TPipeFn | TPipeData)[]): this;
88
+ applyGlobalInterceptors(...items: (TInterceptorData['handler'] | TInterceptorData)[]): this;
89
+ setProvideRegistry(provide: TProvideRegistry): this;
90
+ registerControllers(...controllers: (TObject | TFunction)[]): this;
91
+ }
92
+
93
+ export declare function Optional(): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
94
+
95
+ export declare function Param(name: string): ParameterDecorator;
96
+
97
+ export declare function Params(): ParameterDecorator;
98
+
99
+ export declare const Patch: (path?: string) => MethodDecorator;
100
+
101
+ export declare const Post: (path?: string) => MethodDecorator;
102
+
103
+ export declare function Provide(type: string | TClassConstructor, fn: TProvideFn): ClassDecorator;
104
+
105
+ export declare const Put: (path?: string) => MethodDecorator;
106
+
107
+ export declare function Query(name?: string): ParameterDecorator;
108
+
109
+ export declare function RawBody(): ParameterDecorator;
110
+
111
+ export declare function Req(): ParameterDecorator;
112
+
113
+ export declare function ReqId(): ParameterDecorator;
114
+
115
+ declare function Required_2(): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
116
+ export { Required_2 as Required }
117
+
118
+ export declare function Res(options?: {
119
+ passthrough: boolean;
120
+ }): ParameterDecorator;
121
+
122
+ export declare function Resolve(resolver: () => unknown, label?: string): ParameterDecorator;
123
+
124
+ export declare const resolvePipe: TPipeFn;
125
+
126
+ declare type TAny = any;
127
+
128
+ declare type TAnyFn = {
129
+ (...a: TAny[]): unknown;
130
+ };
131
+
132
+ export declare type TCallableClassFunction<T extends TAnyFn = TAnyFn> = T | TClassFunctionConstructor;
133
+
134
+ declare type TClassConstructor<T = unknown> = new (...args: TAny[]) => T;
135
+
136
+ export declare interface TClassFunction<T extends TAnyFn = TAnyFn> {
137
+ handler: T;
138
+ }
139
+
140
+ declare interface TClassFunctionConstructor<T extends TAnyFn = TAnyFn> {
141
+ new (...a: TAny[]): TClassFunction<T>;
142
+ }
143
+
144
+ declare interface TCommonMetaFields {
145
+ label?: string;
146
+ optional?: boolean;
147
+ required?: boolean;
148
+ }
149
+
150
+ declare interface TCommonMoostMeta {
151
+ pipes?: TPipeData[];
152
+ }
153
+
154
+ declare type TFunction = Function;
155
+
156
+ export declare type TInjectableScope = 'FOR_REQUEST' | 'SINGLETON';
157
+
158
+ export declare type TInterceptorAfter = (response: TAny, reply: (response: TAny) => void) => void | Promise<void>;
159
+
160
+ export declare type TInterceptorBefore = (reply: (response: TAny) => void) => void | Promise<void>;
161
+
162
+ export declare interface TInterceptorData {
163
+ handler: TCallableClassFunction<TInterceptorFn>;
164
+ priority: TInterceptorPriority;
165
+ }
166
+
167
+ export declare type TInterceptorFn = {
168
+ (before: (fn: TInterceptorBefore) => void, after: (fn: TInterceptorAfter) => void, onError: (fn: TInterceptorOnError) => void): void | Promise<void>;
169
+ priority?: TInterceptorPriority;
170
+ };
171
+
172
+ export declare type TInterceptorOnError = (error: Error, reply: (response: TAny) => void) => void | Promise<void>;
173
+
174
+ export declare enum TInterceptorPriority {
175
+ BEFORE_ALL = 0,
176
+ BEFORE_GUARD = 1,
177
+ GUARD = 2,
178
+ AFTER_GUARD = 3,
179
+ INTERCEPTOR = 4,
180
+ CATCH_ERROR = 5,
181
+ AFTER_ALL = 6
182
+ }
183
+
184
+ export declare interface TMoostMetadata extends TProstoAndCommonMetadata {
185
+ inherit?: boolean;
186
+ dto?: TValidoDtoOptions;
187
+ requiredProps?: (string | symbol)[];
188
+ controller?: {
189
+ prefix?: string;
190
+ };
191
+ importController?: {
192
+ prefix?: string;
193
+ typeResolver?: TClassConstructor | (() => TClassConstructor | TObject | Promise<TClassConstructor | TObject>);
194
+ provide?: TProvideRegistry;
195
+ }[];
196
+ injectable?: true | TInjectableScope;
197
+ interceptors?: TInterceptorData[];
198
+ httpHandler?: {
199
+ method: '*' | 'GET' | 'PUT' | 'POST' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
200
+ path: string;
201
+ }[];
202
+ validators?: TValidoFn[];
203
+ validatorsOfItem?: TValidoFn[];
204
+ arrayType?: true | TValidateArrayOptions;
205
+ provide?: TProvideRegistry;
206
+ }
207
+
208
+ export declare interface TMoostOptions {
209
+ globalPrefix?: string;
210
+ port?: number | string;
211
+ hostname?: string;
212
+ wooksOptions?: TWooksOptions;
213
+ }
214
+
215
+ export declare interface TMoostParamsMetadata extends TProstoParamsAndCommonMetadata {
216
+ validators?: TValidoFn[];
217
+ validatorsOfItem?: TValidoFn[];
218
+ arrayType?: true | TValidateArrayOptions;
219
+ resolver?: TFunction;
220
+ circular?: () => TAny;
221
+ inject?: string | symbol;
222
+ }
223
+
224
+ declare type TObject = object;
225
+
226
+ export declare interface TPipeData {
227
+ handler: TPipeFn;
228
+ priority: TPipePriority;
229
+ }
230
+
231
+ export declare type TPipeFn<T extends TMoostParamsMetadata = TMoostParamsMetadata> = {
232
+ (value: unknown, meta: T): unknown | Promise<unknown>;
233
+ priority?: TPipePriority;
234
+ };
235
+
236
+ export declare enum TPipePriority {
237
+ BEFORE_RESOLVE = 0,
238
+ RESOLVE = 1,
239
+ AFTER_RESOLVE = 2,
240
+ BEFORE_TRANSFORM = 3,
241
+ TRANSFORM = 4,
242
+ AFTER_TRANSFORM = 5,
243
+ BEFORE_VALIDATE = 6,
244
+ VALIDATE = 7,
245
+ AFTER_VALIDATE = 8
246
+ }
247
+
248
+ declare type TProstoAndCommonMetadata<T extends TMoostParamsMetadata = TMoostParamsMetadata> = TProstoMetadata<T> & TCommonMetaFields & TCommonMoostMeta;
249
+
250
+ declare type TProstoParamsAndCommonMetadata = TProstoParamsMetadata & TCommonMetaFields & TCommonMoostMeta;
251
+
252
+ export declare interface TValidateArrayOptions<T = unknown> {
253
+ itemType?: (item: T, index: number) => Promise<TFunction> | TFunction;
254
+ itemValidators?: () => (PropertyDecorator | ParameterDecorator)[];
255
+ minLength?: number;
256
+ maxLength?: number;
257
+ }
258
+
259
+ declare interface TValidatePipeOptions {
260
+ errorLimit?: number;
261
+ }
262
+
263
+ export declare function Url(): ParameterDecorator;
264
+
265
+ export declare function useControllerMeta<T extends TMoostMetadata = TMoostMetadata>(): {
266
+ getClassMeta: () => T | undefined;
267
+ getMethodMeta: () => T | undefined;
268
+ };
269
+
270
+ export declare function Validate<T = unknown>(validator: TValidoFn<T>): PropertyDecorator & ParameterDecorator;
271
+
272
+ export declare const validatePipe: (opts?: TValidatePipeOptions) => TPipeFn;
273
+
274
+ export { }