@visulima/storage 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (307) hide show
  1. package/CHANGELOG.md +252 -0
  2. package/LICENSE.md +1256 -512
  3. package/README.md +4 -4
  4. package/dist/adapter/nuxt/module.d.ts +41 -34
  5. package/dist/adapter/nuxt/module.js +1 -93
  6. package/dist/handler/http/fetch/index.d.ts +297 -4
  7. package/dist/handler/http/fetch/index.js +1 -4
  8. package/dist/handler/http/hono/index.d.ts +1474 -58
  9. package/dist/handler/http/hono/index.js +1 -65
  10. package/dist/handler/http/nextjs/index.d.ts +66 -58
  11. package/dist/handler/http/nextjs/index.js +1 -37
  12. package/dist/handler/http/node/index.d.ts +361 -4
  13. package/dist/handler/http/node/index.js +1 -4
  14. package/dist/handler/http/solid-start/index.d.ts +66 -57
  15. package/dist/handler/http/solid-start/index.js +1 -44
  16. package/dist/index.d.ts +376 -17
  17. package/dist/index.js +1 -13
  18. package/dist/openapi/index.d.ts +24 -5
  19. package/dist/openapi/index.js +1 -5
  20. package/dist/packem_shared/AwsLightFile-BTLiRxXj.js +1 -0
  21. package/dist/packem_shared/AwsLightMetaStorage-DHz1nf_H.js +1 -0
  22. package/dist/packem_shared/AwsLightStorage-CA9cdfJ6.js +1 -0
  23. package/dist/packem_shared/AzureFile-BKHru1zB.js +1 -0
  24. package/dist/packem_shared/AzureSMetaStorage-BqA4jUDJ.js +1 -0
  25. package/dist/packem_shared/AzureStorage-BKUjCymW.js +1 -0
  26. package/dist/packem_shared/BaseTransformer-D68eLyz1.js +1 -0
  27. package/dist/packem_shared/DiskStorage-DNjpDMX9.js +1 -0
  28. package/dist/packem_shared/DiskStorageWithChecksum-Bb6JX_tC.js +1 -0
  29. package/dist/packem_shared/ERRORS-B9jkvKwx.js +1 -0
  30. package/dist/packem_shared/File-alcSNpLq.js +1 -0
  31. package/dist/packem_shared/GCSConfig-BQ0OpVhe.js +1 -0
  32. package/dist/packem_shared/GCSFile-CHjX_fJk.js +1 -0
  33. package/dist/packem_shared/GCSMetaStorage-1UQIN9IN.js +1 -0
  34. package/dist/packem_shared/GCStorage-PJRb2WWC.js +1 -0
  35. package/dist/packem_shared/LocalMetaStorage-BWuFvWn4.js +1 -0
  36. package/dist/packem_shared/MediaTransformer-2C8MJeAg.js +1 -0
  37. package/dist/packem_shared/MetaStorage-Y4m1dWgd.js +1 -0
  38. package/dist/packem_shared/Metadata-B6Ir0KO7.js +1 -0
  39. package/dist/packem_shared/Multipart-Bd9YFFn0.js +1 -0
  40. package/dist/packem_shared/Multipart-D5bcEvga.js +1 -0
  41. package/dist/packem_shared/NetlifyBlobFile-CpzkMKng.js +1 -0
  42. package/dist/packem_shared/NetlifyBlobMetaStorage-dD0oBLom.js +1 -0
  43. package/dist/packem_shared/NetlifyBlobStorage-ByTwCN-h.js +1 -0
  44. package/dist/packem_shared/NoOpMetrics-Dky06sf1.js +1 -0
  45. package/dist/packem_shared/OpenTelemetryMetrics-9uxQMSlg.js +1 -0
  46. package/dist/packem_shared/Rest-CYEBbtCD.js +1 -0
  47. package/dist/packem_shared/Rest-DoonVU7B.js +1 -0
  48. package/dist/packem_shared/S3Client.d-CZ62Jztg.d.ts +20357 -0
  49. package/dist/packem_shared/S3File-Du6wP0Sz.js +1 -0
  50. package/dist/packem_shared/S3MetaStorage-vcriiosn.js +1 -0
  51. package/dist/packem_shared/S3Storage-Fx6-OSc-.js +1 -0
  52. package/dist/packem_shared/TUS_RESUMABLE-B7KtPVeC.js +1 -0
  53. package/dist/packem_shared/Tus-Bd_2Ki2G.js +1 -0
  54. package/dist/packem_shared/Tus-CUBCkuPE.js +1 -0
  55. package/dist/packem_shared/ValidationError-D8KKJiKA.js +1 -0
  56. package/dist/packem_shared/VercelBlobFile-CL9MjKcY.js +1 -0
  57. package/dist/packem_shared/VercelBlobMetaStorage-BsOTx-Su.js +1 -0
  58. package/dist/packem_shared/VercelBlobStorage-kNkk5Cn4.js +1 -0
  59. package/dist/packem_shared/_commonjsHelpers-D6W6KoPK.js +1 -0
  60. package/dist/packem_shared/aws-light-meta-storage-TPyQwLvk.js +4 -0
  61. package/dist/packem_shared/backblaze-DEflv87m.js +1 -0
  62. package/dist/packem_shared/base-handler-core-DaggCVsq.js +1 -0
  63. package/dist/packem_shared/base-handler-fetch-DnarP64X.js +1 -0
  64. package/dist/packem_shared/base-handler-node-BTes6sql.js +1 -0
  65. package/dist/packem_shared/cache-qV_5Umeq.js +1 -0
  66. package/dist/packem_shared/cloudflare-DLAeQvgD.js +1 -0
  67. package/dist/packem_shared/defaultCloudStorageFileNameValidation-yiM9GxHr.js +1 -0
  68. package/dist/packem_shared/digitalOcean-nhZUds87.js +1 -0
  69. package/dist/packem_shared/disk-storage-BvdK4bqF.js +5 -0
  70. package/dist/packem_shared/disk-storage-with-checksum.d-hEoe2ugb.d.ts +148 -0
  71. package/dist/packem_shared/gcs-meta-storage-DXqBZ3Xm.js +1 -0
  72. package/dist/packem_shared/has-content-Bx2p8Okx.js +1 -0
  73. package/dist/packem_shared/headers-DC2MEOrK.js +27 -0
  74. package/dist/packem_shared/is-expired-1JuZjDtb.js +1 -0
  75. package/dist/packem_shared/isRetryableError-DQNSZiBc.js +1 -0
  76. package/dist/packem_shared/isValidMediaType-B-2UKjZx.js +1 -0
  77. package/dist/packem_shared/local-meta-storage-Bkwqi_gi.js +1 -0
  78. package/dist/packem_shared/local-meta-storage.d-Dop9RP9k.d.ts +20 -0
  79. package/dist/packem_shared/media-transformer.d-LGdEjx6A.d.ts +331 -0
  80. package/dist/packem_shared/minio-BWwgGXeE.js +1 -0
  81. package/dist/packem_shared/multipart-base-C6OjBwMS.js +1 -0
  82. package/dist/packem_shared/part-match-DqD5U7An.js +1 -0
  83. package/dist/packem_shared/path-D7rMc9nq-B718mbm6.js +1 -0
  84. package/dist/packem_shared/response-builder-Wdo_fvcF.js +1 -0
  85. package/dist/packem_shared/rest-base-B2Dv7esY.js +1 -0
  86. package/dist/packem_shared/restOpenApiSpec-PaIVbESh.js +1 -0
  87. package/dist/packem_shared/s3-base-storage-xHZNtsGe.js +1 -0
  88. package/dist/packem_shared/s3-base-storage.d-CczjSe98.d.ts +251 -0
  89. package/dist/packem_shared/sharedGet-Ce7WGAsc.js +1 -0
  90. package/dist/packem_shared/storage-m_Cxgiih.js +1 -0
  91. package/dist/packem_shared/storage.d-BOMUJD96.d.ts +939 -0
  92. package/dist/packem_shared/tigris-DZoyrMNd.js +1 -0
  93. package/dist/packem_shared/transformOpenApiSpec-C0vEbDTO.js +1 -0
  94. package/dist/packem_shared/tus-base.d-C20dSee8.d.ts +99 -0
  95. package/dist/packem_shared/tusOpenApiSpec-DF0-hlWV.js +1 -0
  96. package/dist/packem_shared/types.d-B4hqF6yH.d.ts +708 -0
  97. package/dist/packem_shared/types.d-CNvyxOka.d.ts +49 -0
  98. package/dist/packem_shared/update-size-DANV7aa2.js +1 -0
  99. package/dist/packem_shared/validator-DK41xp8N.js +1 -0
  100. package/dist/packem_shared/waitForStorage-ChSBLhLc.js +1 -0
  101. package/dist/packem_shared/wasabi-Dmce4x9s.js +1 -0
  102. package/dist/packem_shared/xhrOpenApiSpec-nyoboz83.js +1 -0
  103. package/dist/storage/aws/clients/index.d.ts +166 -6
  104. package/dist/storage/aws/clients/index.js +1 -6
  105. package/dist/storage/aws/index.d.ts +320 -4
  106. package/dist/storage/aws/index.js +1 -3
  107. package/dist/storage/aws-light/index.d.ts +252 -4
  108. package/dist/storage/aws-light/index.js +1 -3
  109. package/dist/storage/azure/index.d.ts +10422 -4
  110. package/dist/storage/azure/index.js +1 -3
  111. package/dist/storage/gcs/index.d.ts +4107 -5
  112. package/dist/storage/gcs/index.js +1 -4
  113. package/dist/storage/local/index.d.ts +7 -4
  114. package/dist/storage/local/index.js +1 -3
  115. package/dist/storage/netlify-blob/index.d.ts +142 -4
  116. package/dist/storage/netlify-blob/index.js +1 -3
  117. package/dist/storage/vercel-blob/index.d.ts +129 -4
  118. package/dist/storage/vercel-blob/index.js +1 -3
  119. package/dist/transformer/audio-transformer.d.ts +127 -125
  120. package/dist/transformer/audio-transformer.js +1 -278
  121. package/dist/transformer/image-transformer.d.ts +569 -568
  122. package/dist/transformer/image-transformer.js +1 -1100
  123. package/dist/transformer/index.d.ts +62 -5
  124. package/dist/transformer/index.js +1 -4
  125. package/dist/transformer/video-transformer.d.ts +144 -142
  126. package/dist/transformer/video-transformer.js +1 -310
  127. package/package.json +60 -60
  128. package/dist/handler/base/base-handler-core.d.ts +0 -91
  129. package/dist/handler/base/base-handler-fetch.d.ts +0 -76
  130. package/dist/handler/base/base-handler-node.d.ts +0 -137
  131. package/dist/handler/multipart/multipart-base.d.ts +0 -84
  132. package/dist/handler/multipart/multipart-fetch.d.ts +0 -64
  133. package/dist/handler/multipart/multipart.d.ts +0 -49
  134. package/dist/handler/rest/rest-base.d.ts +0 -106
  135. package/dist/handler/rest/rest-fetch.d.ts +0 -88
  136. package/dist/handler/rest/rest.d.ts +0 -93
  137. package/dist/handler/tus/tus-base.d.ts +0 -152
  138. package/dist/handler/tus/tus-fetch.d.ts +0 -72
  139. package/dist/handler/tus/tus.d.ts +0 -78
  140. package/dist/handler/types.d.ts +0 -53
  141. package/dist/handler/utils/request-parser.d.ts +0 -72
  142. package/dist/handler/utils/response-builder.d.ts +0 -83
  143. package/dist/handler/utils/storage-utils.d.ts +0 -10
  144. package/dist/handler/utils/stream-utils.d.ts +0 -29
  145. package/dist/handler/utils/upload-handlers.d.ts +0 -76
  146. package/dist/metrics/index.d.ts +0 -2
  147. package/dist/metrics/no-op-metrics.d.ts +0 -15
  148. package/dist/metrics/opentelemetry-metrics.d.ts +0 -55
  149. package/dist/openapi/rest.d.ts +0 -7
  150. package/dist/openapi/shared.d.ts +0 -13
  151. package/dist/openapi/transform.d.ts +0 -3
  152. package/dist/openapi/tus.d.ts +0 -7
  153. package/dist/openapi/xhr.d.ts +0 -7
  154. package/dist/packem_shared/AwsLightFile-tTneXZgG.js +0 -11
  155. package/dist/packem_shared/AwsLightMetaStorage-BWSOtVaN.js +0 -4
  156. package/dist/packem_shared/AwsLightStorage-Cwkkc-z3.js +0 -133
  157. package/dist/packem_shared/AzureFile-CesgFzps.js +0 -8
  158. package/dist/packem_shared/AzureSMetaStorage-CFs-OYJT.js +0 -88
  159. package/dist/packem_shared/AzureStorage-9MoV2W8q.js +0 -357
  160. package/dist/packem_shared/BaseTransformer-C2gLib6v.js +0 -82
  161. package/dist/packem_shared/DiskStorage-CJtTzMQ3.js +0 -12
  162. package/dist/packem_shared/DiskStorageWithChecksum-BgrG8pvC.js +0 -238
  163. package/dist/packem_shared/ERRORS-D0apMqnc.js +0 -97
  164. package/dist/packem_shared/File-Bb3P23dr.js +0 -69
  165. package/dist/packem_shared/GCSConfig-vPP22kN6.js +0 -11
  166. package/dist/packem_shared/GCSFile-BIEunhAN.js +0 -8
  167. package/dist/packem_shared/GCSMetaStorage-sYiSjLUx.js +0 -7
  168. package/dist/packem_shared/GCStorage-DPl1_DAm.js +0 -406
  169. package/dist/packem_shared/LocalMetaStorage-CZHhKkMd.js +0 -7
  170. package/dist/packem_shared/MediaTransformer-D6658DL1.js +0 -1197
  171. package/dist/packem_shared/MetaStorage-pECeFOad.js +0 -46
  172. package/dist/packem_shared/Metadata-DRLXeJ0F.js +0 -89
  173. package/dist/packem_shared/Multipart-CNFK_Okz.js +0 -163
  174. package/dist/packem_shared/Multipart-CtUL7BQw.js +0 -128
  175. package/dist/packem_shared/NetlifyBlobFile-CXzyjqrD.js +0 -14
  176. package/dist/packem_shared/NetlifyBlobMetaStorage-DxZ5aDvD.js +0 -9
  177. package/dist/packem_shared/NetlifyBlobStorage-C6AX-X0P.js +0 -376
  178. package/dist/packem_shared/NoOpMetrics-DhAk5rXc.js +0 -10
  179. package/dist/packem_shared/OpenTelemetryMetrics-BnxhqIaH.js +0 -67
  180. package/dist/packem_shared/Rest-CAOAEkOj.js +0 -267
  181. package/dist/packem_shared/Rest-DNuLwBrK.js +0 -228
  182. package/dist/packem_shared/S3File-DZiyk9Qt.js +0 -11
  183. package/dist/packem_shared/S3MetaStorage-Dz9aDabA.js +0 -76
  184. package/dist/packem_shared/S3Storage-CgheE2yH.js +0 -316
  185. package/dist/packem_shared/TUS_RESUMABLE-GJzZ9R-f.js +0 -434
  186. package/dist/packem_shared/Tus-B8PmlMgR.js +0 -200
  187. package/dist/packem_shared/Tus-C4F1aYOl.js +0 -195
  188. package/dist/packem_shared/ValidationError-BfF1aE4h.js +0 -26
  189. package/dist/packem_shared/VercelBlobFile-BCg4aTEq.js +0 -18
  190. package/dist/packem_shared/VercelBlobMetaStorage-Bd9F-VFm.js +0 -9
  191. package/dist/packem_shared/VercelBlobStorage-BbuEYhOz.js +0 -261
  192. package/dist/packem_shared/_commonjsHelpers-B85MJLTf.js +0 -5
  193. package/dist/packem_shared/aws-light-meta-storage-DKJBgbR6.js +0 -446
  194. package/dist/packem_shared/backblaze-BlMnIcBC.js +0 -20
  195. package/dist/packem_shared/base-handler-core-BKuf4YLT.js +0 -303
  196. package/dist/packem_shared/base-handler-fetch-Cr0hLiqg.js +0 -291
  197. package/dist/packem_shared/base-handler-node-gk5aN9Cx.js +0 -730
  198. package/dist/packem_shared/cache-B88MXQ_2.js +0 -18
  199. package/dist/packem_shared/cloudflare-Bi1q8wXE.js +0 -21
  200. package/dist/packem_shared/defaultCloudStorageFileNameValidation-oVDgf-Sw.js +0 -11
  201. package/dist/packem_shared/digitalOcean-CWQRJM3L.js +0 -21
  202. package/dist/packem_shared/disk-storage-DkDoHnKB.js +0 -810
  203. package/dist/packem_shared/gcs-meta-storage-etw4wuh5.js +0 -158
  204. package/dist/packem_shared/has-content-CY66ehMK.js +0 -3
  205. package/dist/packem_shared/headers-DoS5nwM-.js +0 -3220
  206. package/dist/packem_shared/is-expired-CTThU1q5.js +0 -8
  207. package/dist/packem_shared/isRetryableError-Dycp7127.js +0 -82
  208. package/dist/packem_shared/isValidMediaType-BeDgiObq.js +0 -35
  209. package/dist/packem_shared/local-meta-storage-By-3SNBI.js +0 -649
  210. package/dist/packem_shared/minio-C2YBZQOw.js +0 -22
  211. package/dist/packem_shared/multipart-base-B3i67SSX.js +0 -102
  212. package/dist/packem_shared/part-match-BMNqHDYD.js +0 -96
  213. package/dist/packem_shared/path-CR6YkPXX-7R1-9CMk.js +0 -161
  214. package/dist/packem_shared/response-builder-BtnRiBUI.js +0 -45
  215. package/dist/packem_shared/rest-base-GRCcnan7.js +0 -457
  216. package/dist/packem_shared/restOpenApiSpec-CwcHHY2C.js +0 -800
  217. package/dist/packem_shared/s3-base-storage-xw6NJFX7.js +0 -510
  218. package/dist/packem_shared/sharedGet-Cpo7QUyu.js +0 -1019
  219. package/dist/packem_shared/storage-BwdYUHs3.js +0 -864
  220. package/dist/packem_shared/tigris-Hac8TKnX.js +0 -21
  221. package/dist/packem_shared/transformOpenApiSpec-DWM5WtnN.js +0 -975
  222. package/dist/packem_shared/tusOpenApiSpec-6ohiToBy.js +0 -740
  223. package/dist/packem_shared/update-size-CCGm6i1J.js +0 -8
  224. package/dist/packem_shared/validator-BeX_lJet.js +0 -78
  225. package/dist/packem_shared/waitForStorage-Cscw85sx.js +0 -18
  226. package/dist/packem_shared/wasabi-DIyflHSd.js +0 -21
  227. package/dist/packem_shared/xhrOpenApiSpec-DS17brnx.js +0 -264
  228. package/dist/storage/aws/clients/backblaze.d.ts +0 -12
  229. package/dist/storage/aws/clients/cloudflare.d.ts +0 -13
  230. package/dist/storage/aws/clients/digital-ocean.d.ts +0 -12
  231. package/dist/storage/aws/clients/minio.d.ts +0 -13
  232. package/dist/storage/aws/clients/tigris.d.ts +0 -12
  233. package/dist/storage/aws/clients/types.d.ts +0 -95
  234. package/dist/storage/aws/clients/wasabi.d.ts +0 -12
  235. package/dist/storage/aws/s3-base-storage.d.ts +0 -248
  236. package/dist/storage/aws/s3-client-adapter.d.ts +0 -110
  237. package/dist/storage/aws/s3-file.d.ts +0 -10
  238. package/dist/storage/aws/s3-meta-storage.d.ts +0 -15
  239. package/dist/storage/aws/s3-storage.d.ts +0 -70
  240. package/dist/storage/aws/types.d.ts +0 -119
  241. package/dist/storage/aws-light/aws-light-api-adapter.d.ts +0 -130
  242. package/dist/storage/aws-light/aws-light-file.d.ts +0 -10
  243. package/dist/storage/aws-light/aws-light-meta-storage.d.ts +0 -19
  244. package/dist/storage/aws-light/aws-light-storage.d.ts +0 -65
  245. package/dist/storage/aws-light/types.d.ts +0 -37
  246. package/dist/storage/azure/azure-file.d.ts +0 -6
  247. package/dist/storage/azure/azure-meta-storage.d.ts +0 -15
  248. package/dist/storage/azure/azure-storage.d.ts +0 -69
  249. package/dist/storage/azure/types.d.ts +0 -62
  250. package/dist/storage/gcs/fetch-error.d.ts +0 -11
  251. package/dist/storage/gcs/gcs-config.d.ts +0 -2
  252. package/dist/storage/gcs/gcs-file.d.ts +0 -6
  253. package/dist/storage/gcs/gcs-meta-storage.d.ts +0 -27
  254. package/dist/storage/gcs/gcs-storage.d.ts +0 -91
  255. package/dist/storage/gcs/types.d.ts +0 -55
  256. package/dist/storage/gcs/utils.d.ts +0 -7
  257. package/dist/storage/local/disk-storage-with-checksum.d.ts +0 -15
  258. package/dist/storage/local/disk-storage.d.ts +0 -135
  259. package/dist/storage/local/local-meta-storage.d.ts +0 -32
  260. package/dist/storage/meta-storage.d.ts +0 -30
  261. package/dist/storage/netlify-blob/netlify-blob-file.d.ts +0 -12
  262. package/dist/storage/netlify-blob/netlify-blob-meta-storage.d.ts +0 -7
  263. package/dist/storage/netlify-blob/netlify-blob-storage.d.ts +0 -93
  264. package/dist/storage/netlify-blob/types.d.ts +0 -30
  265. package/dist/storage/storage.d.ts +0 -353
  266. package/dist/storage/types.d.ts +0 -221
  267. package/dist/storage/utils/file/file.d.ts +0 -25
  268. package/dist/storage/utils/file/get-file-status.d.ts +0 -9
  269. package/dist/storage/utils/file/has-content.d.ts +0 -9
  270. package/dist/storage/utils/file/index.d.ts +0 -10
  271. package/dist/storage/utils/file/is-expired.d.ts +0 -8
  272. package/dist/storage/utils/file/metadata.d.ts +0 -18
  273. package/dist/storage/utils/file/part-match.d.ts +0 -11
  274. package/dist/storage/utils/file/types.d.ts +0 -37
  275. package/dist/storage/utils/file/update-metadata.d.ts +0 -10
  276. package/dist/storage/utils/file/update-size.d.ts +0 -10
  277. package/dist/storage/vercel-blob/types.d.ts +0 -32
  278. package/dist/storage/vercel-blob/vercel-blob-file.d.ts +0 -16
  279. package/dist/storage/vercel-blob/vercel-blob-meta-storage.d.ts +0 -7
  280. package/dist/storage/vercel-blob/vercel-blob-storage.d.ts +0 -76
  281. package/dist/transformer/base-transformer.d.ts +0 -63
  282. package/dist/transformer/media-transformer.d.ts +0 -332
  283. package/dist/transformer/types.d.ts +0 -652
  284. package/dist/transformer/utils.d.ts +0 -33
  285. package/dist/transformer/validation-error.d.ts +0 -23
  286. package/dist/utils/cache.d.ts +0 -32
  287. package/dist/utils/chunked-upload.d.ts +0 -65
  288. package/dist/utils/detect-file-type.d.ts +0 -28
  289. package/dist/utils/errors.d.ts +0 -74
  290. package/dist/utils/file-path-url-matcher.d.ts +0 -18
  291. package/dist/utils/headers.d.ts +0 -111
  292. package/dist/utils/http.d.ts +0 -92
  293. package/dist/utils/locker.d.ts +0 -26
  294. package/dist/utils/pipes/stream-checksum.d.ts +0 -47
  295. package/dist/utils/pipes/stream-length.d.ts +0 -22
  296. package/dist/utils/primitives/get-last-one.d.ts +0 -3
  297. package/dist/utils/primitives/is-record.d.ts +0 -2
  298. package/dist/utils/primitives/map-values.d.ts +0 -9
  299. package/dist/utils/primitives/pick.d.ts +0 -2
  300. package/dist/utils/primitives/to-milliseconds.d.ts +0 -12
  301. package/dist/utils/primitives/to-seconds.d.ts +0 -12
  302. package/dist/utils/range-checksum.d.ts +0 -33
  303. package/dist/utils/range-hasher.d.ts +0 -46
  304. package/dist/utils/retry.d.ts +0 -64
  305. package/dist/utils/types.d.ts +0 -108
  306. package/dist/utils/validation-error.d.ts +0 -22
  307. package/dist/utils/validator.d.ts +0 -36
