@innet/server 2.0.0-alpha.2 → 2.0.0-alpha.20

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 (208) hide show
  1. package/README.md +1105 -403
  2. package/example/requests/index.d.ts +1 -1
  3. package/example/requests/todo/AddTodo/AddTodo.d.ts +1 -0
  4. package/example/requests/todo/AddTodo/index.d.ts +1 -0
  5. package/example/requests/todo/DeleteTodo/DeleteTodo.d.ts +1 -0
  6. package/example/requests/todo/DeleteTodo/index.d.ts +1 -0
  7. package/example/requests/todo/EditTodo/EditTodo.d.ts +1 -0
  8. package/example/requests/todo/EditTodo/index.d.ts +1 -0
  9. package/example/requests/todo/GetTodo/GetTodo.d.ts +1 -0
  10. package/example/requests/todo/GetTodo/index.d.ts +1 -0
  11. package/example/requests/todo/GetTodos/GetTodos.d.ts +1 -0
  12. package/example/requests/todo/GetTodos/index.d.ts +1 -0
  13. package/example/requests/todo/index.d.ts +5 -0
  14. package/example/requests/todo/todos.d.ts +1 -0
  15. package/example/schemas/app/ListQueryParams/ListQueryParams.d.ts +1 -0
  16. package/example/schemas/app/ListQueryParams/index.d.ts +1 -0
  17. package/example/schemas/app/ListSchema/ListSchema.d.ts +4 -1
  18. package/example/schemas/app/index.d.ts +1 -0
  19. package/example/schemas/index.d.ts +1 -3
  20. package/example/schemas/todo/TodoSchema/TodoSchema.d.ts +4 -0
  21. package/example/schemas/todo/TodoSchema/index.d.ts +1 -0
  22. package/example/schemas/todo/index.d.ts +1 -0
  23. package/example/tags/Todo/Todo.d.ts +1 -0
  24. package/example/tags/Todo/index.d.ts +1 -0
  25. package/example/tags/index.d.ts +1 -1
  26. package/handler/handler.d.ts +11 -3
  27. package/handler/handler.es6.js +10 -2
  28. package/handler/handler.js +10 -2
  29. package/hooks/index.d.ts +4 -0
  30. package/hooks/index.es6.js +4 -0
  31. package/hooks/index.js +4 -0
  32. package/hooks/useAction/useAction.es6.js +1 -1
  33. package/hooks/useAction/useAction.js +1 -1
  34. package/hooks/useApi/useApi.d.ts +1 -3
  35. package/hooks/useClientIp/index.d.ts +1 -0
  36. package/hooks/useClientIp/index.es6.js +1 -0
  37. package/hooks/useClientIp/index.js +9 -0
  38. package/hooks/useClientIp/useClientIp.d.ts +1 -0
  39. package/hooks/useClientIp/useClientIp.es6.js +9 -0
  40. package/hooks/useClientIp/useClientIp.js +13 -0
  41. package/hooks/useComponentName/useComponentName.d.ts +1 -1
  42. package/hooks/useEndpoint/useEndpoint.es6.js +3 -1
  43. package/hooks/useEndpoint/useEndpoint.js +3 -1
  44. package/hooks/useObjectSchemaContext/index.d.ts +1 -0
  45. package/hooks/useObjectSchemaContext/index.es6.js +1 -0
  46. package/hooks/useObjectSchemaContext/index.js +10 -0
  47. package/hooks/useObjectSchemaContext/useObjectSchemaContext.d.ts +3 -0
  48. package/hooks/useObjectSchemaContext/useObjectSchemaContext.es6.js +14 -0
  49. package/hooks/useObjectSchemaContext/useObjectSchemaContext.js +19 -0
  50. package/hooks/useRequest/index.es6.js +1 -1
  51. package/hooks/useRequest/index.js +0 -1
  52. package/hooks/useRequest/useRequest.d.ts +1 -4
  53. package/hooks/useRequest/useRequest.es6.js +4 -4
  54. package/hooks/useRequest/useRequest.js +3 -4
  55. package/hooks/useResponse/index.es6.js +1 -1
  56. package/hooks/useResponse/index.js +0 -1
  57. package/hooks/useResponse/useResponse.d.ts +1 -4
  58. package/hooks/useResponse/useResponse.es6.js +4 -4
  59. package/hooks/useResponse/useResponse.js +3 -4
  60. package/hooks/useSchemaType/useSchemaType.d.ts +3 -2
  61. package/hooks/useSchemaType/useSchemaType.es6.js +2 -3
  62. package/hooks/useSchemaType/useSchemaType.js +2 -3
  63. package/hooks/useServer/useServer.d.ts +1 -0
  64. package/hooks/useServer/useServer.es6.js +3 -1
  65. package/hooks/useServer/useServer.js +3 -1
  66. package/hooks/useServerPlugin/index.d.ts +1 -0
  67. package/hooks/useServerPlugin/index.es6.js +1 -0
  68. package/hooks/useServerPlugin/index.js +9 -0
  69. package/hooks/useServerPlugin/useServerPlugin.d.ts +2 -0
  70. package/hooks/useServerPlugin/useServerPlugin.es6.js +13 -0
  71. package/hooks/useServerPlugin/useServerPlugin.js +17 -0
  72. package/hooks/useServerPlugins/index.d.ts +1 -0
  73. package/hooks/useServerPlugins/index.es6.js +1 -0
  74. package/hooks/useServerPlugins/index.js +10 -0
  75. package/hooks/useServerPlugins/useServerPlugins.d.ts +4 -0
  76. package/hooks/useServerPlugins/useServerPlugins.es6.js +14 -0
  77. package/hooks/useServerPlugins/useServerPlugins.js +19 -0
  78. package/index.es6.js +13 -5
  79. package/index.js +24 -6
  80. package/package.json +2 -2
  81. package/plugins/main/api/api.d.ts +2 -0
  82. package/plugins/main/api/api.es6.js +49 -51
  83. package/plugins/main/api/api.js +49 -51
  84. package/plugins/main/endpoint/endpoint.es6.js +4 -1
  85. package/plugins/main/endpoint/endpoint.js +4 -1
  86. package/plugins/main/index.d.ts +1 -1
  87. package/plugins/main/index.es6.js +1 -1
  88. package/plugins/main/index.js +1 -1
  89. package/plugins/main/preset/index.d.ts +1 -0
  90. package/plugins/main/preset/index.es6.js +1 -0
  91. package/{utils/rules/any/any.js → plugins/main/preset/index.js} +4 -4
  92. package/plugins/main/preset/preset.d.ts +3 -0
  93. package/plugins/main/preset/preset.es6.js +13 -0
  94. package/plugins/main/preset/preset.js +21 -0
  95. package/plugins/main/request/request.es6.js +2 -13
  96. package/plugins/main/request/request.js +2 -13
  97. package/plugins/main/response/index.es6.js +1 -1
  98. package/plugins/main/response/index.js +1 -0
  99. package/plugins/main/response/response.d.ts +6 -2
  100. package/plugins/main/response/response.es6.js +16 -8
  101. package/plugins/main/response/response.js +16 -7
  102. package/plugins/main/server/server.d.ts +3 -3
  103. package/plugins/main/server/server.es6.js +29 -7
  104. package/plugins/main/server/server.js +29 -7
  105. package/plugins/main/tag/tag.es6.js +4 -1
  106. package/plugins/main/tag/tag.js +4 -1
  107. package/plugins/request/cms/cms.es6.js +1 -1
  108. package/plugins/request/cms/cms.js +1 -1
  109. package/plugins/request/cookie/cookie.es6.js +3 -19
  110. package/plugins/request/cookie/cookie.js +3 -23
  111. package/plugins/request/proxy/proxy.d.ts +3 -0
  112. package/plugins/request/proxy/proxy.es6.js +4 -1
  113. package/plugins/request/proxy/proxy.js +4 -1
  114. package/plugins/request/redirect/redirect.d.ts +2 -1
  115. package/plugins/request/success/success.d.ts +1 -0
  116. package/plugins/request/success/success.es6.js +13 -4
  117. package/plugins/request/success/success.js +13 -4
  118. package/plugins/schema/any/any.d.ts +5 -0
  119. package/plugins/schema/any/any.es6.js +27 -0
  120. package/plugins/schema/any/any.js +31 -0
  121. package/plugins/schema/boolean/boolean.es6.js +2 -4
  122. package/plugins/schema/boolean/boolean.js +1 -3
  123. package/plugins/schema/field/field.es6.js +3 -5
  124. package/plugins/schema/field/field.js +2 -4
  125. package/plugins/schema/index.d.ts +1 -0
  126. package/plugins/schema/index.es6.js +1 -0
  127. package/plugins/schema/index.js +1 -0
  128. package/plugins/schema/object/object.es6.js +17 -4
  129. package/plugins/schema/object/object.js +17 -4
  130. package/plugins/utils/blacklist/blacklist.d.ts +4 -0
  131. package/plugins/utils/blacklist/blacklist.es6.js +18 -0
  132. package/plugins/utils/blacklist/blacklist.js +22 -0
  133. package/plugins/utils/blacklist/index.d.ts +1 -0
  134. package/plugins/utils/blacklist/index.es6.js +1 -0
  135. package/plugins/utils/blacklist/index.js +9 -0
  136. package/plugins/utils/dts/dts.d.ts +3 -3
  137. package/plugins/utils/dts/dts.es6.js +6 -25
  138. package/plugins/utils/dts/dts.js +5 -29
  139. package/plugins/utils/index.d.ts +3 -0
  140. package/plugins/utils/index.es6.js +3 -0
  141. package/plugins/utils/index.js +3 -0
  142. package/plugins/utils/protection/index.d.ts +1 -0
  143. package/plugins/utils/protection/index.es6.js +1 -0
  144. package/plugins/utils/protection/index.js +9 -0
  145. package/plugins/utils/protection/protection.d.ts +8 -0
  146. package/plugins/utils/protection/protection.es6.js +36 -0
  147. package/plugins/utils/protection/protection.js +40 -0
  148. package/plugins/utils/swagger/swagger.es6.js +10 -12
  149. package/plugins/utils/swagger/swagger.js +10 -12
  150. package/plugins/utils/whitelist/index.d.ts +1 -0
  151. package/plugins/utils/whitelist/index.es6.js +1 -0
  152. package/plugins/utils/whitelist/index.js +9 -0
  153. package/plugins/utils/whitelist/whitelist.d.ts +4 -0
  154. package/plugins/utils/whitelist/whitelist.es6.js +20 -0
  155. package/plugins/utils/whitelist/whitelist.js +24 -0
  156. package/types.d.ts +2 -10
  157. package/utils/action/Action.d.ts +7 -4
  158. package/utils/action/Action.es6.js +35 -11
  159. package/utils/action/Action.js +36 -12
  160. package/utils/generateTypes/generateTypes.d.ts +3 -0
  161. package/utils/generateTypes/generateTypes.es6.js +151 -0
  162. package/utils/generateTypes/generateTypes.js +156 -0
  163. package/utils/generateTypes/generateTypes.test.d.ts +1 -0
  164. package/utils/generateTypes/index.d.ts +1 -0
  165. package/utils/generateTypes/index.es6.js +1 -0
  166. package/utils/generateTypes/index.js +10 -0
  167. package/utils/getEndpoint/getEndpoint.es6.js +2 -2
  168. package/utils/getEndpoint/getEndpoint.js +2 -2
  169. package/utils/index.d.ts +1 -0
  170. package/utils/index.es6.js +1 -0
  171. package/utils/index.js +1 -0
  172. package/utils/rules/index.d.ts +0 -1
  173. package/utils/rules/index.es6.js +0 -1
  174. package/utils/rules/index.js +0 -1
  175. package/utils/rules/objectOf/objectOf.d.ts +1 -1
  176. package/utils/rules/objectOf/objectOf.es6.js +15 -2
  177. package/utils/rules/objectOf/objectOf.js +15 -2
  178. package/example/requests/partners/EditPartner/EditPartner.d.ts +0 -1
  179. package/example/requests/partners/EditPartner/index.d.ts +0 -1
  180. package/example/requests/partners/GetPartner/GetPartner.d.ts +0 -1
  181. package/example/requests/partners/GetPartner/index.d.ts +0 -1
  182. package/example/requests/partners/GetPartners/GetPartners.d.ts +0 -1
  183. package/example/requests/partners/GetPartners/index.d.ts +0 -1
  184. package/example/requests/partners/index.d.ts +0 -3
  185. package/example/schemas/address/AddressSchema/AddressSchema.d.ts +0 -1
  186. package/example/schemas/address/AddressSchema/index.d.ts +0 -1
  187. package/example/schemas/address/index.d.ts +0 -1
  188. package/example/schemas/location/LocationSchema/LocationSchema.d.ts +0 -1
  189. package/example/schemas/location/LocationSchema/index.d.ts +0 -1
  190. package/example/schemas/location/index.d.ts +0 -1
  191. package/example/schemas/partner/EditPartnerSchema/EditPartnerSchema.d.ts +0 -1
  192. package/example/schemas/partner/EditPartnerSchema/index.d.ts +0 -1
  193. package/example/schemas/partner/PartnerSchema/PartnerSchema.d.ts +0 -1
  194. package/example/schemas/partner/PartnerSchema/index.d.ts +0 -1
  195. package/example/schemas/partner/index.d.ts +0 -2
  196. package/example/tags/Partner/Partner.d.ts +0 -1
  197. package/example/tags/Partner/index.d.ts +0 -1
  198. package/plugins/main/fallback/fallback.d.ts +0 -4
  199. package/plugins/main/fallback/fallback.es6.js +0 -19
  200. package/plugins/main/fallback/fallback.js +0 -23
  201. package/plugins/main/fallback/index.d.ts +0 -1
  202. package/plugins/main/fallback/index.es6.js +0 -1
  203. package/plugins/main/fallback/index.js +0 -9
  204. package/utils/rules/any/any.d.ts +0 -1
  205. package/utils/rules/any/any.es6.js +0 -5
  206. /package/{utils/rules → plugins/schema}/any/index.d.ts +0 -0
  207. /package/{utils/rules → plugins/schema}/any/index.es6.js +0 -0
  208. /package/{utils/rules → plugins/schema}/any/index.js +0 -0
