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

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 +361 -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-w21RxjUm.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-2kl7JDXs.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-BUeEJoGL.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-WM3rF6Fw.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-D3s2fRB3.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-BBE2-aVz.js +1 -0
  50. package/dist/packem_shared/DiskStorage-DL0GiG6k.js +1 -0
  51. package/dist/packem_shared/DiskStorageWithChecksum-BvUTn7O-.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-BL3OIdE_.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-CJh9_N-9.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-lXMXy3Pm.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-Dw94efNW.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-udgXA5ia.js +1 -0
  67. package/dist/packem_shared/GCStorage-ChY6uJuO.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-C0NhBBWH.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-CIFfQksD.js +1 -0
  76. package/dist/packem_shared/Multipart-D9WIud9R.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-CO89TGvF.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-jAN46vRm.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-DpOjOKAt.js +1 -0
  88. package/dist/packem_shared/Rest-BuD3ySAg.js +1 -0
  89. package/dist/packem_shared/Rest-URrQ5FYM.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-n1ohEZj4.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-Ban-WN8v.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-BY90zh1c.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-pNbHAE1Y.js +1 -0
  102. package/dist/packem_shared/TUS_RESUMABLE-B7KtPVeC.js +1 -0
  103. package/dist/packem_shared/Tus-Fp_hx5ug.js +1 -0
  104. package/dist/packem_shared/Tus-TNG9HAY8.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-BcmIE2dI.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-s260zfFo.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-BYDQditz.js +1 -0
  122. package/dist/packem_shared/base-handler-fetch-DWzsPkmV.js +1 -0
  123. package/dist/packem_shared/base-handler-node-Dety2rQB.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-shIZX_7L.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-CKAJvhcj.js +1 -0
  132. package/dist/packem_shared/disk-storage-with-checksum.d-mHcg2uLw.d.ts +150 -0
  133. package/dist/packem_shared/executors-DG6hGtvm.js +1 -0
  134. package/dist/packem_shared/executors.d-X4hz3zfu.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-mZiqlX-9.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-C4Fivh4I.d.ts +94 -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-B11vHYNm.d.ts +21 -0
  152. package/dist/packem_shared/media-transformer.d-C3QvECD7.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-DI7xFXr5.js +1 -0
  163. package/dist/packem_shared/restOpenApiSpec-PaIVbESh.js +1 -0
  164. package/dist/packem_shared/s3-base-storage-Dbexfg7p.js +1 -0
  165. package/dist/packem_shared/s3-base-storage.d-V3N2nKCt.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-Dh0tJh7j.js +1 -0
  169. package/dist/packem_shared/storage.d-RteRC-cG.d.ts +1106 -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-CygntIPM.d.ts +99 -0
  175. package/dist/packem_shared/tusOpenApiSpec-DF0-hlWV.js +1 -0
  176. package/dist/packem_shared/types.d-ChNXbbHG.d.ts +104 -0
  177. package/dist/packem_shared/types.d-DxonY4XS.d.ts +720 -0
  178. package/dist/packem_shared/types.d-cI_cMxcZ.d.ts +49 -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,434 +0,0 @@
1
- import { c as createHttpError, H as HeaderUtilities } from './headers-DoS5nwM-.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-DoS5nwM-.js';
2
- import { B as BaseHandlerFetch } from './base-handler-fetch-Cr0hLiqg.js';
3
- import { TusBase } from './TUS_RESUMABLE-GJzZ9R-f.js';
4
- export { TUS_RESUMABLE, TUS_VERSION } from './TUS_RESUMABLE-GJzZ9R-f.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 };