@visulima/storage 1.0.0-alpha.9 → 1.0.0

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 +555 -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-Ba7cLu-t.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-DTBVxHXO.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-BFsD4qbF.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-DFwhEI9C.js +1 -0
  39. package/dist/packem_shared/BoxStorage-B_t-OVzf.js +1 -0
  40. package/dist/packem_shared/BunS3File-BcYmsz1n.js +1 -0
  41. package/dist/packem_shared/BunS3MetaStorage-DFwhEI9C.js +1 -0
  42. package/dist/packem_shared/BunS3Storage-CB_pZWlV.js +1 -0
  43. package/dist/packem_shared/BunnyFile-BgEOlcYI.js +1 -0
  44. package/dist/packem_shared/BunnyMetaStorage-DFwhEI9C.js +1 -0
  45. package/dist/packem_shared/BunnyStorage-CILSK4_Z.js +1 -0
  46. package/dist/packem_shared/CloudinaryFile-Bo5B-vM1.js +1 -0
  47. package/dist/packem_shared/CloudinaryMetaStorage-D_vNzewL.js +1 -0
  48. package/dist/packem_shared/CloudinaryStorage-DiCbdAi_.js +1 -0
  49. package/dist/packem_shared/DiskStorage-Kp5t3vnF.js +1 -0
  50. package/dist/packem_shared/DiskStorageWithChecksum-Bh6w-Iu8.js +1 -0
  51. package/dist/packem_shared/DropboxFile-BFb7eOzy.js +1 -0
  52. package/dist/packem_shared/DropboxMetaStorage-DFwhEI9C.js +1 -0
  53. package/dist/packem_shared/DropboxStorage-H8bd8hEz.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-BA3mpDwz.js +1 -0
  57. package/dist/packem_shared/FirebaseFile-BLaBxa2A.js +1 -0
  58. package/dist/packem_shared/FirebaseMetaStorage-D_vNzewL.js +1 -0
  59. package/dist/packem_shared/FirebaseStorage-Dgk4XyMr.js +2 -0
  60. package/dist/packem_shared/FtpFile-ClWDYnt2.js +1 -0
  61. package/dist/packem_shared/FtpMetaStorage-DFwhEI9C.js +1 -0
  62. package/dist/packem_shared/FtpStorage-g_DjiR-C.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-3fLTlRd4.js +1 -0
  66. package/dist/packem_shared/GCStorage-DUfwVFd3.js +1 -0
  67. package/dist/packem_shared/GoogleDriveFile-DHpLhzg9.js +1 -0
  68. package/dist/packem_shared/GoogleDriveMetaStorage-DqkgoE46.js +1 -0
  69. package/dist/packem_shared/GoogleDriveStorage-D0-5egHE.js +1 -0
  70. package/dist/packem_shared/LocalMetaStorage-Bp5mVc76.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-DzSTdlAq.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-Btj2mo9r.js +1 -0
  77. package/dist/packem_shared/Multipart-C4GpuHMU.js +1 -0
  78. package/dist/packem_shared/NetlifyBlobFile-DoFhkzaH.js +1 -0
  79. package/dist/packem_shared/NetlifyBlobMetaStorage-D_vNzewL.js +1 -0
  80. package/dist/packem_shared/NetlifyBlobStorage-DZdCmOVW.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-DqkgoE46.js +1 -0
  84. package/dist/packem_shared/OneDriveStorage-CvJetV7_.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-CpvDRnSu.js +1 -0
  88. package/dist/packem_shared/PocketBaseStorage-BPil-koe.js +1 -0
  89. package/dist/packem_shared/Rest-BehVaxbl.js +1 -0
  90. package/dist/packem_shared/Rest-ymPCZkKR.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-wslqssvr.js +1 -0
  94. package/dist/packem_shared/SftpFile-ClWDYnt2.js +1 -0
  95. package/dist/packem_shared/SftpMetaStorage-DFwhEI9C.js +1 -0
  96. package/dist/packem_shared/SftpStorage-BVbMtS2b.js +1 -0
  97. package/dist/packem_shared/SharePointFile-Blz9FS4h.js +1 -0
  98. package/dist/packem_shared/SharePointMetaStorage-DFwhEI9C.js +1 -0
  99. package/dist/packem_shared/SharePointStorage-DWjvR5oZ.js +1 -0
  100. package/dist/packem_shared/SupabaseFile-Bo5B-vM1.js +1 -0
  101. package/dist/packem_shared/SupabaseMetaStorage-DqkgoE46.js +1 -0
  102. package/dist/packem_shared/SupabaseStorage-BiKmYKb6.js +1 -0
  103. package/dist/packem_shared/TUS_RESUMABLE-CyTSRvPU.js +1 -0
  104. package/dist/packem_shared/Tus-BgbON_wQ.js +1 -0
  105. package/dist/packem_shared/Tus-v6jzkaIO.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-D_vNzewL.js +1 -0
  109. package/dist/packem_shared/UploadThingStorage-jrEnANC5.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-DFwhEI9C.js +1 -0
  113. package/dist/packem_shared/VercelBlobStorage-Y-cDgH30.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-EeV8gZck.js +1 -0
  124. package/dist/packem_shared/base-handler-fetch-CHzsgb7C.js +1 -0
  125. package/dist/packem_shared/base-handler-node-BjpW8pGi.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-DIn-VnCh.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-Dy37wCjI.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-C2T92TYb.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-BVg7lYf5.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-CynUg0mH.js +1 -0
  167. package/dist/packem_shared/restOpenApiSpec-Csv513qf.js +1 -0
  168. package/dist/packem_shared/s3-base-storage-DXZYN24h.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-Cyy73Y6r.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 +202 -51
  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,310 +1 @@
