@kiyasov/platform-hono 1.4.1 → 1.4.2

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 (333) hide show
  1. package/.prettierignore +1 -0
  2. package/.prettierrc +3 -0
  3. package/dist/build.d.ts +1 -0
  4. package/dist/build.js +28 -0
  5. package/dist/build.js.map +1 -0
  6. package/dist/cjs/index.d.ts +4 -4
  7. package/dist/cjs/src/adapters/hono-adapter.d.ts +22 -15
  8. package/dist/cjs/src/adapters/hono-adapter.js +60 -58
  9. package/dist/cjs/src/adapters/hono-adapter.js.map +1 -1
  10. package/dist/cjs/src/adapters/index.d.ts +1 -1
  11. package/dist/cjs/src/drivers/graphQLUpload/GraphQLUpload.d.ts +2 -2
  12. package/dist/cjs/src/drivers/graphQLUpload/GraphQLUpload.js +6 -6
  13. package/dist/cjs/src/drivers/graphQLUpload/GraphQLUpload.js.map +1 -1
  14. package/dist/cjs/src/drivers/graphQLUpload/Upload.d.ts +1 -1
  15. package/dist/cjs/src/drivers/graphQLUpload/fs-capacitor.d.ts +8 -8
  16. package/dist/cjs/src/drivers/graphQLUpload/fs-capacitor.js +30 -30
  17. package/dist/cjs/src/drivers/graphQLUpload/fs-capacitor.js.map +1 -1
  18. package/dist/cjs/src/drivers/graphQLUpload/index.d.ts +4 -4
  19. package/dist/cjs/src/drivers/graphQLUpload/processRequest.d.ts +2 -2
  20. package/dist/cjs/src/drivers/graphQLUpload/processRequest.js +6 -6
  21. package/dist/cjs/src/drivers/graphQLUpload/processRequest.js.map +1 -1
  22. package/dist/cjs/src/drivers/graphql.driver.d.ts +4 -4
  23. package/dist/cjs/src/drivers/graphql.driver.js +12 -12
  24. package/dist/cjs/src/drivers/graphql.driver.js.map +1 -1
  25. package/dist/cjs/src/drivers/index.d.ts +2 -2
  26. package/dist/cjs/src/drivers/services/plugins-explorer.service.d.ts +1 -1
  27. package/dist/cjs/src/drivers/services/plugins-explorer.service.js.map +1 -1
  28. package/dist/cjs/src/interfaces/hono.interface.d.ts +1 -1
  29. package/dist/cjs/src/interfaces/index.d.ts +2 -2
  30. package/dist/cjs/src/interfaces/nest-hono-application.interface.d.ts +4 -4
  31. package/dist/cjs/src/multer/decorators/index.d.ts +2 -2
  32. package/dist/cjs/src/multer/decorators/uploaded-files-decorator.d.ts +1 -1
  33. package/dist/cjs/src/multer/decorators/uploaded-files-decorator.js.map +1 -1
  34. package/dist/cjs/src/multer/fs/index.js +8 -8
  35. package/dist/cjs/src/multer/fs/index.js.map +1 -1
  36. package/dist/cjs/src/multer/index.d.ts +4 -4
  37. package/dist/cjs/src/multer/interceptors/any-files-interceptor.d.ts +2 -2
  38. package/dist/cjs/src/multer/interceptors/any-files-interceptor.js +4 -4
  39. package/dist/cjs/src/multer/interceptors/any-files-interceptor.js.map +1 -1
  40. package/dist/cjs/src/multer/interceptors/file-fields-interceptor.d.ts +3 -3
  41. package/dist/cjs/src/multer/interceptors/file-fields-interceptor.js +4 -4
  42. package/dist/cjs/src/multer/interceptors/file-fields-interceptor.js.map +1 -1
  43. package/dist/cjs/src/multer/interceptors/file-interceptor.d.ts +2 -2
  44. package/dist/cjs/src/multer/interceptors/file-interceptor.js +4 -4
  45. package/dist/cjs/src/multer/interceptors/file-interceptor.js.map +1 -1
  46. package/dist/cjs/src/multer/interceptors/files-interceptor.d.ts +2 -2
  47. package/dist/cjs/src/multer/interceptors/files-interceptor.js +4 -4
  48. package/dist/cjs/src/multer/interceptors/files-interceptor.js.map +1 -1
  49. package/dist/cjs/src/multer/interceptors/index.d.ts +4 -4
  50. package/dist/cjs/src/multer/multipart/exceptions.js.map +1 -1
  51. package/dist/cjs/src/multer/multipart/file.d.ts +1 -1
  52. package/dist/cjs/src/multer/multipart/file.js.map +1 -1
  53. package/dist/cjs/src/multer/multipart/filter.d.ts +1 -1
  54. package/dist/cjs/src/multer/multipart/handlers/any-files.d.ts +6 -4
  55. package/dist/cjs/src/multer/multipart/handlers/any-files.js +1 -1
  56. package/dist/cjs/src/multer/multipart/handlers/any-files.js.map +1 -1
  57. package/dist/cjs/src/multer/multipart/handlers/file-fields.d.ts +9 -6
  58. package/dist/cjs/src/multer/multipart/handlers/file-fields.js +8 -20
  59. package/dist/cjs/src/multer/multipart/handlers/file-fields.js.map +1 -1
  60. package/dist/cjs/src/multer/multipart/handlers/index.d.ts +1 -1
  61. package/dist/cjs/src/multer/multipart/handlers/multiple-files.d.ts +6 -4
  62. package/dist/cjs/src/multer/multipart/handlers/multiple-files.js +1 -1
  63. package/dist/cjs/src/multer/multipart/handlers/multiple-files.js.map +1 -1
  64. package/dist/cjs/src/multer/multipart/handlers/single-file.d.ts +6 -4
  65. package/dist/cjs/src/multer/multipart/handlers/single-file.js +6 -6
  66. package/dist/cjs/src/multer/multipart/handlers/single-file.js.map +1 -1
  67. package/dist/cjs/src/multer/multipart/index.d.ts +3 -3
  68. package/dist/cjs/src/multer/multipart/options.js.map +1 -1
  69. package/dist/cjs/src/multer/multipart/request.d.ts +8 -7
  70. package/dist/cjs/src/multer/multipart/request.js +6 -6
  71. package/dist/cjs/src/multer/multipart/request.js.map +1 -1
  72. package/dist/cjs/src/multer/storage/disk-storage.d.ts +2 -2
  73. package/dist/cjs/src/multer/storage/disk-storage.js +5 -5
  74. package/dist/cjs/src/multer/storage/disk-storage.js.map +1 -1
  75. package/dist/cjs/src/multer/storage/index.d.ts +3 -3
  76. package/dist/cjs/src/multer/storage/memory-storage.d.ts +4 -3
  77. package/dist/cjs/src/multer/storage/memory-storage.js +1 -1
  78. package/dist/cjs/src/multer/storage/memory-storage.js.map +1 -1
  79. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  80. package/dist/esm/build.d.ts +1 -0
  81. package/dist/esm/build.js +28 -0
  82. package/dist/esm/build.js.map +1 -0
  83. package/dist/esm/index.d.ts +4 -4
  84. package/dist/esm/index.js +4 -4
  85. package/dist/esm/src/adapters/hono-adapter.d.ts +22 -15
  86. package/dist/esm/src/adapters/hono-adapter.js +69 -67
  87. package/dist/esm/src/adapters/hono-adapter.js.map +1 -1
  88. package/dist/esm/src/adapters/index.d.ts +1 -1
  89. package/dist/esm/src/adapters/index.js +1 -1
  90. package/dist/esm/src/drivers/graphQLUpload/GraphQLUpload.d.ts +2 -2
  91. package/dist/esm/src/drivers/graphQLUpload/GraphQLUpload.js +7 -7
  92. package/dist/esm/src/drivers/graphQLUpload/GraphQLUpload.js.map +1 -1
  93. package/dist/esm/src/drivers/graphQLUpload/Upload.d.ts +1 -1
  94. package/dist/esm/src/drivers/graphQLUpload/fs-capacitor.d.ts +8 -8
  95. package/dist/esm/src/drivers/graphQLUpload/fs-capacitor.js +35 -35
  96. package/dist/esm/src/drivers/graphQLUpload/fs-capacitor.js.map +1 -1
  97. package/dist/esm/src/drivers/graphQLUpload/index.d.ts +4 -4
  98. package/dist/esm/src/drivers/graphQLUpload/index.js +4 -4
  99. package/dist/esm/src/drivers/graphQLUpload/processRequest.d.ts +2 -2
  100. package/dist/esm/src/drivers/graphQLUpload/processRequest.js +7 -7
  101. package/dist/esm/src/drivers/graphQLUpload/processRequest.js.map +1 -1
  102. package/dist/esm/src/drivers/graphql.driver.d.ts +4 -4
  103. package/dist/esm/src/drivers/graphql.driver.js +16 -16
  104. package/dist/esm/src/drivers/graphql.driver.js.map +1 -1
  105. package/dist/esm/src/drivers/index.d.ts +2 -2
  106. package/dist/esm/src/drivers/index.js +2 -2
  107. package/dist/esm/src/drivers/services/plugins-explorer.service.d.ts +1 -1
  108. package/dist/esm/src/drivers/services/plugins-explorer.service.js.map +1 -1
  109. package/dist/esm/src/interfaces/hono.interface.d.ts +1 -1
  110. package/dist/esm/src/interfaces/index.d.ts +2 -2
  111. package/dist/esm/src/interfaces/index.js +2 -2
  112. package/dist/esm/src/interfaces/nest-hono-application.interface.d.ts +4 -4
  113. package/dist/esm/src/multer/decorators/index.d.ts +2 -2
  114. package/dist/esm/src/multer/decorators/index.js +2 -2
  115. package/dist/esm/src/multer/decorators/uploaded-files-decorator.d.ts +1 -1
  116. package/dist/esm/src/multer/decorators/uploaded-files-decorator.js.map +1 -1
  117. package/dist/esm/src/multer/fs/index.js +7 -7
  118. package/dist/esm/src/multer/fs/index.js.map +1 -1
  119. package/dist/esm/src/multer/index.d.ts +4 -4
  120. package/dist/esm/src/multer/index.js +4 -4
  121. package/dist/esm/src/multer/interceptors/any-files-interceptor.d.ts +2 -2
  122. package/dist/esm/src/multer/interceptors/any-files-interceptor.js +6 -6
  123. package/dist/esm/src/multer/interceptors/any-files-interceptor.js.map +1 -1
  124. package/dist/esm/src/multer/interceptors/file-fields-interceptor.d.ts +3 -3
  125. package/dist/esm/src/multer/interceptors/file-fields-interceptor.js +6 -6
  126. package/dist/esm/src/multer/interceptors/file-fields-interceptor.js.map +1 -1
  127. package/dist/esm/src/multer/interceptors/file-interceptor.d.ts +2 -2
  128. package/dist/esm/src/multer/interceptors/file-interceptor.js +6 -6
  129. package/dist/esm/src/multer/interceptors/file-interceptor.js.map +1 -1
  130. package/dist/esm/src/multer/interceptors/files-interceptor.d.ts +2 -2
  131. package/dist/esm/src/multer/interceptors/files-interceptor.js +6 -6
  132. package/dist/esm/src/multer/interceptors/files-interceptor.js.map +1 -1
  133. package/dist/esm/src/multer/interceptors/index.d.ts +4 -4
  134. package/dist/esm/src/multer/interceptors/index.js +4 -4
  135. package/dist/esm/src/multer/multipart/exceptions.js.map +1 -1
  136. package/dist/esm/src/multer/multipart/file.d.ts +1 -1
  137. package/dist/esm/src/multer/multipart/file.js.map +1 -1
  138. package/dist/esm/src/multer/multipart/filter.d.ts +1 -1
  139. package/dist/esm/src/multer/multipart/handlers/any-files.d.ts +6 -4
  140. package/dist/esm/src/multer/multipart/handlers/any-files.js +3 -3
  141. package/dist/esm/src/multer/multipart/handlers/any-files.js.map +1 -1
  142. package/dist/esm/src/multer/multipart/handlers/file-fields.d.ts +9 -6
  143. package/dist/esm/src/multer/multipart/handlers/file-fields.js +11 -23
  144. package/dist/esm/src/multer/multipart/handlers/file-fields.js.map +1 -1
  145. package/dist/esm/src/multer/multipart/handlers/index.d.ts +1 -1
  146. package/dist/esm/src/multer/multipart/handlers/multiple-files.d.ts +6 -4
  147. package/dist/esm/src/multer/multipart/handlers/multiple-files.js +4 -4
  148. package/dist/esm/src/multer/multipart/handlers/multiple-files.js.map +1 -1
  149. package/dist/esm/src/multer/multipart/handlers/single-file.d.ts +6 -4
  150. package/dist/esm/src/multer/multipart/handlers/single-file.js +8 -8
  151. package/dist/esm/src/multer/multipart/handlers/single-file.js.map +1 -1
  152. package/dist/esm/src/multer/multipart/index.d.ts +3 -3
  153. package/dist/esm/src/multer/multipart/index.js +2 -2
  154. package/dist/esm/src/multer/multipart/options.js.map +1 -1
  155. package/dist/esm/src/multer/multipart/request.d.ts +8 -7
  156. package/dist/esm/src/multer/multipart/request.js +7 -7
  157. package/dist/esm/src/multer/multipart/request.js.map +1 -1
  158. package/dist/esm/src/multer/storage/disk-storage.d.ts +2 -2
  159. package/dist/esm/src/multer/storage/disk-storage.js +9 -9
  160. package/dist/esm/src/multer/storage/disk-storage.js.map +1 -1
  161. package/dist/esm/src/multer/storage/index.d.ts +3 -3
  162. package/dist/esm/src/multer/storage/index.js +3 -3
  163. package/dist/esm/src/multer/storage/memory-storage.d.ts +3 -3
  164. package/dist/esm/src/multer/storage/memory-storage.js +1 -1
  165. package/dist/esm/src/multer/storage/memory-storage.js.map +1 -1
  166. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  167. package/dist/index.d.ts +4 -0
  168. package/dist/index.js +5 -0
  169. package/dist/index.js.map +1 -0
  170. package/dist/src/adapters/hono-adapter.d.ts +66 -0
  171. package/dist/src/adapters/hono-adapter.js +270 -0
  172. package/dist/src/adapters/hono-adapter.js.map +1 -0
  173. package/dist/src/adapters/index.d.ts +1 -0
  174. package/dist/src/adapters/index.js +2 -0
  175. package/dist/src/adapters/index.js.map +1 -0
  176. package/dist/src/drivers/constants/apollo.constants.d.ts +1 -0
  177. package/dist/src/drivers/constants/apollo.constants.js +2 -0
  178. package/dist/src/drivers/constants/apollo.constants.js.map +1 -0
  179. package/dist/src/drivers/constants/index.d.ts +1 -0
  180. package/dist/src/drivers/constants/index.js +2 -0
  181. package/dist/src/drivers/constants/index.js.map +1 -0
  182. package/dist/src/drivers/graphQLUpload/GraphQLUpload.d.ts +3 -0
  183. package/dist/src/drivers/graphQLUpload/GraphQLUpload.js +18 -0
  184. package/dist/src/drivers/graphQLUpload/GraphQLUpload.js.map +1 -0
  185. package/dist/src/drivers/graphQLUpload/Upload.d.ts +16 -0
  186. package/dist/src/drivers/graphQLUpload/Upload.js +17 -0
  187. package/dist/src/drivers/graphQLUpload/Upload.js.map +1 -0
  188. package/dist/src/drivers/graphQLUpload/fs-capacitor.d.ts +42 -0
  189. package/dist/src/drivers/graphQLUpload/fs-capacitor.js +185 -0
  190. package/dist/src/drivers/graphQLUpload/fs-capacitor.js.map +1 -0
  191. package/dist/src/drivers/graphQLUpload/index.d.ts +4 -0
  192. package/dist/src/drivers/graphQLUpload/index.js +5 -0
  193. package/dist/src/drivers/graphQLUpload/index.js.map +1 -0
  194. package/dist/src/drivers/graphQLUpload/processRequest.d.ts +2 -0
  195. package/dist/src/drivers/graphQLUpload/processRequest.js +47 -0
  196. package/dist/src/drivers/graphQLUpload/processRequest.js.map +1 -0
  197. package/dist/src/drivers/graphql.driver.d.ts +20 -0
  198. package/dist/src/drivers/graphql.driver.js +125 -0
  199. package/dist/src/drivers/graphql.driver.js.map +1 -0
  200. package/dist/src/drivers/index.d.ts +2 -0
  201. package/dist/src/drivers/index.js +3 -0
  202. package/dist/src/drivers/index.js.map +1 -0
  203. package/dist/src/drivers/services/plugins-explorer.service.d.ts +9 -0
  204. package/dist/src/drivers/services/plugins-explorer.service.js +22 -0
  205. package/dist/src/drivers/services/plugins-explorer.service.js.map +1 -0
  206. package/dist/src/interfaces/hono.interface.d.ts +4 -0
  207. package/dist/src/interfaces/hono.interface.js +2 -0
  208. package/dist/src/interfaces/hono.interface.js.map +1 -0
  209. package/dist/src/interfaces/index.d.ts +2 -0
  210. package/dist/src/interfaces/index.js +3 -0
  211. package/dist/src/interfaces/index.js.map +1 -0
  212. package/dist/src/interfaces/nest-hono-application.interface.d.ts +18 -0
  213. package/dist/src/interfaces/nest-hono-application.interface.js +2 -0
  214. package/dist/src/interfaces/nest-hono-application.interface.js.map +1 -0
  215. package/dist/src/multer/decorators/index.d.ts +2 -0
  216. package/dist/src/multer/decorators/index.js +3 -0
  217. package/dist/src/multer/decorators/index.js.map +1 -0
  218. package/dist/src/multer/decorators/uploaded-file-decorator.d.ts +1 -0
  219. package/dist/src/multer/decorators/uploaded-file-decorator.js +7 -0
  220. package/dist/src/multer/decorators/uploaded-file-decorator.js.map +1 -0
  221. package/dist/src/multer/decorators/uploaded-files-decorator.d.ts +1 -0
  222. package/dist/src/multer/decorators/uploaded-files-decorator.js +7 -0
  223. package/dist/src/multer/decorators/uploaded-files-decorator.js.map +1 -0
  224. package/dist/src/multer/fs/index.d.ts +2 -0
  225. package/dist/src/multer/fs/index.js +18 -0
  226. package/dist/src/multer/fs/index.js.map +1 -0
  227. package/dist/src/multer/index.d.ts +4 -0
  228. package/dist/src/multer/index.js +5 -0
  229. package/dist/src/multer/index.js.map +1 -0
  230. package/dist/src/multer/interceptors/any-files-interceptor.d.ts +3 -0
  231. package/dist/src/multer/interceptors/any-files-interceptor.js +27 -0
  232. package/dist/src/multer/interceptors/any-files-interceptor.js.map +1 -0
  233. package/dist/src/multer/interceptors/file-fields-interceptor.d.ts +4 -0
  234. package/dist/src/multer/interceptors/file-fields-interceptor.js +29 -0
  235. package/dist/src/multer/interceptors/file-fields-interceptor.js.map +1 -0
  236. package/dist/src/multer/interceptors/file-interceptor.d.ts +3 -0
  237. package/dist/src/multer/interceptors/file-interceptor.js +27 -0
  238. package/dist/src/multer/interceptors/file-interceptor.js.map +1 -0
  239. package/dist/src/multer/interceptors/files-interceptor.d.ts +3 -0
  240. package/dist/src/multer/interceptors/files-interceptor.js +27 -0
  241. package/dist/src/multer/interceptors/files-interceptor.js.map +1 -0
  242. package/dist/src/multer/interceptors/index.d.ts +4 -0
  243. package/dist/src/multer/interceptors/index.js +5 -0
  244. package/dist/src/multer/interceptors/index.js.map +1 -0
  245. package/dist/src/multer/multipart/exceptions.d.ts +1 -0
  246. package/dist/src/multer/multipart/exceptions.js +18 -0
  247. package/dist/src/multer/multipart/exceptions.js.map +1 -0
  248. package/dist/src/multer/multipart/file.d.ts +9 -0
  249. package/dist/src/multer/multipart/file.js +6 -0
  250. package/dist/src/multer/multipart/file.js.map +1 -0
  251. package/dist/src/multer/multipart/filter.d.ts +6 -0
  252. package/dist/src/multer/multipart/filter.js +18 -0
  253. package/dist/src/multer/multipart/filter.js.map +1 -0
  254. package/dist/src/multer/multipart/handlers/any-files.d.ts +10 -0
  255. package/dist/src/multer/multipart/handlers/any-files.js +29 -0
  256. package/dist/src/multer/multipart/handlers/any-files.js.map +1 -0
  257. package/dist/src/multer/multipart/handlers/file-fields.d.ts +17 -0
  258. package/dist/src/multer/multipart/handlers/file-fields.js +40 -0
  259. package/dist/src/multer/multipart/handlers/file-fields.js.map +1 -0
  260. package/dist/src/multer/multipart/handlers/index.d.ts +1 -0
  261. package/dist/src/multer/multipart/handlers/index.js +2 -0
  262. package/dist/src/multer/multipart/handlers/index.js.map +1 -0
  263. package/dist/src/multer/multipart/handlers/multiple-files.d.ts +10 -0
  264. package/dist/src/multer/multipart/handlers/multiple-files.js +36 -0
  265. package/dist/src/multer/multipart/handlers/multiple-files.js.map +1 -0
  266. package/dist/src/multer/multipart/handlers/single-file.d.ts +10 -0
  267. package/dist/src/multer/multipart/handlers/single-file.js +41 -0
  268. package/dist/src/multer/multipart/handlers/single-file.js.map +1 -0
  269. package/dist/src/multer/multipart/index.d.ts +3 -0
  270. package/dist/src/multer/multipart/index.js +3 -0
  271. package/dist/src/multer/multipart/index.js.map +1 -0
  272. package/dist/src/multer/multipart/options.d.ts +21 -0
  273. package/dist/src/multer/multipart/options.js +19 -0
  274. package/dist/src/multer/multipart/options.js.map +1 -0
  275. package/dist/src/multer/multipart/request.d.ts +15 -0
  276. package/dist/src/multer/multipart/request.js +17 -0
  277. package/dist/src/multer/multipart/request.js.map +1 -0
  278. package/dist/src/multer/storage/disk-storage.d.ts +31 -0
  279. package/dist/src/multer/storage/disk-storage.js +59 -0
  280. package/dist/src/multer/storage/disk-storage.js.map +1 -0
  281. package/dist/src/multer/storage/index.d.ts +3 -0
  282. package/dist/src/multer/storage/index.js +4 -0
  283. package/dist/src/multer/storage/index.js.map +1 -0
  284. package/dist/src/multer/storage/memory-storage.d.ts +19 -0
  285. package/dist/src/multer/storage/memory-storage.js +23 -0
  286. package/dist/src/multer/storage/memory-storage.js.map +1 -0
  287. package/dist/src/multer/storage/storage.d.ts +13 -0
  288. package/dist/src/multer/storage/storage.js +2 -0
  289. package/dist/src/multer/storage/storage.js.map +1 -0
  290. package/dist/tsconfig.tsbuildinfo +1 -0
  291. package/eslint.config.mjs +25 -0
  292. package/index.ts +4 -4
  293. package/package.json +20 -13
  294. package/src/adapters/hono-adapter.ts +113 -91
  295. package/src/adapters/index.ts +1 -1
  296. package/src/drivers/graphQLUpload/GraphQLUpload.ts +8 -7
  297. package/src/drivers/graphQLUpload/Upload.ts +1 -1
  298. package/src/drivers/graphQLUpload/fs-capacitor.ts +45 -45
  299. package/src/drivers/graphQLUpload/index.ts +4 -4
  300. package/src/drivers/graphQLUpload/processRequest.ts +11 -10
  301. package/src/drivers/graphql.driver.ts +24 -23
  302. package/src/drivers/index.ts +2 -2
  303. package/src/drivers/services/plugins-explorer.service.ts +2 -1
  304. package/src/interfaces/hono.interface.ts +1 -1
  305. package/src/interfaces/index.ts +2 -2
  306. package/src/interfaces/nest-hono-application.interface.ts +9 -9
  307. package/src/multer/decorators/index.ts +2 -2
  308. package/src/multer/decorators/uploaded-files-decorator.ts +1 -1
  309. package/src/multer/fs/index.ts +7 -11
  310. package/src/multer/index.ts +4 -4
  311. package/src/multer/interceptors/any-files-interceptor.ts +9 -12
  312. package/src/multer/interceptors/file-fields-interceptor.ts +9 -12
  313. package/src/multer/interceptors/file-interceptor.ts +9 -12
  314. package/src/multer/interceptors/files-interceptor.ts +9 -12
  315. package/src/multer/interceptors/index.ts +4 -4
  316. package/src/multer/multipart/exceptions.ts +1 -0
  317. package/src/multer/multipart/file.ts +2 -1
  318. package/src/multer/multipart/filter.ts +2 -2
  319. package/src/multer/multipart/handlers/any-files.ts +9 -7
  320. package/src/multer/multipart/handlers/file-fields.ts +47 -47
  321. package/src/multer/multipart/handlers/index.ts +1 -1
  322. package/src/multer/multipart/handlers/multiple-files.ts +11 -10
  323. package/src/multer/multipart/handlers/single-file.ts +26 -13
  324. package/src/multer/multipart/index.ts +3 -3
  325. package/src/multer/multipart/options.ts +1 -0
  326. package/src/multer/multipart/request.ts +33 -20
  327. package/src/multer/storage/disk-storage.ts +14 -14
  328. package/src/multer/storage/index.ts +3 -3
  329. package/src/multer/storage/memory-storage.ts +4 -3
  330. package/src/multer/storage/storage.ts +1 -0
  331. package/.yarn/install-state.gz +0 -0
  332. package/.yarnrc.yml +0 -1
  333. package/src/multer/crypto/index.ts +0 -4
