@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,32 +0,0 @@
1
- import MetaStorage from "../meta-storage.d.ts";
2
- import type { MetaStorageOptions } from "../types.d.ts";
3
- import type { File } from "../utils/index.d.ts";
4
- /**
5
- * Stores upload metafiles on local disk
6
- */
7
- declare class LocalMetaStorage<T extends File = File> extends MetaStorage<T> {
8
- readonly directory: string;
9
- constructor(config?: LocalMetaStorageOptions);
10
- /**
11
- * Returns metafile path.
12
- * @param id upload id
13
- */
14
- getMetaPath: (id: string) => string;
15
- /**
16
- * Returns upload id from metafile path.
17
- * @internal
18
- */
19
- getIdFromPath: (metaFilePath: string) => string;
20
- save(id: string, file: T): Promise<T>;
21
- touch(id: string, file: T): Promise<T>;
22
- get(id: string): Promise<T>;
23
- delete(id: string): Promise<void>;
24
- private accessCheck;
25
- }
26
- export interface LocalMetaStorageOptions extends MetaStorageOptions {
27
- /**
28
- * Where the upload metadata should be stored
29
- */
30
- directory?: string;
31
- }
32
- export default LocalMetaStorage;
@@ -1,30 +0,0 @@
1
- import type { MetaStorageOptions } from "./types.d.ts";
2
- import type { File } from "./utils/index.d.ts";
3
- /**
4
- * Stores upload metadata.
5
- */
6
- declare class MetaStorage<T extends File = File> {
7
- prefix: string;
8
- suffix: string;
9
- protected readonly logger?: Console;
10
- constructor(config?: MetaStorageOptions);
11
- /**
12
- * Saves upload metadata.
13
- */
14
- save(_id: string, file: T): Promise<T>;
15
- /**
16
- * Deletes an upload metadata.
17
- */
18
- delete(_id: string): Promise<void>;
19
- /**
20
- * Retrieves upload metadata.
21
- */
22
- get(_id: string): Promise<T>;
23
- /**
24
- * Marks upload active.
25
- */
26
- touch(_id: string, _file: T): Promise<T>;
27
- getMetaName(id: string): string;
28
- getIdFromMetaName(name: string): string;
29
- }
30
- export default MetaStorage;
@@ -1,12 +0,0 @@
1
- import { File } from "../utils/index.d.ts";
2
- declare class NetlifyBlobFile extends File {
3
- /**
4
- * The blob's public URL
5
- */
6
- url?: string;
7
- /**
8
- * The blob's pathname within the store
9
- */
10
- pathname?: string;
11
- }
12
- export default NetlifyBlobFile;
@@ -1,7 +0,0 @@
1
- import type { LocalMetaStorageOptions } from "../local/local-meta-storage.d.ts";
2
- import LocalMetaStorage from "../local/local-meta-storage.d.ts";
3
- import type NetlifyBlobFile from "./netlify-blob-file.d.ts";
4
- declare class NetlifyBlobMetaStorage extends LocalMetaStorage<NetlifyBlobFile> {
5
- constructor(config?: LocalMetaStorageOptions);
6
- }
7
- export default NetlifyBlobMetaStorage;
@@ -1,93 +0,0 @@
1
- import type MetaStorage from "../meta-storage.d.ts";
2
- import { BaseStorage } from "../storage.d.ts";
3
- import type { FileInit, FilePart, FileQuery, FileReturn } from "../utils/index.d.ts";
4
- import NetlifyBlobFile from "./netlify-blob-file.d.ts";
5
- import type { NetlifyBlobStorageOptions } from "./types.d.ts";
6
- /**
7
- * Netlify Blob storage based backend.
8
- * @example
9
- * ```ts
10
- * const storage = new NetlifyBlobStorage({
11
- * storeName: 'uploads',
12
- * metaStorageConfig: { directory: '/tmp/upload-metafiles' }
13
- * });
14
- * ```
15
- * @remarks
16
- * ## Supported Operations
17
- * - ✅ create, write, delete, get, list, copy, move
18
- * - ✅ Batch operations: deleteBatch, copyBatch, moveBatch (inherited from BaseStorage)
19
- * - ✅ exists: Implemented (checks metadata and Netlify Blob)
20
- * - ✅ update: Implemented (updates metadata file, Netlify Blob API doesn't support blob metadata updates)
21
- * - ❌ getStream: Not implemented (use get() for file retrieval)
22
- * - ❌ getUrl: Not implemented (Netlify Blob URLs available via Netlify Blob API)
23
- * - ❌ getUploadUrl: Not implemented (Netlify Blob upload URLs handled internally)
24
- */
25
- declare class NetlifyBlobStorage extends BaseStorage<NetlifyBlobFile, FileReturn> {
26
- static readonly name: string;
27
- checksumTypes: string[];
28
- protected meta: MetaStorage<NetlifyBlobFile>;
29
- private readonly storeName;
30
- private readonly siteID?;
31
- private readonly token?;
32
- private store;
33
- private readonly retry;
34
- constructor(config: NetlifyBlobStorageOptions);
35
- create(config: FileInit): Promise<NetlifyBlobFile>;
36
- write(part: FilePart | FileQuery | NetlifyBlobFile): Promise<NetlifyBlobFile>;
37
- /**
38
- * Deletes an upload and its metadata.
39
- * @param query File query containing the file ID to delete.
40
- * @param query.id File ID to delete.
41
- * @returns Promise resolving to the deleted file object with status: "deleted".
42
- * @throws {UploadError} If the file metadata cannot be found.
43
- */
44
- delete({ id }: FileQuery): Promise<NetlifyBlobFile>;
45
- /**
46
- * Checks if a file exists by verifying both metadata and the actual Netlify Blob.
47
- * Returns true only if both the metadata and the blob exist.
48
- * @param query File query containing the file ID to check.
49
- * @returns Promise resolving to true if both metadata and blob exist, false otherwise.
50
- */
51
- exists({ id }: FileQuery): Promise<boolean>;
52
- get({ id }: FileQuery): Promise<FileReturn>;
53
- /**
54
- * Copies an upload file to a new location.
55
- * @param name Source file name/ID.
56
- * @param destination Destination file name/ID.
57
- * @returns Promise resolving to the copied file object.
58
- * @throws {UploadError} If the source file cannot be found.
59
- */
60
- copy(name: string, destination: string): Promise<NetlifyBlobFile>;
61
- /**
62
- * Moves an upload file to a new location.
63
- * @param name Source file name/ID.
64
- * @param destination Destination file name/ID.
65
- * @returns Promise resolving to the moved file object.
66
- * @throws {UploadError} If the source file cannot be found.
67
- */
68
- move(name: string, destination: string): Promise<NetlifyBlobFile>;
69
- /**
70
- * Updates file metadata with user-provided key-value pairs.
71
- * Updates the metadata file (overwrites it) but does not update Netlify Blob metadata
72
- * since the Netlify Blob API doesn't support metadata updates.
73
- * @param query File query containing the file ID to update.
74
- * @param query.id File ID to update.
75
- * @param metadata Partial file object containing fields to update.
76
- * @returns Promise resolving to the updated file object.
77
- * @throws {UploadError} If the file cannot be found (ERRORS.FILE_NOT_FOUND).
78
- * @remarks
79
- * Supports TTL (time-to-live) option: if metadata contains a 'ttl' field,
80
- * it will be converted to an 'expiredAt' timestamp.
81
- * TTL can be a number (milliseconds) or string (e.g., "1h", "30m", "7d").
82
- */
83
- update({ id }: FileQuery, metadata: Partial<NetlifyBlobFile>): Promise<NetlifyBlobFile>;
84
- list(limit?: number): Promise<NetlifyBlobFile[]>;
85
- private internalOnComplete;
86
- /**
87
- * Generate a URL for a blob in Netlify Blob store
88
- * Note: Netlify Blob doesn't provide direct public URLs like Vercel Blob
89
- * In production, you would typically serve these through Netlify Functions or Edge Functions
90
- */
91
- private getBlobUrl;
92
- }
93
- export default NetlifyBlobStorage;
@@ -1,30 +0,0 @@
1
- import type { LocalMetaStorageOptions } from "../local/local-meta-storage.d.ts";
2
- import type { BaseStorageOptions } from "../types.d.ts";
3
- import type NetlifyBlobFile from "./netlify-blob-file.d.ts";
4
- export interface NetlifyBlobStorageOptions extends BaseStorageOptions<NetlifyBlobFile> {
5
- /**
6
- * Configure metafiles storage
7
- * @example
8
- * Using local metafiles
9
- * ```ts
10
- * const storage = new NetlifyBlobStorage({
11
- * storeName: 'uploads',
12
- * metaStorageConfig: { directory: '/tmp/upload-metafiles' }
13
- * })
14
- * ```
15
- */
16
- metaStorageConfig?: LocalMetaStorageOptions;
17
- /**
18
- * Netlify site ID (optional, used for explicit store access)
19
- */
20
- siteID?: string;
21
- /**
22
- * Netlify Blob store name
23
- * @default 'default'
24
- */
25
- storeName?: string;
26
- /**
27
- * Netlify API token (optional, can use environment variable NETLIFY_TOKEN)
28
- */
29
- token?: string;
30
- }
@@ -1,353 +0,0 @@
1
- import { Readable } from "node:stream";
2
- import type { Cache } from "../utils/cache.d.ts";
3
- import type { ErrorResponses } from "../utils/errors.d.ts";
4
- import Locker from "../utils/locker.d.ts";
5
- import type { HttpError, Metrics } from "../utils/types.d.ts";
6
- import { Validator } from "../utils/validator.d.ts";
7
- import type MetaStorage from "./meta-storage.d.ts";
8
- import type { BaseStorageOptions, BatchOperationResponse, PurgeList } from "./types.d.ts";
9
- import type { File, FileInit, FilePart, FileQuery } from "./utils/index.d.ts";
10
- import type { FileReturn } from "./utils/file/types.d.ts";
11
- /**
12
- * Default filename validation for cloud storage platforms.
13
- * Permissive validation that only blocks dangerous patterns (path traversal, null bytes).
14
- * Cloud storage platforms (S3, Azure, GCS) accept most special characters and handle URL encoding automatically.
15
- */
16
- export declare const defaultCloudStorageFileNameValidation: (name: string) => boolean;
17
- /**
18
- * Default filename validation for local filesystems.
19
- * Stricter validation that blocks filesystem-incompatible characters.
20
- */
21
- export declare const defaultFilesystemFileNameValidation: (name: string) => boolean;
22
- /**
23
- * Abstract base class for all storage backends.
24
- * @template TFile The file type used by this storage backend.
25
- * @template TFileReturn The return type for file retrieval operations.
26
- * @remarks
27
- * ## Error Handling
28
- *
29
- * All storage operations follow consistent error handling patterns:
30
- * - Operations throw `UploadError` with specific error codes (see ERRORS enum)
31
- * - Common error codes: FILE_NOT_FOUND, GONE (expired), FILE_LOCKED, STORAGE_BUSY
32
- * - Errors are normalized with storage class context via `normalizeError()`
33
- * - Batch operations capture individual failures without stopping the batch
34
- *
35
- * ## Retry Behavior
36
- *
37
- * Storage implementations handle retries differently:
38
- *
39
- * ### Cloud Storage (S3, GCS, Azure, Netlify Blob)
40
- * - Use configurable retry wrappers via `retryConfig` option
41
- * - Default retryable status codes: 408, 429, 500, 502, 503, 504
42
- * - Retry logic handles transient network errors and rate limiting
43
- * - Custom `shouldRetry` functions can be provided for advanced retry logic
44
- *
45
- * ### Local Storage (DiskStorage)
46
- * - No automatic retries (filesystem operations are typically immediate)
47
- * - Errors are thrown directly for immediate feedback
48
- *
49
- * ## Operation Instrumentation
50
- *
51
- * All public operations are automatically instrumented via `instrumentOperation()`:
52
- * - Metrics are recorded for operation count, duration, and errors
53
- * - File sizes are tracked for operations that return file objects
54
- * - Error metrics include error messages for debugging
55
- *
56
- * ## Metadata Caching
57
- *
58
- * File metadata is automatically cached to reduce storage API calls:
59
- * - Cache is updated on save, delete, and get operations
60
- * - Cache is invalidated when metadata is deleted
61
- * - Implementations can override caching behavior if needed
62
- */
63
- export declare abstract class BaseStorage<TFile extends File = File, TFileReturn extends FileReturn = FileReturn> {
64
- /**
65
- * Hook called when a new file is created.
66
- * @param file The newly created file object.
67
- * @remarks This hook is called after file metadata is saved but before returning the file.
68
- * Can be used for side effects like logging, notifications, or custom processing.
69
- */
70
- onCreate: (file: TFile) => Promise<void> | void;
71
- /**
72
- * Hook called when file metadata is updated.
73
- * @param file The updated file object.
74
- * @remarks This hook is called after metadata is updated and saved.
75
- * Can be used for side effects like logging or custom processing.
76
- */
77
- onUpdate: (file: TFile) => Promise<void> | void;
78
- /**
79
- * Hook called when a file upload is completed.
80
- * @param file The completed file object.
81
- * @param response The response object that can be modified in place (headers, statusCode, body).
82
- * @param request Optional request object for additional context.
83
- * @remarks This hook is called when file status becomes "completed".
84
- * The response object can be modified directly to add headers or change the status code.
85
- */
86
- onComplete: (file: TFile, response: unknown, request?: unknown) => Promise<void> | void;
87
- /**
88
- * Hook called when a file is deleted.
89
- * @param file The deleted file object.
90
- * @remarks This hook is called after the file is deleted but before returning.
91
- * Can be used for side effects like cleanup or logging.
92
- */
93
- onDelete: (file: TFile) => Promise<void> | void;
94
- /**
95
- * Hook called when an error occurs during storage operations.
96
- * @param error The HTTP error object that can be modified in place.
97
- * @remarks This hook allows customizing error responses by modifying the error object.
98
- * The error object can be modified to change headers, statusCode, or body properties.
99
- * Error formatting happens in handlers after this hook is called.
100
- */
101
- onError: (error: HttpError) => Promise<void> | void;
102
- isReady: boolean;
103
- errorResponses: ErrorResponses;
104
- cache: Cache<string, TFile>;
105
- readonly logger?: Console;
106
- readonly metrics: Metrics;
107
- readonly genericConfig: BaseStorageOptions<TFile>;
108
- maxMetadataSize: number;
109
- checksumTypes: string[];
110
- maxUploadSize: number;
111
- protected expiration?: {
112
- maxAge?: string | number;
113
- purgeInterval?: string | number;
114
- rolling?: boolean;
115
- };
116
- protected locker: Locker;
117
- protected namingFunction: (file: TFile) => string;
118
- protected validation: Validator<TFile>;
119
- protected abstract meta: MetaStorage<TFile>;
120
- protected assetFolder: string | undefined;
121
- /**
122
- * Limits the number of concurrent upload requests
123
- */
124
- protected concurrency?: number;
125
- protected constructor(config: BaseStorageOptions<TFile>);
126
- get tusExtension(): string[];
127
- /**
128
- * Validates a file against configured validation rules.
129
- * @param file File object to validate.
130
- * @returns Promise resolving to undefined if file is valid, throws ValidationError otherwise.
131
- * @throws {ValidationError} If validation fails
132
- */
133
- validate(file: TFile): Promise<void>;
134
- /**
135
- * Checks if a file exists by querying its metadata.
136
- * @param query File query containing the file ID to check.
137
- * @param query.id File ID to check.
138
- * @returns Promise resolving to true if file exists, false otherwise.
139
- * @remarks This method does not throw errors - it returns false if the file is not found.
140
- */
141
- exists(query: FileQuery): Promise<boolean>;
142
- /**
143
- * Normalizes errors with storage-specific context.
144
- * @param error The error to normalize.
145
- * @returns Normalized HTTP error with storage class context added to the message.
146
- * @remarks Errors are enhanced with the storage class name for better debugging.
147
- */
148
- normalizeError(error: Error): HttpError;
149
- /**
150
- * Gets the storage configuration.
151
- * @returns The current storage configuration options.
152
- */
153
- get config(): BaseStorageOptions<TFile>;
154
- /**
155
- * Saves upload metadata to the metadata storage.
156
- * @param file File object containing metadata to save.
157
- * @returns Promise resolving to the saved file object.
158
- * @remarks Updates timestamps and caches the file metadata.
159
- */
160
- saveMeta(file: TFile): Promise<TFile>;
161
- /**
162
- * Deletes upload metadata from the metadata storage.
163
- * @param id File ID whose metadata should be deleted.
164
- * @returns Promise resolving when metadata is deleted.
165
- * @remarks Also removes the file from the cache.
166
- */
167
- deleteMeta(id: string): Promise<void>;
168
- /**
169
- * Retrieves upload metadata by file ID.
170
- * @param id File ID to retrieve metadata for.
171
- * @returns Promise resolving to the file metadata object.
172
- * @throws {UploadError} If the file metadata cannot be found (ERRORS.FILE_NOT_FOUND).
173
- * @remarks Caches the retrieved metadata for faster subsequent access.
174
- */
175
- getMeta(id: string): Promise<TFile>;
176
- /**
177
- * Checks if a file has expired and deletes it if so.
178
- * @param file File object to check for expiration.
179
- * @returns Promise resolving to the file object if not expired.
180
- * @throws {UploadError} If the file has expired (ERRORS.GONE).
181
- * @remarks If the file is expired, it is automatically deleted and the metadata is removed.
182
- */
183
- checkIfExpired(file: TFile): Promise<TFile>;
184
- /**
185
- * Searches for and purges expired uploads.
186
- * @param maxAge Maximum age of files to keep (files older than this will be purged).
187
- * Can be a number (milliseconds) or string (e.g., "1h", "30m", "7d").
188
- * If not provided, uses the expiration.maxAge from configuration.
189
- * @returns Promise resolving to a list of purged files.
190
- * @remarks
191
- * Errors during individual file deletions are logged but do not stop the purge process.
192
- * Files with corrupted metadata are skipped with a warning.
193
- * Uses rolling expiration if configured (based on modifiedAt) or fixed expiration (based on createdAt).
194
- */
195
- purge(maxAge?: number | string): Promise<PurgeList>;
196
- /**
197
- * Gets an uploaded file by ID.
198
- * @param query File query containing the file ID to retrieve.
199
- * @param query.id File ID to retrieve.
200
- * @returns Promise resolving to the file data including content.
201
- * @throws {UploadError} If the file cannot be found (ERRORS.FILE_NOT_FOUND) or has expired (ERRORS.GONE).
202
- * @remarks This method loads the entire file content into memory. For large files, use getStream() instead.
203
- */
204
- abstract get({ id }: FileQuery): Promise<TFileReturn>;
205
- /**
206
- * Gets an uploaded file as a readable stream for efficient large file handling.
207
- * @param query File query containing the file ID to stream.
208
- * @param query.id File ID to stream.
209
- * @returns Promise resolving to an object containing the stream, headers, and size.
210
- * @throws {UploadError} If the file cannot be found (ERRORS.FILE_NOT_FOUND) or has expired (ERRORS.GONE).
211
- * @remarks
212
- * Default implementation falls back to get() and creates a stream from the buffer.
213
- * Storage implementations should override this for better streaming performance.
214
- * Headers include Content-Type, Content-Length, ETag, and Last-Modified.
215
- */
216
- getStream({ id }: FileQuery): Promise<{
217
- headers?: Record<string, string>;
218
- size?: number;
219
- stream: Readable;
220
- }>;
221
- /**
222
- * Retrieves a list of uploaded files.
223
- * @param _limit Maximum number of files to return (default: 1000).
224
- * @returns Promise resolving to an array of file metadata objects.
225
- * @throws {Error} If not implemented by the storage backend.
226
- * @remarks Storage implementations must override this method.
227
- */
228
- list(_limit?: number): Promise<TFile[]>;
229
- /**
230
- * Updates file metadata with user-provided key-value pairs.
231
- * @param query File query containing the file ID to update.
232
- * @param query.id File ID to update.
233
- * @param metadata Partial file object containing fields to update.
234
- * @returns Promise resolving to the updated file object.
235
- * @throws {UploadError} If the file cannot be found (ERRORS.FILE_NOT_FOUND).
236
- * @remarks
237
- * Supports TTL (time-to-live) option: if metadata contains a 'ttl' field,
238
- * it will be converted to an 'expiredAt' timestamp.
239
- * TTL can be a number (milliseconds) or string (e.g., "1h", "30m", "7d").
240
- */
241
- update({ id }: FileQuery, metadata: Partial<File>): Promise<TFile>;
242
- /**
243
- * Creates a new upload and saves its metadata.
244
- * @param file File initialization configuration.
245
- * @returns Promise resolving to the created file object.
246
- */
247
- abstract create(file: FileInit): Promise<TFile>;
248
- /**
249
- * Writes part and/or returns status of an upload.
250
- * @param part File part, query, or full file object to write.
251
- * @returns Promise resolving to the updated file object.
252
- */
253
- abstract write(part: FilePart | FileQuery | TFile): Promise<TFile>;
254
- /**
255
- * Deletes an upload and its metadata.
256
- * @param query File query containing the file ID to delete.
257
- * @param query.id File ID to delete.
258
- * @returns Promise resolving to the deleted file object with status: "deleted".
259
- * @throws {UploadError} If the file metadata cannot be found.
260
- */
261
- abstract delete(query: FileQuery): Promise<TFile>;
262
- /**
263
- * Copies an upload file to a new location.
264
- * @param name Source file name/ID.
265
- * @param destination Destination file name/ID.
266
- * @param options Optional copy options including storage class.
267
- * @returns Promise resolving to the copied file object.
268
- * @throws {UploadError} If the source file cannot be found.
269
- */
270
- abstract copy(name: string, destination: string, options?: {
271
- storageClass?: string;
272
- }): Promise<TFile>;
273
- /**
274
- * Moves an upload file to a new location.
275
- * @param name Source file name/ID.
276
- * @param destination Destination file name/ID.
277
- * @returns Promise resolving to the moved file object.
278
- * @throws {UploadError} If the source file cannot be found.
279
- */
280
- abstract move(name: string, destination: string): Promise<TFile>;
281
- /**
282
- * Deletes multiple files in a single batch operation.
283
- * @param ids Array of file IDs to delete.
284
- * @returns Promise resolving to batch operation response with successful and failed deletions.
285
- * @remarks
286
- * Processes all deletions in parallel using Promise.allSettled.
287
- * Individual failures do not stop the batch operation.
288
- * Each deletion is wrapped in error handling to capture failures.
289
- * Metrics are recorded for the batch operation and individual failures.
290
- * Returns both successful and failed operations with detailed error information.
291
- */
292
- deleteBatch(ids: string[]): Promise<BatchOperationResponse<TFile>>;
293
- /**
294
- * Copies multiple files in a single batch operation.
295
- * @param operations Array of copy operations, each containing:
296
- * source: Source file ID.
297
- * destination: Destination file ID or path.
298
- * options: Optional copy options including storage class.
299
- * @returns Promise resolving to batch operation response with successful and failed copies.
300
- * @remarks
301
- * Processes all copies in parallel using Promise.allSettled.
302
- * Individual failures do not stop the batch operation.
303
- * Each copy operation is wrapped in error handling to capture failures.
304
- * Metrics are recorded for the batch operation and individual failures.
305
- * Returns both successful and failed operations with detailed error information.
306
- */
307
- copyBatch(operations: {
308
- destination: string;
309
- options?: {
310
- storageClass?: string;
311
- };
312
- source: string;
313
- }[]): Promise<BatchOperationResponse<TFile>>;
314
- /**
315
- * Moves multiple files in a single batch operation.
316
- * @param operations Array of move operations, each containing:
317
- * source: Source file ID.
318
- * destination: Destination file ID or path.
319
- * @returns Promise resolving to batch operation response with successful and failed moves.
320
- * @remarks
321
- * Processes all moves in parallel using Promise.allSettled.
322
- * Individual failures do not stop the batch operation.
323
- * Each move operation is wrapped in error handling to capture failures.
324
- * Metrics are recorded for the batch operation and individual failures.
325
- * Returns both successful and failed operations with detailed error information.
326
- */
327
- moveBatch(operations: {
328
- destination: string;
329
- source: string;
330
- }[]): Promise<BatchOperationResponse<TFile>>;
331
- /**
332
- * Prevent upload from being accessed by multiple requests
333
- */
334
- protected lock(key: string): Promise<string>;
335
- protected unlock(key: string): Promise<void>;
336
- protected isUnsupportedChecksum(algorithm?: string): boolean;
337
- protected startAutoPurge(purgeInterval: number): void;
338
- protected updateTimestamps(file: TFile): TFile;
339
- /**
340
- * Instruments a storage operation with metrics and error tracking.
341
- * @param operation Operation name (e.g., "create", "delete", "copy").
342
- * @param function_ The operation function to execute.
343
- * @param attributes Additional attributes to include in metrics.
344
- * @returns Promise resolving to the operation result.
345
- * @throws Re-throws any errors from the operation function.
346
- * @remarks
347
- * Records operation count, duration, and error metrics.
348
- * Tracks file sizes for operations returning file objects.
349
- * Error metrics include error messages for debugging.
350
- * All public methods should use this wrapper for consistent instrumentation.
351
- */
352
- protected instrumentOperation<T>(operation: string, function_: () => Promise<T>, attributes?: Record<string, string | number>): Promise<T>;
353
- }