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

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 (223) hide show
  1. package/README.md +1114 -404
  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 +13 -7
  27. package/handler/handler.es6.js +12 -6
  28. package/handler/handler.js +12 -6
  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 +14 -7
  79. package/index.js +26 -10
  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/plugins/{utils/prod → main/preset}/index.js +2 -2
  92. package/plugins/main/preset/preset.d.ts +3 -0
  93. package/plugins/main/preset/preset.es6.js +13 -0
  94. package/plugins/{utils/prod/prod.js → main/preset/preset.js} +9 -6
  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/env/env.d.ts +6 -0
  140. package/plugins/utils/env/env.es6.js +11 -0
  141. package/plugins/utils/{dev/dev.js → env/env.js} +4 -3
  142. package/plugins/utils/env/index.d.ts +1 -0
  143. package/plugins/utils/env/index.es6.js +1 -0
  144. package/plugins/utils/{dev → env}/index.js +2 -2
  145. package/plugins/utils/index.d.ts +4 -2
  146. package/plugins/utils/index.es6.js +4 -2
  147. package/plugins/utils/index.js +4 -2
  148. package/plugins/utils/protection/index.d.ts +1 -0
  149. package/plugins/utils/protection/index.es6.js +1 -0
  150. package/plugins/utils/protection/index.js +9 -0
  151. package/plugins/utils/protection/protection.d.ts +8 -0
  152. package/plugins/utils/protection/protection.es6.js +36 -0
  153. package/plugins/utils/protection/protection.js +40 -0
  154. package/plugins/utils/swagger/swagger.es6.js +10 -12
  155. package/plugins/utils/swagger/swagger.js +10 -12
  156. package/plugins/utils/whitelist/index.d.ts +1 -0
  157. package/plugins/utils/whitelist/index.es6.js +1 -0
  158. package/plugins/utils/whitelist/index.js +9 -0
  159. package/plugins/utils/whitelist/whitelist.d.ts +4 -0
  160. package/plugins/utils/whitelist/whitelist.es6.js +20 -0
  161. package/plugins/utils/whitelist/whitelist.js +24 -0
  162. package/types.d.ts +2 -10
  163. package/utils/action/Action.d.ts +7 -4
  164. package/utils/action/Action.es6.js +35 -11
  165. package/utils/action/Action.js +36 -12
  166. package/utils/generateTypes/generateTypes.d.ts +3 -0
  167. package/utils/generateTypes/generateTypes.es6.js +151 -0
  168. package/utils/generateTypes/generateTypes.js +156 -0
  169. package/utils/generateTypes/generateTypes.test.d.ts +1 -0
  170. package/utils/generateTypes/index.d.ts +1 -0
  171. package/utils/generateTypes/index.es6.js +1 -0
  172. package/utils/generateTypes/index.js +10 -0
  173. package/utils/getEndpoint/getEndpoint.es6.js +2 -2
  174. package/utils/getEndpoint/getEndpoint.js +2 -2
  175. package/utils/index.d.ts +1 -0
  176. package/utils/index.es6.js +1 -0
  177. package/utils/index.js +1 -0
  178. package/utils/rules/index.d.ts +0 -1
  179. package/utils/rules/index.es6.js +0 -1
  180. package/utils/rules/index.js +0 -1
  181. package/utils/rules/objectOf/objectOf.d.ts +1 -1
  182. package/utils/rules/objectOf/objectOf.es6.js +15 -2
  183. package/utils/rules/objectOf/objectOf.js +15 -2
  184. package/example/requests/partners/EditPartner/EditPartner.d.ts +0 -1
  185. package/example/requests/partners/EditPartner/index.d.ts +0 -1
  186. package/example/requests/partners/GetPartner/GetPartner.d.ts +0 -1
  187. package/example/requests/partners/GetPartner/index.d.ts +0 -1
  188. package/example/requests/partners/GetPartners/GetPartners.d.ts +0 -1
  189. package/example/requests/partners/GetPartners/index.d.ts +0 -1
  190. package/example/requests/partners/index.d.ts +0 -3
  191. package/example/schemas/address/AddressSchema/AddressSchema.d.ts +0 -1
  192. package/example/schemas/address/AddressSchema/index.d.ts +0 -1
  193. package/example/schemas/address/index.d.ts +0 -1
  194. package/example/schemas/location/LocationSchema/LocationSchema.d.ts +0 -1
  195. package/example/schemas/location/LocationSchema/index.d.ts +0 -1
  196. package/example/schemas/location/index.d.ts +0 -1
  197. package/example/schemas/partner/EditPartnerSchema/EditPartnerSchema.d.ts +0 -1
  198. package/example/schemas/partner/EditPartnerSchema/index.d.ts +0 -1
  199. package/example/schemas/partner/PartnerSchema/PartnerSchema.d.ts +0 -1
  200. package/example/schemas/partner/PartnerSchema/index.d.ts +0 -1
  201. package/example/schemas/partner/index.d.ts +0 -2
  202. package/example/tags/Partner/Partner.d.ts +0 -1
  203. package/example/tags/Partner/index.d.ts +0 -1
  204. package/plugins/main/fallback/fallback.d.ts +0 -4
  205. package/plugins/main/fallback/fallback.es6.js +0 -19
  206. package/plugins/main/fallback/fallback.js +0 -23
  207. package/plugins/main/fallback/index.d.ts +0 -1
  208. package/plugins/main/fallback/index.es6.js +0 -1
  209. package/plugins/main/fallback/index.js +0 -9
  210. package/plugins/utils/dev/dev.d.ts +0 -4
  211. package/plugins/utils/dev/dev.es6.js +0 -10
  212. package/plugins/utils/dev/index.d.ts +0 -1
  213. package/plugins/utils/dev/index.es6.js +0 -1
  214. package/plugins/utils/prod/index.d.ts +0 -1
  215. package/plugins/utils/prod/index.es6.js +0 -1
  216. package/plugins/utils/prod/prod.d.ts +0 -4
  217. package/plugins/utils/prod/prod.es6.js +0 -10
  218. package/utils/rules/any/any.d.ts +0 -1
  219. package/utils/rules/any/any.es6.js +0 -5
  220. package/utils/rules/any/any.js +0 -9
  221. /package/{utils/rules → plugins/schema}/any/index.d.ts +0 -0
  222. /package/{utils/rules → plugins/schema}/any/index.es6.js +0 -0
  223. /package/{utils/rules → plugins/schema}/any/index.js +0 -0
