@innet/server 2.0.0-alpha.8 → 2.0.0-beta.1

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 (322) hide show
  1. package/README.md +1200 -440
  2. package/_virtual/_rollup-plugin-process-env.es6.js +10 -0
  3. package/_virtual/_rollup-plugin-process-env.js +12 -0
  4. package/handler/handler.d.ts +27 -14
  5. package/handler/handler.es6.js +17 -11
  6. package/handler/handler.js +17 -11
  7. package/hooks/index.d.ts +6 -1
  8. package/hooks/index.es6.js +6 -1
  9. package/hooks/index.js +6 -1
  10. package/hooks/useAction/useAction.es6.js +1 -1
  11. package/hooks/useAction/useAction.js +1 -1
  12. package/hooks/useApi/useApi.d.ts +1 -3
  13. package/hooks/useClientIp/useClientIp.d.ts +1 -1
  14. package/hooks/useClientIp/useClientIp.es6.js +4 -10
  15. package/hooks/useClientIp/useClientIp.js +4 -10
  16. package/hooks/useEndpoint/useEndpoint.d.ts +1 -1
  17. package/hooks/useEndpoint/useEndpoint.es6.js +3 -1
  18. package/hooks/useEndpoint/useEndpoint.js +3 -1
  19. package/hooks/useIsServerHttps/index.d.ts +1 -0
  20. package/hooks/useIsServerHttps/index.es6.js +1 -0
  21. package/hooks/useIsServerHttps/index.js +10 -0
  22. package/hooks/useIsServerHttps/useIsServerHttps.d.ts +3 -0
  23. package/hooks/useIsServerHttps/useIsServerHttps.es6.js +14 -0
  24. package/hooks/useIsServerHttps/useIsServerHttps.js +19 -0
  25. package/hooks/useNewSchema/useNewSchema.es6.js +1 -1
  26. package/hooks/useNewSchema/useNewSchema.js +1 -1
  27. package/hooks/useObjectSchemaContext/index.d.ts +1 -0
  28. package/hooks/useObjectSchemaContext/index.es6.js +1 -0
  29. package/hooks/useObjectSchemaContext/index.js +10 -0
  30. package/hooks/useObjectSchemaContext/useObjectSchemaContext.d.ts +3 -0
  31. package/hooks/useObjectSchemaContext/useObjectSchemaContext.es6.js +14 -0
  32. package/hooks/useObjectSchemaContext/useObjectSchemaContext.js +19 -0
  33. package/hooks/useRequest/index.es6.js +1 -1
  34. package/hooks/useRequest/index.js +0 -1
  35. package/hooks/useRequest/useRequest.d.ts +1 -4
  36. package/hooks/useRequest/useRequest.es6.js +4 -4
  37. package/hooks/useRequest/useRequest.js +3 -4
  38. package/hooks/useRequestHandler/index.d.ts +1 -0
  39. package/hooks/useRequestHandler/index.es6.js +1 -0
  40. package/hooks/useRequestHandler/index.js +10 -0
  41. package/hooks/useRequestHandler/useRequestHandler.d.ts +4 -0
  42. package/hooks/useRequestHandler/useRequestHandler.es6.js +14 -0
  43. package/hooks/useRequestHandler/useRequestHandler.js +19 -0
  44. package/hooks/useResponse/index.es6.js +1 -1
  45. package/hooks/useResponse/index.js +0 -1
  46. package/hooks/useResponse/useResponse.d.ts +1 -4
  47. package/hooks/useResponse/useResponse.es6.js +4 -4
  48. package/hooks/useResponse/useResponse.js +3 -4
  49. package/hooks/useSchemaType/useSchemaType.d.ts +3 -2
  50. package/hooks/useSchemaType/useSchemaType.es6.js +5 -6
  51. package/hooks/useSchemaType/useSchemaType.js +5 -6
  52. package/hooks/useServer/useServer.d.ts +2 -1
  53. package/hooks/useServer/useServer.es6.js +3 -1
  54. package/hooks/useServer/useServer.js +3 -1
  55. package/hooks/useServerPlugin/index.d.ts +1 -0
  56. package/hooks/useServerPlugin/index.es6.js +1 -0
  57. package/hooks/useServerPlugin/index.js +9 -0
  58. package/hooks/useServerPlugin/useServerPlugin.d.ts +2 -0
  59. package/hooks/useServerPlugin/useServerPlugin.es6.js +13 -0
  60. package/hooks/useServerPlugin/useServerPlugin.js +17 -0
  61. package/hooks/useServerPlugins/index.d.ts +1 -0
  62. package/hooks/useServerPlugins/index.es6.js +1 -0
  63. package/hooks/useServerPlugins/index.js +10 -0
  64. package/hooks/useServerPlugins/useServerPlugins.d.ts +4 -0
  65. package/hooks/useServerPlugins/useServerPlugins.es6.js +14 -0
  66. package/hooks/useServerPlugins/useServerPlugins.js +19 -0
  67. package/hooks/useServerPort/index.d.ts +1 -0
  68. package/hooks/useServerPort/index.es6.js +1 -0
  69. package/hooks/useServerPort/index.js +10 -0
  70. package/hooks/useServerPort/useServerPort.d.ts +3 -0
  71. package/hooks/useServerPort/useServerPort.es6.js +14 -0
  72. package/hooks/useServerPort/useServerPort.js +19 -0
  73. package/index.es6.js +17 -9
  74. package/index.js +33 -14
  75. package/package.json +2 -3
  76. package/plugins/main/api/api.d.ts +11 -8
  77. package/plugins/main/api/api.es6.js +55 -56
  78. package/plugins/main/api/api.js +54 -55
  79. package/plugins/main/body/body.d.ts +1 -0
  80. package/plugins/main/contact/contact.d.ts +2 -2
  81. package/plugins/main/endpoint/endpoint.d.ts +16 -15
  82. package/plugins/main/endpoint/endpoint.es6.js +8 -6
  83. package/plugins/main/endpoint/endpoint.js +7 -5
  84. package/plugins/main/host/host.d.ts +5 -5
  85. package/plugins/main/index.d.ts +2 -2
  86. package/plugins/main/index.es6.js +2 -2
  87. package/plugins/main/index.js +2 -2
  88. package/plugins/main/license/license.d.ts +5 -5
  89. package/plugins/main/param/param.d.ts +12 -11
  90. package/plugins/main/param/param.es6.js +6 -6
  91. package/plugins/main/param/param.js +5 -5
  92. package/plugins/main/preset/index.d.ts +1 -0
  93. package/plugins/main/preset/index.es6.js +1 -0
  94. package/plugins/{utils/prod → main/preset}/index.js +2 -2
  95. package/plugins/main/preset/preset.d.ts +3 -0
  96. package/plugins/main/preset/preset.es6.js +13 -0
  97. package/plugins/{utils/dev/dev.js → main/preset/preset.js} +9 -6
  98. package/plugins/main/response/index.es6.js +1 -1
  99. package/plugins/main/response/index.js +1 -0
  100. package/plugins/main/response/response.d.ts +6 -1
  101. package/plugins/main/response/response.es6.js +22 -13
  102. package/plugins/main/response/response.js +21 -11
  103. package/plugins/main/return/index.d.ts +1 -0
  104. package/plugins/main/return/index.es6.js +1 -0
  105. package/plugins/main/return/index.js +9 -0
  106. package/plugins/main/return/return.d.ts +4 -0
  107. package/plugins/main/return/return.es6.js +10 -0
  108. package/plugins/main/return/return.js +14 -0
  109. package/plugins/main/server/server.d.ts +6 -5
  110. package/plugins/main/server/server.es6.js +43 -16
  111. package/plugins/main/server/server.js +42 -15
  112. package/plugins/main/tag/tag.d.ts +3 -2
  113. package/plugins/main/tag/tag.es6.js +6 -4
  114. package/plugins/main/tag/tag.js +5 -3
  115. package/plugins/main/variable/variable.d.ts +5 -5
  116. package/plugins/main/variable/variable.es6.js +3 -1
  117. package/plugins/main/variable/variable.js +3 -1
  118. package/plugins/request/cms/cms.d.ts +1 -0
  119. package/plugins/request/cms/cms.es6.js +3 -4
  120. package/plugins/request/cms/cms.js +2 -3
  121. package/plugins/request/cookie/cookie.es6.js +3 -19
  122. package/plugins/request/cookie/cookie.js +3 -23
  123. package/plugins/request/error/error.d.ts +41 -40
  124. package/plugins/request/error/error.es6.js +48 -45
  125. package/plugins/request/error/error.js +47 -44
  126. package/plugins/request/file/file.d.ts +1 -0
  127. package/plugins/request/file/file.es6.js +5 -6
  128. package/plugins/request/file/file.js +4 -5
  129. package/plugins/request/header/header.es6.js +1 -1
  130. package/plugins/request/header/header.js +1 -1
  131. package/plugins/request/proxy/proxy.d.ts +4 -1
  132. package/plugins/request/proxy/proxy.es6.js +5 -2
  133. package/plugins/request/proxy/proxy.js +5 -2
  134. package/plugins/request/redirect/redirect.d.ts +8 -7
  135. package/plugins/request/redirect/redirect.es6.js +7 -7
  136. package/plugins/request/redirect/redirect.js +7 -7
  137. package/plugins/request/success/success.d.ts +8 -6
  138. package/plugins/request/success/success.es6.js +21 -11
  139. package/plugins/request/success/success.js +20 -10
  140. package/plugins/schema/any/any.d.ts +5 -0
  141. package/plugins/schema/any/any.es6.js +27 -0
  142. package/plugins/schema/any/any.js +31 -0
  143. package/plugins/schema/array/array.d.ts +1 -0
  144. package/plugins/schema/array/array.es6.js +3 -3
  145. package/plugins/schema/array/array.js +2 -2
  146. package/plugins/schema/binary/binary.d.ts +3 -3
  147. package/plugins/schema/date/date.d.ts +1 -1
  148. package/plugins/schema/date/date.es6.js +3 -3
  149. package/plugins/schema/date/date.js +3 -3
  150. package/plugins/schema/field/field.d.ts +2 -0
  151. package/plugins/schema/field/field.es6.js +8 -8
  152. package/plugins/schema/field/field.js +6 -6
  153. package/plugins/schema/index.d.ts +1 -0
  154. package/plugins/schema/index.es6.js +1 -0
  155. package/plugins/schema/index.js +1 -0
  156. package/plugins/schema/integer/integer.d.ts +3 -3
  157. package/plugins/schema/integer/integer.es6.js +1 -1
  158. package/plugins/schema/integer/integer.js +1 -1
  159. package/plugins/schema/number/number.d.ts +2 -2
  160. package/plugins/schema/number/number.es6.js +1 -1
  161. package/plugins/schema/number/number.js +1 -1
  162. package/plugins/schema/object/object.d.ts +1 -0
  163. package/plugins/schema/object/object.es6.js +20 -7
  164. package/plugins/schema/object/object.js +19 -6
  165. package/plugins/schema/string/string.d.ts +2 -2
  166. package/plugins/schema/string/string.es6.js +44 -30
  167. package/plugins/schema/string/string.js +44 -30
  168. package/plugins/schema/tuple/tuple.d.ts +1 -0
  169. package/plugins/schema/tuple/tuple.es6.js +5 -5
  170. package/plugins/schema/tuple/tuple.js +4 -4
  171. package/plugins/schema/uuid/uuid.es6.js +1 -1
  172. package/plugins/schema/uuid/uuid.js +1 -1
  173. package/plugins/utils/blacklist/blacklist.d.ts +5 -0
  174. package/plugins/utils/blacklist/blacklist.es6.js +17 -0
  175. package/plugins/utils/blacklist/blacklist.js +21 -0
  176. package/plugins/utils/blacklist/index.d.ts +1 -0
  177. package/plugins/utils/blacklist/index.es6.js +1 -0
  178. package/plugins/utils/blacklist/index.js +9 -0
  179. package/plugins/utils/dts/dts.d.ts +2 -1
  180. package/plugins/utils/dts/dts.es6.js +2 -2
  181. package/plugins/utils/dts/dts.js +2 -2
  182. package/plugins/utils/env/env.d.ts +7 -0
  183. package/plugins/utils/env/env.es6.js +11 -0
  184. package/plugins/utils/{prod/prod.js → env/env.js} +5 -4
  185. package/plugins/utils/env/index.d.ts +1 -0
  186. package/plugins/utils/env/index.es6.js +1 -0
  187. package/plugins/utils/{dev → env}/index.js +2 -2
  188. package/plugins/utils/index.d.ts +4 -2
  189. package/plugins/utils/index.es6.js +4 -2
  190. package/plugins/utils/index.js +4 -2
  191. package/plugins/utils/protection/index.d.ts +1 -0
  192. package/plugins/utils/protection/index.es6.js +1 -0
  193. package/plugins/utils/protection/index.js +9 -0
  194. package/plugins/utils/protection/protection.d.ts +9 -0
  195. package/plugins/utils/protection/protection.es6.js +35 -0
  196. package/plugins/utils/protection/protection.js +39 -0
  197. package/plugins/utils/swagger/swagger.es6.js +10 -8
  198. package/plugins/utils/swagger/swagger.js +10 -8
  199. package/plugins/utils/whitelist/index.d.ts +1 -0
  200. package/plugins/utils/whitelist/index.es6.js +1 -0
  201. package/plugins/utils/whitelist/index.js +9 -0
  202. package/plugins/utils/whitelist/whitelist.d.ts +5 -0
  203. package/plugins/utils/whitelist/whitelist.es6.js +19 -0
  204. package/plugins/utils/whitelist/whitelist.js +23 -0
  205. package/types.d.ts +15 -23
  206. package/utils/FileData/Bin.d.ts +13 -13
  207. package/utils/FileData/Bin.es6.js +2 -2
  208. package/utils/FileData/Bin.js +2 -2
  209. package/utils/action/Action.d.ts +17 -14
  210. package/utils/action/Action.es6.js +102 -78
  211. package/utils/action/Action.js +102 -78
  212. package/utils/dateFormat/dateFormat.d.ts +1 -1
  213. package/utils/dateFormat/dateFormat.es6.js +1 -1
  214. package/utils/dateFormat/dateFormat.js +1 -1
  215. package/utils/decorators/once/once.es6.js +1 -1
  216. package/utils/decorators/once/once.js +1 -1
  217. package/utils/generateTypes/generateTypes.d.ts +2 -2
  218. package/utils/generateTypes/generateTypes.es6.js +85 -25
  219. package/utils/generateTypes/generateTypes.js +85 -25
  220. package/utils/getEndpoint/getEndpoint.es6.js +2 -2
  221. package/utils/getEndpoint/getEndpoint.js +2 -2
  222. package/utils/getOrAdd/getOrAdd.d.ts +1 -1
  223. package/utils/httpOnStart/httpOnStart.d.ts +1 -1
  224. package/utils/httpOnStart/httpOnStart.es6.js +1 -1
  225. package/utils/httpOnStart/httpOnStart.js +1 -1
  226. package/utils/rules/binaryAccept/binaryAccept.es6.js +2 -2
  227. package/utils/rules/binaryAccept/binaryAccept.js +2 -2
  228. package/utils/rules/dateTo/dateTo.d.ts +1 -1
  229. package/utils/rules/helpers.d.ts +1 -1
  230. package/utils/rules/index.d.ts +0 -1
  231. package/utils/rules/index.es6.js +0 -1
  232. package/utils/rules/index.js +0 -1
  233. package/utils/rules/int/int.es6.js +2 -2
  234. package/utils/rules/int/int.js +2 -2
  235. package/utils/rules/max/max.d.ts +1 -1
  236. package/utils/rules/max/max.es6.js +3 -3
  237. package/utils/rules/max/max.js +3 -3
  238. package/utils/rules/maxBin/maxBin.es6.js +2 -2
  239. package/utils/rules/maxBin/maxBin.js +2 -2
  240. package/utils/rules/maxDate/maxDate.es6.js +1 -1
  241. package/utils/rules/maxDate/maxDate.js +1 -1
  242. package/utils/rules/maxLength/maxLength.es6.js +2 -2
  243. package/utils/rules/maxLength/maxLength.js +2 -2
  244. package/utils/rules/min/min.d.ts +1 -1
  245. package/utils/rules/min/min.es6.js +3 -3
  246. package/utils/rules/min/min.js +3 -3
  247. package/utils/rules/minBin/minBin.es6.js +2 -2
  248. package/utils/rules/minBin/minBin.js +2 -2
  249. package/utils/rules/minDate/minDate.es6.js +1 -1
  250. package/utils/rules/minDate/minDate.js +1 -1
  251. package/utils/rules/minLength/minLength.es6.js +2 -2
  252. package/utils/rules/minLength/minLength.js +2 -2
  253. package/utils/rules/objectOf/objectOf.d.ts +1 -1
  254. package/utils/rules/objectOf/objectOf.es6.js +11 -1
  255. package/utils/rules/objectOf/objectOf.js +11 -1
  256. package/utils/rules/pattern/pattern.d.ts +1 -1
  257. package/utils/rules/pattern/pattern.es6.js +2 -1
  258. package/utils/rules/pattern/pattern.js +2 -1
  259. package/example/app/App/App.d.ts +0 -1
  260. package/example/app/App/index.d.ts +0 -1
  261. package/example/index.d.ts +0 -1
  262. package/example/requests/index.d.ts +0 -1
  263. package/example/requests/todo/AddTodo/AddTodo.d.ts +0 -1
  264. package/example/requests/todo/AddTodo/index.d.ts +0 -1
  265. package/example/requests/todo/DeleteTodo/DeleteTodo.d.ts +0 -1
  266. package/example/requests/todo/DeleteTodo/index.d.ts +0 -1
  267. package/example/requests/todo/EditTodo/EditTodo.d.ts +0 -1
  268. package/example/requests/todo/EditTodo/index.d.ts +0 -1
  269. package/example/requests/todo/GetTodo/GetTodo.d.ts +0 -1
  270. package/example/requests/todo/GetTodo/index.d.ts +0 -1
  271. package/example/requests/todo/GetTodos/GetTodos.d.ts +0 -1
  272. package/example/requests/todo/GetTodos/index.d.ts +0 -1
  273. package/example/requests/todo/index.d.ts +0 -5
  274. package/example/requests/todo/todos.d.ts +0 -1
  275. package/example/schemas/app/ListQueryParams/ListQueryParams.d.ts +0 -1
  276. package/example/schemas/app/ListQueryParams/index.d.ts +0 -1
  277. package/example/schemas/app/ListSchema/ListSchema.d.ts +0 -4
  278. package/example/schemas/app/ListSchema/index.d.ts +0 -1
  279. package/example/schemas/app/index.d.ts +0 -2
  280. package/example/schemas/index.d.ts +0 -2
  281. package/example/schemas/todo/TodoSchema/TodoSchema.d.ts +0 -4
  282. package/example/schemas/todo/TodoSchema/index.d.ts +0 -1
  283. package/example/schemas/todo/index.d.ts +0 -1
  284. package/example/tags/Todo/Todo.d.ts +0 -1
  285. package/example/tags/Todo/index.d.ts +0 -1
  286. package/example/tags/index.d.ts +0 -1
  287. package/hooks/useRequestPlugin/index.d.ts +0 -1
  288. package/hooks/useRequestPlugin/index.es6.js +0 -1
  289. package/hooks/useRequestPlugin/index.js +0 -9
  290. package/hooks/useRequestPlugin/useRequestPlugin.d.ts +0 -2
  291. package/hooks/useRequestPlugin/useRequestPlugin.es6.js +0 -13
  292. package/hooks/useRequestPlugin/useRequestPlugin.js +0 -17
  293. package/openApi.test.d.ts +0 -1
  294. package/plugins/main/fallback/fallback.d.ts +0 -4
  295. package/plugins/main/fallback/fallback.es6.js +0 -19
  296. package/plugins/main/fallback/fallback.js +0 -23
  297. package/plugins/main/fallback/index.d.ts +0 -1
  298. package/plugins/main/fallback/index.es6.js +0 -1
  299. package/plugins/main/fallback/index.js +0 -9
  300. package/plugins/main/request/index.d.ts +0 -1
  301. package/plugins/main/request/index.es6.js +0 -1
  302. package/plugins/main/request/index.js +0 -9
  303. package/plugins/main/request/request.d.ts +0 -4
  304. package/plugins/main/request/request.es6.js +0 -21
  305. package/plugins/main/request/request.js +0 -25
  306. package/plugins/utils/dev/dev.d.ts +0 -4
  307. package/plugins/utils/dev/dev.es6.js +0 -10
  308. package/plugins/utils/dev/index.d.ts +0 -1
  309. package/plugins/utils/dev/index.es6.js +0 -1
  310. package/plugins/utils/prod/index.d.ts +0 -1
  311. package/plugins/utils/prod/index.es6.js +0 -1
  312. package/plugins/utils/prod/prod.d.ts +0 -4
  313. package/plugins/utils/prod/prod.es6.js +0 -10
  314. package/utils/decorators/once/once.test.d.ts +0 -1
  315. package/utils/generateTypes/generateTypes.test.d.ts +0 -1
  316. package/utils/parseSearch/parseSearch.test.d.ts +0 -1
  317. package/utils/rules/any/any.d.ts +0 -1
  318. package/utils/rules/any/any.es6.js +0 -5
  319. package/utils/rules/any/any.js +0 -9
  320. /package/{utils/rules → plugins/schema}/any/index.d.ts +0 -0
  321. /package/{utils/rules → plugins/schema}/any/index.es6.js +0 -0
  322. /package/{utils/rules → plugins/schema}/any/index.js +0 -0