@@ -1,19 +1,19 @@
1
- import { finalize, Observable } from "rxjs";
2
1
  import {
3
2
  CallHandler,
4
3
  ExecutionContext,
5
4
  mixin,
6
5
  NestInterceptor,
7
6
  Type,
8
- } from "@nestjs/common";
7
+ } from '@nestjs/common';
8
+ import { finalize } from 'rxjs';
9
9
 
10
- import { getMultipartRequest } from "../multipart/request";
11
- import { transformUploadOptions, UploadOptions } from "../multipart/options";
12
- import { handleMultipartSingleFile } from "../multipart/handlers/single-file";
10
+ import { handleMultipartSingleFile } from '../multipart/handlers/single-file';
11
+ import { transformUploadOptions, UploadOptions } from '../multipart/options';
12
+ import { getMultipartRequest } from '../multipart/request';
13
13
 
14
14
  export function FileInterceptor(
15
15
  fieldname: string,
16
- options?: UploadOptions
16
+ options?: UploadOptions,
17
17
  ): Type<NestInterceptor> {
18
18
  class MixinInterceptor implements NestInterceptor {
19
19
  private readonly options: UploadOptions;
@@ -22,21 +22,18 @@ export function FileInterceptor(
22
22
  this.options = transformUploadOptions(options);
23
23
  }
24
24
 
25
- async intercept(
26
- context: ExecutionContext,
27
- next: CallHandler
28
- ): Promise<Observable<any>> {
25
+ async intercept(context: ExecutionContext, next: CallHandler) {
29
26
  const ctx = context.switchToHttp();
30
27
  const req = getMultipartRequest(ctx);
31
28
 
32
- if (!req.header("content-type")?.startsWith("multipart/form-data")) {
29
+ if (!req.header('content-type')?.startsWith('multipart/form-data')) {
33
30
  return next.handle();
34
31
  }
35
32
 
36
33
  const { file, body, remove } = await handleMultipartSingleFile(
37
34
  req,
38
35
  fieldname,
39
- this.options
36
+ this.options,
40
37
  );
41
38
 
42
39
  req.body = body;
@@ -1,20 +1,20 @@
1
- import { finalize, Observable } from "rxjs";
2
1
  import {
3
2
  CallHandler,
4
3
  ExecutionContext,
5
4
  mixin,
6
5
  NestInterceptor,
7
6
  Type,
8
- } from "@nestjs/common";
7
+ } from '@nestjs/common';
8
+ import { finalize } from 'rxjs';
9
9
 
10
- import { getMultipartRequest } from "../multipart/request";
11
- import { transformUploadOptions, UploadOptions } from "../multipart/options";
12
- import { handleMultipartMultipleFiles } from "../multipart/handlers/multiple-files";
10
+ import { handleMultipartMultipleFiles } from '../multipart/handlers/multiple-files';
11
+ import { transformUploadOptions, UploadOptions } from '../multipart/options';
12
+ import { getMultipartRequest } from '../multipart/request';
13
13
 
14
14
  export function FilesInterceptor(
15
15
  fieldname: string,
16
16
  maxCount = 1,
17
- options?: UploadOptions
17
+ options?: UploadOptions,
18
18
  ): Type<NestInterceptor> {
19
19
  class MixinInterceptor implements NestInterceptor {
20
20
  private readonly options: UploadOptions;
@@ -23,14 +23,11 @@ export function FilesInterceptor(
23
23
  this.options = transformUploadOptions(options);
24
24
  }
25
25
 
26
- async intercept(
27
- context: ExecutionContext,
28
- next: CallHandler
29
- ): Promise<Observable<any>> {
26
+ async intercept(context: ExecutionContext, next: CallHandler) {
30
27
  const ctx = context.switchToHttp();
31
28
  const req = getMultipartRequest(ctx);
32
29
 
33
- if (!req.header("content-type")?.startsWith("multipart/form-data")) {
30
+ if (!req.header('content-type')?.startsWith('multipart/form-data')) {
34
31
  return next.handle();
35
32
  }
36
33
 
@@ -38,7 +35,7 @@ export function FilesInterceptor(
38
35
  req,
39
36
  fieldname,
40
37
  maxCount,
41
- this.options
38
+ this.options,
42
39
  );
43
40
 
44
41
  req.body = body;
@@ -1,4 +1,4 @@
1
- export * from "./file-fields-interceptor";
2
- export * from "./file-interceptor";
3
- export * from "./any-files-interceptor";
4
- export * from "./files-interceptor";
1
+ export * from './file-fields-interceptor';
2
+ export * from './file-interceptor';
3
+ export * from './any-files-interceptor';
4
+ export * from './files-interceptor';
@@ -9,6 +9,7 @@ export const transformException = (err: Error | undefined) => {
9
9
  return err;
10
10
  }
11
11
 
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
13
  const code: string = (err as any).code;
13
14
 
14
15
  switch (code) {
@@ -1,8 +1,9 @@
1
1
  import { Readable } from 'stream';
2
+
2
3
  import { Storage, StorageFile } from '../storage';
3
4
 
4
5
  export type MultipartFile = Omit<File[], 'file'> & {
5
- value?: any;
6
+ value?: unknown;
6
7
  file: Readable & { truncated?: boolean };
7
8
  };
8
9
 
@@ -1,8 +1,8 @@
1
1
  import { BadRequestException } from '@nestjs/common';
2
- import { UploadOptions } from '.';
2
+ import { HonoRequest } from 'hono';
3
3
 
4
+ import { UploadOptions } from '.';
4
5
  import { DiskStorageFile, MemoryStorageFile, StorageFile } from '../storage';
5
- import { HonoRequest } from 'hono';
6
6
 
7
7
  export type UploadFilterFile =
8
8
  | DiskStorageFile
@@ -1,16 +1,18 @@
1
- import { UploadOptions } from "../options";
2
- import { StorageFile } from "../../storage";
3
- import { THonoRequest, getParts } from "../request";
4
- import { removeStorageFiles } from "../file";
5
- import { filterUpload } from "../filter";
1
+ import { BodyData } from 'hono/utils/body';
2
+
3
+ import { StorageFile } from '../../storage';
4
+ import { removeStorageFiles } from '../file';
5
+ import { filterUpload } from '../filter';
6
+ import { UploadOptions } from '../options';
7
+ import { THonoRequest, getParts } from '../request';
6
8
 
7
9
  export const handleMultipartAnyFiles = async (
8
10
  req: THonoRequest,
9
- options: UploadOptions
11
+ options: UploadOptions,
10
12
  ) => {
11
13
  const parts = getParts(req, options);
12
14
 
13
- const body: Record<string, any> = {};
15
+ const body: BodyData = {};
14
16
 
15
17
  const files: StorageFile[] = [];
16
18
 
@@ -1,48 +1,57 @@
1
- import { BadRequestException } from "@nestjs/common";
1
+ import { BadRequestException } from '@nestjs/common';
2
+ import { BodyData } from 'hono/utils/body';
2
3
 
3
- import { UploadOptions } from "../options";
4
- import { StorageFile } from "../../storage/storage";
5
- import { THonoRequest, getParts } from "../request";
6
- import { removeStorageFiles } from "../file";
7
- import { filterUpload } from "../filter";
8
- import { HonoRequest } from "hono";
4
+ import { StorageFile } from '../../storage/storage';
5
+ import { removeStorageFiles } from '../file';
6
+ import { filterUpload } from '../filter';
7
+ import { UploadOptions } from '../options';
8
+ import { THonoRequest, getParts } from '../request';
9
9
 
10
10
  export interface UploadField {
11
- /**
12
- * Field name
13
- */
14
11
  name: string;
15
- /**
16
- * Max number of files in this field
17
- */
18
12
  maxCount?: number;
19
13
  }
20
14
 
21
- export type UploadFieldMapEntry = Required<Pick<UploadField, "maxCount">>;
22
-
23
- export const uploadFieldsToMap = (uploadFields: UploadField[]) => {
24
- const map = new Map<string, UploadFieldMapEntry>();
25
-
26
- uploadFields.forEach(({ name, ...opts }) => {
27
- map.set(name, { maxCount: 1, ...opts });
28
- });
29
-
30
- return map;
31
- };
32
-
15
+ export type UploadFieldMapEntry = Required<Pick<UploadField, 'maxCount'>>;
16
+
17
+ /**
18
+ * Converts an array of upload fields into a map for easy lookup.
19
+ * @param {UploadField[]} uploadFields - Array of upload field definitions.
20
+ * @returns {Map<string, UploadFieldMapEntry>} A map of field names to their max count settings.
21
+ */
22
+ export const uploadFieldsToMap = (uploadFields: UploadField[]) =>
23
+ new Map(
24
+ uploadFields.map(({ name, ...opts }) => [name, { maxCount: 1, ...opts }]),
25
+ );
26
+
27
+ /**
28
+ * Handles multipart file fields by processing form-data parts.
29
+ * @param {THonoRequest} req - The incoming request object.
30
+ * @param {Map<string, UploadFieldMapEntry>} fieldsMap - A map of allowed upload fields.
31
+ * @param {UploadOptions} options - Upload options including storage handler.
32
+ * @returns {Promise<{ body: BodyData, files: Record<string, StorageFile[]>, remove: () => Promise<void> }>} The parsed body and files with a removal function.
33
+ */
33
34
  export const handleMultipartFileFields = async (
34
35
  req: THonoRequest,
35
36
  fieldsMap: Map<string, UploadFieldMapEntry>,
36
- options: UploadOptions
37
- ) => {
37
+ options: UploadOptions,
38
+ ): Promise<{
39
+ body: BodyData;
40
+ files: Record<string, StorageFile[]>;
41
+ remove: () => Promise<void>;
42
+ }> => {
38
43
  const parts = getParts(req, options);
39
- const body: Record<string, any> = {};
40
-
44
+ const body: BodyData = {};
41
45
  const files: Record<string, StorageFile[]> = {};
42
46
 
43
- const removeFiles = async (error?: boolean) => {
44
- const allFiles = ([] as StorageFile[]).concat(...Object.values(files));
45
- return await removeStorageFiles(options.storage!, allFiles, error);
47
+ /**
48
+ * Removes stored files in case of an error or cleanup.
49
+ * @param {boolean} [error=false] - Whether the removal is due to an error.
50
+ * @returns {Promise<void>} Resolves after files are removed.
51
+ */
52
+ const removeFiles = async (error?: boolean): Promise<void> => {
53
+ const allFiles = Object.values(files).flat();
54
+ return removeStorageFiles(options.storage!, allFiles, error);
46
55
  };
47
56
 
48
57
  try {
@@ -53,25 +62,20 @@ export const handleMultipartFileFields = async (
53
62
  }
54
63
 
55
64
  const fieldOptions = fieldsMap.get(fieldName);
56
-
57
- if (fieldOptions == null) {
65
+ if (!fieldOptions) {
58
66
  throw new BadRequestException(
59
- `Field ${fieldName} doesn't accept files`
67
+ `Field ${fieldName} doesn't accept files`,
60
68
  );
61
69
  }
62
70
 
63
- if (files[fieldName] == null) {
64
- files[fieldName] = [];
65
- }
66
-
67
- if (files[fieldName].length + 1 > fieldOptions.maxCount) {
71
+ files[fieldName] = files[fieldName] || [];
72
+ if (files[fieldName].length >= fieldOptions.maxCount) {
68
73
  throw new BadRequestException(
69
- `Field ${fieldName} accepts max ${fieldOptions.maxCount} files`
74
+ `Field ${fieldName} accepts max ${fieldOptions.maxCount} files`,
70
75
  );
71
76
  }
72
77
 
73
78
  const file = await options.storage!.handleFile(part, req, fieldName);
74
-
75
79
  if (await filterUpload(options, req, file)) {
76
80
  files[fieldName].push(file);
77
81
  }
@@ -81,9 +85,5 @@ export const handleMultipartFileFields = async (
81
85
  throw error;
82
86
  }
83
87
 
84
- return {
85
- body,
86
- files,
87
- remove: () => removeFiles(),
88
- };
88
+ return { body, files, remove: removeFiles };
89
89
  };
@@ -1 +1 @@
1
- export { UploadField } from "./file-fields";
1
+ export { UploadField } from './file-fields';
@@ -1,19 +1,20 @@
1
- import { BadRequestException } from "@nestjs/common";
1
+ import { BadRequestException } from '@nestjs/common';
2
+ import { BodyData } from 'hono/utils/body';
2
3
 
3
- import { UploadOptions } from "../options";
4
- import { StorageFile } from "../../storage";
5
- import { removeStorageFiles } from "../file";
6
- import { THonoRequest, getParts } from "../request";
7
- import { filterUpload } from "../filter";
4
+ import { StorageFile } from '../../storage';
5
+ import { removeStorageFiles } from '../file';
6
+ import { filterUpload } from '../filter';
7
+ import { UploadOptions } from '../options';
8
+ import { THonoRequest, getParts } from '../request';
8
9
 
9
10
  export const handleMultipartMultipleFiles = async (
10
11
  req: THonoRequest,
11
12
  fieldname: string,
12
13
  maxCount: number,
13
- options: UploadOptions
14
+ options: UploadOptions,
14
15
  ) => {
15
16
  const parts = getParts(req, options);
16
- const body: Record<string, any> = {};
17
+ const body: BodyData = {};
17
18
 
18
19
  const files: StorageFile[] = [];
19
20
 
@@ -30,13 +31,13 @@ export const handleMultipartMultipleFiles = async (
30
31
 
31
32
  if (partFieldName !== fieldname) {
32
33
  throw new BadRequestException(
33
- `Field ${partFieldName} doesn't accept files`
34
+ `Field ${partFieldName} doesn't accept files`,
34
35
  );
35
36
  }
36
37
 
37
38
  if (files.length + 1 > maxCount) {
38
39
  throw new BadRequestException(
39
- `Field ${partFieldName} accepts max ${maxCount} files`
40
+ `Field ${partFieldName} accepts max ${maxCount} files`,
40
41
  );
41
42
  }
42
43
 
@@ -1,22 +1,33 @@
1
- import { BadRequestException } from "@nestjs/common";
1
+ import { BadRequestException } from '@nestjs/common';
2
+ import { BodyData } from 'hono/utils/body';
2
3
 
3
- import { UploadOptions } from "../options";
4
- import { StorageFile } from "../../storage";
5
- import { THonoRequest, getParts } from "../request";
6
- import { filterUpload } from "../filter";
4
+ import { StorageFile } from '../../storage';
5
+ import { filterUpload } from '../filter';
6
+ import { UploadOptions } from '../options';
7
+ import { THonoRequest, getParts } from '../request';
7
8
 
9
+ /**
10
+ * Handles a single file upload in a multipart request.
11
+ * @param req - The request object.
12
+ * @param fieldname - The name of the field that should contain the file.
13
+ * @param options - Upload options with storage configurations.
14
+ * @returns An object containing the request body, uploaded file, and a remove function.
15
+ */
8
16
  export const handleMultipartSingleFile = async (
9
17
  req: THonoRequest,
10
18
  fieldname: string,
11
- options: UploadOptions
19
+ options: UploadOptions,
12
20
  ) => {
13
21
  const parts = getParts(req, options);
14
- const body: Record<string, any> = {};
15
-
16
- let file: StorageFile | undefined = undefined;
22
+ const body: BodyData = {};
23
+ let file: StorageFile | undefined;
17
24
 
25
+ /**
26
+ * Removes uploaded file in case of an error or cleanup.
27
+ * @param error - Whether the removal is due to an error.
28
+ */
18
29
  const removeFiles = async (error?: boolean) => {
19
- if (file == null) return;
30
+ if (!file) return;
20
31
  await options.storage!.removeFile(file, error);
21
32
  };
22
33
 
@@ -29,11 +40,13 @@ export const handleMultipartSingleFile = async (
29
40
 
30
41
  if (partFieldName !== fieldname) {
31
42
  throw new BadRequestException(
32
- `Field ${partFieldName} doesn't accept file`
43
+ `Field "${partFieldName}" doesn't accept file.`,
33
44
  );
34
- } else if (file != null) {
45
+ }
46
+
47
+ if (file) {
35
48
  throw new BadRequestException(
36
- `Field ${fieldname} accepts only one file`
49
+ `Field "${fieldname}" accepts only one file.`,
37
50
  );
38
51
  }
39
52
 
@@ -1,3 +1,3 @@
1
- export * from "./options";
2
- export * from "./filter";
3
- export { UploadFilterFile, UploadFilterHandler } from "./filter";
1
+ export * from './options';
2
+ export * from './filter';
3
+ export { UploadFilterFile, UploadFilterHandler } from './filter';
@@ -1,4 +1,5 @@
1
1
  import busboy from 'busboy';
2
+
2
3
  import { DiskStorage, MemoryStorage, Storage } from '../storage';
3
4
  import { UploadFilterHandler } from './filter';
4
5
 
@@ -1,36 +1,49 @@
1
- import { BadRequestException } from "@nestjs/common";
2
- import { HttpArgumentsHost } from "@nestjs/common/interfaces";
1
+ import { BadRequestException } from '@nestjs/common';
2
+ import { HttpArgumentsHost } from '@nestjs/common/interfaces';
3
+ import { HonoRequest } from 'hono';
4
+ import { BodyData } from 'hono/utils/body';
3
5
 
4
- import { UploadOptions } from "./options";
5
- import { StorageFile } from "../storage";
6
- import { MultipartFile } from "./file";
7
- import { HonoRequest } from "hono";
6
+ import { StorageFile } from '../storage';
7
+ import { MultipartFile } from './file';
8
+ import { UploadOptions } from './options';
8
9
 
9
10
  export type THonoRequest = HonoRequest & {
10
11
  files: Record<string, File[]>;
11
- body: Record<string, any>;
12
+ body: BodyData;
12
13
  storageFile?: StorageFile;
13
14
  storageFiles?: StorageFile[] | Record<string, StorageFile[]>;
14
15
  };
15
16
 
16
- export const getMultipartRequest = (ctx: HttpArgumentsHost) => {
17
- const req = ctx.getRequest<THonoRequest>();
18
-
19
- return req;
17
+ /**
18
+ * Retrieves the multipart request from the given context.
19
+ * @param ctx - The HTTP arguments host.
20
+ * @returns The request object extended with THonoRequest.
21
+ */
22
+ export const getMultipartRequest = (ctx: HttpArgumentsHost): THonoRequest => {
23
+ return ctx.getRequest<THonoRequest>();
20
24
  };
21
25
 
22
- export const getParts = (req: THonoRequest, options: UploadOptions) => {
26
+ /**
27
+ * Validates and extracts file parts from the request body.
28
+ * @param req - The request object containing multipart data.
29
+ * @param options - Upload options with file size limits.
30
+ * @returns The request body containing validated file parts.
31
+ * @throws {BadRequestException} If any file exceeds the allowed size limit.
32
+ */
33
+ export const getParts = (
34
+ req: THonoRequest,
35
+ options: UploadOptions,
36
+ ): BodyData => {
23
37
  const parts = req.body;
24
38
 
25
39
  for (const [key, file] of Object.entries(parts)) {
26
- if (
27
- file instanceof File &&
28
- options?.limits?.fileSize &&
29
- file.size > options.limits.fileSize
30
- ) {
31
- throw new BadRequestException(
32
- `File ${key} is too large. Maximum size is ${options.limits.fileSize} bytes`
33
- );
40
+ if (file instanceof File) {
41
+ const maxSize = options?.limits?.fileSize;
42
+ if (maxSize && file.size > maxSize) {
43
+ throw new BadRequestException(
44
+ `File "${key}" is too large. Maximum size is ${maxSize} bytes.`,
45
+ );
46
+ }
34
47
  }
35
48
  }
36
49
 
@@ -1,13 +1,13 @@
1
- import { tmpdir } from "os";
2
- import { createWriteStream } from "fs";
3
- import { mkdir, unlink } from "fs/promises";
4
- import { join } from "path";
1
+ import { createWriteStream } from 'fs';
2
+ import { mkdir, unlink } from 'fs/promises';
3
+ import { HonoRequest } from 'hono';
4
+ import { Readable } from 'node:stream';
5
+ import { pipeline } from 'node:stream/promises';
6
+ import { tmpdir } from 'os';
7
+ import { join } from 'path';
5
8
 
6
- import { StorageFile, Storage } from "./storage";
7
- import { getUniqueFilename, pathExists } from "../fs";
8
- import { pipeline } from "node:stream/promises";
9
- import { HonoRequest } from "hono";
10
- import { Readable } from "node:stream";
9
+ import { getUniqueFilename, pathExists } from '../fs';
10
+ import { StorageFile, Storage } from './storage';
11
11
 
12
12
  export interface DiskStorageFile extends StorageFile {
13
13
  dest: string;
@@ -28,9 +28,9 @@ export interface DiskStorageOptions {
28
28
  const excecuteStorageHandler = (
29
29
  file: File,
30
30
  req: HonoRequest,
31
- obj?: DiskStorageOptionHandler
31
+ obj?: DiskStorageOptionHandler,
32
32
  ) => {
33
- if (typeof obj === "function") {
33
+ if (typeof obj === 'function') {
34
34
  return obj(file, req);
35
35
  }
36
36
 
@@ -76,7 +76,7 @@ export class DiskStorage
76
76
  originalFilename: file.name,
77
77
  path,
78
78
  mimetype: file.type,
79
- encoding: "utf-8",
79
+ encoding: 'utf-8',
80
80
  fieldname: fieldName,
81
81
  };
82
82
  }
@@ -90,7 +90,7 @@ export class DiskStorage
90
90
  protected async getFilename(
91
91
  file: File,
92
92
  req: HonoRequest,
93
- obj?: DiskStorageOptionHandler
93
+ obj?: DiskStorageOptionHandler,
94
94
  ): Promise<string> {
95
95
  return (
96
96
  excecuteStorageHandler(file, req, obj) ?? getUniqueFilename(file.name)
@@ -100,7 +100,7 @@ export class DiskStorage
100
100
  protected async getFileDestination(
101
101
  file: File,
102
102
  req: HonoRequest,
103
- obj?: DiskStorageOptionHandler
103
+ obj?: DiskStorageOptionHandler,
104
104
  ): Promise<string> {
105
105
  return excecuteStorageHandler(file, req, obj) ?? tmpdir();
106
106
  }
@@ -1,3 +1,3 @@
1
- export * from "./disk-storage";
2
- export * from "./memory-storage";
3
- export * from "./storage";
1
+ export * from './disk-storage';
2
+ export * from './memory-storage';
3
+ export * from './storage';
@@ -1,5 +1,6 @@
1
- import { StorageFile, Storage } from "./storage";
2
- import { HonoRequest } from "hono";
1
+ import { HonoRequest } from 'hono';
2
+
3
+ import { StorageFile, Storage } from './storage';
3
4
 
4
5
  export interface MemoryStorageFile extends StorageFile {
5
6
  buffer: Buffer;
@@ -17,7 +18,7 @@ export class MemoryStorage implements Storage<MemoryStorageFile> {
17
18
  return {
18
19
  buffer,
19
20
  size: buffer.length,
20
- encoding: "utf-8",
21
+ encoding: 'utf-8',
21
22
  mimetype: file.type,
22
23
  fieldname: fieldName,
23
24
  originalFilename: file.name,
@@ -8,6 +8,7 @@ export interface StorageFile {
8
8
  originalFilename: string;
9
9
  }
10
10
 
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
12
  export interface Storage<T extends StorageFile = StorageFile, K = any> {
12
13
  handleFile: (file: File, req: HonoRequest, fieldName: string) => Promise<T>;
13
14
  removeFile: (file: T, force?: boolean) => Promise<void> | void;
Binary file
package/.yarnrc.yml DELETED
@@ -1 +0,0 @@
1
- nodeLinker: node-modules
@@ -1,4 +0,0 @@
1
- import { promisify } from 'node:util';
2
- import { randomBytes as cryptoRandomBytes } from 'node:crypto';
3
-
4
- export const randomBytes = promisify(cryptoRandomBytes);