@visulima/storage 1.0.0-alpha.9 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/CHANGELOG.md +562 -0
  2. package/LICENSE.md +237 -568
  3. package/README.md +82 -466
  4. package/dist/adapter/nuxt/module.d.ts +41 -34
  5. package/dist/adapter/nuxt/module.js +1 -93
  6. package/dist/adapter/nuxt/package.json +0 -6
  7. package/dist/ai/ai-sdk/index.d.ts +113 -0
  8. package/dist/ai/ai-sdk/index.js +1 -0
  9. package/dist/ai/claude/index.d.ts +177 -0
  10. package/dist/ai/claude/index.js +1 -0
  11. package/dist/ai/openai/index.d.ts +205 -0
  12. package/dist/ai/openai/index.js +1 -0
  13. package/dist/ai/tanstack/index.d.ts +115 -0
  14. package/dist/ai/tanstack/index.js +1 -0
  15. package/dist/handler/http/fetch/index.d.ts +303 -4
  16. package/dist/handler/http/fetch/index.js +1 -4
  17. package/dist/handler/http/hono/index.d.ts +73 -64
  18. package/dist/handler/http/hono/index.js +1 -65
  19. package/dist/handler/http/nextjs/index.d.ts +66 -58
  20. package/dist/handler/http/nextjs/index.js +1 -37
  21. package/dist/handler/http/node/index.d.ts +368 -4
  22. package/dist/handler/http/node/index.js +1 -8
  23. package/dist/handler/http/solid-start/index.d.ts +66 -57
  24. package/dist/handler/http/solid-start/index.js +1 -44
  25. package/dist/index.d.ts +106 -17
  26. package/dist/index.js +1 -13
  27. package/dist/openapi/index.d.ts +24 -5
  28. package/dist/openapi/index.js +1 -5
  29. package/dist/packem_shared/AbstractBaseStorage-CiPEMcuo.js +1 -0
  30. package/dist/packem_shared/AwsLightFile-CpZrubaV.js +1 -0
  31. package/dist/packem_shared/AwsLightMetaStorage-DPqJ9LTr.js +1 -0
  32. package/dist/packem_shared/AwsLightStorage-BK-WPL0h.js +1 -0
  33. package/dist/packem_shared/AzureFile-DFSaVe25.js +1 -0
  34. package/dist/packem_shared/AzureSMetaStorage-ByzM6Aix.js +1 -0
  35. package/dist/packem_shared/AzureStorage-1UvDIQZd.js +1 -0
  36. package/dist/packem_shared/BaseTransformer-Buw5lX_3.js +1 -0
  37. package/dist/packem_shared/BoxFile-CseIoPW1.js +1 -0
  38. package/dist/packem_shared/BoxMetaStorage-BSn6Qfnf.js +1 -0
  39. package/dist/packem_shared/BoxStorage-DbGqBLux.js +1 -0
  40. package/dist/packem_shared/BunS3File-BcYmsz1n.js +1 -0
  41. package/dist/packem_shared/BunS3MetaStorage-BSn6Qfnf.js +1 -0
  42. package/dist/packem_shared/BunS3Storage-DNvimm9e.js +1 -0
  43. package/dist/packem_shared/BunnyFile-BgEOlcYI.js +1 -0
  44. package/dist/packem_shared/BunnyMetaStorage-BSn6Qfnf.js +1 -0
  45. package/dist/packem_shared/BunnyStorage-C7d0opLL.js +1 -0
  46. package/dist/packem_shared/CloudinaryFile-Bo5B-vM1.js +1 -0
  47. package/dist/packem_shared/CloudinaryMetaStorage-DPVnmNe5.js +1 -0
  48. package/dist/packem_shared/CloudinaryStorage-Dc3XA2lP.js +1 -0
  49. package/dist/packem_shared/DiskStorage-CI07TVNu.js +1 -0
  50. package/dist/packem_shared/DiskStorageWithChecksum-vFCubS6K.js +1 -0
  51. package/dist/packem_shared/DropboxFile-BFb7eOzy.js +1 -0
  52. package/dist/packem_shared/DropboxMetaStorage-BSn6Qfnf.js +1 -0
  53. package/dist/packem_shared/DropboxStorage-CY9Ggu3m.js +1 -0
  54. package/dist/packem_shared/ERRORS-BIBxE2oR.js +1 -0
  55. package/dist/packem_shared/File-W8aOo15X.js +1 -0
  56. package/dist/packem_shared/Files-CpIcMjP0.js +1 -0
  57. package/dist/packem_shared/FirebaseFile-BLaBxa2A.js +1 -0
  58. package/dist/packem_shared/FirebaseMetaStorage-DPVnmNe5.js +1 -0
  59. package/dist/packem_shared/FirebaseStorage-D6O9CJXN.js +2 -0
  60. package/dist/packem_shared/FtpFile-ClWDYnt2.js +1 -0
  61. package/dist/packem_shared/FtpMetaStorage-BSn6Qfnf.js +1 -0
  62. package/dist/packem_shared/FtpStorage-DbEjbq8z.js +1 -0
  63. package/dist/packem_shared/GCSConfig-BQ0OpVhe.js +1 -0
  64. package/dist/packem_shared/GCSFile-Cero7qZN.js +1 -0
  65. package/dist/packem_shared/GCSMetaStorage-BuPA0DDW.js +1 -0
  66. package/dist/packem_shared/GCStorage-i9t5TQc1.js +1 -0
  67. package/dist/packem_shared/GoogleDriveFile-DHpLhzg9.js +1 -0
  68. package/dist/packem_shared/GoogleDriveMetaStorage-Cbwa1CHV.js +1 -0
  69. package/dist/packem_shared/GoogleDriveStorage-Bklsz7Bh.js +1 -0
  70. package/dist/packem_shared/LocalMetaStorage-BhicZnNl.js +1 -0
  71. package/dist/packem_shared/MediaTransformer-D2kUsklW.js +1 -0
  72. package/dist/packem_shared/MemoryMetaStorage-Ksgh9pe7.js +1 -0
  73. package/dist/packem_shared/MemoryStorage-9gbWd09l.js +1 -0
  74. package/dist/packem_shared/MetaStorage-DPEUyWgN.js +1 -0
  75. package/dist/packem_shared/Metadata-B7CcBueg.js +1 -0
  76. package/dist/packem_shared/Multipart-CQjYqU--.js +1 -0
  77. package/dist/packem_shared/Multipart-D0ok6BBy.js +1 -0
  78. package/dist/packem_shared/NetlifyBlobFile-DoFhkzaH.js +1 -0
  79. package/dist/packem_shared/NetlifyBlobMetaStorage-DPVnmNe5.js +1 -0
  80. package/dist/packem_shared/NetlifyBlobStorage-CkpCCoN1.js +1 -0
  81. package/dist/packem_shared/NoOpMetrics-BLo6u4NY.js +1 -0
  82. package/dist/packem_shared/OneDriveFile-CNNJYI43.js +1 -0
  83. package/dist/packem_shared/OneDriveMetaStorage-Cbwa1CHV.js +1 -0
  84. package/dist/packem_shared/OneDriveStorage-CP6MvGAa.js +1 -0
  85. package/dist/packem_shared/OpenTelemetryMetrics-DJDQsNKp.js +1 -0
  86. package/dist/packem_shared/PocketBaseFile-DpJpxl3e.js +1 -0
  87. package/dist/packem_shared/PocketBaseMetaStorage-DOTLwVE7.js +1 -0
  88. package/dist/packem_shared/PocketBaseStorage-2qhbI2PW.js +1 -0
  89. package/dist/packem_shared/Rest-CI_BiZPv.js +1 -0
  90. package/dist/packem_shared/Rest-DvfN4-kf.js +1 -0
  91. package/dist/packem_shared/S3File-CpZrubaV.js +1 -0
  92. package/dist/packem_shared/S3MetaStorage-CMonflzp.js +1 -0
  93. package/dist/packem_shared/S3Storage-YGeNk3Tt.js +1 -0
  94. package/dist/packem_shared/SftpFile-ClWDYnt2.js +1 -0
  95. package/dist/packem_shared/SftpMetaStorage-BSn6Qfnf.js +1 -0
  96. package/dist/packem_shared/SftpStorage-2Hz396Xr.js +1 -0
  97. package/dist/packem_shared/SharePointFile-Blz9FS4h.js +1 -0
  98. package/dist/packem_shared/SharePointMetaStorage-BSn6Qfnf.js +1 -0
  99. package/dist/packem_shared/SharePointStorage-CrX2Pk6C.js +1 -0
  100. package/dist/packem_shared/SupabaseFile-Bo5B-vM1.js +1 -0
  101. package/dist/packem_shared/SupabaseMetaStorage-Cbwa1CHV.js +1 -0
  102. package/dist/packem_shared/SupabaseStorage-Dc_DBX29.js +1 -0
  103. package/dist/packem_shared/TUS_RESUMABLE-CyTSRvPU.js +1 -0
  104. package/dist/packem_shared/Tus-BBVt2ky3.js +1 -0
  105. package/dist/packem_shared/Tus-BlBZykIL.js +1 -0
  106. package/dist/packem_shared/UploadControl-DZJhI9Wh.js +1 -0
  107. package/dist/packem_shared/UploadThingFile-BTFMpcIA.js +1 -0
  108. package/dist/packem_shared/UploadThingMetaStorage-DPVnmNe5.js +1 -0
  109. package/dist/packem_shared/UploadThingStorage-BChykYSe.js +1 -0
  110. package/dist/packem_shared/ValidationError-3B06DFyE.js +1 -0
  111. package/dist/packem_shared/VercelBlobFile-CVQwKlZk.js +1 -0
  112. package/dist/packem_shared/VercelBlobMetaStorage-BSn6Qfnf.js +1 -0
  113. package/dist/packem_shared/VercelBlobStorage-CsRyPfw3.js +1 -0
  114. package/dist/packem_shared/_commonjsHelpers-CWAkuNXM.js +1 -0
  115. package/dist/packem_shared/agentsCopyFile-Dl5iffdH.js +1 -0
  116. package/dist/packem_shared/akamai-DthkaFul.js +1 -0
  117. package/dist/packem_shared/alibaba-BEi25O1g.js +1 -0
  118. package/dist/packem_shared/approval-fVHwBp7u.js +1 -0
  119. package/dist/packem_shared/approval.d-CMAYH9GF.d.ts +75 -0
  120. package/dist/packem_shared/aws-light-meta-storage-DGrn72VJ.js +4 -0
  121. package/dist/packem_shared/azure-meta-storage-ClbEsfI4.js +1 -0
  122. package/dist/packem_shared/backblaze-m1N5NZ9q.js +1 -0
  123. package/dist/packem_shared/base-handler-core-D-9Ku1h-.js +1 -0
  124. package/dist/packem_shared/base-handler-fetch-CfkNakv8.js +1 -0
  125. package/dist/packem_shared/base-handler-node-BF1v1qDa.js +1 -0
  126. package/dist/packem_shared/cache-Cw3QjoVN.js +1 -0
  127. package/dist/packem_shared/claudeCopyFile-BX9O4ORk.js +1 -0
  128. package/dist/packem_shared/cloudflare-CdUTErlo.js +1 -0
  129. package/dist/packem_shared/copyFile-49FtxXcm.js +1 -0
  130. package/dist/packem_shared/copyFile-BUPezT_c.js +1 -0
  131. package/dist/packem_shared/createResponsesFileTools-6Tvt2PNr.js +1 -0
  132. package/dist/packem_shared/createRetryWrapper-CxgiV_hH.js +1 -0
  133. package/dist/packem_shared/detect-file-type-BA7UBLKA.js +1 -0
  134. package/dist/packem_shared/digitalOcean-B2uB6pgz.js +1 -0
  135. package/dist/packem_shared/disk-storage-CsQcYW3s.js +1 -0
  136. package/dist/packem_shared/disk-storage-with-checksum.d-B-VGEsfl.d.ts +156 -0
  137. package/dist/packem_shared/executors-BDzMjc4y.js +1 -0
  138. package/dist/packem_shared/executors.d-BZP2rWo3.d.ts +69 -0
  139. package/dist/packem_shared/exoscale-BDa1Gjth.js +1 -0
  140. package/dist/packem_shared/filebase-CsFYJIwB.js +1 -0
  141. package/dist/packem_shared/files.d-CH0iLBNC.d.ts +655 -0
  142. package/dist/packem_shared/gcs-meta-storage-B1RrMqH3.js +1 -0
  143. package/dist/packem_shared/get-file-status-y3wTtDQs.js +1 -0
  144. package/dist/packem_shared/getFormatFromContentType-DCTTPQHm.js +1 -0
  145. package/dist/packem_shared/has-content-50BsqrWw.js +1 -0
  146. package/dist/packem_shared/headers-BAiAKekR.js +26 -0
  147. package/dist/packem_shared/hetzner-BGGFiRGD.js +1 -0
  148. package/dist/packem_shared/ibmCos-j-3TfJ5p.js +1 -0
  149. package/dist/packem_shared/idriveE2-C6pQ5pQ0.js +1 -0
  150. package/dist/packem_shared/index-nZWCQrSe.js +5 -0
  151. package/dist/packem_shared/internal-D_cZIFwI.js +1 -0
  152. package/dist/packem_shared/is-expired-CBEk6XBi.js +1 -0
  153. package/dist/packem_shared/local-meta-storage-iuJnu90B.js +11 -0
  154. package/dist/packem_shared/local-meta-storage.d-D9PBfkn6.d.ts +21 -0
  155. package/dist/packem_shared/media-transformer.d-Quf4ai47.d.ts +331 -0
  156. package/dist/packem_shared/memory-storage.d-4EU1cMt1.d.ts +101 -0
  157. package/dist/packem_shared/minio-NKquuBfS.js +1 -0
  158. package/dist/packem_shared/multipart-base-BOzY19lb.js +1 -0
  159. package/dist/packem_shared/oauth-refresh-EdGzlcOZ.js +1 -0
  160. package/dist/packem_shared/oracleCloud-DslqNpn6.js +1 -0
  161. package/dist/packem_shared/ovhCloud-CMHE6uLV.js +1 -0
  162. package/dist/packem_shared/part-match-D-9dGX42.js +1 -0
  163. package/dist/packem_shared/path-0oTTdkvl-DvWvbDbh.js +1 -0
  164. package/dist/packem_shared/posix-dirname-CfpH5wZi.js +1 -0
  165. package/dist/packem_shared/response-builder-CbSA8qPa.js +1 -0
  166. package/dist/packem_shared/rest-base-e0reNDE_.js +1 -0
  167. package/dist/packem_shared/restOpenApiSpec-Csv513qf.js +1 -0
  168. package/dist/packem_shared/s3-base-storage-BoTyhuzO.js +1 -0
  169. package/dist/packem_shared/s3-base-storage.d-BQgP5B-t.d.ts +287 -0
  170. package/dist/packem_shared/scaleway-U1In3v70.js +1 -0
  171. package/dist/packem_shared/sharedErrorSchemaObject-YN65aAKj.js +1 -0
  172. package/dist/packem_shared/storage-0j5nCAUp.js +1 -0
  173. package/dist/packem_shared/storage.d-CEM1upWM.d.ts +1176 -0
  174. package/dist/packem_shared/storj-Cb59q9kF.js +1 -0
  175. package/dist/packem_shared/sync-DhR3536K.js +1 -0
  176. package/dist/packem_shared/tencent-Q1y2GENc.js +1 -0
  177. package/dist/packem_shared/tigris-BELKoyyp.js +1 -0
  178. package/dist/packem_shared/transformOpenApiSpec-CIEAgpBD.js +1 -0
  179. package/dist/packem_shared/tus-base.d-DLzKE54M.d.ts +106 -0
  180. package/dist/packem_shared/tusOpenApiSpec-D96B03t5.js +1 -0
  181. package/dist/packem_shared/types.d-Bon9GVVe.d.ts +104 -0
  182. package/dist/packem_shared/types.d-CggTCgXr.d.ts +49 -0
  183. package/dist/packem_shared/types.d-CrUWY4On.d.ts +720 -0
  184. package/dist/packem_shared/update-size-DuNuLyxj.js +1 -0
  185. package/dist/packem_shared/vultr-B491cQ4e.js +1 -0
  186. package/dist/packem_shared/waitForStorage-ByQmG4xF.js +1 -0
  187. package/dist/packem_shared/wasabi-DFrwIoab.js +1 -0
  188. package/dist/packem_shared/xhrOpenApiSpec-DQR4h6M8.js +1 -0
  189. package/dist/packem_shared/yandex-CwzHuEKP.js +1 -0
  190. package/dist/storage/aws/clients/index.d.ts +612 -6
  191. package/dist/storage/aws/clients/index.js +1 -6
  192. package/dist/storage/aws/index.d.ts +332 -4
  193. package/dist/storage/aws/index.js +1 -3
  194. package/dist/storage/aws-light/index.d.ts +259 -4
  195. package/dist/storage/aws-light/index.js +1 -3
  196. package/dist/storage/azure/index.d.ts +236 -4
  197. package/dist/storage/azure/index.js +1 -3
  198. package/dist/storage/box/index.d.ts +189 -0
  199. package/dist/storage/box/index.js +1 -0
  200. package/dist/storage/bun-s3/index.d.ts +200 -0
  201. package/dist/storage/bun-s3/index.js +1 -0
  202. package/dist/storage/bunny/index.d.ts +119 -0
  203. package/dist/storage/bunny/index.js +1 -0
  204. package/dist/storage/cloudinary/index.d.ts +121 -0
  205. package/dist/storage/cloudinary/index.js +1 -0
  206. package/dist/storage/dropbox/index.d.ts +132 -0
  207. package/dist/storage/dropbox/index.js +1 -0
  208. package/dist/storage/firebase/index.d.ts +192 -0
  209. package/dist/storage/firebase/index.js +1 -0
  210. package/dist/storage/ftp/index.d.ts +91 -0
  211. package/dist/storage/ftp/index.js +1 -0
  212. package/dist/storage/gcs/index.d.ts +195 -5
  213. package/dist/storage/gcs/index.js +1 -4
  214. package/dist/storage/google-drive/index.d.ts +148 -0
  215. package/dist/storage/google-drive/index.js +1 -0
  216. package/dist/storage/local/index.d.ts +7 -4
  217. package/dist/storage/local/index.js +1 -3
  218. package/dist/storage/memory/index.d.ts +6 -0
  219. package/dist/storage/memory/index.js +1 -0
  220. package/dist/storage/netlify-blob/index.d.ts +147 -4
  221. package/dist/storage/netlify-blob/index.js +1 -3
  222. package/dist/storage/onedrive/index.d.ts +103 -0
  223. package/dist/storage/onedrive/index.js +1 -0
  224. package/dist/storage/pocketbase/index.d.ts +172 -0
  225. package/dist/storage/pocketbase/index.js +1 -0
  226. package/dist/storage/sftp/index.d.ts +92 -0
  227. package/dist/storage/sftp/index.js +1 -0
  228. package/dist/storage/sharepoint/index.d.ts +180 -0
  229. package/dist/storage/sharepoint/index.js +1 -0
  230. package/dist/storage/supabase/index.d.ts +115 -0
  231. package/dist/storage/supabase/index.js +1 -0
  232. package/dist/storage/uploadthing/index.d.ts +95 -0
  233. package/dist/storage/uploadthing/index.js +1 -0
  234. package/dist/storage/vercel-blob/index.d.ts +189 -4
  235. package/dist/storage/vercel-blob/index.js +1 -3
  236. package/dist/transformer/audio-transformer.d.ts +127 -125
  237. package/dist/transformer/audio-transformer.js +1 -278
  238. package/dist/transformer/image-transformer.d.ts +573 -568
  239. package/dist/transformer/image-transformer.js +1 -1100
  240. package/dist/transformer/index.d.ts +62 -5
  241. package/dist/transformer/index.js +1 -4
  242. package/dist/transformer/video-transformer.d.ts +144 -142
  243. package/dist/transformer/video-transformer.js +1 -310
  244. package/package.json +218 -67
  245. package/dist/handler/base/base-handler-core.d.ts +0 -91
  246. package/dist/handler/base/base-handler-fetch.d.ts +0 -76
  247. package/dist/handler/base/base-handler-node.d.ts +0 -137
  248. package/dist/handler/multipart/multipart-base.d.ts +0 -84
  249. package/dist/handler/multipart/multipart-fetch.d.ts +0 -64
  250. package/dist/handler/multipart/multipart.d.ts +0 -49
  251. package/dist/handler/rest/rest-base.d.ts +0 -106
  252. package/dist/handler/rest/rest-fetch.d.ts +0 -88
  253. package/dist/handler/rest/rest.d.ts +0 -93
  254. package/dist/handler/tus/tus-base.d.ts +0 -152
  255. package/dist/handler/tus/tus-fetch.d.ts +0 -72
  256. package/dist/handler/tus/tus.d.ts +0 -78
  257. package/dist/handler/types.d.ts +0 -53
  258. package/dist/handler/utils/request-parser.d.ts +0 -72
  259. package/dist/handler/utils/response-builder.d.ts +0 -83
  260. package/dist/handler/utils/storage-utils.d.ts +0 -10
  261. package/dist/handler/utils/stream-utils.d.ts +0 -29
  262. package/dist/handler/utils/upload-handlers.d.ts +0 -76
  263. package/dist/metrics/index.d.ts +0 -2
  264. package/dist/metrics/no-op-metrics.d.ts +0 -15
  265. package/dist/metrics/opentelemetry-metrics.d.ts +0 -55
  266. package/dist/openapi/rest.d.ts +0 -7
  267. package/dist/openapi/shared.d.ts +0 -13
  268. package/dist/openapi/transform.d.ts +0 -3
  269. package/dist/openapi/tus.d.ts +0 -7
  270. package/dist/openapi/xhr.d.ts +0 -7
  271. package/dist/packem_shared/AwsLightFile-tTneXZgG.js +0 -11
  272. package/dist/packem_shared/AwsLightMetaStorage-BWSOtVaN.js +0 -4
  273. package/dist/packem_shared/AwsLightStorage-Blv-GP4v.js +0 -133
  274. package/dist/packem_shared/AzureFile-CesgFzps.js +0 -8
  275. package/dist/packem_shared/AzureSMetaStorage-CFs-OYJT.js +0 -88
  276. package/dist/packem_shared/AzureStorage-B0v048hG.js +0 -357
  277. package/dist/packem_shared/BaseTransformer-C2gLib6v.js +0 -82
  278. package/dist/packem_shared/DiskStorage-Ck5yGQsq.js +0 -12
  279. package/dist/packem_shared/DiskStorageWithChecksum-BRl-V5x2.js +0 -238
  280. package/dist/packem_shared/ERRORS-D0apMqnc.js +0 -97
  281. package/dist/packem_shared/File-Bb3P23dr.js +0 -69
  282. package/dist/packem_shared/GCSConfig-vPP22kN6.js +0 -11
  283. package/dist/packem_shared/GCSFile-BIEunhAN.js +0 -8
  284. package/dist/packem_shared/GCSMetaStorage-CHZKMe7N.js +0 -7
  285. package/dist/packem_shared/GCStorage-C-gAuP0j.js +0 -406
  286. package/dist/packem_shared/LocalMetaStorage-CZHhKkMd.js +0 -7
  287. package/dist/packem_shared/MediaTransformer-D6658DL1.js +0 -1197
  288. package/dist/packem_shared/MetaStorage-pECeFOad.js +0 -46
  289. package/dist/packem_shared/Metadata-DRLXeJ0F.js +0 -89
  290. package/dist/packem_shared/Multipart-CRV21AUU.js +0 -128
  291. package/dist/packem_shared/Multipart-D2ryPMjD.js +0 -163
  292. package/dist/packem_shared/NetlifyBlobFile-CXzyjqrD.js +0 -14
  293. package/dist/packem_shared/NetlifyBlobMetaStorage-DxZ5aDvD.js +0 -9
  294. package/dist/packem_shared/NetlifyBlobStorage-CLPtjHqd.js +0 -376
  295. package/dist/packem_shared/NoOpMetrics-DhAk5rXc.js +0 -10
  296. package/dist/packem_shared/OpenTelemetryMetrics-BnxhqIaH.js +0 -67
  297. package/dist/packem_shared/Rest-DcxBMBjU.js +0 -228
  298. package/dist/packem_shared/Rest-DjwU3puo.js +0 -267
  299. package/dist/packem_shared/S3File-DZiyk9Qt.js +0 -11
  300. package/dist/packem_shared/S3MetaStorage-Dz9aDabA.js +0 -76
  301. package/dist/packem_shared/S3Storage-DHmTk-hU.js +0 -316
  302. package/dist/packem_shared/TUS_RESUMABLE-Dtfsffnj.js +0 -434
  303. package/dist/packem_shared/Tus-DFVlZHaX.js +0 -200
  304. package/dist/packem_shared/Tus-DaN0FmOy.js +0 -195
  305. package/dist/packem_shared/ValidationError-BfF1aE4h.js +0 -26
  306. package/dist/packem_shared/VercelBlobFile-BCg4aTEq.js +0 -18
  307. package/dist/packem_shared/VercelBlobMetaStorage-Bd9F-VFm.js +0 -9
  308. package/dist/packem_shared/VercelBlobStorage-DD9LMOS6.js +0 -261
  309. package/dist/packem_shared/_commonjsHelpers-BqLXS_qQ.js +0 -5
  310. package/dist/packem_shared/aws-light-meta-storage-DKJBgbR6.js +0 -446
  311. package/dist/packem_shared/backblaze-BlMnIcBC.js +0 -20
  312. package/dist/packem_shared/base-handler-core-BoAqTyz7.js +0 -303
  313. package/dist/packem_shared/base-handler-fetch-D4u2xits.js +0 -291
  314. package/dist/packem_shared/base-handler-node-DGzcHHAy.js +0 -730
  315. package/dist/packem_shared/cache-B88MXQ_2.js +0 -18
  316. package/dist/packem_shared/cloudflare-Bi1q8wXE.js +0 -21
  317. package/dist/packem_shared/defaultCloudStorageFileNameValidation-DUuacjWv.js +0 -11
  318. package/dist/packem_shared/digitalOcean-CWQRJM3L.js +0 -21
  319. package/dist/packem_shared/disk-storage-CD47QI30.js +0 -810
  320. package/dist/packem_shared/gcs-meta-storage-CJ8Uts_d.js +0 -158
  321. package/dist/packem_shared/has-content-CY66ehMK.js +0 -3
  322. package/dist/packem_shared/headers-YLRp1dLo.js +0 -1318
  323. package/dist/packem_shared/is-expired-CTThU1q5.js +0 -8
  324. package/dist/packem_shared/isRetryableError-Dycp7127.js +0 -82
  325. package/dist/packem_shared/isValidMediaType-BeDgiObq.js +0 -35
  326. package/dist/packem_shared/local-meta-storage-By-3SNBI.js +0 -649
  327. package/dist/packem_shared/minio-C2YBZQOw.js +0 -22
  328. package/dist/packem_shared/multipart-base-C994naBi.js +0 -102
  329. package/dist/packem_shared/part-match-BMNqHDYD.js +0 -96
  330. package/dist/packem_shared/path-CR6YkPXX-7R1-9CMk.js +0 -161
  331. package/dist/packem_shared/response-builder-BtnRiBUI.js +0 -45
  332. package/dist/packem_shared/rest-base-D9URIFkc.js +0 -457
  333. package/dist/packem_shared/restOpenApiSpec-D1JC_Jto.js +0 -800
  334. package/dist/packem_shared/s3-base-storage-C1DIHTYY.js +0 -510
  335. package/dist/packem_shared/sharedGet-Cpo7QUyu.js +0 -1019
  336. package/dist/packem_shared/storage-C6NSXb8h.js +0 -1175
  337. package/dist/packem_shared/tigris-Hac8TKnX.js +0 -21
  338. package/dist/packem_shared/transformOpenApiSpec-DWM5WtnN.js +0 -975
  339. package/dist/packem_shared/tusOpenApiSpec-mBZkl7he.js +0 -740
  340. package/dist/packem_shared/update-size-CCGm6i1J.js +0 -8
  341. package/dist/packem_shared/validator-BeX_lJet.js +0 -78
  342. package/dist/packem_shared/waitForStorage-Cscw85sx.js +0 -18
  343. package/dist/packem_shared/wasabi-DIyflHSd.js +0 -21
  344. package/dist/packem_shared/xhrOpenApiSpec-B1V5Dxrj.js +0 -264
  345. package/dist/storage/aws/clients/backblaze.d.ts +0 -12
  346. package/dist/storage/aws/clients/cloudflare.d.ts +0 -13
  347. package/dist/storage/aws/clients/digital-ocean.d.ts +0 -12
  348. package/dist/storage/aws/clients/minio.d.ts +0 -13
  349. package/dist/storage/aws/clients/tigris.d.ts +0 -12
  350. package/dist/storage/aws/clients/types.d.ts +0 -95
  351. package/dist/storage/aws/clients/wasabi.d.ts +0 -12
  352. package/dist/storage/aws/s3-base-storage.d.ts +0 -248
  353. package/dist/storage/aws/s3-client-adapter.d.ts +0 -110
  354. package/dist/storage/aws/s3-file.d.ts +0 -10
  355. package/dist/storage/aws/s3-meta-storage.d.ts +0 -15
  356. package/dist/storage/aws/s3-storage.d.ts +0 -70
  357. package/dist/storage/aws/types.d.ts +0 -119
  358. package/dist/storage/aws-light/aws-light-api-adapter.d.ts +0 -130
  359. package/dist/storage/aws-light/aws-light-file.d.ts +0 -10
  360. package/dist/storage/aws-light/aws-light-meta-storage.d.ts +0 -19
  361. package/dist/storage/aws-light/aws-light-storage.d.ts +0 -65
  362. package/dist/storage/aws-light/types.d.ts +0 -37
  363. package/dist/storage/azure/azure-file.d.ts +0 -6
  364. package/dist/storage/azure/azure-meta-storage.d.ts +0 -15
  365. package/dist/storage/azure/azure-storage.d.ts +0 -69
  366. package/dist/storage/azure/types.d.ts +0 -62
  367. package/dist/storage/gcs/fetch-error.d.ts +0 -11
  368. package/dist/storage/gcs/gcs-config.d.ts +0 -2
  369. package/dist/storage/gcs/gcs-file.d.ts +0 -6
  370. package/dist/storage/gcs/gcs-meta-storage.d.ts +0 -27
  371. package/dist/storage/gcs/gcs-storage.d.ts +0 -91
  372. package/dist/storage/gcs/types.d.ts +0 -55
  373. package/dist/storage/gcs/utils.d.ts +0 -7
  374. package/dist/storage/local/disk-storage-with-checksum.d.ts +0 -15
  375. package/dist/storage/local/disk-storage.d.ts +0 -135
  376. package/dist/storage/local/local-meta-storage.d.ts +0 -32
  377. package/dist/storage/meta-storage.d.ts +0 -30
  378. package/dist/storage/netlify-blob/netlify-blob-file.d.ts +0 -12
  379. package/dist/storage/netlify-blob/netlify-blob-meta-storage.d.ts +0 -7
  380. package/dist/storage/netlify-blob/netlify-blob-storage.d.ts +0 -93
  381. package/dist/storage/netlify-blob/types.d.ts +0 -30
  382. package/dist/storage/storage.d.ts +0 -353
  383. package/dist/storage/types.d.ts +0 -221
  384. package/dist/storage/utils/file/file.d.ts +0 -25
  385. package/dist/storage/utils/file/get-file-status.d.ts +0 -9
  386. package/dist/storage/utils/file/has-content.d.ts +0 -9
  387. package/dist/storage/utils/file/index.d.ts +0 -10
  388. package/dist/storage/utils/file/is-expired.d.ts +0 -8
  389. package/dist/storage/utils/file/metadata.d.ts +0 -18
  390. package/dist/storage/utils/file/part-match.d.ts +0 -11
  391. package/dist/storage/utils/file/types.d.ts +0 -37
  392. package/dist/storage/utils/file/update-metadata.d.ts +0 -10
  393. package/dist/storage/utils/file/update-size.d.ts +0 -10
  394. package/dist/storage/vercel-blob/types.d.ts +0 -32
  395. package/dist/storage/vercel-blob/vercel-blob-file.d.ts +0 -16
  396. package/dist/storage/vercel-blob/vercel-blob-meta-storage.d.ts +0 -7
  397. package/dist/storage/vercel-blob/vercel-blob-storage.d.ts +0 -76
  398. package/dist/transformer/base-transformer.d.ts +0 -63
  399. package/dist/transformer/media-transformer.d.ts +0 -332
  400. package/dist/transformer/types.d.ts +0 -652
  401. package/dist/transformer/utils.d.ts +0 -33
  402. package/dist/transformer/validation-error.d.ts +0 -23
  403. package/dist/utils/cache.d.ts +0 -32
  404. package/dist/utils/chunked-upload.d.ts +0 -65
  405. package/dist/utils/detect-file-type.d.ts +0 -28
  406. package/dist/utils/errors.d.ts +0 -74
  407. package/dist/utils/file-path-url-matcher.d.ts +0 -18
  408. package/dist/utils/headers.d.ts +0 -111
  409. package/dist/utils/http.d.ts +0 -92
  410. package/dist/utils/locker.d.ts +0 -26
  411. package/dist/utils/pipes/stream-checksum.d.ts +0 -47
  412. package/dist/utils/pipes/stream-length.d.ts +0 -22
  413. package/dist/utils/primitives/get-last-one.d.ts +0 -3
  414. package/dist/utils/primitives/is-record.d.ts +0 -2
  415. package/dist/utils/primitives/map-values.d.ts +0 -9
  416. package/dist/utils/primitives/pick.d.ts +0 -2
  417. package/dist/utils/primitives/to-milliseconds.d.ts +0 -12
  418. package/dist/utils/primitives/to-seconds.d.ts +0 -12
  419. package/dist/utils/range-checksum.d.ts +0 -33
  420. package/dist/utils/range-hasher.d.ts +0 -46
  421. package/dist/utils/retry.d.ts +0 -64
  422. package/dist/utils/types.d.ts +0 -108
  423. package/dist/utils/validation-error.d.ts +0 -22
  424. package/dist/utils/validator.d.ts +0 -36
