@visulima/storage 1.0.0-alpha.3 → 1.0.0-alpha.31

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 (417) hide show
  1. package/CHANGELOG.md +385 -0
  2. package/LICENSE.md +213 -573
  3. package/README.md +83 -470
  4. package/dist/adapter/nuxt/module.d.ts +41 -34
  5. package/dist/adapter/nuxt/module.js +1 -93
  6. package/dist/adapter/nuxt/node_modules/.bin/nuxi +22 -0
  7. package/dist/adapter/nuxt/node_modules/.bin/nuxt +22 -0
  8. package/dist/adapter/nuxt/package.json +0 -6
  9. package/dist/ai/ai-sdk/index.d.ts +113 -0
  10. package/dist/ai/ai-sdk/index.js +1 -0
  11. package/dist/ai/claude/index.d.ts +177 -0
  12. package/dist/ai/claude/index.js +1 -0
  13. package/dist/ai/openai/index.d.ts +205 -0
  14. package/dist/ai/openai/index.js +1 -0
  15. package/dist/ai/tanstack/index.d.ts +115 -0
  16. package/dist/ai/tanstack/index.js +1 -0
  17. package/dist/handler/http/fetch/index.d.ts +303 -4
  18. package/dist/handler/http/fetch/index.js +1 -4
  19. package/dist/handler/http/hono/index.d.ts +73 -64
  20. package/dist/handler/http/hono/index.js +1 -65
  21. package/dist/handler/http/nextjs/index.d.ts +66 -58
  22. package/dist/handler/http/nextjs/index.js +1 -37
  23. package/dist/handler/http/node/index.d.ts +361 -4
  24. package/dist/handler/http/node/index.js +1 -4
  25. package/dist/handler/http/solid-start/index.d.ts +66 -57
  26. package/dist/handler/http/solid-start/index.js +1 -44
  27. package/dist/index.d.ts +58 -17
  28. package/dist/index.js +1 -13
  29. package/dist/openapi/index.d.ts +24 -5
  30. package/dist/openapi/index.js +1 -5
  31. package/dist/packem_shared/AwsLightFile-BSqjc_rD.js +1 -0
  32. package/dist/packem_shared/AwsLightMetaStorage-B-iQbToR.js +1 -0
  33. package/dist/packem_shared/AwsLightStorage-DbQrK9m7.js +1 -0
  34. package/dist/packem_shared/AzureFile-Dgj2Tef4.js +1 -0
  35. package/dist/packem_shared/AzureSMetaStorage-CR-lfQNQ.js +1 -0
  36. package/dist/packem_shared/AzureStorage-Cmr0nPDq.js +1 -0
  37. package/dist/packem_shared/BaseTransformer-Fpcuz4kj.js +1 -0
  38. package/dist/packem_shared/BoxFile-Be0S4N1L.js +1 -0
  39. package/dist/packem_shared/BoxMetaStorage-DLdXbZaV.js +1 -0
  40. package/dist/packem_shared/BoxStorage-DYzAYPIr.js +1 -0
  41. package/dist/packem_shared/BunS3File-D-SRiyrm.js +1 -0
  42. package/dist/packem_shared/BunS3MetaStorage-Bv_CTTMz.js +1 -0
  43. package/dist/packem_shared/BunS3Storage-BvaFeKeu.js +1 -0
  44. package/dist/packem_shared/BunnyFile-Dotl-lO9.js +1 -0
  45. package/dist/packem_shared/BunnyMetaStorage-DNMTSeoN.js +1 -0
  46. package/dist/packem_shared/BunnyStorage-DsQndiy5.js +1 -0
  47. package/dist/packem_shared/CloudinaryFile-B5-m33eS.js +1 -0
  48. package/dist/packem_shared/CloudinaryMetaStorage-DEBk5eQy.js +1 -0
  49. package/dist/packem_shared/CloudinaryStorage-DiK0T7N7.js +1 -0
  50. package/dist/packem_shared/DiskStorage-RvZNMWe7.js +1 -0
  51. package/dist/packem_shared/DiskStorageWithChecksum-eGOV3leX.js +1 -0
  52. package/dist/packem_shared/DropboxFile-BGVG2kXM.js +1 -0
  53. package/dist/packem_shared/DropboxMetaStorage-C6vj1QDA.js +1 -0
  54. package/dist/packem_shared/DropboxStorage-Dfd78aJL.js +1 -0
  55. package/dist/packem_shared/ERRORS-CyOuSMLY.js +1 -0
  56. package/dist/packem_shared/File-BhfUgJjs.js +1 -0
  57. package/dist/packem_shared/Files-CtggibJ-.js +1 -0
  58. package/dist/packem_shared/FirebaseFile-JEu3plMP.js +1 -0
  59. package/dist/packem_shared/FirebaseMetaStorage-CzyOim-J.js +1 -0
  60. package/dist/packem_shared/FirebaseStorage-C-FwZOYA.js +2 -0
  61. package/dist/packem_shared/FtpFile-B8jaICTB.js +1 -0
  62. package/dist/packem_shared/FtpMetaStorage-1Njy0DpU.js +1 -0
  63. package/dist/packem_shared/FtpStorage-DzaP89bG.js +1 -0
  64. package/dist/packem_shared/GCSConfig-BQ0OpVhe.js +1 -0
  65. package/dist/packem_shared/GCSFile-CDQ6IWAz.js +1 -0
  66. package/dist/packem_shared/GCSMetaStorage-DFIjFmn-.js +1 -0
  67. package/dist/packem_shared/GCStorage-1vA3xkFO.js +1 -0
  68. package/dist/packem_shared/GoogleDriveFile-D0aGfGbL.js +1 -0
  69. package/dist/packem_shared/GoogleDriveMetaStorage-WGuUZPyx.js +1 -0
  70. package/dist/packem_shared/GoogleDriveStorage-D_RaKV_j.js +1 -0
  71. package/dist/packem_shared/LocalMetaStorage-QMKL7McF.js +1 -0
  72. package/dist/packem_shared/MediaTransformer-D-1c9Q_k.js +1 -0
  73. package/dist/packem_shared/MetaStorage-Y4m1dWgd.js +1 -0
  74. package/dist/packem_shared/Metadata-B6Ir0KO7.js +1 -0
  75. package/dist/packem_shared/Multipart-C6Mw7V9W.js +1 -0
  76. package/dist/packem_shared/Multipart-DkH4QwNs.js +1 -0
  77. package/dist/packem_shared/NetlifyBlobFile-PMZLJ8AC.js +1 -0
  78. package/dist/packem_shared/NetlifyBlobMetaStorage-ClIFdTkT.js +1 -0
  79. package/dist/packem_shared/NetlifyBlobStorage-C-IkXF0_.js +1 -0
  80. package/dist/packem_shared/NoOpMetrics-Dky06sf1.js +1 -0
  81. package/dist/packem_shared/OneDriveFile-XbVVKIJh.js +1 -0
  82. package/dist/packem_shared/OneDriveMetaStorage-DS4f83X2.js +1 -0
  83. package/dist/packem_shared/OneDriveStorage-C7rqK2Wp.js +1 -0
  84. package/dist/packem_shared/OpenTelemetryMetrics-9uxQMSlg.js +1 -0
  85. package/dist/packem_shared/PocketBaseFile-CkAiSBb0.js +1 -0
  86. package/dist/packem_shared/PocketBaseMetaStorage-B6utPncj.js +1 -0
  87. package/dist/packem_shared/PocketBaseStorage-Cdgr5w88.js +1 -0
  88. package/dist/packem_shared/Rest-DWrS4Z_j.js +1 -0
  89. package/dist/packem_shared/Rest-DY1neM_3.js +1 -0
  90. package/dist/packem_shared/S3File-BfmCOET4.js +1 -0
  91. package/dist/packem_shared/S3MetaStorage-vcriiosn.js +1 -0
  92. package/dist/packem_shared/S3Storage-Dn3l4WkO.js +1 -0
  93. package/dist/packem_shared/SftpFile-CQCxZNVq.js +1 -0
  94. package/dist/packem_shared/SftpMetaStorage-DYqXwCdM.js +1 -0
  95. package/dist/packem_shared/SftpStorage-CBW6MBLV.js +1 -0
  96. package/dist/packem_shared/SharePointFile-BA6X9Sxr.js +1 -0
  97. package/dist/packem_shared/SharePointMetaStorage-DVM5-X6g.js +1 -0
  98. package/dist/packem_shared/SharePointStorage-r934t5HX.js +1 -0
  99. package/dist/packem_shared/SupabaseFile-DZ1iv9gM.js +1 -0
  100. package/dist/packem_shared/SupabaseMetaStorage-ivXoYVUu.js +1 -0
  101. package/dist/packem_shared/SupabaseStorage-DMRhLPNo.js +1 -0
  102. package/dist/packem_shared/TUS_RESUMABLE-B7KtPVeC.js +1 -0
  103. package/dist/packem_shared/Tus-BMd67Cnb.js +1 -0
  104. package/dist/packem_shared/Tus-d2hPK5nV.js +1 -0
  105. package/dist/packem_shared/UploadThingFile-BpG9mE8K.js +1 -0
  106. package/dist/packem_shared/UploadThingMetaStorage-BvKNzgm7.js +1 -0
  107. package/dist/packem_shared/UploadThingStorage-BjF_gRMY.js +1 -0
  108. package/dist/packem_shared/ValidationError-D8KKJiKA.js +1 -0
  109. package/dist/packem_shared/VercelBlobFile-Cni_1qwD.js +1 -0
  110. package/dist/packem_shared/VercelBlobMetaStorage-CwaqWucZ.js +1 -0
  111. package/dist/packem_shared/VercelBlobStorage-Dx2jywjl.js +1 -0
  112. package/dist/packem_shared/_commonjsHelpers-D6W6KoPK.js +1 -0
  113. package/dist/packem_shared/agentsListFiles-R-CnGKc4.js +1 -0
  114. package/dist/packem_shared/akamai-BYS9pP8S.js +1 -0
  115. package/dist/packem_shared/alibaba-BJQ6ijoK.js +1 -0
  116. package/dist/packem_shared/approval-BBeX3o4E.js +1 -0
  117. package/dist/packem_shared/approval.d-CMAYH9GF.d.ts +75 -0
  118. package/dist/packem_shared/aws-light-meta-storage-CstQBYXG.js +4 -0
  119. package/dist/packem_shared/azure-meta-storage-C4SrMtT2.js +1 -0
  120. package/dist/packem_shared/backblaze-CvdtCvJL.js +1 -0
  121. package/dist/packem_shared/base-handler-core-Cwd9uq_E.js +1 -0
  122. package/dist/packem_shared/base-handler-fetch-_BD4V1W2.js +1 -0
  123. package/dist/packem_shared/base-handler-node-BDNRnVIc.js +1 -0
  124. package/dist/packem_shared/cache-qV_5Umeq.js +1 -0
  125. package/dist/packem_shared/claudeListFiles-DAezbKEi.js +1 -0
  126. package/dist/packem_shared/cloudflare-Bm_Pg6yx.js +1 -0
  127. package/dist/packem_shared/createResponsesFileTools-BCep-qdO.js +1 -0
  128. package/dist/packem_shared/defaultCloudStorageFileNameValidation-hWLdEgOD.js +1 -0
  129. package/dist/packem_shared/detect-file-type-5JhzC9RU.js +1 -0
  130. package/dist/packem_shared/digitalOcean-Lj1NfDzc.js +1 -0
  131. package/dist/packem_shared/disk-storage-Bmvawf-b.js +1 -0
  132. package/dist/packem_shared/disk-storage-with-checksum.d-Dm4agCey.d.ts +150 -0
  133. package/dist/packem_shared/executors-DG6hGtvm.js +1 -0
  134. package/dist/packem_shared/executors.d-Cut3Gstb.d.ts +65 -0
  135. package/dist/packem_shared/exoscale-O0HzxoDz.js +1 -0
  136. package/dist/packem_shared/filebase-D-urO4Ob.js +1 -0
  137. package/dist/packem_shared/gcs-meta-storage-Bwts-MUe.js +1 -0
  138. package/dist/packem_shared/has-content-Bx2p8Okx.js +1 -0
  139. package/dist/packem_shared/headers-DC2MEOrK.js +27 -0
  140. package/dist/packem_shared/hetzner-DDxE7Gy7.js +1 -0
  141. package/dist/packem_shared/ibmCos-Rx_yku4H.js +1 -0
  142. package/dist/packem_shared/idriveE2-BFhw0Vwy.js +1 -0
  143. package/dist/packem_shared/index-B4ETk0Lu.js +5 -0
  144. package/dist/packem_shared/index.d-DSZjPbvW.d.ts +230 -0
  145. package/dist/packem_shared/is-expired-1JuZjDtb.js +1 -0
  146. package/dist/packem_shared/isRetryableError-BhizNeAz.js +1 -0
  147. package/dist/packem_shared/isValidMediaType-B-2UKjZx.js +1 -0
  148. package/dist/packem_shared/listFiles-B6VF05d-.js +1 -0
  149. package/dist/packem_shared/listFiles-BtP6VnUp.js +1 -0
  150. package/dist/packem_shared/local-meta-storage-Bi0mK6gD.js +1 -0
  151. package/dist/packem_shared/local-meta-storage.d-qZQI1JUe.d.ts +21 -0
  152. package/dist/packem_shared/media-transformer.d-lQ_RUjb5.d.ts +331 -0
  153. package/dist/packem_shared/minio-T_Z3iEy7.js +1 -0
  154. package/dist/packem_shared/multipart-base-BxckfvQf.js +1 -0
  155. package/dist/packem_shared/oauth-refresh-Dg2ybc6_.js +1 -0
  156. package/dist/packem_shared/oracleCloud-D5T9s4JV.js +1 -0
  157. package/dist/packem_shared/ovhCloud-DCwef2fe.js +1 -0
  158. package/dist/packem_shared/part-match-B5fLLmFw.js +1 -0
  159. package/dist/packem_shared/path-D7rMc9nq-B718mbm6.js +1 -0
  160. package/dist/packem_shared/posix-dirname-CiHXPPnw.js +1 -0
  161. package/dist/packem_shared/response-builder-Wdo_fvcF.js +1 -0
  162. package/dist/packem_shared/rest-base-C-a7pXUc.js +1 -0
  163. package/dist/packem_shared/restOpenApiSpec-PaIVbESh.js +1 -0
  164. package/dist/packem_shared/s3-base-storage-Ek1HinGR.js +1 -0
  165. package/dist/packem_shared/s3-base-storage.d-CDIOMTpp.d.ts +260 -0
  166. package/dist/packem_shared/scaleway-ygRXOss9.js +1 -0
  167. package/dist/packem_shared/sharedGet-Ce7WGAsc.js +1 -0
  168. package/dist/packem_shared/storage-B-NDsI-o.js +1 -0
  169. package/dist/packem_shared/storage.d-BoJgdi1n.d.ts +1111 -0
  170. package/dist/packem_shared/storj-CVA9mM-7.js +1 -0
  171. package/dist/packem_shared/tencent-CAcAGaIW.js +1 -0
  172. package/dist/packem_shared/tigris-wmhjfsH2.js +1 -0
  173. package/dist/packem_shared/transformOpenApiSpec-C0vEbDTO.js +1 -0
  174. package/dist/packem_shared/tus-base.d-C28C_AY9.d.ts +99 -0
  175. package/dist/packem_shared/tusOpenApiSpec-DF0-hlWV.js +1 -0
  176. package/dist/packem_shared/types.d-C0MDnUYc.d.ts +104 -0
  177. package/dist/packem_shared/types.d-CPxJpoPH.d.ts +49 -0
  178. package/dist/packem_shared/types.d-DCPQvHDI.d.ts +720 -0
  179. package/dist/packem_shared/update-size-DANV7aa2.js +1 -0
  180. package/dist/packem_shared/vultr-lK9L-sFk.js +1 -0
  181. package/dist/packem_shared/waitForStorage-ChSBLhLc.js +1 -0
  182. package/dist/packem_shared/wasabi-JQzxdrFy.js +1 -0
  183. package/dist/packem_shared/xhrOpenApiSpec-nyoboz83.js +1 -0
  184. package/dist/packem_shared/yandex-ZwvE77v4.js +1 -0
  185. package/dist/storage/aws/clients/index.d.ts +612 -6
  186. package/dist/storage/aws/clients/index.js +1 -6
  187. package/dist/storage/aws/index.d.ts +321 -4
  188. package/dist/storage/aws/index.js +1 -3
  189. package/dist/storage/aws-light/index.d.ts +254 -4
  190. package/dist/storage/aws-light/index.js +1 -3
  191. package/dist/storage/azure/index.d.ts +217 -4
  192. package/dist/storage/azure/index.js +1 -3
  193. package/dist/storage/box/index.d.ts +189 -0
  194. package/dist/storage/box/index.js +1 -0
  195. package/dist/storage/bun-s3/index.d.ts +200 -0
  196. package/dist/storage/bun-s3/index.js +1 -0
  197. package/dist/storage/bunny/index.d.ts +119 -0
  198. package/dist/storage/bunny/index.js +1 -0
  199. package/dist/storage/cloudinary/index.d.ts +121 -0
  200. package/dist/storage/cloudinary/index.js +1 -0
  201. package/dist/storage/dropbox/index.d.ts +132 -0
  202. package/dist/storage/dropbox/index.js +1 -0
  203. package/dist/storage/firebase/index.d.ts +192 -0
  204. package/dist/storage/firebase/index.js +1 -0
  205. package/dist/storage/ftp/index.d.ts +85 -0
  206. package/dist/storage/ftp/index.js +1 -0
  207. package/dist/storage/gcs/index.d.ts +181 -5
  208. package/dist/storage/gcs/index.js +1 -4
  209. package/dist/storage/google-drive/index.d.ts +148 -0
  210. package/dist/storage/google-drive/index.js +1 -0
  211. package/dist/storage/local/index.d.ts +7 -4
  212. package/dist/storage/local/index.js +1 -3
  213. package/dist/storage/netlify-blob/index.d.ts +147 -4
  214. package/dist/storage/netlify-blob/index.js +1 -3
  215. package/dist/storage/onedrive/index.d.ts +103 -0
  216. package/dist/storage/onedrive/index.js +1 -0
  217. package/dist/storage/pocketbase/index.d.ts +172 -0
  218. package/dist/storage/pocketbase/index.js +1 -0
  219. package/dist/storage/sftp/index.d.ts +86 -0
  220. package/dist/storage/sftp/index.js +1 -0
  221. package/dist/storage/sharepoint/index.d.ts +180 -0
  222. package/dist/storage/sharepoint/index.js +1 -0
  223. package/dist/storage/supabase/index.d.ts +115 -0
  224. package/dist/storage/supabase/index.js +1 -0
  225. package/dist/storage/uploadthing/index.d.ts +95 -0
  226. package/dist/storage/uploadthing/index.js +1 -0
  227. package/dist/storage/vercel-blob/index.d.ts +189 -4
  228. package/dist/storage/vercel-blob/index.js +1 -3
  229. package/dist/transformer/audio-transformer.d.ts +127 -125
  230. package/dist/transformer/audio-transformer.js +1 -278
  231. package/dist/transformer/image-transformer.d.ts +573 -568
  232. package/dist/transformer/image-transformer.js +1 -1100
  233. package/dist/transformer/index.d.ts +62 -5
  234. package/dist/transformer/index.js +1 -4
  235. package/dist/transformer/video-transformer.d.ts +144 -142
  236. package/dist/transformer/video-transformer.js +1 -310
  237. package/package.json +195 -47
  238. package/dist/handler/base/base-handler-core.d.ts +0 -91
  239. package/dist/handler/base/base-handler-fetch.d.ts +0 -76
  240. package/dist/handler/base/base-handler-node.d.ts +0 -137
  241. package/dist/handler/multipart/multipart-base.d.ts +0 -84
  242. package/dist/handler/multipart/multipart-fetch.d.ts +0 -64
  243. package/dist/handler/multipart/multipart.d.ts +0 -49
  244. package/dist/handler/rest/rest-base.d.ts +0 -106
  245. package/dist/handler/rest/rest-fetch.d.ts +0 -88
  246. package/dist/handler/rest/rest.d.ts +0 -93
  247. package/dist/handler/tus/tus-base.d.ts +0 -152
  248. package/dist/handler/tus/tus-fetch.d.ts +0 -72
  249. package/dist/handler/tus/tus.d.ts +0 -78
  250. package/dist/handler/types.d.ts +0 -53
  251. package/dist/handler/utils/request-parser.d.ts +0 -72
  252. package/dist/handler/utils/response-builder.d.ts +0 -83
  253. package/dist/handler/utils/storage-utils.d.ts +0 -10
  254. package/dist/handler/utils/stream-utils.d.ts +0 -29
  255. package/dist/handler/utils/upload-handlers.d.ts +0 -76
  256. package/dist/metrics/index.d.ts +0 -2
  257. package/dist/metrics/no-op-metrics.d.ts +0 -15
  258. package/dist/metrics/opentelemetry-metrics.d.ts +0 -55
  259. package/dist/openapi/rest.d.ts +0 -7
  260. package/dist/openapi/shared.d.ts +0 -13
  261. package/dist/openapi/transform.d.ts +0 -3
  262. package/dist/openapi/tus.d.ts +0 -7
  263. package/dist/openapi/xhr.d.ts +0 -7
  264. package/dist/packem_shared/AwsLightFile-tTneXZgG.js +0 -11
  265. package/dist/packem_shared/AwsLightMetaStorage-BWSOtVaN.js +0 -4
  266. package/dist/packem_shared/AwsLightStorage-Blv-GP4v.js +0 -133
  267. package/dist/packem_shared/AzureFile-CesgFzps.js +0 -8
  268. package/dist/packem_shared/AzureSMetaStorage-CFs-OYJT.js +0 -88
  269. package/dist/packem_shared/AzureStorage-B0v048hG.js +0 -357
  270. package/dist/packem_shared/BaseTransformer-C2gLib6v.js +0 -82
  271. package/dist/packem_shared/DiskStorage-BlltBst6.js +0 -12
  272. package/dist/packem_shared/DiskStorageWithChecksum-BJTmMklc.js +0 -238
  273. package/dist/packem_shared/ERRORS-D0apMqnc.js +0 -97
  274. package/dist/packem_shared/File-Bb3P23dr.js +0 -69
  275. package/dist/packem_shared/GCSConfig-vPP22kN6.js +0 -11
  276. package/dist/packem_shared/GCSFile-BIEunhAN.js +0 -8
  277. package/dist/packem_shared/GCSMetaStorage-BMFEdzJ7.js +0 -7
  278. package/dist/packem_shared/GCStorage-DnhiwaS9.js +0 -406
  279. package/dist/packem_shared/LocalMetaStorage-CZHhKkMd.js +0 -7
  280. package/dist/packem_shared/MediaTransformer-D6658DL1.js +0 -1197
  281. package/dist/packem_shared/MetaStorage-pECeFOad.js +0 -46
  282. package/dist/packem_shared/Metadata-DRLXeJ0F.js +0 -89
  283. package/dist/packem_shared/Multipart-CNFK_Okz.js +0 -163
  284. package/dist/packem_shared/Multipart-CtUL7BQw.js +0 -128
  285. package/dist/packem_shared/NetlifyBlobFile-CXzyjqrD.js +0 -14
  286. package/dist/packem_shared/NetlifyBlobMetaStorage-DxZ5aDvD.js +0 -9
  287. package/dist/packem_shared/NetlifyBlobStorage-CLPtjHqd.js +0 -376
  288. package/dist/packem_shared/NoOpMetrics-DhAk5rXc.js +0 -10
  289. package/dist/packem_shared/OpenTelemetryMetrics-BnxhqIaH.js +0 -67
  290. package/dist/packem_shared/Rest-CAOAEkOj.js +0 -267
  291. package/dist/packem_shared/Rest-DNuLwBrK.js +0 -228
  292. package/dist/packem_shared/S3File-DZiyk9Qt.js +0 -11
  293. package/dist/packem_shared/S3MetaStorage-Dz9aDabA.js +0 -76
  294. package/dist/packem_shared/S3Storage-DHmTk-hU.js +0 -316
  295. package/dist/packem_shared/TUS_RESUMABLE-GJzZ9R-f.js +0 -434
  296. package/dist/packem_shared/Tus-B8PmlMgR.js +0 -200
  297. package/dist/packem_shared/Tus-C4F1aYOl.js +0 -195
  298. package/dist/packem_shared/ValidationError-BfF1aE4h.js +0 -26
  299. package/dist/packem_shared/VercelBlobFile-BCg4aTEq.js +0 -18
  300. package/dist/packem_shared/VercelBlobMetaStorage-Bd9F-VFm.js +0 -9
  301. package/dist/packem_shared/VercelBlobStorage-DD9LMOS6.js +0 -261
  302. package/dist/packem_shared/_commonjsHelpers-B85MJLTf.js +0 -5
  303. package/dist/packem_shared/aws-light-meta-storage-DKJBgbR6.js +0 -446
  304. package/dist/packem_shared/backblaze-BlMnIcBC.js +0 -20
  305. package/dist/packem_shared/base-handler-core-BKuf4YLT.js +0 -303
  306. package/dist/packem_shared/base-handler-fetch-Cr0hLiqg.js +0 -291
  307. package/dist/packem_shared/base-handler-node-gk5aN9Cx.js +0 -730
  308. package/dist/packem_shared/cache-B88MXQ_2.js +0 -18
  309. package/dist/packem_shared/cloudflare-Bi1q8wXE.js +0 -21
  310. package/dist/packem_shared/defaultCloudStorageFileNameValidation-DUuacjWv.js +0 -11
  311. package/dist/packem_shared/digitalOcean-CWQRJM3L.js +0 -21
  312. package/dist/packem_shared/disk-storage-Bh2wy3YW.js +0 -810
  313. package/dist/packem_shared/gcs-meta-storage-0tgMNnPO.js +0 -158
  314. package/dist/packem_shared/has-content-CY66ehMK.js +0 -3
  315. package/dist/packem_shared/headers-DoS5nwM-.js +0 -3220
  316. package/dist/packem_shared/is-expired-CTThU1q5.js +0 -8
  317. package/dist/packem_shared/isRetryableError-Dycp7127.js +0 -82
  318. package/dist/packem_shared/isValidMediaType-BeDgiObq.js +0 -35
  319. package/dist/packem_shared/local-meta-storage-By-3SNBI.js +0 -649
  320. package/dist/packem_shared/minio-C2YBZQOw.js +0 -22
  321. package/dist/packem_shared/multipart-base-B3i67SSX.js +0 -102
  322. package/dist/packem_shared/part-match-BMNqHDYD.js +0 -96
  323. package/dist/packem_shared/path-CR6YkPXX-7R1-9CMk.js +0 -161
  324. package/dist/packem_shared/response-builder-BtnRiBUI.js +0 -45
  325. package/dist/packem_shared/rest-base-GRCcnan7.js +0 -457
  326. package/dist/packem_shared/restOpenApiSpec-CwcHHY2C.js +0 -800
  327. package/dist/packem_shared/s3-base-storage-C1DIHTYY.js +0 -510
  328. package/dist/packem_shared/sharedGet-Cpo7QUyu.js +0 -1019
  329. package/dist/packem_shared/storage-C6NSXb8h.js +0 -1175
  330. package/dist/packem_shared/tigris-Hac8TKnX.js +0 -21
  331. package/dist/packem_shared/transformOpenApiSpec-DWM5WtnN.js +0 -975
  332. package/dist/packem_shared/tusOpenApiSpec-6ohiToBy.js +0 -740
  333. package/dist/packem_shared/update-size-CCGm6i1J.js +0 -8
  334. package/dist/packem_shared/validator-BeX_lJet.js +0 -78
  335. package/dist/packem_shared/waitForStorage-Cscw85sx.js +0 -18
  336. package/dist/packem_shared/wasabi-DIyflHSd.js +0 -21
  337. package/dist/packem_shared/xhrOpenApiSpec-DS17brnx.js +0 -264
  338. package/dist/storage/aws/clients/backblaze.d.ts +0 -12
  339. package/dist/storage/aws/clients/cloudflare.d.ts +0 -13
  340. package/dist/storage/aws/clients/digital-ocean.d.ts +0 -12
  341. package/dist/storage/aws/clients/minio.d.ts +0 -13
  342. package/dist/storage/aws/clients/tigris.d.ts +0 -12
  343. package/dist/storage/aws/clients/types.d.ts +0 -95
  344. package/dist/storage/aws/clients/wasabi.d.ts +0 -12
  345. package/dist/storage/aws/s3-base-storage.d.ts +0 -248
  346. package/dist/storage/aws/s3-client-adapter.d.ts +0 -110
  347. package/dist/storage/aws/s3-file.d.ts +0 -10
  348. package/dist/storage/aws/s3-meta-storage.d.ts +0 -15
  349. package/dist/storage/aws/s3-storage.d.ts +0 -70
  350. package/dist/storage/aws/types.d.ts +0 -119
  351. package/dist/storage/aws-light/aws-light-api-adapter.d.ts +0 -130
  352. package/dist/storage/aws-light/aws-light-file.d.ts +0 -10
  353. package/dist/storage/aws-light/aws-light-meta-storage.d.ts +0 -19
  354. package/dist/storage/aws-light/aws-light-storage.d.ts +0 -65
  355. package/dist/storage/aws-light/types.d.ts +0 -37
  356. package/dist/storage/azure/azure-file.d.ts +0 -6
  357. package/dist/storage/azure/azure-meta-storage.d.ts +0 -15
  358. package/dist/storage/azure/azure-storage.d.ts +0 -69
  359. package/dist/storage/azure/types.d.ts +0 -62
  360. package/dist/storage/gcs/fetch-error.d.ts +0 -11
  361. package/dist/storage/gcs/gcs-config.d.ts +0 -2
  362. package/dist/storage/gcs/gcs-file.d.ts +0 -6
  363. package/dist/storage/gcs/gcs-meta-storage.d.ts +0 -27
  364. package/dist/storage/gcs/gcs-storage.d.ts +0 -91
  365. package/dist/storage/gcs/types.d.ts +0 -55
  366. package/dist/storage/gcs/utils.d.ts +0 -7
  367. package/dist/storage/local/disk-storage-with-checksum.d.ts +0 -15
  368. package/dist/storage/local/disk-storage.d.ts +0 -135
  369. package/dist/storage/local/local-meta-storage.d.ts +0 -32
  370. package/dist/storage/meta-storage.d.ts +0 -30
  371. package/dist/storage/netlify-blob/netlify-blob-file.d.ts +0 -12
  372. package/dist/storage/netlify-blob/netlify-blob-meta-storage.d.ts +0 -7
  373. package/dist/storage/netlify-blob/netlify-blob-storage.d.ts +0 -93
  374. package/dist/storage/netlify-blob/types.d.ts +0 -30
  375. package/dist/storage/storage.d.ts +0 -353
  376. package/dist/storage/types.d.ts +0 -221
  377. package/dist/storage/utils/file/file.d.ts +0 -25
  378. package/dist/storage/utils/file/get-file-status.d.ts +0 -9
  379. package/dist/storage/utils/file/has-content.d.ts +0 -9
  380. package/dist/storage/utils/file/index.d.ts +0 -10
  381. package/dist/storage/utils/file/is-expired.d.ts +0 -8
  382. package/dist/storage/utils/file/metadata.d.ts +0 -18
  383. package/dist/storage/utils/file/part-match.d.ts +0 -11
  384. package/dist/storage/utils/file/types.d.ts +0 -37
  385. package/dist/storage/utils/file/update-metadata.d.ts +0 -10
  386. package/dist/storage/utils/file/update-size.d.ts +0 -10
  387. package/dist/storage/vercel-blob/types.d.ts +0 -32
  388. package/dist/storage/vercel-blob/vercel-blob-file.d.ts +0 -16
  389. package/dist/storage/vercel-blob/vercel-blob-meta-storage.d.ts +0 -7
  390. package/dist/storage/vercel-blob/vercel-blob-storage.d.ts +0 -76
  391. package/dist/transformer/base-transformer.d.ts +0 -63
  392. package/dist/transformer/media-transformer.d.ts +0 -332
  393. package/dist/transformer/types.d.ts +0 -652
  394. package/dist/transformer/utils.d.ts +0 -33
  395. package/dist/transformer/validation-error.d.ts +0 -23
  396. package/dist/utils/cache.d.ts +0 -32
  397. package/dist/utils/chunked-upload.d.ts +0 -65
  398. package/dist/utils/detect-file-type.d.ts +0 -28
  399. package/dist/utils/errors.d.ts +0 -74
  400. package/dist/utils/file-path-url-matcher.d.ts +0 -18
  401. package/dist/utils/headers.d.ts +0 -111
  402. package/dist/utils/http.d.ts +0 -92
  403. package/dist/utils/locker.d.ts +0 -26
  404. package/dist/utils/pipes/stream-checksum.d.ts +0 -47
  405. package/dist/utils/pipes/stream-length.d.ts +0 -22
  406. package/dist/utils/primitives/get-last-one.d.ts +0 -3
  407. package/dist/utils/primitives/is-record.d.ts +0 -2
  408. package/dist/utils/primitives/map-values.d.ts +0 -9
  409. package/dist/utils/primitives/pick.d.ts +0 -2
  410. package/dist/utils/primitives/to-milliseconds.d.ts +0 -12
  411. package/dist/utils/primitives/to-seconds.d.ts +0 -12
  412. package/dist/utils/range-checksum.d.ts +0 -33
  413. package/dist/utils/range-hasher.d.ts +0 -46
  414. package/dist/utils/retry.d.ts +0 -64
  415. package/dist/utils/types.d.ts +0 -108
  416. package/dist/utils/validation-error.d.ts +0 -22
  417. package/dist/utils/validator.d.ts +0 -36
