@innet/server 2.0.0-alpha.9 → 2.0.0-beta.10

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 (389) hide show
  1. package/README.md +1771 -799
  2. package/handler/handler.d.ts +26 -18
  3. package/handler/handler.es6.js +17 -14
  4. package/handler/handler.js +16 -13
  5. package/hooks/index.d.ts +26 -20
  6. package/hooks/index.es6.js +26 -20
  7. package/hooks/index.js +26 -20
  8. package/hooks/useAction/useAction.es6.js +1 -1
  9. package/hooks/useAction/useAction.js +1 -1
  10. package/hooks/useApi/useApi.d.ts +1 -3
  11. package/hooks/useClientIp/useClientIp.d.ts +1 -1
  12. package/hooks/useEffect/index.d.ts +1 -0
  13. package/hooks/useEffect/index.es6.js +1 -0
  14. package/hooks/useEffect/index.js +9 -0
  15. package/hooks/useEffect/useEffect.d.ts +2 -0
  16. package/hooks/useEffect/useEffect.es6.js +8 -0
  17. package/hooks/useEffect/useEffect.js +12 -0
  18. package/hooks/useEndpoint/useEndpoint.d.ts +1 -1
  19. package/hooks/useEndpoint/useEndpoint.es6.js +3 -1
  20. package/hooks/useEndpoint/useEndpoint.js +3 -1
  21. package/hooks/useHeaders/useHeaders.d.ts +0 -1
  22. package/hooks/useIsServerHttps/index.d.ts +1 -0
  23. package/hooks/useIsServerHttps/index.es6.js +1 -0
  24. package/hooks/useIsServerHttps/index.js +10 -0
  25. package/hooks/useIsServerHttps/useIsServerHttps.d.ts +3 -0
  26. package/hooks/useIsServerHttps/useIsServerHttps.es6.js +14 -0
  27. package/hooks/useIsServerHttps/useIsServerHttps.js +19 -0
  28. package/hooks/useNewSchema/useNewSchema.es6.js +2 -2
  29. package/hooks/useNewSchema/useNewSchema.js +2 -2
  30. package/hooks/useObjectSchemaContext/index.d.ts +1 -0
  31. package/hooks/useObjectSchemaContext/index.es6.js +1 -0
  32. package/hooks/useObjectSchemaContext/index.js +10 -0
  33. package/hooks/useObjectSchemaContext/useObjectSchemaContext.d.ts +3 -0
  34. package/hooks/useObjectSchemaContext/useObjectSchemaContext.es6.js +14 -0
  35. package/hooks/useObjectSchemaContext/useObjectSchemaContext.js +19 -0
  36. package/hooks/useRequest/index.es6.js +1 -1
  37. package/hooks/useRequest/index.js +0 -1
  38. package/hooks/useRequest/useRequest.d.ts +1 -5
  39. package/hooks/useRequest/useRequest.es6.js +4 -4
  40. package/hooks/useRequest/useRequest.js +3 -4
  41. package/hooks/useRequestHandler/index.d.ts +1 -0
  42. package/hooks/useRequestHandler/index.es6.js +1 -0
  43. package/hooks/useRequestHandler/index.js +10 -0
  44. package/hooks/useRequestHandler/useRequestHandler.d.ts +4 -0
  45. package/hooks/useRequestHandler/useRequestHandler.es6.js +14 -0
  46. package/hooks/useRequestHandler/useRequestHandler.js +19 -0
  47. package/hooks/useResponse/index.es6.js +1 -1
  48. package/hooks/useResponse/index.js +0 -1
  49. package/hooks/useResponse/useResponse.d.ts +1 -5
  50. package/hooks/useResponse/useResponse.es6.js +4 -4
  51. package/hooks/useResponse/useResponse.js +3 -4
  52. package/hooks/useSchemaType/useSchemaType.d.ts +3 -2
  53. package/hooks/useSchemaType/useSchemaType.es6.js +16 -9
  54. package/hooks/useSchemaType/useSchemaType.js +16 -9
  55. package/hooks/useServer/useServer.d.ts +2 -3
  56. package/hooks/useServer/useServer.es6.js +3 -1
  57. package/hooks/useServer/useServer.js +3 -1
  58. package/hooks/useServerPlugin/index.d.ts +1 -0
  59. package/hooks/useServerPlugin/index.es6.js +1 -0
  60. package/hooks/useServerPlugin/index.js +9 -0
  61. package/hooks/useServerPlugin/useServerPlugin.d.ts +2 -0
  62. package/hooks/useServerPlugin/useServerPlugin.es6.js +13 -0
  63. package/hooks/useServerPlugin/useServerPlugin.js +17 -0
  64. package/hooks/useServerPlugins/index.d.ts +1 -0
  65. package/hooks/useServerPlugins/index.es6.js +1 -0
  66. package/hooks/useServerPlugins/index.js +10 -0
  67. package/hooks/useServerPlugins/useServerPlugins.d.ts +4 -0
  68. package/hooks/useServerPlugins/useServerPlugins.es6.js +14 -0
  69. package/hooks/useServerPlugins/useServerPlugins.js +19 -0
  70. package/hooks/useServerPort/index.d.ts +1 -0
  71. package/hooks/useServerPort/index.es6.js +1 -0
  72. package/hooks/useServerPort/index.js +10 -0
  73. package/hooks/useServerPort/useServerPort.d.ts +3 -0
  74. package/hooks/useServerPort/useServerPort.es6.js +14 -0
  75. package/hooks/useServerPort/useServerPort.js +19 -0
  76. package/index.d.ts +2 -2
  77. package/index.es6.js +91 -82
  78. package/index.js +208 -184
  79. package/package.json +16 -16
  80. package/plugins/handler/serverFn/serverFn.es6.js +2 -2
  81. package/plugins/handler/serverFn/serverFn.js +2 -6
  82. package/plugins/index.d.ts +2 -2
  83. package/plugins/index.es6.js +2 -2
  84. package/plugins/index.js +2 -2
  85. package/plugins/main/api/api.d.ts +11 -8
  86. package/plugins/main/api/api.es6.js +112 -113
  87. package/plugins/main/api/api.js +112 -117
  88. package/plugins/main/body/body.d.ts +1 -0
  89. package/plugins/main/body/body.es6.js +4 -4
  90. package/plugins/main/body/body.js +4 -8
  91. package/plugins/main/contact/contact.d.ts +2 -2
  92. package/plugins/main/endpoint/endpoint.d.ts +21 -15
  93. package/plugins/main/endpoint/endpoint.es6.js +12 -10
  94. package/plugins/main/endpoint/endpoint.js +11 -13
  95. package/plugins/main/host/host.d.ts +5 -5
  96. package/plugins/main/host/host.es6.js +4 -2
  97. package/plugins/main/host/host.js +4 -6
  98. package/plugins/main/index.d.ts +9 -9
  99. package/plugins/main/index.es6.js +9 -9
  100. package/plugins/main/index.js +9 -9
  101. package/plugins/main/license/license.d.ts +5 -5
  102. package/plugins/main/param/param.d.ts +12 -11
  103. package/plugins/main/param/param.es6.js +7 -8
  104. package/plugins/main/param/param.js +6 -11
  105. package/plugins/main/preset/index.d.ts +1 -0
  106. package/plugins/main/preset/index.es6.js +1 -0
  107. package/plugins/{utils/prod → main/preset}/index.js +2 -2
  108. package/plugins/main/preset/preset.d.ts +3 -0
  109. package/plugins/main/preset/preset.es6.js +13 -0
  110. package/plugins/main/preset/preset.js +17 -0
  111. package/plugins/main/response/index.es6.js +1 -1
  112. package/plugins/main/response/index.js +1 -0
  113. package/plugins/main/response/response.d.ts +6 -1
  114. package/plugins/main/response/response.es6.js +29 -13
  115. package/plugins/main/response/response.js +28 -15
  116. package/plugins/main/return/index.d.ts +1 -0
  117. package/plugins/main/return/index.es6.js +1 -0
  118. package/plugins/main/return/index.js +9 -0
  119. package/plugins/main/return/return.d.ts +4 -0
  120. package/plugins/main/return/return.es6.js +10 -0
  121. package/plugins/main/return/return.js +14 -0
  122. package/plugins/main/server/server.d.ts +6 -6
  123. package/plugins/main/server/server.es6.js +40 -16
  124. package/plugins/main/server/server.js +39 -16
  125. package/plugins/main/tag/index.es6.js +1 -1
  126. package/plugins/main/tag/index.js +1 -0
  127. package/plugins/main/tag/tag.d.ts +10 -2
  128. package/plugins/main/tag/tag.es6.js +25 -6
  129. package/plugins/main/tag/tag.js +24 -8
  130. package/plugins/main/variable/variable.d.ts +5 -5
  131. package/plugins/main/variable/variable.es6.js +4 -3
  132. package/plugins/main/variable/variable.js +4 -3
  133. package/plugins/request/cms/cms.d.ts +1 -0
  134. package/plugins/request/cms/cms.es6.js +4 -5
  135. package/plugins/request/cms/cms.js +3 -5
  136. package/plugins/request/cookie/cookie.d.ts +2 -2
  137. package/plugins/request/cookie/cookie.es6.js +1 -2
  138. package/plugins/request/cookie/cookie.js +1 -2
  139. package/plugins/request/error/error.d.ts +41 -40
  140. package/plugins/request/error/error.es6.js +47 -45
  141. package/plugins/request/error/error.js +46 -44
  142. package/plugins/request/file/file.d.ts +1 -0
  143. package/plugins/request/file/file.es6.js +5 -7
  144. package/plugins/request/file/file.js +3 -6
  145. package/plugins/request/header/header.es6.js +1 -1
  146. package/plugins/request/header/header.js +1 -1
  147. package/plugins/request/index.d.ts +5 -5
  148. package/plugins/request/index.es6.js +5 -5
  149. package/plugins/request/index.js +5 -5
  150. package/plugins/request/proxy/proxy.d.ts +3 -1
  151. package/plugins/request/proxy/proxy.es6.js +5 -2
  152. package/plugins/request/proxy/proxy.js +5 -2
  153. package/plugins/request/redirect/redirect.d.ts +8 -7
  154. package/plugins/request/redirect/redirect.es6.js +7 -7
  155. package/plugins/request/redirect/redirect.js +7 -7
  156. package/plugins/request/success/success.d.ts +8 -6
  157. package/plugins/request/success/success.es6.js +21 -11
  158. package/plugins/request/success/success.js +20 -10
  159. package/plugins/schema/any/any.d.ts +5 -0
  160. package/plugins/schema/any/any.es6.js +27 -0
  161. package/plugins/schema/any/any.js +31 -0
  162. package/plugins/schema/array/array.d.ts +4 -0
  163. package/plugins/schema/array/array.es6.js +15 -7
  164. package/plugins/schema/array/array.js +15 -11
  165. package/plugins/schema/binary/binary.d.ts +7 -3
  166. package/plugins/schema/boolean/boolean.d.ts +1 -0
  167. package/plugins/schema/date/date.d.ts +3 -2
  168. package/plugins/schema/date/date.es6.js +8 -4
  169. package/plugins/schema/date/date.js +8 -4
  170. package/plugins/schema/field/field.d.ts +6 -0
  171. package/plugins/schema/field/field.es6.js +22 -9
  172. package/plugins/schema/field/field.js +20 -11
  173. package/plugins/schema/index.d.ts +8 -7
  174. package/plugins/schema/index.es6.js +8 -7
  175. package/plugins/schema/index.js +8 -7
  176. package/plugins/schema/integer/integer.d.ts +40 -3
  177. package/plugins/schema/integer/integer.es6.js +29 -9
  178. package/plugins/schema/integer/integer.js +29 -9
  179. package/plugins/schema/number/number.d.ts +34 -2
  180. package/plugins/schema/number/number.es6.js +21 -6
  181. package/plugins/schema/number/number.js +21 -6
  182. package/plugins/schema/object/object.d.ts +1 -0
  183. package/plugins/schema/object/object.es6.js +22 -8
  184. package/plugins/schema/object/object.js +21 -11
  185. package/plugins/schema/string/string.d.ts +29 -2
  186. package/plugins/schema/string/string.es6.js +50 -31
  187. package/plugins/schema/string/string.js +50 -31
  188. package/plugins/schema/tuple/tuple.d.ts +1 -0
  189. package/plugins/schema/tuple/tuple.es6.js +8 -9
  190. package/plugins/schema/tuple/tuple.js +7 -12
  191. package/plugins/schema/uuid/uuid.es6.js +5 -3
  192. package/plugins/schema/uuid/uuid.js +5 -3
  193. package/plugins/utils/blacklist/blacklist.d.ts +5 -0
  194. package/plugins/utils/blacklist/blacklist.es6.js +17 -0
  195. package/plugins/utils/blacklist/blacklist.js +21 -0
  196. package/plugins/utils/blacklist/index.d.ts +1 -0
  197. package/plugins/utils/blacklist/index.es6.js +1 -0
  198. package/plugins/utils/blacklist/index.js +9 -0
  199. package/plugins/utils/dts/dts.d.ts +2 -1
  200. package/plugins/utils/dts/dts.es6.js +6 -3
  201. package/plugins/utils/dts/dts.js +6 -3
  202. package/plugins/utils/env/env.d.ts +7 -0
  203. package/plugins/utils/env/env.es6.js +11 -0
  204. package/plugins/utils/env/env.js +15 -0
  205. package/plugins/utils/env/index.d.ts +1 -0
  206. package/plugins/utils/env/index.es6.js +1 -0
  207. package/plugins/utils/{dev → env}/index.js +2 -2
  208. package/plugins/utils/index.d.ts +5 -3
  209. package/plugins/utils/index.es6.js +5 -3
  210. package/plugins/utils/index.js +5 -3
  211. package/plugins/utils/protection/protection.d.ts +4 -4
  212. package/plugins/utils/protection/protection.es6.js +13 -16
  213. package/plugins/utils/protection/protection.js +13 -16
  214. package/plugins/utils/swagger/swagger.d.ts +1 -0
  215. package/plugins/utils/swagger/swagger.es6.js +8 -5
  216. package/plugins/utils/swagger/swagger.js +8 -5
  217. package/plugins/utils/ui/index.d.ts +1 -0
  218. package/plugins/utils/ui/index.es6.js +1 -0
  219. package/plugins/utils/ui/index.js +10 -0
  220. package/plugins/utils/ui/rapidoc.html.es6.js +3 -0
  221. package/plugins/utils/ui/rapidoc.html.js +7 -0
  222. package/plugins/utils/ui/redoc.html.es6.js +3 -0
  223. package/plugins/utils/ui/redoc.html.js +7 -0
  224. package/plugins/utils/ui/scalar.html.es6.js +3 -0
  225. package/plugins/utils/ui/scalar.html.js +7 -0
  226. package/plugins/utils/ui/swagger.html.es6.js +3 -0
  227. package/plugins/utils/ui/swagger.html.js +7 -0
  228. package/plugins/utils/ui/ui.d.ts +13 -0
  229. package/plugins/utils/ui/ui.es6.js +45 -0
  230. package/plugins/utils/ui/ui.js +50 -0
  231. package/plugins/utils/whitelist/index.d.ts +1 -0
  232. package/plugins/utils/whitelist/index.es6.js +1 -0
  233. package/plugins/utils/whitelist/index.js +9 -0
  234. package/plugins/utils/whitelist/whitelist.d.ts +5 -0
  235. package/plugins/utils/whitelist/whitelist.es6.js +19 -0
  236. package/plugins/utils/whitelist/whitelist.js +23 -0
  237. package/types.d.ts +21 -22
  238. package/utils/FileData/Bin.d.ts +13 -13
  239. package/utils/FileData/Bin.es6.js +2 -2
  240. package/utils/FileData/Bin.js +2 -2
  241. package/utils/action/Action.d.ts +13 -14
  242. package/utils/action/Action.es6.js +92 -92
  243. package/utils/action/Action.js +91 -91
  244. package/utils/dateFormat/dateFormat.d.ts +1 -1
  245. package/utils/dateFormat/dateFormat.es6.js +1 -1
  246. package/utils/dateFormat/dateFormat.js +1 -1
  247. package/utils/decorators/once/once.es6.js +1 -1
  248. package/utils/decorators/once/once.js +1 -1
  249. package/utils/generateTypes/generateTypes.d.ts +2 -2
  250. package/utils/generateTypes/generateTypes.es6.js +85 -25
  251. package/utils/generateTypes/generateTypes.js +85 -25
  252. package/utils/getEndpoint/getEndpoint.es6.js +2 -2
  253. package/utils/getEndpoint/getEndpoint.js +2 -2
  254. package/utils/getOrAdd/getOrAdd.d.ts +1 -1
  255. package/utils/getSafeSchema/getSafeSchema.d.ts +2 -0
  256. package/utils/getSafeSchema/getSafeSchema.es6.js +5 -0
  257. package/utils/getSafeSchema/getSafeSchema.js +9 -0
  258. package/utils/getSafeSchema/index.d.ts +1 -0
  259. package/utils/getSafeSchema/index.es6.js +1 -0
  260. package/utils/getSafeSchema/index.js +9 -0
  261. package/utils/httpOnStart/httpOnStart.d.ts +1 -1
  262. package/utils/httpOnStart/httpOnStart.es6.js +1 -1
  263. package/utils/httpOnStart/httpOnStart.js +1 -1
  264. package/utils/index.d.ts +9 -8
  265. package/utils/index.es6.js +9 -8
  266. package/utils/index.js +9 -8
  267. package/utils/parseBody/parseBody.d.ts +0 -1
  268. package/utils/parseBody/parseBody.es6.js +13 -16
  269. package/utils/parseBody/parseBody.js +13 -16
  270. package/utils/parseFormBody/parseFormBody.d.ts +0 -1
  271. package/utils/parseFormBody/parseFormBody.es6.js +41 -41
  272. package/utils/parseFormBody/parseFormBody.js +41 -41
  273. package/utils/parseSearch/parseSearch.es6.js +4 -1
  274. package/utils/parseSearch/parseSearch.js +4 -1
  275. package/utils/rules/arrayOf/arrayOf.es6.js +1 -1
  276. package/utils/rules/arrayOf/arrayOf.js +1 -1
  277. package/utils/rules/bin/bin.es6.js +4 -1
  278. package/utils/rules/bin/bin.js +4 -1
  279. package/utils/rules/binaryAccept/binaryAccept.es6.js +5 -2
  280. package/utils/rules/binaryAccept/binaryAccept.js +5 -2
  281. package/utils/rules/dateTo/dateTo.d.ts +1 -1
  282. package/utils/rules/dateTo/dateTo.es6.js +4 -1
  283. package/utils/rules/dateTo/dateTo.js +4 -1
  284. package/utils/rules/helpers.d.ts +1 -1
  285. package/utils/rules/helpers.es6.js +4 -1
  286. package/utils/rules/helpers.js +4 -1
  287. package/utils/rules/index.d.ts +17 -18
  288. package/utils/rules/index.es6.js +17 -18
  289. package/utils/rules/index.js +18 -19
  290. package/utils/rules/int/int.es6.js +17 -4
  291. package/utils/rules/int/int.js +17 -4
  292. package/utils/rules/max/max.d.ts +1 -1
  293. package/utils/rules/max/max.es6.js +10 -4
  294. package/utils/rules/max/max.js +10 -4
  295. package/utils/rules/maxBin/maxBin.es6.js +5 -2
  296. package/utils/rules/maxBin/maxBin.js +5 -2
  297. package/utils/rules/maxDate/maxDate.es6.js +5 -1
  298. package/utils/rules/maxDate/maxDate.js +5 -1
  299. package/utils/rules/maxLength/maxLength.es6.js +5 -2
  300. package/utils/rules/maxLength/maxLength.js +5 -2
  301. package/utils/rules/min/min.d.ts +1 -1
  302. package/utils/rules/min/min.es6.js +10 -4
  303. package/utils/rules/min/min.js +10 -4
  304. package/utils/rules/minBin/minBin.es6.js +5 -2
  305. package/utils/rules/minBin/minBin.js +5 -2
  306. package/utils/rules/minDate/minDate.es6.js +5 -1
  307. package/utils/rules/minDate/minDate.js +5 -1
  308. package/utils/rules/minLength/minLength.es6.js +5 -2
  309. package/utils/rules/minLength/minLength.js +5 -2
  310. package/utils/rules/num/num.es6.js +4 -1
  311. package/utils/rules/num/num.js +4 -1
  312. package/utils/rules/objectOf/objectOf.d.ts +1 -1
  313. package/utils/rules/objectOf/objectOf.es6.js +16 -3
  314. package/utils/rules/objectOf/objectOf.js +16 -3
  315. package/utils/rules/pattern/pattern.d.ts +1 -1
  316. package/utils/rules/pattern/pattern.es6.js +6 -1
  317. package/utils/rules/pattern/pattern.js +6 -1
  318. package/utils/rules/tupleOf/tupleOf.es6.js +1 -1
  319. package/utils/rules/tupleOf/tupleOf.js +1 -1
  320. package/utils/rules/values/values.es6.js +5 -2
  321. package/utils/rules/values/values.js +5 -2
  322. package/utils/stringifySearch/stringifySearch.es6.js +4 -1
  323. package/utils/stringifySearch/stringifySearch.js +4 -1
  324. package/example/app/App/App.d.ts +0 -1
  325. package/example/app/App/index.d.ts +0 -1
  326. package/example/index.d.ts +0 -1
  327. package/example/requests/index.d.ts +0 -1
  328. package/example/requests/todo/AddTodo/AddTodo.d.ts +0 -1
  329. package/example/requests/todo/AddTodo/index.d.ts +0 -1
  330. package/example/requests/todo/DeleteTodo/DeleteTodo.d.ts +0 -1
  331. package/example/requests/todo/DeleteTodo/index.d.ts +0 -1
  332. package/example/requests/todo/EditTodo/EditTodo.d.ts +0 -1
  333. package/example/requests/todo/EditTodo/index.d.ts +0 -1
  334. package/example/requests/todo/GetTodo/GetTodo.d.ts +0 -1
  335. package/example/requests/todo/GetTodo/index.d.ts +0 -1
  336. package/example/requests/todo/GetTodos/GetTodos.d.ts +0 -1
  337. package/example/requests/todo/GetTodos/index.d.ts +0 -1
  338. package/example/requests/todo/index.d.ts +0 -5
  339. package/example/requests/todo/todos.d.ts +0 -1
  340. package/example/schemas/app/ListQueryParams/ListQueryParams.d.ts +0 -1
  341. package/example/schemas/app/ListQueryParams/index.d.ts +0 -1
  342. package/example/schemas/app/ListSchema/ListSchema.d.ts +0 -4
  343. package/example/schemas/app/ListSchema/index.d.ts +0 -1
  344. package/example/schemas/app/index.d.ts +0 -2
  345. package/example/schemas/index.d.ts +0 -2
  346. package/example/schemas/todo/TodoSchema/TodoSchema.d.ts +0 -4
  347. package/example/schemas/todo/TodoSchema/index.d.ts +0 -1
  348. package/example/schemas/todo/index.d.ts +0 -1
  349. package/example/tags/Todo/Todo.d.ts +0 -1
  350. package/example/tags/Todo/index.d.ts +0 -1
  351. package/example/tags/index.d.ts +0 -1
  352. package/hooks/useRequestPlugin/index.d.ts +0 -1
  353. package/hooks/useRequestPlugin/index.es6.js +0 -1
  354. package/hooks/useRequestPlugin/index.js +0 -9
  355. package/hooks/useRequestPlugin/useRequestPlugin.d.ts +0 -2
  356. package/hooks/useRequestPlugin/useRequestPlugin.es6.js +0 -13
  357. package/hooks/useRequestPlugin/useRequestPlugin.js +0 -17
  358. package/openApi.test.d.ts +0 -1
  359. package/plugins/main/fallback/fallback.d.ts +0 -4
  360. package/plugins/main/fallback/fallback.es6.js +0 -19
  361. package/plugins/main/fallback/fallback.js +0 -23
  362. package/plugins/main/fallback/index.d.ts +0 -1
  363. package/plugins/main/fallback/index.es6.js +0 -1
  364. package/plugins/main/fallback/index.js +0 -9
  365. package/plugins/main/request/index.d.ts +0 -1
  366. package/plugins/main/request/index.es6.js +0 -1
  367. package/plugins/main/request/index.js +0 -9
  368. package/plugins/main/request/request.d.ts +0 -4
  369. package/plugins/main/request/request.es6.js +0 -21
  370. package/plugins/main/request/request.js +0 -25
  371. package/plugins/utils/dev/dev.d.ts +0 -4
  372. package/plugins/utils/dev/dev.es6.js +0 -10
  373. package/plugins/utils/dev/dev.js +0 -18
  374. package/plugins/utils/dev/index.d.ts +0 -1
  375. package/plugins/utils/dev/index.es6.js +0 -1
  376. package/plugins/utils/prod/index.d.ts +0 -1
  377. package/plugins/utils/prod/index.es6.js +0 -1
  378. package/plugins/utils/prod/prod.d.ts +0 -4
  379. package/plugins/utils/prod/prod.es6.js +0 -10
  380. package/plugins/utils/prod/prod.js +0 -18
  381. package/utils/decorators/once/once.test.d.ts +0 -1
  382. package/utils/generateTypes/generateTypes.test.d.ts +0 -1
  383. package/utils/parseSearch/parseSearch.test.d.ts +0 -1
  384. package/utils/rules/any/any.d.ts +0 -1
  385. package/utils/rules/any/any.es6.js +0 -5
  386. package/utils/rules/any/any.js +0 -9
  387. /package/{utils/rules → plugins/schema}/any/index.d.ts +0 -0
  388. /package/{utils/rules → plugins/schema}/any/index.es6.js +0 -0
  389. /package/{utils/rules → plugins/schema}/any/index.js +0 -0