@@ -1,102 +0,0 @@
1
- import { c as createHttpError } from './headers-DoS5nwM-.js';
2
-
3
- class MultipartBase {
4
- /**
5
- * Handle multipart POST (upload file).
6
- * @param filePart File part from multipart parser
7
- * @param filePart.bytes File bytes data
8
- * @param filePart.filename Original filename
9
- * @param filePart.mediaType Content type
10
- * @param filePart.size File size in bytes
11
- * @param metadataParts All parts from multipart parser (for extracting metadata)
12
- * @param requestUrl Request URL for Location header
13
- * @returns Promise resolving to ResponseFile with upload result
14
- */
15
- // eslint-disable-next-line sonarjs/cognitive-complexity
16
- async handlePost(filePart, metadataParts, requestUrl) {
17
- const config = {
18
- contentType: filePart.mediaType || "application/octet-stream",
19
- metadata: {},
20
- originalName: filePart.filename,
21
- size: filePart.size
22
- };
23
- for (const part of metadataParts) {
24
- if (!part.isFile && part.name) {
25
- let data = {};
26
- if (part.name === "metadata" && part.text) {
27
- try {
28
- data = JSON.parse(part.text);
29
- } catch {
30
- }
31
- } else if (part.name) {
32
- data = { [part.name]: part.text };
33
- }
34
- Object.assign(config.metadata, data);
35
- }
36
- }
37
- const file = await this.storage.create(config);
38
- const stream = this.createStreamFromBytes(filePart.bytes);
39
- await this.storage.write({
40
- body: stream,
41
- contentLength: filePart.size,
42
- id: file.id,
43
- start: 0
44
- });
45
- const completedFile = await this.storage.write({
46
- body: this.createEmptyStream(),
47
- contentLength: 0,
48
- id: file.id,
49
- start: filePart.size
50
- });
51
- let finalFile = completedFile;
52
- if (Object.keys(config.metadata).length > 0) {
53
- const mergedMetadata = {
54
- ...completedFile.metadata,
55
- ...config.metadata
56
- };
57
- const updatedFile = await this.storage.update({ id: completedFile.id }, { metadata: mergedMetadata });
58
- finalFile = { ...updatedFile, status: completedFile.status };
59
- }
60
- const locationUrl = this.buildFileUrl(requestUrl, finalFile);
61
- return {
62
- ...finalFile,
63
- headers: {
64
- Location: locationUrl,
65
- ...finalFile.expiredAt === void 0 ? {} : { "X-Upload-Expires": finalFile.expiredAt.toString() },
66
- ...finalFile.ETag === void 0 ? {} : { ETag: finalFile.ETag }
67
- },
68
- statusCode: 200
69
- };
70
- }
71
- /**
72
- * Handle DELETE (delete file).
73
- * @param id File ID from URL
74
- * @returns Promise resolving to ResponseFile with deletion result
75
- */
76
- async handleDelete(id) {
77
- const file = await this.storage.delete({ id });
78
- if (file.status === void 0) {
79
- throw createHttpError(404, "File not found");
80
- }
81
- return { ...file, headers: {}, statusCode: 204 };
82
- }
83
- /**
84
- * Storage instance for file operations.
85
- */
86
- // eslint-disable-next-line class-methods-use-this
87
- get storage() {
88
- throw new Error("storage must be implemented");
89
- }
90
- /**
91
- * Build file URL from request URL and file data.
92
- * @param _requestUrl Request URL string
93
- * @param _file File object containing ID and content type
94
- * @returns Constructed file URL with extension based on content type
95
- */
96
- // eslint-disable-next-line class-methods-use-this
97
- buildFileUrl(_requestUrl, _file) {
98
- throw new Error("buildFileUrl must be implemented");
99
- }
100
- }
101
-
102
- export { MultipartBase as M };
@@ -1,96 +0,0 @@
1
- import { PassThrough, Transform } from 'node:stream';
2
- import { fileTypeFromBuffer } from 'file-type';
3
-
4
- const detectFileTypeFromBuffer = async (buffer) => {
5
- try {
6
- return await fileTypeFromBuffer(buffer);
7
- } catch {
8
- return void 0;
9
- }
10
- };
11
- const detectFileTypeFromStream = async (stream, options) => {
12
- const sampleSize = 4100;
13
- let fileType;
14
- const chunks = [];
15
- let totalLength = 0;
16
- let detectionStarted = false;
17
- let detectionPromise;
18
- const outputStream = new PassThrough({ highWaterMark: 0 });
19
- const peekStream = new Transform({
20
- objectMode: false,
21
- transform(chunk, _encoding, callback) {
22
- if (!detectionStarted) {
23
- chunks.push(chunk);
24
- totalLength += chunk.length;
25
- if (totalLength >= sampleSize || totalLength > 0) {
26
- detectionStarted = true;
27
- const buffer = Buffer.concat(chunks);
28
- detectionPromise = fileTypeFromBuffer(buffer).then((detected) => {
29
- fileType = detected;
30
- return detected;
31
- }).catch(() => void 0);
32
- }
33
- }
34
- callback(void 0, chunk);
35
- }
36
- });
37
- stream.pipe(peekStream).pipe(outputStream);
38
- stream.on("error", (error) => {
39
- peekStream.destroy(error);
40
- outputStream.destroy(error);
41
- });
42
- peekStream.on("error", (error) => {
43
- if (!outputStream.destroyed) {
44
- outputStream.destroy(error);
45
- }
46
- });
47
- await Promise.race([
48
- new Promise((resolve) => {
49
- if (detectionStarted) {
50
- resolve();
51
- return;
52
- }
53
- const timeout = setTimeout(() => resolve(), 10);
54
- peekStream.once("data", () => {
55
- clearTimeout(timeout);
56
- resolve();
57
- });
58
- peekStream.once("end", () => {
59
- clearTimeout(timeout);
60
- resolve();
61
- });
62
- }),
63
- new Promise((resolve) => {
64
- setTimeout(() => resolve(), 10);
65
- })
66
- ]);
67
- if (detectionPromise) {
68
- await Promise.race([
69
- detectionPromise.then(() => void 0),
70
- new Promise((resolve) => {
71
- setTimeout(() => resolve(), 150);
72
- })
73
- ]).catch(() => {
74
- });
75
- }
76
- return { fileType, stream: outputStream };
77
- };
78
-
79
- const getFileStatus = (file) => {
80
- if (file.bytesWritten === file.size) {
81
- return "completed";
82
- }
83
- return file.createdAt ? "part" : "created";
84
- };
85
-
86
- const partMatch = (part, file) => {
87
- if (part.size !== void 0 && file.size !== void 0 && part.size > 0 && file.size > 0 && part.size > file.size) {
88
- return false;
89
- }
90
- if (file.size === void 0) {
91
- return true;
92
- }
93
- return (part.start || 0) + (part.contentLength || 0) <= file.size;
94
- };
95
-
96
- export { detectFileTypeFromBuffer as a, detectFileTypeFromStream as d, getFileStatus as g, partMatch as p };
@@ -1,161 +0,0 @@
1
- const DRIVE_LETTER_START_RE = /^[A-Z]:\//i;
2
- const normalizeWindowsPath = (input = "") => {
3
- if (!input) {
4
- return input;
5
- }
6
- return input.replaceAll("\\", "/").replace(DRIVE_LETTER_START_RE, (r) => r.toUpperCase());
7
- };
8
- const UNC_REGEX = /^[/\\]{2}/;
9
- const IS_ABSOLUTE_RE = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Z]:[/\\]/i;
10
- const DRIVE_LETTER_RE = /^[A-Z]:$/i;
11
- const cwd = () => {
12
- if (typeof process.cwd === "function") {
13
- return process.cwd().replaceAll("\\", "/");
14
- }
15
- return "/";
16
- };
17
- const normalizeString = (path2, allowAboveRoot) => {
18
- let result = "";
19
- let lastSegmentLength = 0;
20
- let lastSlash = -1;
21
- let dots = 0;
22
- let char;
23
- for (let index = 0; index <= path2.length; ++index) {
24
- if (index < path2.length) {
25
- char = path2[index];
26
- } else if (char === "/") {
27
- break;
28
- } else {
29
- char = "/";
30
- }
31
- if (char === "/") {
32
- if (lastSlash === index - 1 || dots === 1) ;
33
- else if (dots === 2) {
34
- if (result.length < 2 || lastSegmentLength !== 2 || !result.endsWith(".") || result.at(-2) !== ".") {
35
- if (result.length > 2) {
36
- const lastSlashIndex = result.lastIndexOf("/");
37
- if (lastSlashIndex === -1) {
38
- result = "";
39
- lastSegmentLength = 0;
40
- } else {
41
- result = result.slice(0, lastSlashIndex);
42
- lastSegmentLength = result.length - 1 - result.lastIndexOf("/");
43
- }
44
- lastSlash = index;
45
- dots = 0;
46
- continue;
47
- } else if (result.length > 0) {
48
- result = "";
49
- lastSegmentLength = 0;
50
- lastSlash = index;
51
- dots = 0;
52
- continue;
53
- }
54
- }
55
- if (allowAboveRoot) {
56
- result += result.length > 0 ? "/.." : "..";
57
- lastSegmentLength = 2;
58
- }
59
- } else {
60
- if (result.length > 0) {
61
- result += `/${path2.slice(lastSlash + 1, index)}`;
62
- } else {
63
- result = path2.slice(lastSlash + 1, index);
64
- }
65
- lastSegmentLength = index - lastSlash - 1;
66
- }
67
- lastSlash = index;
68
- dots = 0;
69
- } else if (char === "." && dots !== -1) {
70
- ++dots;
71
- } else {
72
- dots = -1;
73
- }
74
- }
75
- return result;
76
- };
77
- const isAbsolute = (path2) => IS_ABSOLUTE_RE.test(path2);
78
- const normalize = function(path2) {
79
- if (path2.length === 0) {
80
- return ".";
81
- }
82
- path2 = normalizeWindowsPath(path2);
83
- const isUNCPath = UNC_REGEX.exec(path2);
84
- const isPathAbsolute = isAbsolute(path2);
85
- const trailingSeparator = path2.at(-1) === "/";
86
- path2 = normalizeString(path2, !isPathAbsolute);
87
- if (path2.length === 0) {
88
- if (isPathAbsolute) {
89
- return "/";
90
- }
91
- return trailingSeparator ? "./" : ".";
92
- }
93
- if (trailingSeparator) {
94
- path2 += "/";
95
- }
96
- if (DRIVE_LETTER_RE.test(path2)) {
97
- path2 += "/";
98
- }
99
- if (isUNCPath) {
100
- if (!isPathAbsolute) {
101
- return `//./${path2}`;
102
- }
103
- return `//${path2}`;
104
- }
105
- return isPathAbsolute && !isAbsolute(path2) ? `/${path2}` : path2;
106
- };
107
- const join = (...segments) => {
108
- let path2 = "";
109
- for (const seg of segments) {
110
- if (!seg) {
111
- continue;
112
- }
113
- if (path2.length > 0) {
114
- const pathTrailing = path2[path2.length - 1] === "/";
115
- const segLeading = seg[0] === "/";
116
- const both = pathTrailing && segLeading;
117
- if (both) {
118
- path2 += seg.slice(1);
119
- } else {
120
- path2 += pathTrailing || segLeading ? seg : `/${seg}`;
121
- }
122
- } else {
123
- path2 += seg;
124
- }
125
- }
126
- return normalize(path2);
127
- };
128
- const resolve = function(...arguments_) {
129
- arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));
130
- let resolvedPath = "";
131
- let resolvedAbsolute = false;
132
- for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {
133
- const path2 = index >= 0 ? arguments_[index] : cwd();
134
- if (!path2 || path2.length === 0) {
135
- continue;
136
- }
137
- resolvedPath = `${path2}/${resolvedPath}`;
138
- resolvedAbsolute = isAbsolute(path2);
139
- }
140
- resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);
141
- if (resolvedAbsolute && !isAbsolute(resolvedPath)) {
142
- return `/${resolvedPath}`;
143
- }
144
- return resolvedPath.length > 0 ? resolvedPath : ".";
145
- };
146
- const dirname = (path2) => {
147
- const segments = normalizeWindowsPath(path2).replace(/\/$/, "").split("/").slice(0, -1);
148
- if (segments.length === 1 && DRIVE_LETTER_RE.test(segments[0])) {
149
- segments[0] += "/";
150
- }
151
- return segments.join("/") || (isAbsolute(path2) ? "/" : ".");
152
- };
153
- const basename = (path2, extension) => {
154
- const lastSegment = normalizeWindowsPath(path2).split("/").pop();
155
- if (extension && lastSegment.endsWith(extension)) {
156
- return lastSegment.slice(0, -extension.length);
157
- }
158
- return lastSegment;
159
- };
160
-
161
- export { normalizeWindowsPath as a, basename as b, dirname as d, isAbsolute as i, join as j, normalize as n, resolve as r };
@@ -1,45 +0,0 @@
1
- import 'mime';
2
-
3
- const buildResponseFile = (file, headers = {}, statusCode = 200) => ({
4
- ...file,
5
- headers,
6
- statusCode
7
- });
8
- const buildFileHeaders = (file, locationUrl, additionalHeaders = {}) => {
9
- return {
10
- Location: locationUrl,
11
- ...file.expiredAt === void 0 ? {} : { "X-Upload-Expires": file.expiredAt.toString() },
12
- ...file.ETag === void 0 ? {} : { ETag: file.ETag },
13
- ...additionalHeaders
14
- };
15
- };
16
- const buildChunkedUploadHeaders = (file, isComplete) => {
17
- const metadata = file.metadata || {};
18
- const headers = {
19
- "x-chunked-upload": "true",
20
- "x-upload-complete": isComplete ? "true" : "false",
21
- "x-upload-offset": String(file.bytesWritten || 0)
22
- };
23
- if (Array.isArray(metadata._chunks) && metadata._chunks.length > 0) {
24
- headers["x-received-chunks"] = JSON.stringify(metadata._chunks);
25
- }
26
- return headers;
27
- };
28
- const buildFileMetadataHeaders = (file) => {
29
- return {
30
- "Content-Length": String(file.size || 0),
31
- "Content-Type": file.contentType,
32
- ...file.expiredAt === void 0 ? {} : { "X-Upload-Expires": file.expiredAt.toString() },
33
- ...file.modifiedAt === void 0 ? {} : { "Last-Modified": file.modifiedAt.toString() },
34
- ...file.ETag === void 0 ? {} : { ETag: file.ETag }
35
- };
36
- };
37
- const convertHeadersToString = (headers) => {
38
- const result = {};
39
- for (const [key, value] of Object.entries(headers)) {
40
- result[key] = Array.isArray(value) ? value.join(", ") : String(value);
41
- }
42
- return result;
43
- };
44
-
45
- export { buildFileHeaders as a, buildResponseFile as b, buildChunkedUploadHeaders as c, buildFileMetadataHeaders as d, convertHeadersToString as e };