@@ -1,4 +1,5 @@
1
1
  import { type ObjectType, type SchemaObject, type ValuesSchemaProps } from '../../types';
2
- type TypeMap<T extends ObjectType> = T extends 'number' | 'integer' ? number : T extends 'string' ? string : T extends 'object' ? object : T extends 'array' ? any[] : T extends 'boolean' ? boolean : T extends 'null' ? null : unknown;
3
- export declare function useSchemaType<T extends ObjectType>(type: T, { values, ref, example, examples, ...options }?: undefined | ValuesSchemaProps<TypeMap<T>>): SchemaObject | undefined;
2
+ export type SchemaType = ObjectType | 'any';
3
+ type TypeMap<T extends SchemaType> = T extends 'number' | 'integer' ? number : T extends 'string' ? string : T extends 'object' ? object : T extends 'array' ? any[] : T extends 'boolean' ? boolean : T extends 'null' ? null : T extends 'any' ? any : unknown;
4
+ export declare function useSchemaType<T extends SchemaType>(type: T, { values, ref, example, examples, ...options }?: undefined | ValuesSchemaProps<TypeMap<T>>): SchemaObject | undefined;
4
5
  export {};
@@ -22,11 +22,10 @@ function useSchemaType(type, _a = {}) {
22
22
  return;
23
23
  }
