@visulima/storage 1.0.0-alpha.34 → 1.0.0-alpha.35

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 (384) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSE.md +29 -0
  3. package/README.md +5 -2
  4. package/dist/adapter/nuxt/module.d.ts +4 -4
  5. package/dist/adapter/nuxt/module.js +1 -1
  6. package/dist/ai/ai-sdk/index.d.ts +6 -6
  7. package/dist/ai/ai-sdk/index.js +1 -1
  8. package/dist/ai/claude/index.d.ts +4 -4
  9. package/dist/ai/claude/index.js +1 -1
  10. package/dist/ai/openai/index.d.ts +5 -5
  11. package/dist/ai/openai/index.js +1 -1
  12. package/dist/ai/tanstack/index.d.ts +5 -5
  13. package/dist/ai/tanstack/index.js +1 -1
  14. package/dist/handler/http/fetch/index.d.ts +7 -7
  15. package/dist/handler/http/fetch/index.js +1 -1
  16. package/dist/handler/http/hono/index.d.ts +4 -4
  17. package/dist/handler/http/hono/index.js +1 -1
  18. package/dist/handler/http/nextjs/index.d.ts +4 -4
  19. package/dist/handler/http/nextjs/index.js +1 -1
  20. package/dist/handler/http/node/index.d.ts +15 -8
  21. package/dist/handler/http/node/index.js +1 -1
  22. package/dist/handler/http/solid-start/index.d.ts +4 -4
  23. package/dist/handler/http/solid-start/index.js +1 -1
  24. package/dist/index.d.ts +54 -7
  25. package/dist/index.js +1 -1
  26. package/dist/openapi/index.js +1 -1
  27. package/dist/packem_shared/AbstractBaseStorage-CiPEMcuo.js +1 -0
  28. package/dist/packem_shared/AwsLightFile-CpZrubaV.js +1 -0
  29. package/dist/packem_shared/AwsLightMetaStorage-C7VINc3X.js +1 -0
  30. package/dist/packem_shared/AwsLightStorage-XTKsrWEe.js +1 -0
  31. package/dist/packem_shared/AzureFile-DFSaVe25.js +1 -0
  32. package/dist/packem_shared/AzureSMetaStorage-wrp-4QPg.js +1 -0
  33. package/dist/packem_shared/AzureStorage-w9CVhOSd.js +1 -0
  34. package/dist/packem_shared/BaseTransformer-Buw5lX_3.js +1 -0
  35. package/dist/packem_shared/BoxFile-CseIoPW1.js +1 -0
  36. package/dist/packem_shared/BoxMetaStorage-B8kCnRx0.js +1 -0
  37. package/dist/packem_shared/BoxStorage-Cs4uBn1C.js +1 -0
  38. package/dist/packem_shared/BunS3File-BcYmsz1n.js +1 -0
  39. package/dist/packem_shared/BunS3MetaStorage-B8kCnRx0.js +1 -0
  40. package/dist/packem_shared/BunS3Storage-Bv4bEpk9.js +1 -0
  41. package/dist/packem_shared/BunnyFile-BgEOlcYI.js +1 -0
  42. package/dist/packem_shared/BunnyMetaStorage-B8kCnRx0.js +1 -0
  43. package/dist/packem_shared/BunnyStorage-DHi3w677.js +1 -0
  44. package/dist/packem_shared/CloudinaryFile-Bo5B-vM1.js +1 -0
  45. package/dist/packem_shared/CloudinaryMetaStorage-DwSHaxII.js +1 -0
  46. package/dist/packem_shared/CloudinaryStorage-a7kbbGvD.js +1 -0
  47. package/dist/packem_shared/DiskStorage-D85ndBIy.js +1 -0
  48. package/dist/packem_shared/DiskStorageWithChecksum-Bs7d8vb1.js +1 -0
  49. package/dist/packem_shared/DropboxFile-BFb7eOzy.js +1 -0
  50. package/dist/packem_shared/DropboxMetaStorage-B8kCnRx0.js +1 -0
  51. package/dist/packem_shared/DropboxStorage-WzidHSCO.js +1 -0
  52. package/dist/packem_shared/ERRORS-BIBxE2oR.js +1 -0
  53. package/dist/packem_shared/File-W8aOo15X.js +1 -0
  54. package/dist/packem_shared/Files-BL-vFOMZ.js +1 -0
  55. package/dist/packem_shared/FirebaseFile-BLaBxa2A.js +1 -0
  56. package/dist/packem_shared/FirebaseMetaStorage-DwSHaxII.js +1 -0
  57. package/dist/packem_shared/FirebaseStorage-XCogI7eF.js +2 -0
  58. package/dist/packem_shared/FtpFile-ClWDYnt2.js +1 -0
  59. package/dist/packem_shared/FtpMetaStorage-B8kCnRx0.js +1 -0
  60. package/dist/packem_shared/FtpStorage-DUsTI8EA.js +1 -0
  61. package/dist/packem_shared/GCSFile-Cero7qZN.js +1 -0
  62. package/dist/packem_shared/GCSMetaStorage-CSZN2Vvj.js +1 -0
  63. package/dist/packem_shared/GCStorage-CoPvMWhk.js +1 -0
  64. package/dist/packem_shared/GoogleDriveFile-DHpLhzg9.js +1 -0
  65. package/dist/packem_shared/GoogleDriveMetaStorage-6u_oNeEQ.js +1 -0
  66. package/dist/packem_shared/GoogleDriveStorage-DQqs4mMr.js +1 -0
  67. package/dist/packem_shared/LocalMetaStorage-C96plQoL.js +1 -0
  68. package/dist/packem_shared/MediaTransformer-D2kUsklW.js +1 -0
  69. package/dist/packem_shared/MemoryMetaStorage-Ksgh9pe7.js +1 -0
  70. package/dist/packem_shared/{MemoryStorage-CgEFb9yw.js → MemoryStorage-9gbWd09l.js} +1 -1
  71. package/dist/packem_shared/MetaStorage-DPEUyWgN.js +1 -0
  72. package/dist/packem_shared/Metadata-kxSBaSee.js +1 -0
  73. package/dist/packem_shared/Multipart-CQjYqU--.js +1 -0
  74. package/dist/packem_shared/Multipart-D0ok6BBy.js +1 -0
  75. package/dist/packem_shared/NetlifyBlobFile-DoFhkzaH.js +1 -0
  76. package/dist/packem_shared/NetlifyBlobMetaStorage-DwSHaxII.js +1 -0
  77. package/dist/packem_shared/NetlifyBlobStorage-Dt78j_3h.js +1 -0
  78. package/dist/packem_shared/NoOpMetrics-BLo6u4NY.js +1 -0
  79. package/dist/packem_shared/OneDriveFile-CNNJYI43.js +1 -0
  80. package/dist/packem_shared/OneDriveMetaStorage-6u_oNeEQ.js +1 -0
  81. package/dist/packem_shared/OneDriveStorage-B24YAM4Z.js +1 -0
  82. package/dist/packem_shared/OpenTelemetryMetrics-DJDQsNKp.js +1 -0
  83. package/dist/packem_shared/PocketBaseFile-DpJpxl3e.js +1 -0
  84. package/dist/packem_shared/PocketBaseMetaStorage-DYZyTYVd.js +1 -0
  85. package/dist/packem_shared/PocketBaseStorage-BNzPUNoh.js +1 -0
  86. package/dist/packem_shared/Rest-Cb2Ja3ny.js +1 -0
  87. package/dist/packem_shared/Rest-QhlT9FbR.js +1 -0
  88. package/dist/packem_shared/S3File-CpZrubaV.js +1 -0
  89. package/dist/packem_shared/S3MetaStorage-DFg42hO6.js +1 -0
  90. package/dist/packem_shared/S3Storage-mYWBfMkZ.js +1 -0
  91. package/dist/packem_shared/SftpFile-ClWDYnt2.js +1 -0
  92. package/dist/packem_shared/SftpMetaStorage-B8kCnRx0.js +1 -0
  93. package/dist/packem_shared/SftpStorage-BA0cBuRg.js +1 -0
  94. package/dist/packem_shared/SharePointFile-Blz9FS4h.js +1 -0
  95. package/dist/packem_shared/SharePointMetaStorage-B8kCnRx0.js +1 -0
  96. package/dist/packem_shared/SharePointStorage-CzYAzzgd.js +1 -0
  97. package/dist/packem_shared/SupabaseFile-Bo5B-vM1.js +1 -0
  98. package/dist/packem_shared/SupabaseMetaStorage-6u_oNeEQ.js +1 -0
  99. package/dist/packem_shared/SupabaseStorage-a_lK2aKT.js +1 -0
  100. package/dist/packem_shared/TUS_RESUMABLE-D-jBomrU.js +1 -0
  101. package/dist/packem_shared/Tus-BvTC2OC2.js +1 -0
  102. package/dist/packem_shared/Tus-DdAo4aXh.js +1 -0
  103. package/dist/packem_shared/UploadControl-DZJhI9Wh.js +1 -0
  104. package/dist/packem_shared/UploadThingFile-BTFMpcIA.js +1 -0
  105. package/dist/packem_shared/UploadThingMetaStorage-DwSHaxII.js +1 -0
  106. package/dist/packem_shared/UploadThingStorage-Fsa2ejS3.js +1 -0
  107. package/dist/packem_shared/ValidationError-3B06DFyE.js +1 -0
  108. package/dist/packem_shared/VercelBlobFile-CVQwKlZk.js +1 -0
  109. package/dist/packem_shared/VercelBlobMetaStorage-B8kCnRx0.js +1 -0
  110. package/dist/packem_shared/VercelBlobStorage-TY7bZ7bB.js +1 -0
  111. package/dist/packem_shared/_commonjsHelpers-CWAkuNXM.js +1 -0
  112. package/dist/packem_shared/agentsCopyFile-Dl5iffdH.js +1 -0
  113. package/dist/packem_shared/akamai-DthkaFul.js +1 -0
  114. package/dist/packem_shared/alibaba-BEi25O1g.js +1 -0
  115. package/dist/packem_shared/approval-fVHwBp7u.js +1 -0
  116. package/dist/packem_shared/aws-light-meta-storage-rDso1apP.js +4 -0
  117. package/dist/packem_shared/azure-meta-storage-DpzQG4vM.js +1 -0
  118. package/dist/packem_shared/backblaze-DDej-Mdl.js +1 -0
  119. package/dist/packem_shared/base-handler-core-D-9Ku1h-.js +1 -0
  120. package/dist/packem_shared/base-handler-fetch-CfkNakv8.js +1 -0
  121. package/dist/packem_shared/base-handler-node-BF1v1qDa.js +1 -0
  122. package/dist/packem_shared/cache-Cw3QjoVN.js +1 -0
  123. package/dist/packem_shared/claudeCopyFile-BX9O4ORk.js +1 -0
  124. package/dist/packem_shared/cloudflare-Dj5nHWcN.js +1 -0
  125. package/dist/packem_shared/copyFile-49FtxXcm.js +1 -0
  126. package/dist/packem_shared/copyFile-BUPezT_c.js +1 -0
  127. package/dist/packem_shared/createResponsesFileTools-6Tvt2PNr.js +1 -0
  128. package/dist/packem_shared/createRetryWrapper-CxgiV_hH.js +1 -0
  129. package/dist/packem_shared/detect-file-type-BA7UBLKA.js +1 -0
  130. package/dist/packem_shared/digitalOcean-B2uB6pgz.js +1 -0
  131. package/dist/packem_shared/disk-storage-B0Mx8dWz.js +1 -0
  132. package/dist/packem_shared/{disk-storage-with-checksum.d-BT_ll5b8.d.ts → disk-storage-with-checksum.d-B-VGEsfl.d.ts} +1 -1
  133. package/dist/packem_shared/executors-BDzMjc4y.js +1 -0
  134. package/dist/packem_shared/{executors.d-D8esmhum.d.ts → executors.d-BZP2rWo3.d.ts} +5 -1
  135. package/dist/packem_shared/exoscale-BDa1Gjth.js +1 -0
  136. package/dist/packem_shared/filebase-CsFYJIwB.js +1 -0
  137. package/dist/packem_shared/{index.d-DB1VD8RP.d.ts → files.d-CH0iLBNC.d.ts} +164 -181
  138. package/dist/packem_shared/gcs-meta-storage-BWlRDy3M.js +1 -0
  139. package/dist/packem_shared/get-file-status-y3wTtDQs.js +1 -0
  140. package/dist/packem_shared/getFormatFromContentType-DCTTPQHm.js +1 -0
  141. package/dist/packem_shared/has-content-50BsqrWw.js +1 -0
  142. package/dist/packem_shared/headers-BAiAKekR.js +26 -0
  143. package/dist/packem_shared/hetzner-BGGFiRGD.js +1 -0
  144. package/dist/packem_shared/ibmCos-j-3TfJ5p.js +1 -0
  145. package/dist/packem_shared/idriveE2-C6pQ5pQ0.js +1 -0
  146. package/dist/packem_shared/index-nZWCQrSe.js +5 -0
  147. package/dist/packem_shared/internal-D_cZIFwI.js +1 -0
  148. package/dist/packem_shared/is-expired-CBEk6XBi.js +1 -0
  149. package/dist/packem_shared/local-meta-storage-DEpVJPLI.js +11 -0
  150. package/dist/packem_shared/{local-meta-storage.d-DUuLtPik.d.ts → local-meta-storage.d-D9PBfkn6.d.ts} +1 -1
  151. package/dist/packem_shared/{media-transformer.d-B9dfBdoV.d.ts → media-transformer.d-Quf4ai47.d.ts} +2 -2
  152. package/dist/packem_shared/{memory-storage.d-BpxSYO-D.d.ts → memory-storage.d-4EU1cMt1.d.ts} +1 -1
  153. package/dist/packem_shared/minio-NKquuBfS.js +1 -0
  154. package/dist/packem_shared/multipart-base-BOzY19lb.js +1 -0
  155. package/dist/packem_shared/oauth-refresh-EdGzlcOZ.js +1 -0
  156. package/dist/packem_shared/oracleCloud-DslqNpn6.js +1 -0
  157. package/dist/packem_shared/ovhCloud-CMHE6uLV.js +1 -0
  158. package/dist/packem_shared/part-match-D-9dGX42.js +1 -0
  159. package/dist/packem_shared/path-0oTTdkvl-DvWvbDbh.js +1 -0
  160. package/dist/packem_shared/posix-dirname-CfpH5wZi.js +1 -0
  161. package/dist/packem_shared/response-builder-CbSA8qPa.js +1 -0
  162. package/dist/packem_shared/rest-base-BnPFeiJd.js +1 -0
  163. package/dist/packem_shared/restOpenApiSpec-Csv513qf.js +1 -0
  164. package/dist/packem_shared/s3-base-storage-DdzBeohR.js +1 -0
  165. package/dist/packem_shared/{s3-base-storage.d-CoYAf_hG.d.ts → s3-base-storage.d-BQgP5B-t.d.ts} +1 -1
  166. package/dist/packem_shared/scaleway-U1In3v70.js +1 -0
  167. package/dist/packem_shared/sharedErrorSchemaObject-YN65aAKj.js +1 -0
  168. package/dist/packem_shared/storage-0j5nCAUp.js +1 -0
  169. package/dist/packem_shared/{storage.d-C6HtvSoY.d.ts → storage.d-CEM1upWM.d.ts} +3 -2
  170. package/dist/packem_shared/storj-Cb59q9kF.js +1 -0
  171. package/dist/packem_shared/sync-DhR3536K.js +1 -0
  172. package/dist/packem_shared/tencent-Q1y2GENc.js +1 -0
  173. package/dist/packem_shared/tigris-BELKoyyp.js +1 -0
  174. package/dist/packem_shared/transformOpenApiSpec-CIEAgpBD.js +1 -0
  175. package/dist/packem_shared/{tus-base.d-Dv25OXL0.d.ts → tus-base.d-DLzKE54M.d.ts} +13 -6
  176. package/dist/packem_shared/tusOpenApiSpec-D96B03t5.js +1 -0
  177. package/dist/packem_shared/{types.d-Cd2-3e-F.d.ts → types.d-Bon9GVVe.d.ts} +1 -1
  178. package/dist/packem_shared/{types.d-CmBrgo0d.d.ts → types.d-CggTCgXr.d.ts} +2 -2
  179. package/dist/packem_shared/{types.d-CmT_ubPu.d.ts → types.d-CrUWY4On.d.ts} +2 -2
  180. package/dist/packem_shared/update-size-DuNuLyxj.js +1 -0
  181. package/dist/packem_shared/vultr-B491cQ4e.js +1 -0
  182. package/dist/packem_shared/waitForStorage-ByQmG4xF.js +1 -0
  183. package/dist/packem_shared/wasabi-DFrwIoab.js +1 -0
  184. package/dist/packem_shared/xhrOpenApiSpec-DQR4h6M8.js +1 -0
  185. package/dist/packem_shared/yandex-CwzHuEKP.js +1 -0
  186. package/dist/storage/aws/clients/index.js +1 -1
  187. package/dist/storage/aws/index.d.ts +2 -2
  188. package/dist/storage/aws/index.js +1 -1
  189. package/dist/storage/aws-light/index.d.ts +2 -2
  190. package/dist/storage/aws-light/index.js +1 -1
  191. package/dist/storage/azure/index.d.ts +1 -1
  192. package/dist/storage/azure/index.js +1 -1
  193. package/dist/storage/box/index.d.ts +2 -2
  194. package/dist/storage/box/index.js +1 -1
  195. package/dist/storage/bun-s3/index.d.ts +2 -2
  196. package/dist/storage/bun-s3/index.js +1 -1
  197. package/dist/storage/bunny/index.d.ts +2 -2
  198. package/dist/storage/bunny/index.js +1 -1
  199. package/dist/storage/cloudinary/index.d.ts +2 -2
  200. package/dist/storage/cloudinary/index.js +1 -1
  201. package/dist/storage/dropbox/index.d.ts +2 -2
  202. package/dist/storage/dropbox/index.js +1 -1
  203. package/dist/storage/firebase/index.d.ts +2 -2
  204. package/dist/storage/firebase/index.js +1 -1
  205. package/dist/storage/ftp/index.d.ts +2 -2
  206. package/dist/storage/ftp/index.js +1 -1
  207. package/dist/storage/gcs/index.d.ts +1 -1
  208. package/dist/storage/gcs/index.js +1 -1
  209. package/dist/storage/google-drive/index.d.ts +2 -2
  210. package/dist/storage/google-drive/index.js +1 -1
  211. package/dist/storage/local/index.d.ts +3 -3
  212. package/dist/storage/local/index.js +1 -1
  213. package/dist/storage/memory/index.d.ts +2 -2
  214. package/dist/storage/memory/index.js +1 -1
  215. package/dist/storage/netlify-blob/index.d.ts +2 -2
  216. package/dist/storage/netlify-blob/index.js +1 -1
  217. package/dist/storage/onedrive/index.d.ts +4 -4
  218. package/dist/storage/onedrive/index.js +1 -1
  219. package/dist/storage/pocketbase/index.d.ts +2 -2
  220. package/dist/storage/pocketbase/index.js +1 -1
  221. package/dist/storage/sftp/index.d.ts +2 -2
  222. package/dist/storage/sftp/index.js +1 -1
  223. package/dist/storage/sharepoint/index.d.ts +3 -3
  224. package/dist/storage/sharepoint/index.js +1 -1
  225. package/dist/storage/supabase/index.d.ts +2 -2
  226. package/dist/storage/supabase/index.js +1 -1
  227. package/dist/storage/uploadthing/index.d.ts +2 -2
  228. package/dist/storage/uploadthing/index.js +1 -1
  229. package/dist/storage/vercel-blob/index.d.ts +2 -2
  230. package/dist/storage/vercel-blob/index.js +1 -1
  231. package/dist/transformer/audio-transformer.d.ts +2 -2
  232. package/dist/transformer/audio-transformer.js +1 -1
  233. package/dist/transformer/image-transformer.d.ts +2 -2
  234. package/dist/transformer/image-transformer.js +1 -1
  235. package/dist/transformer/index.d.ts +3 -3
  236. package/dist/transformer/index.js +1 -1
  237. package/dist/transformer/video-transformer.d.ts +2 -2
  238. package/dist/transformer/video-transformer.js +1 -1
  239. package/package.json +7 -7
  240. package/dist/adapter/nuxt/node_modules/.bin/nuxi +0 -22
  241. package/dist/adapter/nuxt/node_modules/.bin/nuxt +0 -22
  242. package/dist/packem_shared/AwsLightFile-BSqjc_rD.js +0 -1
  243. package/dist/packem_shared/AwsLightMetaStorage-Cj7ym1qI.js +0 -1
  244. package/dist/packem_shared/AwsLightStorage-CWBRVcn5.js +0 -1
  245. package/dist/packem_shared/AzureFile-Dgj2Tef4.js +0 -1
  246. package/dist/packem_shared/AzureSMetaStorage-YCj-X8a1.js +0 -1
  247. package/dist/packem_shared/AzureStorage-nhAojuEU.js +0 -1
  248. package/dist/packem_shared/BaseTransformer-Fpcuz4kj.js +0 -1
  249. package/dist/packem_shared/BoxFile-Be0S4N1L.js +0 -1
  250. package/dist/packem_shared/BoxMetaStorage-XMZn5yvp.js +0 -1
  251. package/dist/packem_shared/BoxStorage-C3--16du.js +0 -1
  252. package/dist/packem_shared/BunS3File-D-SRiyrm.js +0 -1
  253. package/dist/packem_shared/BunS3MetaStorage-DomG8mVK.js +0 -1
  254. package/dist/packem_shared/BunS3Storage-0oYNi2Os.js +0 -1
  255. package/dist/packem_shared/BunnyFile-Dotl-lO9.js +0 -1
  256. package/dist/packem_shared/BunnyMetaStorage-luemw1pL.js +0 -1
  257. package/dist/packem_shared/BunnyStorage-CIkpp1Rc.js +0 -1
  258. package/dist/packem_shared/CloudinaryFile-B5-m33eS.js +0 -1
  259. package/dist/packem_shared/CloudinaryMetaStorage-DpxjshXZ.js +0 -1
  260. package/dist/packem_shared/CloudinaryStorage-9Y1Gq0gr.js +0 -1
  261. package/dist/packem_shared/DiskStorage-BkP8c0MY.js +0 -1
  262. package/dist/packem_shared/DiskStorageWithChecksum-CUXj5mE9.js +0 -1
  263. package/dist/packem_shared/DropboxFile-BGVG2kXM.js +0 -1
  264. package/dist/packem_shared/DropboxMetaStorage-h0eTJuk5.js +0 -1
  265. package/dist/packem_shared/DropboxStorage-CuA9MkpH.js +0 -1
  266. package/dist/packem_shared/ERRORS-vMSqlI69.js +0 -1
  267. package/dist/packem_shared/File-BhfUgJjs.js +0 -1
  268. package/dist/packem_shared/FirebaseFile-JEu3plMP.js +0 -1
  269. package/dist/packem_shared/FirebaseMetaStorage-CCBnEE8_.js +0 -1
  270. package/dist/packem_shared/FirebaseStorage-DUskfjh_.js +0 -2
  271. package/dist/packem_shared/FtpFile-B8jaICTB.js +0 -1
  272. package/dist/packem_shared/FtpMetaStorage-DxHcXk9x.js +0 -1
  273. package/dist/packem_shared/FtpStorage-DMpDY7oG.js +0 -1
  274. package/dist/packem_shared/GCSFile-CDQ6IWAz.js +0 -1
  275. package/dist/packem_shared/GCSMetaStorage-DCBR02C7.js +0 -1
  276. package/dist/packem_shared/GCStorage-RCw58CoD.js +0 -1
  277. package/dist/packem_shared/GoogleDriveFile-D0aGfGbL.js +0 -1
  278. package/dist/packem_shared/GoogleDriveMetaStorage-koEiYfFw.js +0 -1
  279. package/dist/packem_shared/GoogleDriveStorage-DNlVE5Uo.js +0 -1
  280. package/dist/packem_shared/LocalMetaStorage-BKC34woF.js +0 -1
  281. package/dist/packem_shared/MediaTransformer-D-1c9Q_k.js +0 -1
  282. package/dist/packem_shared/MemoryMetaStorage-DEzfBNgL.js +0 -1
  283. package/dist/packem_shared/MetaStorage-Y4m1dWgd.js +0 -1
  284. package/dist/packem_shared/Metadata-B6Ir0KO7.js +0 -1
  285. package/dist/packem_shared/Multipart-D2eF0kMq.js +0 -1
  286. package/dist/packem_shared/Multipart-mlcj2Wm8.js +0 -1
  287. package/dist/packem_shared/NetlifyBlobFile-PMZLJ8AC.js +0 -1
  288. package/dist/packem_shared/NetlifyBlobMetaStorage-DLJLr0fD.js +0 -1
  289. package/dist/packem_shared/NetlifyBlobStorage-DqeW_OGE.js +0 -1
  290. package/dist/packem_shared/NoOpMetrics-Dky06sf1.js +0 -1
  291. package/dist/packem_shared/OneDriveFile-XbVVKIJh.js +0 -1
  292. package/dist/packem_shared/OneDriveMetaStorage-Cuw5g3cr.js +0 -1
  293. package/dist/packem_shared/OneDriveStorage-D41BZtkz.js +0 -1
  294. package/dist/packem_shared/OpenTelemetryMetrics-9uxQMSlg.js +0 -1
  295. package/dist/packem_shared/PocketBaseFile-CkAiSBb0.js +0 -1
  296. package/dist/packem_shared/PocketBaseMetaStorage-BkzeMDP0.js +0 -1
  297. package/dist/packem_shared/PocketBaseStorage-CdvEL3YX.js +0 -1
  298. package/dist/packem_shared/Rest-08Oi3-WZ.js +0 -1
  299. package/dist/packem_shared/Rest-BpyZYW-e.js +0 -1
  300. package/dist/packem_shared/S3File-BfmCOET4.js +0 -1
  301. package/dist/packem_shared/S3MetaStorage-vcriiosn.js +0 -1
  302. package/dist/packem_shared/S3Storage-adY1XLfH.js +0 -1
  303. package/dist/packem_shared/SftpFile-CQCxZNVq.js +0 -1
  304. package/dist/packem_shared/SftpMetaStorage-DN00oxqH.js +0 -1
  305. package/dist/packem_shared/SftpStorage-CDKtnw6a.js +0 -1
  306. package/dist/packem_shared/SharePointFile-BA6X9Sxr.js +0 -1
  307. package/dist/packem_shared/SharePointMetaStorage-WkQcni-I.js +0 -1
  308. package/dist/packem_shared/SharePointStorage-CZkO7FSl.js +0 -1
  309. package/dist/packem_shared/SupabaseFile-DZ1iv9gM.js +0 -1
  310. package/dist/packem_shared/SupabaseMetaStorage-FaEVpmT5.js +0 -1
  311. package/dist/packem_shared/SupabaseStorage-O29RNXWx.js +0 -1
  312. package/dist/packem_shared/TUS_RESUMABLE-B7KtPVeC.js +0 -1
  313. package/dist/packem_shared/Tus-B7k9LUeY.js +0 -1
  314. package/dist/packem_shared/Tus-BZT2Jhl5.js +0 -1
  315. package/dist/packem_shared/UploadControl-jgusdgDN.js +0 -1
  316. package/dist/packem_shared/UploadThingFile-BpG9mE8K.js +0 -1
  317. package/dist/packem_shared/UploadThingMetaStorage-CdDfhiyy.js +0 -1
  318. package/dist/packem_shared/UploadThingStorage-ByryGerX.js +0 -1
  319. package/dist/packem_shared/ValidationError-D8KKJiKA.js +0 -1
  320. package/dist/packem_shared/VercelBlobFile-Cni_1qwD.js +0 -1
  321. package/dist/packem_shared/VercelBlobMetaStorage-CC1zy35k.js +0 -1
  322. package/dist/packem_shared/VercelBlobStorage-C4QUjBfu.js +0 -1
  323. package/dist/packem_shared/_commonjsHelpers-D6W6KoPK.js +0 -1
  324. package/dist/packem_shared/agentsListFiles-Bl2TOnMy.js +0 -1
  325. package/dist/packem_shared/akamai-BYS9pP8S.js +0 -1
  326. package/dist/packem_shared/alibaba-BJQ6ijoK.js +0 -1
  327. package/dist/packem_shared/approval-BBeX3o4E.js +0 -1
  328. package/dist/packem_shared/aws-light-meta-storage-CXIZfLXR.js +0 -4
  329. package/dist/packem_shared/azure-meta-storage-B-D-tBVw.js +0 -1
  330. package/dist/packem_shared/backblaze-CvdtCvJL.js +0 -1
  331. package/dist/packem_shared/base-handler-core-ty4J6Ji6.js +0 -1
  332. package/dist/packem_shared/base-handler-fetch-BAjJyP84.js +0 -1
  333. package/dist/packem_shared/base-handler-node-BCqhH22o.js +0 -1
  334. package/dist/packem_shared/cache-qV_5Umeq.js +0 -1
  335. package/dist/packem_shared/claudeListFiles-yLqM5iFS.js +0 -1
  336. package/dist/packem_shared/cloudflare-Bm_Pg6yx.js +0 -1
  337. package/dist/packem_shared/createResponsesFileTools-DFFHq35s.js +0 -1
  338. package/dist/packem_shared/defaultCloudStorageFileNameValidation-DSAf6C4S.js +0 -1
  339. package/dist/packem_shared/detect-file-type-DRWGvQW4.js +0 -1
  340. package/dist/packem_shared/digitalOcean-Lj1NfDzc.js +0 -1
  341. package/dist/packem_shared/disk-storage-DJ2Nic2v.js +0 -1
  342. package/dist/packem_shared/executors-MzQbS9FT.js +0 -1
  343. package/dist/packem_shared/exoscale-O0HzxoDz.js +0 -1
  344. package/dist/packem_shared/filebase-D-urO4Ob.js +0 -1
  345. package/dist/packem_shared/gcs-meta-storage-BXcsC7xV.js +0 -1
  346. package/dist/packem_shared/get-file-status-DLS18Zvd.js +0 -1
  347. package/dist/packem_shared/has-content-Bx2p8Okx.js +0 -1
  348. package/dist/packem_shared/headers-DC2MEOrK.js +0 -27
  349. package/dist/packem_shared/hetzner-DDxE7Gy7.js +0 -1
  350. package/dist/packem_shared/ibmCos-Rx_yku4H.js +0 -1
  351. package/dist/packem_shared/idriveE2-BFhw0Vwy.js +0 -1
  352. package/dist/packem_shared/index-B4ETk0Lu.js +0 -5
  353. package/dist/packem_shared/is-expired-1JuZjDtb.js +0 -1
  354. package/dist/packem_shared/isRetryableError-CBZ65V6T.js +0 -1
  355. package/dist/packem_shared/isValidMediaType-B-2UKjZx.js +0 -1
  356. package/dist/packem_shared/listFiles-BNGQbV_d.js +0 -1
  357. package/dist/packem_shared/listFiles-BdBngq3i.js +0 -1
  358. package/dist/packem_shared/local-meta-storage-tayO1ARY.js +0 -1
  359. package/dist/packem_shared/minio-T_Z3iEy7.js +0 -1
  360. package/dist/packem_shared/multipart-base-BxckfvQf.js +0 -1
  361. package/dist/packem_shared/oauth-refresh-Dg2ybc6_.js +0 -1
  362. package/dist/packem_shared/oracleCloud-D5T9s4JV.js +0 -1
  363. package/dist/packem_shared/ovhCloud-DCwef2fe.js +0 -1
  364. package/dist/packem_shared/part-match-D_NwyoF3.js +0 -1
  365. package/dist/packem_shared/path-D7rMc9nq-B718mbm6.js +0 -1
  366. package/dist/packem_shared/posix-dirname-CiHXPPnw.js +0 -1
  367. package/dist/packem_shared/response-builder-Wdo_fvcF.js +0 -1
  368. package/dist/packem_shared/rest-base-BG0e-6E0.js +0 -1
  369. package/dist/packem_shared/restOpenApiSpec-PaIVbESh.js +0 -1
  370. package/dist/packem_shared/s3-base-storage-FiC4s91g.js +0 -1
  371. package/dist/packem_shared/scaleway-ygRXOss9.js +0 -1
  372. package/dist/packem_shared/sharedGet-Ce7WGAsc.js +0 -1
  373. package/dist/packem_shared/storage-CI88PmRw.js +0 -1
  374. package/dist/packem_shared/storj-CVA9mM-7.js +0 -1
  375. package/dist/packem_shared/tencent-CAcAGaIW.js +0 -1
  376. package/dist/packem_shared/tigris-wmhjfsH2.js +0 -1
  377. package/dist/packem_shared/transformOpenApiSpec-C0vEbDTO.js +0 -1
  378. package/dist/packem_shared/tusOpenApiSpec-DF0-hlWV.js +0 -1
  379. package/dist/packem_shared/update-size-DANV7aa2.js +0 -1
  380. package/dist/packem_shared/vultr-lK9L-sFk.js +0 -1
  381. package/dist/packem_shared/waitForStorage-ChSBLhLc.js +0 -1
  382. package/dist/packem_shared/wasabi-JQzxdrFy.js +0 -1
  383. package/dist/packem_shared/xhrOpenApiSpec-nyoboz83.js +0 -1
  384. package/dist/packem_shared/yandex-ZwvE77v4.js +0 -1
