@kiyasov/platform-hono 1.3.7 → 1.3.9

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 (297) hide show
  1. package/dist/cjs/src/adapters/hono-adapter.d.ts +57 -0
  2. package/dist/cjs/src/adapters/hono-adapter.js +259 -0
  3. package/dist/cjs/src/adapters/hono-adapter.js.map +1 -0
  4. package/dist/cjs/src/adapters/index.d.ts +1 -0
  5. package/dist/cjs/src/adapters/index.js +18 -0
  6. package/dist/cjs/src/adapters/index.js.map +1 -0
  7. package/dist/cjs/src/drivers/constants/apollo.constants.d.ts +1 -0
  8. package/dist/cjs/src/drivers/constants/apollo.constants.js +5 -0
  9. package/dist/cjs/src/drivers/constants/apollo.constants.js.map +1 -0
  10. package/dist/cjs/src/drivers/constants/index.d.ts +1 -0
  11. package/dist/cjs/src/drivers/constants/index.js +18 -0
  12. package/dist/cjs/src/drivers/constants/index.js.map +1 -0
  13. package/dist/cjs/src/drivers/graphQLUpload/GraphQLUpload.d.ts +3 -0
  14. package/dist/cjs/src/drivers/graphQLUpload/GraphQLUpload.js +21 -0
  15. package/dist/cjs/src/drivers/graphQLUpload/GraphQLUpload.js.map +1 -0
  16. package/dist/cjs/src/drivers/graphQLUpload/Upload.d.ts +16 -0
  17. package/dist/cjs/src/drivers/graphQLUpload/Upload.js +17 -0
  18. package/dist/cjs/src/drivers/graphQLUpload/Upload.js.map +1 -0
  19. package/dist/cjs/src/drivers/graphQLUpload/fs-capacitor.d.ts +42 -0
  20. package/dist/cjs/src/drivers/graphQLUpload/fs-capacitor.js +190 -0
  21. package/dist/cjs/src/drivers/graphQLUpload/fs-capacitor.js.map +1 -0
  22. package/dist/cjs/src/drivers/graphQLUpload/index.d.ts +4 -0
  23. package/dist/cjs/src/drivers/graphQLUpload/index.js +21 -0
  24. package/dist/cjs/src/drivers/graphQLUpload/index.js.map +1 -0
  25. package/dist/cjs/src/drivers/graphQLUpload/processRequest.d.ts +2 -0
  26. package/dist/cjs/src/drivers/graphQLUpload/processRequest.js +50 -0
  27. package/dist/cjs/src/drivers/graphQLUpload/processRequest.js.map +1 -0
  28. package/dist/cjs/src/drivers/graphql.driver.d.ts +20 -0
  29. package/dist/cjs/src/drivers/graphql.driver.js +126 -0
  30. package/dist/cjs/src/drivers/graphql.driver.js.map +1 -0
  31. package/dist/cjs/src/drivers/index.d.ts +2 -0
  32. package/dist/cjs/src/drivers/index.js +19 -0
  33. package/dist/cjs/src/drivers/index.js.map +1 -0
  34. package/dist/cjs/src/drivers/services/plugins-explorer.service.d.ts +9 -0
  35. package/dist/cjs/src/drivers/services/plugins-explorer.service.js +25 -0
  36. package/dist/cjs/src/drivers/services/plugins-explorer.service.js.map +1 -0
  37. package/dist/cjs/src/interfaces/hono.interface.d.ts +4 -0
  38. package/dist/cjs/src/interfaces/hono.interface.js +3 -0
  39. package/dist/cjs/src/interfaces/hono.interface.js.map +1 -0
  40. package/dist/cjs/src/interfaces/index.d.ts +2 -0
  41. package/dist/cjs/src/interfaces/index.js +19 -0
  42. package/dist/cjs/src/interfaces/index.js.map +1 -0
  43. package/dist/cjs/src/interfaces/nest-hono-application.interface.d.ts +18 -0
  44. package/dist/cjs/src/interfaces/nest-hono-application.interface.js +3 -0
  45. package/dist/cjs/src/interfaces/nest-hono-application.interface.js.map +1 -0
  46. package/dist/cjs/src/multer/crypto/index.d.ts +1 -0
  47. package/dist/cjs/src/multer/crypto/index.js +7 -0
  48. package/dist/cjs/src/multer/crypto/index.js.map +1 -0
  49. package/dist/cjs/src/multer/decorators/index.d.ts +2 -0
  50. package/dist/cjs/src/multer/decorators/index.js +19 -0
  51. package/dist/cjs/src/multer/decorators/index.js.map +1 -0
  52. package/dist/cjs/src/multer/decorators/uploaded-file-decorator.d.ts +1 -0
  53. package/dist/cjs/src/multer/decorators/uploaded-file-decorator.js +10 -0
  54. package/dist/cjs/src/multer/decorators/uploaded-file-decorator.js.map +1 -0
  55. package/dist/cjs/src/multer/decorators/uploaded-files-decorator.d.ts +1 -0
  56. package/dist/cjs/src/multer/decorators/uploaded-files-decorator.js +10 -0
  57. package/dist/cjs/src/multer/decorators/uploaded-files-decorator.js.map +1 -0
  58. package/dist/cjs/src/multer/fs/index.d.ts +2 -0
  59. package/dist/cjs/src/multer/fs/index.js +23 -0
  60. package/dist/cjs/src/multer/fs/index.js.map +1 -0
  61. package/dist/cjs/src/multer/index.d.ts +4 -0
  62. package/dist/cjs/src/multer/index.js +21 -0
  63. package/dist/cjs/src/multer/index.js.map +1 -0
  64. package/dist/cjs/src/multer/interceptors/any-files-interceptor.d.ts +3 -0
  65. package/dist/cjs/src/multer/interceptors/any-files-interceptor.js +29 -0
  66. package/dist/cjs/src/multer/interceptors/any-files-interceptor.js.map +1 -0
  67. package/dist/cjs/src/multer/interceptors/file-fields-interceptor.d.ts +4 -0
  68. package/dist/cjs/src/multer/interceptors/file-fields-interceptor.js +30 -0
  69. package/dist/cjs/src/multer/interceptors/file-fields-interceptor.js.map +1 -0
  70. package/dist/cjs/src/multer/interceptors/file-interceptor.d.ts +3 -0
  71. package/dist/cjs/src/multer/interceptors/file-interceptor.js +29 -0
  72. package/dist/cjs/src/multer/interceptors/file-interceptor.js.map +1 -0
  73. package/dist/cjs/src/multer/interceptors/files-interceptor.d.ts +3 -0
  74. package/dist/cjs/src/multer/interceptors/files-interceptor.js +29 -0
  75. package/dist/cjs/src/multer/interceptors/files-interceptor.js.map +1 -0
  76. package/dist/cjs/src/multer/interceptors/index.d.ts +4 -0
  77. package/dist/cjs/src/multer/interceptors/index.js +21 -0
  78. package/dist/cjs/src/multer/interceptors/index.js.map +1 -0
  79. package/dist/cjs/src/multer/multipart/exceptions.d.ts +1 -0
  80. package/dist/cjs/src/multer/multipart/exceptions.js +22 -0
  81. package/dist/cjs/src/multer/multipart/exceptions.js.map +1 -0
  82. package/dist/cjs/src/multer/multipart/file.d.ts +9 -0
  83. package/dist/cjs/src/multer/multipart/file.js +10 -0
  84. package/dist/cjs/src/multer/multipart/file.js.map +1 -0
  85. package/dist/cjs/src/multer/multipart/filter.d.ts +6 -0
  86. package/dist/cjs/src/multer/multipart/filter.js +22 -0
  87. package/dist/cjs/src/multer/multipart/filter.js.map +1 -0
  88. package/dist/cjs/src/multer/multipart/handlers/any-files.d.ts +8 -0
  89. package/dist/cjs/src/multer/multipart/handlers/any-files.js +33 -0
  90. package/dist/cjs/src/multer/multipart/handlers/any-files.js.map +1 -0
  91. package/dist/cjs/src/multer/multipart/handlers/file-fields.d.ts +14 -0
  92. package/dist/cjs/src/multer/multipart/handlers/file-fields.js +57 -0
  93. package/dist/cjs/src/multer/multipart/handlers/file-fields.js.map +1 -0
  94. package/dist/cjs/src/multer/multipart/handlers/index.d.ts +1 -0
  95. package/dist/cjs/src/multer/multipart/handlers/index.js +3 -0
  96. package/dist/cjs/src/multer/multipart/handlers/index.js.map +1 -0
  97. package/dist/cjs/src/multer/multipart/handlers/multiple-files.d.ts +8 -0
  98. package/dist/cjs/src/multer/multipart/handlers/multiple-files.js +40 -0
  99. package/dist/cjs/src/multer/multipart/handlers/multiple-files.js.map +1 -0
  100. package/dist/cjs/src/multer/multipart/handlers/single-file.d.ts +8 -0
  101. package/dist/cjs/src/multer/multipart/handlers/single-file.js +45 -0
  102. package/dist/cjs/src/multer/multipart/handlers/single-file.js.map +1 -0
  103. package/dist/cjs/src/multer/multipart/index.d.ts +3 -0
  104. package/dist/cjs/src/multer/multipart/index.js +19 -0
  105. package/dist/cjs/src/multer/multipart/index.js.map +1 -0
  106. package/dist/cjs/src/multer/multipart/options.d.ts +21 -0
  107. package/dist/cjs/src/multer/multipart/options.js +23 -0
  108. package/dist/cjs/src/multer/multipart/options.js.map +1 -0
  109. package/dist/cjs/src/multer/multipart/request.d.ts +14 -0
  110. package/dist/cjs/src/multer/multipart/request.js +22 -0
  111. package/dist/cjs/src/multer/multipart/request.js.map +1 -0
  112. package/dist/cjs/src/multer/storage/disk-storage.d.ts +31 -0
  113. package/dist/cjs/src/multer/storage/disk-storage.js +62 -0
  114. package/dist/cjs/src/multer/storage/disk-storage.js.map +1 -0
  115. package/dist/cjs/src/multer/storage/index.d.ts +3 -0
  116. package/dist/cjs/src/multer/storage/index.js +20 -0
  117. package/dist/cjs/src/multer/storage/index.js.map +1 -0
  118. package/dist/cjs/src/multer/storage/memory-storage.d.ts +16 -0
  119. package/dist/cjs/src/multer/storage/memory-storage.js +21 -0
  120. package/dist/cjs/src/multer/storage/memory-storage.js.map +1 -0
  121. package/dist/cjs/src/multer/storage/storage.d.ts +13 -0
  122. package/dist/cjs/src/multer/storage/storage.js +3 -0
  123. package/dist/cjs/src/multer/storage/storage.js.map +1 -0
  124. package/dist/cjs/src/multer/stream/index.d.ts +2 -0
  125. package/dist/cjs/src/multer/stream/index.js +7 -0
  126. package/dist/cjs/src/multer/stream/index.js.map +1 -0
  127. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  128. package/dist/esm/src/adapters/hono-adapter.d.ts +57 -0
  129. package/dist/esm/src/adapters/hono-adapter.js +255 -0
  130. package/dist/esm/src/adapters/hono-adapter.js.map +1 -0
  131. package/dist/esm/src/adapters/index.d.ts +1 -0
  132. package/dist/esm/src/adapters/index.js +2 -0
  133. package/dist/esm/src/adapters/index.js.map +1 -0
  134. package/dist/esm/src/drivers/constants/apollo.constants.d.ts +1 -0
  135. package/dist/esm/src/drivers/constants/apollo.constants.js +2 -0
  136. package/dist/esm/src/drivers/constants/apollo.constants.js.map +1 -0
  137. package/dist/esm/src/drivers/constants/index.d.ts +1 -0
  138. package/dist/esm/src/drivers/constants/index.js +2 -0
  139. package/dist/esm/src/drivers/constants/index.js.map +1 -0
  140. package/dist/esm/src/drivers/graphQLUpload/GraphQLUpload.d.ts +3 -0
  141. package/dist/esm/src/drivers/graphQLUpload/GraphQLUpload.js +18 -0
  142. package/dist/esm/src/drivers/graphQLUpload/GraphQLUpload.js.map +1 -0
  143. package/dist/esm/src/drivers/graphQLUpload/Upload.d.ts +16 -0
  144. package/dist/esm/src/drivers/graphQLUpload/Upload.js +13 -0
  145. package/dist/esm/src/drivers/graphQLUpload/Upload.js.map +1 -0
  146. package/dist/esm/src/drivers/graphQLUpload/fs-capacitor.d.ts +42 -0
  147. package/dist/esm/src/drivers/graphQLUpload/fs-capacitor.js +183 -0
  148. package/dist/esm/src/drivers/graphQLUpload/fs-capacitor.js.map +1 -0
  149. package/dist/esm/src/drivers/graphQLUpload/index.d.ts +4 -0
  150. package/dist/esm/src/drivers/graphQLUpload/index.js +5 -0
  151. package/dist/esm/src/drivers/graphQLUpload/index.js.map +1 -0
  152. package/dist/esm/src/drivers/graphQLUpload/processRequest.d.ts +2 -0
  153. package/dist/esm/src/drivers/graphQLUpload/processRequest.js +47 -0
  154. package/dist/esm/src/drivers/graphQLUpload/processRequest.js.map +1 -0
  155. package/dist/esm/src/drivers/graphql.driver.d.ts +20 -0
  156. package/dist/esm/src/drivers/graphql.driver.js +122 -0
  157. package/dist/esm/src/drivers/graphql.driver.js.map +1 -0
  158. package/dist/esm/src/drivers/index.d.ts +2 -0
  159. package/dist/esm/src/drivers/index.js +3 -0
  160. package/dist/esm/src/drivers/index.js.map +1 -0
  161. package/dist/esm/src/drivers/services/plugins-explorer.service.d.ts +9 -0
  162. package/dist/esm/src/drivers/services/plugins-explorer.service.js +21 -0
  163. package/dist/esm/src/drivers/services/plugins-explorer.service.js.map +1 -0
  164. package/dist/esm/src/interfaces/hono.interface.d.ts +4 -0
  165. package/dist/esm/src/interfaces/hono.interface.js +2 -0
  166. package/dist/esm/src/interfaces/hono.interface.js.map +1 -0
  167. package/dist/esm/src/interfaces/index.d.ts +2 -0
  168. package/dist/esm/src/interfaces/index.js +3 -0
  169. package/dist/esm/src/interfaces/index.js.map +1 -0
  170. package/dist/esm/src/interfaces/nest-hono-application.interface.d.ts +18 -0
  171. package/dist/esm/src/interfaces/nest-hono-application.interface.js +2 -0
  172. package/dist/esm/src/interfaces/nest-hono-application.interface.js.map +1 -0
  173. package/dist/esm/src/multer/crypto/index.d.ts +1 -0
  174. package/dist/esm/src/multer/crypto/index.js +4 -0
  175. package/dist/esm/src/multer/crypto/index.js.map +1 -0
  176. package/dist/esm/src/multer/decorators/index.d.ts +2 -0
  177. package/dist/esm/src/multer/decorators/index.js +3 -0
  178. package/dist/esm/src/multer/decorators/index.js.map +1 -0
  179. package/dist/esm/src/multer/decorators/uploaded-file-decorator.d.ts +1 -0
  180. package/dist/esm/src/multer/decorators/uploaded-file-decorator.js +7 -0
  181. package/dist/esm/src/multer/decorators/uploaded-file-decorator.js.map +1 -0
  182. package/dist/esm/src/multer/decorators/uploaded-files-decorator.d.ts +1 -0
  183. package/dist/esm/src/multer/decorators/uploaded-files-decorator.js +7 -0
  184. package/dist/esm/src/multer/decorators/uploaded-files-decorator.js.map +1 -0
  185. package/dist/esm/src/multer/fs/index.d.ts +2 -0
  186. package/dist/esm/src/multer/fs/index.js +18 -0
  187. package/dist/esm/src/multer/fs/index.js.map +1 -0
  188. package/dist/esm/src/multer/index.d.ts +4 -0
  189. package/dist/esm/src/multer/index.js +5 -0
  190. package/dist/esm/src/multer/index.js.map +1 -0
  191. package/dist/esm/src/multer/interceptors/any-files-interceptor.d.ts +3 -0
  192. package/dist/esm/src/multer/interceptors/any-files-interceptor.js +26 -0
  193. package/dist/esm/src/multer/interceptors/any-files-interceptor.js.map +1 -0
  194. package/dist/esm/src/multer/interceptors/file-fields-interceptor.d.ts +4 -0
  195. package/dist/esm/src/multer/interceptors/file-fields-interceptor.js +27 -0
  196. package/dist/esm/src/multer/interceptors/file-fields-interceptor.js.map +1 -0
  197. package/dist/esm/src/multer/interceptors/file-interceptor.d.ts +3 -0
  198. package/dist/esm/src/multer/interceptors/file-interceptor.js +26 -0
  199. package/dist/esm/src/multer/interceptors/file-interceptor.js.map +1 -0
  200. package/dist/esm/src/multer/interceptors/files-interceptor.d.ts +3 -0
  201. package/dist/esm/src/multer/interceptors/files-interceptor.js +26 -0
  202. package/dist/esm/src/multer/interceptors/files-interceptor.js.map +1 -0
  203. package/dist/esm/src/multer/interceptors/index.d.ts +4 -0
  204. package/dist/esm/src/multer/interceptors/index.js +5 -0
  205. package/dist/esm/src/multer/interceptors/index.js.map +1 -0
  206. package/dist/esm/src/multer/multipart/exceptions.d.ts +1 -0
  207. package/dist/esm/src/multer/multipart/exceptions.js +18 -0
  208. package/dist/esm/src/multer/multipart/exceptions.js.map +1 -0
  209. package/dist/esm/src/multer/multipart/file.d.ts +9 -0
  210. package/dist/esm/src/multer/multipart/file.js +6 -0
  211. package/dist/esm/src/multer/multipart/file.js.map +1 -0
  212. package/dist/esm/src/multer/multipart/filter.d.ts +6 -0
  213. package/dist/esm/src/multer/multipart/filter.js +18 -0
  214. package/dist/esm/src/multer/multipart/filter.js.map +1 -0
  215. package/dist/esm/src/multer/multipart/handlers/any-files.d.ts +8 -0
  216. package/dist/esm/src/multer/multipart/handlers/any-files.js +29 -0
  217. package/dist/esm/src/multer/multipart/handlers/any-files.js.map +1 -0
  218. package/dist/esm/src/multer/multipart/handlers/file-fields.d.ts +14 -0
  219. package/dist/esm/src/multer/multipart/handlers/file-fields.js +52 -0
  220. package/dist/esm/src/multer/multipart/handlers/file-fields.js.map +1 -0
  221. package/dist/esm/src/multer/multipart/handlers/index.d.ts +1 -0
  222. package/dist/esm/src/multer/multipart/handlers/index.js +2 -0
  223. package/dist/esm/src/multer/multipart/handlers/index.js.map +1 -0
  224. package/dist/esm/src/multer/multipart/handlers/multiple-files.d.ts +8 -0
  225. package/dist/esm/src/multer/multipart/handlers/multiple-files.js +36 -0
  226. package/dist/esm/src/multer/multipart/handlers/multiple-files.js.map +1 -0
  227. package/dist/esm/src/multer/multipart/handlers/single-file.d.ts +8 -0
  228. package/dist/esm/src/multer/multipart/handlers/single-file.js +41 -0
  229. package/dist/esm/src/multer/multipart/handlers/single-file.js.map +1 -0
  230. package/dist/esm/src/multer/multipart/index.d.ts +3 -0
  231. package/dist/esm/src/multer/multipart/index.js +3 -0
  232. package/dist/esm/src/multer/multipart/index.js.map +1 -0
  233. package/dist/esm/src/multer/multipart/options.d.ts +21 -0
  234. package/dist/esm/src/multer/multipart/options.js +19 -0
  235. package/dist/esm/src/multer/multipart/options.js.map +1 -0
  236. package/dist/esm/src/multer/multipart/request.d.ts +14 -0
  237. package/dist/esm/src/multer/multipart/request.js +17 -0
  238. package/dist/esm/src/multer/multipart/request.js.map +1 -0
  239. package/dist/esm/src/multer/storage/disk-storage.d.ts +31 -0
  240. package/dist/esm/src/multer/storage/disk-storage.js +58 -0
  241. package/dist/esm/src/multer/storage/disk-storage.js.map +1 -0
  242. package/dist/esm/src/multer/storage/index.d.ts +3 -0
  243. package/dist/esm/src/multer/storage/index.js +4 -0
  244. package/dist/esm/src/multer/storage/index.js.map +1 -0
  245. package/dist/esm/src/multer/storage/memory-storage.d.ts +16 -0
  246. package/dist/esm/src/multer/storage/memory-storage.js +17 -0
  247. package/dist/esm/src/multer/storage/memory-storage.js.map +1 -0
  248. package/dist/esm/src/multer/storage/storage.d.ts +13 -0
  249. package/dist/esm/src/multer/storage/storage.js +2 -0
  250. package/dist/esm/src/multer/storage/storage.js.map +1 -0
  251. package/dist/esm/src/multer/stream/index.d.ts +2 -0
  252. package/dist/esm/src/multer/stream/index.js +4 -0
  253. package/dist/esm/src/multer/stream/index.js.map +1 -0
  254. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  255. package/package.json +1 -1
  256. package/src/adapters/hono-adapter.ts +380 -0
  257. package/src/adapters/index.ts +1 -0
  258. package/src/drivers/constants/apollo.constants.ts +1 -0
  259. package/src/drivers/constants/index.ts +1 -0
  260. package/src/drivers/graphQLUpload/GraphQLUpload.ts +17 -0
  261. package/src/drivers/graphQLUpload/Upload.ts +35 -0
  262. package/src/drivers/graphQLUpload/fs-capacitor.ts +285 -0
  263. package/src/drivers/graphQLUpload/index.ts +4 -0
  264. package/src/drivers/graphQLUpload/processRequest.ts +57 -0
  265. package/src/drivers/graphql.driver.ts +171 -0
  266. package/src/drivers/index.ts +2 -0
  267. package/src/drivers/services/plugins-explorer.service.ts +27 -0
  268. package/src/interfaces/hono.interface.ts +5 -0
  269. package/src/interfaces/index.ts +2 -0
  270. package/src/interfaces/nest-hono-application.interface.ts +72 -0
  271. package/src/multer/crypto/index.ts +4 -0
  272. package/src/multer/decorators/index.ts +2 -0
  273. package/src/multer/decorators/uploaded-file-decorator.ts +12 -0
  274. package/src/multer/decorators/uploaded-files-decorator.ts +15 -0
  275. package/src/multer/fs/index.ts +22 -0
  276. package/src/multer/index.ts +4 -0
  277. package/src/multer/interceptors/any-files-interceptor.ts +50 -0
  278. package/src/multer/interceptors/file-fields-interceptor.ts +60 -0
  279. package/src/multer/interceptors/file-interceptor.ts +52 -0
  280. package/src/multer/interceptors/files-interceptor.ts +54 -0
  281. package/src/multer/interceptors/index.ts +4 -0
  282. package/src/multer/multipart/exceptions.ts +25 -0
  283. package/src/multer/multipart/file.ts +18 -0
  284. package/src/multer/multipart/filter.ts +38 -0
  285. package/src/multer/multipart/handlers/any-files.ts +39 -0
  286. package/src/multer/multipart/handlers/file-fields.ts +89 -0
  287. package/src/multer/multipart/handlers/index.ts +1 -0
  288. package/src/multer/multipart/handlers/multiple-files.ts +55 -0
  289. package/src/multer/multipart/handlers/single-file.ts +56 -0
  290. package/src/multer/multipart/index.ts +3 -0
  291. package/src/multer/multipart/options.ts +29 -0
  292. package/src/multer/multipart/request.ts +40 -0
  293. package/src/multer/storage/disk-storage.ts +107 -0
  294. package/src/multer/storage/index.ts +3 -0
  295. package/src/multer/storage/memory-storage.ts +25 -0
  296. package/src/multer/storage/storage.ts +15 -0
  297. package/src/multer/stream/index.ts +4 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kiyasov/platform-hono",