24
24
  return (docs.components.schemas[ref] = Object.assign(Object.assign({}, options), { example,
25
- examples,
26
- type, enum: values }));
25
+ examples, type: type === 'any' ? undefined : type, enum: values }));
27
26
  }
28
27
  return useNewSchema(Object.assign(Object.assign({}, options), { example,
29
- examples, enum: values, type: type }));
28
+ examples, enum: values, type: type === 'any' ? undefined : type }));
30
29
  }
31
30
 
32
31
  export { useSchemaType };
@@ -26,11 +26,10 @@ function useSchemaType(type, _a = {}) {
26
26
  return;
27
27
  }
28
28
  return (docs.components.schemas[ref] = Object.assign(Object.assign({}, options), { example,
29
- examples,
30
- type, enum: values }));
29
+ examples, type: type === 'any' ? undefined : type, enum: values }));
31
30
  }
32
31
  return useNewSchema.useNewSchema(Object.assign(Object.assign({}, options), { example,
33
- examples, enum: values, type: type }));
32
+ examples, enum: values, type: type === 'any' ? undefined : type }));
34
33
  }
35
34
 
36
35
  exports.useSchemaType = useSchemaType;
@@ -3,6 +3,7 @@
3
3
  import { Context } from '@innet/jsx';
4
4
  import { type Server as HttpServer } from 'http';