@@ -0,0 +1,11 @@
1
+ import{utimes as er}from"node:fs/promises";import{tmpdir as tr}from"node:os";import{createRequire as O}from"node:module";import{v as rr,H as ge,B as ht,m as Ut,W as mt,J as or}from"./path-0oTTdkvl-DvWvbDbh.js";import{throwErrorCode as st,ERRORS as nt}from"./ERRORS-BIBxE2oR.js";import sr from"./MetaStorage-DPEUyWgN.js";import{stringifyMetadata as nr,parseMetadata as ir}from"./Metadata-kxSBaSee.js";const Gt=0,ur=O(import.meta.url),be=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ar=t=>{if(typeof be<"u"&&be.versions&&be.versions.node){const[e,r]=be.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return be.getBuiltinModule(t)}return ur(t)},{fileURLToPath:lr}=ar("node:url");function pr(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var At,Rt;function cr(){return Rt||(Rt=1,At=["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cr3","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),At}var fr=cr();const dr=pr(fr);new Set(dr);const ye=t=>rr(t instanceof URL?lr(t):t);let gr=class extends Error{constructor(e){super(`EEXIST: ${e}`)}get code(){return"EEXIST"}set code(e){throw new Error("Cannot overwrite code EEXIST")}get name(){return"AlreadyExistsError"}set name(e){throw new Error("Cannot overwrite name of AlreadyExistsError")}};const he=t=>{if(!t||!(t instanceof URL)&&typeof t!="string")throw new TypeError("Path must be a non-empty string or URL.")},hr=O(import.meta.url),ve=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,mr=t=>{if(typeof ve<"u"&&ve.versions&&ve.versions.node){const[e,r]=ve.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return ve.getBuiltinModule(t)}return hr(t)};mr("node:fs/promises");const yr=O(import.meta.url),$e=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,br=t=>{if(typeof $e<"u"&&$e.versions&&$e.versions.node){const[e,r]=$e.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return $e.getBuiltinModule(t)}return yr(t)};br("node:fs");const yt=t=>{if(t.isFile())return"file";if(t.isDirectory())return"dir";if(t.isSymbolicLink())return"symlink"},vr=O(import.meta.url),Ee=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$r=t=>{if(typeof Ee<"u"&&Ee.versions&&Ee.versions.node){const[e,r]=Ee.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ee.getBuiltinModule(t)}return vr(t)},{lstat:Tt,mkdir:Er}=$r("node:fs/promises"),Kt=async t=>{he(t);try{const e=await Tt(t);if(!e.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${String(yt(e))}'`);return}catch(e){if(e.code!=="ENOENT")throw e}try{await Er(t,{recursive:!0})}catch(e){if(e.code!=="EEXIST")throw e;const r=await Tt(t);if(!r.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${String(yt(r))}'`,{cause:e})}},xr=O(import.meta.url),xe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ar=t=>{if(typeof xe<"u"&&xe.versions&&xe.versions.node){const[e,r]=xe.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return xe.getBuiltinModule(t)}return xr(t)};Ar("node:fs");const Rr=O(import.meta.url),Ae=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Tr=t=>{if(typeof Ae<"u"&&Ae.versions&&Ae.versions.node){const[e,r]=Ae.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ae.getBuiltinModule(t)}return Rr(t)},{lstat:_r,writeFile:wr}=Tr("node:fs/promises"),Hs=async t=>{he(t);try{const e=await _r(t);if(!e.isFile())throw new Error(`Ensure path exists, expected 'file', got '${String(yt(e))}'`)}catch(e){if(e.code==="ENOENT"){await Kt(ge(ye(t))),await wr(t,new Uint8Array);return}throw e}},Sr=O(import.meta.url),Re=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Cr=t=>{if(typeof Re<"u"&&Re.versions&&Re.versions.node){const[e,r]=Re.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Re.getBuiltinModule(t)}return Sr(t)};Cr("node:fs");const Or=O(import.meta.url),Te=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,kr=t=>{if(typeof Te<"u"&&Te.versions&&Te.versions.node){const[e,r]=Te.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Te.getBuiltinModule(t)}return Or(t)};kr("node:fs/promises");const Nr=O(import.meta.url),_e=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Hr=t=>{if(typeof _e<"u"&&_e.versions&&_e.versions.node){const[e,r]=_e.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return _e.getBuiltinModule(t)}return Nr(t)};Hr("node:fs");const Lr=O(import.meta.url),we=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Mr=t=>{if(typeof we<"u"&&we.versions&&we.versions.node){const[e,r]=we.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return we.getBuiltinModule(t)}return Lr(t)};Mr("node:fs/promises");const Br=O(import.meta.url),Se=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ir=t=>{if(typeof Se<"u"&&Se.versions&&Se.versions.node){const[e,r]=Se.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Se.getBuiltinModule(t)}return Br(t)};Ir("node:fs");O(import.meta.url);let _t=class extends Error{root;constructor(e,r){super(`${e instanceof Error?e.message:String(e)} for path "${r}"`),this.cause=e,this.root=r}get name(){return"WalkError"}set name(e){throw new Error("Cannot overwrite name of WalkError")}};const wt=t=>{const e=t.replace(/[$()+\\^]/g,String.raw`\$&`).replace(/\.\*/g,".([^/]*)").replace(/\*\*/g,"(.*)").replace(/(?<!\.)\*(?!\*)/g,"([^/]*)").replace(/\?/g,"[^/]").replace(/\.(?!\*)/g,String.raw`\.`).replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!(.*?)\]/g,"[^$1]");try{return new RegExp(`^${e}$`)}catch(r){throw new Error(`Invalid glob pattern: ${t}`,{cause:r})}};let Dr=class{name;path;#e;constructor(e,r,m){this.#e=e,this.name=r,this.path=m}isDirectory(){return this.#e.isDirectory()}isFile(){return this.#e.isFile()}isSymbolicLink(){return this.#e.isSymbolicLink()}};const bt=(t,e,r)=>new Dr(t,e,r),tt=(t,e,r,m)=>{if(Array.isArray(e)&&e.length>0&&!e.some(o=>t.endsWith(o)))return!1;const p=t.includes("\\")?t.replaceAll("\\","/"):t;return r&&!r.some(o=>o.test(p))?!1:!m?.some(o=>o.test(p))},Pr=O(import.meta.url),Ce=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Fr=t=>{if(typeof Ce<"u"&&Ce.versions&&Ce.versions.node){const[e,r]=Ce.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ce.getBuiltinModule(t)}return Pr(t)},{readdir:Ur,realpath:Gr,stat:zt}=Fr("node:fs/promises"),Kr=async t=>{const e=mt(t),r=or(e),m=await zt(e);return bt(m,r,e)};async function*zr(t,e={}){const{extensions:r,followSymlinks:m=!1,includeDirs:p=!0,includeFiles:o=!0,includeSymlinks:a=!0,match:d,maxDepth:l=Number.POSITIVE_INFINITY,skip:A}=e;if(he(t),l<0)return;const h=e.visited??new Set,R=d?d.map(b=>typeof b=="string"?wt(b):b):void 0,T=A?A.map(b=>typeof b=="string"?wt(b):b):void 0;if(t=ht(ye(t)),p&&tt(t,r,R,T)&&(yield await Kr(t)),!(l<1||!tt(t,void 0,void 0,T)))try{const b=await Ur(t,{withFileTypes:!0});for(const k of b){let U=Ut(t,k.name),W=k.isDirectory(),z=k.isFile();if(k.isSymbolicLink())if(m){const c=await Gr(U);if(h.has(c))continue;U=c;const y=await zt(c);W=y.isDirectory(),z=y.isFile()}else if(a&&tt(U,r,R,T)){yield bt(k,k.name,U);continue}else continue;W?(m&&h.add(U),yield*zr(U,{extensions:r,followSymlinks:m,includeDirs:p,includeFiles:o,includeSymlinks:a,match:R,maxDepth:l-1,skip:T,visited:h})):z&&o&&tt(U,r,R,T)&&(yield bt(k,k.name,U))}}catch(b){throw b instanceof _t?b:new _t(b,t)}}const Xr=O(import.meta.url),Oe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Wr=t=>{if(typeof Oe<"u"&&Oe.versions&&Oe.versions.node){const[e,r]=Oe.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Oe.getBuiltinModule(t)}return Xr(t)};Wr("node:fs");const jr=O(import.meta.url),ke=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Qr=t=>{if(typeof ke<"u"&&ke.versions&&ke.versions.node){const[e,r]=ke.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return ke.getBuiltinModule(t)}return jr(t)};Qr("node:fs/promises");const qr=O(import.meta.url),Ne=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Vr=t=>{if(typeof Ne<"u"&&Ne.versions&&Ne.versions.node){const[e,r]=Ne.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ne.getBuiltinModule(t)}return qr(t)};Vr("node:fs");function $t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var St={},it,Ct;function rt(){if(Ct)return it;Ct=1;const t="[^\\\\/]",e=Symbol("unignore"),r="\\.",m="\\+",p="\\?",o="\\/",a="(?=.)",d="[^/]",l=`(?:${o}|$)`,A=`(?:^|${o})`,h=`${r}{1,2}${l}`,R=`(?!${r})`,T=`(?!${A}${h})`,b=`(?!${r}{0,1}${l})`,k=`(?!${h})`,U=`[^.${o}]`,W=`${d}*?`,z="/",c={DOT_LITERAL:r,PLUS_LITERAL:m,QMARK_LITERAL:p,SLASH_LITERAL:o,ONE_CHAR:a,QMARK:d,END_ANCHOR:l,DOTS_SLASH:h,NO_DOT:R,NO_DOTS:T,NO_DOT_SLASH:b,NO_DOTS_SLASH:k,QMARK_NO_DOT:U,STAR:W,START_ANCHOR:A,SEP:z},y={...c,SLASH_LITERAL:"[\\\\/]",QMARK:t,STAR:`${t}*?`,DOTS_SLASH:`${r}{1,2}(?:[\\\\/]|$)`,NO_DOT:`(?!${r})`,NO_DOTS:`(?!(?:^|[\\\\/])${r}{1,2}(?:[\\\\/]|$))`,NO_DOT_SLASH:`(?!${r}{0,1}(?:[\\\\/]|$))`,NO_DOTS_SLASH:`(?!${r}{1,2}(?:[\\\\/]|$))`,QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)",SEP:"\\"},s={__proto__:null,alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};return it={DEFAULT_MAX_EXTGLOB_RECURSION:0,MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:s,UNIGNORE:e,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars(v){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${v.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(v){return v===!0?y:c}},it}var Ot;function ot(){return Ot||(Ot=1,(function(t){const{REGEX_BACKSLASH:e,REGEX_REMOVE_BACKSLASH:r,REGEX_SPECIAL_CHARS:m,REGEX_SPECIAL_CHARS_GLOBAL:p}=rt();t.isObject=o=>o!==null&&typeof o=="object"&&!Array.isArray(o),t.hasRegexChars=o=>m.test(o),t.isRegexChar=o=>o.length===1&&t.hasRegexChars(o),t.escapeRegex=o=>o.replace(p,"\\$1"),t.toPosixSlashes=o=>o.replace(e,"/"),t.isWindows=()=>{if(typeof navigator<"u"&&navigator.platform){const o=navigator.platform.toLowerCase();return o==="win32"||o==="windows"}return process.platform?process.platform==="win32":!1},t.removeBackslashes=o=>o.replace(r,a=>a==="\\"?"":a),t.escapeLast=(o,a,d)=>{const l=o.lastIndexOf(a,d);return l===-1?o:o[l-1]==="\\"?t.escapeLast(o,a,l-1):`${o.slice(0,l)}\\${o.slice(l)}`},t.removePrefix=(o,a={})=>{let d=o;return d.startsWith("./")&&(d=d.slice(2),a.prefix="./"),d},t.wrapOutput=(o,a={},d={})=>{const l=d.contains?"":"^",A=d.contains?"":"$";let h=`${l}(?:${o})${A}`;return a.negated===!0&&(h=`(?:^(?!${h}).*$)`),h},t.basename=(o,{windows:a}={})=>{const d=o.split(a?/[\\/]/:"/"),l=d[d.length-1];return l===""?d[d.length-2]:l}})(St)),St}var ut,kt;function Yr(){if(kt)return ut;kt=1;const t=ot(),{CHAR_ASTERISK:e,CHAR_AT:r,CHAR_BACKWARD_SLASH:m,CHAR_COMMA:p,CHAR_DOT:o,CHAR_EXCLAMATION_MARK:a,CHAR_FORWARD_SLASH:d,CHAR_LEFT_CURLY_BRACE:l,CHAR_LEFT_PARENTHESES:A,CHAR_LEFT_SQUARE_BRACKET:h,CHAR_PLUS:R,CHAR_QUESTION_MARK:T,CHAR_RIGHT_CURLY_BRACE:b,CHAR_RIGHT_PARENTHESES:k,CHAR_RIGHT_SQUARE_BRACKET:U}=rt(),W=c=>c===d||c===m,z=c=>{c.isPrefix!==!0&&(c.depth=c.isGlobstar?1/0:1)};return ut=(c,y)=>{const s=y||{},v=c.length-1,E=s.parts===!0||s.scanToEnd===!0,x=[],$=[],N=[];let Q=c,Y=-1,G=0,re=0,q=!1,oe=!1,I=!1,ae=!1,fe=!1,se=!1,M=!1,ne=!1,de=!1,V=!1,j=0,J,_,C={value:"",depth:0,isGlob:!1};const u=()=>Y>=v,Z=()=>Q.charCodeAt(Y+1),K=()=>(J=_,Q.charCodeAt(++Y));for(;Y<v;){_=K();let H;if(_===m){M=C.backslashes=!0,_=K(),_===l&&(se=!0);continue}if(se===!0||_===l){for(j++;u()!==!0&&(_=K());){if(_===m){M=C.backslashes=!0,K();continue}if(_===l){j++;continue}if(se!==!0&&_===o&&(_=K())===o){if(q=C.isBrace=!0,I=C.isGlob=!0,V=!0,E===!0)continue;break}if(se!==!0&&_===p){if(q=C.isBrace=!0,I=C.isGlob=!0,V=!0,E===!0)continue;break}if(_===b&&(j--,j===0)){se=!1,q=C.isBrace=!0,V=!0;break}}if(E===!0)continue;break}if(_===d){if(x.push(Y),$.push(C),C={value:"",depth:0,isGlob:!1},V===!0)continue;if(J===o&&Y===G+1){G+=2;continue}re=Y+1;continue}if(s.noext!==!0&&(_===R||_===r||_===e||_===T||_===a)&&Z()===A){if(I=C.isGlob=!0,ae=C.isExtglob=!0,V=!0,_===a&&Y===G&&(de=!0),E===!0){for(;u()!==!0&&(_=K());){if(_===m){M=C.backslashes=!0,_=K();continue}if(_===k){I=C.isGlob=!0,V=!0;break}}continue}break}if(_===e){if(J===e&&(fe=C.isGlobstar=!0),I=C.isGlob=!0,V=!0,E===!0)continue;break}if(_===T){if(I=C.isGlob=!0,V=!0,E===!0)continue;break}if(_===h){for(;u()!==!0&&(H=K());){if(H===m){M=C.backslashes=!0,K();continue}if(H===U){oe=C.isBracket=!0,I=C.isGlob=!0,V=!0;break}}if(E===!0)continue;break}if(s.nonegate!==!0&&_===a&&Y===G){ne=C.negated=!0,G++;continue}if(s.noparen!==!0&&_===A){if(I=C.isGlob=!0,E===!0){for(;u()!==!0&&(_=K());){if(_===A){M=C.backslashes=!0,_=K();continue}if(_===k){V=!0;break}}continue}break}if(I===!0){if(V=!0,E===!0)continue;break}}s.noext===!0&&(ae=!1,I=!1);let F=Q,n="",i="";G>0&&(n=Q.slice(0,G),Q=Q.slice(G),re-=G),F&&I===!0&&re>0?(F=Q.slice(0,re),i=Q.slice(re)):I===!0?(F="",i=Q):F=Q,F&&F!==""&&F!=="/"&&F!==Q&&W(F.charCodeAt(F.length-1))&&(F=F.slice(0,-1)),s.unescape===!0&&(i&&(i=t.removeBackslashes(i)),F&&M===!0&&(F=t.removeBackslashes(F)));const te={prefix:n,input:c,start:G,base:F,glob:i,isBrace:q,isBracket:oe,isGlob:I,isExtglob:ae,isGlobstar:fe,negated:ne,negatedExtglob:de};if(s.tokens===!0&&(te.maxDepth=0,W(_)||$.push(C),te.tokens=$),s.parts===!0||s.tokens===!0){let H;for(let D=0;D<x.length;D++){const le=H?H+1:G,ee=x[D],pe=c.slice(le,ee);s.tokens&&(D===0&&G!==0?($[D].isPrefix=!0,$[D].value=n):$[D].value=pe,z($[D]),te.maxDepth+=$[D].depth),(D!==0||pe!=="")&&N.push(pe),H=ee}if(H&&H+1<c.length){const D=c.slice(H+1);N.push(D),s.tokens&&($[$.length-1].value=D,z($[$.length-1]),te.maxDepth+=$[$.length-1].depth)}te.slashes=x,te.parts=N}return te},ut}var at,Nt;function Zr(){if(Nt)return at;Nt=1;const t=rt(),e=ot(),{MAX_LENGTH:r,POSIX_REGEX_SOURCE:m,REGEX_NON_SPECIAL_CHARS:p,REGEX_SPECIAL_CHARS_BACKREF:o,REPLACEMENTS:a}=t,d=(c,y)=>typeof y.expandRange=="function"?y.expandRange(...c,y):(c.sort(),`[${c.join("-")}]`),l=(c,y)=>`Missing ${c}: "${y}" - use "\\\\${y}" to match literal characters`,A=c=>{const y=[];let s=0,v=0,E=0,x="",$=!1;for(const N of c){if($===!0){x+=N,$=!1;continue}if(N==="\\"){x+=N,$=!0;continue}if(N==='"'){E=E===1?0:1,x+=N;continue}if(E===0){if(N==="[")s++;else if(N==="]"&&s>0)s--;else if(s===0){if(N==="(")v++;else if(N===")"&&v>0)v--;else if(N==="|"&&v===0){y.push(x),x="";continue}}}x+=N}return y.push(x),y},h=c=>{let y=!1;for(const s of c){if(y===!0){y=!1;continue}if(s==="\\"){y=!0;continue}if(/[?*+@!()[\]{}]/.test(s))return!1}return!0},R=c=>{let y=c.trim(),s=!0;for(;s===!0;)s=!1,/^@\([^\\()[\]{}|]+\)$/.test(y)&&(y=y.slice(2,-1),s=!0);if(h(y))return y.replace(/\\(.)/g,"$1")},T=c=>{const y=c.map(R).filter(Boolean);for(let s=0;s<y.length;s++)for(let v=s+1;v<y.length;v++){const E=y[s],x=y[v],$=E[0];if(!(!$||E!==$.repeat(E.length)||x!==$.repeat(x.length))&&(E===x||E.startsWith(x)||x.startsWith(E)))return!0}return!1},b=(c,y=!0)=>{if(c[0]!=="+"&&c[0]!=="*"||c[1]!=="(")return;let s=0,v=0,E=0,x=!1;for(let $=1;$<c.length;$++){const N=c[$];if(x===!0){x=!1;continue}if(N==="\\"){x=!0;continue}if(N==='"'){E=E===1?0:1;continue}if(E!==1){if(N==="["){s++;continue}if(N==="]"&&s>0){s--;continue}if(!(s>0)){if(N==="("){v++;continue}if(N===")"&&(v--,v===0))return y===!0&&$!==c.length-1?void 0:{type:c[0],body:c.slice(2,$),end:$}}}}},k=c=>{let y=0;const s=[];for(;y<c.length;){const v=b(c.slice(y),!1);if(!v||v.type!=="*")return;const E=A(v.body).map($=>$.trim());if(E.length!==1)return;const x=R(E[0]);if(!x||x.length!==1)return;s.push(x),y+=v.end+1}return s.length<1?void 0:`${s.length===1?e.escapeRegex(s[0]):`[${s.map(v=>e.escapeRegex(v)).join("")}]`}*`},U=c=>{let y=0,s=c.trim(),v=b(s);for(;v;)y++,s=v.body.trim(),v=b(s);return y},W=(c,y)=>{if(y.maxExtglobRecursion===!1)return{risky:!1};const s=typeof y.maxExtglobRecursion=="number"?y.maxExtglobRecursion:t.DEFAULT_MAX_EXTGLOB_RECURSION,v=A(c).map(E=>E.trim());if(v.length>1&&(v.some(E=>E==="")||v.some(E=>/^[*?]+$/.test(E))||T(v)))return{risky:!0};for(const E of v){const x=k(E);if(x)return{risky:!0,safeOutput:x};if(U(E)>s)return{risky:!0}}return{risky:!1}},z=(c,y)=>{if(typeof c!="string")throw new TypeError("Expected a string");c=a[c]||c;const s={...y},v=typeof s.maxLength=="number"?Math.min(r,s.maxLength):r;let E=c.length;if(E>v)throw new SyntaxError(`Input length: ${E}, exceeds maximum allowed length: ${v}`);const x={type:"bos",value:"",output:s.prepend||""},$=[x],N=s.capture?"":"?:",Q=t.globChars(s.windows),Y=t.extglobChars(Q),{DOT_LITERAL:G,PLUS_LITERAL:re,SLASH_LITERAL:q,ONE_CHAR:oe,DOTS_SLASH:I,NO_DOT:ae,NO_DOT_SLASH:fe,NO_DOTS_SLASH:se,QMARK:M,QMARK_NO_DOT:ne,STAR:de,START_ANCHOR:V}=Q,j=g=>`(${N}(?:(?!${V}${g.dot?I:G}).)*?)`,J=s.dot?"":ae,_=s.dot?M:ne;let C=s.bash===!0?j(s):de;s.capture&&(C=`(${C})`),typeof s.noext=="boolean"&&(s.noextglob=s.noext);const u={input:c,index:-1,start:0,dot:s.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:$};c=e.removePrefix(c,u),E=c.length;const Z=[],K=[],F=[];let n=x,i;const te=()=>u.index===E-1,H=u.peek=(g=1)=>c[u.index+g],D=u.advance=()=>c[++u.index]||"",le=()=>c.slice(u.index+1),ee=(g="",B=0)=>{u.consumed+=g,u.index+=B},pe=g=>{u.output+=g.output!=null?g.output:g.value,ee(g.value)},Zt=()=>{let g=1;for(;H()==="!"&&(H(2)!=="("||H(3)==="?");)D(),u.start++,g++;return g%2===0?!1:(u.negated=!0,u.start++,!0)},Je=g=>{u[g]++,F.push(g)},ce=g=>{u[g]--,F.pop()},w=g=>{if(n.type==="globstar"){const B=u.braces>0&&(g.type==="comma"||g.type==="brace"),f=g.extglob===!0||Z.length&&(g.type==="pipe"||g.type==="paren");g.type!=="slash"&&g.type!=="paren"&&!B&&!f&&(u.output=u.output.slice(0,-n.output.length),n.type="star",n.value="*",n.output=C,u.output+=n.output)}if(Z.length&&g.type!=="paren"&&(Z[Z.length-1].inner+=g.value),(g.value||g.output)&&pe(g),n&&n.type==="text"&&g.type==="text"){n.output=(n.output||n.value)+g.value,n.value+=g.value;return}g.prev=n,$.push(g),n=g},et=(g,B)=>{const f={...Y[B],conditions:1,inner:""};f.prev=n,f.parens=u.parens,f.output=u.output,f.startIndex=u.index,f.tokensIndex=$.length;const S=(s.capture?"(":"")+f.open;Je("parens"),w({type:g,value:B,output:u.output?"":oe}),w({type:"paren",extglob:!0,value:D(),output:S}),Z.push(f)},Jt=g=>{const B=c.slice(g.startIndex,u.index+1),f=c.slice(g.startIndex+2,u.index),S=W(f,s);if((g.type==="plus"||g.type==="star")&&S.risky){const L=S.safeOutput?(g.output?"":oe)+(s.capture?`(${S.safeOutput})`:S.safeOutput):void 0,ie=$[g.tokensIndex];ie.type="text",ie.value=B,ie.output=L||e.escapeRegex(B);for(let ue=g.tokensIndex+1;ue<$.length;ue++)$[ue].value="",$[ue].output="",delete $[ue].suffix;u.output=g.output+ie.output,u.backtrack=!0,w({type:"paren",extglob:!0,value:i,output:""}),ce("parens");return}let P=g.close+(s.capture?")":""),X;if(g.type==="negate"){let L=C;if(g.inner&&g.inner.length>1&&g.inner.includes("/")&&(L=j(s)),(L!==C||te()||/^\)+$/.test(le()))&&(P=g.close=`)$))${L}`),g.inner.includes("*")&&(X=le())&&/^\.[^\\/.]+$/.test(X)){const ie=z(X,{...y,fastpaths:!1}).output;P=g.close=`)${ie})${L})`}g.prev.type==="bos"&&(u.negatedExtglob=!0)}w({type:"paren",extglob:!0,value:i,output:P}),ce("parens")};if(s.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(c)){let g=!1,B=c.replace(o,(f,S,P,X,L,ie)=>X==="\\"?(g=!0,f):X==="?"?S?S+X+(L?M.repeat(L.length):""):ie===0?_+(L?M.repeat(L.length):""):M.repeat(P.length):X==="."?G.repeat(P.length):X==="*"?S?S+X+(L?C:""):C:S?f:`\\${f}`);return g===!0&&(s.unescape===!0?B=B.replace(/\\/g,""):B=B.replace(/\\+/g,f=>f.length%2===0?"\\\\":f?"\\":"")),B===c&&s.contains===!0?(u.output=c,u):(u.output=e.wrapOutput(B,u,y),u)}for(;!te();){if(i=D(),i==="\0")continue;if(i==="\\"){const f=H();if(f==="/"&&s.bash!==!0||f==="."||f===";")continue;if(!f){i+="\\",w({type:"text",value:i});continue}const S=/^\\+/.exec(le());let P=0;if(S&&S[0].length>2&&(P=S[0].length,u.index+=P,P%2!==0&&(i+="\\")),s.unescape===!0?i=D():i+=D(),u.brackets===0){w({type:"text",value:i});continue}}if(u.brackets>0&&(i!=="]"||n.value==="["||n.value==="[^")){if(s.posix!==!1&&i===":"){const f=n.value.slice(1);if(f.includes("[")&&(n.posix=!0,f.includes(":"))){const S=n.value.lastIndexOf("["),P=n.value.slice(0,S),X=n.value.slice(S+2),L=m[X];if(L){n.value=P+L,u.backtrack=!0,D(),!x.output&&$.indexOf(n)===1&&(x.output=oe);continue}}}(i==="["&&H()!==":"||i==="-"&&H()==="]")&&(i=`\\${i}`),i==="]"&&(n.value==="["||n.value==="[^")&&(i=`\\${i}`),s.posix===!0&&i==="!"&&n.value==="["&&(i="^"),n.value+=i,pe({value:i});continue}if(u.quotes===1&&i!=='"'){i=e.escapeRegex(i),n.value+=i,pe({value:i});continue}if(i==='"'){u.quotes=u.quotes===1?0:1,s.keepQuotes===!0&&w({type:"text",value:i});continue}if(i==="("){Je("parens"),w({type:"paren",value:i});continue}if(i===")"){if(u.parens===0&&s.strictBrackets===!0)throw new SyntaxError(l("opening","("));const f=Z[Z.length-1];if(f&&u.parens===f.parens+1){Jt(Z.pop());continue}w({type:"paren",value:i,output:u.parens?")":"\\)"}),ce("parens");continue}if(i==="["){if(s.nobracket===!0||!le().includes("]")){if(s.nobracket!==!0&&s.strictBrackets===!0)throw new SyntaxError(l("closing","]"));i=`\\${i}`}else Je("brackets");w({type:"bracket",value:i});continue}if(i==="]"){if(s.nobracket===!0||n&&n.type==="bracket"&&n.value.length===1){w({type:"text",value:i,output:`\\${i}`});continue}if(u.brackets===0){if(s.strictBrackets===!0)throw new SyntaxError(l("opening","["));w({type:"text",value:i,output:`\\${i}`});continue}ce("brackets");const f=n.value.slice(1);if(n.posix!==!0&&f[0]==="^"&&!f.includes("/")&&(i=`/${i}`),n.value+=i,pe({value:i}),s.literalBrackets===!1||e.hasRegexChars(f))continue;const S=e.escapeRegex(n.value);if(u.output=u.output.slice(0,-n.value.length),s.literalBrackets===!0){u.output+=S,n.value=S;continue}n.value=`(${N}${S}|${n.value})`,u.output+=n.value;continue}if(i==="{"&&s.nobrace!==!0){Je("braces");const f={type:"brace",value:i,output:"(",outputIndex:u.output.length,tokensIndex:u.tokens.length};K.push(f),w(f);continue}if(i==="}"){const f=K[K.length-1];if(s.nobrace===!0||!f){w({type:"text",value:i,output:i});continue}let S=")";if(f.dots===!0){const P=$.slice(),X=[];for(let L=P.length-1;L>=0&&($.pop(),P[L].type!=="brace");L--)P[L].type!=="dots"&&X.unshift(P[L].value);S=d(X,s),u.backtrack=!0}if(f.comma!==!0&&f.dots!==!0){const P=u.output.slice(0,f.outputIndex),X=u.tokens.slice(f.tokensIndex);f.value=f.output="\\{",i=S="\\}",u.output=P;for(const L of X)u.output+=L.output||L.value}w({type:"brace",value:i,output:S}),ce("braces"),K.pop();continue}if(i==="|"){Z.length>0&&Z[Z.length-1].conditions++,w({type:"text",value:i});continue}if(i===","){let f=i;const S=K[K.length-1];S&&F[F.length-1]==="braces"&&(S.comma=!0,f="|"),w({type:"comma",value:i,output:f});continue}if(i==="/"){if(n.type==="dot"&&u.index===u.start+1){u.start=u.index+1,u.consumed="",u.output="",$.pop(),n=x;continue}w({type:"slash",value:i,output:q});continue}if(i==="."){if(u.braces>0&&n.type==="dot"){n.value==="."&&(n.output=G);const f=K[K.length-1];n.type="dots",n.output+=i,n.value+=i,f.dots=!0;continue}if(u.braces+u.parens===0&&n.type!=="bos"&&n.type!=="slash"){w({type:"text",value:i,output:G});continue}w({type:"dot",value:i,output:G});continue}if(i==="?"){if(!(n&&n.value==="(")&&s.noextglob!==!0&&H()==="("&&H(2)!=="?"){et("qmark",i);continue}if(n&&n.type==="paren"){const f=H();let S=i;(n.value==="("&&!/[!=<:]/.test(f)||f==="<"&&!/<([!=]|\w+>)/.test(le()))&&(S=`\\${i}`),w({type:"text",value:i,output:S});continue}if(s.dot!==!0&&(n.type==="slash"||n.type==="bos")){w({type:"qmark",value:i,output:ne});continue}w({type:"qmark",value:i,output:M});continue}if(i==="!"){if(s.noextglob!==!0&&H()==="("&&(H(2)!=="?"||!/[!=<:]/.test(H(3)))){et("negate",i);continue}if(s.nonegate!==!0&&u.index===0){Zt();continue}}if(i==="+"){if(s.noextglob!==!0&&H()==="("&&H(2)!=="?"){et("plus",i);continue}if(n&&n.value==="("||s.regex===!1){w({type:"plus",value:i,output:re});continue}if(n&&(n.type==="bracket"||n.type==="paren"||n.type==="brace")||u.parens>0){w({type:"plus",value:i});continue}w({type:"plus",value:re});continue}if(i==="@"){if(s.noextglob!==!0&&H()==="("&&H(2)!=="?"){w({type:"at",extglob:!0,value:i,output:""});continue}w({type:"text",value:i});continue}if(i!=="*"){(i==="$"||i==="^")&&(i=`\\${i}`);const f=p.exec(le());f&&(i+=f[0],u.index+=f[0].length),w({type:"text",value:i});continue}if(n&&(n.type==="globstar"||n.star===!0)){n.type="star",n.star=!0,n.value+=i,n.output=C,u.backtrack=!0,u.globstar=!0,ee(i);continue}let g=le();if(s.noextglob!==!0&&/^\([^?]/.test(g)){et("star",i);continue}if(n.type==="star"){if(s.noglobstar===!0){ee(i);continue}const f=n.prev,S=f.prev,P=f.type==="slash"||f.type==="bos",X=S&&(S.type==="star"||S.type==="globstar");if(s.bash===!0&&(!P||g[0]&&g[0]!=="/")){w({type:"star",value:i,output:""});continue}const L=u.braces>0&&(f.type==="comma"||f.type==="brace"),ie=Z.length&&(f.type==="pipe"||f.type==="paren");if(!P&&f.type!=="paren"&&!L&&!ie){w({type:"star",value:i,output:""});continue}for(;g.slice(0,3)==="/**";){const ue=c[u.index+4];if(ue&&ue!=="/")break;g=g.slice(3),ee("/**",3)}if(f.type==="bos"&&te()){n.type="globstar",n.value+=i,n.output=j(s),u.output=n.output,u.globstar=!0,ee(i);continue}if(f.type==="slash"&&f.prev.type!=="bos"&&!X&&te()){u.output=u.output.slice(0,-(f.output+n.output).length),f.output=`(?:${f.output}`,n.type="globstar",n.output=j(s)+(s.strictSlashes?")":"|$)"),n.value+=i,u.globstar=!0,u.output+=f.output+n.output,ee(i);continue}if(f.type==="slash"&&f.prev.type!=="bos"&&g[0]==="/"){const ue=g[1]!==void 0?"|$":"";u.output=u.output.slice(0,-(f.output+n.output).length),f.output=`(?:${f.output}`,n.type="globstar",n.output=`${j(s)}${q}|${q}${ue})`,n.value+=i,u.output+=f.output+n.output,u.globstar=!0,ee(i+D()),w({type:"slash",value:"/",output:""});continue}if(f.type==="bos"&&g[0]==="/"){n.type="globstar",n.value+=i,n.output=`(?:^|${q}|${j(s)}${q})`,u.output=n.output,u.globstar=!0,ee(i+D()),w({type:"slash",value:"/",output:""});continue}if(L&&g[0]==="/"){n.type="globstar",n.value+=i,n.output=`(?:^|${q}|${j(s)}${q})`,u.output+=n.output,u.globstar=!0,ee(i+D()),w({type:"slash",value:"/",output:""});continue}u.output=u.output.slice(0,-n.output.length),n.type="globstar",n.output=j(s),n.value+=i,u.output+=n.output,u.globstar=!0,ee(i);continue}const B={type:"star",value:i,output:C};if(s.bash===!0){B.output=".*?",(n.type==="bos"||n.type==="slash")&&(B.output=J+B.output),w(B);continue}if(n&&(n.type==="bracket"||n.type==="paren")&&s.regex===!0){B.output=i,w(B);continue}(u.index===u.start||n.type==="slash"||n.type==="dot")&&(n.type==="dot"?(u.output+=fe,n.output+=fe):s.dot===!0?(u.output+=se,n.output+=se):(u.output+=J,n.output+=J),H()!=="*"&&(u.output+=oe,n.output+=oe)),w(B)}for(;u.brackets>0;){if(s.strictBrackets===!0)throw new SyntaxError(l("closing","]"));u.output=e.escapeLast(u.output,"["),ce("brackets")}for(;u.parens>0;){if(s.strictBrackets===!0)throw new SyntaxError(l("closing",")"));u.output=e.escapeLast(u.output,"("),ce("parens")}for(;u.braces>0;){if(s.strictBrackets===!0)throw new SyntaxError(l("closing","}"));u.output=e.escapeLast(u.output,"{"),ce("braces")}if(s.strictSlashes!==!0&&(n.type==="star"||n.type==="bracket")&&w({type:"maybe_slash",value:"",output:`${q}?`}),u.backtrack===!0){u.output="";for(const g of u.tokens)u.output+=g.output!=null?g.output:g.value,g.suffix&&(u.output+=g.suffix)}return u};return z.fastpaths=(c,y)=>{const s={...y},v=typeof s.maxLength=="number"?Math.min(r,s.maxLength):r,E=c.length;if(E>v)throw new SyntaxError(`Input length: ${E}, exceeds maximum allowed length: ${v}`);c=a[c]||c;const{DOT_LITERAL:x,SLASH_LITERAL:$,ONE_CHAR:N,DOTS_SLASH:Q,NO_DOT:Y,NO_DOTS:G,NO_DOTS_SLASH:re,STAR:q,START_ANCHOR:oe}=t.globChars(s.windows),I=s.dot?G:Y,ae=s.dot?re:Y,fe=s.capture?"":"?:",se={negated:!1,prefix:""};let M=s.bash===!0?".*?":q;s.capture&&(M=`(${M})`);const ne=J=>J.noglobstar===!0?M:`(${fe}(?:(?!${oe}${J.dot?Q:x}).)*?)`,de=J=>{switch(J){case"*":return`${I}${N}${M}`;case".*":return`${x}${N}${M}`;case"*.*":return`${I}${M}${x}${N}${M}`;case"*/*":return`${I}${M}${$}${N}${ae}${M}`;case"**":return I+ne(s);case"**/*":return`(?:${I}${ne(s)}${$})?${ae}${N}${M}`;case"**/*.*":return`(?:${I}${ne(s)}${$})?${ae}${M}${x}${N}${M}`;case"**/.*":return`(?:${I}${ne(s)}${$})?${x}${N}${M}`;default:{const _=/^(.*?)\.(\w+)$/.exec(J);if(!_)return;const C=de(_[1]);return C?C+x+_[2]:void 0}}},V=e.removePrefix(c,se);let j=de(V);return j&&s.strictSlashes!==!0&&(j+=`${$}?`),j},at=z,at}var lt,Ht;function Jr(){if(Ht)return lt;Ht=1;const t=Yr(),e=Zr(),r=ot(),m=rt(),p=a=>a&&typeof a=="object"&&!Array.isArray(a),o=(a,d,l=!1)=>{if(Array.isArray(a)){const W=a.map(z=>o(z,d,l));return z=>{for(const c of W){const y=c(z);if(y)return y}return!1}}const A=p(a)&&a.tokens&&a.input;if(a===""||typeof a!="string"&&!A)throw new TypeError("Expected pattern to be a non-empty string");const h=d||{},R=h.windows,T=A?o.compileRe(a,d):o.makeRe(a,d,!1,!0),b=T.state;delete T.state;let k=()=>!1;if(h.ignore){const W={...d,ignore:null,onMatch:null,onResult:null};k=o(h.ignore,W,l)}const U=(W,z=!1)=>{const{isMatch:c,match:y,output:s}=o.test(W,T,d,{glob:a,posix:R}),v={glob:a,state:b,regex:T,posix:R,input:W,output:s,match:y,isMatch:c};if(typeof h.onResult=="function"&&h.onResult(v),c===!1)return v.isMatch=!1,z?v:!1;e:if(k(W)){if(typeof h.onIgnore=="function"&&h.onIgnore(v)===m.UNIGNORE){v.isMatch=!0;break e}return v.isMatch=!1,z?v:!1}return typeof h.onMatch=="function"&&h.onMatch(v),z?v:!0};return l&&(U.state=b),U};return o.test=(a,d,l,{glob:A,posix:h}={})=>{if(typeof a!="string")throw new TypeError("Expected input to be a string");if(a==="")return{isMatch:!1,output:""};const R=l||{},T=R.format||(h?r.toPosixSlashes:null);let b=a===A,k=b&&T?T(a):a;return b===!1&&(k=T?T(a):a,b=k===A),(b===!1||R.capture===!0)&&(R.matchBase===!0||R.basename===!0?b=o.matchBase(a,d,l,h):b=d.exec(k)),{isMatch:!!b,match:b,output:k}},o.matchBase=(a,d,l)=>(d instanceof RegExp?d:o.makeRe(d,l)).test(r.basename(a)),o.isMatch=(a,d,l)=>o(d,l)(a),o.parse=(a,d)=>Array.isArray(a)?a.map(l=>o.parse(l,d)):e(a,{...d,fastpaths:!1}),o.scan=(a,d)=>t(a,d),o.compileRe=(a,d,l=!1,A=!1)=>{if(l===!0)return a.output;const h=d||{},R=h.contains?"":"^",T=h.contains?"":"$";let b=`${R}(?:${a.output})${T}`;a&&a.negated===!0&&(b=`^(?!${b}).*$`);const k=o.toRegex(b,d);return A===!0&&(k.state=a),k},o.makeRe=(a,d={},l=!1,A=!1)=>{if(!a||typeof a!="string")throw new TypeError("Expected a non-empty string");let h={negated:!1,fastpaths:!0};return d.fastpaths!==!1&&(a[0]==="."||a[0]==="*")&&(h.output=e.fastpaths(a,d)),h.output||(h=e(a,d)),o.compileRe(h,d,l,A)},o.toRegex=(a,d)=>{try{const l=d||{};return new RegExp(a,l.flags||(l.nocase?"i":""))}catch(l){if(d&&d.debug===!0)throw l;return/$^/}},o.constants=m,lt=o,lt}var pt,Lt;function eo(){if(Lt)return pt;Lt=1;const t=Jr(),e=ot();function r(m,p,o=!1){return p&&(p.windows===null||p.windows===void 0)&&(p={...p,windows:e.isWindows()}),t(m,p,o)}return Object.assign(r,t),pt=r,pt}var to=eo();$t(to);const ro=O(import.meta.url),He=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ze=t=>{if(typeof He<"u"&&He.versions&&He.versions.node){const[e,r]=He.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return He.getBuiltinModule(t)}return ro(t)};Ze("fs");Ze("fs");Ze("path");Ze("url");const{createRequire:oo}=Ze("module");var Mt=oo(import.meta.url);try{Mt.resolve("picomatch"),Mt("picomatch")}catch{}var ct,Bt;function so(){if(Bt)return ct;Bt=1;/*!
2
+ * is-extglob <https://github.com/jonschlinkert/is-extglob>
3
+ *
4
+ * Copyright (c) 2014-2016, Jon Schlinkert.
5
+ * Licensed under the MIT License.
6
+ */return ct=function(t){if(typeof t!="string"||t==="")return!1;for(var e;e=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(e[2])return!0;t=t.slice(e.index+e[0].length)}return!1},ct}var ft,It;function Xt(){if(It)return ft;It=1;/*!
7
+ * is-glob <https://github.com/jonschlinkert/is-glob>
8
+ *
9
+ * Copyright (c) 2014-2017, Jon Schlinkert.
10
+ * Released under the MIT License.
11
+ */var t=so(),e={"{":"}","(":")","[":"]"},r=function(p){if(p[0]==="!")return!0;for(var o=0,a=-2,d=-2,l=-2,A=-2,h=-2;o<p.length;){if(p[o]==="*"||p[o+1]==="?"&&/[\].+)]/.test(p[o])||d!==-1&&p[o]==="["&&p[o+1]!=="]"&&(d<o&&(d=p.indexOf("]",o)),d>o&&(h===-1||h>d||(h=p.indexOf("\\",o),h===-1||h>d)))||l!==-1&&p[o]==="{"&&p[o+1]!=="}"&&(l=p.indexOf("}",o),l>o&&(h=p.indexOf("\\",o),h===-1||h>l))||A!==-1&&p[o]==="("&&p[o+1]==="?"&&/[:!=]/.test(p[o+2])&&p[o+3]!==")"&&(A=p.indexOf(")",o),A>o&&(h=p.indexOf("\\",o),h===-1||h>A))||a!==-1&&p[o]==="("&&p[o+1]!=="|"&&(a<o&&(a=p.indexOf("|",o)),a!==-1&&p[a+1]!==")"&&(A=p.indexOf(")",a),A>a&&(h=p.indexOf("\\",a),h===-1||h>A))))return!0;if(p[o]==="\\"){var R=p[o+1];o+=2;var T=e[R];if(T){var b=p.indexOf(T,o);b!==-1&&(o=b+1)}if(p[o]==="!")return!0}else o++}return!1},m=function(p){if(p[0]==="!")return!0;for(var o=0;o<p.length;){if(/[*?{}()[\]]/.test(p[o]))return!0;if(p[o]==="\\"){var a=p[o+1];o+=2;var d=e[a];if(d){var l=p.indexOf(d,o);l!==-1&&(o=l+1)}if(p[o]==="!")return!0}else o++}return!1};return ft=function(p,o){if(typeof p!="string"||p==="")return!1;if(t(p))return!0;var a=r;return o&&o.strict===!1&&(a=m),a(p)},ft}const no=O(import.meta.url),Le=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Wt=t=>{if(typeof Le<"u"&&Le.versions&&Le.versions.node){const[e,r]=Le.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Le.getBuiltinModule(t)}return no(t)},io=Wt("path"),uo=Wt("os");var dt,Dt;function ao(){if(Dt)return dt;Dt=1;var t=Xt(),e=io.posix.dirname,r=uo.platform()==="win32",m="/",p=/\\/g,o=/\\([!*?|[\](){}])/g;dt=function(l,A){var h=Object.assign({flipBackslashes:!0},A);h.flipBackslashes&&r&&l.indexOf(m)<0&&(l=l.replace(p,m)),a(l)&&(l+=m),l+="a";do l=e(l);while(d(l));return l.replace(o,"$1")};function a(l){var A=l.slice(-1),h;switch(A){case"}":h="{";break;case"]":h="[";break;default:return!1}var R=l.indexOf(h);return R<0?!1:l.slice(R+1,-1).includes(m)}function d(l){return/\([^()]+$/.test(l)||l[0]==="{"||l[0]==="["||/[^\\][{[]/.test(l)?!0:t(l)}return dt}var lo=ao();$t(lo);const po=O(import.meta.url),Me=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,co=t=>{if(typeof Me<"u"&&Me.versions&&Me.versions.node){const[e,r]=Me.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Me.getBuiltinModule(t)}return po(t)},{access:fo}=co("node:fs/promises");async function vt(t,e=Gt){he(t),t=ye(t);try{return await fo(t,e),!0}catch{return!1}}const go=O(import.meta.url),Be=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ho=t=>{if(typeof Be<"u"&&Be.versions&&Be.versions.node){const[e,r]=Be.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Be.getBuiltinModule(t)}return go(t)};ho("node:fs");var mo=Xt();$t(mo);const yo=O(import.meta.url),me=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,jt=t=>{if(typeof me<"u"&&me.versions&&me.versions.node){const[e,r]=me.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return me.getBuiltinModule(t)}return yo(t)},{cwd:bo}=me,{mkdir:vo,rename:$o,copyFile:Eo,unlink:xo}=jt("node:fs/promises");jt("node:fs");class Ao extends Error{constructor(e,r){super(`Source directory "${ge(e)}" does not match destination directory "${ge(r)}"`),this.name="SameDirectoryError"}}const Ro=(t,e)=>{if(!t||!e)throw new Error("Source and destination paths must not be empty");if(ge(t)!==ge(e))throw new Ao(t,e)},To=async(t,e,{cwd:r,directoryMode:m,overwrite:p,validateDirectory:o})=>{if(r&&(t=ht(r,t),e=ht(r,e)),o&&Ro(t,e),!p&&await vt(e))throw new Error(`The destination file exists: ${e}`);await vo(ge(e),{mode:m,recursive:!0});try{await $o(t,e)}catch(a){if(a.code==="EXDEV")await Eo(t,e),await xo(t);else throw a}},Bs=async(t,e,r={})=>{const m={overwrite:!0,validateDirectory:!1,...r,cwd:r.cwd?ye(r.cwd):bo()};await To(t,e,m)};let _o=class extends Error{constructor(e){super(`ENOENT: ${e}`)}get code(){return"ENOENT"}set code(e){throw new Error("Cannot overwrite code ENOENT")}get name(){return"NotFoundError"}set name(e){throw new Error("Cannot overwrite name of NotFoundError")}},wo=class extends Error{constructor(e){super(`EPERM: Operation not permitted, ${e}`)}get code(){return"EPERM"}set code(e){throw new Error("Cannot overwrite code EPERM")}get name(){return"PermissionError"}set name(e){throw new Error("Cannot overwrite name of PermissionError")}};const So=(t,e)=>{const r=t?.code;return r==="ENOENT"?new _o(`no such file or directory, open '${e}'`):r==="EACCES"||r==="EPERM"?new wo(`unable to read the non-readable file: ${e}`):t},Co=O(import.meta.url),Ie=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Qt=t=>{if(typeof Ie<"u"&&Ie.versions&&Ie.versions.node){const[e,r]=Ie.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ie.getBuiltinModule(t)}return Co(t)},{readFile:Oo}=Qt("node:fs/promises"),{unzip:ko,brotliDecompress:No}=Qt("node:zlib"),Ho={brotli:No,gzip:ko,none:(t,e)=>{e(null,t)}},Lo=async(t,e)=>{he(t),t=ye(t);const{buffer:r,compression:m,encoding:p,flag:o}=e??{};let a;try{a=await Oo(t,o?{flag:o}:{})}catch(d){throw So(d,t)}return await new Promise((d,l)=>{Ho[m??"none"](a,(A,h)=>{A?l(A):d(r?h:h.toString(p??"utf8"))})})},Mo=O(import.meta.url),De=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,qt=t=>{if(typeof De<"u"&&De.versions&&De.versions.node){const[e,r]=De.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return De.getBuiltinModule(t)}return Mo(t)};qt("node:fs");qt("node:zlib");const Bo=O(import.meta.url),Pe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Io=t=>{if(typeof Pe<"u"&&Pe.versions&&Pe.versions.node){const[e,r]=Pe.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Pe.getBuiltinModule(t)}return Bo(t)},{createRequire:Vt}=Io("node:module"),Do=new Map([["Error",Error],["EvalError",EvalError],["RangeError",RangeError],["ReferenceError",ReferenceError],["SyntaxError",SyntaxError],["TypeError",TypeError],["URIError",URIError]]);typeof AggregateError<"u"&&Do.set("AggregateError",AggregateError);const Po=Vt(import.meta.url),Fe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Fo=t=>{if(typeof Fe<"u"&&Fe.versions&&Fe.versions.node){const[e,r]=Fe.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Fe.getBuiltinModule(t)}return Po(t)};Fo("node:util");const Uo=Vt(import.meta.url),Ue=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Et=t=>{if(typeof Ue<"u"&&Ue.versions&&Ue.versions.node){const[e,r]=Ue.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ue.getBuiltinModule(t)}return Uo(t)};Et("node:fs");Et("node:path");Et("node:url");const Go=t=>{const e={force:!0,recursive:!0};return t?.maxRetries!==void 0&&(e.maxRetries=t.maxRetries),t?.retryDelay!==void 0&&(e.retryDelay=t.retryDelay),e},Ko=O(import.meta.url),Ge=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Yt=t=>{if(typeof Ge<"u"&&Ge.versions&&Ge.versions.node){const[e,r]=Ge.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ge.getBuiltinModule(t)}return Ko(t)};Yt("node:fs");Yt("node:fs/promises");const zo=O(import.meta.url),Ke=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Xo=t=>{if(typeof Ke<"u"&&Ke.versions&&Ke.versions.node){const[e,r]=Ke.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ke.getBuiltinModule(t)}return zo(t)};Xo("node:fs");const Wo=O(import.meta.url),ze=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,jo=t=>{if(typeof ze<"u"&&ze.versions&&ze.versions.node){const[e,r]=ze.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return ze.getBuiltinModule(t)}return Wo(t)},{rm:Qo}=jo("node:fs/promises"),qo=async(t,e={})=>{he(t),await Qo(t,Go(e))},Vo=O(import.meta.url),Xe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Yo=t=>{if(typeof Xe<"u"&&Xe.versions&&Xe.versions.node){const[e,r]=Xe.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Xe.getBuiltinModule(t)}return Vo(t)};Yo("node:fs");O(import.meta.url);const Zo=t=>{if(typeof t!="string"&&!(t instanceof ArrayBuffer)&&!ArrayBuffer.isView(t))throw new TypeError("File contents must be a string, ArrayBuffer, or ArrayBuffer view.")},Jo=O(import.meta.url),We=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,es=t=>{if(typeof We<"u"&&We.versions&&We.versions.node){const[e,r]=We.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return We.getBuiltinModule(t)}return Jo(t)},{randomBytes:ts}=es("node:crypto"),rs=t=>`${t}.${process.pid.toString(36)}.${ts(6).toString("hex")}.tmp`,os=new TextEncoder,ss=t=>{if(t instanceof Uint8Array)return t;if(typeof t=="string")return os.encode(t);if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t)){const e=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);return new Uint8Array(e)}throw new TypeError("Invalid contents type. Expected string or ArrayBuffer.")},ns=O(import.meta.url),je=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,is=t=>{if(typeof je<"u"&&je.versions&&je.versions.node){const[e,r]=je.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return je.getBuiltinModule(t)}return ns(t)},{mkdir:us,writeFile:as,stat:ls,rename:Pt,chown:ps,chmod:cs,unlink:fs}=is("node:fs/promises"),ds=async(t,e,r)=>{r={backup:!1,encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},he(t),Zo(e),t=ye(t);const m=await vt(t,Gt);if(m&&!r.overwrite)throw new gr(`file already exists, open '${t}'`);const p=rs(t);try{!m&&r.recursive&&await us(ge(t),{recursive:!0});let o;if(await as(p,typeof e=="string"?Buffer.from(e,r.encoding??"utf8"):ss(e),{flag:"wx"}),m&&r.backup&&(o=await ls(t),r.chown??={gid:o.gid,uid:o.uid},await Pt(t,`${t}.bak`)),r.chown)try{await ps(p,r.chown.uid,r.chown.gid)}catch{}await cs(p,o&&!r.mode?o.mode:r.mode??438),await Pt(p,t)}catch(o){throw new Error(`Failed to write file at: ${t} - ${o.message}`,{cause:o})}finally{await vt(p)&&await fs(p)}},gs=O(import.meta.url),Qe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,hs=t=>{if(typeof Qe<"u"&&Qe.versions&&Qe.versions.node){const[e,r]=Qe.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Qe.getBuiltinModule(t)}return gs(t)};hs("node:fs");const ms=O(import.meta.url),qe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ys=t=>{if(typeof qe<"u"&&qe.versions&&qe.versions.node){const[e,r]=qe.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return qe.getBuiltinModule(t)}return ms(t)};ys("node:fs/promises");const bs=O(import.meta.url),Ve=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,vs=t=>{if(typeof Ve<"u"&&Ve.versions&&Ve.versions.node){const[e,r]=Ve.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ve.getBuiltinModule(t)}return bs(t)};vs("node:fs");const $s=O(import.meta.url),Ye=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,xt=t=>{if(typeof Ye<"u"&&Ye.versions&&Ye.versions.node){const[e,r]=Ye.versions.node.split(".").map(Number);if(e>22||e===22&&r>=3||e===20&&r>=16)return Ye.getBuiltinModule(t)}return $s(t)},Es=xt("fs"),xs=xt("os"),As=xt("path");var gt={},Ft;function Rs(){if(Ft)return gt;Ft=1;var t=Object.defineProperty,e=(h,R)=>t(h,"name",{value:R,configurable:!0}),r=Es,m=xs,p=As;const o=e(h=>{let R="";for(let T=0;T<h.length;T+=1){const b=h[T],k=b.toUpperCase();R+=b===k?b.toLowerCase():k}return R},"invertCase"),a=new Map,d=e((h,R)=>{const T=p.join(h,`.is-fs-case-sensitive-test-${process.pid}`);try{return R.writeFileSync(T,""),!R.existsSync(o(T))}finally{try{R.unlinkSync(T)}catch{}}},"checkDirectoryCaseWithWrite"),l=e((h,R,T)=>{try{return d(h,T)}catch(b){if(R===void 0)return d(m.tmpdir(),T);throw b}},"checkDirectoryCaseWithFallback"),A=e((h,R=r,T=!0)=>{const b=h??process.cwd();if(T&&a.has(b))return a.get(b);let k;const U=o(b);return U!==b&&R.existsSync(b)?k=!R.existsSync(U):k=l(b,h,R),T&&a.set(b,k),k},"isFsCaseSensitive");return gt.isFsCaseSensitive=A,gt}Rs();class Ps extends sr{directory;constructor(e){super(e),this.directory=mt(e?.directory||Ut(tr(),"Upload_meta")),this.accessCheck().catch(r=>{this.logger?.error("Metadata storage access check failed: %O",r)})}getMetaPath=e=>{const r=mt(`${this.directory}/${this.prefix}${e}${this.suffix}`),m=this.directory.endsWith("/")?this.directory:`${this.directory}/`;return r.startsWith(m)?r:st(nt.INVALID_FILE_NAME,`Invalid id: "${e}" resolves outside the meta directory`)};getIdFromPath=e=>e.slice(`${this.directory}/${this.prefix}`.length,-this.suffix.length);async save(e,r){await this.accessCheck();const m={...r};return m.metadata&&(m.metadata=nr(r.metadata)),await ds(this.getMetaPath(e),JSON.stringify(m),{recursive:!0}),r}async touch(e,r){const m=new Date;return await er(this.getMetaPath(e),m,m),r}async get(e){try{const r=await Lo(this.getMetaPath(e));if(r===void 0)throw st(nt.FILE_NOT_FOUND);const m=JSON.parse(r);return m.metadata&&typeof m.metadata=="string"&&(m.metadata=ir(m.metadata)),m}catch(r){const m=r,p=r instanceof SyntaxError;throw m.code==="ENOENT"||p?st(nt.FILE_NOT_FOUND):r}}async delete(e){await qo(this.getMetaPath(e))}async accessCheck(){await Kt(this.directory)}}export{Bs as V,Hs as d,Kt as f,qo as l,zr as x,Ps as y,Lo as z};
@@ -1,4 +1,4 @@
1
- import { F as File, L as LocalMetaStorageOptions, M as MetaStorage } from "./storage.d-C6HtvSoY.js";
1
+ import { F as File, L as LocalMetaStorageOptions, M as MetaStorage } from "./storage.d-CEM1upWM.js";
2
2
  import 'node:stream';
3
3
  /**
4
4
  * Stores upload metafiles on local disk
@@ -1,5 +1,5 @@
1
- import { F as File, a as FileReturn, B as BaseStorage } from "./storage.d-C6HtvSoY.js";
2
- import { O as MediaTransformerConfig, Q as MediaTransformResult } from "./types.d-CmT_ubPu.js";
1
+ import { F as File, g as FileReturn, B as BaseStorage } from "./storage.d-CEM1upWM.js";
2
+ import { M as MediaTransformerConfig, a as MediaTransformResult } from "./types.d-CrUWY4On.js";
3
3
  /**
4
4
  * Unified media transformer that automatically detects media type and routes to appropriate transformer.
5
5
  * @template TFile The file type used by this transformer.
@@ -1,5 +1,5 @@
1
1
  import { Readable } from 'node:stream';
2
- import { F as File, i as MetaStorageOptions, M as MetaStorage, j as BaseStorageOptions, b as FileInit, O as OperationOptions, d as FilePart, e as FileQuery, a as FileReturn, B as BaseStorage } from "./storage.d-C6HtvSoY.js";
2
+ import { F as File, k as MetaStorageOptions, M as MetaStorage, l as BaseStorageOptions, d as FileInit, O as OperationOptions, e as FilePart, f as FileQuery, g as FileReturn, B as BaseStorage } from "./storage.d-CEM1upWM.js";
3
3
  /**
4
4
  * Map-backed metadata storage used by {@link MemoryStorage}. Holds a deep-copied
5
5
  * snapshot of each `File` so callers can mutate the returned object without leaking
@@ -0,0 +1 @@
1
+ const o=e=>{const s=e?.accessKeyId??process.env.AWS_ACCESS_KEY_ID??process.env.MINIO_ACCESS_KEY_ID??process.env.MINIO_ACCESS_KEY,r=e?.endpoint??process.env.AWS_ENDPOINT??process.env.MINIO_ENDPOINT,c=e?.region??process.env.AWS_REGION??process.env.MINIO_REGION,n=e?.secretAccessKey??process.env.AWS_SECRET_ACCESS_KEY??process.env.MINIO_SECRET_ACCESS_KEY??process.env.MINIO_SECRET_KEY;if(!c||!s||!n||!r)throw new Error("Missing required parameters for Minio client.");return{credentials:{accessKeyId:s,secretAccessKey:n},endpoint:r,forcePathStyle:!0,region:c}};export{o as default};
@@ -0,0 +1 @@
1
+ import{n as c}from"./headers-BAiAKekR.js";class p{async handlePost(e,s,n){const i={contentType:e.mediaType||"application/octet-stream",metadata:{},originalName:e.filename,size:e.size};for(const t of s)if(!t.isFile&&t.name){let o={};if(t.name==="metadata"&&t.text)try{o=JSON.parse(t.text)}catch{}else t.name&&(o={[t.name]:t.text});Object.assign(i.metadata,o)}const d=await this.storage.create(i),l=this.createStreamFromBytes(e.bytes),r=await this.storage.write({body:l,contentLength:e.size,id:d.id,start:0});let a=r;if(Object.keys(i.metadata).length>0){const t={...r.metadata,...i.metadata};a={...await this.storage.update({id:r.id},{metadata:t}),status:r.status}}const m=this.buildFileUrl(n,a);return{...a,headers:{Location:m,...a.expiredAt===void 0?{}:{"X-Upload-Expires":a.expiredAt.toString()},...a.ETag===void 0?{}:{ETag:a.ETag}},statusCode:200}}async handleDelete(e){const s=await this.storage.delete({id:e});if(s.status===void 0)throw c(404,"File not found");return{...s,headers:{},statusCode:204}}get storage(){throw new Error("storage must be implemented")}buildFileUrl(e,s){throw new Error("buildFileUrl must be implemented")}}export{p};
@@ -0,0 +1 @@
1
+ const k=e=>{let o,s;const r=e.leewayMs??6e4,a=async()=>{const c=Date.now(),n=await fetch(e.tokenUrl,{body:e.buildBody(),headers:{"Content-Type":"application/x-www-form-urlencoded"},method:"POST"});if(!n.ok){const i=await n.text().catch(()=>"");throw new Error(`${e.provider}: token exchange failed (${n.status}): ${i||n.statusText}`)}const t=await n.json();if(!t.access_token)throw new Error(`${e.provider}: token response missing access_token`);return o={expiresOnMs:c+(t.expires_in??3600)*1e3,token:t.access_token},e.onRefresh?.(t.access_token),t.refresh_token&&e.onRefreshToken?.(t.refresh_token),t.access_token};return{getAccessToken:async()=>o&&o.expiresOnMs-r>Date.now()?o.token:s||(s=a().finally(()=>{s=void 0}),s)}};export{k as c};
@@ -0,0 +1 @@
1
+ const o=e=>{const c=e?.accessKeyId??process.env.AWS_ACCESS_KEY_ID??process.env.ORACLE_CLOUD_ACCESS_KEY_ID??process.env.ORACLE_CLOUD_ACCESS_KEY,r=e?.namespace??process.env.ORACLE_CLOUD_NAMESPACE,s=e?.region??process.env.ORACLE_CLOUD_REGION,C=e?.secretAccessKey??process.env.AWS_SECRET_ACCESS_KEY??process.env.ORACLE_CLOUD_SECRET_ACCESS_KEY??process.env.ORACLE_CLOUD_SECRET_KEY;if(!r||!s||!c||!C)throw new Error("Missing required parameters for Oracle Cloud Object Storage client.");return{credentials:{accessKeyId:c,secretAccessKey:C},endpoint:`https://${r}.compat.objectstorage.${s}.oraclecloud.com`,forcePathStyle:!0,region:s}};export{o as default};
@@ -0,0 +1 @@
1
+ const t=e=>{const s=e?.accessKeyId??process.env.AWS_ACCESS_KEY_ID??process.env.OVHCLOUD_ACCESS_KEY_ID??process.env.OVHCLOUD_ACCESS_KEY,n=e?.endpoint??process.env.OVHCLOUD_ENDPOINT,r=e?.region??process.env.OVHCLOUD_REGION,c=e?.secretAccessKey??process.env.AWS_SECRET_ACCESS_KEY??process.env.OVHCLOUD_SECRET_ACCESS_KEY??process.env.OVHCLOUD_SECRET_KEY;if(!r||!s||!c)throw new Error("Missing required parameters for OVHcloud Object Storage client.");const o=r.toLowerCase();return{credentials:{accessKeyId:s,secretAccessKey:c},endpoint:n??`https://s3.${o}.io.cloud.ovh.net`,forcePathStyle:!1,region:o}};export{t as default};
@@ -0,0 +1 @@
1
+ const e=(i,s)=>i.size!==void 0&&s.size!==void 0&&i.size>0&&s.size>0&&i.size>s.size?!1:s.size===void 0?!0:(i.start||0)+(i.contentLength||0)<=s.size;export{e as i};
@@ -0,0 +1 @@
1
+ const $=/^[A-Z]:\//i,h=(t="")=>t&&t.replaceAll("\\","/").replace($,n=>n.toUpperCase()),p=/^[/\\]{2}/,d=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Z]:[/\\]/i,g=/^[A-Z]:$/i,i=/\/$/,x=()=>typeof process.cwd=="function"?process.cwd().replaceAll("\\","/"):"/",u=(t,n)=>{let e="",l=0,s=-1,r=0,o;for(let f=0;f<=t.length;++f){if(f<t.length)o=t[f];else{if(o==="/")break;o="/"}if(o==="/"){if(!(s===f-1||r===1))if(r===2){if(e.length<2||l!==2||!e.endsWith(".")||e.at(-2)!=="."){if(e.length>2){const a=e.lastIndexOf("/");a===-1?(e="",l=0):(e=e.slice(0,a),l=e.length-1-e.lastIndexOf("/")),s=f,r=0;continue}else if(e.length>0){e="",l=0,s=f,r=0;continue}}n&&(e+=e.length>0?"/..":"..",l=2)}else e.length>0?e+=`/${t.slice(s+1,f)}`:e=t.slice(s+1,f),l=f-s-1;s=f,r=0}else o==="."&&r!==-1?++r:r=-1}return e},c=t=>d.test(t),A=function(t){if(t.length===0)return".";t=h(t);const n=p.exec(t),e=c(t),l=t.at(-1)==="/";return t=u(t,!e),t.length===0?e?"/":l?"./":".":(l&&(t+="/"),g.test(t)&&(t+="/"),n?e?`//${t}`:`//./${t}`:e&&!c(t)?`/${t}`:t)},I=(...t)=>{let n="";for(const e of t)if(e)if(n.length>0){const l=n.at(-1)==="/",s=e[0]==="/";l&&s?n+=e.slice(1):n+=l||s?e:`/${e}`}else n+=e;return A(n)},O=function(...t){t=t.map(l=>h(l));let n="",e=!1;for(let l=t.length-1;l>=-1&&!e;l--){const s=l>=0?t[l]:x();!s||s.length===0||(n=`${s}/${n}`,e=c(s))}return n=u(n,!e),e&&!c(n)?`/${n}`:n.length>0?n:"."},m=t=>{const n=h(t).replace(i,""),e=n.lastIndexOf("/");if(e===-1)return c(t)?"/":".";const l=n.slice(0,e);return g.test(l)?`${l}/`:l||(c(t)?"/":".")},W=(t,n)=>{const e=h(t),l=e.slice(e.lastIndexOf("/")+1);if(n&&l.endsWith(n)){if(n===e)return"";const s=l.slice(0,-n.length);if(s.length>0)return s}return l};export{c as A,O as B,m as H,W as J,A as W,I as m,h as v};
@@ -0,0 +1 @@
1
+ const s=async e=>{const t=[];for await(const r of e)t.push(Buffer.from(r));return Buffer.concat(t)},n=e=>{let t=0,r=e.length;for(;t<r&&e[t]==="/";)t+=1;for(;r>t&&e[r-1]==="/";)r-=1;return t===0&&r===e.length?e:e.slice(t,r)},o=e=>{const t=n(e),r=t.lastIndexOf("/");return r<=0?e.startsWith("/")&&r===0?"/":"":e.startsWith("/")?`/${t.slice(0,r)}`:t.slice(0,r)};export{o as e,n as r,s as t};
@@ -0,0 +1 @@
1
+ import"mime";const d=(t,i={},e=200)=>({...t,headers:i,statusCode:e}),o=(t,i,e={})=>({Location:i,...t.expiredAt===void 0?{}:{"X-Upload-Expires":t.expiredAt.toString()},...t.ETag===void 0?{}:{ETag:t.ETag},...e}),n=(t,i)=>{const e=t.metadata||{},r={"x-chunked-upload":"true","x-upload-complete":i?"true":"false","x-upload-offset":String(t.bytesWritten||0)};return Array.isArray(e._chunks)&&e._chunks.length>0&&(r["x-received-chunks"]=JSON.stringify(e._chunks)),r},s=t=>({"Content-Length":String(t.size||0),"Content-Type":t.contentType,...t.expiredAt===void 0?{}:{"X-Upload-Expires":t.expiredAt.toString()},...t.modifiedAt===void 0?{}:{"Last-Modified":t.modifiedAt.toString()},...t.ETag===void 0?{}:{ETag:t.ETag}}),p=t=>{const i={};for(const[e,r]of Object.entries(t))i[e]=Array.isArray(r)?r.join(", "):String(r);return i};export{o as a,d as b,n as c,s as d,p as e};
@@ -0,0 +1 @@
1
+ import{n as d}from"./headers-BAiAKekR.js";import{hasBody as _}from"type-is";import{b as h}from"./base-handler-core-D-9Ku1h-.js";import{ERRORS as E}from"./ERRORS-BIBxE2oR.js";import{b as g,a as C,c as S,d as X}from"./response-builder-CbSA8qPa.js";const M=(a,t={})=>{const e=h(a,"x-file-metadata",!0);if(!e)return t;try{return{...t,...JSON.parse(e)}}catch{return t}},v=a=>{if(!a)return;const t=2e3,e=a.length>t?a.slice(0,Math.max(0,t)):a,r=e.toLowerCase().indexOf("filename");if(r===-1)return;let s=r+8;for(;s<e.length&&(e[s]==="*"||e[s]===" "||e[s]===" ");)s++;if(s>=e.length||e[s]!=="=")return;for(s++;s<e.length&&(e[s]===" "||e[s]===" ");)s++;if(s>=e.length)return;let i=s,o;const n=e[s];return n==='"'||n==="'"?(i=s+1,o=e.indexOf(n,i),o===-1&&(o=e.indexOf(";",i),o===-1&&(o=e.length))):(o=e.indexOf(";",i),o===-1&&(o=e.length)),i>=o?void 0:e.substring(i,o).trim()||void 0},A=a=>{const t=h(a,"content-disposition",!0);return v(t)},L=a=>{const t=h(a,"x-chunked-upload",!0)==="true",e=h(a,"x-chunk-offset",!0),r=h(a,"x-total-size",!0),s={isChunkedUpload:t};if(e){const i=Number.parseInt(e,10);!Number.isNaN(i)&&i>=0&&(s.chunkOffset=i)}if(r){const i=Number.parseInt(r,10);!Number.isNaN(i)&&i>0&&(s.totalSize=i)}return s},P=(a,t=!1)=>{const e=h(a,"x-chunked-upload",!0)==="true";if(!(t&&e)){if(!_(a))throw d(400,"Request body is required");if(Number.parseInt(h(a,"content-length")||"0",10)===0&&!e)throw d(400,"Content-Length is required and must be greater than 0")}},B=(a,t=!1,e)=>{const r=h(a,"x-chunked-upload",!0)==="true",s=Number.parseInt(h(a,"content-length")||"0",10);if(!t&&!r&&s===0)throw d(400,"Content-Length is required and must be greater than 0");if(e!==void 0&&s>e)throw d(413,`File size exceeds maximum allowed size of ${e} bytes`);return s},W=(a,t,e="application/octet-stream")=>{const r=A(a),s=M(a),{isChunkedUpload:i,totalSize:o}=L(a),n=i&&o?o:t;return i&&o&&(s._chunkedUpload=!0,s._chunks=[],s._totalSize=o),{contentType:e,metadata:s,originalName:r,size:n}},x=(a,t)=>{if(a.length===0)return!1;const e=[...a].toSorted((i,o)=>i.offset-o.offset),r=e[0];if(r?.offset!==0)return!1;let s=r.length;for(let i=1;i<e.length;i+=1){const o=e[i];if(o){if(o.offset>s)return!1;s=Math.max(s,o.offset+o.length)}}return s>=t},T=(a,t,e,r)=>{if(Number.isNaN(a)||a<0)throw new Error("Chunk offset must be a valid non-negative number");if(t<=0)throw new Error("Chunk length must be greater than 0");if(t>r)throw new Error(`Chunk size exceeds maximum allowed size of ${r} bytes`);if(a+t>e)throw new Error(`Chunk exceeds file size. Offset: ${a}, Size: ${t}, Total: ${e}`)},D=(a,t)=>{const e=a.find(r=>r.offset===t.offset&&r.length===t.length);return e?t.checksum&&e.checksum!==t.checksum?a.map(r=>r.offset===t.offset?{...r,checksum:t.checksum}:r):a:[...a,t]},U=a=>(a.metadata||{})._chunkedUpload===!0,y=a=>{const t=a.metadata||{};if(t._chunkedUpload===!0&&typeof t._totalSize=="number")return t._totalSize};class j{async deleteSingle(t){const e=await this.storage.delete({id:t});if(e.status===void 0)throw d(404,"File not found");return{...e,headers:{},statusCode:204}}async handlePost(t,e,r,s,i){if(e&&t.size!==void 0){const l=typeof t.size=="number"?t.size:Number.parseInt(String(t.size),10);if(l>0&&l>this.storage.maxUploadSize)throw d(413,`File size exceeds maximum allowed size of ${this.storage.maxUploadSize} bytes`)}const o=await this.storage.create(t);if(e){const l=this.buildFileUrl(r,o);return g(o,{...C(o,l),"X-Chunked-Upload":"true","X-Upload-ID":o.id},201)}const n=await this.storage.write({body:s,contentLength:i,id:o.id,start:0}),c=this.buildFileUrl(r,n);return g(n,C(n,c),201)}async handlePut(t,e,r,s,i,o){let n,c=!1;try{await this.storage.getMeta(t),c=!0,o&&await this.storage.update({id:t},{metadata:o}),n=await this.storage.write({body:s,contentLength:i,id:t,start:0})}catch(f){const k=f;if(k.UploadErrorCode===E.FILE_NOT_FOUND||k.code==="ENOENT")try{const p=await this.storage.create(e);n=await this.storage.write({body:s,contentLength:i,id:p.id,start:0})}catch(p){throw p}else throw f}const l=this.buildFileUrl(r,n);return g(n,C(n,l),c?200:201)}async handlePatch(t,e,r,s,i,o){let n=await this.storage.getMeta(t);const c=n.metadata||{},l=U(n);if(l){const u=y(n);u&&n.size!==u&&(n={...n,size:u})}const f=typeof c._totalSize=="number"?c._totalSize:n.size||0;if(!l)throw d(400,"File is not a chunked upload. Use POST or PUT for full file uploads.");const k=100*1024*1024;try{T(e,r,f,k)}catch(u){throw u instanceof Error&&u.message.includes("exceeds maximum")?d(413,u.message):d(400,u instanceof Error?u.message:String(u))}if(n.status==="completed"){const u=this.buildFileUrl(i,n);return g(n,{...C(n,u),"X-Upload-Complete":"true"},200)}const p=await this.storage.withLock(`chunks:${t}`,async()=>{const u=(await this.storage.getMeta(t)).metadata??{},O=Array.isArray(u._chunks)?u._chunks:[],z=D(O,{checksum:s,length:r,offset:e});return await this.storage.update({id:t},{metadata:{...u,_chunks:z}}),z});let m=await this.storage.write({body:o,contentLength:r,id:t,start:e}),w=m.bytesWritten>=f;l&&(w=x(p,f),m.status==="completed"&&!w&&(await this.storage.update({id:t},{status:"part"}),m={...m,status:"part"}));const b=w&&m.bytesWritten!==f?{...m,bytesWritten:f}:m,N=this.buildFileUrl(i,b),F={...C(b,N),...S(b,w),"x-upload-offset":String(b.bytesWritten||0)};return g(b,F,w?200:202)}async handleHead(t){let e=await this.storage.getMeta(t);const r=U(e);if(r){const i=y(e);i&&e.size!==i&&(e={...e,size:i})}const s={...X(e)};if(r){const i=e.metadata||{},o=y(e)||e.size||0,n=Array.isArray(i._chunks)?i._chunks:[],c=x(n,o);Object.assign(s,S(e,c))}return g(e,s,200)}handleOptions(t,e){return{headers:{"Access-Control-Allow-Headers":"Authorization, Content-Type, Content-Length, Content-Disposition, X-File-Metadata, X-Chunked-Upload, X-Total-Size, X-Chunk-Offset, X-Chunk-Checksum","Access-Control-Allow-Methods":t.map(r=>r.toUpperCase()).join(", "),"Access-Control-Max-Age":86400,"X-Max-Upload-Size":String(e)},statusCode:204}}async deleteBatch(t){const e=await this.storage.deleteBatch(t);if(e.successfulCount===0&&e.failedCount>0){const r=e.failed.map(s=>s.id).join(", ");throw d(404,`Failed to delete files: ${r}`)}return{data:e.successful,headers:e.failedCount>0?{"X-Delete-Errors":JSON.stringify(e.failed),"X-Delete-Failed":String(e.failedCount),"X-Delete-Successful":String(e.successfulCount)}:{"X-Delete-Successful":String(e.successfulCount)},statusCode:e.successfulCount===t.length?204:207}}get storage(){throw new Error("storage must be implemented")}buildFileUrl(t,e){throw new Error("buildFileUrl must be implemented")}}export{j as X,B as a,A as b,L as c,W as e,v as p,P as v};
@@ -0,0 +1 @@
1
+ import{createHash as n}from"node:crypto";import{createPaginationMetaSchemaObject as d,createPaginationSchemaObject as p}from"@visulima/pagination";import{sharedFileMetaSchemaObject as c,sharedErrorSchemaObject as l,sharedFileMetaExampleObject as m,sharedGetList as u,sharedGet as h,sharedGetMeta as f}from"./sharedErrorSchemaObject-YN65aAKj.js";const U=(a,e,i)=>{const{supportedTransformerFormat:o,tags:t,transformer:r}={tags:["REST"],transformer:!1,...i},s=n("sha256").update(e).digest("base64");return{components:{examples:m,parameters:{UploadIDinPath:{description:"Upload ID",in:"path",name:"id",schema:{type:"string"}}},responses:{404:{content:{"application/json":{example:{error:{code:"FileNotFound",message:"Not found"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Not Found"}},schemas:{"X-Chunk-Checksum":{description:"SHA256 checksum of the chunk data for validation. Format: 'sha256 <base64-encoded-checksum>'.",type:"string"},"X-Chunk-Offset":{description:"Byte offset for the chunk being uploaded. Required for PATCH requests in chunked uploads.",type:"integer"},"X-Chunked-Upload":{description:"Header to indicate chunked upload initialization. Set to 'true' to initialize a chunked upload session.",enum:["true"],type:"string"},"X-Chunked-Upload-Response":{description:"Indicates this is a chunked upload session. Returned in HEAD responses.",enum:["true"],type:"string"},"X-Received-Chunks":{description:"JSON array of received chunk offsets. Used for resumable uploads.",type:"string"},"X-Total-Size":{description:"Total size of the file in bytes for chunked uploads. Required when X-Chunked-Upload is 'true'.",type:"integer"},"X-Upload-Complete":{description:"Indicates if the upload is complete. Set to 'true' when all chunks have been uploaded.",enum:["true","false"],type:"string"},"X-Upload-Offset":{description:"Current upload offset in bytes. Returned in responses for chunked uploads.",type:"integer"},...p("FileMetaPagination",{$ref:"#/components/schemas/PaginationMeta"},"#/components/schemas/PaginationMeta"),...d("PaginationMeta"),...l,...c}},paths:{[`${e.replace(/\/$/,"")}/{id}/metadata`]:{get:f(`${s}RestGetFileMeta`,t)},[`${e.replace(/\/$/,"")}/{id}`]:{delete:{description:"Delete a single file",operationId:`${s}RestDeleteFile`,parameters:[{$ref:"#/components/parameters/UploadIDinPath"}],responses:{204:{description:"No Content - File deleted successfully"},404:{$ref:"#/components/responses/404"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Delete file",tags:t},get:h(`${s}RestGetFile`,t,r,o),head:{description:"Get file metadata and upload progress. For chunked uploads, returns progress information including current offset and completion status.",operationId:`${s}RestHeadFile`,parameters:[{$ref:"#/components/parameters/UploadIDinPath"}],responses:{200:{description:"OK",headers:{"Content-Length":{description:"File size in bytes",schema:{type:"integer"}},"Content-Type":{description:"MIME type of the file",schema:{type:"string"}},ETag:{description:"Entity tag for caching",schema:{example:"d41d8cd98f00b204e9800998ecf8427e",type:"string"}},"Last-Modified":{description:"Last modified date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}},"X-Chunked-Upload":{description:"Indicates this is a chunked upload session",schema:{$ref:"#/components/schemas/X-Chunked-Upload-Response"}},"X-Received-Chunks":{description:"JSON array of received chunk offsets (chunked uploads only)",schema:{$ref:"#/components/schemas/X-Received-Chunks"}},"X-Upload-Complete":{description:"Indicates if upload is complete (chunked uploads only)",schema:{$ref:"#/components/schemas/X-Upload-Complete"}},"X-Upload-Expires":{description:"Upload expiration date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}},"X-Upload-Offset":{description:"Current upload offset in bytes (chunked uploads only)",schema:{$ref:"#/components/schemas/X-Upload-Offset"}}}},404:{$ref:"#/components/responses/404"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Get file metadata",tags:t},patch:{description:"Upload a chunk for chunked uploads. Requires X-Chunk-Offset header and chunk data in the request body.",operationId:`${s}RestPatchChunk`,parameters:[{$ref:"#/components/parameters/UploadIDinPath"},{description:"Byte offset for this chunk",in:"header",name:"X-Chunk-Offset",required:!0,schema:{$ref:"#/components/schemas/X-Chunk-Offset"}},{description:"SHA256 checksum of the chunk (optional)",in:"header",name:"X-Chunk-Checksum",required:!1,schema:{$ref:"#/components/schemas/X-Chunk-Checksum"}}],requestBody:{content:{"application/octet-stream":{description:"Chunk data as raw binary",schema:{format:"binary",type:"string"}}},description:"Chunk data",required:!0},responses:{200:{description:"Chunk uploaded successfully",headers:{ETag:{description:"Upload ETag",schema:{example:"d41d8cd98f00b204e9800998ecf8427e",type:"string"}},Location:{description:"File URL",schema:{example:`${a}${e}/file-id`,format:"uri",type:"string"}},"X-Upload-Complete":{description:"Indicates if upload is complete",schema:{$ref:"#/components/schemas/X-Upload-Complete"}},"X-Upload-Expires":{description:"Upload expiration date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}},"X-Upload-Offset":{description:"Current upload offset after this chunk",schema:{$ref:"#/components/schemas/X-Upload-Offset"}}}},201:{description:"Upload completed (all chunks received)",headers:{ETag:{description:"Upload ETag",schema:{example:"d41d8cd98f00b204e9800998ecf8427e",type:"string"}},Location:{description:"File URL",schema:{example:`${a}${e}/file-id`,format:"uri",type:"string"}},"X-Upload-Complete":{description:"Upload is complete",schema:{enum:["true"],type:"string"}},"X-Upload-Expires":{description:"Upload expiration date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}}}},400:{content:{"application/json":{example:{error:{code:"BadRequest",message:"X-Chunk-Offset header is required"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Bad Request"},404:{content:{"application/json":{example:{error:{code:"FileNotFound",message:"Upload session not found"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Not Found"},413:{content:{"application/json":{example:{error:{code:"RequestEntityTooLarge",message:"Chunk size exceeds maximum allowed size of 104857600 bytes"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Request Entity Too Large"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Upload chunk",tags:t},put:{description:"Create or update a file. Requires file ID in the URL path. If file exists, it will be overwritten.",operationId:`${s}RestPutFile`,parameters:[{$ref:"#/components/parameters/UploadIDinPath"}],requestBody:{content:{"application/octet-stream":{description:"File data as raw binary",schema:{format:"binary",type:"string"}}},description:"File data",required:!0},responses:{200:{description:"File updated successfully",headers:{ETag:{description:"Upload ETag",schema:{example:"d41d8cd98f00b204e9800998ecf8427e",type:"string"}},Location:{description:"File URL",schema:{example:`${a}${e}/file-id`,format:"uri",type:"string"}},"X-Upload-Expires":{description:"Upload expiration date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}}}},201:{description:"File created successfully",headers:{ETag:{description:"Upload ETag",schema:{example:"d41d8cd98f00b204e9800998ecf8427e",type:"string"}},Location:{description:"File URL",schema:{example:`${a}${e}/file-id`,format:"uri",type:"string"}},"X-Upload-Expires":{description:"Upload expiration date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}}}},400:{content:{"application/json":{example:{error:{code:"BadRequest",message:"Request body is required"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Bad Request"},413:{content:{"application/json":{example:{error:{code:"RequestEntityTooLarge",message:"File size exceeds maximum allowed size"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Request Entity Too Large"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Create or update file",tags:t}},[e.trimEnd()]:{delete:{description:'Delete multiple files. Supports batch delete via query parameter (?ids=id1,id2,id3) or JSON body ({ids: ["id1", "id2"]} or ["id1", "id2"]).',operationId:`${s}RestBatchDelete`,parameters:[{description:"Comma-separated list of file IDs to delete",in:"query",name:"ids",required:!1,schema:{example:"id1,id2,id3",type:"string"}}],requestBody:{content:{"application/json":{schema:{oneOf:[{properties:{ids:{description:"Array of file IDs to delete",items:{type:"string"},type:"array"}},required:["ids"],type:"object"},{description:"Array of file IDs to delete",items:{type:"string"},type:"array"}]}}},description:"File IDs to delete (optional if using query parameter)",required:!1},responses:{204:{description:"All files deleted successfully"},207:{description:"Multi-Status - Some files deleted successfully",headers:{"X-Delete-Errors":{description:"JSON array of deletion errors",schema:{type:"string"}},"X-Delete-Failed":{description:"Number of files that failed to delete",schema:{type:"integer"}},"X-Delete-Successful":{description:"Number of files successfully deleted",schema:{type:"integer"}}}},400:{content:{"application/json":{example:{error:{code:"BadRequest",message:"No file IDs provided"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Bad Request"},404:{content:{"application/json":{example:{error:{code:"FileNotFound",message:"Failed to delete files: id1, id2"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Not Found"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Batch delete files",tags:t},get:u(`${s}RestGetList`,t),post:{description:"Upload a file with raw binary data or initialize a chunked upload session. For chunked uploads, set X-Chunked-Upload: true and X-Total-Size headers.",operationId:`${s}RestPostFile`,parameters:[{description:"Set to 'true' to initialize a chunked upload session",in:"header",name:"X-Chunked-Upload",required:!1,schema:{$ref:"#/components/schemas/X-Chunked-Upload"}},{description:"Total size of the file in bytes (required for chunked uploads)",in:"header",name:"X-Total-Size",required:!1,schema:{$ref:"#/components/schemas/X-Total-Size"}},{description:"Optional filename",in:"header",name:"Content-Disposition",required:!1,schema:{example:'attachment; filename="photo.jpg"',type:"string"}},{description:"Optional JSON metadata",in:"header",name:"X-File-Metadata",required:!1,schema:{example:'{"description":"My photo"}',type:"string"}}],requestBody:{content:{"application/octet-stream":{description:"File data as raw binary. For chunked upload initialization, body can be empty.",schema:{format:"binary",type:"string"}}},description:"File data (optional for chunked upload initialization)",required:!1},responses:{200:{description:"The file already exists, send a resume request",headers:{ETag:{description:"Upload ETag",schema:{example:"d41d8cd98f00b204e9800998ecf8427e",type:"string"}},Location:{description:"File URL",schema:{example:`${a}${e}/file-id`,format:"uri",type:"string"}},"X-Upload-Expires":{description:"Upload expiration date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}}}},201:{description:"File uploaded successfully or chunked upload session initialized",headers:{ETag:{description:"Upload ETag",schema:{example:"d41d8cd98f00b204e9800998ecf8427e",type:"string"}},Location:{description:"File URL or chunked upload session URL",schema:{example:`${a}${e}/file-id`,format:"uri",type:"string"}},"X-Upload-Expires":{description:"Upload expiration date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}}}},400:{content:{"application/json":{example:{error:{code:"BadRequest",message:"Request body is required for non-chunked uploads"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Bad Request"},413:{content:{"application/json":{example:{error:{code:"RequestEntityTooLarge",message:"File size exceeds maximum allowed size"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Request Entity Too Large"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Upload file or initialize chunked upload",tags:t}}}}};export{U as default};
@@ -0,0 +1 @@
1
+ import{Readable as w}from"node:stream";import{C,B as M,X as U,c as O}from"./storage-0j5nCAUp.js";import{d as T}from"./detect-file-type-BA7UBLKA.js";import{throwErrorCode as m,ERRORS as y}from"./ERRORS-BIBxE2oR.js";import{createRetryWrapper as A}from"./createRetryWrapper-CxgiV_hH.js";import{y as k}from"./local-meta-storage-DEpVJPLI.js";import{t as x}from"./update-size-DuNuLyxj.js";import{i as I}from"./part-match-D-9dGX42.js";import{e as R}from"./has-content-50BsqrWw.js";import{t as S}from"./get-file-status-y3wTtDQs.js";const z=(u,t)=>{const i={};return Object.keys(u).forEach(e=>{i[e]=t(u[e])}),i},v=u=>u===Number(u)?u:(C(u)??0)/1e3,B=5*1024*1024,L=16*1024*1024,N=u=>{if(u)return`bytes=${Math.max(0,u.start)}-${u.end===void 0?"":u.end}`};class b extends M{checksumTypes=["md5","crc32","crc32c","sha1","sha256"];supportsRange=!0;supportsDelimiter=!0;bucket;meta;MAX_PARTS=1e4;partSize;retry;resolvedRetryConfig;constructor(t){if(super(t),this.bucket=t.bucket,this.partSize=typeof t.partSize=="string"?U(t.partSize):t.partSize||L,this.partSize<B)throw new Error("Minimum allowed partSize value is 5MB");const i={backoffMultiplier:2,initialDelay:1e3,maxDelay:3e4,maxRetries:3,retryableStatusCodes:[408,429,500,502,503,504],shouldRetry:a=>{const s=a;return s.statusCode&&[408,429,500,502,503,504].includes(s.statusCode)?!0:s.retryable??!1},...t.retryConfig};this.retry=A(i),this.resolvedRetryConfig=i;const{metaStorage:e,metaStorageConfig:r}=t;if(e)this.meta=e;else{const a={...t,...r,logger:this.logger};"directory"in a?(this.logger?.debug("Using local meta storage"),this.meta=new k(a)):this.meta=new k(a)}this.isReady=!1,this.accessCheck().then(()=>{this.isReady=!0}).catch(a=>{this.logger?.error("Storage access check failed: %O",a)})}getRetryConfig(){return this.resolvedRetryConfig}async create(t,i){return this.instrumentOperation("create",async()=>{const e={...t};if(t.ttl){const n=typeof t.ttl=="string"?O(t.ttl):t.ttl;n!==void 0&&(e.expiredAt=Date.now()+n)}const r=new(this.getFileClass())(e);r.name=this.namingFunction(r),await this.validate(r);try{const n=await this.getMeta(r.id);if(n.bytesWritten>=0)return n}catch{}const a=this.getS3Api();let s;try{s=await this.runOperation(i,n=>a.createMultipartUpload({ACL:this.getAcl(),Bucket:this.bucket,ContentType:r.contentType,Key:r.name,Metadata:z({originalName:r.originalName,...r.metadata},o=>encodeURI(String(o)))},{signal:n}))}catch{return m(y.FILE_ERROR,"s3 create upload error")}const{UploadId:c}=s||{};return c?(r.UploadId=c,r.bytesWritten=0,this.config.clientDirectUpload&&(r.partSize??=this.partSize),await this.saveMeta(r),r.status="created",await this.onCreate(r),this.config.clientDirectUpload?this.buildPresigned(r):r):m(y.FILE_ERROR,"s3 create upload error")})}async write(t,i){return this.instrumentOperation("write",async()=>{let e;if("contentType"in t&&"metadata"in t&&!("body"in t)&&!("start"in t)?e=t:(e=await this.getMeta(t.id),await this.checkIfExpired(e)),e.status==="completed")return e;if(typeof t.size=="number"&&t.size>0&&x(e,t.size),!I(t,e))return m(y.FILE_CONFLICT);if(this.config.clientDirectUpload)return this.buildPresigned(e);e.Parts??=await this.getParts(e),e.bytesWritten=e.Parts.map(a=>a.Size||0).reduce((a,s)=>a+s,0);const r=await this.lock(t.id);try{if(R(t)){if(this.isUnsupportedChecksum(t.checksumAlgorithm))return m(y.UNSUPPORTED_CHECKSUM_ALGORITHM);if(e.Parts.length===0&&(!e.contentType||e.contentType==="application/octet-stream"))try{const d=t.body instanceof w?t.body:w.fromWeb(t.body),{fileType:g,stream:f}=await T(d);g?.mime&&(e.contentType=g.mime),t.body=f}catch{}if(e.Parts.length>this.MAX_PARTS)throw new Error(`Exceeded ${this.MAX_PARTS} as part of the upload to ${this.bucket}.`);const a=e.Parts.length+1,s=this.getS3Api(),c=e.UploadId;if(!c)throw new Error("UploadId is required");const n=t.body,o=n instanceof Uint8Array,{ETag:l}=await this.runOperation(i,d=>s.uploadPart({Body:n,Bucket:this.bucket,ContentLength:t.contentLength||0,Key:e.name,PartNumber:a,UploadId:c,...t.checksumAlgorithm==="md5"?{ContentMD5:t.checksum}:{}},{signal:d}),{replayable:o}),p={ETag:l,PartNumber:a,Size:t.contentLength};e.Parts=[...e.Parts,p],e.bytesWritten+=t.contentLength||0}if(this.cache.set(e.id,e),e.status=S(e),e.status==="completed"){const[a]=await this.internalOnComplete(e);delete e.Parts,e.uri=a.Location,e.ETag=a.ETag}}finally{await this.unlock(t.id,r)}return e})}async delete({id:t},i){return this.instrumentOperation("delete",async()=>{const e=await this.getMeta(t);e.status="deleted",await this.abortMultipartUpload(e,i),await this.deleteMeta(e.id);const r={...e};return await this.onDelete(r),r})}async copy(t,i,e){return this.instrumentOperation("copy",async()=>{b.assertSafeId(t),b.assertSafeId(i);const r=await this.getMeta(t),a=`${this.bucket}/${t}`,s=this.bucket,c=i,n=this.getS3Api();return await this.runOperation(e,o=>n.copyObject({Bucket:s,CopySource:a,Key:c,...e?.storageClass&&{StorageClass:e.storageClass}},{signal:o})),{...r,id:c,name:c}})}async move(t,i,e){return this.instrumentOperation("move",async()=>{await this.copy(t,i,e);const r=this.getS3Api();return await this.runOperation(e,a=>r.deleteObject({Bucket:this.bucket,Key:t},{signal:a})),await this.getMeta(i)})}async list(t=1e3,i){return this.instrumentOperation("list",async()=>{const e=this.getS3Api(),r=Math.min(t,1e3);let a={Bucket:this.bucket,MaxKeys:r};const s=[];let c=!0;for(;c&&s.length<t;)try{const n=await this.runOperation(i,o=>e.listObjectsV2(a,{signal:o}));for(const{Key:o,LastModified:l}of n?.Contents||[]){if(s.length>=t)break;o!==void 0&&s.push({id:o,...l&&{createdAt:l}})}c=n.IsTruncated||!1,c&&n.NextContinuationToken&&s.length<t&&(a={...a,ContinuationToken:n.NextContinuationToken,MaxKeys:Math.min(r,t-s.length)})}catch(n){const o=this.normalizeError(n instanceof Error?n:new Error(String(n)));throw await this.onError(o),n}return s},{limit:t})}async listDirectory(t){return this.instrumentOperation("listDirectory",async()=>{const i=this.getS3Api(),e=t?.limit??1e3,r=Math.min(e,1e3);let a={Bucket:this.bucket,Delimiter:t?.delimiter,MaxKeys:r,...t?.prefix!==void 0&&{Prefix:t.prefix}};const s=[],c=new Set;let n=!0;for(;n&&s.length<e;)try{const o=await this.runOperation(t,l=>i.listObjectsV2(a,{signal:l}));for(const{Prefix:l}of o?.CommonPrefixes||[])l!==void 0&&c.add(l);for(const{Key:l,LastModified:p}of o?.Contents||[]){if(s.length>=e)break;l!==void 0&&s.push({id:l,...p&&{createdAt:p}})}n=o.IsTruncated||!1,n&&o.NextContinuationToken&&s.length<e&&(a={...a,ContinuationToken:o.NextContinuationToken,MaxKeys:Math.min(r,e-s.length)})}catch(o){const l=this.normalizeError(o instanceof Error?o:new Error(String(o)));throw await this.onError(l),o}return{files:s,prefixes:[...c]}},{limit:t?.limit??1e3})}async exists({id:t},i){return this.instrumentOperation("exists",async()=>{try{await this.getMeta(t);const e=this.getS3Api();return await this.runOperation(i,r=>e.headObject({Bucket:this.bucket,Key:t},{signal:r})),!0}catch{return!1}})}async get({id:t},i){return this.instrumentOperation("get",async()=>{const e=this.getS3Api(),r=N(i?.range),{Body:a,ContentLength:s,ContentType:c,ETag:n,Expires:o,LastModified:l,Metadata:p}=await this.runOperation(i,h=>e.getObject({Bucket:this.bucket,Key:t,...r!==void 0&&{Range:r}},{signal:h}));await this.checkIfExpired({expiredAt:o});const d=[];if(a)if(a instanceof w)for await(const h of a)d.push(h instanceof Uint8Array?h:new Uint8Array(h));else{const h=a.getReader();try{for(;;){const{done:P,value:E}=await h.read();if(P)break;d.push(E)}}finally{h.releaseLock()}}const{originalName:g,...f}=p||{};return{content:Buffer.concat(d),contentType:c,ETag:n,expiredAt:o,id:t,metadata:f,modifiedAt:l,name:t,originalName:g||t,size:Number(s)}})}async buildPresigned(t){const i=t;if(i.Parts?.length||(i.Parts=await this.getParts(t)),i.bytesWritten=i.Parts.map(e=>e.Size||0).reduce((e,r)=>e+r,0),t.status=S(i),i.partsUrls?.length||(i.partsUrls=await this.getPartsPresignedUrls(t)),t.status==="completed"){const[e]=await this.internalOnComplete(t);return delete i.Parts,i.uri=e.Location,t}return t}async getPartsPresignedUrls(t){t.partSize??=this.partSize;const i=t.UploadId;if(!i)throw new Error("UploadId is required for getting presigned URLs");const e=Math.trunc(t.size/this.partSize)+1,r=[],a=Math.trunc(v(this.config.expiration?.maxAge||"6hrs")),s=this.getS3Api();for(let c=0;c<e;c++)r.push(s.getPresignedUrl({Bucket:this.bucket,expiresIn:a,Key:t.name,PartNumber:c+1,UploadId:i}));return Promise.all(r)}async getParts(t){const i=this.getS3Api(),e=t.UploadId;if(!e)throw new Error("UploadId is required");const{Parts:r=[]}=await this.runOperation(void 0,a=>i.listParts({Bucket:this.bucket,Key:t.name,UploadId:e},{signal:a}));return r}completeMultipartUpload(t){const i=this.getS3Api(),e=t.UploadId;if(!e)throw new Error("UploadId is required");const r=t.Parts?.map(({ETag:a,PartNumber:s})=>{if(!a||!s)throw new Error("ETag and PartNumber are required");return{ETag:a,PartNumber:s}})||[];return this.runOperation(void 0,a=>i.completeMultipartUpload({Bucket:this.bucket,Key:t.name,Parts:r,UploadId:e},{signal:a}))}async abortMultipartUpload(t,i){if(t.status!=="completed")try{const e=this.getS3Api(),r=t.UploadId;if(!r)return;await this.runOperation(i,a=>e.abortMultipartUpload({Bucket:this.bucket,Key:t.name,UploadId:r},{signal:a}))}catch(e){this.logger?.error("abortMultipartUploadError: ",e);const r=this.normalizeError(e instanceof Error?e:new Error(String(e)));await this.onError(r)}}internalOnComplete=async t=>{const[i]=await Promise.all([this.completeMultipartUpload(t),this.deleteMeta(t.id)]);return[i,t]}}export{b as S,N as b};
@@ -1,5 +1,5 @@
1
1
  import { Readable } from 'node:stream';
2
- import { F as File, M as MetaStorage, c as createRetryWrapper, R as RetryConfig, b as FileInit, B as BaseStorage, O as OperationOptions, d as FilePart, e as FileQuery, a as FileReturn } from "./storage.d-C6HtvSoY.js";
2
+ import { F as File, M as MetaStorage, c as createRetryWrapper, R as RetryConfig, d as FileInit, B as BaseStorage, O as OperationOptions, e as FilePart, f as FileQuery, g as FileReturn } from "./storage.d-CEM1upWM.js";
3
3
  /**
4
4
  * Part interface for multipart uploads.
5
5
  */
@@ -0,0 +1 @@
1
+ const n=new Set(["fr-par","nl-ams","pl-waw"]),E=s=>{const r=s?.accessKeyId??process.env.AWS_ACCESS_KEY_ID??process.env.SCALEWAY_ACCESS_KEY_ID??process.env.SCALEWAY_ACCESS_KEY,o=s?.endpoint??process.env.SCALEWAY_ENDPOINT,e=s?.region??process.env.SCALEWAY_REGION,c=s?.secretAccessKey??process.env.AWS_SECRET_ACCESS_KEY??process.env.SCALEWAY_SECRET_ACCESS_KEY??process.env.SCALEWAY_SECRET_KEY;if(!e||!r||!c)throw new Error("Missing required parameters for Scaleway Object Storage client.");if(!n.has(e))throw new Error(`Invalid Scaleway region "${e}". Expected one of: ${[...n].join(", ")}.`);return{credentials:{accessKeyId:r,secretAccessKey:c},endpoint:o??`https://s3.${e}.scw.cloud`,forcePathStyle:!1,region:e}};export{E as default};
@@ -0,0 +1 @@
1
+ const c={value:{createdAt:"2022-12-16T10:35:17.466Z",id:"391c9157ec481ac6-f72b2d884632d7e6-cdeb2056546033e3",modifiedAt:"2022-12-16T10:35:17.470Z"}},o=(e,t)=>e.map(i=>({...i,description:`[${t}] ${i.description}`,"x-group":t})),d=(e,t=["jpeg","png","webp","avif","tiff","gif","mp4","webm","mkv","ogg","mp3","wav","aac","flac"])=>{if(!e)return[];const i=o([{description:"Output format for the transformed media",in:"query",name:"format",schema:{enum:t,type:"string"}},{description:"Quality setting (0-100 for images, affects compression)",in:"query",name:"quality",schema:{maximum:100,minimum:1,type:"integer"}}],"Common"),n=o([{description:"Desired width in pixels",in:"query",name:"width",schema:{minimum:1,type:"integer"}},{description:"Desired height in pixels",in:"query",name:"height",schema:{minimum:1,type:"integer"}},{description:"Resize fit mode",in:"query",name:"fit",schema:{enum:["cover","contain","fill","inside","outside"],type:"string"}},{description:"Position for cover/contain fits",in:"query",name:"position",schema:{oneOf:[{enum:["top","right","bottom","left","center"],type:"string"},{minimum:0,type:"integer"}]}},{description:"Avoid enlarging images smaller than specified dimensions",in:"query",name:"withoutEnlargement",schema:{type:"boolean"}},{description:"Avoid reducing images larger than specified dimensions",in:"query",name:"withoutReduction",schema:{type:"boolean"}},{description:"Resize kernel algorithm",in:"query",name:"kernel",schema:{enum:["nearest","cubic","mitchell","lanczos2","lanczos3"],type:"string"}},{description:"Fast shrink on load for large images",in:"query",name:"fastShrinkOnLoad",schema:{type:"boolean"}},{description:"Crop area left offset",in:"query",name:"left",schema:{minimum:0,type:"integer"}},{description:"Crop area top offset",in:"query",name:"top",schema:{minimum:0,type:"integer"}},{description:"Crop area width",in:"query",name:"cropWidth",schema:{minimum:1,type:"integer"}},{description:"Crop area height",in:"query",name:"cropHeight",schema:{minimum:1,type:"integer"}},{description:"Rotation angle in degrees. Note: angles other than 90°, 180°, and 270° require interpolation and may affect quality",in:"query",name:"angle",schema:{type:"number"}},{description:"Background color for rotation (hex, rgb, or color name)",in:"query",name:"background",schema:{type:"string"}},{description:"Apply blur effect",in:"query",name:"blur",schema:{type:"boolean"}},{description:"Apply sharpening",in:"query",name:"sharpen",schema:{type:"boolean"}},{description:"Apply median filter with specified size",in:"query",name:"median",schema:{minimum:1,type:"integer"}},{description:"Apply CLAHE (Contrast Limited Adaptive Histogram Equalization)",in:"query",name:"clahe",schema:{type:"boolean"}},{description:"Apply thresholding with specified value (0-255)",in:"query",name:"threshold",schema:{maximum:255,minimum:0,type:"integer"}},{description:"Apply gamma correction",in:"query",name:"gamma",schema:{type:"boolean"}},{description:"Negate (invert) the image",in:"query",name:"negate",schema:{type:"boolean"}},{description:"Normalise the image",in:"query",name:"normalise",schema:{type:"boolean"}},{description:"Flatten alpha channel",in:"query",name:"flatten",schema:{type:"boolean"}},{description:"Unflatten alpha channel",in:"query",name:"unflatten",schema:{type:"boolean"}},{description:"Flip image vertically",in:"query",name:"flip",schema:{type:"boolean"}},{description:"Flop image horizontally",in:"query",name:"flop",schema:{type:"boolean"}},{description:"Convert to greyscale",in:"query",name:"greyscale",schema:{type:"boolean"}},{description:"Apply modulation effects",in:"query",name:"modulate",schema:{type:"boolean"}},{description:"Brightness multiplier for modulation",in:"query",name:"brightness",schema:{type:"number"}},{description:"Saturation multiplier for modulation",in:"query",name:"saturation",schema:{type:"number"}},{description:"Hue rotation in degrees for modulation",in:"query",name:"hue",schema:{type:"integer"}},{description:"Lightness adjustment for modulation",in:"query",name:"lightness",schema:{type:"integer"}},{description:"Apply tinting",in:"query",name:"tint",schema:{type:"boolean"}},{description:"Convert colourspace",in:"query",name:"colourspace",schema:{enum:["srgb","rgb","cmyk","lab","b-w"],type:"string"}},{description:"Apply affine transformation",in:"query",name:"affine",schema:{type:"boolean"}},{description:"Apply dilation",in:"query",name:"dilate",schema:{type:"boolean"}},{description:"Apply erosion",in:"query",name:"erode",schema:{type:"boolean"}},{description:"Set pipeline colourspace",in:"query",name:"pipelineColourspace",schema:{type:"boolean"}},{description:"Convert to colourspace",in:"query",name:"toColourspace",schema:{type:"boolean"}},{description:"Remove alpha channel",in:"query",name:"removeAlpha",schema:{type:"boolean"}},{description:"Ensure alpha channel",in:"query",name:"ensureAlpha",schema:{type:"boolean"}}],"Image"),s=o([{description:"Desired width in pixels",in:"query",name:"width",schema:{minimum:1,type:"integer"}},{description:"Desired height in pixels",in:"query",name:"height",schema:{minimum:1,type:"integer"}},{description:"Video frame rate in Hz",in:"query",name:"frameRate",schema:{minimum:1,type:"number"}},{description:"Video key frame interval in seconds",in:"query",name:"keyFrameInterval",schema:{minimum:.1,type:"number"}}],"Video"),r=o([{description:"Target bitrate in bits per second",in:"query",name:"bitrate",schema:{minimum:1,type:"integer"}},{description:"Video or audio codec",in:"query",name:"codec",schema:{enum:["avc","hevc","vp8","vp9","av1","aac","opus","mp3","vorbis","flac"],type:"string"}}],"Video/Audio"),l=o([{description:"Audio channel count",in:"query",name:"numberOfChannels",schema:{enum:[1,2,3,4,5,6,7,8],type:"integer"}},{description:"Audio sample rate in Hz",in:"query",name:"sampleRate",schema:{enum:[8e3,11025,16e3,22050,32e3,44100,48e3,88200,96e3,192e3],type:"integer"}}],"Audio");let a=[];a=[...a,...i],(e===!0||e==="image")&&(a=[...a,...n]),(e===!0||e==="video")&&(a=[...a,...s]),(e===!0||e==="video"||e==="audio")&&(a=[...a,...r]),(e===!0||e==="audio")&&(a=[...a,...l]);const m=new Set;return a.filter(p=>m.has(p.name)?!1:(m.add(p.name),!0))},y=(e,t=["jpeg","png","webp","avif","tiff","gif","mp4","webm","mkv","ogg","mp3","wav","aac","flac"])=>{const i=d(e,t),n={};return i.forEach(s=>{const r=s["x-group"]||"Other";n[r]||(n[r]=[]),n[r].push(s.name)}),{groups:n,parameters:i}},u=e=>e?{"X-Media-Type":{description:"Type of media (image/video/audio)",schema:{enum:["image","video","audio"],type:"string"}},"X-Original-Format":{description:"Original file format",schema:{type:"string"}},"X-Transformed-Format":{description:"Transformed file format",schema:{type:"string"}}}:{},h=e=>e?{400:{content:{"application/json":{examples:{ValidationError:{value:{error:{code:"INVALID_PARAMS_FOR_IMAGE",details:{invalidParams:["codec","bitrate"],mediaType:"image",validParams:["format","quality","width","height","fit","position","withoutEnlargement","withoutReduction","kernel","fastShrinkOnLoad","left","top","cropWidth","cropHeight","angle","background","blur","sharpen","median","clahe","threshold","gamma","negate","normalise","flatten","unflatten","flip","flop","greyscale","modulate","brightness","saturation","hue","lightness","tint","colourspace","affine","dilate","erode","pipelineColourspace","toColourspace","removeAlpha","ensureAlpha"]},message:"Invalid query parameters for image transformation: codec, bitrate. Images support: format, quality, width, height, fit, position, withoutEnlargement, withoutReduction, kernel, fastShrinkOnLoad, left, top, cropWidth, cropHeight, angle, background, blur, sharpen, median, clahe, threshold, gamma, negate, normalise, flatten, unflatten, flip, flop, greyscale, modulate, brightness, saturation, hue, lightness, tint, colourspace, affine, dilate, erode, pipelineColourspace, toColourspace, removeAlpha, ensureAlpha. Video/audio parameters (codec, bitrate) are not supported for images.",name:"ValidationError"}}}},schema:{$ref:"#/components/schemas/ValidationError"}}},description:"Invalid transformation parameters"},413:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"File too large for transformation"},415:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Unsupported media type for transformation"}}:{},g=(e,t,i,n)=>({description:"Get the uploaded file with optional media transformation support",operationId:e,parameters:[{in:"path",name:"id",required:!0,schema:{type:"string"}},...d(i,n)],responses:{200:{content:{"*/*":{schema:{description:i?"Transformed file content":"File content",format:"binary",type:"string"}}},description:i?"File retrieved and transformed successfully":"File retrieved successfully",headers:{"Content-Type":{description:`MIME type of the file${i?" (or transformed file)":""}`,schema:{type:"string"}},ETag:{description:`Upload ETag${i?" (or transformed file ETag)":""}`,schema:{example:"d41d8cd98f00b204e9800998ecf8427e",type:"string"}},"Last-Modified":{description:"Upload last modified date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}},...u(i),"X-Upload-Expires":{description:"Upload expiration date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}}}},...h(i),404:{content:{"application/json":{example:{error:{code:"FileNotFound",message:"Not found"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Not Found"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Get the uploaded file",tags:t}),f=(e,t)=>({description:"Get the uploaded file metadata",operationId:e,parameters:[{in:"path",name:"id",required:!0,schema:{type:"string"}}],responses:{200:{content:{"application/json":{schema:{$ref:"#/components/schemas/FileMeta"}}},description:"OK",headers:{"Last-Modified":{description:"Upload last modified date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}},"X-Upload-Expires":{description:"Upload expiration date",schema:{example:"2021-08-25T11:12:26.635Z",format:"date-time",type:"string"}}}},404:{content:{"application/json":{example:{error:{code:"FileNotFound",message:"File metadata not found"}},schema:{$ref:"#/components/schemas/Error"}}},description:"Not Found"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Get the uploaded file metadata",tags:t}),b={Error:{description:"Error",properties:{error:{properties:{code:{minLength:1,type:"string"},message:{minLength:1,type:"string"},name:{minLength:3,type:"string"}},required:["message"],type:"object"}},required:["error"],type:"object"},ValidationError:{description:"Validation error response",properties:{code:{enum:["INVALID_PARAMS_FOR_IMAGE","INVALID_PARAMS_FOR_VIDEO","INVALID_PARAMS_FOR_AUDIO","INVALID_FIT_VALUE","INVALID_ANGLE_VALUE","INVALID_FORMAT","INCOMPLETE_CROP_PARAMS","INVALID_VIDEO_CODEC","INVALID_VIDEO_FORMAT","INVALID_WIDTH","INVALID_HEIGHT","INVALID_BITRATE","INVALID_FRAME_RATE","INVALID_KEY_FRAME_INTERVAL","INVALID_AUDIO_CODEC","INVALID_AUDIO_FORMAT","INVALID_CHANNEL_COUNT","INVALID_SAMPLE_RATE"],type:"string"},details:{properties:{invalidParams:{items:{type:"string"},type:"array"},mediaType:{enum:["image","video","audio"],type:"string"},suggestions:{items:{type:"string"},type:"array"},validParams:{items:{type:"string"},type:"array"}},required:["invalidParams","validParams","mediaType"],type:"object"},message:{type:"string"},name:{enum:["ValidationError"],type:"string"}},required:["code","details","message","name"],type:"object"}},A={FileMeta:{description:"File meta",properties:{bytesWritten:{type:"integer"},contentType:{type:"string"},createdAt:{format:"date-time",type:"string"},id:{minLength:1,type:"string"},metadata:{type:"object"},name:{minLength:1,type:"string"},originalName:{minLength:1,type:"string"},status:{enum:["completed","part","deleted","created"],type:"string"}},type:"object"}},q={FileMeta:{value:[c]},FileMetaPagination:{value:{data:[c.value],meta:{firstPage:1,firstPageUrl:"/?page=1",lastPage:1,lastPageUrl:"/?page=10",nextPageUrl:"/?page=2",page:1,perPage:1,previousPageUrl:void 0,total:1}}}},I=(e,t)=>({description:"List upload",operationId:e,parameters:[{description:"Maximum number of elements to retrieve.",in:"query",name:"limit",schema:{nullable:!0,type:"integer"}},{description:"Page number. Use only for pagination.",in:"query",name:"page",schema:{nullable:!0,type:"integer"}}],responses:{200:{content:{"application/json":{examples:{Default:{$ref:"#/components/examples/FileMeta"},Pagination:{$ref:"#/components/examples/FileMetaPagination"}},schema:{$ref:"#/components/schemas/FileMeta"}}},description:"OK"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"List upload",tags:t});export{y as getOrganizedTransformationParameters,b as sharedErrorSchemaObject,q as sharedFileMetaExampleObject,A as sharedFileMetaSchemaObject,g as sharedGet,I as sharedGetList,f as sharedGetMeta};
@@ -0,0 +1 @@
1
+ import{Readable as K}from"node:stream";import{setInterval as W}from"node:timers";import{inspect as Z}from"node:util";import{W as H,A as O}from"./path-0oTTdkvl-DvWvbDbh.js";import X from"type-is";import q from"./NoOpMetrics-BLo6u4NY.js";import{N as J}from"./cache-Cw3QjoVN.js";import{ErrorMap as $,throwErrorCode as b,ERRORS as E}from"./ERRORS-BIBxE2oR.js";import{randomUUID as Q}from"node:crypto";import{LRUCache as ee}from"lru-cache";import{retry as te}from"./createRetryWrapper-CxgiV_hH.js";import{t as re}from"./is-expired-CBEk6XBi.js";const se=/^(?<value>-?\d+(?:[.,]\d+)*) *(?<type>[a-z]+)?$/i,oe=/^KIBI/,ie=/^MIBI/,ae=/^GIBI/,ne=/^TEBI/,ce=/^PEBI/,le=/^EXBI/,ue=/^ZEBI/,ge=/^YIBI/,he=/^(.)IB$/,me={iec:[{long:"Bytes",short:"B"},{long:"Kibibytes",short:"KiB"},{long:"Mebibytes",short:"MiB"},{long:"Gibibytes",short:"GiB"},{long:"Tebibytes",short:"TiB"},{long:"Pebibytes",short:"PiB"},{long:"Exbibytes",short:"EiB"},{long:"Zebibytes",short:"ZiB"},{long:"Yobibytes",short:"YiB"}],iec_octet:[{long:"Octets",short:"o"},{long:"Kibioctets",short:"Kio"},{long:"Mebioctets",short:"Mio"},{long:"Gibioctets",short:"Gio"},{long:"Tebioctets",short:"Tio"},{long:"Pebioctets",short:"Pio"},{long:"Exbioctets",short:"Eio"},{long:"Zebioctets",short:"Zio"},{long:"Yobioctets",short:"Yio"}],metric:[{long:"Bytes",short:"Bytes"},{long:"Kilobytes",short:"KB"},{long:"Megabytes",short:"MB"},{long:"Gigabytes",short:"GB"},{long:"Terabytes",short:"TB"},{long:"Petabytes",short:"PB"},{long:"Exabytes",short:"EB"},{long:"Zettabytes",short:"ZB"},{long:"Yottabytes",short:"YB"}],metric_octet:[{long:"Octets",short:"o"},{long:"Kilo-octets",short:"ko"},{long:"Mega-octets",short:"Mo"},{long:"Giga-octets",short:"Go"},{long:"Tera-octets",short:"To"},{long:"Peta-octets",short:"Po"},{long:"Exa-octets",short:"Eo"},{long:"Zetta-octets",short:"Zo"},{long:"Yotta-octets",short:"Yo"}]},k=new Map,de=t=>{let e=k.get(t);if(e===void 0){const r=new Intl.NumberFormat(t);e={decimalSeparator:r.format(1.1).replaceAll(new RegExp("\\p{Number}","gu"),""),thousandSeparator:r.format(11111).replaceAll(new RegExp("\\p{Number}","gu"),"")},k.set(t,e)}return e},pe=(t,e)=>{const{decimalSeparator:r,thousandSeparator:s}=de(e);return Number.parseFloat(t.replaceAll(new RegExp(`\\${s}`,"g"),"").replace(new RegExp(`\\${r}`),"."))},fe=t=>{switch(t){case 2:return 1024;case 10:return 1e3;default:throw new Error("Unsupported base.")}},_=(t,e)=>{const r={base:2,locale:"en-US",units:"metric",...e};if(typeof t!="string"||t.length===0)throw new TypeError("Value is not a string or is empty.");if(t.length>100)throw new TypeError("Value exceeds the maximum length of 100 characters.");const s=se.exec(t)?.groups;if(!s)return Number.NaN;const o=pe(s.value,r.locale),i=(s.type??"Bytes").toUpperCase().replace(oe,"KILO").replace(ie,"MEGA").replace(ae,"GIGA").replace(ne,"TERA").replace(ce,"PETA").replace(le,"EXA").replace(ue,"ZETTA").replace(ge,"YOTTA").replace(he,"$1B"),a=me[r.units].findIndex(l=>l.short.toUpperCase()===i||l.long.toUpperCase()===i);if(a===-1)return Number.NaN;const c=fe(r.base);return o*c**a},ye=(t,e,r,s,o,i,a,c,l,n,u,h,g,d)=>{const m={d:s,h:o,m:i,mo:e,ms:c,s:a,w:r,y:t};return m.future=l,m.past=n,m.decimal=u,h!==void 0&&(m.unitMap=h),m.groupSeparator=g,m.placeholderSeparator=d,m},F={d:"d",day:"d",days:"d",h:"h",hour:"h",hours:"h",hr:"h",hrs:"h",m:"m",millisecond:"ms",milliseconds:"ms",min:"m",mins:"m",minute:"m",minutes:"m",mo:"mo",month:"mo",months:"mo",ms:"ms",s:"s",sec:"s",second:"s",seconds:"s",secs:"s",w:"w",week:"w",weeks:"w",y:"y",year:"y",years:"y",yr:"y",yrs:"y"},we=ye(t=>`year${t===1?"":"s"}`,t=>`month${t===1?"":"s"}`,t=>`week${t===1?"":"s"}`,t=>`day${t===1?"":"s"}`,t=>`hour${t===1?"":"s"}`,t=>`minute${t===1?"":"s"}`,t=>`second${t===1?"":"s"}`,t=>`millisecond${t===1?"":"s"}`,"in %s","%s ago",".",F,",","_"),z=new WeakSet,be=t=>{if(z.has(t))return;const e=["y","mo","w","d","h","m","s","ms","future","past"];for(const s of e)if(!Object.hasOwn(t,s))throw new TypeError(`Missing required property: ${s}`);if(typeof t.future!="string"||typeof t.past!="string")throw new TypeError("Properties future and past must be of type string");const r=["y","mo","w","d","h","m","s","ms"];for(const s of r)if(typeof t[s]!="string"&&typeof t[s]!="function")throw new TypeError(`Property ${s} must be of type string or function`);if(t.decimal&&typeof t.decimal!="string")throw new TypeError("Property decimal must be of type string");if(t.delimiter&&typeof t.delimiter!="string")throw new TypeError("Property delimiter must be of type string");if(t._digitReplacements&&!Array.isArray(t._digitReplacements))throw new TypeError("Property _digitReplacements must be an array");if(t._numberFirst&&typeof t._numberFirst!="boolean")throw new TypeError("Property _numberFirst must be of type boolean");if(t.unitMap&&typeof t.unitMap!="object")throw new TypeError("Property unitMap must be an object");if(t.unitMap&&Object.values(t.unitMap).some(s=>typeof s!="string"))throw new TypeError("All values in unitMap must be of type string");z.add(t)},w={d:864e5,h:36e5,m:6e4,mo:2629746e3,ms:1,s:1e3,w:6048e5,y:31556952e3},T=/[-/\\^$*+?.()|[\]{}]/g,R=new WeakMap,v=t=>String.raw`(?:(\d+(?:[.,]\d+)?)${t})?`,Ee=new RegExp(`^P${v("Y")}${v("M")}${v("W")}${v("D")}(?:T${v("H")}${v("M")}${v("S")})?$`,"i"),ve=/^(?:(\d+):)?(?:(\d+):)?(\d+)$/,$e=/^[+-]?\d+(?:\.\d+)?$/,xe=/^[-+]/,Ae=(t,e)=>{if(typeof t!="string"||t.length===0)return;const{defaultUnit:r="ms",language:s=we}={};be(s);const o=s.decimal??".",i=s.groupSeparator??",",a=s.placeholderSeparator??"_",c=o.replaceAll(T,String.raw`\$&`),l=i.replaceAll(T,String.raw`\$&`),n=a.replaceAll(T,String.raw`\$&`),u=s.unitMap??F;let h=t.replaceAll(new RegExp(String.raw`(\d)[${n}${l}](\d)`,"g"),"$1$2");if(o!=="."&&(h=h.replaceAll(new RegExp(String.raw`(\d)${c}(\d)`,"g"),"$1.$2")),$e.test(t)){const f=Number.parseFloat(h.trim());if(!Number.isNaN(f)){const p=u[r];if(p!==void 0)return f*w[p]}return}const g=Ee.exec(t);if(g){const f=[[1,w.y],[2,w.mo],[3,w.w],[4,w.d],[5,w.h],[6,w.m],[7,w.s]];let p=0,y=!1;for(const[N,I]of f){const A=g[N];A!==void 0&&(y=!0,p+=Number.parseFloat(A.replace(",","."))*I)}if(y)return p}const d=ve.exec(t);if(d){let f=0,p=0;d[2]!==void 0?(f=Number.parseInt(d[1]??"0",10),p=Number.parseInt(d[2],10)):d[1]!==void 0&&(p=Number.parseInt(d[1],10));const y=Number.parseInt(d[3]??"0",10);return f*36e5+p*6e4+y*1e3}let m=R.get(u);if(m===void 0){const f=Object.keys(u).toSorted((p,y)=>y.length-p.length).map(p=>p.replaceAll(T,String.raw`\$&`)).join("|");m=new RegExp(String.raw`(-?\d*\.?\d+)\s*(${f})`,"gi"),R.set(u,m)}let D=0,x,S=!1,B=-1,M=0;for(m.lastIndex=0;(x=m.exec(h))!==null;){const f=x[1],p=x[2];if(!f||!p)continue;const y=f.trim(),N=y.startsWith("-")?-1:1,I=y.replace(xe,""),A=Number.parseFloat(I),U=u[p.toLowerCase()];if(U===void 0)continue;if(!S)B=x.index;else if(h.slice(M,x.index).trim().length>0)return;S=!0,M=m.lastIndex;const Y=w[U];if(Number.isNaN(A))return;D+=N*A*Y}const j=h.slice(0,B).trim(),G=h.slice(M).trim();if(!(S&&(j.length>0||G.length>0))&&S)return D};class Se extends ee{constructor(e){super({ttl:3e4,ttlAutopurge:!0,...e})}lock(e){if(this.get(e)!==void 0)throw new Error(`${e} is locked`);const r=Q();return this.set(e,r),r}unlock(e,r){return this.get(e)!==r?!1:this.delete(e)}}const C=t=>{if(t===Number(t))return t;if(!t)return;const e=Ae(t);if(e!==void 0)return e};class Te extends Error{code;statusCode;body;headers;name="ValidationError";constructor(e,r,s,o){const i=typeof s=="string"?s:s?.message||"Validation error";super(i),this.code=e,this.statusCode=r,this.body=s,this.headers=o}}const Ce=t=>t&&t[0].toUpperCase()+t.slice(1),Me=t=>{if(!Array.isArray(t))return t;const[e,r,s]=t;return{body:r,headers:s,statusCode:e}};class Ne{constructor(e="ValidationError"){this.prefix=e}prefix;validators={};add(e){Object.entries(e).forEach(([r,s])=>{const o=`${this.prefix}${Ce(r)}`;if(this.validators[o]={...this.validators[o],...s},typeof this.validators[o].isValid!="function")throw new TypeError('Validation config "isValid" is missing, or it is not a function!')})}async verify(e){for(const[r,s]of Object.entries(this.validators))if(!await s.isValid(e)){const o=s.response||(r in $?$[r]:$.UnknownError),i=Me(o),{body:a,headers:c,message:l,statusCode:n}=i;throw new Te(r,n,a||l,c)}}}const We=t=>t.name==="ValidationError",Ie=t=>{if(typeof t.name=="string")return t.name;if(typeof t.title=="string")return t.title;if(typeof t.originalName=="string")return t.originalName;if(typeof t.filename=="string")return t.filename},P=(t,e)=>{const r={...t};return Object.keys(e).forEach(s=>{const o=e[s];if(o!==null&&typeof o=="object"&&!Array.isArray(o)){const i=r[s],a=i&&typeof i=="object"&&!Array.isArray(i)?i:{};r[s]=P(a,o)}else r[s]=o}),r},Oe=(t,e)=>{const r=P(t,e);Object.assign(t,r),t.originalName=Ie(t.metadata)||t.originalName},De=/(secret|password|passwd|pwd|token|api[_-]?key|credential|authorization|sas|signature|sessiontoken|connectionstring)/i,L=t=>{const e={};for(const[r,s]of Object.entries(t))typeof s=="string"&&De.test(r)?e[r]="[REDACTED]":s&&typeof s=="object"&&!Array.isArray(s)&&s.constructor===Object?e[r]=L(s):e[r]=s;return e},Be={allowMIME:["*/*"],filename:({id:t})=>t,maxMetadataSize:"8MB",maxUploadSize:"5TB",onComplete:()=>{},onCreate:()=>{},onDelete:()=>{},onError:()=>{},onUpdate:()=>{},useRelativeLocation:!1,validation:{}},Ue=t=>!t||t.length<3||t.length>255||O(t)?!1:!(t.toUpperCase().includes("../")||t.includes("\0")),Ze=t=>{if(!t||t.length<3||t.length>255||O(t))return!1;const e=t.toUpperCase();return!['"',"*",":","<",">","?","\\","|","../","\0"].some(r=>e.includes(r))};class V{onCreate;onUpdate;onComplete;onDelete;onError;isReady=!0;errorResponses={};cache;logger;metrics;genericConfig;maxMetadataSize;checksumTypes=[];supportsRange=!1;supportsMetadata=!0;supportsCacheControl=!1;supportsDelimiter=!1;reportsUploadProgress=!1;maxUploadSize;expiration;locker;namingFunction;validation=new Ne;assetFolder=void 0;concurrency;constructor(e){const r={...Be,...e};this.onCreate=r.onCreate,this.onUpdate=r.onUpdate,this.onComplete=r.onComplete,this.onDelete=r.onDelete,this.onError=r.onError,this.namingFunction=r.filename,this.maxUploadSize=typeof r.maxUploadSize=="string"?_(r.maxUploadSize):r.maxUploadSize,this.maxMetadataSize=typeof r.maxMetadataSize=="string"?_(r.maxMetadataSize):r.maxMetadataSize,this.expiration=r.expiration,this.genericConfig=r,r.assetFolder!==void 0&&(this.assetFolder=H(r.assetFolder)),this.locker=new Se({max:1e3,ttl:3e4,ttlAutopurge:!0}),this.cache=r.cache??new J,this.logger=r.logger,this.metrics=r.metrics??new q,this.logger?.debug(`${this.constructor.name} config: ${Z(L({...e,logger:this.logger.constructor}))}`);const s=C(r.expiration?.purgeInterval);s&&this.startAutoPurge(s);const o={isValid(l){if(l.size===void 0)return!0;const n=l.size;if(n==null)return!1;const u=typeof n=="number"?n:Number(n);if(Number.isNaN(u)||u<0)return!1;const h=typeof this.value=="number"?this.value:Number(this.value);return!Number.isNaN(h)&&u<=h},response:$.RequestEntityTooLarge,value:this.maxUploadSize},i={isValid(l){return!!X.is(l.contentType,this.value)},response:$.UnsupportedMediaType,value:r.allowMIME},a=r.fileNameValidation??Ue,c={isValid(l){return a(l.name)},response:$.InvalidFileName};this.validation.add({filename:c,mime:i,size:o}),this.validation.add({...r.validation})}get raw(){}async getReadUrl(e,r){return b(E.METHOD_NOT_ALLOWED,`${this.constructor.name} does not implement getReadUrl()`)}async getUploadUrl(e,r){return b(E.METHOD_NOT_ALLOWED,`${this.constructor.name} does not implement getUploadUrl()`)}get tusExtension(){const e=["creation","creation-with-upload","termination","checksum","creation-defer-length","concatenation"];return this.expiration&&e.push("expiration"),e}async validate(e){await this.validation.verify(e)}async exists(e,r){return this.instrumentOperation("exists",async()=>{try{return await this.getMeta(e.id,r),!0}catch{return!1}})}normalizeError(e){const r={code:e.name,message:e.message,name:e.name,statusCode:500};return{...r,message:`[${this.constructor.name}] ${r.message}`}}get config(){return this.genericConfig}async saveMeta(e){return V.assertSafeId(e.id),this.updateTimestamps(e),this.cache.set(e.id,e),this.meta.save(e.id,e)}static assertSafeId(e){(!e||typeof e!="string"||e.includes("\0")||e.includes("../")||e.includes("..\\")||e===".."||e.startsWith("../")||e.startsWith("..\\")||O(e)||/^[A-Z]:[/\\]/i.test(e))&&b(E.INVALID_FILE_NAME,`Invalid file id: "${e}"`)}async deleteMeta(e){return this.cache.delete(e),this.meta.delete(e)}async getMeta(e,r){try{const s=await this.meta.get(e);return this.cache.set(s.id,s),{...s}}catch(s){const o=this.normalizeError(s instanceof Error?s:new Error(String(s)));return await this.onError(o),b(E.FILE_NOT_FOUND)}}async checkIfExpired(e){return re(e)?(this.delete(e).catch(()=>{}),this.deleteMeta(e.id).catch(()=>{}),b(E.GONE)):e}async purge(e){return this.instrumentOperation("purge",async()=>{const r=C(e||this.expiration?.maxAge),s={items:[],maxAgeMs:r};if(r){const o=Date.now()-r,i=(await this.list()).filter(a=>Number(new Date(this.expiration?.rolling&&a.modifiedAt||a.createdAt))<o);for await(const{id:a,...c}of i)try{const l=await this.delete({id:a});s.items.push({...l,...c})}catch(l){this.logger?.warn(`Failed to delete file ${a} during purge: ${l instanceof Error?l.message:String(l)}`)}s.items.length>0&&(this.logger?.info(`Purge: removed ${s.items.length} uploads`),this.metrics.gauge("storage.operations.purge.items_count",s.items.length,{storage:this.constructor.name.toLowerCase().replace("storage","")}))}return s})}async getStream({id:e},r){return this.instrumentOperation("getStream",async()=>{const s=await this.get({id:e},r),o=K.from(s.content);return{headers:{"Content-Length":String(s.size),"Content-Type":s.contentType,...s.ETag&&{ETag:s.ETag},...s.modifiedAt&&{"Last-Modified":s.modifiedAt.toString()}},size:typeof s.size=="number"?s.size:void 0,stream:o}})}async list(e=1e3,r){return this.instrumentOperation("list",async()=>{throw new Error("Not implemented")})}async listDirectory(e){return b(E.METHOD_NOT_ALLOWED,`${this.constructor.name} does not implement listDirectory()`)}async update({id:e},r){return this.instrumentOperation("update",async()=>{const s=await this.getMeta(e),o={...r};if("ttl"in o&&o.ttl!==void 0){const a=o.ttl,c=typeof a=="string"?C(a):a;c!==void 0&&(o.expiredAt=Date.now()+c),delete o.ttl}Oe(s,o),await this.saveMeta(s);const i={...s,status:"updated"};return await this.onUpdate(i),i})}async deleteBatch(e,r){const s=Date.now(),o=this.constructor.name.toLowerCase().replace("storage","");this.metrics.increment("storage.operations.batch.delete.count",1,{batch_size:e.length,storage:o});const i=[],a=[],c=e.map(async u=>{try{return{file:await this.delete({id:u},r),id:u,success:!0}}catch(h){const g=h instanceof Error?h.message:"Delete failed";return this.metrics.increment("storage.operations.delete.error.count",1,{error:g,storage:o}),{error:g,id:u,success:!1}}}),l=await Promise.allSettled(c);for(const u of l)u.status==="fulfilled"?u.value.success?i.push(u.value.file):a.push({error:u.value.error,id:u.value.id}):a.push({error:u.reason?.message||"Delete failed",id:""});const n=Date.now()-s;return this.metrics.timing("storage.operations.batch.delete.duration",n,{batch_size:e.length,storage:o}),this.metrics.gauge("storage.operations.batch.delete.success_count",i.length,{storage:o}),this.metrics.gauge("storage.operations.batch.delete.failed_count",a.length,{storage:o}),{failed:a,failedCount:a.length,successful:i,successfulCount:i.length}}async copyBatch(e){const r=Date.now(),s=this.constructor.name.toLowerCase().replace("storage","");this.metrics.increment("storage.operations.batch.copy.count",1,{batch_size:e.length,storage:s});const o=[],i=[],a=e.map(async({destination:n,options:u,source:h})=>{try{return{file:await this.copy(h,n,u),id:n,success:!0}}catch(g){const d=g instanceof Error?g.message:"Copy failed";return this.metrics.increment("storage.operations.copy.error.count",1,{error:d,storage:s}),{error:d,id:n,success:!1}}}),c=await Promise.allSettled(a);for(const n of c)n.status==="fulfilled"?n.value.success&&n.value.file?o.push(n.value.file):i.push({error:n.value.error||"Copy failed",id:n.value.id}):i.push({error:n.reason?.message||"Copy failed",id:""});const l=Date.now()-r;return this.metrics.timing("storage.operations.batch.copy.duration",l,{batch_size:e.length,storage:s}),this.metrics.gauge("storage.operations.batch.copy.success_count",o.length,{storage:s}),this.metrics.gauge("storage.operations.batch.copy.failed_count",i.length,{storage:s}),{failed:i,failedCount:i.length,successful:o,successfulCount:o.length}}async moveBatch(e){const r=Date.now(),s=this.constructor.name.toLowerCase().replace("storage","");this.metrics.increment("storage.operations.batch.move.count",1,{batch_size:e.length,storage:s});const o=[],i=[],a=e.map(async({destination:n,source:u})=>{try{return{file:await this.move(u,n),id:n,success:!0}}catch(h){const g=h instanceof Error?h.message:"Move failed";return this.metrics.increment("storage.operations.move.error.count",1,{error:g,storage:s}),{error:g,id:n,success:!1}}}),c=await Promise.allSettled(a);for(const n of c)n.status==="fulfilled"?n.value.success&&n.value.file?o.push(n.value.file):i.push({error:n.value.error||"Move failed",id:n.value.id}):i.push({error:n.reason?.message||"Move failed",id:n.reason?.id||""});const l=Date.now()-r;return this.metrics.timing("storage.operations.batch.move.duration",l,{batch_size:e.length,storage:s}),this.metrics.gauge("storage.operations.batch.move.success_count",o.length,{storage:s}),this.metrics.gauge("storage.operations.batch.move.failed_count",i.length,{storage:s}),{failed:i,failedCount:i.length,successful:o,successfulCount:o.length}}async lock(e){return this.locker.has(e)?b(E.FILE_LOCKED):this.config.concurrency&&typeof this.config.concurrency=="number"&&this.config.concurrency<=this.locker.size?b(E.STORAGE_BUSY):this.locker.lock(e)}async unlock(e,r){if(r===void 0){this.locker.delete(e);return}this.locker.unlock(e,r)}async withLock(e,r){const s=await this.lock(e);try{return await r()}finally{await this.unlock(e,s)}}isUnsupportedChecksum(e=""){return!!e&&!this.checksumTypes.includes(e)}startAutoPurge(e){if(e>=2147483647)throw new Error("“purgeInterval” must be less than 2147483647 ms");W(()=>{this.purge().catch(r=>this.logger?.error(r))},e)}updateTimestamps(e){e.createdAt??=new Date().toISOString();const r=C(this.expiration?.maxAge);return r&&!e.expiredAt&&(e.expiredAt=this.expiration?.rolling?Date.now()+r:+new Date(e.createdAt)+r),e}getRetryConfig(){}runOperation(e,r,s){let o;typeof e?.retries=="number"?o={maxRetries:e.retries}:e?.retries&&(o=e.retries);const i={...this.getRetryConfig(),...o};s?.replayable===!1&&(i.maxRetries=0);const a=[];this.genericConfig.defaultSignal&&a.push(this.genericConfig.defaultSignal),e?.signal&&a.push(e.signal);let c;a.length===1?[c]=a:a.length>1&&(c=AbortSignal.any(a));const l=typeof e?.timeout=="number"?e.timeout:this.genericConfig.defaultTimeout,n=typeof l=="number"&&l>0?l:void 0,u=i.shouldRetry;i.shouldRetry=g=>c?.aborted||g instanceof Error&&g.name==="AbortError"?!1:u?u(g):!1;const h=g=>{if(g instanceof Error&&g.name==="AbortError")return g;const d=g instanceof Error&&g.message?g.message:"The operation was aborted",m=new Error(d,{cause:g});return m.name="AbortError",m};return te(async()=>{if(c?.aborted)throw h(c.reason);let g,d;if(n===void 0)d=c;else{const m=new AbortController;g=setTimeout(()=>{m.abort(new DOMException(`The operation timed out after ${n}ms`,"TimeoutError"))},n),d=c?AbortSignal.any([c,m.signal]):m.signal}try{return await r(d)}catch(m){throw d?.aborted?h(m):m}finally{g&&clearTimeout(g)}},i)}async instrumentOperation(e,r,s){const o=Date.now(),i={storage:this.constructor.name.toLowerCase().replace("storage",""),...s};try{this.metrics.increment(`storage.operations.${e}.count`,1,i);const a=await r(),c=Date.now()-o;return this.metrics.timing(`storage.operations.${e}.duration`,c,i),a&&typeof a=="object"&&"size"in a&&typeof a.size=="number"&&this.metrics.gauge("storage.files.size",a.size,{...i,operation:e}),a}catch(a){const c=Date.now()-o,l=a instanceof Error?a.message:"Unknown error";throw this.metrics.timing(`storage.operations.${e}.duration`,c,{...i,error:"true"}),this.metrics.increment(`storage.operations.${e}.error.count`,1,{...i,error:l}),a}}}export{V as B,Ae as C,_ as X,Ze as a,Te as b,C as c,Ue as d,Oe as e,We as i};
@@ -965,6 +965,7 @@ declare abstract class BaseStorage<TFile extends File = File, TFileReturn extend
965
965
  * Gets an uploaded file as a readable stream for efficient large file handling.
966
966
  * @param query File query containing the file ID to stream.
967
967
  * @param query.id File ID to stream.
968
+ * @param options Optional per-call signal/timeout/retries (and, on range-capable adapters, a `range`).
968
969
  * @returns Promise resolving to an object containing the stream, headers, and size.
969
970
  * @throws {UploadError} If the file cannot be found (ERRORS.FILE_NOT_FOUND) or has expired (ERRORS.GONE).
970
971
  * @remarks
@@ -974,7 +975,7 @@ declare abstract class BaseStorage<TFile extends File = File, TFileReturn extend
974
975
  */
975
976
  getStream({
976
977
  id
977
- }: FileQuery): Promise<{
978
+ }: FileQuery, options?: OperationOptions): Promise<{
978
979
  headers?: Record<string, string>;
979
980
  size?: number;
980
981
  stream: Readable;
@@ -1172,4 +1173,4 @@ declare abstract class BaseStorage<TFile extends File = File, TFileReturn extend
1172
1173
  */
1173
1174
  protected instrumentOperation<T>(operation: string, function_: () => Promise<T>, attributes?: Record<string, string | number>): Promise<T>;
1174
1175
  }
1175
- export { throwErrorCode as $, RangeChecksum as A, BaseStorage as B, RangeHasher as C, DiskStorageOptions as D, ERRORS as E, File as F, ResponseBody as G, HttpError as H, IncomingMessageWithBody as I, ResponseTuple as J, UploadResponse as K, LocalMetaStorageOptions as L, MetaStorage as M, ValidationError as N, OperationOptions as O, PurgeList as P, ValidatorConfig as Q, RetryConfig as R, defaultCloudStorageFileNameValidation as S, defaultFilesystemFileNameValidation as T, UploadFile as U, Validation as V, extractHttpStatus as W, isRetryableError as X, isUploadError as Y, mapStatusToErrorCode as Z, retry as _, FileReturn as a, wrapStorageError as a0, Cache as a1, FileInit as b, createRetryWrapper as c, FilePart as d, FileQuery as e, UploadError as f, UploadEventType as g, DiskStorageWithChecksumOptions as h, MetaStorageOptions as i, BaseStorageOptions as j, ResponseBodyType as k, ErrorResponses as l, Metrics as m, BatchOperationResponse as n, BatchOperationResult as o, ErrorMap as p, ExpirationOptions as q, Header as r, Headers as s, HttpErrorBody as t, Metadata as u, OnComplete as v, OnCreate as w, OnDelete as x, OnError as y, OnUpdate as z };
1176
+ export { retry as $, OnUpdate as A, BaseStorage as B, Cache as C, DiskStorageOptions as D, ErrorResponses as E, File as F, RangeChecksum as G, HttpError as H, IncomingMessageWithBody as I, RangeHasher as J, ResponseBody as K, LocalMetaStorageOptions as L, MetaStorage as M, ResponseTuple as N, OperationOptions as O, PurgeList as P, ValidationError as Q, RetryConfig as R, ValidatorConfig as S, defaultCloudStorageFileNameValidation as T, UploadFile as U, Validation as V, defaultFilesystemFileNameValidation as W, extractHttpStatus as X, isRetryableError as Y, isUploadError as Z, mapStatusToErrorCode as _, UploadError as a, throwErrorCode as a0, wrapStorageError as a1, UploadEventType as b, createRetryWrapper as c, FileInit as d, FilePart as e, FileQuery as f, FileReturn as g, ResponseBodyType as h, ERRORS as i, DiskStorageWithChecksumOptions as j, MetaStorageOptions as k, BaseStorageOptions as l, UploadResponse as m, Metrics as n, BatchOperationResponse as o, BatchOperationResult as p, ErrorMap as q, ExpirationOptions as r, Header as s, Headers as t, HttpErrorBody as u, Metadata as v, OnComplete as w, OnCreate as x, OnDelete as y, OnError as z };
@@ -0,0 +1 @@
1
+ const o=e=>{const s=e?.accessKeyId??process.env.AWS_ACCESS_KEY_ID??process.env.STORJ_ACCESS_KEY_ID??process.env.STORJ_ACCESS_KEY,c=e?.endpoint??process.env.STORJ_ENDPOINT,r=e?.secretAccessKey??process.env.AWS_SECRET_ACCESS_KEY??process.env.STORJ_SECRET_ACCESS_KEY??process.env.STORJ_SECRET_KEY;if(!s||!r)throw new Error("Missing required parameters for Storj client.");return{credentials:{accessKeyId:s,secretAccessKey:r},endpoint:c??"https://gateway.storjshare.io",forcePathStyle:!1,region:"global"}};export{o as default};
@@ -0,0 +1 @@
1
+ import{r as B,D as U,t as R,o as D}from"./internal-D_cZIFwI.js";const N=async(x,h,K={})=>{const{concurrency:M=U,limit:T,onProgress:g,overwrite:C=!1,prefix:k,signal:f,stopOnError:o=!1,transformKey:A}=K,y=[],c=[],u=[];let p=!1,i=0;const w=e=>{if(g)try{g(e)}catch{}},m=x.listAll({...k!==void 0&&{prefix:k},...T!==void 0&&{limit:T}}),v=async e=>{if(p||f?.aborted)return;const F=A?A(e):e;try{if(!C&&await h.exists(F,{signal:f})){c.push(e),i+=1,w({done:i,key:e,status:"skipped"});return}const d=await x.download(e,{signal:f});await h.upload(F,d.body,{...d.contentType&&{contentType:d.contentType},...d.metadata&&{metadata:d.metadata},signal:f}),y.push(e),i+=1,w({done:i,key:e,status:"transferred"})}catch(d){const E=R(e,d);if(u.push(E),i+=1,w({done:i,error:E.error,key:e,status:"errored"}),o)throw p=!0,E.error}};if(o){try{for await(const e of m){if(p||f?.aborted)break;try{await v(e.key)}catch{break}}}finally{await m.return?.()}return u.length>0?{errors:u,skipped:c,transferred:y}:{skipped:c,transferred:y}}const s=Math.max(1,M),b=async()=>{for(;!p&&!f?.aborted;){const e=await m.next();if(e.done)return;await v(e.value.key)}};try{await Promise.all(Array.from({length:s},()=>b()))}finally{await m.return?.()}return u.length>0?{errors:u,skipped:c,transferred:y}:{skipped:c,transferred:y}},_=async(x,h,K={})=>{const{concurrency:M=U,dryRun:T=!1,limit:g,onProgress:C,prefix:k,prune:f=!1,signal:o,stopOnError:A=!1,transformKey:y}=K,c=[],u=[],p=[],i=[],w=[],m=new Set;let v=!1,s=0;const b=a=>{if(C)try{C(a)}catch{}},e=x.listAll({...k!==void 0&&{prefix:k},...g!==void 0&&{limit:g}}),F=async a=>{if(v||o?.aborted)return;const r=a.key,O=y?y(r):r;m.add(O);try{let t;try{t=await h.head(O,{signal:o})}catch{t=void 0}if(t){let n=a;if(a.size===void 0&&a.etag===void 0)try{n=await x.head(r,{signal:o})}catch{}if(D(n,t)){p.push(r),s+=1,b({done:s,key:r,status:"unchanged"});return}}const l=t!==void 0;if(!T){const n=await x.download(r,{signal:o});await h.upload(O,n.body,{...n.contentType&&{contentType:n.contentType},...n.metadata&&{metadata:n.metadata},signal:o})}l?u.push(r):c.push(r),s+=1,b({done:s,key:r,status:l?"updated":"uploaded"})}catch(t){const l=R(r,t);if(w.push(l),s+=1,b({done:s,error:l.error,key:r,status:"errored"}),A)throw v=!0,l.error}},d=Math.max(1,M),E=async()=>{for(;!v&&!o?.aborted;){const a=await e.next();if(a.done)return;await F(a.value)}};try{await Promise.all(Array.from({length:d},()=>E()))}finally{await e.return?.()}if(f&&!v&&!o?.aborted){const a=[],r=h.listAll({...k!==void 0&&{prefix:k},...g!==void 0&&{limit:g}});try{for await(const t of r)m.has(t.key)||a.push(t.key)}finally{await r.return?.()}const O=await B(a,async t=>(T||await h.delete(t,{signal:o}),t),{concurrency:d,signal:o,stopOnError:A});for(const[t,l]of O.entries()){const n=a[t];if(l)if(l.status==="fulfilled")i.push(n),s+=1,b({done:s,key:n,status:"deleted"});else{const S=R(n,l.reason);w.push(S),s+=1,b({done:s,error:S.error,key:n,status:"errored"})}}}return w.length>0?{deleted:i,errors:w,unchanged:p,updated:u,uploaded:c}:{deleted:i,unchanged:p,updated:u,uploaded:c}};export{_ as sync,N as transfer};
@@ -0,0 +1 @@
1
+ const o=e=>{const c=e?.accessKeyId??process.env.AWS_ACCESS_KEY_ID??process.env.TENCENT_SECRET_ID,n=e?.endpoint??process.env.TENCENT_ENDPOINT,s=e?.region??process.env.TENCENT_REGION,r=e?.secretAccessKey??process.env.AWS_SECRET_ACCESS_KEY??process.env.TENCENT_SECRET_KEY;if(!s||!c||!r)throw new Error("Missing required parameters for Tencent Cloud COS client.");return{credentials:{accessKeyId:c,secretAccessKey:r},endpoint:n??`https://cos.${s}.myqcloud.com`,forcePathStyle:!1,region:s}};export{o as default};
@@ -0,0 +1 @@
1
+ const t=e=>{const s=e?.accessKeyId??process.env.AWS_ACCESS_KEY_ID??process.env.TIGRIS_ACCESS_KEY_ID??process.env.TIGRIS_ACCESS_KEY,c=e?.endpoint??process.env.TIGRIS_ENDPOINT,r=e?.secretAccessKey??process.env.AWS_SECRET_ACCESS_KEY??process.env.TIGRIS_SECRET_ACCESS_KEY??process.env.TIGRIS_SECRET_KEY;if(!s||!r)throw new Error("Missing required parameters for Tigris client.");return{credentials:{accessKeyId:s,secretAccessKey:r},endpoint:c??"https://t3.storage.dev",forcePathStyle:!1,region:"auto"}};export{t as default};
@@ -0,0 +1 @@
1
+ import{createHash as n}from"node:crypto";import{createPaginationMetaSchemaObject as a,createPaginationSchemaObject as i}from"@visulima/pagination";import{sharedFileMetaSchemaObject as o,sharedErrorSchemaObject as s,sharedFileMetaExampleObject as p}from"./sharedErrorSchemaObject-YN65aAKj.js";const l=(e="/",t=["Transform"])=>{const r=n("sha256").update(e).digest("base64");return{components:{examples:p,parameters:{Affine:{description:"Apply affine transformation",in:"query",name:"affine",schema:{type:"boolean"}},Angle:{description:"Rotation angle in degrees. Note: angles other than 90°, 180°, and 270° require interpolation and may affect quality",in:"query",name:"angle",schema:{type:"number"}},Background:{description:"Background color for rotation (hex, rgb, or color name)",in:"query",name:"background",schema:{type:"string"}},Bitrate:{description:"Target bitrate in bits per second",in:"query",name:"bitrate",schema:{minimum:1,type:"integer"}},Blur:{description:"Apply blur effect",in:"query",name:"blur",schema:{type:"boolean"}},Brightness:{description:"Brightness multiplier for modulation",in:"query",name:"brightness",schema:{type:"number"}},Clahe:{description:"Apply CLAHE (Contrast Limited Adaptive Histogram Equalization)",in:"query",name:"clahe",schema:{type:"boolean"}},Codec:{description:"Video or audio codec",in:"query",name:"codec",schema:{enum:["avc","hevc","vp8","vp9","av1","aac","opus","mp3","vorbis","flac"],type:"string"}},Colourspace:{description:"Convert colourspace",in:"query",name:"colourspace",schema:{enum:["srgb","rgb","cmyk","lab","b-w"],type:"string"}},CropHeight:{description:"Crop area height",in:"query",name:"cropHeight",schema:{minimum:1,type:"integer"}},CropWidth:{description:"Crop area width",in:"query",name:"cropWidth",schema:{minimum:1,type:"integer"}},Dilate:{description:"Apply dilation",in:"query",name:"dilate",schema:{type:"boolean"}},EnsureAlpha:{description:"Ensure alpha channel",in:"query",name:"ensureAlpha",schema:{type:"boolean"}},Erode:{description:"Apply erosion",in:"query",name:"erode",schema:{type:"boolean"}},FastShrinkOnLoad:{description:"Fast shrink on load for large images",in:"query",name:"fastShrinkOnLoad",schema:{type:"boolean"}},FileID:{description:"File identifier",in:"path",name:"id",required:!0,schema:{type:"string"}},Fit:{description:"Resize fit mode",in:"query",name:"fit",schema:{enum:["cover","contain","fill","inside","outside"],type:"string"}},Flatten:{description:"Flatten alpha channel",in:"query",name:"flatten",schema:{type:"boolean"}},Flip:{description:"Flip image vertically",in:"query",name:"flip",schema:{type:"boolean"}},Flop:{description:"Flop image horizontally",in:"query",name:"flop",schema:{type:"boolean"}},Format:{description:"Output format for the transformed media",in:"query",name:"format",schema:{enum:["jpeg","png","webp","avif","tiff","gif","mp4","webm","mkv","ogg","mp3","wav","aac","flac"],type:"string"}},FrameRate:{description:"Video frame rate in Hz",in:"query",name:"frameRate",schema:{minimum:1,type:"number"}},Gamma:{description:"Apply gamma correction",in:"query",name:"gamma",schema:{type:"boolean"}},Greyscale:{description:"Convert to greyscale",in:"query",name:"greyscale",schema:{type:"boolean"}},Height:{description:"Desired height in pixels",in:"query",name:"height",schema:{minimum:1,type:"integer"}},Hue:{description:"Hue rotation in degrees for modulation",in:"query",name:"hue",schema:{type:"integer"}},Kernel:{description:"Resize kernel algorithm",in:"query",name:"kernel",schema:{enum:["nearest","cubic","mitchell","lanczos2","lanczos3"],type:"string"}},KeyFrameInterval:{description:"Video key frame interval in seconds",in:"query",name:"keyFrameInterval",schema:{minimum:.1,type:"number"}},Left:{description:"Crop area left offset",in:"query",name:"left",schema:{minimum:0,type:"integer"}},Lightness:{description:"Lightness adjustment for modulation",in:"query",name:"lightness",schema:{type:"integer"}},Median:{description:"Apply median filter with specified size",in:"query",name:"median",schema:{minimum:1,type:"integer"}},Modulate:{description:"Apply modulation effects",in:"query",name:"modulate",schema:{type:"boolean"}},Negate:{description:"Negate (invert) the image",in:"query",name:"negate",schema:{type:"boolean"}},Normalise:{description:"Normalise the image",in:"query",name:"normalise",schema:{type:"boolean"}},NumberOfChannels:{description:"Audio channel count",in:"query",name:"numberOfChannels",schema:{enum:[1,2,3,4,5,6,7,8],type:"integer"}},PipelineColourspace:{description:"Set pipeline colourspace",in:"query",name:"pipelineColourspace",schema:{type:"boolean"}},Position:{description:"Position for cover/contain fits",in:"query",name:"position",schema:{oneOf:[{enum:["top","right","bottom","left","center"],type:"string"},{minimum:0,type:"integer"}]}},Quality:{description:"Quality setting (0-100 for images, affects compression)",in:"query",name:"quality",schema:{maximum:100,minimum:1,type:"integer"}},RemoveAlpha:{description:"Remove alpha channel",in:"query",name:"removeAlpha",schema:{type:"boolean"}},SampleRate:{description:"Audio sample rate in Hz",in:"query",name:"sampleRate",schema:{enum:[8e3,11025,16e3,22050,32e3,44100,48e3,88200,96e3,192e3],type:"integer"}},Saturation:{description:"Saturation multiplier for modulation",in:"query",name:"saturation",schema:{type:"number"}},Sharpen:{description:"Apply sharpening",in:"query",name:"sharpen",schema:{type:"boolean"}},Threshold:{description:"Apply thresholding with specified value (0-255)",in:"query",name:"threshold",schema:{maximum:255,minimum:0,type:"integer"}},Tint:{description:"Apply tinting",in:"query",name:"tint",schema:{type:"boolean"}},ToColourspace:{description:"Convert to colourspace",in:"query",name:"toColourspace",schema:{type:"boolean"}},Top:{description:"Crop area top offset",in:"query",name:"top",schema:{minimum:0,type:"integer"}},Unflatten:{description:"Unflatten alpha channel",in:"query",name:"unflatten",schema:{type:"boolean"}},Width:{description:"Desired width in pixels",in:"query",name:"width",schema:{minimum:1,type:"integer"}},WithoutEnlargement:{description:"Avoid enlarging images smaller than specified dimensions",in:"query",name:"withoutEnlargement",schema:{type:"boolean"}},WithoutReduction:{description:"Avoid reducing images larger than specified dimensions",in:"query",name:"withoutReduction",schema:{type:"boolean"}}},responses:{404:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Not Found"}},schemas:{...i("FileMetaPagination",{$ref:"#/components/schemas/PaginationMeta"},"#/components/schemas/PaginationMeta"),...a("PaginationMeta"),...s,...o,MediaTransformResult:{description:"Result of media transformation",properties:{bitrate:{description:"Bitrate for video/audio (bits per second)",type:"integer"},buffer:{description:"Binary data buffer (not included in JSON response)",type:"string"},duration:{description:"Duration for video/audio in seconds",type:"number"},format:{description:"Output format",type:"string"},height:{description:"Height for image/video in pixels",type:"integer"},mediaType:{description:"Type of media",enum:["image","video","audio"],type:"string"},numberOfChannels:{description:"Audio channel count",type:"integer"},originalFile:{$ref:"#/components/schemas/FileMeta"},sampleRate:{description:"Audio sample rate in Hz",type:"integer"},size:{description:"File size in bytes",type:"integer"},width:{description:"Width for image/video in pixels",type:"integer"}},required:["format","mediaType","originalFile","size"],type:"object"},ValidationError:{description:"Validation error response",properties:{code:{enum:["INVALID_PARAMS_FOR_IMAGE","INVALID_PARAMS_FOR_VIDEO","INVALID_PARAMS_FOR_AUDIO","INVALID_FIT_VALUE","INVALID_ANGLE_VALUE","INVALID_FORMAT","INCOMPLETE_CROP_PARAMS","INVALID_VIDEO_CODEC","INVALID_VIDEO_FORMAT","INVALID_WIDTH","INVALID_HEIGHT","INVALID_BITRATE","INVALID_FRAME_RATE","INVALID_KEY_FRAME_INTERVAL","INVALID_AUDIO_CODEC","INVALID_AUDIO_FORMAT","INVALID_CHANNEL_COUNT","INVALID_SAMPLE_RATE"],type:"string"},details:{properties:{invalidParams:{items:{type:"string"},type:"array"},mediaType:{enum:["image","video","audio"],type:"string"},suggestions:{items:{type:"string"},type:"array"},validParams:{items:{type:"string"},type:"array"}},required:["invalidParams","validParams","mediaType"],type:"object"},message:{type:"string"},name:{enum:["ValidationError"],type:"string"}},required:["code","details","message","name"],type:"object"}}},paths:{[`${e.replace(/\/$/,"")}/{id}/transform`]:{get:{description:"Get transformation metadata for a file without downloading. Returns information about supported transformations and current file properties.",operationId:`${r}TransformGetMetadata`,parameters:[{$ref:"#/components/parameters/FileID"}],responses:{200:{content:{"application/json":{schema:{description:"File transformation metadata",properties:{bitrate:{description:"Current bitrate for video/audio",type:"integer"},dimensions:{description:"Dimensions for image/video",properties:{height:{type:"integer"},width:{type:"integer"}},type:"object"},duration:{description:"Duration for video/audio in seconds",type:"number"},mediaType:{description:"Detected media type",enum:["image","video","audio"],type:"string"},numberOfChannels:{description:"Current channel count for audio",type:"integer"},originalFormat:{description:"Original file format",type:"string"},sampleRate:{description:"Current sample rate for audio",type:"integer"},supportedFormats:{description:"Supported output formats for this media type",items:{type:"string"},type:"array"},supportedParameters:{description:"Supported transformation parameters",items:{type:"string"},type:"array"}},required:["mediaType","supportedFormats","supportedParameters"],type:"object"}}},description:"Transformation metadata"},404:{$ref:"#/components/responses/404"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Get transformation metadata",tags:t}},[`${e.replace(/\/$/,"")}/{id}`]:{get:{description:"Retrieve and transform a file with optional media transformations. Supports resizing, cropping, format conversion, and codec changes based on query parameters.",operationId:`${r}TransformGetFile`,parameters:[{$ref:"#/components/parameters/FileID"},{$ref:"#/components/parameters/Format"},{$ref:"#/components/parameters/Quality"},{$ref:"#/components/parameters/Width"},{$ref:"#/components/parameters/Height"},{$ref:"#/components/parameters/Fit"},{$ref:"#/components/parameters/Position"},{$ref:"#/components/parameters/WithoutEnlargement"},{$ref:"#/components/parameters/WithoutReduction"},{$ref:"#/components/parameters/Left"},{$ref:"#/components/parameters/Top"},{$ref:"#/components/parameters/CropWidth"},{$ref:"#/components/parameters/CropHeight"},{$ref:"#/components/parameters/Angle"},{$ref:"#/components/parameters/Background"},{$ref:"#/components/parameters/Kernel"},{$ref:"#/components/parameters/FastShrinkOnLoad"},{$ref:"#/components/parameters/Blur"},{$ref:"#/components/parameters/Sharpen"},{$ref:"#/components/parameters/Median"},{$ref:"#/components/parameters/Clahe"},{$ref:"#/components/parameters/Threshold"},{$ref:"#/components/parameters/Gamma"},{$ref:"#/components/parameters/Negate"},{$ref:"#/components/parameters/Normalise"},{$ref:"#/components/parameters/Flatten"},{$ref:"#/components/parameters/Unflatten"},{$ref:"#/components/parameters/Flip"},{$ref:"#/components/parameters/Flop"},{$ref:"#/components/parameters/Greyscale"},{$ref:"#/components/parameters/Modulate"},{$ref:"#/components/parameters/Brightness"},{$ref:"#/components/parameters/Saturation"},{$ref:"#/components/parameters/Hue"},{$ref:"#/components/parameters/Lightness"},{$ref:"#/components/parameters/Tint"},{$ref:"#/components/parameters/Colourspace"},{$ref:"#/components/parameters/Affine"},{$ref:"#/components/parameters/Dilate"},{$ref:"#/components/parameters/Erode"},{$ref:"#/components/parameters/PipelineColourspace"},{$ref:"#/components/parameters/ToColourspace"},{$ref:"#/components/parameters/RemoveAlpha"},{$ref:"#/components/parameters/EnsureAlpha"},{$ref:"#/components/parameters/Codec"},{$ref:"#/components/parameters/Bitrate"},{$ref:"#/components/parameters/FrameRate"},{$ref:"#/components/parameters/KeyFrameInterval"},{$ref:"#/components/parameters/NumberOfChannels"},{$ref:"#/components/parameters/SampleRate"}],responses:{200:{content:{"*/*":{schema:{description:"Transformed media file",format:"binary",type:"string"}}},description:"Transformed file returned successfully",headers:{"Content-Type":{description:"MIME type of the transformed file",schema:{type:"string"}},ETag:{description:"ETag of the transformed file",schema:{type:"string"}},"X-Media-Type":{description:"Type of media (image/video/audio)",schema:{enum:["image","video","audio"],type:"string"}},"X-Original-Format":{description:"Original file format",schema:{type:"string"}},"X-Transformed-Format":{description:"Transformed file format",schema:{type:"string"}}}},400:{content:{"application/json":{examples:{ValidationError:{value:{error:{code:"INVALID_PARAMS_FOR_IMAGE",details:{invalidParams:["codec","bitrate"],mediaType:"image",validParams:["format","quality","width","height","fit","position","withoutEnlargement","withoutReduction","left","top","cropWidth","cropHeight","angle","background"]},message:"Invalid query parameters for image transformation: codec, bitrate. Images support: format, quality, width, height, fit, position, withoutEnlargement, withoutReduction, left, top, cropWidth, cropHeight, angle, background. Video/audio parameters (codec, bitrate) are not supported for images.",name:"ValidationError"}}}},schema:{$ref:"#/components/schemas/ValidationError"}}},description:"Invalid transformation parameters"},404:{$ref:"#/components/responses/404"},413:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"File too large for transformation"},415:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Unsupported media type for transformation"},default:{content:{"application/json":{schema:{$ref:"#/components/schemas/Error"}}},description:"Error"}},summary:"Transform and retrieve file",tags:t}}}}};export{l as default};
@@ -1,10 +1,10 @@
1
1
  import { EventEmitter } from 'node:events';
2
- import { U as UploadFile, k as ResponseBodyType, B as BaseStorage, l as ErrorResponses } from "./storage.d-C6HtvSoY.js";
2
+ import { IncomingMessage } from 'node:http';
3
+ import { U as UploadFile, h as ResponseBodyType, B as BaseStorage, E as ErrorResponses } from "./storage.d-CEM1upWM.js";
3
4
  import 'node:stream';
4
- import { M as MediaTransformer } from "./media-transformer.d-B9dfBdoV.js";
5
- import { U as UploadOptions } from "./types.d-CmBrgo0d.js";
5
+ import { M as MediaTransformer } from "./media-transformer.d-Quf4ai47.js";
6
+ import { U as UploadOptions } from "./types.d-CggTCgXr.js";
6
7
  import 'node:crypto';
7
- import 'node:http';
8
8
  import 'lru-cache';
9
9
  import '@visulima/pagination';
10
10
  /**
@@ -75,11 +75,18 @@ declare abstract class BaseHandlerCore<TFile extends UploadFile> extends EventEm
75
75
  /**
76
76
  * Build file URL from request and file data.
77
77
  * Platform-agnostic version that accepts URL string.
78
- * @param requestUrl Request URL string
78
+ *
79
+ * When `useRelativeLocation` is `false` (the default) the absolute origin is resolved from, in
80
+ * order: an absolute `requestUrl` (the fetch runtimes pass `request.url`, which carries the
81
+ * origin), then the host/proto derived from `requestHeaders` (the Node runtimes pass the request
82
+ * headers, since `request.url` there is only a path). If neither yields a host the Location
83
+ * stays relative rather than emitting a bogus `http://localhost` origin.
84
+ * @param requestUrl Request URL string (absolute on fetch runtimes, path-only on Node).
79
85
  * @param file File object containing ID and content type
86
+ * @param requestHeaders Optional request headers used to recover host/proto on Node runtimes.
80
87
  * @returns Constructed file URL with extension based on content type
81
88
  */
82
- protected buildFileUrlFromString(requestUrl: string, file: TFile): string;
89
+ protected buildFileUrlFromString(requestUrl: string, file: TFile, requestHeaders?: IncomingMessage["headers"]): string;
83
90
  /**
84
91
  * Negotiates content type based on Accept header and supported formats.
85
92
  * Platform-agnostic version that accepts header string.