@@ -1,303 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- import { format } from 'node:url';
3
- import mime from 'mime';
4
- import { ErrorMap } from './ERRORS-D0apMqnc.js';
5
- import { H as HeaderUtilities } from './headers-YLRp1dLo.js';
6
- import { Readable } from 'node:stream';
7
- import 'type-is';
8
-
9
- const getLastOne = (value) => value.at(-1);
10
-
11
- const extractForwarded = (request) => {
12
- let proto = "";
13
- let host = "";
14
- const header = getHeader(request, "forwarded");
15
- if (header) {
16
- const kvPairs = header.split(";");
17
- kvPairs.forEach((kv) => {
18
- const [token, value] = kv.split("=");
19
- if (token === "proto") {
20
- proto = value;
21
- }
22
- if (token === "host") {
23
- host = value;
24
- }
25
- });
26
- }
27
- return { host, proto };
28
- };
29
- const readBody = (request, encoding = "utf8", limit) => new Promise((resolve, reject) => {
30
- let body = "";
31
- request.setEncoding(encoding);
32
- request.on("data", (chunk) => {
33
- if (body.length + chunk.length > limit) {
34
- return reject(new Error("Request body length limit exceeded"));
35
- }
36
- body += chunk;
37
- });
38
- request.once("end", () => resolve(body));
39
- });
40
- const getHeader = (request, name, all = false) => {
41
- const raw = request.headers?.[name.toLowerCase()];
42
- if (!raw || raw.length === 0) {
43
- return "";
44
- }
45
- if (all) {
46
- return raw.toString().trim();
47
- }
48
- const array = Array.isArray(raw) ? raw : raw.split(",");
49
- return getLastOne(array).trim();
50
- };
51
- const appendHeader = (response, name, value) => {
52
- const s = [response.getHeader(name), value].flat().filter(Boolean).toString();
53
- response.setHeader(name, s);
54
- };
55
- const setHeaders = (response, headers = {}) => {
56
- const keys = Object.keys(headers);
57
- if (keys.length > 0) {
58
- appendHeader(response, "Access-Control-Expose-Headers", keys);
59
- }
60
- keys.forEach((key) => {
61
- if (["link", "location"].includes(key.toLowerCase())) {
62
- response.setHeader(key, encodeURI(headers[key].toString()));
63
- } else {
64
- response.setHeader(key, headers[key]);
65
- }
66
- });
67
- };
68
- const extractHost = (request) => getHeader(request, "host") || getHeader(request, "x-forwarded-host");
69
- const extractProto = (request) => getHeader(request, "x-forwarded-proto").toLowerCase();
70
- const getBaseUrl = (request) => {
71
- let { host, proto } = extractForwarded(request);
72
- host ||= extractHost(request);
73
- proto ||= extractProto(request);
74
- if (!host) {
75
- return "";
76
- }
77
- return proto ? `${proto}://${host}` : `//${host}`;
78
- };
79
- const getRealPath = (request) => {
80
- let realPath = (request.originalUrl || request.url || "").split("?")[0];
81
- if (!realPath) {
82
- throw new TypeError("Invalid request URL");
83
- }
84
- if (!realPath.startsWith("/")) {
85
- realPath = `/${realPath}`;
86
- }
87
- if (realPath.startsWith("http")) {
88
- const url = new URL(realPath);
89
- realPath = url.pathname;
90
- }
91
- return realPath;
92
- };
93
- const uuidRegex = /(?:[\dA-Z]+-){2}[\dA-Z]+/i;
94
- const getIdFromRequest = (request) => {
95
- const realPath = getRealPath(request);
96
- const segments = realPath.split("/").filter(Boolean);
97
- if (segments.length === 0) {
98
- throw new Error("Invalid request URL");
99
- }
100
- for (let index = segments.length - 1; index >= 0; index -= 1) {
101
- const segment = segments[index];
102
- if (!segment) {
103
- continue;
104
- }
105
- const cleanSegment = segment.replace(/\.[^/.]+$/, "");
106
- const commonPathNames2 = ["files", "metadata", "upload", "download", "http-rest", "http-rest-chunked"];
107
- if (commonPathNames2.includes(cleanSegment.toLowerCase())) {
108
- continue;
109
- }
110
- if (uuidRegex.test(cleanSegment)) {
111
- return cleanSegment;
112
- }
113
- }
114
- const lastSegment = segments[segments.length - 1];
115
- if (!lastSegment) {
116
- throw new Error("Invalid request URL");
117
- }
118
- const cleanLastSegment = lastSegment.replace(/\.[^/.]+$/, "");
119
- const commonPathNames = ["files", "metadata", "upload", "download", "http-rest", "http-rest-chunked"];
120
- if (commonPathNames.includes(cleanLastSegment.toLowerCase())) {
121
- throw new Error("Invalid request URL");
122
- }
123
- if (cleanLastSegment.length < 8) {
124
- throw new Error("Invalid request URL");
125
- }
126
- if (segments.length > 1) {
127
- return cleanLastSegment;
128
- }
129
- throw new Error("Invalid request URL");
130
- };
131
- const getRequestStream = (request) => {
132
- if ("body" in request && request.body && typeof request.body.getReader === "function") {
133
- return Readable.fromWeb(request.body);
134
- }
135
- if ("body" in request && request.body && request.body instanceof Uint8Array) {
136
- return Readable.from(Buffer.from(request.body));
137
- }
138
- if (request instanceof Readable) {
139
- return request;
140
- }
141
- return Readable.from(new Uint8Array(0));
142
- };
143
-
144
- const pick = (object, whitelist) => {
145
- const result = {};
146
- whitelist.forEach((key) => {
147
- result[key] = object[key];
148
- });
149
- return result;
150
- };
151
-
152
- class BaseHandlerCore extends EventEmitter {
153
- /**
154
- * Response body type for the handler.
155
- */
156
- responseType = "json";
157
- /**
158
- * Storage instance for file operations.
159
- */
160
- storage;
161
- /**
162
- * Optional media transformer for image/video processing.
163
- */
164
- mediaTransformer;
165
- /**
166
- * Whether to disable termination for finished uploads.
167
- */
168
- disableTerminationForFinishedUploads;
169
- /**
170
- * Logger instance for debugging and error reporting.
171
- */
172
- logger;
173
- /**
174
- * Gets the logger instance.
175
- * @returns Logger instance or undefined.
176
- */
177
- get loggerInstance() {
178
- return this.logger;
179
- }
180
- /**
181
- * Internal error responses configuration.
182
- */
183
- internalErrorResponses = {};
184
- /**
185
- * Gets the error responses configuration.
186
- * @returns Error responses configuration.
187
- */
188
- get errorResponses() {
189
- return this.internalErrorResponses;
190
- }
191
- constructor({ disableTerminationForFinishedUploads, mediaTransformer, storage }) {
192
- super();
193
- this.storage = storage;
194
- this.mediaTransformer = mediaTransformer;
195
- this.disableTerminationForFinishedUploads = disableTerminationForFinishedUploads;
196
- this.logger = this.storage?.logger;
197
- this.assembleErrors();
198
- }
199
- /**
200
- * Sets custom error responses.
201
- * @param value Partial error responses to override defaults.
202
- */
203
- set errorResponses(value) {
204
- this.assembleErrors(value);
205
- }
206
- /**
207
- * Assemble error responses by merging defaults with custom overrides.
208
- * @param customErrors Custom error responses to override defaults
209
- */
210
- assembleErrors = (customErrors = {}) => {
211
- this.internalErrorResponses = {
212
- ...ErrorMap,
213
- ...this.internalErrorResponses,
214
- ...this.storage.errorResponses,
215
- ...customErrors
216
- };
217
- };
218
- /**
219
- * Parses HTTP Range header and returns start/end byte positions for partial content requests.
220
- * @param rangeHeader HTTP Range header value (e.g., "bytes=0-1023").
221
- * @param fileSize Total size of the file in bytes.
222
- * @returns Object with start and end positions, or undefined if range is invalid.
223
- */
224
- // eslint-disable-next-line class-methods-use-this
225
- parseRangeHeader(rangeHeader, fileSize) {
226
- if (!rangeHeader || !rangeHeader.startsWith("bytes=")) {
227
- return void 0;
228
- }
229
- const ranges = rangeHeader.slice(6).split(",");
230
- if (ranges.length !== 1) {
231
- return void 0;
232
- }
233
- const range = ranges[0]?.trim();
234
- if (!range) {
235
- return void 0;
236
- }
237
- const parts = range.split("-");
238
- if (parts.length !== 2) {
239
- return void 0;
240
- }
241
- const [startString, endString] = parts;
242
- let start;
243
- let end;
244
- if (startString && endString) {
245
- start = Number.parseInt(startString, 10);
246
- end = Number.parseInt(endString, 10);
247
- } else if (startString && !endString) {
248
- start = Number.parseInt(startString, 10);
249
- end = fileSize - 1;
250
- } else if (!startString && endString) {
251
- const suffixLength = Number.parseInt(endString, 10);
252
- start = Math.max(0, fileSize - suffixLength);
253
- end = fileSize - 1;
254
- } else {
255
- return void 0;
256
- }
257
- if (Number.isNaN(start) || Number.isNaN(end) || start >= fileSize || end >= fileSize || start > end) {
258
- return void 0;
259
- }
260
- return { end, start };
261
- }
262
- /**
263
- * Build file URL from request and file data.
264
- * Platform-agnostic version that accepts URL string.
265
- * @param requestUrl Request URL string
266
- * @param file File object containing ID and content type
267
- * @returns Constructed file URL with extension based on content type
268
- */
269
- buildFileUrlFromString(requestUrl, file) {
270
- const url = new URL(requestUrl, "http://localhost");
271
- const { pathname } = url;
272
- const query = Object.fromEntries(url.searchParams.entries());
273
- const relative = format({ pathname: `${pathname}/${file.id}`, query });
274
- const baseUrl = this.storage.config.useRelativeLocation ? "" : getBaseUrl({ });
275
- return `${baseUrl}${relative}.${mime.getExtension(file.contentType)}`;
276
- }
277
- /**
278
- * Negotiates content type based on Accept header and supported formats.
279
- * Platform-agnostic version that accepts header string.
280
- * @param acceptHeader Accept header value
281
- * @param supportedTypes Array of supported MIME types to match against
282
- * @returns Best matching content type or undefined if no match found
283
- */
284
- // eslint-disable-next-line class-methods-use-this
285
- negotiateContentTypeFromHeader(acceptHeader, supportedTypes) {
286
- if (!acceptHeader) {
287
- return void 0;
288
- }
289
- return HeaderUtilities.getPreferredMediaType(acceptHeader, supportedTypes);
290
- }
291
- /**
292
- * Check for undefined ID or path errors and throw appropriate HTTP errors.
293
- * @param error The error to check
294
- */
295
- // eslint-disable-next-line class-methods-use-this
296
- checkForUndefinedIdOrPath(error) {
297
- if (error instanceof Error && ["Id is undefined", "Invalid request URL", "Path is undefined"].includes(error.message)) {
298
- throw error;
299
- }
300
- }
301
- }
302
-
303
- export { BaseHandlerCore as B, getHeader as a, getRequestStream as b, getBaseUrl as c, getRealPath as d, getIdFromRequest as g, pick as p, readBody as r, setHeaders as s, uuidRegex as u };
@@ -1,291 +0,0 @@
1
- import { H as HeaderUtilities, h as httpErrorsExports } from './headers-YLRp1dLo.js';
2
- import { ERRORS, isUploadError } from './ERRORS-D0apMqnc.js';
3
- import { B as BaseHandlerCore, p as pick } from './base-handler-core-BoAqTyz7.js';
4
- import { i as isValidationError } from './validator-BeX_lJet.js';
5
- import { waitForStorage } from './waitForStorage-Cscw85sx.js';
6
-
7
- class BaseHandlerFetch extends BaseHandlerCore {
8
- /**
9
- * Limiting enabled HTTP method handler.
10
- */
11
- static methods = ["delete", "get", "head", "options", "patch", "post", "put"];
12
- /**
13
- * Map of registered HTTP method handlers.
14
- */
15
- registeredHandlers = /* @__PURE__ */ new Map();
16
- constructor(options) {
17
- super(options);
18
- this.compose();
19
- }
20
- /**
21
- * Gets the registered handlers map.
22
- * @returns Map of registered handlers.
23
- */
24
- get handlers() {
25
- return this.registeredHandlers;
26
- }
27
- /**
28
- * Handles Web API Fetch requests (for Hono, Cloudflare Workers, etc.).
29
- * @param request Web API Request object.
30
- * @returns Promise resolving to Web API Response.
31
- */
32
- async fetch(request) {
33
- this.logger?.debug("[fetch request]: %s %s", request.method, request.url);
34
- const handler = this.registeredHandlers.get(request.method || "GET");
35
- if (!handler) {
36
- return this.createErrorResponse({ UploadErrorCode: ERRORS.METHOD_NOT_ALLOWED });
37
- }
38
- try {
39
- await waitForStorage(this.storage);
40
- } catch {
41
- return this.createErrorResponse({ UploadErrorCode: ERRORS.STORAGE_ERROR });
42
- }
43
- try {
44
- const file = await handler.call(this, request);
45
- return this.handleFetchResponse(request, file);
46
- } catch (error) {
47
- const errorObject = error instanceof Error ? error : new Error(String(error));
48
- const uError = pick(errorObject, ["name", ...Object.getOwnPropertyNames(errorObject)]);
49
- const errorEvent = {
50
- ...uError,
51
- request: {
52
- headers: Object.fromEntries(request.headers.entries()),
53
- method: request.method,
54
- url: request.url
55
- }
56
- };
57
- if (this.listenerCount("error") > 0) {
58
- this.emit("error", errorEvent);
59
- }
60
- this.logger?.error("[fetch error]: %O", errorEvent);
61
- return this.createErrorResponse(errorObject);
62
- }
63
- }
64
- /**
65
- * Handle the response from handlers for fetch requests and convert to Web API Response.
66
- * @param request Web API Request object
67
- * @param file Response file or list from handler
68
- * @returns Promise resolving to Web API Response object
69
- */
70
- async handleFetchResponse(request, file) {
71
- if (request.method === "HEAD" || request.method === "OPTIONS") {
72
- const { headers: headers2, statusCode: statusCode2 } = file;
73
- return new Response(void 0, {
74
- headers: this.convertHeaders({
75
- ...headers2,
76
- "Access-Control-Expose-Headers": "location,upload-expires,upload-offset,upload-length,upload-metadata,upload-defer-length,tus-resumable,tus-extension,tus-max-size,tus-version,tus-checksum-algorithm,cache-control"
77
- }),
78
- status: statusCode2
79
- });
80
- }
81
- if (request.method === "GET") {
82
- const { headers: headers2, statusCode: statusCode2 } = file;
83
- let body = "";
84
- if (file.content !== void 0) {
85
- body = new Uint8Array(file.content);
86
- } else if (typeof file === "object" && "data" in file) {
87
- body = JSON.stringify(file.data);
88
- }
89
- return new Response(body, {
90
- headers: this.convertHeaders({
91
- ...headers2,
92
- "Access-Control-Expose-Headers": "location,upload-expires,upload-offset,upload-length,upload-metadata,upload-defer-length,tus-resumable,tus-extension,tus-max-size,tus-version,tus-checksum-algorithm,cache-control"
93
- }),
94
- status: statusCode2
95
- });
96
- }
97
- const { headers, statusCode, ...basicFile } = file;
98
- if (basicFile.status !== void 0 && this.listenerCount(basicFile.status) > 0) {
99
- this.emit(basicFile.status, {
100
- ...basicFile,
101
- request: {
102
- headers: Object.fromEntries(request.headers.entries()),
103
- method: request.method,
104
- url: request.url
105
- }
106
- });
107
- }
108
- if (basicFile.status === "completed") {
109
- const responseFile = file;
110
- if (responseFile.headers === void 0) {
111
- responseFile.headers = {};
112
- }
113
- if (responseFile.statusCode === void 0) {
114
- responseFile.statusCode = 200;
115
- }
116
- try {
117
- await this.storage.onComplete(basicFile, responseFile);
118
- } catch (error) {
119
- this.logger?.error("[onComplete error]: %O", error);
120
- throw error;
121
- }
122
- const { headers: responseFileHeaders2, statusCode: responseFileStatusCode, ...fileData } = responseFile;
123
- const { content, stream, ...cleanFileData } = fileData;
124
- return this.createResponse({
125
- body: cleanFileData,
126
- headers: responseFileHeaders2 || headers,
127
- statusCode: responseFileStatusCode || statusCode || 200
128
- });
129
- }
130
- const allHeaders = {
131
- ...headers,
132
- ...file.headers
133
- };
134
- const convertedHeaders = this.convertHeaders({
135
- ...allHeaders,
136
- "Access-Control-Expose-Headers": "location,upload-expires,upload-offset,upload-length,upload-metadata,upload-defer-length,tus-resumable,tus-extension,tus-max-size,tus-version,tus-checksum-algorithm,cache-control",
137
- ...basicFile.hash === void 0 ? {} : { [`X-Range-${basicFile.hash?.algorithm.toUpperCase()}`]: basicFile.hash?.value }
138
- });
139
- const responseFileHeaders = file.headers || {};
140
- if (responseFileHeaders.Location && !convertedHeaders.location && !convertedHeaders.Location) {
141
- convertedHeaders.location = String(responseFileHeaders.Location);
142
- } else if (responseFileHeaders.location && !convertedHeaders.location && !convertedHeaders.Location) {
143
- convertedHeaders.location = String(responseFileHeaders.location);
144
- } else if (headers.Location && !convertedHeaders.location && !convertedHeaders.Location) {
145
- convertedHeaders.location = String(headers.Location);
146
- } else if (headers.location && !convertedHeaders.location && !convertedHeaders.Location) {
147
- convertedHeaders.location = String(headers.location);
148
- }
149
- let responseBody;
150
- if (statusCode >= 200 && statusCode < 300) {
151
- responseBody = Object.keys(basicFile).length > 0 ? { ...basicFile } : {};
152
- if ("content" in responseBody) {
153
- delete responseBody.content;
154
- }
155
- if ("stream" in responseBody) {
156
- delete responseBody.stream;
157
- }
158
- if (Object.keys(responseBody).length === 0) {
159
- responseBody = {};
160
- }
161
- }
162
- return this.createResponse({
163
- body: responseBody,
164
- headers: convertedHeaders,
165
- statusCode: statusCode || 200
166
- });
167
- }
168
- /**
169
- * Convert headers to Web API Headers format by flattening arrays and converting to strings.
170
- * @param headers Headers object with potentially array values
171
- * @returns Headers object with all values as strings
172
- */
173
- // eslint-disable-next-line class-methods-use-this
174
- convertHeaders(headers) {
175
- const result = {};
176
- for (const [key, value] of Object.entries(headers)) {
177
- result[key] = Array.isArray(value) ? value.join(", ") : String(value);
178
- }
179
- return result;
180
- }
181
- /**
182
- * Create Web API Response from UploadResponse object.
183
- * @param uploadResponse Upload response containing body, headers, and status code
184
- * @returns Web API Response object
185
- */
186
- createResponse(uploadResponse) {
187
- const { body, headers = {}, statusCode } = uploadResponse;
188
- let responseBody;
189
- if (statusCode === 204) {
190
- responseBody = null;
191
- } else if (typeof body === "string") {
192
- responseBody = body;
193
- } else if (body instanceof Buffer) {
194
- responseBody = new Uint8Array(body);
195
- } else if (body && typeof body === "object") {
196
- responseBody = JSON.stringify(body);
197
- if (!headers["Content-Type"]) {
198
- headers["Content-Type"] = HeaderUtilities.createContentType({
199
- charset: "utf8",
200
- mediaType: "application/json"
201
- });
202
- }
203
- } else if (body === void 0 && statusCode !== void 0 && statusCode >= 200 && statusCode < 300) {
204
- responseBody = "{}";
205
- if (!headers["Content-Type"]) {
206
- headers["Content-Type"] = HeaderUtilities.createContentType({
207
- charset: "utf8",
208
- mediaType: "application/json"
209
- });
210
- }
211
- }
212
- return new Response(responseBody, {
213
- headers: this.convertHeaders(headers),
214
- status: statusCode
215
- });
216
- }
217
- /**
218
- * Create error Response from Error object with appropriate status code and message.
219
- * @param error Error object to convert to HTTP error response
220
- * @returns Web API Response object with error details
221
- */
222
- async createErrorResponse(error) {
223
- let httpError;
224
- if (isUploadError(error)) {
225
- httpError = this.internalErrorResponses[error.UploadErrorCode];
226
- } else if (!isValidationError(error) && !httpErrorsExports.isHttpError(error)) {
227
- httpError = this.storage.normalizeError(error);
228
- } else {
229
- httpError = {
230
- ...error,
231
- code: error.code || error.name,
232
- headers: error.headers || {},
233
- message: error.message,
234
- name: error.name,
235
- statusCode: error.statusCode || 500
236
- };
237
- }
238
- await this.storage.onError(httpError);
239
- let errorResponse;
240
- if (httpError.body) {
241
- if (typeof httpError.body === "object" && httpError.body !== null) {
242
- errorResponse = { body: httpError.body, headers: httpError.headers, statusCode: httpError.statusCode };
243
- } else {
244
- errorResponse = {
245
- body: {
246
- error: {
247
- code: httpError.code || httpError.name || "Error",
248
- message: httpError.body || httpError.message || "Unknown error",
249
- name: httpError.name || "Error"
250
- }
251
- },
252
- headers: httpError.headers,
253
- statusCode: httpError.statusCode || 500
254
- };
255
- }
256
- } else {
257
- errorResponse = {
258
- body: {
259
- error: {
260
- code: httpError.code || httpError.name || "Error",
261
- message: httpError.message || "Unknown error",
262
- name: httpError.name || "Error"
263
- }
264
- },
265
- headers: httpError.headers,
266
- statusCode: httpError.statusCode || 500
267
- };
268
- }
269
- return this.createResponse(errorResponse);
270
- }
271
- /**
272
- * Build file URL from request and file data.
273
- * @param request Web API Request object
274
- * @param file File object containing ID and content type
275
- * @returns Constructed file URL with extension based on content type
276
- */
277
- buildFileUrl(request, file) {
278
- return this.buildFileUrlFromString(request.url, file);
279
- }
280
- /**
281
- * Negotiates content type based on Accept header and supported formats.
282
- * @param request Web API Request object containing Accept header.
283
- * @param supportedTypes Array of supported MIME types to match against.
284
- * @returns Best matching content type or undefined if no match found.
285
- */
286
- negotiateContentType(request, supportedTypes) {
287
- return super.negotiateContentTypeFromHeader(request.headers.get("accept") || void 0, supportedTypes);
288
- }
289
- }
290
-
291
- export { BaseHandlerFetch as B };