5
5
  import { type Server as HttpsServer } from 'https';
6
+ export type ServerPlugin = () => any;
6
7
  export interface ServerContext {
7
8
  server: HttpServer | HttpsServer;
8
9
  port: number;
@@ -1,10 +1,12 @@
1
1
  import { Context, useContext } from '@innet/jsx';
2
+ import '../useThrow/index.es6.js';
3
+ import { useThrow } from '../useThrow/useThrow.es6.js';
2
4
 
3
5
  const serverContext = new Context();
4
6
  function useServer() {
5
7
  const server = useContext(serverContext);
6
8
  if (!server) {
7
- throw Error('Use `useServer` in <server>');
9
+ useThrow('Use <{type}> in <server>');
8
10
  }
9
11
  return server;
10
12
  }
@@ -3,12 +3,14 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsx = require('@innet/jsx');
6
+ require('../useThrow/index.js');
7
+ var useThrow = require('../useThrow/useThrow.js');
6
8
 
7
9
  const serverContext = new jsx.Context();
8
10
  function useServer() {
9
11
  const server = jsx.useContext(serverContext);
10
12
  if (!server) {
11
- throw Error('Use `useServer` in <server>');
13
+ useThrow.useThrow('Use <{type}> in <server>');
12
14
  }
13
15
  return server;
14
16
  }
@@ -0,0 +1 @@
1
+ export * from './useServerPlugin';
@@ -0,0 +1 @@
1
+ export { useServerPlugin } from './useServerPlugin.es6.js';
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var useServerPlugin = require('./useServerPlugin.js');
6
+
7
+
8
+
9
+ exports.useServerPlugin = useServerPlugin.useServerPlugin;
@@ -0,0 +1,2 @@
1
+ import { type ServerPlugin } from '../useServer';
2
+ export declare function useServerPlugin(listener: ServerPlugin): void;
@@ -0,0 +1,13 @@
1
+ import { onDestroy } from 'watch-state';
2
+ import '../useServerPlugins/index.es6.js';
3
+ import { useServerPlugins } from '../useServerPlugins/useServerPlugins.es6.js';
4
+
5
+ function useServerPlugin(listener) {
6
+ const requests = useServerPlugins();
7
+ requests.add(listener);
8
+ onDestroy(() => {
9
+ requests.delete(listener);
10
+ });
11
+ }
12
+
13
+ export { useServerPlugin };
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var watchState = require('watch-state');
6
+ require('../useServerPlugins/index.js');
7
+ var useServerPlugins = require('../useServerPlugins/useServerPlugins.js');
8
+
9
+ function useServerPlugin(listener) {
10
+ const requests = useServerPlugins.useServerPlugins();
11
+ requests.add(listener);
12
+ watchState.onDestroy(() => {
13
+ requests.delete(listener);
14
+ });
15
+ }
16
+
17
+ exports.useServerPlugin = useServerPlugin;
@@ -0,0 +1 @@
1
+ export * from './useServerPlugins';
@@ -0,0 +1 @@
1
+ export { serverPlugins, useServerPlugins } from './useServerPlugins.es6.js';
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var useServerPlugins = require('./useServerPlugins.js');
6
+
7
+
8
+
9
+ exports.serverPlugins = useServerPlugins.serverPlugins;
10
+ exports.useServerPlugins = useServerPlugins.useServerPlugins;
@@ -0,0 +1,4 @@
1
+ import { Context } from '@innet/jsx';
2
+ import { type ServerPlugin } from '../useServer';
3
+ export declare const serverPlugins: Context<Set<ServerPlugin>, Set<ServerPlugin> | undefined>;
4
+ export declare function useServerPlugins(): Set<ServerPlugin>;
@@ -0,0 +1,14 @@
1
+ import { Context, useContext } from '@innet/jsx';
2
+ import '../useThrow/index.es6.js';
3
+ import { useThrow } from '../useThrow/useThrow.es6.js';
4
+
5
+ const serverPlugins = new Context();
6
+ function useServerPlugins() {
7
+ const plugins = useContext(serverPlugins);
8
+ if (!plugins) {
9
+ useThrow('Use <{type}> in <server>');
10
+ }
11
+ return plugins;
12
+ }
13
+
14
+ export { serverPlugins, useServerPlugins };
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsx = require('@innet/jsx');
6
+ require('../useThrow/index.js');
7
+ var useThrow = require('../useThrow/useThrow.js');
8
+
9
+ const serverPlugins = new jsx.Context();
10
+ function useServerPlugins() {
11
+ const plugins = jsx.useContext(serverPlugins);
12
+ if (!plugins) {
13
+ useThrow.useThrow('Use <{type}> in <server>');
14
+ }
15
+ return plugins;
16
+ }
17
+
18
+ exports.serverPlugins = serverPlugins;
19
+ exports.useServerPlugins = useServerPlugins;
package/index.es6.js CHANGED
@@ -12,11 +12,11 @@ export { host } from './plugins/main/host/host.es6.js';
12
12
  export { variable } from './plugins/main/variable/variable.es6.js';
13
13
  export { tag } from './plugins/main/tag/tag.es6.js';
14
14
  export { endpoint } from './plugins/main/endpoint/endpoint.es6.js';
15
- export { response } from './plugins/main/response/response.es6.js';
15
+ export { response, statuses } from './plugins/main/response/response.es6.js';
16
16
  export { request } from './plugins/main/request/request.es6.js';
17
17
  export { param } from './plugins/main/param/param.es6.js';
18
18
  export { body } from './plugins/main/body/body.es6.js';
19
- export { fallback } from './plugins/main/fallback/fallback.es6.js';
19
+ export { preset } from './plugins/main/preset/preset.es6.js';
20
20
  export { object } from './plugins/schema/object/object.es6.js';
21
21
  export { field } from './plugins/schema/field/field.es6.js';
22
22
  export { number } from './plugins/schema/number/number.es6.js';
@@ -29,6 +29,7 @@ export { date } from './plugins/schema/date/date.es6.js';
29
29
  export { tuple } from './plugins/schema/tuple/tuple.es6.js';
30
30
  export { uuid } from './plugins/schema/uuid/uuid.es6.js';
31
31
  export { binary } from './plugins/schema/binary/binary.es6.js';
32
+ export { any } from './plugins/schema/any/any.es6.js';
32
33
  export { success, successStatuses } from './plugins/request/success/success.es6.js';
33
34
  export { error, errorStatuses } from './plugins/request/error/error.es6.js';
34
35
  export { proxy } from './plugins/request/proxy/proxy.es6.js';
@@ -41,6 +42,9 @@ export { swagger } from './plugins/utils/swagger/swagger.es6.js';
41
42
  export { dts } from './plugins/utils/dts/dts.es6.js';
42
43
  export { dev } from './plugins/utils/dev/dev.es6.js';
43
44
  export { prod } from './plugins/utils/prod/prod.es6.js';
45
+ export { protection } from './plugins/utils/protection/protection.es6.js';
46
+ export { blacklist } from './plugins/utils/blacklist/blacklist.es6.js';
47
+ export { whitelist } from './plugins/utils/whitelist/whitelist.es6.js';
44
48
  export { serverFn } from './plugins/handler/serverFn/serverFn.es6.js';
45
49
  export { EMPTY_SEARCH, parseSearch } from './utils/parseSearch/parseSearch.es6.js';
46
50
  export { stringifySearch } from './utils/stringifySearch/stringifySearch.es6.js';
@@ -74,13 +78,13 @@ export { minLength } from './utils/rules/minLength/minLength.es6.js';
74
78
  export { max } from './utils/rules/max/max.es6.js';
75
79
  export { min } from './utils/rules/min/min.es6.js';
76
80
  export { defaultTo } from './utils/rules/defaultTo/defaultTo.es6.js';
77
- export { any } from './utils/rules/any/any.es6.js';
78
81
  export { bin } from './utils/rules/bin/bin.es6.js';
79
82
  export { minBin } from './utils/rules/minBin/minBin.es6.js';
80
83
  export { maxBin } from './utils/rules/maxBin/maxBin.es6.js';
81
84
  export { binaryAccept } from './utils/rules/binaryAccept/binaryAccept.es6.js';
82
85
  export { JSONString } from './utils/JSONString/JSONString.es6.js';
83
86
  export { Bin } from './utils/FileData/Bin.es6.js';
87
+ export { generateSchemaTypes, generateTypes } from './utils/generateTypes/generateTypes.es6.js';
84
88
  export { serverContext, useServer } from './hooks/useServer/useServer.es6.js';
85
89
  export { apiContext, useApi } from './hooks/useApi/useApi.es6.js';
86
90
  export { hostContext, useHost } from './hooks/useHost/useHost.es6.js';
@@ -90,8 +94,8 @@ export { useOneElementError } from './hooks/useOneElementError/useOneElementErro
90
94
  export { schemaContext, useSchemaContext } from './hooks/useSchemaContext/useSchemaContext.es6.js';
91
95
  export { useSchemaType } from './hooks/useSchemaType/useSchemaType.es6.js';
92
96
  export { useNewSchema } from './hooks/useNewSchema/useNewSchema.es6.js';
93
- export { requestContext, useRequest } from './hooks/useRequest/useRequest.es6.js';
94
- export { responseContext, useResponse } from './hooks/useResponse/useResponse.es6.js';
97
+ export { useRequest } from './hooks/useRequest/useRequest.es6.js';
98
+ export { useResponse } from './hooks/useResponse/useResponse.es6.js';
95
99
  export { paramsContext, useParams } from './hooks/useParams/useParams.es6.js';
96
100
  export { useBody } from './hooks/useBody/useBody.es6.js';
97
101
  export { useSearch } from './hooks/useSearch/useSearch.es6.js';
@@ -106,3 +110,7 @@ export { ruleContext, useRule, useSetRule } from './hooks/useRule/useRule.es6.js
106
110
  export { objectRuleContext, useObjectRule } from './hooks/useObjectRule/useObjectRule.es6.js';
107
111
  export { bodyFileContext, useBodyFile } from './hooks/useBodyFile/useBodyFile.es6.js';
108
112
  export { usePath } from './hooks/usePath/usePath.es6.js';
113
+ export { useServerPlugin } from './hooks/useServerPlugin/useServerPlugin.es6.js';
114
+ export { useClientIp } from './hooks/useClientIp/useClientIp.es6.js';
115
+ export { serverPlugins, useServerPlugins } from './hooks/useServerPlugins/useServerPlugins.es6.js';
116
+ export { objectSchemaContext, useObjectSchemaContext } from './hooks/useObjectSchemaContext/useObjectSchemaContext.es6.js';
package/index.js CHANGED
@@ -20,7 +20,7 @@ var response = require('./plugins/main/response/response.js');
20
20
  var request = require('./plugins/main/request/request.js');
21
21
  var param = require('./plugins/main/param/param.js');
22
22
  var body = require('./plugins/main/body/body.js');
23
- var fallback = require('./plugins/main/fallback/fallback.js');
23
+ var preset = require('./plugins/main/preset/preset.js');
24
24
  var object = require('./plugins/schema/object/object.js');
25
25
  var field = require('./plugins/schema/field/field.js');
26
26
  var number = require('./plugins/schema/number/number.js');
@@ -33,6 +33,7 @@ var date = require('./plugins/schema/date/date.js');
33
33
  var tuple = require('./plugins/schema/tuple/tuple.js');
34
34
  var uuid = require('./plugins/schema/uuid/uuid.js');
35
35
  var binary = require('./plugins/schema/binary/binary.js');
36
+ var any = require('./plugins/schema/any/any.js');
36
37
  var success = require('./plugins/request/success/success.js');
37
38
  var error = require('./plugins/request/error/error.js');
38
39
  var proxy = require('./plugins/request/proxy/proxy.js');
@@ -45,6 +46,9 @@ var swagger = require('./plugins/utils/swagger/swagger.js');
45
46
  var dts = require('./plugins/utils/dts/dts.js');
46
47
  var dev = require('./plugins/utils/dev/dev.js');
47
48
  var prod = require('./plugins/utils/prod/prod.js');
49
+ var protection = require('./plugins/utils/protection/protection.js');
50
+ var blacklist = require('./plugins/utils/blacklist/blacklist.js');
51
+ var whitelist = require('./plugins/utils/whitelist/whitelist.js');
48
52
  var serverFn = require('./plugins/handler/serverFn/serverFn.js');
49
53
  var parseSearch = require('./utils/parseSearch/parseSearch.js');
50
54
  var stringifySearch = require('./utils/stringifySearch/stringifySearch.js');
@@ -78,13 +82,13 @@ var minLength = require('./utils/rules/minLength/minLength.js');
78
82
  var max = require('./utils/rules/max/max.js');
79
83
  var min = require('./utils/rules/min/min.js');
80
84
  var defaultTo = require('./utils/rules/defaultTo/defaultTo.js');
81
- var any = require('./utils/rules/any/any.js');
82
85
  var bin = require('./utils/rules/bin/bin.js');
83
86
  var minBin = require('./utils/rules/minBin/minBin.js');
84
87
  var maxBin = require('./utils/rules/maxBin/maxBin.js');
85
88
  var binaryAccept = require('./utils/rules/binaryAccept/binaryAccept.js');
86
89
  var JSONString = require('./utils/JSONString/JSONString.js');
87
90
  var Bin = require('./utils/FileData/Bin.js');
91
+ var generateTypes = require('./utils/generateTypes/generateTypes.js');
88
92
  var useServer = require('./hooks/useServer/useServer.js');
89
93
  var useApi = require('./hooks/useApi/useApi.js');
90
94
  var useHost = require('./hooks/useHost/useHost.js');
@@ -110,6 +114,10 @@ var useRule = require('./hooks/useRule/useRule.js');
110
114
  var useObjectRule = require('./hooks/useObjectRule/useObjectRule.js');
111
115
  var useBodyFile = require('./hooks/useBodyFile/useBodyFile.js');
112
116
  var usePath = require('./hooks/usePath/usePath.js');
117
+ var useServerPlugin = require('./hooks/useServerPlugin/useServerPlugin.js');
118
+ var useClientIp = require('./hooks/useClientIp/useClientIp.js');
119
+ var useServerPlugins = require('./hooks/useServerPlugins/useServerPlugins.js');
120
+ var useObjectSchemaContext = require('./hooks/useObjectSchemaContext/useObjectSchemaContext.js');
113
121
 
114
122
 
115
123
 
@@ -129,10 +137,11 @@ exports.variable = variable.variable;
129
137
  exports.tag = tag.tag;
130
138
  exports.endpoint = endpoint.endpoint;
131
139
  exports.response = response.response;
140
+ exports.statuses = response.statuses;
132
141
  exports.request = request.request;
133
142
  exports.param = param.param;
134
143
  exports.body = body.body;
135
- exports.fallback = fallback.fallback;
144
+ exports.preset = preset.preset;
136
145
  exports.object = object.object;
137
146
  exports.field = field.field;
138
147
  exports.number = number.number;
@@ -145,6 +154,7 @@ exports.date = date.date;
145
154
  exports.tuple = tuple.tuple;
146
155
  exports.uuid = uuid.uuid;
147
156
  exports.binary = binary.binary;
157
+ exports.any = any.any;
148
158
  exports.success = success.success;
149
159
  exports.successStatuses = success.successStatuses;
150
160
  exports.error = error.error;
@@ -160,6 +170,9 @@ exports.swagger = swagger.swagger;
160
170
  exports.dts = dts.dts;
161
171
  exports.dev = dev.dev;
162
172
  exports.prod = prod.prod;
173
+ exports.protection = protection.protection;
174
+ exports.blacklist = blacklist.blacklist;
175
+ exports.whitelist = whitelist.whitelist;
163
176
  exports.serverFn = serverFn.serverFn;
164
177
  exports.EMPTY_SEARCH = parseSearch.EMPTY_SEARCH;
165
178
  exports.parseSearch = parseSearch.parseSearch;
@@ -196,13 +209,14 @@ exports.minLength = minLength.minLength;
196
209
  exports.max = max.max;
197
210
  exports.min = min.min;
198
211
  exports.defaultTo = defaultTo.defaultTo;
199
- exports.any = any.any;
200
212
  exports.bin = bin.bin;
201
213
  exports.minBin = minBin.minBin;
202
214
  exports.maxBin = maxBin.maxBin;
203
215
  exports.binaryAccept = binaryAccept.binaryAccept;
204
216
  exports.JSONString = JSONString.JSONString;
205
217
  exports.Bin = Bin.Bin;
218
+ exports.generateSchemaTypes = generateTypes.generateSchemaTypes;
219
+ exports.generateTypes = generateTypes.generateTypes;
206
220
  exports.serverContext = useServer.serverContext;
207
221
  exports.useServer = useServer.useServer;
208
222
  exports.apiContext = useApi.apiContext;
@@ -217,9 +231,7 @@ exports.schemaContext = useSchemaContext.schemaContext;
217
231
  exports.useSchemaContext = useSchemaContext.useSchemaContext;
218
232
  exports.useSchemaType = useSchemaType.useSchemaType;
219
233
  exports.useNewSchema = useNewSchema.useNewSchema;
220
- exports.requestContext = useRequest.requestContext;
221
234
  exports.useRequest = useRequest.useRequest;
222
- exports.responseContext = useResponse.responseContext;
223
235
  exports.useResponse = useResponse.useResponse;
224
236
  exports.paramsContext = useParams.paramsContext;
225
237
  exports.useParams = useParams.useParams;
@@ -243,3 +255,9 @@ exports.useObjectRule = useObjectRule.useObjectRule;
243
255
  exports.bodyFileContext = useBodyFile.bodyFileContext;
244
256
  exports.useBodyFile = useBodyFile.useBodyFile;
245
257
  exports.usePath = usePath.usePath;
258
+ exports.useServerPlugin = useServerPlugin.useServerPlugin;
259
+ exports.useClientIp = useClientIp.useClientIp;
260
+ exports.serverPlugins = useServerPlugins.serverPlugins;
261
+ exports.useServerPlugins = useServerPlugins.useServerPlugins;
262
+ exports.objectSchemaContext = useObjectSchemaContext.objectSchemaContext;
263
+ exports.useObjectSchemaContext = useObjectSchemaContext.useObjectSchemaContext;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@innet/server",
3
- "version": "2.0.0-alpha.2",
3
+ "version": "2.0.0-alpha.20",
4
4
  "description": "Create server-side application with innet",
5
5
  "main": "index.js",
6
6
  "module": "index.es6.js",
@@ -42,7 +42,6 @@
42
42
  "@types/multiparty": "^0.0.33",
43
43
  "@types/qs": "^6.9.7",
44
44
  "cookie": "^0.5.0",
45
- "dtsgenerator": "^3.18.0",
46
45
  "http-proxy": "^1.18.1",
47
46
  "innet": "^2.0.0-alpha.3",
48
47
  "is-invalid-path": "^1.0.2",
@@ -50,6 +49,7 @@
50
49
  "multiparty": "^4.2.3",
51
50
  "openapi-types": "^12.1.3",
52
51
  "qs": "^6.11.2",
52
+ "request-ip": "^3.3.0",
53
53
  "string_decoder": "^1.3.0",
54
54
  "tslib": "^2.6.1",
55
55
  "uuid": "^9.0.0",
@@ -18,5 +18,7 @@ export interface ApiProps {
18
18
  termsOfService?: string;
19
19
  /** URL path prefix scopes the API. */
20
20
  prefix?: string;
21
+ include?: RegExp;
22
+ exclude?: RegExp;
21
23
  }
22
24
  export declare const api: HandlerPlugin;
@@ -1,52 +1,58 @@
1
1
  import { __rest, __awaiter } from 'tslib';
2
2
  import innet, { useNewHandler, useApp } from 'innet';
3
- import { onDestroy } from 'watch-state';
4
3
  import '../../../hooks/index.es6.js';
5
4
  import '../../../utils/index.es6.js';
6
5
  import '../../../utils/rules/index.es6.js';
7
- import { useServer } from '../../../hooks/useServer/useServer.es6.js';
6
+ import { serverPlugins } from '../../../hooks/useServerPlugins/useServerPlugins.es6.js';
8
7
  import { apiContext } from '../../../hooks/useApi/useApi.es6.js';
9
- import { Action } from '../../../utils/action/Action.es6.js';
8
+ import { useServerPlugin } from '../../../hooks/useServerPlugin/useServerPlugin.es6.js';
9
+ import { useAction, actionContext } from '../../../hooks/useAction/useAction.es6.js';
10
10
  import { JSONString } from '../../../utils/JSONString/JSONString.es6.js';
11
11
  import { RulesError } from '../../../utils/rules/helpers.es6.js';
12
- import { responseContext } from '../../../hooks/useResponse/useResponse.es6.js';
13
- import { requestContext } from '../../../hooks/useRequest/useRequest.es6.js';
14
12
  import { paramsContext } from '../../../hooks/useParams/useParams.es6.js';
15
- import { actionContext } from '../../../hooks/useAction/useAction.es6.js';
16
13
 
17
14
  const api = () => {
18
- var _a;
19
15
  const handler = useNewHandler();
20
16
  const { props = {}, children } = useApp();
21
- const { server } = useServer();
22
- const { prefix = '', title = '' } = props, rest = __rest(props, ["prefix", "title"]);
23
- const info = Object.assign(Object.assign({}, rest), { version: (_a = rest.version) !== null && _a !== void 0 ? _a : '0.0.0', title });
17
+ const { prefix = '', title = '', include, exclude, version = process.env.INNET_API_VERSION || '0.0.0' } = props, rest = __rest(props, ["prefix", "title", "include", "exclude", "version"]);
18
+ const info = Object.assign(Object.assign({}, rest), { version, title });
24
19
  const endpoints = {};
25
20
  const docs = {
26
21
  openapi: '3.1.0',
27
22
  info,
28
23
  paths: {},
29
24
  };
30
- const requestPlugins = new Set();
31
- const context = { docs, endpoints, prefix, requestPlugins, refRules: {} };
25
+ const plugins = new Set();
26
+ const context = { docs, endpoints, prefix, refRules: {} };
27
+ const condition = (action) => {
28
+ const path = action.parsedUrl.path;
29
+ const url = path.endsWith('/') ? path.slice(0, -1) : path;
30
+ if (!url.startsWith(prefix) || (exclude === null || exclude === void 0 ? void 0 : exclude.test(url))) {
31
+ return false;
32
+ }
33
+ if (include && !include.test(url)) {
34
+ return false;
35
+ }
36
+ return true;
37
+ };
38
+ serverPlugins.set(handler, plugins);
32
39
  apiContext.set(handler, context);
33
- const listener = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
34
- var _b, _c, _d, _e, _f, _g;
35
- if (res.writableEnded)
40
+ useServerPlugin(() => __awaiter(void 0, void 0, void 0, function* () {
41
+ var _a, _b, _c, _d, _e, _f;
42
+ const action = useAction();
43
+ if (!condition(action))
36
44
  return;
37
- const action = new Action(req);
45
+ const actionHandler = useNewHandler();
38
46
  const path = action.parsedUrl.path;
39
47
  const url = path.endsWith('/') ? path.slice(0, -1) : path;
48
+ const { req, res } = action;
40
49
  if (url === (prefix || '')) {
41
50
  res.setHeader('Content-Type', 'application/json');
42
51
  res.write(JSONString(docs));
43
52
  res.end();
44
- return;
45
- }
46
- if (!url.startsWith(prefix)) {
47
- return;
53
+ return null;
48
54
  }
49
- const method = ((_c = (_b = req.method) === null || _b === void 0 ? void 0 : _b.toLowerCase()) !== null && _c !== void 0 ? _c : 'get');
55
+ const method = ((_b = (_a = req.method) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : 'get');
50
56
  const rawSplitPath = url.slice(prefix.length).split('/').slice(1);
51
57
  const splitPath = rawSplitPath.at(-1) ? rawSplitPath : rawSplitPath.slice(0, -1);
52
58
  const endpoint = endpoints[method];
@@ -120,32 +126,34 @@ const api = () => {
120
126
  if (checkActionRules(bodyRules, 'body'))
121
127
  return true;
122
128
  }
123
- const newHandler = Object.create(runEndpoint.handler);
124
- responseContext.set(newHandler, res);
125
- requestContext.set(newHandler, req);
126
- paramsContext.set(newHandler, params);
127
- actionContext.set(newHandler, action);
128
- innet(runEndpoint.content, newHandler);
129
+ paramsContext.set(actionHandler, params);
130
+ for (const plugin of runEndpoint.plugins) {
131
+ const result = yield plugin();
132
+ if (result === undefined)
133
+ continue;
134
+ innet(result, actionHandler);
135
+ return true;
136
+ }
129
137
  return true;
130
138
  });
131
139
  }
132
- if ((_e = (_d = currentEndpoint.static) === null || _d === void 0 ? void 0 : _d[key]) === null || _e === void 0 ? void 0 : _e.content) {
133
- if (!(yield run((_f = currentEndpoint.static) === null || _f === void 0 ? void 0 : _f[key], params)))
140
+ if ((_d = (_c = currentEndpoint.static) === null || _c === void 0 ? void 0 : _c[key]) === null || _d === void 0 ? void 0 : _d.plugins) {
141
+ if (!(yield run((_e = currentEndpoint.static) === null || _e === void 0 ? void 0 : _e[key], params)))
134
142
  continue;
135
- return;
143
+ return null;
136
144
  }
137
145
  if (currentEndpoint.dynamic) {
138
146
  for (const dynamicEndpoint of currentEndpoint.dynamic) {
139
- if (dynamicEndpoint.content) {
147
+ if (dynamicEndpoint.plugins) {
140
148
  if (!(yield run(dynamicEndpoint, Object.assign(Object.assign({}, params), { [dynamicEndpoint.key.slice(1, -1)]: key }))))
141
149
  continue;
142
- return;
150
+ return null;
143
151
  }
144
152
  }
145
153
  }
146
154
  break;
147
155
  }
148
- if ((_g = currentEndpoint.static) === null || _g === void 0 ? void 0 : _g[key]) {
156
+ if ((_f = currentEndpoint.static) === null || _f === void 0 ? void 0 : _f[key]) {
149
157
  endpointQueue.push([deep + 1, currentEndpoint.static[key], params]);
150
158
  }
151
159
  if (currentEndpoint.dynamic) {
@@ -154,26 +162,16 @@ const api = () => {
154
162
  }
155
163
  }
156
164
  }
157
- for (const requestPlugin of requestPlugins) {
158
- if (requestPlugin(req, res))
159
- return;
160
- }
161
- if (context.fallback) {
162
- const newHandler = Object.create(context.fallback.handler);
163
- responseContext.set(newHandler, res);
164
- requestContext.set(newHandler, req);
165
+ for (const plugin of plugins) {
166
+ const result = yield plugin();
167
+ if (result === undefined)
168
+ continue;
169
+ const newHandler = Object.create(handler);
165
170
  actionContext.set(newHandler, action);
166
- innet(context.fallback.children, newHandler);
167
- }
168
- else {
169
- res.statusCode = 404;
170
- res.end();
171
+ innet(result, newHandler);
172
+ return null;
171
173
  }
172
- });
173
- server.on('request', listener);
174
- onDestroy(() => {
175
- server.off('request', listener);
176
- });
174
+ }));
177
175
  innet(children, handler);
178
176
  };
179
177