1
- import { Input, BufferSource, ALL_FORMATS, Output, BufferTarget, Conversion, Mp4OutputFormat, WebMOutputFormat, OggOutputFormat, MkvOutputFormat } from 'mediabunny';
2
- import BaseTransformer from '../packem_shared/BaseTransformer-C2gLib6v.js';
3
- import { isValidMediaType, getFormatFromContentType } from '../packem_shared/isValidMediaType-BeDgiObq.js';
4
-
5
- class VideoTransformer extends BaseTransformer {
6
- /**
7
- * Creates a new VideoTransformer instance.
8
- * @param storage The storage backend for retrieving and storing video files.
9
- * @param config Configuration options for video transformation including cache settings, codec defaults, and size limits.
10
- */
11
- constructor(storage, config = {}) {
12
- const logger = config.logger || storage.logger;
13
- const transformerConfig = {
14
- cacheTtl: 3600,
15
- // 1 hour
16
- defaultBitrate: 2e6,
17
- // 2 Mbps
18
- defaultCodec: "avc",
19
- // No cache provided - no caching
20
- maxCacheSize: 50,
21
- // Max 50 transformed videos in cache
22
- maxVideoSize: 500 * 1024 * 1024,
23
- // 500MB
24
- supportedFormats: ["mp4", "webm", "mkv", "avi", "mov", "flv", "wmv"],
25
- ...config
26
- };
27
- super(storage, transformerConfig, logger);
28
- }
29
- /**
30
- * Resizes a video to specified dimensions with optional fit mode.
31
- * @param fileId Unique identifier of the video file to resize.
32
- * @param options Resize options including width, height, and fit mode.
33
- * @returns Promise resolving to transformed video result.
34
- */
35
- async resize(fileId, options) {
36
- return this.transform(fileId, [{ options, type: "resize" }]);
37
- }
38
- /**
39
- * Crops a video to the specified region.
40
- * @param fileId Unique identifier of the video file to crop.
41
- * @param options Crop options including region coordinates.
42
- * @returns Promise resolving to transformed video result.
43
- */
44
- async crop(fileId, options) {
45
- return this.transform(fileId, [{ options, type: "crop" }]);
46
- }
47
- /**
48
- * Rotates a video by the specified angle.
49
- * @param fileId Unique identifier of the video file to rotate.
50
- * @param options Rotation configuration with angle in degrees and optional background color.
51
- * @returns Promise resolving to transformed video result.
52
- */
53
- async rotate(fileId, options) {
54
- return this.transform(fileId, [{ options, type: "rotate" }]);
55
- }
56
- /**
57
- * Converts video format or codec.
58
- * @param fileId Unique identifier of the video file to convert.
59
- * @param format Target video format (e.g., "mp4", "webm", "mkv").
60
- * @param options Video transformation options including quality, bitrate, and codec settings.
61
- * @returns Promise resolving to transformed video result with updated format metadata.
62
- */
63
- async convertFormat(fileId, format, options = {}) {
64
- return this.transform(fileId, [{ options: { ...options, format }, type: "format" }]);
65
- }
66
- /**
67
- * Transcodes video to different codec.
68
- * @param fileId Unique identifier of the video file to transcode.
69
- * @param codec Target video codec (e.g., "avc", "hevc", "vp9").
70
- * @param options Additional transform options.
71
- * @returns Promise resolving to transformed video result.
72
- */
73
- async transcode(fileId, codec, options = {}) {
74
- return this.transform(fileId, [{ options: { ...options, codec }, type: "codec" }]);
75
- }
76
- /**
77
- * Applies a custom transformation pipeline to a video.
78
- * @param fileId Unique identifier of the video file to transform.
79
- * @param steps Array of transformation steps to apply in sequence.
80
- * @returns Promise resolving to transformed video result.
81
- */
82
- async transform(fileId, steps) {
83
- const fileQuery = { id: fileId };
84
- const cacheKey = this.generateCacheKey(fileId, steps);
85
- if (this.cache) {
86
- const cached = await Promise.resolve(this.cache.get(cacheKey));
87
- if (cached) {
88
- this.logger?.debug("Returning cached transformed video for %s", fileId);
89
- return cached;
90
- }
91
- }
92
- const originalFile = await this.storage.get(fileQuery);
93
- await this.validateVideo(originalFile);
94
- const transformedBuffer = await this.applyTransformations(originalFile.content, steps);
95
- const result = await this.createTransformResult(transformedBuffer, originalFile);
96
- if (this.cache) {
97
- this.cache.set(cacheKey, result);
98
- }
99
- return result;
100
- }
101
- /**
102
- * Applies multiple transformations in sequence using Mediabunny.
103
- * @param buffer The original video buffer.
104
- * @param steps Array of video transformation steps to apply.
105
- * @returns Promise resolving to transformed video buffer.
106
- * @private
107
- */
108
- async applyTransformations(buffer, steps) {
109
- const input = new Input({
110
- formats: ALL_FORMATS,
111
- source: new BufferSource(buffer)
112
- });
113
- const outputFormat = this.determineOutputFormat(steps);
114
- const output = new Output({
115
- format: outputFormat,
116
- target: new BufferTarget()
117
- });
118
- const videoOptions = this.stepsToVideoOptions(steps);
119
- const conversion = await Conversion.init({
120
- input,
121
- output,
122
- video: videoOptions
123
- });
124
- if (!conversion.isValid) {
125
- const reasons = conversion.discardedTracks.map((track) => track.reason).join(", ");
126
- throw new Error(`Video transformation failed: ${reasons}`);
127
- }
128
- await conversion.execute();
129
- return Buffer.from(output.target.buffer);
130
- }
131
- /**
132
- * Converts transformation steps to Mediabunny video options.
133
- * @param steps Array of video transformation steps to convert.
134
- * @returns Mediabunny video options object for conversion.
135
- * @private
136
- */
137
- // eslint-disable-next-line class-methods-use-this
138
- stepsToVideoOptions(steps) {
139
- const options = {};
140
- for (const step of steps) {
141
- switch (step.type) {
142
- case "bitrate": {
143
- const bitrateOptions = step.options;
144
- if (bitrateOptions.bitrate) {
145
- options.bitrate = bitrateOptions.bitrate;
146
- }
147
- break;
148
- }
149
- case "codec": {
150
- const codecOptions = step.options;
151
- if (codecOptions.codec) {
152
- options.codec = codecOptions.codec;
153
- }
154
- if (codecOptions.bitrate) {
155
- options.bitrate = codecOptions.bitrate;
156
- }
157
- break;
158
- }
159
- case "crop": {
160
- const cropOptions = step.options;
161
- options.crop = {
162
- height: cropOptions.height,
163
- left: cropOptions.left,
164
- top: cropOptions.top,
165
- width: cropOptions.width
166
- };
167
- break;
168
- }
169
- case "frameRate": {
170
- const frameRateOptions = step.options;
171
- if (frameRateOptions.frameRate) {
172
- options.frameRate = frameRateOptions.frameRate;
173
- }
174
- break;
175
- }
176
- case "resize": {
177
- const resizeOptions = step.options;
178
- options.width = resizeOptions.width;
179
- options.height = resizeOptions.height;
180
- options.fit = resizeOptions.fit;
181
- if (resizeOptions.position !== void 0) {
182
- options.position = resizeOptions.position;
183
- }
184
- break;
185
- }
186
- case "rotate": {
187
- const rotateOptions = step.options;
188
- options.rotate = rotateOptions.angle;
189
- if (rotateOptions.background) {
190
- options.background = rotateOptions.background;
191
- }
192
- break;
193
- }
194
- }
195
- }
196
- return options;
197
- }
198
- /**
199
- * Determines output format based on transformation steps.
200
- * @param steps Array of video transformation steps.
201
- * @returns Mediabunny output format instance (defaults to MP4).
202
- * @private
203
- */
204
- determineOutputFormat(steps) {
205
- for (const step of steps) {
206
- if (step.type === "format" && step.options.format) {
207
- return this.formatStringToOutputFormat(step.options.format);
208
- }
209
- }
210
- return new Mp4OutputFormat();
211
- }
212
- /**
213
- * Converts format string to Mediabunny output format.
214
- * @param format Video format string (mp4, webm, mkv, ogg).
215
- * @returns Mediabunny output format instance.
216
- * @private
217
- */
218
- // eslint-disable-next-line class-methods-use-this
219
- formatStringToOutputFormat(format) {
220
- switch (format.toLowerCase()) {
221
- case "mkv": {
222
- return new MkvOutputFormat();
223
- }
224
- case "mp4": {
225
- return new Mp4OutputFormat();
226
- }
227
- case "ogg": {
228
- return new OggOutputFormat();
229
- }
230
- case "webm": {
231
- return new WebMOutputFormat();
232
- }
233
- default: {
234
- return new Mp4OutputFormat();
235
- }
236
- }
237
- }
238
- /**
239
- * Validates that the file is a supported video.
240
- * @param file The file to validate.
241
- * @returns Promise that resolves if validation passes.
242
- * @throws Error if file size exceeds limits, wrong content type, unsupported format, or invalid video.
243
- * @private
244
- */
245
- async validateVideo(file) {
246
- const fileSize = typeof file.size === "string" ? Number.parseInt(file.size, 10) : file.size;
247
- if (this.config?.maxVideoSize && fileSize > this.config.maxVideoSize) {
248
- throw new Error(`Video size ${fileSize} exceeds maximum allowed size ${this.config.maxVideoSize}`);
249
- }
250
- if (!isValidMediaType(file.contentType, "video")) {
251
- throw new Error(`File is not a video: ${file.contentType}`);
252
- }
253
- const format = getFormatFromContentType(file.contentType);
254
- if (this.config?.supportedFormats && format && !this.config.supportedFormats.includes(format)) {
255
- throw new Error(`Unsupported video format: ${format}`);
256
- }
257
- try {
258
- const input = new Input({
259
- formats: ALL_FORMATS,
260
- source: new BufferSource(file.content)
261
- });
262
- const primaryTrack = await input.getPrimaryVideoTrack();
263
- if (!primaryTrack) {
264
- throw new Error("No video track found");
265
- }
266
- } catch (error) {
267
- throw new Error(`Invalid video file: ${error}`);
268
- }
269
- }
270
- /**
271
- * Creates transformation result with metadata.
272
- * @param buffer The transformed video buffer.
273
- * @param originalFile The original file information.
274
- * @returns Video transformation result with metadata.
275
- * @private
276
- */
277
- async createTransformResult(buffer, originalFile) {
278
- const input = new Input({
279
- formats: ALL_FORMATS,
280
- source: new BufferSource(buffer)
281
- });
282
- const videoTrack = await input.getPrimaryVideoTrack();
283
- const duration = await input.computeDuration();
284
- return {
285
- bitrate: this.config.defaultBitrate,
286
- buffer,
287
- duration,
288
- format: "mp4",
289
- // Default, would need to detect actual format
290
- height: videoTrack?.displayHeight || 0,
291
- originalFile,
292
- size: buffer.length,
293
- width: videoTrack?.displayWidth || 0
294
- };
295
- }
296
- /**
297
- * Generates cache key for transformation.
298
- * @param fileId The file identifier.
299
- * @param steps Array of transformation steps.
300
- * @returns Unique cache key string.
301
- * @private
302
- */
303
- // eslint-disable-next-line class-methods-use-this
304
- generateCacheKey(fileId, steps) {
305
- const stepsKey = steps.map((step) => `${step.type}:${JSON.stringify(step.options)}`).join("|");
306
- return `${fileId}:${stepsKey}`;
307
- }
308
- }
309
-
310
- export { VideoTransformer as default };
1
+ import{Input as c,BufferSource as p,ALL_FORMATS as f,Output as d,BufferTarget as h,Conversion as w,Mp4OutputFormat as m,WebMOutputFormat as g,OggOutputFormat as l,MkvOutputFormat as y}from"mediabunny";import b from"../packem_shared/BaseTransformer-Buw5lX_3.js";import{isValidMediaType as v,getFormatFromContentType as T}from"../packem_shared/getFormatFromContentType-DCTTPQHm.js";class V extends b{constructor(o,t={}){const r=t.logger||o.logger,e={cacheTtl:3600,defaultBitrate:2e6,defaultCodec:"avc",maxCacheSize:50,maxVideoSize:500*1024*1024,supportedFormats:["mp4","webm","mkv","avi","mov","flv","wmv"],...t};super(o,e,r)}async resize(o,t){return this.transform(o,[{options:t,type:"resize"}])}async crop(o,t){return this.transform(o,[{options:t,type:"crop"}])}async rotate(o,t){return this.transform(o,[{options:t,type:"rotate"}])}async convertFormat(o,t,r={}){return this.transform(o,[{options:{...r,format:t},type:"format"}])}async transcode(o,t,r={}){return this.transform(o,[{options:{...r,codec:t},type:"codec"}])}async transform(o,t){const r={id:o},e=this.generateCacheKey(o,t);if(this.cache){const n=await Promise.resolve(this.cache.get(e));if(n)return this.logger?.debug("Returning cached transformed video for %s",o),n}const i=await this.storage.get(r);await this.validateVideo(i);const s=await this.applyTransformations(i.content,t),a=await this.createTransformResult(s,i);return this.cache&&this.cache.set(e,a),a}async applyTransformations(o,t){const r=new c({formats:f,source:new p(o)}),e=this.determineOutputFormat(t),i=new d({format:e,target:new h}),s=this.stepsToVideoOptions(t),a=await w.init({input:r,output:i,video:s});if(!a.isValid){const n=a.discardedTracks.map(u=>u.reason).join(", ");throw new Error(`Video transformation failed: ${n}`)}return await a.execute(),Buffer.from(i.target.buffer)}stepsToVideoOptions(o){const t={};for(const r of o)switch(r.type){case"bitrate":{const e=r.options;e.bitrate&&(t.bitrate=e.bitrate);break}case"codec":{const e=r.options;e.codec&&(t.codec=e.codec),e.bitrate&&(t.bitrate=e.bitrate);break}case"crop":{const e=r.options;t.crop={height:e.height,left:e.left,top:e.top,width:e.width};break}case"frameRate":{const e=r.options;e.frameRate&&(t.frameRate=e.frameRate);break}case"resize":{const e=r.options;t.width=e.width,t.height=e.height,t.fit=e.fit,e.position!==void 0&&(t.position=e.position);break}case"rotate":{const e=r.options;t.rotate=e.angle,e.background&&(t.background=e.background);break}}return t}determineOutputFormat(o){for(const t of o)if(t.type==="format"&&t.options.format)return this.formatStringToOutputFormat(t.options.format);return new m}formatStringToOutputFormat(o){switch(o.toLowerCase()){case"mkv":return new y;case"mp4":return new m;case"ogg":return new l;case"webm":return new g;default:return new m}}async validateVideo(o){const t=typeof o.size=="string"?Number.parseInt(o.size,10):o.size;if(this.config?.maxVideoSize&&t>this.config.maxVideoSize)throw new Error(`Video size ${t} exceeds maximum allowed size ${this.config.maxVideoSize}`);if(!v(o.contentType,"video"))throw new Error(`File is not a video: ${o.contentType}`);const r=T(o.contentType);if(this.config?.supportedFormats&&r&&!this.config.supportedFormats.includes(r))throw new Error(`Unsupported video format: ${r}`);try{if(!await new c({formats:f,source:new p(o.content)}).getPrimaryVideoTrack())throw new Error("No video track found")}catch(e){throw new Error(`Invalid video file: ${e}`)}}async createTransformResult(o,t){const r=new c({formats:f,source:new p(o)}),e=await r.getPrimaryVideoTrack(),i=await r.computeDuration();return{bitrate:this.config.defaultBitrate,buffer:o,duration:i,format:"mp4",height:e?.displayHeight||0,originalFile:t,size:o.length,width:e?.displayWidth||0}}generateCacheKey(o,t){const r=t.map(e=>`${e.type}:${JSON.stringify(e.options)}`).join("|");return`${o}:${r}`}}export{V as default};
package/package.json CHANGED
@@ -1,67 +1,70 @@
1
1
  {
2
2
  "name": "@visulima/storage",
3
- "version": "1.0.0-alpha.9",
4
- "description": "Visulima upload - Store files in a web-accessible location via a simplified API. Can automatically scale and rotate images. Includes S3, Azure, GCS and local filesystem-based backends with the most convenient features of each.",
3
+ "version": "1.0.0",
4
+ "description": "Server-side file-storage abstraction - store files in a web-accessible location via a simplified API. Includes S3, Azure, GCS, local filesystem and 20+ other backends with TUS/multipart/REST upload handlers and the most convenient features of each.",
5
5
  "keywords": [
6
6
  "anolilab",
7
- "visulima",
7
+ "astro",
8
+ "aws",
9
+ "aws-s3",
10
+ "azure",
11
+ "better-upload",
12
+ "better-uploads",
13
+ "chunk",
14
+ "chunked-upload",
15
+ "chunked-uploads",
16
+ "cloudflare-r2",
17
+ "cloudflare-workers",
18
+ "digitalocean-spaces",
19
+ "edge-runtime",
20
+ "elysia",
21
+ "enterprise-security",
8
22
  "express",
9
- "upload",
10
- "uploads",
23
+ "fastify",
11
24
  "file",
25
+ "file-upload",
12
26
  "files",
13
- "chunk",
14
- "resumable",
15
- "chunked-uploads",
16
- "tus",
17
27
  "form",
18
- "post",
19
- "multipart",
20
28
  "form-data",
21
29
  "formdata",
22
- "middleware",
23
- "better-upload",
24
- "better-uploads",
25
- "s3",
26
- "azure",
27
- "aws",
30
+ "framework-agnostic",
28
31
  "gcs",
29
32
  "google",
30
- "storage",
31
- "file-upload",
32
- "cloudflare-r2",
33
- "digitalocean-spaces",
34
33
  "google-cloud-storage",
34
+ "hetzner",
35
+ "hetzner-object-storage",
36
+ "hono",
37
+ "middleware",
35
38
  "minio",
36
- "presigned-urls",
39
+ "multipart",
40
+ "multipart-upload",
37
41
  "nextjs",
38
- "remix",
39
- "sveltekit",
40
42
  "nuxt",
41
- "astro",
43
+ "post",
44
+ "presigned-urls",
42
45
  "react",
43
- "aws-s3",
44
- "typescript",
45
- "hono",
46
- "fastify",
47
- "elysia",
48
- "framework-agnostic",
49
- "edge-runtime",
50
- "cloudflare-workers",
51
- "vercel-edge",
46
+ "remix",
47
+ "resumable",
48
+ "s3",
52
49
  "serverless",
50
+ "storage",
51
+ "storj",
52
+ "sveltekit",
53
+ "tus",
54
+ "typescript",
53
55
  "universal",
54
- "enterprise-security",
55
- "multipart-upload",
56
- "chunked-upload",
56
+ "upload",
57
57
  "upload-library",
58
- "uploadthing"
58
+ "uploads",
59
+ "uploadthing",
60
+ "vercel-edge",
61
+ "visulima"
59
62
  ],
60
- "homepage": "https://visulima.com/packages/uploads",
63
+ "homepage": "https://visulima.com/packages/storage",
61
64
  "repository": {
62
65
  "type": "git",
63
66
  "url": "https://github.com/visulima/visulima.git",
64
- "directory": "packages/storage"
67
+ "directory": "packages/storage/storage"
65
68
  },
66
69
  "funding": [
67
70
  {
@@ -117,6 +120,66 @@
117
120
  "types": "./dist/storage/local/index.d.ts",
118
121
  "import": "./dist/storage/local/index.js"
119
122
  },
123
+ "./provider/memory": {
124
+ "types": "./dist/storage/memory/index.d.ts",
125
+ "import": "./dist/storage/memory/index.js"
126
+ },
127
+ "./provider/ftp": {
128
+ "types": "./dist/storage/ftp/index.d.ts",
129
+ "import": "./dist/storage/ftp/index.js"
130
+ },
131
+ "./provider/sftp": {
132
+ "types": "./dist/storage/sftp/index.d.ts",
133
+ "import": "./dist/storage/sftp/index.js"
134
+ },
135
+ "./provider/supabase": {
136
+ "types": "./dist/storage/supabase/index.d.ts",
137
+ "import": "./dist/storage/supabase/index.js"
138
+ },
139
+ "./provider/uploadthing": {
140
+ "types": "./dist/storage/uploadthing/index.d.ts",
141
+ "import": "./dist/storage/uploadthing/index.js"
142
+ },
143
+ "./provider/dropbox": {
144
+ "types": "./dist/storage/dropbox/index.d.ts",
145
+ "import": "./dist/storage/dropbox/index.js"
146
+ },
147
+ "./provider/google-drive": {
148
+ "types": "./dist/storage/google-drive/index.d.ts",
149
+ "import": "./dist/storage/google-drive/index.js"
150
+ },
151
+ "./provider/onedrive": {
152
+ "types": "./dist/storage/onedrive/index.d.ts",
153
+ "import": "./dist/storage/onedrive/index.js"
154
+ },
155
+ "./provider/box": {
156
+ "types": "./dist/storage/box/index.d.ts",
157
+ "import": "./dist/storage/box/index.js"
158
+ },
159
+ "./provider/bun-s3": {
160
+ "types": "./dist/storage/bun-s3/index.d.ts",
161
+ "import": "./dist/storage/bun-s3/index.js"
162
+ },
163
+ "./provider/bunny": {
164
+ "types": "./dist/storage/bunny/index.d.ts",
165
+ "import": "./dist/storage/bunny/index.js"
166
+ },
167
+ "./provider/cloudinary": {
168
+ "types": "./dist/storage/cloudinary/index.d.ts",
169
+ "import": "./dist/storage/cloudinary/index.js"
170
+ },
171
+ "./provider/firebase": {
172
+ "types": "./dist/storage/firebase/index.d.ts",
173
+ "import": "./dist/storage/firebase/index.js"
174
+ },
175
+ "./provider/pocketbase": {
176
+ "types": "./dist/storage/pocketbase/index.d.ts",
177
+ "import": "./dist/storage/pocketbase/index.js"
178
+ },
179
+ "./provider/sharepoint": {
180
+ "types": "./dist/storage/sharepoint/index.d.ts",
181
+ "import": "./dist/storage/sharepoint/index.js"
182
+ },
120
183
  "./openapi": {
121
184
  "types": "./dist/openapi/index.d.ts",
122
185
  "import": "./dist/openapi/index.js"
@@ -177,6 +240,22 @@
177
240
  "types": "./dist/adapter/nuxt/module.d.ts",
178
241
  "import": "./dist/adapter/nuxt/module.js"
179
242
  },
243
+ "./ai/sdk": {
244
+ "types": "./dist/ai/ai-sdk/index.d.ts",
245
+ "import": "./dist/ai/ai-sdk/index.js"
246
+ },
247
+ "./ai/openai": {
248
+ "types": "./dist/ai/openai/index.d.ts",
249
+ "import": "./dist/ai/openai/index.js"
250
+ },
251
+ "./ai/claude": {
252
+ "types": "./dist/ai/claude/index.d.ts",
253
+ "import": "./dist/ai/claude/index.js"
254
+ },
255
+ "./ai/tanstack": {
256
+ "types": "./dist/ai/tanstack/index.d.ts",
257
+ "import": "./dist/ai/tanstack/index.js"
258
+ },
180
259
  "./package.json": "./package.json"
181
260
  },
182
261
  "files": [
@@ -186,38 +265,60 @@
186
265
  "LICENSE.md"
187
266
  ],
188
267
  "dependencies": {
189
- "@remix-run/multipart-parser": "^0.14.2",
268
+ "@remix-run/multipart-parser": "0.16.3",
190
269
  "@sindresorhus/fnv1a": "3.1.0",
191
- "@visulima/pagination": "5.0.0-alpha.7",
192
- "file-type": "21.3.4",
193
- "lru-cache": "11.2.7",
270
+ "@visulima/pagination": "5.0.0",
271
+ "file-type": "22.0.1",
272
+ "lru-cache": "11.5.1",
194
273
  "mime": "^4.1.0",
195
- "nanoid": "5.1.7",
196
- "path-to-regexp": "^8.3.0",
197
- "type-is": "^2.0.1"
274
+ "nanoid": "5.1.11",
275
+ "path-to-regexp": "8.4.2",
276
+ "type-is": "^2.1.0",
277
+ "zod": "4.4.3"
198
278
  },
199
279
  "peerDependencies": {
280
+ "@anthropic-ai/claude-agent-sdk": ">=0.2.0",
200
281
  "@aws-sdk/client-s3": ">=3.901.0",
201
282
  "@aws-sdk/credential-providers": ">=3.901.0",
202
283
  "@aws-sdk/s3-request-presigner": ">=3.901.0",
203
284
  "@aws-sdk/signature-v4-crt": ">=3.901.0",
204
285
  "@aws-sdk/types": ">=3.930.0",
286
+ "@azure/core-auth": ">=1.9.0",
205
287
  "@azure/storage-blob": ">=12.28.0",
288
+ "@bunny.net/storage-sdk": ">=0.3.0",
289
+ "@googleapis/drive": ">=20.0.0",
290
+ "@microsoft/microsoft-graph-client": ">=3.0.0",
206
291
  "@netlify/blobs": ">=10.3.1",
207
292
  "@nuxt/kit": ">=4.2.1",
293
+ "@openai/agents": ">=0.11.0",
208
294
  "@opentelemetry/api": ">=1.9.0",
209
295
  "@solidjs/start": ">=1.1.0",
210
- "@vercel/blob": ">=2.0.0",
296
+ "@supabase/storage-js": ">=2.105.0",
297
+ "@tanstack/ai": ">=0.16.0",
298
+ "@vercel/blob": ">=2.4.0",
299
+ "ai": ">=5.0.0",
211
300
  "aws-crt": ">=1.27.3",
212
301
  "aws4fetch": ">=1.0.0",
302
+ "basic-ftp": ">=5.0.0",
303
+ "box-typescript-sdk-gen": ">=1.19.0",
304
+ "cloudinary": ">=2.0.0",
305
+ "dropbox": ">=10.34.0",
306
+ "firebase-admin": ">=10.0.0",
213
307
  "gaxios": ">=7.1.2",
214
308
  "google-auth-library": ">=10.4.0",
215
309
  "hono": ">=4.0.0",
216
310
  "mediabunny": ">=1.23.0",
217
311
  "next": ">=15",
218
- "sharp": ">=0.33.5"
312
+ "openai": ">=5.0.0",
313
+ "pocketbase": ">=0.23.0",
314
+ "sharp": ">=0.34.5",
315
+ "ssh2-sftp-client": ">=11.0.0",
316
+ "uploadthing": ">=7.0.0"
219
317
  },
220
318
  "peerDependenciesMeta": {
319
+ "@anthropic-ai/claude-agent-sdk": {
320
+ "optional": true
321
+ },
221
322
  "@aws-sdk/client-s3": {
222
323
  "optional": true
223
324
  },
@@ -233,30 +334,69 @@
233
334
  "@aws-sdk/types": {
234
335
  "optional": true
235
336
  },
337
+ "@azure/core-auth": {
338
+ "optional": true
339
+ },
236
340
  "@azure/storage-blob": {
237
341
  "optional": true
238
342
  },
343
+ "@bunny.net/storage-sdk": {
344
+ "optional": true
345
+ },
346
+ "@googleapis/drive": {
347
+ "optional": true
348
+ },
349
+ "@microsoft/microsoft-graph-client": {
350
+ "optional": true
351
+ },
239
352
  "@netlify/blobs": {
240
353
  "optional": true
241
354
  },
242
355
  "@nuxt/kit": {
243
356
  "optional": true
244
357
  },
358
+ "@openai/agents": {
359
+ "optional": true
360
+ },
245
361
  "@opentelemetry/api": {
246
362
  "optional": true
247
363
  },
248
364
  "@solidjs/start": {
249
365
  "optional": true
250
366
  },
367
+ "@supabase/storage-js": {
368
+ "optional": true
369
+ },
370
+ "@tanstack/ai": {
371
+ "optional": true
372
+ },
251
373
  "@vercel/blob": {
252
374
  "optional": true
253
375
  },
376
+ "ai": {
377
+ "optional": true
378
+ },
254
379
  "aws-crt": {
255
380
  "optional": true
256
381
  },
257
382
  "aws4fetch": {
258
383
  "optional": true
259
384
  },
385
+ "basic-ftp": {
386
+ "optional": true
387
+ },
388
+ "box-typescript-sdk-gen": {
389
+ "optional": true
390
+ },
391
+ "cloudinary": {
392
+ "optional": true
393
+ },
394
+ "dropbox": {
395
+ "optional": true
396
+ },
397
+ "firebase-admin": {
398
+ "optional": true
399
+ },
260
400
  "gaxios": {
261
401
  "optional": true
262
402
  },
@@ -272,13 +412,24 @@
272
412
  "next": {
273
413
  "optional": true
274
414
  },
415
+ "openai": {
416
+ "optional": true
417
+ },
418
+ "pocketbase": {
419
+ "optional": true
420
+ },
275
421
  "sharp": {
276
422
  "optional": true
423
+ },
424
+ "ssh2-sftp-client": {
425
+ "optional": true
426
+ },
427
+ "uploadthing": {
428
+ "optional": true
277
429
  }
278
430
  },
279
- "optionalDependencies": {},
280
431
  "engines": {
281
- "node": ">=22.13 <=25.x"
432
+ "node": "^22.14.0 || >=24.10.0"
282
433
  },
283
434
  "publishConfig": {
284
435
  "access": "public",