@@ -1,457 +0,0 @@
1
- import { c as createHttpError } from './headers-DoS5nwM-.js';
2
- import { hasBody } from 'type-is';
3
- import { a as getHeader } from './base-handler-core-BKuf4YLT.js';
4
- import { ERRORS } from './ERRORS-D0apMqnc.js';
5
- import { b as buildResponseFile, a as buildFileHeaders, c as buildChunkedUploadHeaders, d as buildFileMetadataHeaders } from './response-builder-BtnRiBUI.js';
6
-
7
- const parseMetadata = (request, existingMetadata = {}) => {
8
- const metadataHeader = getHeader(request, "x-file-metadata", true);
9
- if (!metadataHeader) {
10
- return existingMetadata;
11
- }
12
- try {
13
- return { ...existingMetadata, ...JSON.parse(metadataHeader) };
14
- } catch {
15
- return existingMetadata;
16
- }
17
- };
18
- const parseContentDispositionValue = (contentDisposition) => {
19
- if (!contentDisposition) {
20
- return void 0;
21
- }
22
- const maxSearchLength = 2e3;
23
- const searchString = contentDisposition.length > maxSearchLength ? contentDisposition.slice(0, Math.max(0, maxSearchLength)) : contentDisposition;
24
- const filenameIndex = searchString.toLowerCase().indexOf("filename");
25
- if (filenameIndex === -1) {
26
- return void 0;
27
- }
28
- let equalsIndex = filenameIndex + 8;
29
- while (equalsIndex < searchString.length && (searchString[equalsIndex] === "*" || searchString[equalsIndex] === " " || searchString[equalsIndex] === " ")) {
30
- equalsIndex++;
31
- }
32
- if (equalsIndex >= searchString.length || searchString[equalsIndex] !== "=") {
33
- return void 0;
34
- }
35
- equalsIndex++;
36
- while (equalsIndex < searchString.length && (searchString[equalsIndex] === " " || searchString[equalsIndex] === " ")) {
37
- equalsIndex++;
38
- }
39
- if (equalsIndex >= searchString.length) {
40
- return void 0;
41
- }
42
- let valueStart = equalsIndex;
43
- let valueEnd;
44
- const firstChar = searchString[equalsIndex];
45
- if (firstChar === '"' || firstChar === "'") {
46
- valueStart = equalsIndex + 1;
47
- valueEnd = searchString.indexOf(firstChar, valueStart);
48
- if (valueEnd === -1) {
49
- valueEnd = searchString.indexOf(";", valueStart);
50
- if (valueEnd === -1) {
51
- valueEnd = searchString.length;
52
- }
53
- }
54
- } else {
55
- valueEnd = searchString.indexOf(";", valueStart);
56
- if (valueEnd === -1) {
57
- valueEnd = searchString.length;
58
- }
59
- }
60
- if (valueStart >= valueEnd) {
61
- return void 0;
62
- }
63
- const filename = searchString.substring(valueStart, valueEnd).trim();
64
- return filename || void 0;
65
- };
66
- const parseContentDisposition = (request) => {
67
- const contentDisposition = getHeader(request, "content-disposition", true);
68
- return parseContentDispositionValue(contentDisposition);
69
- };
70
- const parseChunkHeaders = (request) => {
71
- const isChunkedUpload = getHeader(request, "x-chunked-upload", true) === "true";
72
- const chunkOffsetHeader = getHeader(request, "x-chunk-offset", true);
73
- const totalSizeHeader = getHeader(request, "x-total-size", true);
74
- const result = {
75
- isChunkedUpload
76
- };
77
- if (chunkOffsetHeader) {
78
- const offset = Number.parseInt(chunkOffsetHeader, 10);
79
- if (!Number.isNaN(offset) && offset >= 0) {
80
- result.chunkOffset = offset;
81
- }
82
- }
83
- if (totalSizeHeader) {
84
- const size = Number.parseInt(totalSizeHeader, 10);
85
- if (!Number.isNaN(size) && size > 0) {
86
- result.totalSize = size;
87
- }
88
- }
89
- return result;
90
- };
91
- const validateRequestBody = (request, allowEmptyForChunked = false) => {
92
- const isChunkedUpload = getHeader(request, "x-chunked-upload", true) === "true";
93
- if (allowEmptyForChunked && isChunkedUpload) {
94
- return;
95
- }
96
- if (!hasBody(request)) {
97
- throw createHttpError(400, "Request body is required");
98
- }
99
- const contentLength = Number.parseInt(getHeader(request, "content-length") || "0", 10);
100
- if (contentLength === 0 && !isChunkedUpload) {
101
- throw createHttpError(400, "Content-Length is required and must be greater than 0");
102
- }
103
- };
104
- const validateContentLength = (request, allowZeroForChunked = false, maxSize) => {
105
- const isChunkedUpload = getHeader(request, "x-chunked-upload", true) === "true";
106
- const contentLength = Number.parseInt(getHeader(request, "content-length") || "0", 10);
107
- if (!allowZeroForChunked && !isChunkedUpload && contentLength === 0) {
108
- throw createHttpError(400, "Content-Length is required and must be greater than 0");
109
- }
110
- if (maxSize !== void 0 && contentLength > maxSize) {
111
- throw createHttpError(413, `File size exceeds maximum allowed size of ${maxSize} bytes`);
112
- }
113
- return contentLength;
114
- };
115
- const extractFileInit = (request, contentLength, contentType = "application/octet-stream") => {
116
- const originalName = parseContentDisposition(request);
117
- const metadata = parseMetadata(request);
118
- const { isChunkedUpload, totalSize } = parseChunkHeaders(request);
119
- const fileSize = isChunkedUpload && totalSize ? totalSize : contentLength;
120
- if (isChunkedUpload && totalSize) {
121
- metadata._chunkedUpload = true;
122
- metadata._chunks = [];
123
- metadata._totalSize = totalSize;
124
- }
125
- return {
126
- contentType,
127
- metadata,
128
- originalName,
129
- size: fileSize
130
- };
131
- };
132
-
133
- const isUploadComplete = (chunks, totalSize) => {
134
- if (chunks.length === 0) {
135
- return false;
136
- }
137
- const sorted = [...chunks].toSorted((a, b) => a.offset - b.offset);
138
- const firstChunk = sorted[0];
139
- if (!firstChunk || firstChunk.offset !== 0) {
140
- return false;
141
- }
142
- let currentEnd = firstChunk.length;
143
- for (let i = 1; i < sorted.length; i += 1) {
144
- const chunk = sorted[i];
145
- if (!chunk) {
146
- continue;
147
- }
148
- if (chunk.offset > currentEnd) {
149
- return false;
150
- }
151
- currentEnd = Math.max(currentEnd, chunk.offset + chunk.length);
152
- }
153
- return currentEnd >= totalSize;
154
- };
155
- const validateChunk = (chunkOffset, chunkLength, totalSize, maxChunkSize) => {
156
- if (Number.isNaN(chunkOffset) || chunkOffset < 0) {
157
- throw new Error("Chunk offset must be a valid non-negative number");
158
- }
159
- if (chunkLength <= 0) {
160
- throw new Error("Chunk length must be greater than 0");
161
- }
162
- if (chunkLength > maxChunkSize) {
163
- throw new Error(`Chunk size exceeds maximum allowed size of ${maxChunkSize} bytes`);
164
- }
165
- if (chunkOffset + chunkLength > totalSize) {
166
- throw new Error(`Chunk exceeds file size. Offset: ${chunkOffset}, Size: ${chunkLength}, Total: ${totalSize}`);
167
- }
168
- };
169
- const trackChunk = (chunks, chunkInfo) => {
170
- const existingChunk = chunks.find((chunk) => chunk.offset === chunkInfo.offset && chunk.length === chunkInfo.length);
171
- if (!existingChunk) {
172
- return [...chunks, chunkInfo];
173
- }
174
- if (chunkInfo.checksum && existingChunk.checksum !== chunkInfo.checksum) {
175
- return chunks.map((chunk) => chunk.offset === chunkInfo.offset ? { ...chunk, checksum: chunkInfo.checksum } : chunk);
176
- }
177
- return chunks;
178
- };
179
- const isChunkedUpload = (file) => {
180
- const metadata = file.metadata || {};
181
- return metadata._chunkedUpload === true;
182
- };
183
- const getTotalSize = (file) => {
184
- const metadata = file.metadata || {};
185
- const isChunkedUploadFile = metadata._chunkedUpload === true;
186
- if (isChunkedUploadFile && typeof metadata._totalSize === "number") {
187
- return metadata._totalSize;
188
- }
189
- return void 0;
190
- };
191
-
192
- class RestBase {
193
- /**
194
- * Handle single file deletion.
195
- * @param id File ID to delete
196
- * @returns Promise resolving to ResponseFile with deletion result
197
- */
198
- async deleteSingle(id) {
199
- const file = await this.storage.delete({ id });
200
- if (file.status === void 0) {
201
- throw createHttpError(404, "File not found");
202
- }
203
- return { ...file, headers: {}, statusCode: 204 };
204
- }
205
- /**
206
- * Handle file creation (POST).
207
- * @param config File initialization config
208
- * @param isChunkedUpload Whether this is a chunked upload initialization
209
- * @param requestUrl Request URL for Location header
210
- * @param bodyStream Request body stream (for non-chunked uploads)
211
- * @param contentLength Content length (for non-chunked uploads)
212
- * @returns Promise resolving to ResponseFile with upload result
213
- */
214
- async handlePost(config, isChunkedUpload2, requestUrl, bodyStream, contentLength) {
215
- if (isChunkedUpload2 && config.size !== void 0) {
216
- const size = typeof config.size === "number" ? config.size : Number.parseInt(String(config.size), 10);
217
- if (size > 0 && size > this.storage.maxUploadSize) {
218
- throw createHttpError(413, `File size exceeds maximum allowed size of ${this.storage.maxUploadSize} bytes`);
219
- }
220
- }
221
- const file = await this.storage.create(config);
222
- if (isChunkedUpload2) {
223
- const locationUrl2 = this.buildFileUrl(requestUrl, file);
224
- return buildResponseFile(
225
- file,
226
- {
227
- ...buildFileHeaders(file, locationUrl2),
228
- "X-Chunked-Upload": "true",
229
- "X-Upload-ID": file.id
230
- },
231
- 201
232
- );
233
- }
234
- const completedFile = await this.storage.write({
235
- body: bodyStream,
236
- contentLength,
237
- id: file.id,
238
- start: 0
239
- });
240
- const locationUrl = this.buildFileUrl(requestUrl, completedFile);
241
- return buildResponseFile(completedFile, buildFileHeaders(completedFile, locationUrl), 201);
242
- }
243
- /**
244
- * Handle file update or creation (PUT).
245
- * @param id File ID from URL
246
- * @param config File initialization config (for new files)
247
- * @param requestUrl Request URL for Location header
248
- * @param bodyStream Request body stream
249
- * @param contentLength Content length
250
- * @param metadata Optional metadata to merge (for updates)
251
- * @returns Promise resolving to ResponseFile with upload result
252
- */
253
- async handlePut(id, config, requestUrl, bodyStream, contentLength, metadata) {
254
- let file;
255
- let isUpdate = false;
256
- try {
257
- await this.storage.getMeta(id);
258
- isUpdate = true;
259
- if (metadata) {
260
- await this.storage.update({ id }, { metadata });
261
- }
262
- file = await this.storage.write({
263
- body: bodyStream,
264
- contentLength,
265
- id,
266
- start: 0
267
- });
268
- } catch (error) {
269
- const errorWithCode = error;
270
- if (errorWithCode.UploadErrorCode === ERRORS.FILE_NOT_FOUND || errorWithCode.code === "ENOENT") {
271
- try {
272
- const newFile = await this.storage.create(config);
273
- file = await this.storage.write({
274
- body: bodyStream,
275
- contentLength,
276
- id: newFile.id,
277
- start: 0
278
- });
279
- } catch (createError) {
280
- throw createError;
281
- }
282
- } else {
283
- throw error;
284
- }
285
- }
286
- const locationUrl = this.buildFileUrl(requestUrl, file);
287
- return buildResponseFile(file, buildFileHeaders(file, locationUrl), isUpdate ? 200 : 201);
288
- }
289
- /**
290
- * Handle chunked upload chunk (PATCH).
291
- * @param id File ID from URL
292
- * @param chunkOffset Chunk offset in bytes
293
- * @param contentLength Chunk content length
294
- * @param chunkChecksum Optional chunk checksum
295
- * @param requestUrl Request URL for Location header
296
- * @param bodyStream Request body stream
297
- * @returns Promise resolving to ResponseFile with upload progress
298
- */
299
- async handlePatch(id, chunkOffset, contentLength, chunkChecksum, requestUrl, bodyStream) {
300
- let file = await this.storage.getMeta(id);
301
- const metadata = file.metadata || {};
302
- const isChunkedUploadFile = isChunkedUpload(file);
303
- if (isChunkedUploadFile) {
304
- const totalSize2 = getTotalSize(file);
305
- if (totalSize2 && file.size !== totalSize2) {
306
- file = { ...file, size: totalSize2 };
307
- }
308
- }
309
- const totalSize = typeof metadata._totalSize === "number" ? metadata._totalSize : file.size || 0;
310
- if (!isChunkedUploadFile) {
311
- throw createHttpError(400, "File is not a chunked upload. Use POST or PUT for full file uploads.");
312
- }
313
- const MAX_CHUNK_SIZE = 100 * 1024 * 1024;
314
- try {
315
- validateChunk(chunkOffset, contentLength, totalSize, MAX_CHUNK_SIZE);
316
- } catch (error) {
317
- if (error instanceof Error && error.message.includes("exceeds maximum")) {
318
- throw createHttpError(413, error.message);
319
- }
320
- throw createHttpError(400, error instanceof Error ? error.message : String(error));
321
- }
322
- if (file.status === "completed") {
323
- const locationUrl2 = this.buildFileUrl(requestUrl, file);
324
- return buildResponseFile(
325
- file,
326
- {
327
- ...buildFileHeaders(file, locationUrl2),
328
- "X-Upload-Complete": "true"
329
- },
330
- 200
331
- );
332
- }
333
- const existingChunks = Array.isArray(metadata._chunks) ? metadata._chunks : [];
334
- const chunkInfo = {
335
- checksum: chunkChecksum,
336
- length: contentLength,
337
- offset: chunkOffset
338
- };
339
- const chunks = trackChunk(existingChunks, chunkInfo);
340
- const updatedMetadata = {
341
- ...metadata,
342
- _chunks: chunks
343
- };
344
- await this.storage.update({ id }, { metadata: updatedMetadata });
345
- let updatedFile = await this.storage.write({
346
- body: bodyStream,
347
- contentLength,
348
- id,
349
- start: chunkOffset
350
- });
351
- let isComplete = updatedFile.bytesWritten >= totalSize;
352
- if (isChunkedUploadFile) {
353
- const isChunksComplete = isUploadComplete(chunks, totalSize);
354
- isComplete = isChunksComplete;
355
- if (updatedFile.status === "completed" && !isComplete) {
356
- await this.storage.update({ id }, { status: "part" });
357
- updatedFile = { ...updatedFile, status: "part" };
358
- }
359
- }
360
- const finalFile = isComplete && updatedFile.bytesWritten !== totalSize ? { ...updatedFile, bytesWritten: totalSize } : updatedFile;
361
- const locationUrl = this.buildFileUrl(requestUrl, finalFile);
362
- const headers = {
363
- ...buildFileHeaders(finalFile, locationUrl),
364
- ...buildChunkedUploadHeaders(finalFile, isComplete),
365
- "x-upload-offset": String(finalFile.bytesWritten || 0)
366
- };
367
- return buildResponseFile(finalFile, headers, isComplete ? 200 : 202);
368
- }
369
- /**
370
- * Handle file metadata retrieval (HEAD).
371
- * @param id File ID from URL
372
- * @returns Promise resolving to ResponseFile with metadata headers
373
- */
374
- async handleHead(id) {
375
- let file = await this.storage.getMeta(id);
376
- const isChunkedUploadFile = isChunkedUpload(file);
377
- if (isChunkedUploadFile) {
378
- const totalSize = getTotalSize(file);
379
- if (totalSize && file.size !== totalSize) {
380
- file = { ...file, size: totalSize };
381
- }
382
- }
383
- const headers = {
384
- ...buildFileMetadataHeaders(file)
385
- };
386
- if (isChunkedUploadFile) {
387
- const metadata = file.metadata || {};
388
- const totalSize = getTotalSize(file) || file.size || 0;
389
- const chunks = Array.isArray(metadata._chunks) ? metadata._chunks : [];
390
- const isComplete = isUploadComplete(chunks, totalSize);
391
- Object.assign(headers, buildChunkedUploadHeaders(file, isComplete));
392
- }
393
- return buildResponseFile(file, headers, 200);
394
- }
395
- /**
396
- * Handle OPTIONS request with REST API capabilities.
397
- * @param methods Array of supported HTTP methods
398
- * @param maxUploadSize Maximum upload size
399
- * @returns ResponseFile with CORS headers
400
- */
401
- // eslint-disable-next-line class-methods-use-this
402
- handleOptions(methods, maxUploadSize) {
403
- const headers = {
404
- "Access-Control-Allow-Headers": "Authorization, Content-Type, Content-Length, Content-Disposition, X-File-Metadata, X-Chunked-Upload, X-Total-Size, X-Chunk-Offset, X-Chunk-Checksum",
405
- "Access-Control-Allow-Methods": methods.map((method) => method.toUpperCase()).join(", "),
406
- "Access-Control-Max-Age": 86400,
407
- "X-Max-Upload-Size": String(maxUploadSize)
408
- };
409
- return {
410
- headers,
411
- statusCode: 204
412
- };
413
- }
414
- /**
415
- * Handle batch file deletion.
416
- * @param ids Array of file IDs to delete
417
- * @returns Promise resolving to ResponseList with deletion results
418
- */
419
- async deleteBatch(ids) {
420
- const result = await this.storage.deleteBatch(ids);
421
- if (result.successfulCount === 0 && result.failedCount > 0) {
422
- const failedIds = result.failed.map((errorItem) => errorItem.id).join(", ");
423
- throw createHttpError(404, `Failed to delete files: ${failedIds}`);
424
- }
425
- return {
426
- data: result.successful,
427
- headers: result.failedCount > 0 ? {
428
- "X-Delete-Errors": JSON.stringify(result.failed),
429
- "X-Delete-Failed": String(result.failedCount),
430
- "X-Delete-Successful": String(result.successfulCount)
431
- } : {
432
- "X-Delete-Successful": String(result.successfulCount)
433
- },
434
- statusCode: result.successfulCount === ids.length ? 204 : 207
435
- // 207 Multi-Status for partial success
436
- };
437
- }
438
- /**
439
- * Storage instance for file operations.
440
- */
441
- // eslint-disable-next-line class-methods-use-this
442
- get storage() {
443
- throw new Error("storage must be implemented");
444
- }
445
- /**
446
- * Build file URL from request URL and file data.
447
- * @param _requestUrl Request URL string
448
- * @param _file File object containing ID and content type
449
- * @returns Constructed file URL with extension based on content type
450
- */
451
- // eslint-disable-next-line class-methods-use-this
452
- buildFileUrl(_requestUrl, _file) {
453
- throw new Error("buildFileUrl must be implemented");
454
- }
455
- }
456
-
457
- export { RestBase as R, validateContentLength as a, parseChunkHeaders as b, parseContentDispositionValue as c, extractFileInit as e, parseContentDisposition as p, validateRequestBody as v };