@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,434 +0,0 @@
1
- import { c as createHttpError, H as HeaderUtilities } from './headers-YLRp1dLo.js';
2
- import { Metadata } from './Metadata-DRLXeJ0F.js';
3
-
4
- const TUS_RESUMABLE_VERSION = "1.0.0";
5
- const TUS_VERSION_VERSION = "1.0.0";
6
- const parseMetadata = (encoded = "") => {
7
- const kvPairs = encoded.split(",").map((kv) => kv.split(" "));
8
- const metadata = Object.create(Metadata.prototype);
9
- Object.values(kvPairs).forEach(([key, value]) => {
10
- if (key) {
11
- metadata[key] = value ? Buffer.from(value, "base64").toString() : "";
12
- }
13
- });
14
- return metadata;
15
- };
16
- const serializeMetadata = (object) => {
17
- if (!object || Object.keys(object).length === 0) {
18
- return "";
19
- }
20
- return Object.entries(object).map(([key, value]) => {
21
- if (value === void 0) {
22
- return key;
23
- }
24
- return `${key} ${Buffer.from(String(value)).toString("base64")}`;
25
- }).toString();
26
- };
27
- class TusBase {
28
- /**
29
- * Storage instance for file operations.
30
- */
31
- // eslint-disable-next-line class-methods-use-this
32
- get storage() {
33
- throw new Error("storage must be implemented");
34
- }
35
- /**
36
- * Build file URL from request URL and file data.
37
- * @param _requestUrl Request URL string
38
- * @param _file File object containing ID
39
- * @returns Constructed file URL for TUS protocol
40
- */
41
- // eslint-disable-next-line class-methods-use-this
42
- buildFileUrl(_requestUrl, _file) {
43
- throw new Error("buildFileUrl must be implemented");
44
- }
45
- /**
46
- * Handle OPTIONS request with TUS protocol capabilities.
47
- * @param methods Array of supported HTTP methods
48
- * @returns ResponseFile with TUS headers
49
- */
50
- handleOptions(methods) {
51
- const headers = {
52
- "Access-Control-Allow-Headers": "Authorization, Content-Type, Location, Tus-Extension, Tus-Max-Size, Tus-Resumable, Tus-Version, Upload-Concat, Upload-Defer-Length, Upload-Length, Upload-Metadata, Upload-Offset, X-HTTP-Method-Override, X-Requested-With",
53
- "Access-Control-Allow-Methods": methods.map((method) => method.toUpperCase()).join(", "),
54
- "Access-Control-Max-Age": 86400,
55
- "Tus-Checksum-Algorithm": this.storage.checksumTypes.join(","),
56
- "Tus-Extension": this.storage.tusExtension.toString(),
57
- "Tus-Max-Size": this.storage.maxUploadSize,
58
- "Tus-Version": TUS_VERSION_VERSION
59
- };
60
- return { headers, statusCode: 204 };
61
- }
62
- /**
63
- * Handle TUS POST (create upload).
64
- * @param uploadLength Upload length header value
65
- * @param uploadDeferLength Upload defer length header value
66
- * @param uploadConcat Upload concat header value
67
- * @param metadataHeader Upload metadata header value
68
- * @param requestUrl Request URL for Location header
69
- * @param bodyStream Request body stream (for creation-with-upload)
70
- * @param contentLength Content length (for creation-with-upload)
71
- * @param contentType Content type (for creation-with-upload)
72
- * @returns Promise resolving to ResponseFile with upload result
73
- */
74
- async handlePost(uploadLength, uploadDeferLength, uploadConcat, metadataHeader, requestUrl, bodyStream, contentLength, contentType) {
75
- if (uploadDeferLength !== void 0) {
76
- if (!this.storage.tusExtension.includes("creation-defer-length")) {
77
- throw createHttpError(501, "creation-defer-length extension is not (yet) supported.");
78
- }
79
- if (uploadLength === void 0) {
80
- const metadata2 = metadataHeader ? parseMetadata(metadataHeader) : {};
81
- const config2 = { metadata: metadata2 };
82
- let file2 = await this.storage.create(config2);
83
- if (contentType === "application/offset+octet-stream" && contentLength > 0) {
84
- file2 = await this.storage.write({
85
- ...file2,
86
- body: bodyStream,
87
- contentLength,
88
- start: 0
89
- });
90
- }
91
- let headers2 = {};
92
- if (this.storage.tusExtension.includes("expiration") && typeof file2.expiredAt === "number" && file2.size === void 0) {
93
- headers2 = { "Upload-Expires": new Date(file2.expiredAt).toUTCString() };
94
- }
95
- const locationUrl2 = this.buildFileUrl(requestUrl, file2);
96
- headers2 = { ...headers2, ...this.buildHeaders(file2, { Location: locationUrl2 }) };
97
- if (!headers2.Location) {
98
- headers2.Location = locationUrl2;
99
- }
100
- if (file2.bytesWritten > 0) {
101
- headers2["Upload-Offset"] = file2.bytesWritten.toString();
102
- }
103
- headers2["Upload-Defer-Length"] = "1";
104
- const statusCode2 = file2.bytesWritten > 0 ? 200 : 201;
105
- return { ...file2, headers: headers2, statusCode: statusCode2 };
106
- }
107
- }
108
- if (uploadConcat) {
109
- if (!this.storage.tusExtension.includes("concatenation")) {
110
- throw createHttpError(501, "Concatenation extension is not (yet) supported. Disable parallel upload in the tus client.");
111
- }
112
- const parsedMetadata = metadataHeader ? parseMetadata(metadataHeader) : {};
113
- if (uploadConcat === "partial") {
114
- const config2 = {
115
- metadata: { ...parsedMetadata, uploadConcat: "partial" },
116
- size: uploadLength
117
- };
118
- let file2 = await this.storage.create(config2);
119
- if (contentType === "application/offset+octet-stream" && contentLength > 0) {
120
- file2 = await this.storage.write({
121
- ...file2,
122
- body: bodyStream,
123
- contentLength,
124
- start: 0
125
- });
126
- }
127
- let headers2 = {};
128
- if (this.storage.tusExtension.includes("expiration") && typeof file2.expiredAt === "number" && file2.bytesWritten !== (file2.size ?? 0)) {
129
- headers2 = { "Upload-Expires": new Date(file2.expiredAt).toUTCString() };
130
- }
131
- const locationUrl2 = this.buildFileUrl(requestUrl, file2);
132
- headers2 = { ...headers2, ...this.buildHeaders(file2, { Location: locationUrl2 }) };
133
- if (!headers2.Location) {
134
- headers2.Location = locationUrl2;
135
- }
136
- if (file2.bytesWritten > 0) {
137
- headers2["Upload-Offset"] = file2.bytesWritten.toString();
138
- }
139
- headers2["Upload-Concat"] = "partial";
140
- const statusCode2 = file2.bytesWritten > 0 ? 200 : 201;
141
- return { ...file2, headers: headers2, statusCode: statusCode2 };
142
- }
143
- if (uploadConcat.startsWith("final;")) {
144
- const partialIds = uploadConcat.slice(6).trim().split(/\s+/).filter(Boolean);
145
- if (partialIds.length === 0) {
146
- throw createHttpError(400, "Upload-Concat final must include at least one partial upload ID");
147
- }
148
- let totalSize = 0;
149
- const partialFiles = [];
150
- for (const partialId of partialIds) {
151
- try {
152
- const partialFile = await this.storage.getMeta(partialId);
153
- await this.storage.checkIfExpired(partialFile);
154
- if (partialFile.metadata?.uploadConcat !== "partial") {
155
- throw createHttpError(400, `Upload ${partialId} is not a partial upload`);
156
- }
157
- if (partialFile.status !== "completed" || partialFile.size === void 0) {
158
- throw createHttpError(409, `Partial upload ${partialId} is not completed`);
159
- }
160
- partialFiles.push(partialFile);
161
- totalSize += partialFile.size;
162
- } catch (error) {
163
- const errorWithCode = error;
164
- if (errorWithCode.statusCode === 404 || errorWithCode.statusCode === 410) {
165
- throw createHttpError(409, `Partial upload ${partialId} not found or expired`);
166
- }
167
- throw error;
168
- }
169
- }
170
- const config2 = {
171
- metadata: {
172
- ...parsedMetadata,
173
- partialIds,
174
- uploadConcat: `final;${partialIds.join(" ")}`
175
- },
176
- size: totalSize
177
- };
178
- const file2 = await this.storage.create(config2);
179
- await this.concatenateFiles(file2, partialFiles);
180
- const locationUrl2 = this.buildFileUrl(requestUrl, file2);
181
- const headers2 = {
182
- ...this.buildHeaders(file2, { Location: locationUrl2 }),
183
- "Upload-Concat": uploadConcat
184
- };
185
- return { ...file2, headers: headers2, statusCode: 201 };
186
- }
187
- throw createHttpError(400, "Invalid Upload-Concat header format");
188
- }
189
- if (uploadLength === void 0 && uploadDeferLength === void 0) {
190
- throw createHttpError(400, "Either upload-length or upload-defer-length must be specified.");
191
- }
192
- if (uploadLength !== void 0 && Number.isNaN(Number(uploadLength))) {
193
- throw createHttpError(400, "Invalid upload-length");
194
- }
195
- const metadata = metadataHeader ? parseMetadata(metadataHeader) : {};
196
- const config = { metadata, size: uploadLength };
197
- let file = await this.storage.create(config);
198
- if (contentType === "application/offset+octet-stream" && contentLength > 0) {
199
- file = await this.storage.write({
200
- ...file,
201
- body: bodyStream,
202
- contentLength,
203
- start: 0
204
- });
205
- }
206
- let headers = {};
207
- if (this.storage.tusExtension.includes("expiration") && typeof file.expiredAt === "number" && file.bytesWritten !== Number.parseInt(uploadLength, 10)) {
208
- headers = { "Upload-Expires": new Date(file.expiredAt).toUTCString() };
209
- }
210
- const locationUrl = this.buildFileUrl(requestUrl, file);
211
- headers = { ...headers, ...this.buildHeaders(file, { Location: locationUrl }) };
212
- if (!headers.Location) {
213
- headers.Location = locationUrl;
214
- }
215
- if (file.bytesWritten > 0) {
216
- headers["Upload-Offset"] = file.bytesWritten.toString();
217
- }
218
- const statusCode = file.bytesWritten > 0 ? 200 : 201;
219
- return { ...file, headers, statusCode };
220
- }
221
- /**
222
- * Handle TUS PATCH (write chunk).
223
- * @param id File ID from URL
224
- * @param uploadOffset Upload offset header value
225
- * @param uploadLength Optional upload length header value (for defer-length)
226
- * @param metadataHeader Optional upload metadata header value
227
- * @param checksum Optional checksum
228
- * @param checksumAlgorithm Optional checksum algorithm
229
- * @param requestUrl Request URL for Location header
230
- * @param bodyStream Request body stream
231
- * @param contentLength Content length
232
- * @returns Promise resolving to ResponseFile with upload progress
233
- */
234
- async handlePatch(id, uploadOffset, uploadLength, metadataHeader, checksum, checksumAlgorithm, _requestUrl, bodyStream, contentLength) {
235
- const metadata = metadataHeader ? parseMetadata(metadataHeader) : void 0;
236
- if (metadata) {
237
- try {
238
- await this.storage.update({ id }, { id, metadata });
239
- } catch (error) {
240
- const errorWithCode = error;
241
- if (errorWithCode.UploadErrorCode === "FILE_NOT_FOUND") {
242
- throw createHttpError(410, "Upload expired");
243
- }
244
- throw error;
245
- }
246
- }
247
- let currentFile;
248
- try {
249
- currentFile = await this.storage.getMeta(id);
250
- await this.storage.checkIfExpired(currentFile);
251
- } catch (error) {
252
- const errorWithCode = error;
253
- if (errorWithCode.UploadErrorCode === "GONE" || errorWithCode.UploadErrorCode === "FILE_NOT_FOUND") {
254
- throw createHttpError(410, "Upload expired");
255
- }
256
- throw error;
257
- }
258
- const uploadConcatValue = currentFile.metadata?.uploadConcat;
259
- if (typeof uploadConcatValue === "string" && uploadConcatValue.startsWith("final;")) {
260
- throw createHttpError(403, "Cannot PATCH a final concatenation upload");
261
- }
262
- let file = await this.storage.write({
263
- body: bodyStream,
264
- checksum,
265
- checksumAlgorithm,
266
- contentLength,
267
- id,
268
- start: uploadOffset
269
- });
270
- if (uploadLength !== void 0) {
271
- if (!this.storage.tusExtension.includes("creation-defer-length")) {
272
- throw createHttpError(501, "creation-defer-length extension is not (yet) supported.");
273
- }
274
- if (file.size !== void 0 && !Number.isNaN(file.size)) {
275
- throw createHttpError(412, "Upload-Length has already been set for this upload");
276
- }
277
- const size = Number.parseInt(uploadLength, 10);
278
- if (Number.isNaN(size)) {
279
- throw createHttpError(400, "Invalid Upload-Length value");
280
- }
281
- if (size < file.bytesWritten) {
282
- throw createHttpError(400, "Upload-Length is smaller than the current offset");
283
- }
284
- file = await this.storage.update({ id }, { size });
285
- if (file.bytesWritten === file.size) {
286
- file = { ...file, status: "completed" };
287
- }
288
- }
289
- return {
290
- ...file,
291
- headers: this.buildHeaders(file, {
292
- "Upload-Offset": file.bytesWritten
293
- }),
294
- statusCode: file.status === "completed" ? 200 : 204
295
- };
296
- }
297
- /**
298
- * Handle TUS HEAD (get upload status).
299
- * @param id File ID from URL
300
- * @returns Promise resolving to ResponseFile with upload status headers
301
- */
302
- async handleHead(id) {
303
- const file = await this.storage.getMeta(id);
304
- await this.storage.checkIfExpired(file);
305
- const headers = {
306
- ...typeof file.size === "number" && !Number.isNaN(file.size) ? {
307
- "Upload-Length": file.size
308
- } : {
309
- "Upload-Defer-Length": "1"
310
- },
311
- ...this.buildHeaders(file, {
312
- "Cache-Control": HeaderUtilities.createCacheControlPreset("no-store"),
313
- "Upload-Metadata": serializeMetadata(file.metadata),
314
- "Upload-Offset": file.bytesWritten
315
- })
316
- };
317
- const uploadConcatValue = file.metadata?.uploadConcat;
318
- if (typeof uploadConcatValue === "string") {
319
- headers["Upload-Concat"] = uploadConcatValue;
320
- }
321
- return { headers, statusCode: 200 };
322
- }
323
- /**
324
- * Handle TUS GET (get upload metadata).
325
- * @param id File ID from URL
326
- * @returns Promise resolving to ResponseFile with file metadata as JSON
327
- */
328
- async handleGet(id) {
329
- const file = await this.storage.getMeta(id);
330
- return {
331
- ...file,
332
- body: file,
333
- // Return file metadata as JSON
334
- headers: this.buildHeaders(file, {
335
- "Content-Type": HeaderUtilities.createContentType({
336
- mediaType: "application/json"
337
- })
338
- }),
339
- statusCode: 200
340
- };
341
- }
342
- /**
343
- * Handle TUS DELETE (terminate upload).
344
- * @param id File ID from URL
345
- * @returns Promise resolving to ResponseFile with deletion confirmation
346
- */
347
- async handleDelete(id) {
348
- if (this.disableTerminationForFinishedUploads) {
349
- const file2 = await this.storage.getMeta(id);
350
- if (file2.status === "completed") {
351
- throw createHttpError(400, "Termination of finished uploads is disabled");
352
- }
353
- }
354
- const file = await this.storage.delete({ id });
355
- if (file.status === void 0) {
356
- throw createHttpError(404, "File not found");
357
- }
358
- return {
359
- ...file,
360
- headers: this.buildHeaders(file),
361
- statusCode: 204
362
- };
363
- }
364
- /**
365
- * Build TUS protocol headers including required Tus-Resumable and optional Upload-Expires.
366
- * @param file Upload file object with metadata
367
- * @param headers Additional headers to include
368
- * @returns Headers object with TUS protocol headers
369
- */
370
- buildHeaders(file, headers = {}) {
371
- headers["Tus-Resumable"] = TUS_RESUMABLE_VERSION;
372
- if (this.storage.tusExtension.includes("expiration") && file.expiredAt !== void 0) {
373
- headers["Upload-Expires"] = new Date(file.expiredAt).toUTCString();
374
- }
375
- return headers;
376
- }
377
- /**
378
- * Extract checksum algorithm and value from Upload-Checksum header.
379
- * @param checksumHeader Upload-Checksum header value
380
- * @returns Object containing checksum algorithm and value
381
- */
382
- // eslint-disable-next-line class-methods-use-this
383
- extractChecksum(checksumHeader) {
384
- if (!checksumHeader) {
385
- return { checksum: void 0, checksumAlgorithm: void 0 };
386
- }
387
- const [checksumAlgorithm, checksum] = checksumHeader.split(/\s+/).filter(Boolean);
388
- return { checksum, checksumAlgorithm };
389
- }
390
- /**
391
- * Validate Tus-Resumable header value.
392
- * @param tusResumable Tus-Resumable header value
393
- * @throws {Error} 412 if version doesn't match or header is missing
394
- */
395
- // eslint-disable-next-line class-methods-use-this
396
- validateTusResumableHeader(tusResumable) {
397
- if (!tusResumable) {
398
- throw createHttpError(412, "Missing Tus-Resumable header");
399
- }
400
- if (tusResumable !== TUS_RESUMABLE_VERSION) {
401
- throw createHttpError(412, `Unsupported TUS version: ${tusResumable}. Server supports: ${TUS_RESUMABLE_VERSION}`);
402
- }
403
- }
404
- /**
405
- * Concatenate partial uploads into a final upload.
406
- * @param finalFile Final file that will contain concatenated content
407
- * @param partialFiles Array of partial upload files to concatenate
408
- * @returns Promise resolving when concatenation is complete
409
- */
410
- async concatenateFiles(finalFile, partialFiles) {
411
- let offset = 0;
412
- for (const partialFile of partialFiles) {
413
- if (!this.storage.getStream) {
414
- throw createHttpError(501, "getStream is not supported by this storage backend");
415
- }
416
- const { size, stream } = await this.storage.getStream({ id: partialFile.id });
417
- if (size === void 0) {
418
- throw createHttpError(500, "Partial upload size is undefined");
419
- }
420
- const updatedFile = await this.storage.write({
421
- ...finalFile,
422
- body: stream,
423
- contentLength: size,
424
- start: offset
425
- });
426
- Object.assign(finalFile, updatedFile);
427
- offset += size;
428
- }
429
- }
430
- }
431
- const TUS_RESUMABLE = TUS_RESUMABLE_VERSION;
432
- const TUS_VERSION = TUS_VERSION_VERSION;
433
-
434
- export { TUS_RESUMABLE, TUS_VERSION, TusBase, parseMetadata, serializeMetadata };
@@ -1,200 +0,0 @@
1
- import { c as createHttpError } from './headers-YLRp1dLo.js';
2
- import { B as BaseHandlerFetch } from './base-handler-fetch-D4u2xits.js';
3
- import { TusBase } from './TUS_RESUMABLE-Dtfsffnj.js';
4
- export { TUS_RESUMABLE, TUS_VERSION } from './TUS_RESUMABLE-Dtfsffnj.js';
5
-
6
- const getIdFromRequestUrl = (url) => {
7
- try {
8
- const urlObject = new URL(url);
9
- const pathParts = urlObject.pathname.split("/").filter(Boolean);
10
- return pathParts[pathParts.length - 1] || void 0;
11
- } catch {
12
- return void 0;
13
- }
14
- };
15
- class Tus extends BaseHandlerFetch {
16
- /**
17
- * Limiting enabled http method handler
18
- */
19
- static methods = ["delete", "download", "get", "head", "options", "patch", "post"];
20
- tusBase;
21
- constructor(options) {
22
- super(options);
23
- this.disableTerminationForFinishedUploads = options.disableTerminationForFinishedUploads ?? false;
24
- const tusInstance = this;
25
- this.tusBase = new class extends TusBase {
26
- // eslint-disable-next-line class-methods-use-this
27
- get storage() {
28
- return tusInstance.storage;
29
- }
30
- // eslint-disable-next-line class-methods-use-this
31
- get disableTerminationForFinishedUploads() {
32
- return tusInstance.disableTerminationForFinishedUploads ?? false;
33
- }
34
- // eslint-disable-next-line class-methods-use-this
35
- buildFileUrl(requestUrl, file) {
36
- return tusInstance.buildFileUrlForTus(requestUrl, file);
37
- }
38
- }();
39
- }
40
- /**
41
- * Handle OPTIONS requests with TUS protocol capabilities.
42
- * @returns Promise resolving to ResponseFile with TUS headers
43
- */
44
- async options() {
45
- return this.tusBase.handleOptions(Tus.methods);
46
- }
47
- /**
48
- * Creates a new TUS upload and optionally starts uploading data.
49
- * @param request Web API Request with TUS headers.
50
- * @returns Promise resolving to ResponseFile with upload location and offset.
51
- */
52
- async post(request) {
53
- const tusResumable = request.headers.get("tus-resumable");
54
- this.tusBase.validateTusResumableHeader(tusResumable || void 0);
55
- const uploadLength = request.headers.get("upload-length") || void 0;
56
- const uploadDeferLength = request.headers.get("upload-defer-length") || void 0;
57
- const uploadConcat = request.headers.get("upload-concat") || void 0;
58
- const metadataHeader = request.headers.get("upload-metadata") || void 0;
59
- const contentType = request.headers.get("content-type") || "";
60
- const contentLengthHeader = request.headers.get("content-length");
61
- const contentLength = contentLengthHeader ? Number.parseInt(contentLengthHeader, 10) : 0;
62
- const requestUrl = request.url;
63
- const bodyStream = request.body;
64
- return this.tusBase.handlePost(uploadLength, uploadDeferLength, uploadConcat, metadataHeader, requestUrl, bodyStream, contentLength, contentType);
65
- }
66
- /**
67
- * Write a chunk of data to an existing TUS upload.
68
- * @param request Web API Request with chunk data and TUS headers
69
- * @returns Promise resolving to ResponseFile with updated offset
70
- */
71
- async patch(request) {
72
- const tusResumable = request.headers.get("tus-resumable");
73
- this.tusBase.validateTusResumableHeader(tusResumable || void 0);
74
- const id = getIdFromRequestUrl(request.url);
75
- if (!id) {
76
- throw createHttpError(404, "File not found");
77
- }
78
- const uploadOffsetHeader = request.headers.get("upload-offset");
79
- if (!uploadOffsetHeader) {
80
- throw createHttpError(412, "Missing Upload-Offset header");
81
- }
82
- const contentType = request.headers.get("content-type");
83
- if (!contentType) {
84
- throw createHttpError(412, "Content-Type header required");
85
- }
86
- if (contentType !== "application/offset+octet-stream") {
87
- throw createHttpError(415, "Unsupported Media Type");
88
- }
89
- const uploadOffset = Number.parseInt(uploadOffsetHeader, 10);
90
- const uploadLength = request.headers.get("upload-length") || void 0;
91
- const metadataHeader = request.headers.get("upload-metadata") || void 0;
92
- const contentLengthHeader = request.headers.get("content-length");
93
- const contentLength = contentLengthHeader ? Number.parseInt(contentLengthHeader, 10) : 0;
94
- const checksumHeader = request.headers.get("upload-checksum") || void 0;
95
- const { checksum, checksumAlgorithm } = this.tusBase.extractChecksum(checksumHeader);
96
- const requestUrl = request.url;
97
- const bodyStream = request.body;
98
- try {
99
- return this.tusBase.handlePatch(id, uploadOffset, uploadLength, metadataHeader, checksum, checksumAlgorithm, requestUrl, bodyStream, contentLength);
100
- } catch (error) {
101
- const errorWithCode = error;
102
- if (errorWithCode.UploadErrorCode === "GONE" || errorWithCode.UploadErrorCode === "FILE_NOT_FOUND") {
103
- throw createHttpError(410, "Upload expired");
104
- }
105
- throw error;
106
- }
107
- }
108
- /**
109
- * Get current upload offset and metadata for TUS resumable uploads.
110
- * @param request Web API Request with upload ID
111
- * @returns Promise resolving to ResponseFile with upload-offset and metadata headers
112
- */
113
- async head(request) {
114
- const tusResumable = request.headers.get("tus-resumable");
115
- this.tusBase.validateTusResumableHeader(tusResumable || void 0);
116
- const id = getIdFromRequestUrl(request.url);
117
- if (!id) {
118
- throw createHttpError(404, "File not found");
119
- }
120
- try {
121
- return this.tusBase.handleHead(id);
122
- } catch (error) {
123
- const errorWithCode = error;
124
- if (errorWithCode.UploadErrorCode === "GONE" || errorWithCode.UploadErrorCode === "FILE_NOT_FOUND") {
125
- throw createHttpError(410, "Upload expired");
126
- }
127
- throw error;
128
- }
129
- }
130
- /**
131
- * Get TUS upload metadata and current status.
132
- * @param request Web API Request with upload ID
133
- * @returns Promise resolving to ResponseFile with file metadata as JSON
134
- */
135
- async get(request) {
136
- const tusResumable = request.headers.get("tus-resumable");
137
- this.tusBase.validateTusResumableHeader(tusResumable || void 0);
138
- const id = getIdFromRequestUrl(request.url);
139
- if (!id) {
140
- throw createHttpError(404, "File not found");
141
- }
142
- try {
143
- return this.tusBase.handleGet(id);
144
- } catch (error) {
145
- const errorWithCode = error;
146
- if (errorWithCode.UploadErrorCode === "GONE") {
147
- throw createHttpError(410, "Upload expired");
148
- }
149
- throw error;
150
- }
151
- }
152
- /**
153
- * Delete a TUS upload and its associated data.
154
- * @param request Web API Request with upload ID
155
- * @returns Promise resolving to ResponseFile with deletion confirmation
156
- */
157
- async delete(request) {
158
- const tusResumable = request.headers.get("tus-resumable");
159
- this.tusBase.validateTusResumableHeader(tusResumable || void 0);
160
- const id = getIdFromRequestUrl(request.url);
161
- if (!id) {
162
- throw createHttpError(404, "File not found");
163
- }
164
- try {
165
- return this.tusBase.handleDelete(id);
166
- } catch (error) {
167
- const errorWithCode = error;
168
- if (errorWithCode.code === "ENOENT") {
169
- throw createHttpError(404, "File not found");
170
- }
171
- throw error;
172
- }
173
- }
174
- /**
175
- * Compose and register HTTP method handlers.
176
- */
177
- compose() {
178
- this.registeredHandlers.set("POST", this.post.bind(this));
179
- this.registeredHandlers.set("PATCH", this.patch.bind(this));
180
- this.registeredHandlers.set("HEAD", this.head.bind(this));
181
- this.registeredHandlers.set("GET", this.get.bind(this));
182
- this.registeredHandlers.set("DELETE", this.delete.bind(this));
183
- this.registeredHandlers.set("OPTIONS", this.options.bind(this));
184
- this.logger?.debug("Registered handler: %s", [...this.registeredHandlers.keys()].join(", "));
185
- }
186
- /**
187
- * Build file URL for TUS uploads (without file extension).
188
- * @param requestUrl Request URL string
189
- * @param file File object containing ID
190
- * @returns Constructed file URL for TUS protocol
191
- */
192
- buildFileUrlForTus(requestUrl, file) {
193
- const url = new URL(requestUrl);
194
- const { pathname, search } = url;
195
- const relative = `${pathname}/${file.id}${search}`;
196
- return this.storage.config.useRelativeLocation ? relative : url.origin + relative;
197
- }
198
- }
199
-
200
- export { Tus };