@@ -1,49 +1,87 @@
1
1
  function hasDefault(target) {
2
2
  return Boolean(target && ('default' in target || 'x-default' in target));
3
3
  }
4
- function generateSchemaTypes(schema, spaces = 2) {
4
+ function generateSchemaTypes(schema, spaces = 2, lastChar = '\n') {
5
5
  const space = [...new Array(spaces)].map(() => ' ').join('');
6
6
  if ('$ref' in schema) {
7
- return `Schemas.${schema.$ref.slice(21)}\n`;
7
+ return `Schemas.${schema.$ref.slice(21)}${lastChar}`;
8
8
  }
9
9
  if (schema.type === 'integer') {
10
- return `${schema.format === 'int64' ? 'bigint' : 'number'}\n`;
10
+ return `${schema.format === 'int64' ? 'bigint' : 'number'}${lastChar}`;
11
11
  }
12
12
  if (schema.type === 'string') {
13
13
  if (schema.format === 'date-time') {
14
- return 'Date\n';
14
+ return `Date${lastChar}`;
15
15
  }
16
16
  if (schema.format === 'binary') {
17
- return 'Bin\n';
17
+ return `Bin${lastChar}`;
18
18
  }
19
- return 'string\n';
19
+ return `string${lastChar}`;
20
20
  }
21
- if (['boolean', 'number', 'null'].includes(schema.type)) {
22
- return `${schema.type}\n`;
21
+ if (['boolean', 'null', 'number'].includes(schema.type)) {
22
+ return `${schema.type}${lastChar}`;
23
+ }
24
+ if (schema.oneOf) {
25
+ let result = '';
26
+ for (const item of schema.oneOf) {
27
+ if (result) {
28
+ result += ' | ';
29
+ }
30
+ result += generateSchemaTypes(item, spaces + 2, '');
31
+ }
32
+ return result + lastChar;
23
33
  }
24
34
  if (schema.type === 'array') {
25
35
  if (!schema.items)
26
- return 'any[]\n';
27
- return `(${generateSchemaTypes(schema.items, spaces + 2).slice(0, -1)})[]\n`;
36
+ return `any[]${lastChar}`;
37
+ return `Array<${generateSchemaTypes(schema.items, spaces + 2, '')}>${lastChar}`;
38
+ }
39
+ if (!schema.type) {
40
+ return `any${lastChar}`;
28
41
  }
29
42
  if (schema.type !== 'object') {
30
43
  console.error('unknown type', schema);
31
- return 'any\n';
44
+ return `any${lastChar}`;
32
45
  }
33
46
  let result = '{\n';
34
47
  const required = schema.required || [];
35
- for (const key in schema.properties) {
36
- const prop = schema.properties[key];
37
- const splitter = required.includes(key) || hasDefault(prop)
38
- ? ':'
39
- : '?:';
40
- result += `${space}${key}${splitter} ${generateSchemaTypes(prop, spaces + 2)}`;
48
+ const hasProps = Boolean(schema.properties && Object.keys(schema.properties).length);
49
+ const hasRestProps = Boolean(typeof schema.additionalProperties === 'object' &&
50
+ Object.keys(schema.additionalProperties).length);
51
+ if (hasProps) {
52
+ for (const key in schema.properties) {
53
+ const prop = schema.properties[key];
54
+ const splitter = required.includes(key) || hasDefault(prop)
55
+ ? ':'
56
+ : '?:';
57
+ if ('deprecated' in prop && prop.deprecated) {
58
+ result += `${space}/** @deprecated */\n`;
59
+ }
60
+ result += `${space}${key}${splitter} ${generateSchemaTypes(prop, spaces + 2)}`;
61
+ }
62
+ }
63
+ if (hasRestProps) {
64
+ const value = hasProps
65
+ ? 'any\n'
66
+ : generateSchemaTypes(schema.additionalProperties, spaces + 2);
67
+ result += `${space}[key: string]: ${value}`;
41
68
  }
42
- return `${result}${space.slice(0, -2)}}\n`;
69
+ return `${result}${space.slice(0, -2)}}${lastChar}`;
43
70
  }
44
- function generateTypes(docs) {
71
+ function generateTypes(docs, namespace = 'Api') {
45
72
  var _a;
46
- let result = 'declare namespace Api {\n export interface Bin {\n filename: string\n fieldName: string\n originalFilename: string\n path: string\n type: string\n disposition: string\n size: number\n extension?: string\n }\n';
73
+ let result = `declare namespace ${namespace} {
74
+ export interface Bin {
75
+ filename: string
76
+ fieldName: string
77
+ originalFilename: string
78
+ path: string
79
+ type: string
80
+ disposition: string
81
+ size: number
82
+ extension?: string
83
+ }
84
+ `;
47
85
  const schemas = (_a = docs.components) === null || _a === void 0 ? void 0 : _a.schemas;
48
86
  const paths = docs.paths;
49
87
  if (schemas) {
@@ -62,16 +100,19 @@ function generateTypes(docs) {
62
100
  const parameters = endpoint.parameters;
63
101
  const requestBody = endpoint.requestBody;
64
102
  const responses = endpoint.responses;
103
+ if (endpoint.deprecated) {
104
+ result += ' /** @deprecated */\n';
105
+ }
65
106
  result += ` ['${method.toUpperCase()}:${path}']: {\n`;
66
107
  if (parameters) {
67
108
  const params = {
68
- query: '',
109
+ cookie: '',
69
110
  header: '',
70
111
  path: '',
71
- cookie: '',
112
+ query: '',
72
113
  };
73
114
  for (const param of parameters) {
74
- const splitter = param.in === 'path' || hasDefault(param.schema) ? ':' : '?:';
115
+ const splitter = param.in === 'path' || hasDefault(param.schema) || param.required ? ':' : '?:';
75
116
  params[param.in] += ` ${param.name}${splitter} ${generateSchemaTypes(param.schema)}`;
76
117
  }
77
118
  if (params.path) {
@@ -90,8 +131,27 @@ function generateTypes(docs) {
90
131
  if (requestBody) {
91
132
  result += ` Body: ${generateSchemaTypes(requestBody.content['multipart/form-data'].schema, 8)}`;
92
133
  }
93
- if (responses === null || responses === void 0 ? void 0 : responses.default) {
94
- result += ` Response: ${generateSchemaTypes(responses.default.content['application/json'].schema, 8)}`;
134
+ if (responses) {
135
+ result += ' Response: {\n';
136
+ for (const key in responses) {
137
+ let multiple = false;
138
+ const response = responses[key];
139
+ result += ` ['${key}']: `;
140
+ if (!response.content) {
141
+ result += 'void';
142
+ }
143
+ else {
144
+ for (const type in response.content) {
145
+ if (multiple) {
146
+ result += ' | ';
147
+ }
148
+ result += generateSchemaTypes(response.content[type].schema, 10, '');
149
+ multiple = true;
150
+ }
151
+ }
152
+ result += '\n';
153
+ }
154
+ result += ' }\n';
95
155
  }
96
156
  result += ' }\n';
97
157
  }
@@ -5,49 +5,87 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  function hasDefault(target) {
6
6
  return Boolean(target && ('default' in target || 'x-default' in target));
7
7
  }
8
- function generateSchemaTypes(schema, spaces = 2) {
8
+ function generateSchemaTypes(schema, spaces = 2, lastChar = '\n') {
9
9
  const space = [...new Array(spaces)].map(() => ' ').join('');
10
10
  if ('$ref' in schema) {
11
- return `Schemas.${schema.$ref.slice(21)}\n`;
11
+ return `Schemas.${schema.$ref.slice(21)}${lastChar}`;
12
12
  }
13
13
  if (schema.type === 'integer') {
14
- return `${schema.format === 'int64' ? 'bigint' : 'number'}\n`;
14
+ return `${schema.format === 'int64' ? 'bigint' : 'number'}${lastChar}`;
15
15
  }
16
16
  if (schema.type === 'string') {
17
17
  if (schema.format === 'date-time') {
18
- return 'Date\n';
18
+ return `Date${lastChar}`;
19
19
  }
20
20
  if (schema.format === 'binary') {
21
- return 'Bin\n';
21
+ return `Bin${lastChar}`;
22
22
  }
23
- return 'string\n';
23
+ return `string${lastChar}`;
24
24
  }
25
- if (['boolean', 'number', 'null'].includes(schema.type)) {
26
- return `${schema.type}\n`;
25
+ if (['boolean', 'null', 'number'].includes(schema.type)) {
26
+ return `${schema.type}${lastChar}`;
27
+ }
28
+ if (schema.oneOf) {
29
+ let result = '';
30
+ for (const item of schema.oneOf) {
31
+ if (result) {
32
+ result += ' | ';
33
+ }
34
+ result += generateSchemaTypes(item, spaces + 2, '');
35
+ }
36
+ return result + lastChar;
27
37
  }
28
38
  if (schema.type === 'array') {
29
39
  if (!schema.items)
30
- return 'any[]\n';
31
- return `(${generateSchemaTypes(schema.items, spaces + 2).slice(0, -1)})[]\n`;
40
+ return `any[]${lastChar}`;
41
+ return `Array<${generateSchemaTypes(schema.items, spaces + 2, '')}>${lastChar}`;
42
+ }
43
+ if (!schema.type) {
44
+ return `any${lastChar}`;
32
45
  }
33
46
  if (schema.type !== 'object') {
34
47
  console.error('unknown type', schema);
35
- return 'any\n';
48
+ return `any${lastChar}`;
36
49
  }
37
50
  let result = '{\n';
38
51
  const required = schema.required || [];
39
- for (const key in schema.properties) {
40
- const prop = schema.properties[key];
41
- const splitter = required.includes(key) || hasDefault(prop)
42
- ? ':'
43
- : '?:';
44
- result += `${space}${key}${splitter} ${generateSchemaTypes(prop, spaces + 2)}`;
52
+ const hasProps = Boolean(schema.properties && Object.keys(schema.properties).length);
53
+ const hasRestProps = Boolean(typeof schema.additionalProperties === 'object' &&
54
+ Object.keys(schema.additionalProperties).length);
55
+ if (hasProps) {
56
+ for (const key in schema.properties) {
57
+ const prop = schema.properties[key];
58
+ const splitter = required.includes(key) || hasDefault(prop)
59
+ ? ':'
60
+ : '?:';
61
+ if ('deprecated' in prop && prop.deprecated) {
62
+ result += `${space}/** @deprecated */\n`;
63
+ }
64
+ result += `${space}${key}${splitter} ${generateSchemaTypes(prop, spaces + 2)}`;
65
+ }
66
+ }
67
+ if (hasRestProps) {
68
+ const value = hasProps
69
+ ? 'any\n'
70
+ : generateSchemaTypes(schema.additionalProperties, spaces + 2);
71
+ result += `${space}[key: string]: ${value}`;
45
72
  }
46
- return `${result}${space.slice(0, -2)}}\n`;
73
+ return `${result}${space.slice(0, -2)}}${lastChar}`;
47
74
  }
48
- function generateTypes(docs) {
75
+ function generateTypes(docs, namespace = 'Api') {
49
76
  var _a;
50
- let result = 'declare namespace Api {\n export interface Bin {\n filename: string\n fieldName: string\n originalFilename: string\n path: string\n type: string\n disposition: string\n size: number\n extension?: string\n }\n';
77
+ let result = `declare namespace ${namespace} {
78
+ export interface Bin {
79
+ filename: string
80
+ fieldName: string
81
+ originalFilename: string
82
+ path: string
83
+ type: string
84
+ disposition: string
85
+ size: number
86
+ extension?: string
87
+ }
88
+ `;
51
89
  const schemas = (_a = docs.components) === null || _a === void 0 ? void 0 : _a.schemas;
52
90
  const paths = docs.paths;
53
91
  if (schemas) {
@@ -66,16 +104,19 @@ function generateTypes(docs) {
66
104
  const parameters = endpoint.parameters;
67
105
  const requestBody = endpoint.requestBody;
68
106
  const responses = endpoint.responses;
107
+ if (endpoint.deprecated) {
108
+ result += ' /** @deprecated */\n';
109
+ }
69
110
  result += ` ['${method.toUpperCase()}:${path}']: {\n`;
70
111
  if (parameters) {
71
112
  const params = {
72
- query: '',
113
+ cookie: '',
73
114
  header: '',
74
115
  path: '',
75
- cookie: '',
116
+ query: '',
76
117
  };
77
118
  for (const param of parameters) {
78
- const splitter = param.in === 'path' || hasDefault(param.schema) ? ':' : '?:';
119
+ const splitter = param.in === 'path' || hasDefault(param.schema) || param.required ? ':' : '?:';
79
120
  params[param.in] += ` ${param.name}${splitter} ${generateSchemaTypes(param.schema)}`;
80
121
  }
81
122
  if (params.path) {
@@ -94,8 +135,27 @@ function generateTypes(docs) {
94
135
  if (requestBody) {
95
136
  result += ` Body: ${generateSchemaTypes(requestBody.content['multipart/form-data'].schema, 8)}`;
96
137
  }
97
- if (responses === null || responses === void 0 ? void 0 : responses.default) {
98
- result += ` Response: ${generateSchemaTypes(responses.default.content['application/json'].schema, 8)}`;
138
+ if (responses) {
139
+ result += ' Response: {\n';
140
+ for (const key in responses) {
141
+ let multiple = false;
142
+ const response = responses[key];
143
+ result += ` ['${key}']: `;
144
+ if (!response.content) {
145
+ result += 'void';
146
+ }
147
+ else {
148
+ for (const type in response.content) {
149
+ if (multiple) {
150
+ result += ' | ';
151
+ }
152
+ result += generateSchemaTypes(response.content[type].schema, 10, '');
153
+ multiple = true;
154
+ }
155
+ }
156
+ result += '\n';
157
+ }
158
+ result += ' }\n';
99
159
  }
100
160
  result += ' }\n';
101
161
  }
@@ -8,7 +8,7 @@ function getEndpoint(path, parentEndpoint) {
8
8
  parentEndpoint.static = {};
9
9
  }
10
10
  if (!parentEndpoint.static[key]) {
11
- parentEndpoint.static[key] = { key };
11
+ parentEndpoint.static[key] = { key, plugins: new Set() };
12
12
  }
13
13
  parentEndpoint = parentEndpoint.static[key];
14
14
  if (deep + 1 === splitPath.length) {
@@ -19,7 +19,7 @@ function getEndpoint(path, parentEndpoint) {
19
19
  if (!parentEndpoint.dynamic) {
20
20
  parentEndpoint.dynamic = [];
21
21
  }
22
- const newEndpoint = { key };
22
+ const newEndpoint = { key, plugins: new Set() };
23
23
  parentEndpoint.dynamic.push(newEndpoint);
24
24
  parentEndpoint = newEndpoint;
25
25
  if (deep + 1 === splitPath.length) {
@@ -12,7 +12,7 @@ function getEndpoint(path, parentEndpoint) {
12
12
  parentEndpoint.static = {};
13
13
  }
14
14
  if (!parentEndpoint.static[key]) {
15
- parentEndpoint.static[key] = { key };
15
+ parentEndpoint.static[key] = { key, plugins: new Set() };
16
16
  }
17
17
  parentEndpoint = parentEndpoint.static[key];
18
18
  if (deep + 1 === splitPath.length) {
@@ -23,7 +23,7 @@ function getEndpoint(path, parentEndpoint) {
23
23
  if (!parentEndpoint.dynamic) {
24
24
  parentEndpoint.dynamic = [];
25
25
  }
26
- const newEndpoint = { key };
26
+ const newEndpoint = { key, plugins: new Set() };
27
27
  parentEndpoint.dynamic.push(newEndpoint);
28
28
  parentEndpoint = newEndpoint;
29
29
  if (deep + 1 === splitPath.length) {
@@ -1 +1 @@
1
- export declare function getOrAdd<R = any>(target: object, path: string | number, defaultValues: any[]): R;
1
+ export declare function getOrAdd<R = any>(target: object, path: number | string, defaultValues: any[]): R;
@@ -0,0 +1,2 @@
1
+ import { type SchemaObject } from '../../types';
2
+ export declare function getSafeSchema(schema: SchemaObject): SchemaObject;
@@ -0,0 +1,5 @@
1
+ function getSafeSchema(schema) {
2
+ return 'oneOf' in schema ? schema.oneOf[0] : schema;
3
+ }
4
+
5
+ export { getSafeSchema };
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function getSafeSchema(schema) {
6
+ return 'oneOf' in schema ? schema.oneOf[0] : schema;
7
+ }
8
+
9
+ exports.getSafeSchema = getSafeSchema;
@@ -0,0 +1 @@
1
+ export * from './getSafeSchema';
@@ -0,0 +1 @@
1
+ export { getSafeSchema } from './getSafeSchema.es6.js';
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var getSafeSchema = require('./getSafeSchema.js');
6
+
7
+
8
+
9
+ exports.getSafeSchema = getSafeSchema.getSafeSchema;
@@ -1,2 +1,2 @@
1
1
  import { type ServerStartParams } from '../../types';
2
- export declare function httpOnStart({ port, https }: ServerStartParams): void;
2
+ export declare function httpOnStart({ https, port, }: ServerStartParams): void;
@@ -1,4 +1,4 @@
1
- function httpOnStart({ port, https }) {
1
+ function httpOnStart({ https, port, }) {
2
2
  console.log(`http${https ? 's' : ''}://localhost:${port}`);
3
3
  }
4
4
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- function httpOnStart({ port, https }) {
5
+ function httpOnStart({ https, port, }) {
6
6
  console.log(`http${https ? 's' : ''}://localhost:${port}`);
7
7
  }
8
8
 
package/utils/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
- export * from './parseSearch';
2
- export * from './stringifySearch';
3
- export * from './httpOnStart';
1
+ export * from './FileData';
2
+ export * from './JSONString';
3
+ export * from './action';
4
+ export * from './decorators';
5
+ export * from './generateTypes';
4
6
  export * from './getEndpoint';
5
7
  export * from './getOrAdd';
6
- export * from './decorators';
7
- export * from './action';
8
+ export * from './getSafeSchema';
9
+ export * from './httpOnStart';
8
10
  export * from './parseBody';
9
11
  export * from './parseFormBody';
12
+ export * from './parseSearch';
10
13
  export * from './rules';
11
- export * from './JSONString';
12
- export * from './FileData';
13
- export * from './generateTypes';
14
+ export * from './stringifySearch';
@@ -1,13 +1,14 @@
1
- import './parseSearch/index.es6.js';
2
- import './stringifySearch/index.es6.js';
3
- import './httpOnStart/index.es6.js';
1
+ import './FileData/index.es6.js';
2
+ import './JSONString/index.es6.js';
3
+ import './action/index.es6.js';
4
+ import './decorators/index.es6.js';
5
+ import './generateTypes/index.es6.js';
4
6
  import './getEndpoint/index.es6.js';
5
7
  import './getOrAdd/index.es6.js';
6
- import './decorators/index.es6.js';
7
- import './action/index.es6.js';
8
+ import './getSafeSchema/index.es6.js';
9
+ import './httpOnStart/index.es6.js';
8
10
  import './parseBody/index.es6.js';
9
11
  import './parseFormBody/index.es6.js';
12
+ import './parseSearch/index.es6.js';
10
13
  import './rules/index.es6.js';
11
- import './JSONString/index.es6.js';
12
- import './FileData/index.es6.js';
13
- import './generateTypes/index.es6.js';
14
+ import './stringifySearch/index.es6.js';
package/utils/index.js CHANGED
@@ -1,16 +1,17 @@
1
1
  'use strict';
2
2
 
3
- require('./parseSearch/index.js');
4
- require('./stringifySearch/index.js');
5
- require('./httpOnStart/index.js');
3
+ require('./FileData/index.js');
4
+ require('./JSONString/index.js');
5
+ require('./action/index.js');
6
+ require('./decorators/index.js');
7
+ require('./generateTypes/index.js');
6
8
  require('./getEndpoint/index.js');
7
9
  require('./getOrAdd/index.js');
8
- require('./decorators/index.js');
9
- require('./action/index.js');
10
+ require('./getSafeSchema/index.js');
11
+ require('./httpOnStart/index.js');
10
12
  require('./parseBody/index.js');
11
13
  require('./parseFormBody/index.js');
14
+ require('./parseSearch/index.js');
12
15
  require('./rules/index.js');
13
- require('./JSONString/index.js');
14
- require('./FileData/index.js');
15
- require('./generateTypes/index.js');
16
+ require('./stringifySearch/index.js');
16
17
 
@@ -1,3 +1,2 @@
1
- /// <reference types="node" />
2
1
  import type http from 'http';
3
2
  export declare function parseBody(req: http.IncomingMessage): Promise<string>;
@@ -1,21 +1,18 @@
1
- import { __awaiter } from 'tslib';
2
1
  import { StringDecoder } from 'node:string_decoder';
3
2
 
4
- function parseBody(req) {
5
- return __awaiter(this, void 0, void 0, function* () {
6
- return yield new Promise((resolve, reject) => {
7
- const decoder = new StringDecoder('utf-8');
8
- let buffer = '';
9
- req.on('data', chunk => {
10
- buffer += decoder.write(chunk);
11
- });
12
- req.on('end', () => {
13
- buffer += decoder.end();
14
- resolve(buffer);
15
- });
16
- req.on('error', err => {
17
- reject(err);
18
- });
3
+ async function parseBody(req) {
4
+ return await new Promise((resolve, reject) => {
5
+ const decoder = new StringDecoder('utf-8');
6
+ let buffer = '';
7
+ req.on('data', chunk => {
8
+ buffer += decoder.write(chunk);
9
+ });
10
+ req.on('end', () => {
11
+ buffer += decoder.end();
12
+ resolve(buffer);
13
+ });
14
+ req.on('error', err => {
15
+ reject(err);
19
16
  });
20
17
  });
21
18
  }
@@ -2,24 +2,21 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib = require('tslib');
6
5
  var node_string_decoder = require('node:string_decoder');
7
6
 
8
- function parseBody(req) {
9
- return tslib.__awaiter(this, void 0, void 0, function* () {
10
- return yield new Promise((resolve, reject) => {
11
- const decoder = new node_string_decoder.StringDecoder('utf-8');
12
- let buffer = '';
13
- req.on('data', chunk => {
14
- buffer += decoder.write(chunk);
15
- });
16
- req.on('end', () => {
17
- buffer += decoder.end();
18
- resolve(buffer);
19
- });
20
- req.on('error', err => {
21
- reject(err);
22
- });
7
+ async function parseBody(req) {
8
+ return await new Promise((resolve, reject) => {
9
+ const decoder = new node_string_decoder.StringDecoder('utf-8');
10
+ let buffer = '';
11
+ req.on('data', chunk => {
12
+ buffer += decoder.write(chunk);
13
+ });
14
+ req.on('end', () => {
15
+ buffer += decoder.end();
16
+ resolve(buffer);
17
+ });
18
+ req.on('error', err => {
19
+ reject(err);
23
20
  });
24
21
  });
25
22
  }
@@ -1,3 +1,2 @@
1
- /// <reference types="node" />
2
1
  import type http from 'http';
3
2
  export declare function parseFormBody(req: http.IncomingMessage): Promise<object>;