@@ -1,8 +1,8 @@
1
- import { Context, useContext } from '@innet/jsx';
1
+ import '../useAction/index.es6.js';
2
+ import { useAction } from '../useAction/useAction.es6.js';
2
3
 
3
- const responseContext = new Context();
4
4
  function useResponse() {
5
- return useContext(responseContext);
5
+ return useAction().res;
6
6
  }
7
7
 
8
- export { responseContext, useResponse };
8
+ export { useResponse };
@@ -2,12 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var jsx = require('@innet/jsx');
5
+ require('../useAction/index.js');
6
+ var useAction = require('../useAction/useAction.js');
6
7
 
7
- const responseContext = new jsx.Context();
8
8
  function useResponse() {
9
- return jsx.useContext(responseContext);
9
+ return useAction.useAction().res;
10
10
  }
11
11
 
12
- exports.responseContext = responseContext;
13
12
  exports.useResponse = useResponse;
@@ -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';
@@ -39,8 +40,10 @@ export { file } from './plugins/request/file/file.es6.js';
39
40
  export { cms } from './plugins/request/cms/cms.es6.js';
40
41
  export { swagger } from './plugins/utils/swagger/swagger.es6.js';
41
42
  export { dts } from './plugins/utils/dts/dts.es6.js';
42
- export { dev } from './plugins/utils/dev/dev.es6.js';
43
- export { prod } from './plugins/utils/prod/prod.es6.js';
43
+ export { env } from './plugins/utils/env/env.es6.js';
44
+ export { protection } from './plugins/utils/protection/protection.es6.js';
45
+ export { blacklist } from './plugins/utils/blacklist/blacklist.es6.js';
46
+ export { whitelist } from './plugins/utils/whitelist/whitelist.es6.js';
44
47
  export { serverFn } from './plugins/handler/serverFn/serverFn.es6.js';
45
48
  export { EMPTY_SEARCH, parseSearch } from './utils/parseSearch/parseSearch.es6.js';
46
49
  export { stringifySearch } from './utils/stringifySearch/stringifySearch.es6.js';
@@ -74,13 +77,13 @@ export { minLength } from './utils/rules/minLength/minLength.es6.js';
74
77
  export { max } from './utils/rules/max/max.es6.js';
75
78
  export { min } from './utils/rules/min/min.es6.js';
76
79
  export { defaultTo } from './utils/rules/defaultTo/defaultTo.es6.js';
77
- export { any } from './utils/rules/any/any.es6.js';
78
80
  export { bin } from './utils/rules/bin/bin.es6.js';
79
81
  export { minBin } from './utils/rules/minBin/minBin.es6.js';
80
82
  export { maxBin } from './utils/rules/maxBin/maxBin.es6.js';