3
- "version": "1.3.7",
3
+ "version": "1.3.9",
4
4
  "description": "Nest adapter for Hono",
5
5
  "author": "Islam Kiiasov",
6
6
  "repository": {
@@ -0,0 +1,380 @@
1
+ import { Server } from "node:net";
2
+ import { HttpBindings, createAdaptorServer } from "@hono/node-server";
3
+ import { RESPONSE_ALREADY_SENT } from "@hono/node-server/utils/response";
4
+ import { RequestMethod } from "@nestjs/common";
5
+ import { HttpStatus, Logger } from "@nestjs/common";
6
+ import { bodyLimit } from "hono/body-limit";
7
+ import {
8
+ ErrorHandler,
9
+ NestApplicationOptions,
10
+ RequestHandler,
11
+ } from "@nestjs/common/interfaces";
12
+ import {
13
+ ServeStaticOptions,
14
+ serveStatic,
15
+ } from "@hono/node-server/serve-static";
16
+ import { AbstractHttpAdapter } from "@nestjs/core/adapters/http-adapter";
17
+ import { Context, Next, Hono } from "hono";
18
+ import { cors } from "hono/cors";
19
+ import { RedirectStatusCode, StatusCode } from "hono/utils/http-status";
20
+ import * as http from "http";
21
+ import { Http2SecureServer, Http2Server } from "http2";
22
+ import * as https from "https";
23
+ import { HonoRequest, TypeBodyParser } from "../interfaces";
24
+
25
+ type HonoHandler = RequestHandler<HonoRequest, Context>;
26
+
27
+ type ServerType = Server | Http2Server | Http2SecureServer;
28
+
29
+ /**
30
+ * Adapter for using Hono with NestJS.
31
+ */
32
+ export class HonoAdapter extends AbstractHttpAdapter<
33
+ ServerType,
34
+ HonoRequest,
35
+ Context
36
+ > {
37
+ protected readonly instance: Hono<{ Bindings: HttpBindings }>;
38
+ private _isParserRegistered: boolean;
39
+
40
+ constructor() {
41
+ super(new Hono());
42
+ }
43
+
44
+ get isParserRegistered(): boolean {
45
+ return !!this._isParserRegistered;
46
+ }
47
+
48
+ private getRouteAndHandler(
49
+ pathOrHandler: string | HonoHandler,
50
+ handler?: HonoHandler
51
+ ): [string, HonoHandler] {
52
+ let path = typeof pathOrHandler === "function" ? "" : pathOrHandler;
53
+ handler = typeof pathOrHandler === "function" ? pathOrHandler : handler;
54
+ return [path, handler];
55
+ }
56
+
57
+ private createRouteHandler(routeHandler: HonoHandler) {
58
+ return async (ctx: Context, next: Next) => {
59
+ ctx.req["params"] = ctx.req.param();
60
+ await routeHandler(ctx.req, ctx, next);
61
+ return this.send(ctx);
62
+ };
63
+ }
64
+
65
+ private send(ctx: Context) {
66
+ const body = ctx.get("body");
67
+ return typeof body === "string" ? ctx.text(body) : ctx.json(body);
68
+ }
69
+
70
+ public get(pathOrHandler: string | HonoHandler, handler?: HonoHandler) {
71
+ const [routePath, routeHandler] = this.getRouteAndHandler(
72
+ pathOrHandler,
73
+ handler
74
+ );
75
+ this.instance.get(routePath, this.createRouteHandler(routeHandler));
76
+ }
77
+
78
+ public post(pathOrHandler: string | HonoHandler, handler?: HonoHandler) {
79
+ const [routePath, routeHandler] = this.getRouteAndHandler(
80
+ pathOrHandler,
81
+ handler
82
+ );
83
+ this.instance.post(routePath, this.createRouteHandler(routeHandler));
84
+ }
85
+
86
+ public put(pathOrHandler: string | HonoHandler, handler?: HonoHandler) {
87
+ const [routePath, routeHandler] = this.getRouteAndHandler(
88
+ pathOrHandler,
89
+ handler
90
+ );
91
+ this.instance.put(routePath, this.createRouteHandler(routeHandler));
92
+ }
93
+
94
+ public delete(pathOrHandler: string | HonoHandler, handler?: HonoHandler) {
95
+ const [routePath, routeHandler] = this.getRouteAndHandler(
96
+ pathOrHandler,
97
+ handler
98
+ );
99
+ this.instance.delete(routePath, this.createRouteHandler(routeHandler));
100
+ }
101
+
102
+ public use(pathOrHandler: string | HonoHandler, handler?: HonoHandler) {
103
+ const [routePath, routeHandler] = this.getRouteAndHandler(
104
+ pathOrHandler,
105
+ handler
106
+ );
107
+ this.instance.use(routePath, this.createRouteHandler(routeHandler));
108
+ }
109
+
110
+ public patch(pathOrHandler: string | HonoHandler, handler?: HonoHandler) {
111
+ const [routePath, routeHandler] = this.getRouteAndHandler(
112
+ pathOrHandler,
113
+ handler
114
+ );
115
+ this.instance.patch(routePath, this.createRouteHandler(routeHandler));
116
+ }
117
+
118
+ public options(pathOrHandler: string | HonoHandler, handler?: HonoHandler) {
119
+ const [routePath, routeHandler] = this.getRouteAndHandler(
120
+ pathOrHandler,
121
+ handler
122
+ );
123
+ this.instance.options(routePath, this.createRouteHandler(routeHandler));
124
+ }
125
+
126
+ public async reply(ctx: Context, body: any, statusCode?: StatusCode) {
127
+ if (statusCode) ctx.status(statusCode);
128
+
129
+ const responseContentType = this.getHeader(ctx, "Content-Type");
130
+ if (
131
+ !responseContentType?.startsWith("application/json") &&
132
+ body?.statusCode >= HttpStatus.BAD_REQUEST
133
+ ) {
134
+ Logger.warn(
135
+ "Content-Type doesn't match Reply body, you might need a custom ExceptionFilter for non-JSON responses"
136
+ );
137
+ this.setHeader(ctx, "Content-Type", "application/json");
138
+ }
139
+ ctx.set("body", body);
140
+ }
141
+
142
+ public async status(
143
+ ctx: Context | (() => Promise<Context>),
144
+ statusCode: StatusCode
145
+ ) {
146
+ if (typeof ctx === "function") {
147
+ ctx = await ctx();
148
+ }
149
+
150
+ if (ctx && typeof ctx.status === "function") {
151
+ ctx.status(statusCode);
152
+ } else {
153
+ throw new Error("Invalid context: status method not found.");
154
+ }
155
+ }
156
+
157
+ public async end() {
158
+ return RESPONSE_ALREADY_SENT;
159
+ }
160
+
161
+ public render(response: any, view: string, options: any) {
162
+ throw new Error("Method not implemented.");
163
+ }
164
+
165
+ public async redirect(
166
+ ctx: Context | (() => Promise<Context>),
167
+ statusCode: RedirectStatusCode,
168
+ url: string
169
+ ) {
170
+ if (typeof ctx === "function") {
171
+ ctx = await ctx();
172
+ }
173
+
174
+ if (ctx && typeof ctx.redirect === "function") {
175
+ ctx.redirect(url, statusCode);
176
+ } else {
177
+ throw new Error("Invalid context: redirect method not found.");
178
+ }
179
+ }
180
+
181
+ public setErrorHandler(handler: ErrorHandler) {
182
+ this.instance.onError(async (err: Error, ctx: Context) => {
183
+ await handler(err, ctx.req, ctx);
184
+ return this.send(ctx);
185
+ });
186
+ }
187
+
188
+ public setNotFoundHandler(handler: RequestHandler) {
189
+ this.instance.notFound(async (ctx: Context) => {
190
+ await handler(ctx.req, ctx);
191
+ return this.send(ctx);
192
+ });
193
+ }
194
+
195
+ public useStaticAssets(path: string, options: ServeStaticOptions) {
196
+ Logger.log("Registering static assets middleware");
197
+ this.instance.use(path, serveStatic(options));
198
+ }
199
+
200
+ public setViewEngine(options: any | string) {
201
+ throw new Error("Method not implemented.");
202
+ }
203
+
204
+ public isHeadersSent(ctx: Context): boolean {
205
+ return true;
206
+ }
207
+
208
+ public getHeader?(ctx: Context, name: string) {
209
+ return ctx.req.header(name);
210
+ }
211
+
212
+ public async setHeader(
213
+ ctx: Context | (() => Promise<Context>),
214
+ name: string,
215
+ value: string
216
+ ) {
217
+ if (typeof ctx === "function") {
218
+ ctx = await ctx();
219
+ }
220
+
221
+ if (ctx && typeof ctx.header === "function") {
222
+ ctx.header(name, value);
223
+ } else {
224
+ throw new Error("Invalid context: set method not found on context.");
225
+ }
226
+ }
227
+
228
+ public async appendHeader?(
229
+ ctx: Context | (() => Promise<Context>),
230
+ name: string,
231
+ value: string
232
+ ) {
233
+ if (typeof ctx === "function") {
234
+ ctx = await ctx();
235
+ }
236
+
237
+ if (ctx && typeof ctx.res.headers.append === "function") {
238
+ ctx.res.headers.append(name, value);
239
+ } else {
240
+ throw new Error("Invalid context: append method not found on context.");
241
+ }
242
+ }
243
+
244
+ public getRequestHostname(ctx: Context): string {
245
+ return ctx.req.header().host;
246
+ }
247
+
248
+ public getRequestMethod(request: HonoRequest): string {
249
+ return request.method;
250
+ }
251
+
252
+ public getRequestUrl(request: HonoRequest): string {
253
+ return request.url;
254
+ }
255
+
256
+ public enableCors(options: any) {
257
+ this.instance.use(cors(options));
258
+ }
259
+
260
+ public useBodyParser(
261
+ type: TypeBodyParser,
262
+ rawBody?: boolean,
263
+ bodyLimit?: number
264
+ ) {
265
+ Logger.log(
266
+ `Registering body parser middleware for type: ${type} | bodyLimit: ${bodyLimit}`
267
+ );
268
+ this.instance.use(this.bodyLimit(bodyLimit));
269
+
270
+ // To avoid the Nest application init to override our custom
271
+ // body parser, we mark the parsers as registered.
272
+ this._isParserRegistered = true;
273
+ }
274
+
275
+ public close(): Promise<void> {
276
+ return new Promise((resolve) => this.httpServer.close(() => resolve()));
277
+ }
278
+
279
+ public initHttpServer(options: NestApplicationOptions) {
280
+ this.instance.use(async (ctx, next) => {
281
+ ctx.req["ip"] =
282
+ ctx.req.header("cf-connecting-ip") ??
283
+ ctx.req.header("x-forwarded-for") ??
284
+ ctx.req.header("x-real-ip") ??
285
+ ctx.req.header("forwarded") ??
286
+ ctx.req.header("true-client-ip") ??
287
+ ctx.req.header("x-client-ip") ??
288
+ ctx.req.header("x-cluster-client-ip") ??
289
+ ctx.req.header("x-forwarded") ??
290
+ ctx.req.header("forwarded-for") ??
291
+ ctx.req.header("via");
292
+ ctx.req["query"] = ctx.req.query() as any;
293
+ ctx.req["headers"] = Object.fromEntries(ctx.req.raw.headers);
294
+
295
+ const contentType = ctx.req.header("content-type");
296
+
297
+ if (
298
+ contentType?.startsWith("multipart/form-data") ||
299
+ contentType?.startsWith("application/x-www-form-urlencoded")
300
+ ) {
301
+ (ctx.req as any).body = await ctx.req.parseBody({
302
+ all: true,
303
+ });
304
+ } else if (
305
+ contentType?.startsWith("application/json") ||
306
+ contentType?.startsWith("text/plain")
307
+ ) {
308
+ if (options.rawBody) {
309
+ (ctx.req as any).rawBody = Buffer.from(await ctx.req.text());
310
+ }
311
+ (ctx.req as any).body = await ctx.req.json();
312
+ }
313
+
314
+ return next();
315
+ });
316
+ const isHttpsEnabled = options?.httpsOptions;
317
+ const createServer = isHttpsEnabled
318
+ ? https.createServer
319
+ : http.createServer;
320
+ this.httpServer = createAdaptorServer({
321
+ fetch: this.instance.fetch,
322
+ createServer,
323
+ overrideGlobalObjects: false,
324
+ });
325
+ }
326
+
327
+ public getType(): string {
328
+ return "hono";
329
+ }
330
+
331
+ public registerParserMiddleware(_prefix?: string, rawBody?: boolean) {
332
+ if (this._isParserRegistered) {
333
+ return;
334
+ }
335
+
336
+ Logger.log("Registering parser middleware");
337
+ this.useBodyParser("application/x-www-form-urlencoded", rawBody);
338
+ this.useBodyParser("application/json", rawBody);
339
+ this.useBodyParser("text/plain", rawBody);
340
+
341
+ this._isParserRegistered = true;
342
+ }
343
+
344
+ public async createMiddlewareFactory(requestMethod: RequestMethod) {
345
+ return (path: string, callback: Function) => {
346
+ const routeMethodsMap = {
347
+ [RequestMethod.ALL]: this.instance.all,
348
+ [RequestMethod.DELETE]: this.instance.delete,
349
+ [RequestMethod.GET]: this.instance.get,
350
+ [RequestMethod.OPTIONS]: this.instance.options,
351
+ [RequestMethod.PATCH]: this.instance.patch,
352
+ [RequestMethod.POST]: this.instance.post,
353
+ [RequestMethod.PUT]: this.instance.put,
354
+ };
355
+ const routeMethod = (
356
+ routeMethodsMap[requestMethod] || this.instance.get
357
+ ).bind(this.instance);
358
+ routeMethod(path, async (ctx: Context, next: Function) => {
359
+ await callback(ctx.req, ctx, next);
360
+ });
361
+ };
362
+ }
363
+
364
+ public applyVersionFilter(): () => () => any {
365
+ throw new Error("Versioning not yet supported in Hono");
366
+ }
367
+
368
+ public listen(port: string | number, ...args: any[]): ServerType {
369
+ return this.httpServer.listen(port, ...args);
370
+ }
371
+
372
+ public bodyLimit(maxSize: number) {
373
+ return bodyLimit({
374
+ maxSize,
375
+ onError: () => {
376
+ throw new Error("Body too large");
377
+ },
378
+ });
379
+ }
380
+ }
@@ -0,0 +1 @@
1
+ export * from "./hono-adapter";
@@ -0,0 +1 @@
1
+ export const PLUGIN_METADATA = 'graphql:plugin';
@@ -0,0 +1 @@
1
+ export * from './apollo.constants';
@@ -0,0 +1,17 @@
1
+ import { Upload } from "./Upload";
2
+ import { ASTNode, GraphQLError, GraphQLScalarType } from "graphql";
3
+
4
+ export const GraphQLUpload = new GraphQLScalarType({
5
+ name: "Upload",
6
+ description: "The `Upload` scalar type represents a file upload.",
7
+ parseValue(value: { promise: Promise<Upload> }) {
8
+ if (value instanceof Upload) return value.promise;
9
+ throw new GraphQLError("Upload value invalid.");
10
+ },
11
+ parseLiteral(node: ASTNode | ASTNode[]) {
12
+ throw new GraphQLError("Upload literal unsupported.", { nodes: node });
13
+ },
14
+ serialize() {
15
+ throw new GraphQLError("Upload serialization unsupported.");
16
+ },
17
+ });
@@ -0,0 +1,35 @@
1
+ import { ReadStream, ReadStreamOptions, WriteStream } from "./fs-capacitor";
2
+
3
+ export interface FileUpload {
4
+ filename: string;
5
+ fieldName: string;
6
+ mimetype: string;
7
+ encoding: string;
8
+
9
+ createReadStream(options?: ReadStreamOptions): ReadStream;
10
+
11
+ capacitor: WriteStream;
12
+ }
13
+
14
+ export class Upload {
15
+ promise: Promise<FileUpload>;
16
+ resolve: (file?: FileUpload) => void;
17
+ reject: (error?: Error | string) => void;
18
+ file?: FileUpload;
19
+
20
+ constructor() {
21
+ this.promise = new Promise((resolve, reject) => {
22
+ this.resolve = (file) => {
23
+ this.file = file;
24
+
25
+ resolve(file);
26
+ };
27
+
28
+ this.reject = reject;
29
+ });
30
+
31
+ // Prevent errors crashing Node.js, see:
32
+ // https://github.com/nodejs/node/issues/20392
33
+ this.promise.catch(() => {});
34
+ }
35
+ }