@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,267 +0,0 @@
1
- import { c as createHttpError } from './headers-DoS5nwM-.js';
2
- import { ERRORS } from './ERRORS-D0apMqnc.js';
3
- import { b as getRequestStream } from './base-handler-core-BKuf4YLT.js';
4
- import { B as BaseHandlerFetch } from './base-handler-fetch-Cr0hLiqg.js';
5
- import { R as RestBase, c as parseContentDispositionValue } from './rest-base-GRCcnan7.js';
6
-
7
- class RestFetch extends BaseHandlerFetch {
8
- /**
9
- * Limiting enabled http method handler
10
- */
11
- static methods = ["delete", "download", "get", "head", "options", "patch", "post", "put"];
12
- restBase;
13
- constructor(options) {
14
- super(options);
15
- const restInstance = this;
16
- this.restBase = new class extends RestBase {
17
- // eslint-disable-next-line class-methods-use-this
18
- get storage() {
19
- return restInstance.storage;
20
- }
21
- // eslint-disable-next-line class-methods-use-this
22
- buildFileUrl(requestUrl, file) {
23
- return restInstance.buildFileUrl({ url: requestUrl }, file);
24
- }
25
- }();
26
- }
27
- /**
28
- * Compose and register HTTP method handlers.
29
- */
30
- compose() {
31
- this.registeredHandlers.set("POST", this.post.bind(this));
32
- this.registeredHandlers.set("PUT", this.put.bind(this));
33
- this.registeredHandlers.set("PATCH", this.patch.bind(this));
34
- this.registeredHandlers.set("DELETE", this.delete.bind(this));
35
- this.registeredHandlers.set("HEAD", this.head.bind(this));
36
- this.registeredHandlers.set("GET", this.get.bind(this));
37
- this.registeredHandlers.set("OPTIONS", this.options.bind(this));
38
- this.logger?.debug("Registered handler: %s", [...this.registeredHandlers.keys()].join(", "));
39
- }
40
- /**
41
- * Creates a new file via POST request with raw binary data.
42
- * Supports both full file uploads and chunked upload initialization.
43
- * @param request Web API Request with file data.
44
- * @returns Promise resolving to ResponseFile with upload result.
45
- */
46
- async post(request) {
47
- const isChunkedUpload = request.headers.get("x-chunked-upload") === "true";
48
- const contentLengthHeader = request.headers.get("content-length");
49
- const contentLength = contentLengthHeader ? Number.parseInt(contentLengthHeader, 10) : 0;
50
- if (!isChunkedUpload) {
51
- if (!contentLengthHeader || Number.isNaN(contentLength) || contentLength === 0) {
52
- throw createHttpError(400, "Content-Length is required and must be greater than 0");
53
- }
54
- if (request.body === null) {
55
- throw createHttpError(400, "Request body is required");
56
- }
57
- }
58
- if (contentLength > this.storage.maxUploadSize) {
59
- throw createHttpError(413, `File size exceeds maximum allowed size of ${this.storage.maxUploadSize} bytes`);
60
- }
61
- const contentType = request.headers.get("content-type") || "application/octet-stream";
62
- const config = extractFileInitFromRequest(request, contentLength, contentType);
63
- const requestUrl = request.url;
64
- const bodyStream = request.body ? getRequestStream(request) : void 0;
65
- return this.restBase.handlePost(config, isChunkedUpload, requestUrl, bodyStream, contentLength);
66
- }
67
- /**
68
- * Create or update a file via PUT request.
69
- * Requires file ID in the URL path.
70
- * @param request Web API Request with file ID and data
71
- * @returns Promise resolving to ResponseFile with upload result
72
- */
73
- async put(request) {
74
- const id = getIdFromRequestUrl(request.url);
75
- if (!id) {
76
- throw createHttpError(400, "File ID is required in URL path");
77
- }
78
- if (request.body === null) {
79
- throw createHttpError(400, "Request body is required");
80
- }
81
- const contentLengthHeader = request.headers.get("content-length");
82
- const contentLength = contentLengthHeader ? Number.parseInt(contentLengthHeader, 10) : 0;
83
- if (contentLength === 0) {
84
- throw createHttpError(400, "Content-Length is required and must be greater than 0");
85
- }
86
- if (contentLength > this.storage.maxUploadSize) {
87
- throw createHttpError(413, `File size exceeds maximum allowed size of ${this.storage.maxUploadSize} bytes`);
88
- }
89
- const contentType = request.headers.get("content-type") || "application/octet-stream";
90
- const metadataHeader = request.headers.get("x-file-metadata");
91
- let metadata;
92
- if (metadataHeader) {
93
- try {
94
- metadata = JSON.parse(metadataHeader);
95
- } catch {
96
- }
97
- }
98
- const originalName = parseContentDispositionValue(request.headers.get("content-disposition"));
99
- const config = {
100
- contentType,
101
- metadata: metadata || {},
102
- originalName,
103
- size: contentLength
104
- };
105
- const requestUrl = request.url;
106
- const bodyStream = getRequestStream(request);
107
- return this.restBase.handlePut(id, config, requestUrl, bodyStream, contentLength, metadata);
108
- }
109
- /**
110
- * Delete an uploaded file or multiple files.
111
- * Supports single file (ID in URL) or batch delete (via ?ids=id1,id2 or JSON body).
112
- * @param request Web API Request with file ID(s)
113
- * @returns Promise resolving to ResponseFile (single) or ResponseList (batch) with deletion result
114
- */
115
- async delete(request) {
116
- const url = new URL(request.url);
117
- const idsParameter = url.searchParams.get("ids");
118
- if (idsParameter) {
119
- const ids = idsParameter.split(",").map((id2) => id2.trim()).filter(Boolean);
120
- if (ids.length === 0) {
121
- throw createHttpError(400, "No file IDs provided");
122
- }
123
- return this.restBase.deleteBatch(ids);
124
- }
125
- const contentType = request.headers.get("content-type") || "";
126
- if (contentType.includes("application/json")) {
127
- try {
128
- const body = await request.text();
129
- const parsed = JSON.parse(body);
130
- if (Array.isArray(parsed)) {
131
- if (parsed.length === 0) {
132
- throw createHttpError(400, "No file IDs provided");
133
- }
134
- return this.restBase.deleteBatch(parsed);
135
- }
136
- if (typeof parsed === "object" && parsed !== null && "ids" in parsed && Array.isArray(parsed.ids)) {
137
- const idsArray = parsed.ids;
138
- if (idsArray.length === 0) {
139
- throw createHttpError(400, "No file IDs provided");
140
- }
141
- return this.restBase.deleteBatch(idsArray);
142
- }
143
- } catch (error) {
144
- if (error.statusCode === 400) {
145
- throw error;
146
- }
147
- }
148
- }
149
- const id = getIdFromRequestUrl(request.url);
150
- if (!id) {
151
- throw createHttpError(404, "File not found");
152
- }
153
- try {
154
- return this.restBase.deleteSingle(id);
155
- } catch (error) {
156
- const errorWithCode = error;
157
- if (errorWithCode.UploadErrorCode === ERRORS.FILE_NOT_FOUND || errorWithCode.code === "ENOENT") {
158
- throw createHttpError(404, "File not found");
159
- }
160
- throw error;
161
- }
162
- }
163
- /**
164
- * Uploads a chunk via PATCH request for chunked uploads.
165
- * Headers required: X-Chunk-Offset (byte offset), Content-Length (chunk size).
166
- * Optional: X-Chunk-Checksum (SHA256 checksum for validation).
167
- * @param request Web API Request with chunk data.
168
- * @returns Promise resolving to ResponseFile with upload progress.
169
- */
170
- async patch(request) {
171
- const id = getIdFromRequestUrl(request.url);
172
- if (!id) {
173
- throw createHttpError(404, "File not found");
174
- }
175
- if (request.body === null) {
176
- throw createHttpError(400, "Request body is required");
177
- }
178
- const contentLengthHeader = request.headers.get("content-length");
179
- const contentLength = contentLengthHeader ? Number.parseInt(contentLengthHeader, 10) : 0;
180
- if (contentLength === 0) {
181
- throw createHttpError(400, "Content-Length is required and must be greater than 0");
182
- }
183
- const chunkOffsetHeader = request.headers.get("x-chunk-offset");
184
- const chunkOffset = chunkOffsetHeader ? Number.parseInt(chunkOffsetHeader, 10) : void 0;
185
- if (chunkOffset === void 0) {
186
- throw createHttpError(400, "X-Chunk-Offset header is required");
187
- }
188
- const chunkChecksum = request.headers.get("x-chunk-checksum") || void 0;
189
- const requestUrl = request.url;
190
- const bodyStream = getRequestStream(request);
191
- return this.restBase.handlePatch(id, chunkOffset, contentLength, chunkChecksum, requestUrl, bodyStream);
192
- }
193
- /**
194
- * Get file metadata via HEAD request.
195
- * For chunked uploads, also returns upload progress information.
196
- * @param request Web API Request with file ID
197
- * @returns Promise resolving to ResponseFile with metadata headers
198
- */
199
- async head(request) {
200
- const id = getIdFromRequestUrl(request.url);
201
- if (!id) {
202
- throw createHttpError(404, "File not found");
203
- }
204
- try {
205
- return this.restBase.handleHead(id);
206
- } catch (error) {
207
- const errorWithCode = error;
208
- if (errorWithCode.UploadErrorCode === ERRORS.FILE_NOT_FOUND || errorWithCode.code === "ENOENT") {
209
- throw createHttpError(404, "File not found");
210
- }
211
- throw error;
212
- }
213
- }
214
- /**
215
- * Handle OPTIONS requests with REST API capabilities.
216
- * @param _request Web API Request
217
- * @returns Promise resolving to ResponseFile with CORS headers
218
- */
219
- async options(_request) {
220
- return this.restBase.handleOptions(RestFetch.methods, this.storage.maxUploadSize);
221
- }
222
- /**
223
- * Retrieves a file or list of files based on the request path.
224
- * Delegates to BaseHandlerFetch.fetch() method.
225
- * @param _request Web API Request
226
- * @returns Promise resolving to Web API Response
227
- */
228
- // eslint-disable-next-line class-methods-use-this
229
- async get(_request) {
230
- throw createHttpError(500, "GET requests should be handled via fetch() method");
231
- }
232
- }
233
- const extractFileInitFromRequest = (request, contentLength, contentType) => {
234
- const totalSizeHeader = request.headers.get("x-total-size");
235
- const totalSize = totalSizeHeader ? Number.parseInt(totalSizeHeader, 10) : contentLength;
236
- const metadataHeader = request.headers.get("x-file-metadata");
237
- let metadata = {};
238
- if (metadataHeader) {
239
- try {
240
- metadata = JSON.parse(metadataHeader);
241
- } catch {
242
- }
243
- }
244
- const originalName = parseContentDispositionValue(request.headers.get("content-disposition"));
245
- return {
246
- contentType,
247
- metadata,
248
- originalName,
249
- size: totalSize
250
- };
251
- };
252
- const getIdFromRequestUrl = (url) => {
253
- try {
254
- const urlObject = new URL(url);
255
- const pathParts = urlObject.pathname.split("/").filter(Boolean);
256
- const lastPart = pathParts[pathParts.length - 1];
257
- if (!lastPart) {
258
- return null;
259
- }
260
- const id = lastPart.replace(/\.[^.]+$/, "");
261
- return id || null;
262
- } catch {
263
- return null;
264
- }
265
- };
266
-
267
- export { RestFetch as default };
@@ -1,228 +0,0 @@
1
- import { c as createHttpError } from './headers-DoS5nwM-.js';
2
- import { hasBody } from 'type-is';
3
- import { a as getHeader, b as getRequestStream, g as getIdFromRequest, r as readBody } from './base-handler-core-BKuf4YLT.js';
4
- import { B as BaseHandlerNode } from './base-handler-node-gk5aN9Cx.js';
5
- import { R as RestBase, v as validateRequestBody, a as validateContentLength, e as extractFileInit, p as parseContentDisposition, b as parseChunkHeaders } from './rest-base-GRCcnan7.js';
6
-
7
- class Rest extends BaseHandlerNode {
8
- /**
9
- * Limiting enabled http method handler
10
- */
11
- static methods = ["delete", "download", "get", "head", "options", "patch", "post", "put"];
12
- restBase;
13
- constructor(options) {
14
- super(options);
15
- const restInstance = this;
16
- this.restBase = new class extends RestBase {
17
- // eslint-disable-next-line class-methods-use-this
18
- get storage() {
19
- return restInstance.storage;
20
- }
21
- // eslint-disable-next-line class-methods-use-this
22
- buildFileUrl(requestUrl, file) {
23
- return restInstance.buildFileUrlForRest(requestUrl, file);
24
- }
25
- }();
26
- }
27
- /**
28
- * Compose and register HTTP method handlers.
29
- */
30
- compose() {
31
- this.registeredHandlers.set("POST", this.post.bind(this));
32
- this.registeredHandlers.set("PUT", this.put.bind(this));
33
- this.registeredHandlers.set("PATCH", this.patch.bind(this));
34
- this.registeredHandlers.set("DELETE", this.delete.bind(this));
35
- this.registeredHandlers.set("HEAD", this.head.bind(this));
36
- this.registeredHandlers.set("GET", this.get.bind(this));
37
- this.registeredHandlers.set("OPTIONS", this.options.bind(this));
38
- this.logger?.debug("Registered handler: %s", [...this.registeredHandlers.keys()].join(", "));
39
- }
40
- /**
41
- * Build file URL from request and file data.
42
- * @param requestUrl Request URL string
43
- * @param file File object containing ID and content type
44
- * @returns Constructed file URL with extension based on content type
45
- */
46
- buildFileUrlForRest(requestUrl, file) {
47
- return this.buildFileUrl({ url: requestUrl }, file);
48
- }
49
- /**
50
- * Creates a new file via POST request with raw binary data.
51
- * Supports both full file uploads and chunked upload initialization.
52
- * @param request Node.js IncomingMessage with file data.
53
- * @returns Promise resolving to ResponseFile with upload result.
54
- */
55
- async post(request) {
56
- const isChunkedUpload = getHeader(request, "x-chunked-upload", true) === "true";
57
- validateRequestBody(request, true);
58
- const contentLength = validateContentLength(request, true, this.storage.maxUploadSize);
59
- const contentType = getHeader(request, "content-type") || "application/octet-stream";
60
- const config = extractFileInit(request, contentLength, contentType);
61
- const requestUrl = request.originalUrl || request.url;
62
- const bodyStream = getRequestStream(request);
63
- return this.restBase.handlePost(config, isChunkedUpload, requestUrl, bodyStream, contentLength);
64
- }
65
- /**
66
- * Create or update a file via PUT request.
67
- * Requires file ID in the URL path.
68
- * @param request Node.js IncomingMessage with file ID and data
69
- * @returns Promise resolving to ResponseFile with upload result
70
- */
71
- async put(request) {
72
- let id;
73
- try {
74
- id = getIdFromRequest(request);
75
- } catch (error) {
76
- this.checkForUndefinedIdOrPath(error);
77
- throw error;
78
- }
79
- if (!hasBody(request)) {
80
- throw createHttpError(400, "Request body is required");
81
- }
82
- const contentLength = Number.parseInt(getHeader(request, "content-length") || "0", 10);
83
- if (contentLength === 0) {
84
- throw createHttpError(400, "Content-Length is required and must be greater than 0");
85
- }
86
- if (contentLength > this.storage.maxUploadSize) {
87
- throw createHttpError(413, `File size exceeds maximum allowed size of ${this.storage.maxUploadSize} bytes`);
88
- }
89
- const contentType = getHeader(request, "content-type") || "application/octet-stream";
90
- const metadataHeader = getHeader(request, "x-file-metadata", true);
91
- let metadata;
92
- if (metadataHeader) {
93
- try {
94
- metadata = JSON.parse(metadataHeader);
95
- } catch {
96
- }
97
- }
98
- const originalName = parseContentDisposition(request);
99
- const config = {
100
- contentType,
101
- metadata: metadata || {},
102
- originalName,
103
- size: contentLength
104
- };
105
- const requestUrl = request.originalUrl || request.url;
106
- const bodyStream = getRequestStream(request);
107
- return this.restBase.handlePut(id, config, requestUrl, bodyStream, contentLength, metadata);
108
- }
109
- /**
110
- * Delete an uploaded file or multiple files.
111
- * Supports single file (ID in URL) or batch delete (via ?ids=id1,id2 or JSON body).
112
- * @param request Node.js IncomingMessage with file ID(s)
113
- * @returns Promise resolving to ResponseFile (single) or ResponseList (batch) with deletion result
114
- */
115
- async delete(request) {
116
- const url = new URL(request.url || "", "http://localhost");
117
- const idsParameter = url.searchParams.get("ids");
118
- if (idsParameter) {
119
- const ids = idsParameter.split(",").map((id) => id.trim()).filter(Boolean);
120
- if (ids.length === 0) {
121
- throw createHttpError(400, "No file IDs provided");
122
- }
123
- return this.restBase.deleteBatch(ids);
124
- }
125
- const contentType = getHeader(request, "content-type") || "";
126
- if (contentType.includes("application/json")) {
127
- try {
128
- const body = await readBody(request, "utf8", 1024 * 1024);
129
- const parsed = JSON.parse(body);
130
- if (Array.isArray(parsed)) {
131
- if (parsed.length === 0) {
132
- throw createHttpError(400, "No file IDs provided");
133
- }
134
- return this.restBase.deleteBatch(parsed);
135
- }
136
- if (typeof parsed === "object" && parsed !== null && "ids" in parsed && Array.isArray(parsed.ids)) {
137
- const idsArray = parsed.ids;
138
- if (idsArray.length === 0) {
139
- throw createHttpError(400, "No file IDs provided");
140
- }
141
- return this.restBase.deleteBatch(idsArray);
142
- }
143
- } catch (error) {
144
- if (error.statusCode === 400) {
145
- throw error;
146
- }
147
- }
148
- }
149
- try {
150
- const id = getIdFromRequest(request);
151
- return this.restBase.deleteSingle(id);
152
- } catch (error) {
153
- this.checkForUndefinedIdOrPath(error);
154
- if (error.code === "ENOENT" || error.UploadErrorCode === "FILE_NOT_FOUND") {
155
- throw createHttpError(404, "File not found");
156
- }
157
- throw error;
158
- }
159
- }
160
- /**
161
- * Uploads a chunk via PATCH request for chunked uploads.
162
- * Headers required: X-Chunk-Offset (byte offset), Content-Length (chunk size).
163
- * Optional: X-Chunk-Checksum (SHA256 checksum for validation).
164
- * @param request Node.js IncomingMessage with chunk data.
165
- * @returns Promise resolving to ResponseFile with upload progress.
166
- */
167
- async patch(request) {
168
- let id;
169
- try {
170
- id = getIdFromRequest(request);
171
- } catch (error) {
172
- this.checkForUndefinedIdOrPath(error);
173
- throw error;
174
- }
175
- if (!hasBody(request)) {
176
- throw createHttpError(400, "Request body is required");
177
- }
178
- const contentLength = Number.parseInt(getHeader(request, "content-length") || "0", 10);
179
- if (contentLength === 0) {
180
- throw createHttpError(400, "Content-Length is required and must be greater than 0");
181
- }
182
- const { chunkOffset } = parseChunkHeaders(request);
183
- if (chunkOffset === void 0) {
184
- throw createHttpError(400, "X-Chunk-Offset header is required");
185
- }
186
- const chunkChecksum = getHeader(request, "x-chunk-checksum", true);
187
- const requestUrl = request.originalUrl || request.url;
188
- const bodyStream = getRequestStream(request);
189
- return this.restBase.handlePatch(id, chunkOffset, contentLength, chunkChecksum, requestUrl, bodyStream);
190
- }
191
- /**
192
- * Get file metadata via HEAD request.
193
- * For chunked uploads, also returns upload progress information.
194
- * @param request Node.js IncomingMessage with file ID
195
- * @returns Promise resolving to ResponseFile with metadata headers
196
- */
197
- async head(request) {
198
- try {
199
- const id = getIdFromRequest(request);
200
- return this.restBase.handleHead(id);
201
- } catch (error) {
202
- this.checkForUndefinedIdOrPath(error);
203
- if (error.UploadErrorCode === "FILE_NOT_FOUND" || error.code === "ENOENT") {
204
- throw createHttpError(404, "File not found");
205
- }
206
- throw error;
207
- }
208
- }
209
- /**
210
- * Handle OPTIONS requests with REST API capabilities.
211
- * @returns Promise resolving to ResponseFile with CORS headers
212
- */
213
- async options() {
214
- return this.restBase.handleOptions(Rest.methods, this.storage.maxUploadSize);
215
- }
216
- /**
217
- * Retrieves a file or list of files based on the request path.
218
- * Delegates to BaseHandlerNode.get() method.
219
- * @param request Node.js IncomingMessage with optional originalUrl.
220
- * @param response Node.js ServerResponse.
221
- * @returns Promise resolving to a single file, paginated list, or array of files.
222
- */
223
- async get(request, response) {
224
- return super.get(request, response);
225
- }
226
- }
227
-
228
- export { Rest as default };
@@ -1,11 +0,0 @@
1
- import File from './File-Bb3P23dr.js';
2
-
3
- class S3File extends File {
4
- Parts;
5
- UploadId;
6
- uri;
7
- partsUrls;
8
- partSize;
9
- }
10
-
11
- export { S3File as default };
@@ -1,76 +0,0 @@
1
- import { S3Client, HeadObjectCommand, DeleteObjectCommand, PutObjectCommand, waitUntilBucketExists } from '@aws-sdk/client-s3';
2
- import { fromIni } from '@aws-sdk/credential-providers';
3
- import MetaStorage from './MetaStorage-pECeFOad.js';
4
- import { parseMetadata, stringifyMetadata } from './Metadata-DRLXeJ0F.js';
5
- import { i as isExpired } from './is-expired-CTThU1q5.js';
6
-
7
- class S3MetaStorage extends MetaStorage {
8
- constructor(config) {
9
- super(config);
10
- this.config = config;
11
- const { client, ...metaConfig } = config;
12
- const bucket = metaConfig.bucket || process.env.S3_BUCKET;
13
- if (client === void 0) {
14
- if (!bucket) {
15
- throw new Error("S3 bucket is not defined");
16
- }
17
- const keyFile = metaConfig.keyFile || process.env.S3_KEYFILE;
18
- if (keyFile) {
19
- metaConfig.credentials = fromIni({ configFilepath: keyFile });
20
- }
21
- this.client = new S3Client(metaConfig);
22
- this.accessCheck(bucket).catch((error) => {
23
- throw error;
24
- });
25
- } else {
26
- this.client = client;
27
- }
28
- this.bucket = bucket;
29
- }
30
- bucket;
31
- client;
32
- async get(id) {
33
- const Key = this.getMetaName(id);
34
- const parameters = { Bucket: this.bucket, Key };
35
- const { Expires, Metadata } = await this.client.send(new HeadObjectCommand(parameters));
36
- if (Expires && isExpired({ expiredAt: Expires })) {
37
- await this.delete(Key);
38
- throw new Error(`Metafile ${id} not found`);
39
- }
40
- if (Metadata?.metadata !== void 0) {
41
- const file = JSON.parse(decodeURIComponent(Metadata.metadata));
42
- if (file.metadata && typeof file.metadata === "string") {
43
- file.metadata = parseMetadata(file.metadata);
44
- }
45
- return file;
46
- }
47
- throw new Error(`Metafile ${id} not found`);
48
- }
49
- async touch(id, file) {
50
- return this.save(id, file);
51
- }
52
- async delete(id) {
53
- const parameters = { Bucket: this.bucket, Key: this.getMetaName(id) };
54
- await this.client.send(new DeleteObjectCommand(parameters));
55
- }
56
- async save(id, file) {
57
- const transformedMetadata = { ...file };
58
- if (transformedMetadata.metadata) {
59
- transformedMetadata.metadata = stringifyMetadata(file.metadata);
60
- }
61
- const metadata = encodeURIComponent(JSON.stringify(transformedMetadata));
62
- const parameters = {
63
- Bucket: this.bucket,
64
- ContentLength: 0,
65
- Key: this.getMetaName(id),
66
- Metadata: { metadata }
67
- };
68
- await this.client.send(new PutObjectCommand(parameters));
69
- return file;
70
- }
71
- async accessCheck(bucket, maxWaitTime = 30) {
72
- await waitUntilBucketExists({ client: this.client, maxWaitTime }, { Bucket: bucket });
73
- }
74
- }
75
-
76
- export { S3MetaStorage as default };