81
83
  export { binaryAccept } from './utils/rules/binaryAccept/binaryAccept.es6.js';
82
84
  export { JSONString } from './utils/JSONString/JSONString.es6.js';
83
85
  export { Bin } from './utils/FileData/Bin.es6.js';
86
+ export { generateSchemaTypes, generateTypes } from './utils/generateTypes/generateTypes.es6.js';
84
87
  export { serverContext, useServer } from './hooks/useServer/useServer.es6.js';
85
88
  export { apiContext, useApi } from './hooks/useApi/useApi.es6.js';
86
89
  export { hostContext, useHost } from './hooks/useHost/useHost.es6.js';
@@ -90,8 +93,8 @@ export { useOneElementError } from './hooks/useOneElementError/useOneElementErro
90
93
  export { schemaContext, useSchemaContext } from './hooks/useSchemaContext/useSchemaContext.es6.js';
91
94
  export { useSchemaType } from './hooks/useSchemaType/useSchemaType.es6.js';
92
95
  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';
96
+ export { useRequest } from './hooks/useRequest/useRequest.es6.js';
97
+ export { useResponse } from './hooks/useResponse/useResponse.es6.js';
95
98
  export { paramsContext, useParams } from './hooks/useParams/useParams.es6.js';
96
99
  export { useBody } from './hooks/useBody/useBody.es6.js';
97
100
  export { useSearch } from './hooks/useSearch/useSearch.es6.js';
@@ -106,3 +109,7 @@ export { ruleContext, useRule, useSetRule } from './hooks/useRule/useRule.es6.js
106
109
  export { objectRuleContext, useObjectRule } from './hooks/useObjectRule/useObjectRule.es6.js';
107
110
  export { bodyFileContext, useBodyFile } from './hooks/useBodyFile/useBodyFile.es6.js';
108
111
  export { usePath } from './hooks/usePath/usePath.es6.js';
112
+ export { useServerPlugin } from './hooks/useServerPlugin/useServerPlugin.es6.js';
113
+ export { useClientIp } from './hooks/useClientIp/useClientIp.es6.js';
114
+ export { serverPlugins, useServerPlugins } from './hooks/useServerPlugins/useServerPlugins.es6.js';
115
+ 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');
@@ -43,8 +44,10 @@ var file = require('./plugins/request/file/file.js');
43
44
  var cms = require('./plugins/request/cms/cms.js');
44
45
  var swagger = require('./plugins/utils/swagger/swagger.js');
45
46
  var dts = require('./plugins/utils/dts/dts.js');
46
- var dev = require('./plugins/utils/dev/dev.js');
47
- var prod = require('./plugins/utils/prod/prod.js');
47
+ var env = require('./plugins/utils/env/env.js');
48
+ var protection = require('./plugins/utils/protection/protection.js');
49
+ var blacklist = require('./plugins/utils/blacklist/blacklist.js');
50
+ var whitelist = require('./plugins/utils/whitelist/whitelist.js');
48
51
  var serverFn = require('./plugins/handler/serverFn/serverFn.js');
49
52
  var parseSearch = require('./utils/parseSearch/parseSearch.js');
50
53
  var stringifySearch = require('./utils/stringifySearch/stringifySearch.js');
@@ -78,13 +81,13 @@ var minLength = require('./utils/rules/minLength/minLength.js');
78
81
  var max = require('./utils/rules/max/max.js');
79
82
  var min = require('./utils/rules/min/min.js');
80
83
  var defaultTo = require('./utils/rules/defaultTo/defaultTo.js');
81
- var any = require('./utils/rules/any/any.js');
82
84
  var bin = require('./utils/rules/bin/bin.js');
83
85
  var minBin = require('./utils/rules/minBin/minBin.js');
84
86
  var maxBin = require('./utils/rules/maxBin/maxBin.js');
85
87
  var binaryAccept = require('./utils/rules/binaryAccept/binaryAccept.js');
86
88
  var JSONString = require('./utils/JSONString/JSONString.js');
87
89
  var Bin = require('./utils/FileData/Bin.js');
90
+ var generateTypes = require('./utils/generateTypes/generateTypes.js');
88
91
  var useServer = require('./hooks/useServer/useServer.js');
89
92
  var useApi = require('./hooks/useApi/useApi.js');
90
93
  var useHost = require('./hooks/useHost/useHost.js');
@@ -110,6 +113,10 @@ var useRule = require('./hooks/useRule/useRule.js');
110
113
  var useObjectRule = require('./hooks/useObjectRule/useObjectRule.js');