@@ -0,0 +1,17 @@
1
+ import { useProps } from '@innet/jsx';
2
+ import '../../../hooks/index.es6.js';
3
+ import { useServerPlugin } from '../../../hooks/useServerPlugin/useServerPlugin.es6.js';
4
+ import { useAction } from '../../../hooks/useAction/useAction.es6.js';
5
+
6
+ function blacklist() {
7
+ const { children, ip = process.env.INNET_BLACKLIST_IP, } = useProps() || {};
8
+ const ips = typeof ip === 'string' ? ip.split(',') : ip;
9
+ useServerPlugin(() => {
10
+ const action = useAction();
11
+ if (!action.clientIp || (ips === null || ips === void 0 ? void 0 : ips.includes(action.clientIp))) {
12
+ return children;
13
+ }
14
+ });
15
+ }
16
+
17
+ export { blacklist };
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsx = require('@innet/jsx');
6
+ require('../../../hooks/index.js');
7
+ var useServerPlugin = require('../../../hooks/useServerPlugin/useServerPlugin.js');
8
+ var useAction = require('../../../hooks/useAction/useAction.js');
9
+
10
+ function blacklist() {
11
+ const { children, ip = process.env.INNET_BLACKLIST_IP, } = jsx.useProps() || {};
12
+ const ips = typeof ip === 'string' ? ip.split(',') : ip;
13
+ useServerPlugin.useServerPlugin(() => {
14
+ const action = useAction.useAction();
15
+ if (!action.clientIp || (ips === null || ips === void 0 ? void 0 : ips.includes(action.clientIp))) {
16
+ return children;
17
+ }
18
+ });
19
+ }
20
+
21
+ exports.blacklist = blacklist;
@@ -0,0 +1 @@
1
+ export * from './blacklist';
@@ -0,0 +1 @@
1
+ export { blacklist } from './blacklist.es6.js';
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var blacklist = require('./blacklist.js');
6
+
7
+
8
+
9
+ exports.blacklist = blacklist.blacklist;
@@ -1,5 +1,6 @@
1
1
  import { type HandlerPlugin } from 'innet';