111
114
  var useBodyFile = require('./hooks/useBodyFile/useBodyFile.js');
112
115
  var usePath = require('./hooks/usePath/usePath.js');
116
+ var useServerPlugin = require('./hooks/useServerPlugin/useServerPlugin.js');
117
+ var useClientIp = require('./hooks/useClientIp/useClientIp.js');
118
+ var useServerPlugins = require('./hooks/useServerPlugins/useServerPlugins.js');
119
+ var useObjectSchemaContext = require('./hooks/useObjectSchemaContext/useObjectSchemaContext.js');
113
120
 
114
121
 
115
122
 
@@ -129,10 +136,11 @@ exports.variable = variable.variable;
129
136
  exports.tag = tag.tag;
130
137
  exports.endpoint = endpoint.endpoint;
131
138
  exports.response = response.response;
139
+ exports.statuses = response.statuses;
132
140
  exports.request = request.request;
133
141
  exports.param = param.param;
134
142
  exports.body = body.body;
135
- exports.fallback = fallback.fallback;
143
+ exports.preset = preset.preset;
136
144
  exports.object = object.object;
137
145
  exports.field = field.field;
138
146
  exports.number = number.number;
@@ -145,6 +153,7 @@ exports.date = date.date;
145
153
  exports.tuple = tuple.tuple;
146
154
  exports.uuid = uuid.uuid;
147
155
  exports.binary = binary.binary;
156
+ exports.any = any.any;
148
157
  exports.success = success.success;
149
158
  exports.successStatuses = success.successStatuses;
150
159
  exports.error = error.error;
@@ -158,8 +167,10 @@ exports.file = file.file;
158
167
  exports.cms = cms.cms;
159
168
  exports.swagger = swagger.swagger;
160
169
  exports.dts = dts.dts;
161
- exports.dev = dev.dev;
162
- exports.prod = prod.prod;
170
+ exports.env = env.env;
171
+ exports.protection = protection.protection;
172
+ exports.blacklist = blacklist.blacklist;
173
+ exports.whitelist = whitelist.whitelist;
163
174
  exports.serverFn = serverFn.serverFn;
164
175
  exports.EMPTY_SEARCH = parseSearch.EMPTY_SEARCH;
165
176
  exports.parseSearch = parseSearch.parseSearch;
@@ -196,13 +207,14 @@ exports.minLength = minLength.minLength;
196
207
  exports.max = max.max;
197
208
  exports.min = min.min;
198
209
  exports.defaultTo = defaultTo.defaultTo;
199
- exports.any = any.any;
200
210
  exports.bin = bin.bin;
201
211
  exports.minBin = minBin.minBin;
202
212
  exports.maxBin = maxBin.maxBin;
203
213
  exports.binaryAccept = binaryAccept.binaryAccept;
204
214
  exports.JSONString = JSONString.JSONString;
205
215
  exports.Bin = Bin.Bin;
216
+ exports.generateSchemaTypes = generateTypes.generateSchemaTypes;
217
+ exports.generateTypes = generateTypes.generateTypes;
206
218
  exports.serverContext = useServer.serverContext;
207
219
  exports.useServer = useServer.useServer;
208
220
  exports.apiContext = useApi.apiContext;
@@ -217,9 +229,7 @@ exports.schemaContext = useSchemaContext.schemaContext;
217
229
  exports.useSchemaContext = useSchemaContext.useSchemaContext;
218
230
  exports.useSchemaType = useSchemaType.useSchemaType;
219
231
  exports.useNewSchema = useNewSchema.useNewSchema;
220
- exports.requestContext = useRequest.requestContext;
221
232
  exports.useRequest = useRequest.useRequest;
222
- exports.responseContext = useResponse.responseContext;
223
233
  exports.useResponse = useResponse.useResponse;
224
234
  exports.paramsContext = useParams.paramsContext;
225
235
  exports.useParams = useParams.useParams;
@@ -243,3 +253,9 @@ exports.useObjectRule = useObjectRule.useObjectRule;
243
253
  exports.bodyFileContext = useBodyFile.bodyFileContext;
244
254
  exports.useBodyFile = useBodyFile.useBodyFile;
245
255
  exports.usePath = usePath.usePath;
256
+ exports.useServerPlugin = useServerPlugin.useServerPlugin;
257
+ exports.useClientIp = useClientIp.useClientIp;
258
+ exports.serverPlugins = useServerPlugins.serverPlugins;
259
+ exports.useServerPlugins = useServerPlugins.useServerPlugins;
260
+ exports.objectSchemaContext = useObjectSchemaContext.objectSchemaContext;
261
+ 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.21",
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