2
2
  export interface DtsProps {
3
- path: string;
3
+ namespace?: string;
4
+ path?: string;
4
5
  }
5
6
  export declare const dts: HandlerPlugin;
@@ -6,9 +6,9 @@ import { useApi } from '../../../hooks/useApi/useApi.es6.js';
6
6
  import { generateTypes } from '../../../utils/generateTypes/generateTypes.es6.js';
7
7
 
8
8
  const dts = () => {
9
- const { path } = useProps();
9
+ const { namespace = process.env.INNET_DTS_NAMESPACE, path = process.env.INNET_DTS_PATH || 'src/apiTypes.d.ts', } = useProps() || {};
10
10
  const { docs } = useApi();
11
- promises.writeFile(path, generateTypes(docs)).catch(e => {
11
+ promises.writeFile(path, generateTypes(docs, namespace)).catch(e => {
12
12
  console.error(e);
13
13
  });
14
14
  };
@@ -10,9 +10,9 @@ var useApi = require('../../../hooks/useApi/useApi.js');
10
10
  var generateTypes = require('../../../utils/generateTypes/generateTypes.js');
11
11
 
12
12
  const dts = () => {
13
- const { path } = jsx.useProps();
13
+ const { namespace = process.env.INNET_DTS_NAMESPACE, path = process.env.INNET_DTS_PATH || 'src/apiTypes.d.ts', } = jsx.useProps() || {};
14
14
  const { docs } = useApi.useApi();
15
- fs.promises.writeFile(path, generateTypes.generateTypes(docs)).catch(e => {
15
+ fs.promises.writeFile(path, generateTypes.generateTypes(docs, namespace)).catch(e => {
16
16
  console.error(e);
17
17
  });
18
18
  };
@@ -0,0 +1,7 @@
1
+ import { type HandlerPlugin } from 'innet';
2
+ export interface EnvProps {
3
+ children?: any;
4
+ is: string | string[];
5
+ of?: string;
6
+ }
7
+ export declare const env: HandlerPlugin;
@@ -0,0 +1,11 @@
1
+ import innet, { useHandler } from 'innet';
2
+ import { useProps } from '@innet/jsx';
3
+
4
+ const env = () => {
5
+ const { children, is, of = 'NODE_ENV', } = useProps();
6
+ if (Array.isArray(is) ? is.includes(process.env[of]) : process.env[of] === is) {
7
+ innet(children, useHandler());
8
+ }
9
+ };
10
+
11
+ export { env };
@@ -9,10 +9,11 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
9
9
 
10
10
  var innet__default = /*#__PURE__*/_interopDefaultLegacy(innet);
11
11
 
12
- const prod = () => {
13
- if (process.env.NODE_ENV === 'production') {
14
- innet__default["default"](jsx.useChildren(), innet.useHandler());
12
+ const env = () => {
13
+ const { children, is, of = 'NODE_ENV', } = jsx.useProps();
14
+ if (Array.isArray(is) ? is.includes(process.env[of]) : process.env[of] === is) {
15
+ innet__default["default"](children, innet.useHandler());
15
16
  }
16
17
  };
17
18
 
18
- exports.prod = prod;
19
+ exports.env = env;
@@ -0,0 +1 @@
1
+ export * from './env';
@@ -0,0 +1 @@
1
+ export { env } from './env.es6.js';
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dev = require('./dev.js');
5
+ var env = require('./env.js');
6
6
 
7
7
 
8
8
 
9
- exports.dev = dev.dev;
9
+ exports.env = env.env;
@@ -1,4 +1,6 @@
1
1
  export * from './swagger';
2
2
  export * from './dts';
3
- export * from './dev';
4
- export * from './prod';
3
+ export * from './env';
4
+ export * from './protection';
5
+ export * from './blacklist';
6
+ export * from './whitelist';
@@ -1,4 +1,6 @@
1
1
  import './swagger/index.es6.js';
2
2
  import './dts/index.es6.js';
3
- import './dev/index.es6.js';
4
- import './prod/index.es6.js';
3
+ import './env/index.es6.js';
4
+ import './protection/index.es6.js';
5
+ import './blacklist/index.es6.js';
6
+ import './whitelist/index.es6.js';
@@ -2,6 +2,8 @@
2
2
 
3
3
  require('./swagger/index.js');
4
4
  require('./dts/index.js');
5
- require('./dev/index.js');
6
- require('./prod/index.js');
5
+ require('./env/index.js');
6
+ require('./protection/index.js');
7
+ require('./blacklist/index.js');
8
+ require('./whitelist/index.js');
7
9
 
@@ -0,0 +1 @@
1
+ export * from './protection';
@@ -0,0 +1 @@
1
+ export { protection } from './protection.es6.js';
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var protection = require('./protection.js');
6
+
7
+
8
+
9
+ exports.protection = protection.protection;
@@ -0,0 +1,9 @@
1
+ export interface ProtectionProps {
2
+ children?: any;
3
+ cookieKey?: string;
4
+ excludeIp?: string | string[];
5
+ maxAge?: number;
6
+ searchKey?: string;
7
+ value?: string;
8
+ }
9
+ export declare function protection(): void;
@@ -0,0 +1,35 @@
1
+ import { useProps } from '@innet/jsx';
2
+ import '../../../hooks/index.es6.js';
3
+ import { useServerPlugin } from '../../../hooks/useServerPlugin/useServerPlugin.es6.js';
4
+ import { useAction } from '../../../hooks/useAction/useAction.es6.js';
5
+
6
+ function protection() {
7
+ const { children, cookieKey = process.env.INNET_PROTECTION_COOKIE_KEY || 'protection', excludeIp = process.env.INNET_PROTECTED_IP, maxAge = Number(process.env.INNET_PROTECTION_MAX_AGE) || 365 * 24 * 60 * 60, searchKey = process.env.INNET_PROTECTION_SEARCH_KEY || 'protection', value = process.env.INNET_PROTECTION, } = useProps();
8
+ if (!value)
9
+ return;
10
+ const excludeIps = Array.isArray(excludeIp) ? excludeIp : excludeIp === null || excludeIp === void 0 ? void 0 : excludeIp.split(',');
11
+ useServerPlugin(() => {
12
+ const action = useAction();
13
+ if (!action.clientIp)
14
+ return children;
15
+ if (excludeIps === null || excludeIps === void 0 ? void 0 : excludeIps.includes(action.clientIp))
16
+ return;
17
+ const { [cookieKey]: cookieProtection } = action.cookies;
18
+ if (cookieProtection && cookieProtection === value)
19
+ return;
20
+ const { [searchKey]: searchProtection } = action.search;
21
+ if (searchProtection && searchProtection === value) {
22
+ action.setCookie(cookieKey, value, {
23
+ httpOnly: true,
24
+ maxAge,
25
+ path: '/',
26
+ secure: true,
27
+ });
28
+ return;
29
+ }
30
+ action.setCookie(cookieKey);
31
+ return children;
32
+ });
33
+ }
34
+
35
+ export { protection };
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsx = require('@innet/jsx');
6
+ require('../../../hooks/index.js');
7
+ var useServerPlugin = require('../../../hooks/useServerPlugin/useServerPlugin.js');
8
+ var useAction = require('../../../hooks/useAction/useAction.js');
9
+
10
+ function protection() {
11
+ const { children, cookieKey = process.env.INNET_PROTECTION_COOKIE_KEY || 'protection', excludeIp = process.env.INNET_PROTECTED_IP, maxAge = Number(process.env.INNET_PROTECTION_MAX_AGE) || 365 * 24 * 60 * 60, searchKey = process.env.INNET_PROTECTION_SEARCH_KEY || 'protection', value = process.env.INNET_PROTECTION, } = jsx.useProps();
12
+ if (!value)
13
+ return;
14
+ const excludeIps = Array.isArray(excludeIp) ? excludeIp : excludeIp === null || excludeIp === void 0 ? void 0 : excludeIp.split(',');
15
+ useServerPlugin.useServerPlugin(() => {
16
+ const action = useAction.useAction();
17
+ if (!action.clientIp)
18
+ return children;
19
+ if (excludeIps === null || excludeIps === void 0 ? void 0 : excludeIps.includes(action.clientIp))
20
+ return;
21
+ const { [cookieKey]: cookieProtection } = action.cookies;
22
+ if (cookieProtection && cookieProtection === value)
23
+ return;
24
+ const { [searchKey]: searchProtection } = action.search;
25
+ if (searchProtection && searchProtection === value) {
26
+ action.setCookie(cookieKey, value, {
27
+ httpOnly: true,
28
+ maxAge,
29
+ path: '/',
30
+ secure: true,
31
+ });
32
+ return;
33
+ }
34
+ action.setCookie(cookieKey);
35
+ return children;
36
+ });
37
+ }
38
+
39
+ exports.protection = protection;
@@ -2,20 +2,22 @@ import { useProps } from '@innet/jsx';
2
2
  import '../../../hooks/index.es6.js';
3
3
  import html from './swagger.html.es6.js';
4
4
  import { useApi } from '../../../hooks/useApi/useApi.es6.js';
5
- import { useRequestPlugin } from '../../../hooks/useRequestPlugin/useRequestPlugin.es6.js';
5
+ import { useServerPlugin } from '../../../hooks/useServerPlugin/useServerPlugin.es6.js';
6
+ import { useAction } from '../../../hooks/useAction/useAction.es6.js';
6
7
 
7
8
  const swagger = () => {
8
- const { path = '/swagger-ui' } = useProps() || {};
9
- const { docs, prefix } = useApi();
9
+ const { path = process.env.INNET_SWAGGER_PATH || '/swagger-ui', } = useProps() || {};
10
+ const { docs, prefix, } = useApi();
10
11
  let swaggerResponse;
11
- useRequestPlugin((req, res) => {
12
- if (req.url === prefix + path) {
12
+ useServerPlugin(() => {
13
+ const action = useAction();
14
+ if (action.path === prefix + path) {
13
15
  if (!swaggerResponse) {
14
16
  swaggerResponse = html.replace('spec: {},', `spec: ${JSON.stringify(docs)},`);
15
17
  }
16
- res.statusCode = 200;
17
- res.write(swaggerResponse);
18
- res.end();
18
+ action.res.statusCode = 200;
19
+ action.res.write(swaggerResponse);
20
+ action.res.end();
19
21
  return true;
20
22
  }
21
23
  });
@@ -6,20 +6,22 @@ var jsx = require('@innet/jsx');
6
6
  require('../../../hooks/index.js');
7
7
  var swagger$1 = require('./swagger.html.js');
8
8
  var useApi = require('../../../hooks/useApi/useApi.js');
9
- var useRequestPlugin = require('../../../hooks/useRequestPlugin/useRequestPlugin.js');
9
+ var useServerPlugin = require('../../../hooks/useServerPlugin/useServerPlugin.js');
10
+ var useAction = require('../../../hooks/useAction/useAction.js');
10
11
 
11
12
  const swagger = () => {
12
- const { path = '/swagger-ui' } = jsx.useProps() || {};
13
- const { docs, prefix } = useApi.useApi();
13
+ const { path = process.env.INNET_SWAGGER_PATH || '/swagger-ui', } = jsx.useProps() || {};
14
+ const { docs, prefix, } = useApi.useApi();
14
15
  let swaggerResponse;
15
- useRequestPlugin.useRequestPlugin((req, res) => {
16
- if (req.url === prefix + path) {
16
+ useServerPlugin.useServerPlugin(() => {
17
+ const action = useAction.useAction();
18
+ if (action.path === prefix + path) {
17
19
  if (!swaggerResponse) {
18
20
  swaggerResponse = swagger$1["default"].replace('spec: {},', `spec: ${JSON.stringify(docs)},`);
19
21
  }
20
- res.statusCode = 200;
21
- res.write(swaggerResponse);
22
- res.end();
22
+ action.res.statusCode = 200;
23
+ action.res.write(swaggerResponse);
24
+ action.res.end();
23
25
  return true;
24
26
  }
25
27
  });
@@ -0,0 +1 @@
1
+ export * from './whitelist';
@@ -0,0 +1 @@
1
+ export { whitelist } from './whitelist.es6.js';
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var whitelist = require('./whitelist.js');
6
+
7
+
8
+
9
+ exports.whitelist = whitelist.whitelist;
@@ -0,0 +1,5 @@
1
+ export interface WhitelistProps {
2
+ children?: any;
3
+ ip?: string | string[];
4
+ }
5
+ export declare function whitelist(): void;
@@ -0,0 +1,19 @@
1
+ import { useProps } from '@innet/jsx';
2
+ import '../../../hooks/index.es6.js';
3
+ import { useServerPlugin } from '../../../hooks/useServerPlugin/useServerPlugin.es6.js';
4
+ import { useAction } from '../../../hooks/useAction/useAction.es6.js';
5
+
6
+ function whitelist() {
7
+ const { children, ip = process.env.INNET_WHITELIST_IP, } = useProps();
8
+ const ips = typeof ip === 'string' ? ip.split(',') : ip;
9
+ if (!ips)
10
+ return;
11
+ useServerPlugin(() => {
12
+ const action = useAction();
13
+ if (!action.clientIp || !ips.includes(action.clientIp)) {
14
+ return children;
15
+ }
16
+ });
17
+ }
18
+
19
+ export { whitelist };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsx = require('@innet/jsx');
6
+ require('../../../hooks/index.js');
7
+ var useServerPlugin = require('../../../hooks/useServerPlugin/useServerPlugin.js');
8
+ var useAction = require('../../../hooks/useAction/useAction.js');
9
+
10
+ function whitelist() {
11
+ const { children, ip = process.env.INNET_WHITELIST_IP, } = jsx.useProps();
12
+ const ips = typeof ip === 'string' ? ip.split(',') : ip;
13
+ if (!ips)
14
+ return;
15
+ useServerPlugin.useServerPlugin(() => {
16
+ const action = useAction.useAction();
17
+ if (!action.clientIp || !ips.includes(action.clientIp)) {
18
+ return children;
19
+ }
20
+ });
21
+ }
22
+
23
+ exports.whitelist = whitelist;
package/types.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- /// <reference types="node" />
2
- import type { IncomingMessage, ServerResponse } from 'http';
3
- import type { Handler } from 'innet';
4
1
  import type { OpenAPIV3_1 as API } from 'openapi-types';
5
2
  import type { ApiErrorValue } from './constants';
3
+ import { type ServerPlugin } from './hooks';
6
4
  import { type Rule, type RulesErrors } from './utils/rules';
7
5
  export type TagObject = API.TagObject;
8
6
  export type Document = API.Document;
@@ -17,60 +15,54 @@ export type ReferenceObject = API.ReferenceObject;
17
15
  export type ParameterObject = API.ParameterObject;
18
16
  export type RequestBodyObject = API.RequestBodyObject;
19
17
  export type ObjectType = ArraySchemaObjectType | NonArraySchemaObjectType;
20
- export type RefSchemaObject = SchemaObject | ReferenceObject;
18
+ export type RefSchemaObject = ReferenceObject | SchemaObject;
21
19
  export interface IValidationErrorData extends Record<string, any> {
22
20
  error: RulesErrors;
23
21
  }
24
22
  export type ValidationErrorData = IValidationErrorData | undefined;
25
23
  export interface EndpointRules {
26
- path?: Rule;
27
- search?: Rule;
24
+ body?: Rule;
28
25
  cookie?: Rule;
29
26
  header?: Rule;
30
- body?: Rule;
27
+ path?: Rule;
31
28
  response?: Rule;
29
+ search?: Rule;
32
30
  }
33
31
  export interface EndpointRulesMaps {
34
- path?: Record<string, Rule>;
35
- search?: Record<string, Rule>;
36
32
  cookie?: Record<string, Rule>;
37
33
  header?: Record<string, Rule>;
34
+ path?: Record<string, Rule>;
35
+ search?: Record<string, Rule>;
38
36
  }
39
37
  export interface Endpoint<I = unknown, O = unknown, E extends ApiErrorValue = ApiErrorValue, P extends InValidationErrorParam = InValidationErrorParam, D extends ValidationErrorData = ValidationErrorData> {
38
+ dynamic?: Endpoint<I, O, E, P, D>[];
40
39
  key: string;
41
- content?: any;
40
+ plugins: Set<ServerPlugin>;
42
41
  rules?: EndpointRules;
43
42
  rulesMaps?: EndpointRulesMaps;
44
- handler?: Handler;
45
43
  static?: Record<string, Endpoint<I, O, E, P, D>>;
46
- dynamic?: Endpoint<I, O, E, P, D>[];
47
44
  }
48
45
  export type IntegerFormats = 'int32' | 'int64';
49
- export type EndpointsMethods = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'options' | 'head' | 'trace';
50
- export type InParam = 'query' | 'header' | 'path' | 'cookie';
51
- export type InValidationErrorParam = InParam | 'body';
52
- export type BodyType = 'application/x-www-form-urlencoded' | 'application/json' | 'multipart/form-data';
46
+ export type EndpointsMethods = 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace';
47
+ export type InParam = 'cookie' | 'header' | 'path' | 'query';
48
+ export type InValidationErrorParam = 'body' | InParam;
49
+ export type BodyType = 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data';
53
50
  export type Endpoints<I = unknown, O = unknown, E extends ApiErrorValue = ApiErrorValue, P extends InValidationErrorParam = InValidationErrorParam, D extends ValidationErrorData = ValidationErrorData> = Partial<Record<EndpointsMethods, Endpoint<I, O, E, P, D>>>;
54
51
  export interface SSL {
55
52
  cert: string;
56
53
  key: string;
57
54
  }
58
55
  export interface ServerStartParams {
59
- port: number;
60
56
  https: boolean;
57
+ port: number;
61
58
  }
62
59
  export interface BaseSchemaProps<T> {
63
60
  default?: T;
61
+ description?: string;
64
62
  example?: T;
65
63
  examples?: T[];
66
- description?: string;
67
64
  ref?: string;
68
65
  }
69
66
  export interface ValuesSchemaProps<T> extends BaseSchemaProps<T> {
70
67
  values?: T[];
71
68
  }
72
- export interface Fallback {
73
- children: any;
74
- handler: Handler;
75
- }
76
- export type RequestPlugin = (req: IncomingMessage, res: ServerResponse) => boolean | undefined;
@@ -1,4 +1,5 @@
1
1
  export interface BinOptions {
2
+ disposition: string;
2
3
  /**
3
4
  * A field name of FormData request
4
5
  */
@@ -11,37 +12,36 @@ export interface BinOptions {
11
12
  * Full path to the file on server, you MUST use it only on server side for the safe
12
13
  */
13
14
  path: string;
14
- /**
15
- * MIME-type of the file
16
- */
17
- type: string;
18
- disposition: string;
19
15
  /**
20
16
  * The file size
21
17
  */
22
18
  size: number;
23
- }
24
- export declare class Bin implements BinOptions {
25
19
  /**
26
- * A file name, without extension
20
+ * MIME-type of the file
27
21
  */
28
- filename: string;
22
+ type: string;
23
+ }
24
+ export declare class Bin implements BinOptions {
25
+ disposition: string;
29
26
  /**
30
27
  * The extension of the origin file from originalFilename
31
28
  */
32
29
  extension?: string;
33
- type: string;
34
- disposition: string;
35
30
  fieldName: string;
31
+ /**
32
+ * A file name, without extension
33
+ */
34
+ filename: string;
36
35
  originalFilename: string;
37
36
  path: string;
38
37
  size: number;
38
+ type: string;
39
39
  constructor(options: BinOptions);
40
40
  toJSON(): {
41
41
  $: string;
42
- originalFilename: string;
43
- type: string;
44
42
  disposition: string;
43
+ originalFilename: string;
45
44
  size: number;
45
+ type: string;
46
46
  };
47
47
  }
@@ -8,10 +8,10 @@ class Bin {
8
8
  toJSON() {
9
9
  return {
10
10
  $: 'binary',
11
- originalFilename: this.originalFilename,
12
- type: this.type,
13
11
  disposition: this.disposition,
12
+ originalFilename: this.originalFilename,
14
13
  size: this.size,
14
+ type: this.type,
15
15
  };
16
16
  }
17
17
  }
@@ -12,10 +12,10 @@ class Bin {
12
12
  toJSON() {
13
13
  return {
14
14
  $: 'binary',
15
- originalFilename: this.originalFilename,
16
- type: this.type,
17
15
  disposition: this.disposition,
16
+ originalFilename: this.originalFilename,
18
17
  size: this.size,
18
+ type: this.type,
19
19
  };
20
20
  }
21
21
  }
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
- import type http from 'http';
3
- import { type IncomingHttpHeaders } from 'http';
2
+ import { type CookieSerializeOptions } from 'cookie';
3
+ import { type IncomingHttpHeaders, type IncomingMessage, type ServerResponse } from 'http';
4
4
  import { type ParsedQs } from 'qs';
5
5
  import { type BodyType } from '../../types';
6
6
  export declare const URL_PARSER: RegExp;
@@ -10,20 +10,23 @@ export interface ParsedUrl {
10
10
  }
11
11
  export declare class Action {
12
12
  #private;
13
- private readonly req;
14
- constructor(req: http.IncomingMessage);
13
+ readonly req: IncomingMessage;
14
+ readonly res: ServerResponse;
15
+ body?: object;
16
+ constructor(req: IncomingMessage, res: ServerResponse);
17
+ parseBody(): Promise<void>;
18
+ setCookie(name: string, value?: string, options?: CookieSerializeOptions): void;
19
+ get bodyType(): BodyType | undefined;
20
+ get clientIp(): string | null;
21
+ get cookies(): Record<string, string>;
22
+ set cookies(value: Record<string, string>);
23
+ get headers(): IncomingHttpHeaders;
24
+ set headers(value: IncomingHttpHeaders);
25
+ get originCookies(): Record<string, string>;
26
+ get originHeaders(): IncomingHttpHeaders;
27
+ get originSearch(): ParsedQs;
15
28
  get parsedUrl(): ParsedUrl;
16
29
  get path(): string;
17
- get originSearch(): ParsedQs;
18
30
  get search(): ParsedQs;
19
31
  set search(value: ParsedQs);
20
- get originHeaders(): IncomingHttpHeaders;
21
- get headers(): IncomingHttpHeaders;
22
- set headers(value: IncomingHttpHeaders);
23
- get originCookies(): Record<string, string>;
24
- get cookies(): Record<string, string>;
25
- set cookies(value: Record<string, string>);
26
- get bodyType(): BodyType | undefined;
27
- body?: object;
28
- parseBody(): Promise<void>;
29
32
  }