@visulima/storage 1.0.9 → 1.0.11
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.
- package/CHANGELOG.md +17 -0
- package/dist/adapter/nuxt/module.d.ts +9 -8
- package/dist/ai/ai-sdk/index.d.ts +52 -59
- package/dist/ai/claude/index.d.ts +105 -119
- package/dist/ai/openai/index.d.ts +87 -99
- package/dist/ai/tanstack/index.d.ts +54 -61
- package/dist/handler/http/fetch/index.d.ts +202 -201
- package/dist/handler/http/fetch/index.js +1 -1
- package/dist/handler/http/hono/index.d.ts +60 -59
- package/dist/handler/http/hono/index.js +1 -1
- package/dist/handler/http/nextjs/index.d.ts +55 -54
- package/dist/handler/http/nextjs/index.js +1 -1
- package/dist/handler/http/node/index.d.ts +234 -246
- package/dist/handler/http/node/index.js +1 -1
- package/dist/handler/http/solid-start/index.d.ts +55 -54
- package/dist/handler/http/solid-start/index.js +1 -1
- package/dist/index.d.ts +71 -70
- package/dist/index.js +1 -1
- package/dist/packem_shared/{AbstractBaseStorage-CiPEMcuo.js → AbstractBaseStorage-CLsYmMZg.js} +1 -1
- package/dist/packem_shared/AwsLightStorage-DGSPFUqr.js +1 -0
- package/dist/packem_shared/AzureStorage-DvKk_hhz.js +1 -0
- package/dist/packem_shared/BoxMetaStorage-CJsyeQ63.js +1 -0
- package/dist/packem_shared/{BoxStorage-DbGqBLux.js → BoxStorage-CmM95wi2.js} +1 -1
- package/dist/packem_shared/BunS3MetaStorage-CJsyeQ63.js +1 -0
- package/dist/packem_shared/{BunS3Storage-DNvimm9e.js → BunS3Storage-B_roVJ29.js} +1 -1
- package/dist/packem_shared/BunnyMetaStorage-CJsyeQ63.js +1 -0
- package/dist/packem_shared/{BunnyStorage-C7d0opLL.js → BunnyStorage-eZ1QDVaY.js} +1 -1
- package/dist/packem_shared/CloudinaryMetaStorage-Bv_YCZ0Q.js +1 -0
- package/dist/packem_shared/{CloudinaryStorage-Dc3XA2lP.js → CloudinaryStorage-CpH2f0Fv.js} +1 -1
- package/dist/packem_shared/DiskStorage-DzjjqCzo.js +1 -0
- package/dist/packem_shared/{DiskStorageWithChecksum-vFCubS6K.js → DiskStorageWithChecksum-MZkDEyts.js} +1 -1
- package/dist/packem_shared/DropboxMetaStorage-CJsyeQ63.js +1 -0
- package/dist/packem_shared/{DropboxStorage-CY9Ggu3m.js → DropboxStorage-BB9NoWK2.js} +1 -1
- package/dist/packem_shared/{Files-CpIcMjP0.js → Files-DyMJ9FPN.js} +1 -1
- package/dist/packem_shared/FirebaseMetaStorage-Bv_YCZ0Q.js +1 -0
- package/dist/packem_shared/{FirebaseStorage-D6O9CJXN.js → FirebaseStorage-BgbxzYNC.js} +1 -1
- package/dist/packem_shared/FtpMetaStorage-CJsyeQ63.js +1 -0
- package/dist/packem_shared/{FtpStorage-DbEjbq8z.js → FtpStorage-CNqXDz7P.js} +1 -1
- package/dist/packem_shared/{GCSMetaStorage-DT8K6zdm.js → GCSMetaStorage-gEhWlpfS.js} +1 -1
- package/dist/packem_shared/{GCStorage-6BHkFlEs.js → GCStorage-CRd5vjok.js} +1 -1
- package/dist/packem_shared/GoogleDriveMetaStorage-B0gLF7Io.js +1 -0
- package/dist/packem_shared/{GoogleDriveStorage-Bklsz7Bh.js → GoogleDriveStorage-Du7uBhSm.js} +1 -1
- package/dist/packem_shared/{LocalMetaStorage-BhicZnNl.js → LocalMetaStorage-CcGfFG39.js} +1 -1
- package/dist/packem_shared/{MemoryStorage-9gbWd09l.js → MemoryStorage-ChKyI6OY.js} +1 -1
- package/dist/packem_shared/{Multipart-D0ok6BBy.js → Multipart-C35TR2qL.js} +1 -1
- package/dist/packem_shared/{Multipart-CQjYqU--.js → Multipart-V64Bg5dt.js} +1 -1
- package/dist/packem_shared/NetlifyBlobMetaStorage-Bv_YCZ0Q.js +1 -0
- package/dist/packem_shared/NetlifyBlobStorage-CZsr_0DF.js +1 -0
- package/dist/packem_shared/OneDriveMetaStorage-B0gLF7Io.js +1 -0
- package/dist/packem_shared/{OneDriveStorage-CP6MvGAa.js → OneDriveStorage-B8qFgMq1.js} +1 -1
- package/dist/packem_shared/PocketBaseMetaStorage-Cm3v8g1-.js +1 -0
- package/dist/packem_shared/{PocketBaseStorage-2qhbI2PW.js → PocketBaseStorage-D2vMN-oY.js} +1 -1
- package/dist/packem_shared/{Rest-CI_BiZPv.js → Rest-B7g1sgkq.js} +1 -1
- package/dist/packem_shared/{Rest-DvfN4-kf.js → Rest-BrEMYgxZ.js} +1 -1
- package/dist/packem_shared/{S3Storage-YGeNk3Tt.js → S3Storage-CTe_BMDl.js} +1 -1
- package/dist/packem_shared/SftpMetaStorage-CJsyeQ63.js +1 -0
- package/dist/packem_shared/{SftpStorage-2Hz396Xr.js → SftpStorage-BKeAzuej.js} +1 -1
- package/dist/packem_shared/SharePointMetaStorage-CJsyeQ63.js +1 -0
- package/dist/packem_shared/{SharePointStorage-CrX2Pk6C.js → SharePointStorage-Dtnt5-wk.js} +1 -1
- package/dist/packem_shared/SupabaseMetaStorage-B0gLF7Io.js +1 -0
- package/dist/packem_shared/{SupabaseStorage-Dc_DBX29.js → SupabaseStorage-CmGQjqXf.js} +1 -1
- package/dist/packem_shared/{Tus-BlBZykIL.js → Tus-CJBgnJrn.js} +1 -1
- package/dist/packem_shared/{Tus-BBVt2ky3.js → Tus-D9c7KDnl.js} +1 -1
- package/dist/packem_shared/UploadThingMetaStorage-Bv_YCZ0Q.js +1 -0
- package/dist/packem_shared/{UploadThingStorage-BChykYSe.js → UploadThingStorage-DZ4zNvDH.js} +1 -1
- package/dist/packem_shared/VercelBlobMetaStorage-CJsyeQ63.js +1 -0
- package/dist/packem_shared/{VercelBlobStorage-CsRyPfw3.js → VercelBlobStorage-DDNEofR3.js} +1 -1
- package/dist/packem_shared/{approval.d-CMAYH9GF.d.ts → approval.d-C-d-t94D.d.ts} +6 -6
- package/dist/packem_shared/{base-handler-core-D-9Ku1h-.js → base-handler-core-BJP9jHCE.js} +1 -1
- package/dist/packem_shared/{base-handler-fetch-CfkNakv8.js → base-handler-fetch-yrYrukwL.js} +1 -1
- package/dist/packem_shared/base-handler-node-C8P9rkaH.js +1 -0
- package/dist/packem_shared/{createRetryWrapper-CxgiV_hH.js → createRetryWrapper-DgmeHPNF.js} +1 -1
- package/dist/packem_shared/disk-storage-DqnnFQAQ.js +1 -0
- package/dist/packem_shared/disk-storage-with-checksum.d-Dgwyza8a.d.ts +146 -0
- package/dist/packem_shared/{executors.d-BZP2rWo3.d.ts → executors.d-B9dIy3NT.d.ts} +3 -2
- package/dist/packem_shared/files.d-CmSZi3M0.d.ts +655 -0
- package/dist/packem_shared/gcs-meta-storage-C9F78Sqq.js +1 -0
- package/dist/packem_shared/local-meta-storage-BELb1YwO.js +11 -0
- package/dist/packem_shared/{local-meta-storage.d-D9PBfkn6.d.ts → local-meta-storage.d-cRTXr1kb.d.ts} +7 -7
- package/dist/packem_shared/media-transformer.d-C8tn4J2Z.d.ts +331 -0
- package/dist/packem_shared/{memory-storage.d-4EU1cMt1.d.ts → memory-storage.d-BNZvDG1b.d.ts} +32 -40
- package/dist/packem_shared/path-C-OWflAo-_mqb5p5d.js +1 -0
- package/dist/packem_shared/{rest-base-e0reNDE_.js → rest-base-BQ_dhWyV.js} +1 -1
- package/dist/packem_shared/s3-base-storage-CX94H-Za.js +1 -0
- package/dist/packem_shared/{s3-base-storage.d-BQgP5B-t.d.ts → s3-base-storage.d-ks99NSs-.d.ts} +64 -70
- package/dist/packem_shared/storage-DR7qdwBN.js +1 -0
- package/dist/packem_shared/storage.d-DwdJrArF.d.ts +1186 -0
- package/dist/packem_shared/tus-base.d-BKBoJVy0.d.ts +103 -0
- package/dist/packem_shared/types.d-B1_xZIhu.d.ts +104 -0
- package/dist/packem_shared/{types.d-CrUWY4On.d.ts → types.d-BEUv414z.d.ts} +134 -134
- package/dist/packem_shared/{types.d-CggTCgXr.d.ts → types.d-D7Zlz5RE.d.ts} +3 -3
- package/dist/storage/aws/clients/index.d.ts +388 -388
- package/dist/storage/aws/index.d.ts +110 -113
- package/dist/storage/aws/index.js +1 -1
- package/dist/storage/aws-light/index.d.ts +64 -67
- package/dist/storage/aws-light/index.js +1 -1
- package/dist/storage/azure/index.d.ts +134 -139
- package/dist/storage/azure/index.js +1 -1
- package/dist/storage/box/index.d.ts +89 -92
- package/dist/storage/box/index.js +1 -1
- package/dist/storage/bun-s3/index.d.ts +71 -76
- package/dist/storage/bun-s3/index.js +1 -1
- package/dist/storage/bunny/index.d.ts +52 -55
- package/dist/storage/bunny/index.js +1 -1
- package/dist/storage/cloudinary/index.d.ts +54 -59
- package/dist/storage/cloudinary/index.js +1 -1
- package/dist/storage/dropbox/index.d.ts +59 -62
- package/dist/storage/dropbox/index.js +1 -1
- package/dist/storage/firebase/index.d.ts +74 -79
- package/dist/storage/firebase/index.js +1 -1
- package/dist/storage/ftp/index.d.ts +38 -43
- package/dist/storage/ftp/index.js +1 -1
- package/dist/storage/gcs/index.d.ts +90 -95
- package/dist/storage/gcs/index.js +1 -1
- package/dist/storage/google-drive/index.d.ts +69 -72
- package/dist/storage/google-drive/index.js +1 -1
- package/dist/storage/local/index.d.ts +4 -3
- package/dist/storage/local/index.js +1 -1
- package/dist/storage/memory/index.d.ts +3 -2
- package/dist/storage/memory/index.js +1 -1
- package/dist/storage/netlify-blob/index.d.ts +86 -93
- package/dist/storage/netlify-blob/index.js +1 -1
- package/dist/storage/onedrive/index.d.ts +44 -53
- package/dist/storage/onedrive/index.js +1 -1
- package/dist/storage/pocketbase/index.d.ts +67 -72
- package/dist/storage/pocketbase/index.js +1 -1
- package/dist/storage/sftp/index.d.ts +40 -45
- package/dist/storage/sftp/index.js +1 -1
- package/dist/storage/sharepoint/index.d.ts +96 -95
- package/dist/storage/sharepoint/index.js +1 -1
- package/dist/storage/supabase/index.d.ts +50 -55
- package/dist/storage/supabase/index.js +1 -1
- package/dist/storage/uploadthing/index.d.ts +34 -37
- package/dist/storage/uploadthing/index.js +1 -1
- package/dist/storage/vercel-blob/index.d.ts +110 -115
- package/dist/storage/vercel-blob/index.js +1 -1
- package/dist/transformer/audio-transformer.d.ts +97 -96
- package/dist/transformer/image-transformer.d.ts +423 -422
- package/dist/transformer/index.d.ts +35 -34
- package/dist/transformer/video-transformer.d.ts +112 -111
- package/package.json +2 -2
- package/dist/packem_shared/AwsLightStorage-BK-WPL0h.js +0 -1
- package/dist/packem_shared/AzureStorage-1UvDIQZd.js +0 -1
- package/dist/packem_shared/BoxMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/BunS3MetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/BunnyMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/CloudinaryMetaStorage-DPVnmNe5.js +0 -1
- package/dist/packem_shared/DiskStorage-CI07TVNu.js +0 -1
- package/dist/packem_shared/DropboxMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/FirebaseMetaStorage-DPVnmNe5.js +0 -1
- package/dist/packem_shared/FtpMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/GoogleDriveMetaStorage-Cbwa1CHV.js +0 -1
- package/dist/packem_shared/NetlifyBlobMetaStorage-DPVnmNe5.js +0 -1
- package/dist/packem_shared/NetlifyBlobStorage-CkpCCoN1.js +0 -1
- package/dist/packem_shared/OneDriveMetaStorage-Cbwa1CHV.js +0 -1
- package/dist/packem_shared/PocketBaseMetaStorage-DOTLwVE7.js +0 -1
- package/dist/packem_shared/SftpMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/SharePointMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/SupabaseMetaStorage-Cbwa1CHV.js +0 -1
- package/dist/packem_shared/UploadThingMetaStorage-DPVnmNe5.js +0 -1
- package/dist/packem_shared/VercelBlobMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/base-handler-node-BF1v1qDa.js +0 -1
- package/dist/packem_shared/disk-storage-CsQcYW3s.js +0 -1
- package/dist/packem_shared/disk-storage-with-checksum.d-B-VGEsfl.d.ts +0 -156
- package/dist/packem_shared/files.d-CH0iLBNC.d.ts +0 -655
- package/dist/packem_shared/gcs-meta-storage-B7BnctnV.js +0 -1
- package/dist/packem_shared/local-meta-storage-iuJnu90B.js +0 -11
- package/dist/packem_shared/media-transformer.d-Quf4ai47.d.ts +0 -331
- package/dist/packem_shared/path-0oTTdkvl-DvWvbDbh.js +0 -1
- package/dist/packem_shared/s3-base-storage-BoTyhuzO.js +0 -1
- package/dist/packem_shared/storage-0j5nCAUp.js +0 -1
- package/dist/packem_shared/storage.d-CEM1upWM.d.ts +0 -1176
- package/dist/packem_shared/tus-base.d-DLzKE54M.d.ts +0 -106
- package/dist/packem_shared/types.d-Bon9GVVe.d.ts +0 -104
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{utimes as Yt}from"node:fs/promises";import{tmpdir as Zt}from"node:os";import{createRequire as k}from"node:module";import{b as Jt,J as he,P as ht,w as Dt,W as et,K as Pt}from"./path-C-OWflAo-_mqb5p5d.js";import{throwErrorCode as ot,ERRORS as st}from"./ERRORS-BIBxE2oR.js";import er from"./MetaStorage-DPEUyWgN.js";import{stringifyMetadata as tr,parseMetadata as rr}from"./Metadata-B7CcBueg.js";const Ft=0;let or;const sr=e=>(or??=k(import.meta.url))(e),be=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,nr=e=>{if(typeof be<"u"&&be.versions&&be.versions.node){const[t,r]=be.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return be.getBuiltinModule(e)}return sr(e)},{fileURLToPath:ir}=nr("node:url");function ur(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var vt,Et;function ar(){return Et||(Et=1,vt=["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"]),vt}var lr=ar();const pr=ur(lr);new Set(pr);const ye=e=>Jt(e instanceof URL?ir(e):e);let cr=class extends Error{constructor(t){super(`EEXIST: ${t}`)}get code(){return"EEXIST"}set code(t){throw new Error("Cannot overwrite code EEXIST")}get name(){return"AlreadyExistsError"}set name(t){throw new Error("Cannot overwrite name of AlreadyExistsError")}};const ge=e=>{if(!e||!(e instanceof URL)&&typeof e!="string")throw new TypeError("Path must be a non-empty string or URL.")};let fr;const dr=e=>(fr??=k(import.meta.url))(e),$e=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,hr=e=>{if(typeof $e<"u"&&$e.versions&&$e.versions.node){const[t,r]=$e.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return $e.getBuiltinModule(e)}return dr(e)};hr("node:fs/promises");let gr;const mr=e=>(gr??=k(import.meta.url))(e),ve=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,yr=e=>{if(typeof ve<"u"&&ve.versions&&ve.versions.node){const[t,r]=ve.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return ve.getBuiltinModule(e)}return mr(e)};yr("node:fs");const gt=e=>{if(e.isFile())return"file";if(e.isDirectory())return"dir";if(e.isSymbolicLink())return"symlink"};let br;const $r=e=>(br??=k(import.meta.url))(e),Ee=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,vr=e=>{if(typeof Ee<"u"&&Ee.versions&&Ee.versions.node){const[t,r]=Ee.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Ee.getBuiltinModule(e)}return $r(e)},{lstat:At,mkdir:Er}=vr("node:fs/promises"),Gt=async e=>{ge(e);try{const t=await At(e);if(!t.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${String(gt(t))}'`);return}catch(t){if(t.code!=="ENOENT")throw t}try{await Er(e,{recursive:!0})}catch(t){if(t.code!=="EEXIST")throw t;const r=await At(e);if(!r.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${String(gt(r))}'`,{cause:t})}};let Ar;const wr=e=>(Ar??=k(import.meta.url))(e),Ae=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Rr=e=>{if(typeof Ae<"u"&&Ae.versions&&Ae.versions.node){const[t,r]=Ae.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Ae.getBuiltinModule(e)}return wr(e)};Rr("node:fs");let xr;const _r=e=>(xr??=k(import.meta.url))(e),we=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Tr=e=>{if(typeof we<"u"&&we.versions&&we.versions.node){const[t,r]=we.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return we.getBuiltinModule(e)}return _r(e)},{lstat:Sr,writeFile:Cr}=Tr("node:fs/promises"),on=async e=>{ge(e);try{const t=await Sr(e);if(!t.isFile())throw new Error(`Ensure path exists, expected 'file', got '${String(gt(t))}'`)}catch(t){if(t.code==="ENOENT"){await Gt(he(ye(e))),await Cr(e,new Uint8Array);return}throw t}};let Or;const kr=e=>(Or??=k(import.meta.url))(e),Re=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Nr=e=>{if(typeof Re<"u"&&Re.versions&&Re.versions.node){const[t,r]=Re.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Re.getBuiltinModule(e)}return kr(e)};Nr("node:fs");let Lr;const Hr=e=>(Lr??=k(import.meta.url))(e),xe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Mr=e=>{if(typeof xe<"u"&&xe.versions&&xe.versions.node){const[t,r]=xe.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return xe.getBuiltinModule(e)}return Hr(e)};Mr("node:fs/promises");let Br;const Ir=e=>(Br??=k(import.meta.url))(e),_e=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Dr=e=>{if(typeof _e<"u"&&_e.versions&&_e.versions.node){const[t,r]=_e.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return _e.getBuiltinModule(e)}return Ir(e)};Dr("node:fs");let Pr;const Fr=e=>(Pr??=k(import.meta.url))(e),Te=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Gr=e=>{if(typeof Te<"u"&&Te.versions&&Te.versions.node){const[t,r]=Te.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Te.getBuiltinModule(e)}return Fr(e)};Gr("node:fs/promises");let Ur;const Xr=e=>(Ur??=k(import.meta.url))(e),Se=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,zr=e=>{if(typeof Se<"u"&&Se.versions&&Se.versions.node){const[t,r]=Se.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Se.getBuiltinModule(e)}return Xr(e)};zr("node:fs");let wt=class extends Error{root;constructor(t,r){super(`${t instanceof Error?t.message:String(t)} for path "${r}"`),this.cause=t,this.root=r}get name(){return"WalkError"}set name(t){throw new Error("Cannot overwrite name of WalkError")}};const Kr=e=>{const t=[],r=new Set;let m=0;for(const p of e){if(p==="{")t.push(m);else if(p==="}"){const l=t.pop();l!==void 0&&(r.add(l),r.add(m))}m+=1}let c=0,o=0,a="";for(const p of e)p==="{"?r.has(o)?(a+="(",c+=1):a+=String.raw`\{`:p==="}"?r.has(o)?(a+=")",c-=1):a+=String.raw`\}`:p===","&&c>0?a+="|":a+=p,o+=1;return a},Rt=e=>{const t=e.replace(/[$()+\\^]/g,String.raw`\$&`).replace(/\.\*/g,".([^/]*)").replace(/\*\*/g,"(.*)").replace(/(?<!\.)\*(?!\*)/g,"([^/]*)").replace(/\?/g,"[^/]").replace(/\.(?!\*)/g,String.raw`\.`),r=Kr(t).replace(/\[!(.*?)\]/g,"[^$1]");try{return new RegExp(`^${r}$`)}catch(m){throw new Error(`Invalid glob pattern: ${e}`,{cause:m})}};let jr=class{name;path;#e;constructor(t,r,m){this.#e=t,this.name=r,this.path=m}isDirectory(){return this.#e.isDirectory()}isFile(){return this.#e.isFile()}isSymbolicLink(){return this.#e.isSymbolicLink()}};const mt=(e,t,r)=>new jr(e,t,r),Je=(e,t,r,m)=>{if(Array.isArray(t)&&t.length>0&&!t.some(o=>e.endsWith(o)))return!1;const c=e.includes("\\")?e.replaceAll("\\","/"):e;return r&&!r.some(o=>o.test(c))?!1:!m?.some(o=>o.test(c))};let Wr;const Qr=e=>(Wr??=k(import.meta.url))(e),Ce=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,qr=e=>{if(typeof Ce<"u"&&Ce.versions&&Ce.versions.node){const[t,r]=Ce.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Ce.getBuiltinModule(e)}return Qr(e)},{readdir:Vr,realpath:Yr,stat:Ut}=qr("node:fs/promises"),Zr=async e=>{const t=et(e),r=Pt(t),m=await Ut(t);return mt(m,r,t)};async function*Jr(e,t={}){const{extensions:r,followSymlinks:m=!1,includeDirs:c=!0,includeFiles:o=!0,includeSymlinks:a=!0,match:p,maxDepth:l=Number.POSITIVE_INFINITY,skip:E}=t;if(ge(e),l<0)return;const h=t.visited??new Set,R=p?p.map(b=>typeof b=="string"?Rt(b):b):void 0,_=E?E.map(b=>typeof b=="string"?Rt(b):b):void 0;if(e=ht(ye(e)),c&&Je(e,r,R,_)&&(yield await Zr(e)),!(l<1||!Je(e,void 0,void 0,_)))try{const b=await Vr(e,{withFileTypes:!0});for(const C of b){let X=Dt(e,C.name),K=C,{name:j}=C,H=C.isDirectory(),g=C.isFile();if(C.isSymbolicLink())if(m){const y=et(await Yr(X));if(h.has(y))continue;X=y;const s=await Ut(y);H=s.isDirectory(),g=s.isFile(),K=s,j=Pt(y)}else if(a&&Je(X,r,R,_)){yield mt(C,C.name,X);continue}else continue;H?(m&&h.add(X),yield*Jr(X,{extensions:r,followSymlinks:m,includeDirs:c,includeFiles:o,includeSymlinks:a,match:R,maxDepth:l-1,skip:_,visited:h})):g&&o&&Je(X,r,R,_)&&(yield mt(K,j,X))}}catch(b){throw b instanceof wt?b:new wt(b,e)}}let eo;const to=e=>(eo??=k(import.meta.url))(e),Oe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ro=e=>{if(typeof Oe<"u"&&Oe.versions&&Oe.versions.node){const[t,r]=Oe.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Oe.getBuiltinModule(e)}return to(e)};ro("node:fs");let oo;const so=e=>(oo??=k(import.meta.url))(e),ke=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,no=e=>{if(typeof ke<"u"&&ke.versions&&ke.versions.node){const[t,r]=ke.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return ke.getBuiltinModule(e)}return so(e)};no("node:fs/promises");let io;const uo=e=>(io??=k(import.meta.url))(e),Ne=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ao=e=>{if(typeof Ne<"u"&&Ne.versions&&Ne.versions.node){const[t,r]=Ne.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Ne.getBuiltinModule(e)}return uo(e)};ao("node:fs");function bt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var xt={},nt,_t;function tt(){if(_t)return nt;_t=1;const e="[^\\\\/]",t=Symbol("unignore"),r="\\.",m="\\+",c="\\?",o="\\/",a="(?=.)",p="[^/]",l=`(?:${o}|$)`,E=`(?:^|${o})`,h=`${r}{1,2}${l}`,R=`(?!${r})`,_=`(?!${E}${h})`,b=`(?!${r}{0,1}${l})`,C=`(?!${h})`,X=`[^.${o}]`,K=`${p}*?`,j="/",H={DOT_LITERAL:r,PLUS_LITERAL:m,QMARK_LITERAL:c,SLASH_LITERAL:o,ONE_CHAR:a,QMARK:p,END_ANCHOR:l,DOTS_SLASH:h,NO_DOT:R,NO_DOTS:_,NO_DOT_SLASH:b,NO_DOTS_SLASH:C,QMARK_NO_DOT:X,STAR:K,START_ANCHOR:E,SEP:j},g={...H,SLASH_LITERAL:"[\\\\/]",QMARK:e,STAR:`${e}*?`,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:"\\"},y={__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 nt={DEFAULT_MAX_EXTGLOB_RECURSION:0,MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:y,UNIGNORE:t,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(s){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${s.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(s){return s===!0?g:H}},nt}var Tt;function rt(){return Tt||(Tt=1,(function(e){const{REGEX_BACKSLASH:t,REGEX_REMOVE_BACKSLASH:r,REGEX_SPECIAL_CHARS:m,REGEX_SPECIAL_CHARS_GLOBAL:c}=tt();e.isObject=o=>o!==null&&typeof o=="object"&&!Array.isArray(o),e.hasRegexChars=o=>m.test(o),e.isRegexChar=o=>o.length===1&&e.hasRegexChars(o),e.escapeRegex=o=>o.replace(c,"\\$1"),e.toPosixSlashes=o=>o.replace(t,"/"),e.isWindows=()=>{if(typeof navigator<"u"&&navigator.platform){const o=navigator.platform.toLowerCase();return o==="win32"||o==="windows"}return process.platform?process.platform==="win32":!1},e.removeBackslashes=o=>o.replace(r,a=>a==="\\"?"":a),e.escapeLast=(o,a,p)=>{const l=o.lastIndexOf(a,p);return l===-1?o:o[l-1]==="\\"?e.escapeLast(o,a,l-1):`${o.slice(0,l)}\\${o.slice(l)}`},e.removePrefix=(o,a={})=>{let p=o;return p.startsWith("./")&&(p=p.slice(2),a.prefix="./"),p},e.wrapOutput=(o,a={},p={})=>{const l=p.contains?"":"^",E=p.contains?"":"$";let h=`${l}(?:${o})${E}`;return a.negated===!0&&(h=`(?:^(?!${h}).*$)`),h},e.basename=(o,{windows:a}={})=>{const p=o.split(a?/[\\/]/:"/"),l=p[p.length-1];return l===""?p[p.length-2]:l}})(xt)),xt}var it,St;function lo(){if(St)return it;St=1;const e=rt(),{CHAR_ASTERISK:t,CHAR_AT:r,CHAR_BACKWARD_SLASH:m,CHAR_COMMA:c,CHAR_DOT:o,CHAR_EXCLAMATION_MARK:a,CHAR_FORWARD_SLASH:p,CHAR_LEFT_CURLY_BRACE:l,CHAR_LEFT_PARENTHESES:E,CHAR_LEFT_SQUARE_BRACKET:h,CHAR_PLUS:R,CHAR_QUESTION_MARK:_,CHAR_RIGHT_CURLY_BRACE:b,CHAR_RIGHT_PARENTHESES:C,CHAR_RIGHT_SQUARE_BRACKET:X}=tt(),K=H=>H===p||H===m,j=H=>{H.isPrefix!==!0&&(H.depth=H.isGlobstar?1/0:1)};return it=(H,g)=>{const y=g||{},s=H.length-1,w=y.parts===!0||y.scanToEnd===!0,O=[],$=[],x=[];let v=H,W=-1,G=0,J=0,le=!1,ee=!1,U=!1,te=!1,pe=!1,se=!1,re=!1,P=!1,ne=!1,q=!1,ce=0,V,A,L={value:"",depth:0,isGlob:!1};const Q=()=>W>=s,u=()=>v.charCodeAt(W+1),I=()=>(V=A,v.charCodeAt(++W));for(;W<s;){A=I();let Y;if(A===m){re=L.backslashes=!0,A=I(),A===l&&(se=!0);continue}if(se===!0||A===l){for(ce++;Q()!==!0&&(A=I());){if(A===m){re=L.backslashes=!0,I();continue}if(A===l){ce++;continue}if(se!==!0&&A===o&&(A=I())===o){if(le=L.isBrace=!0,U=L.isGlob=!0,q=!0,w===!0)continue;break}if(se!==!0&&A===c){if(le=L.isBrace=!0,U=L.isGlob=!0,q=!0,w===!0)continue;break}if(A===b&&(ce--,ce===0)){se=!1,le=L.isBrace=!0,q=!0;break}}if(w===!0)continue;break}if(A===p){if(O.push(W),$.push(L),L={value:"",depth:0,isGlob:!1},q===!0)continue;if(V===o&&W===G+1){G+=2;continue}J=W+1;continue}if(y.noext!==!0&&(A===R||A===r||A===t||A===_||A===a)&&u()===E){if(U=L.isGlob=!0,te=L.isExtglob=!0,q=!0,A===a&&W===G&&(ne=!0),w===!0){for(;Q()!==!0&&(A=I());){if(A===m){re=L.backslashes=!0,A=I();continue}if(A===C){U=L.isGlob=!0,q=!0;break}}continue}break}if(A===t){if(V===t&&(pe=L.isGlobstar=!0),U=L.isGlob=!0,q=!0,w===!0)continue;break}if(A===_){if(U=L.isGlob=!0,q=!0,w===!0)continue;break}if(A===h){for(;Q()!==!0&&(Y=I());){if(Y===m){re=L.backslashes=!0,I();continue}if(Y===X){ee=L.isBracket=!0,U=L.isGlob=!0,q=!0;break}}if(w===!0)continue;break}if(y.nonegate!==!0&&A===a&&W===G){P=L.negated=!0,G++;continue}if(y.noparen!==!0&&A===E){if(U=L.isGlob=!0,w===!0){for(;Q()!==!0&&(A=I());){if(A===E){re=L.backslashes=!0,A=I();continue}if(A===C){q=!0;break}}continue}break}if(U===!0){if(q=!0,w===!0)continue;break}}y.noext===!0&&(te=!1,U=!1);let B=v,fe="",n="";G>0&&(fe=v.slice(0,G),v=v.slice(G),J-=G),B&&U===!0&&J>0?(B=v.slice(0,J),n=v.slice(J)):U===!0?(B="",n=v):B=v,B&&B!==""&&B!=="/"&&B!==v&&K(B.charCodeAt(B.length-1))&&(B=B.slice(0,-1)),y.unescape===!0&&(n&&(n=e.removeBackslashes(n)),B&&re===!0&&(B=e.removeBackslashes(B)));const i={prefix:fe,input:H,start:G,base:B,glob:n,isBrace:le,isBracket:ee,isGlob:U,isExtglob:te,isGlobstar:pe,negated:P,negatedExtglob:ne};if(y.tokens===!0&&(i.maxDepth=0,K(A)||$.push(L),i.tokens=$),y.parts===!0||y.tokens===!0){let Y;for(let N=0;N<O.length;N++){const oe=Y?Y+1:G,ie=O[N],Z=H.slice(oe,ie);y.tokens&&(N===0&&G!==0?($[N].isPrefix=!0,$[N].value=fe):$[N].value=Z,j($[N]),i.maxDepth+=$[N].depth),(N!==0||Z!=="")&&x.push(Z),Y=ie}if(Y&&Y+1<H.length){const N=H.slice(Y+1);x.push(N),y.tokens&&($[$.length-1].value=N,j($[$.length-1]),i.maxDepth+=$[$.length-1].depth)}i.slashes=O,i.parts=x}return i},it}var ut,Ct;function po(){if(Ct)return ut;Ct=1;const e=tt(),t=rt(),{MAX_LENGTH:r,POSIX_REGEX_SOURCE:m,REGEX_NON_SPECIAL_CHARS:c,REGEX_SPECIAL_CHARS_BACKREF:o,REPLACEMENTS:a}=e,p=(g,y)=>typeof y.expandRange=="function"?y.expandRange(...g,y):(g.sort(),`[${g.join("-")}]`),l=(g,y)=>`Missing ${g}: "${y}" - use "\\\\${y}" to match literal characters`,E=g=>{const y=[];let s=0,w=0,O=0,$="",x=!1;for(const v of g){if(x===!0){$+=v,x=!1;continue}if(v==="\\"){$+=v,x=!0;continue}if(v==='"'){O=O===1?0:1,$+=v;continue}if(O===0){if(v==="[")s++;else if(v==="]"&&s>0)s--;else if(s===0){if(v==="(")w++;else if(v===")"&&w>0)w--;else if(v==="|"&&w===0){y.push($),$="";continue}}}$+=v}return y.push($),y},h=g=>{let y=!1;for(const s of g){if(y===!0){y=!1;continue}if(s==="\\"){y=!0;continue}if(/[?*+@!()[\]{}]/.test(s))return!1}return!0},R=g=>{let y=g.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")},_=g=>{const y=g.map(R).filter(Boolean);for(let s=0;s<y.length;s++)for(let w=s+1;w<y.length;w++){const O=y[s],$=y[w],x=O[0];if(!(!x||O!==x.repeat(O.length)||$!==x.repeat($.length))&&(O===$||O.startsWith($)||$.startsWith(O)))return!0}return!1},b=(g,y=!0)=>{if(g[0]!=="+"&&g[0]!=="*"||g[1]!=="(")return;let s=0,w=0,O=0,$=!1;for(let x=1;x<g.length;x++){const v=g[x];if($===!0){$=!1;continue}if(v==="\\"){$=!0;continue}if(v==='"'){O=O===1?0:1;continue}if(O!==1){if(v==="["){s++;continue}if(v==="]"&&s>0){s--;continue}if(!(s>0)){if(v==="("){w++;continue}if(v===")"&&(w--,w===0))return y===!0&&x!==g.length-1?void 0:{type:g[0],body:g.slice(2,x),end:x}}}}},C=g=>`${g.length===1?t.escapeRegex(g[0]):`[${g.map(y=>t.escapeRegex(y)).join("")}]`}*`,X=g=>{let y=0;const s=[];for(;y<g.length;){const w=b(g.slice(y),!1);if(!w||w.type!=="*")return;const O=E(w.body).map(x=>x.trim());if(O.length!==1)return;const $=R(O[0]);if(!$||$.length!==1)return;s.push($),y+=w.end+1}if(!(s.length<1))return s},K=g=>{let y=0,s=g.trim(),w=b(s);for(;w;)y++,s=w.body.trim(),w=b(s);return y},j=(g,y)=>{if(y.maxExtglobRecursion===!1)return{risky:!1};const s=typeof y.maxExtglobRecursion=="number"?y.maxExtglobRecursion:e.DEFAULT_MAX_EXTGLOB_RECURSION,w=E(g).map(v=>v.trim());if(w.length>1&&(w.some(v=>v==="")||w.some(v=>/^[*?]+$/.test(v))||_(w)))return{risky:!0};const O=[];let $=!1,x=!0;for(const v of w){const W=X(v);if(W){$=!0,O.push(...W);continue}const G=R(v);if(G&&G.length===1){O.push(G);continue}if(x=!1,K(v)>s)return{risky:!0}}return $?x?{risky:!0,safeOutput:C([...new Set(O)])}:{risky:!0}:{risky:!1}},H=(g,y)=>{if(typeof g!="string")throw new TypeError("Expected a string");g=a[g]||g;const s={...y},w=typeof s.maxLength=="number"?Math.min(r,s.maxLength):r;let O=g.length;if(O>w)throw new SyntaxError(`Input length: ${O}, exceeds maximum allowed length: ${w}`);const $={type:"bos",value:"",output:s.prepend||""},x=[$],v=s.capture?"":"?:",W=e.globChars(s.windows),G=e.extglobChars(W),{DOT_LITERAL:J,PLUS_LITERAL:le,SLASH_LITERAL:ee,ONE_CHAR:U,DOTS_SLASH:te,NO_DOT:pe,NO_DOT_SLASH:se,NO_DOTS_SLASH:re,QMARK:P,QMARK_NO_DOT:ne,STAR:q,START_ANCHOR:ce}=W,V=d=>`(${v}(?:(?!${ce}${d.dot?te:J}).)*?)`,A=s.dot?"":pe,L=s.dot?P:ne;let Q=s.bash===!0?V(s):q;s.capture&&(Q=`(${Q})`),typeof s.noext=="boolean"&&(s.noextglob=s.noext);const u={input:g,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:x};g=t.removePrefix(g,u),O=g.length;const I=[],B=[],fe=[];let n=$,i;const Y=()=>u.index===O-1,N=u.peek=(d=1)=>g[u.index+d],oe=u.advance=()=>g[++u.index]||"",ie=()=>g.slice(u.index+1),Z=(d="",D=0)=>{u.consumed+=d,u.index+=D},Ve=d=>{u.output+=d.output!=null?d.output:d.value,Z(d.value)},qt=()=>{let d=1;for(;N()==="!"&&(N(2)!=="("||N(3)==="?");)oe(),u.start++,d++;return d%2===0?!1:(u.negated=!0,u.start++,!0)},Ye=d=>{u[d]++,fe.push(d)},de=d=>{u[d]--,fe.pop()},T=d=>{if(n.type==="globstar"){const D=u.braces>0&&(d.type==="comma"||d.type==="brace"),f=d.extglob===!0||I.length&&(d.type==="pipe"||d.type==="paren");d.type!=="slash"&&d.type!=="paren"&&!D&&!f&&(u.output=u.output.slice(0,-n.output.length),n.type="star",n.value="*",n.output=Q,u.output+=n.output)}if(I.length&&d.type!=="paren"&&(I[I.length-1].inner+=d.value),(d.value||d.output)&&Ve(d),n&&n.type==="text"&&d.type==="text"){n.output=(n.output||n.value)+d.value,n.value+=d.value;return}d.prev=n,x.push(d),n=d},Ze=(d,D)=>{const f={...G[D],conditions:1,inner:""};f.prev=n,f.parens=u.parens,f.output=u.output,f.startIndex=u.index,f.tokensIndex=x.length;const S=(s.capture?"(":"")+f.open;Ye("parens"),T({type:d,value:D,output:u.output?"":U}),T({type:"paren",extglob:!0,value:oe(),output:S}),I.push(f)},Vt=d=>{const D=g.slice(d.startIndex,u.index+1),f=g.slice(d.startIndex+2,u.index),S=j(f,s);if((d.type==="plus"||d.type==="star")&&S.risky){const M=S.safeOutput?(d.output?"":U)+(s.capture?`(${S.safeOutput})`:S.safeOutput):void 0,ue=x[d.tokensIndex];ue.type="text",ue.value=D,ue.output=M||t.escapeRegex(D);for(let ae=d.tokensIndex+1;ae<x.length;ae++)x[ae].value="",x[ae].output="",delete x[ae].suffix;u.output=d.output+ue.output,u.backtrack=!0,T({type:"paren",extglob:!0,value:i,output:""}),de("parens");return}let F=d.close+(s.capture?")":""),z;if(d.type==="negate"){let M=Q;if(d.inner&&d.inner.length>1&&d.inner.includes("/")&&(M=V(s)),(M!==Q||Y()||/^\)+$/.test(ie()))&&(F=d.close=`)$))${M}`),d.inner.includes("*")&&(z=ie())&&/^\.[^\\/.]+$/.test(z)){const ue=H(z,{...y,fastpaths:!1}).output;F=d.close=`)${ue})${M})`}d.prev.type==="bos"&&(u.negatedExtglob=!0)}T({type:"paren",extglob:!0,value:i,output:F}),de("parens")};if(s.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(g)){let d=!1,D=g.replace(o,(f,S,F,z,M,ue)=>z==="\\"?(d=!0,f):z==="?"?S?S+z+(M?P.repeat(M.length):""):ue===0?L+(M?P.repeat(M.length):""):P.repeat(F.length):z==="."?J.repeat(F.length):z==="*"?S?S+z+(M?Q:""):Q:S?f:`\\${f}`);return d===!0&&(s.unescape===!0?D=D.replace(/\\/g,""):D=D.replace(/\\+/g,f=>f.length%2===0?"\\\\":f?"\\":"")),D===g&&s.contains===!0?(u.output=g,u):(u.output=t.wrapOutput(D,u,y),u)}for(;!Y();){if(i=oe(),i==="\0")continue;if(i==="\\"){const f=N();if(f==="/"&&s.bash!==!0||f==="."||f===";")continue;if(!f){i+="\\",T({type:"text",value:i});continue}const S=/^\\+/.exec(ie());let F=0;if(S&&S[0].length>2&&(F=S[0].length,u.index+=F,F%2!==0&&(i+="\\")),s.unescape===!0?i=oe():i+=oe(),u.brackets===0){T({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("["),F=n.value.slice(0,S),z=n.value.slice(S+2),M=m[z];if(M){n.value=F+M,u.backtrack=!0,oe(),!$.output&&x.indexOf(n)===1&&($.output=U);continue}}}(i==="["&&N()!==":"||i==="-"&&N()==="]")&&(i=`\\${i}`),i==="]"&&(n.value==="["||n.value==="[^")&&(i=`\\${i}`),s.posix===!0&&i==="!"&&n.value==="["&&(i="^"),n.value+=i,Ve({value:i});continue}if(u.quotes===1&&i!=='"'){i=t.escapeRegex(i),n.value+=i,Ve({value:i});continue}if(i==='"'){u.quotes=u.quotes===1?0:1,s.keepQuotes===!0&&T({type:"text",value:i});continue}if(i==="("){Ye("parens"),T({type:"paren",value:i});continue}if(i===")"){if(u.parens===0&&s.strictBrackets===!0)throw new SyntaxError(l("opening","("));const f=I[I.length-1];if(f&&u.parens===f.parens+1){Vt(I.pop());continue}T({type:"paren",value:i,output:u.parens?")":"\\)"}),de("parens");continue}if(i==="["){if(s.nobracket===!0||!ie().includes("]")){if(s.nobracket!==!0&&s.strictBrackets===!0)throw new SyntaxError(l("closing","]"));i=`\\${i}`}else Ye("brackets");T({type:"bracket",value:i});continue}if(i==="]"){if(s.nobracket===!0||n&&n.type==="bracket"&&n.value.length===1){T({type:"text",value:i,output:`\\${i}`});continue}if(u.brackets===0){if(s.strictBrackets===!0)throw new SyntaxError(l("opening","["));T({type:"text",value:i,output:`\\${i}`});continue}de("brackets");const f=n.value.slice(1);if(n.posix!==!0&&f[0]==="^"&&!f.includes("/")&&(i=`/${i}`),n.value+=i,Ve({value:i}),s.literalBrackets===!1||t.hasRegexChars(f))continue;const S=t.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=`(${v}${S}|${n.value})`,u.output+=n.value;continue}if(i==="{"&&s.nobrace!==!0){Ye("braces");const f={type:"brace",value:i,output:"(",outputIndex:u.output.length,tokensIndex:u.tokens.length};B.push(f),T(f);continue}if(i==="}"){const f=B[B.length-1];if(s.nobrace===!0||!f){T({type:"text",value:i,output:i});continue}let S=")";if(f.dots===!0){const F=x.slice(),z=[];for(let M=F.length-1;M>=0&&(x.pop(),F[M].type!=="brace");M--)F[M].type!=="dots"&&z.unshift(F[M].value);S=p(z,s),u.backtrack=!0}if(f.comma!==!0&&f.dots!==!0){const F=u.output.slice(0,f.outputIndex),z=u.tokens.slice(f.tokensIndex);f.value=f.output="\\{",i=S="\\}",u.output=F;for(const M of z)u.output+=M.output||M.value}T({type:"brace",value:i,output:S}),de("braces"),B.pop();continue}if(i==="|"){I.length>0&&I[I.length-1].conditions++,T({type:"text",value:i});continue}if(i===","){let f=i;const S=B[B.length-1];S&&fe[fe.length-1]==="braces"&&(S.comma=!0,f="|"),T({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="",x.pop(),n=$;continue}T({type:"slash",value:i,output:ee});continue}if(i==="."){if(u.braces>0&&n.type==="dot"){n.value==="."&&(n.output=J);const f=B[B.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"){T({type:"text",value:i,output:J});continue}T({type:"dot",value:i,output:J});continue}if(i==="?"){if(!(n&&n.value==="(")&&s.noextglob!==!0&&N()==="("&&N(2)!=="?"){Ze("qmark",i);continue}if(n&&n.type==="paren"){const f=N();let S=i;(n.value==="("&&!/[!=<:]/.test(f)||f==="<"&&!/<([!=]|\w+>)/.test(ie()))&&(S=`\\${i}`),T({type:"text",value:i,output:S});continue}if(s.dot!==!0&&(n.type==="slash"||n.type==="bos")){T({type:"qmark",value:i,output:ne});continue}T({type:"qmark",value:i,output:P});continue}if(i==="!"){if(s.noextglob!==!0&&N()==="("&&(N(2)!=="?"||!/[!=<:]/.test(N(3)))){Ze("negate",i);continue}if(s.nonegate!==!0&&u.index===0){qt();continue}}if(i==="+"){if(s.noextglob!==!0&&N()==="("&&N(2)!=="?"){Ze("plus",i);continue}if(n&&n.value==="("||s.regex===!1){T({type:"plus",value:i,output:le});continue}if(n&&(n.type==="bracket"||n.type==="paren"||n.type==="brace")||u.parens>0){T({type:"plus",value:i});continue}T({type:"plus",value:le});continue}if(i==="@"){if(s.noextglob!==!0&&N()==="("&&N(2)!=="?"){T({type:"at",extglob:!0,value:i,output:""});continue}T({type:"text",value:i});continue}if(i!=="*"){(i==="$"||i==="^")&&(i=`\\${i}`);const f=c.exec(ie());f&&(i+=f[0],u.index+=f[0].length),T({type:"text",value:i});continue}if(n&&(n.type==="globstar"||n.star===!0)){n.type="star",n.star=!0,n.value+=i,n.output=Q,u.backtrack=!0,u.globstar=!0,Z(i);continue}let d=ie();if(s.noextglob!==!0&&/^\([^?]/.test(d)){Ze("star",i);continue}if(n.type==="star"){if(s.noglobstar===!0){Z(i);continue}const f=n.prev,S=f.prev,F=f.type==="slash"||f.type==="bos",z=S&&(S.type==="star"||S.type==="globstar");if(s.bash===!0&&(!F||d[0]&&d[0]!=="/")){T({type:"star",value:i,output:""});continue}const M=u.braces>0&&(f.type==="comma"||f.type==="brace"),ue=I.length&&(f.type==="pipe"||f.type==="paren");if(!F&&f.type!=="paren"&&!M&&!ue){T({type:"star",value:i,output:""});continue}for(;d.slice(0,3)==="/**";){const ae=g[u.index+4];if(ae&&ae!=="/")break;d=d.slice(3),Z("/**",3)}if(f.type==="bos"&&Y()){n.type="globstar",n.value+=i,n.output=V(s),u.output=n.output,u.globstar=!0,Z(i);continue}if(f.type==="slash"&&f.prev.type!=="bos"&&!z&&Y()){u.output=u.output.slice(0,-(f.output+n.output).length),f.output=`(?:${f.output}`,n.type="globstar",n.output=V(s)+(s.strictSlashes?")":"|$)"),n.value+=i,u.globstar=!0,u.output+=f.output+n.output,Z(i);continue}if(f.type==="slash"&&f.prev.type!=="bos"&&d[0]==="/"){const ae=d[1]!==void 0?"|$":"";u.output=u.output.slice(0,-(f.output+n.output).length),f.output=`(?:${f.output}`,n.type="globstar",n.output=`${V(s)}${ee}|${ee}${ae})`,n.value+=i,u.output+=f.output+n.output,u.globstar=!0,Z(i+oe()),T({type:"slash",value:"/",output:""});continue}if(f.type==="bos"&&d[0]==="/"){n.type="globstar",n.value+=i,n.output=`(?:^|${ee}|${V(s)}${ee})`,u.output=n.output,u.globstar=!0,Z(i+oe()),T({type:"slash",value:"/",output:""});continue}if(M&&d[0]==="/"){n.type="globstar",n.value+=i,n.output=`(?:^|${ee}|${V(s)}${ee})`,u.output+=n.output,u.globstar=!0,Z(i+oe()),T({type:"slash",value:"/",output:""});continue}u.output=u.output.slice(0,-n.output.length),n.type="globstar",n.output=V(s),n.value+=i,u.output+=n.output,u.globstar=!0,Z(i);continue}const D={type:"star",value:i,output:Q};if(s.bash===!0){D.output=".*?",(n.type==="bos"||n.type==="slash")&&(D.output=A+D.output),T(D);continue}if(n&&(n.type==="bracket"||n.type==="paren")&&s.regex===!0){D.output=i,T(D);continue}(u.index===u.start||n.type==="slash"||n.type==="dot")&&(n.type==="dot"?(u.output+=se,n.output+=se):s.dot===!0?(u.output+=re,n.output+=re):(u.output+=A,n.output+=A),N()!=="*"&&(u.output+=U,n.output+=U)),T(D)}for(;u.brackets>0;){if(s.strictBrackets===!0)throw new SyntaxError(l("closing","]"));u.output=t.escapeLast(u.output,"["),de("brackets")}for(;u.parens>0;){if(s.strictBrackets===!0)throw new SyntaxError(l("closing",")"));u.output=t.escapeLast(u.output,"("),de("parens")}for(;u.braces>0;){if(s.strictBrackets===!0)throw new SyntaxError(l("closing","}"));u.output=t.escapeLast(u.output,"{"),de("braces")}if(s.strictSlashes!==!0&&(n.type==="star"||n.type==="bracket")&&T({type:"maybe_slash",value:"",output:`${ee}?`}),u.backtrack===!0){u.output="";for(const d of u.tokens)u.output+=d.output!=null?d.output:d.value,d.suffix&&(u.output+=d.suffix)}return u};return H.fastpaths=(g,y)=>{const s={...y},w=typeof s.maxLength=="number"?Math.min(r,s.maxLength):r,O=g.length;if(O>w)throw new SyntaxError(`Input length: ${O}, exceeds maximum allowed length: ${w}`);g=a[g]||g;const{DOT_LITERAL:$,SLASH_LITERAL:x,ONE_CHAR:v,DOTS_SLASH:W,NO_DOT:G,NO_DOTS:J,NO_DOTS_SLASH:le,STAR:ee,START_ANCHOR:U}=e.globChars(s.windows),te=s.dot?J:G,pe=s.dot?le:G,se=s.capture?"":"?:",re={negated:!1,prefix:""};let P=s.bash===!0?".*?":ee;s.capture&&(P=`(${P})`);const ne=A=>A.noglobstar===!0?P:`(${se}(?:(?!${U}${A.dot?W:$}).)*?)`,q=A=>{switch(A){case"*":return`${te}${v}${P}`;case".*":return`${$}${v}${P}`;case"*.*":return`${te}${P}${$}${v}${P}`;case"*/*":return`${te}${P}${x}${v}${pe}${P}`;case"**":return te+ne(s);case"**/*":return`(?:${te}${ne(s)}${x})?${pe}${v}${P}`;case"**/*.*":return`(?:${te}${ne(s)}${x})?${pe}${P}${$}${v}${P}`;case"**/.*":return`(?:${te}${ne(s)}${x})?${$}${v}${P}`;default:{const L=/^(.*?)\.(\w+)$/.exec(A);if(!L)return;const Q=q(L[1]);return Q?Q+$+L[2]:void 0}}},ce=t.removePrefix(g,re);let V=q(ce);return V&&s.strictSlashes!==!0&&(V+=`${x}?`),V},ut=H,ut}var at,Ot;function co(){if(Ot)return at;Ot=1;const e=lo(),t=po(),r=rt(),m=tt(),c=a=>a&&typeof a=="object"&&!Array.isArray(a),o=(a,p,l=!1)=>{if(Array.isArray(a)){const K=a.map(j=>o(j,p,l));return j=>{for(const H of K){const g=H(j);if(g)return g}return!1}}const E=c(a)&&a.tokens&&a.input;if(a===""||typeof a!="string"&&!E)throw new TypeError("Expected pattern to be a non-empty string");const h=p||{},R=h.windows,_=E?o.compileRe(a,p):o.makeRe(a,p,!1,!0),b=_.state;delete _.state;let C=()=>!1;if(h.ignore){const K={...p,ignore:null,onMatch:null,onResult:null};C=o(h.ignore,K,l)}const X=(K,j=!1)=>{const{isMatch:H,match:g,output:y}=o.test(K,_,p,{glob:a,posix:R}),s={glob:a,state:b,regex:_,posix:R,input:K,output:y,match:g,isMatch:H};if(typeof h.onResult=="function"&&h.onResult(s),H===!1)return s.isMatch=!1,j?s:!1;e:if(C(K)){if(typeof h.onIgnore=="function"&&h.onIgnore(s)===m.UNIGNORE){s.isMatch=!0;break e}return s.isMatch=!1,j?s:!1}return typeof h.onMatch=="function"&&h.onMatch(s),j?s:!0};return l&&(X.state=b),X};return o.test=(a,p,l,{glob:E,posix:h}={})=>{if(typeof a!="string")throw new TypeError("Expected input to be a string");if(a==="")return{isMatch:!1,output:""};const R=l||{},_=R.format||(h?r.toPosixSlashes:null);let b=a===E,C=b&&_?_(a):a;return b===!1&&(C=_?_(a):a,b=C===E),(b===!1||R.capture===!0)&&(R.matchBase===!0||R.basename===!0?b=o.matchBase(a,p,l,h):b=p.exec(C)),{isMatch:!!b,match:b,output:C}},o.matchBase=(a,p,l,E=l&&l.windows)=>(p instanceof RegExp?p:o.makeRe(p,l)).test(r.basename(a,{windows:E})),o.isMatch=(a,p,l)=>o(p,l)(a),o.parse=(a,p)=>Array.isArray(a)?a.map(l=>o.parse(l,p)):t(a,{...p,fastpaths:!1}),o.scan=(a,p)=>e(a,p),o.compileRe=(a,p,l=!1,E=!1)=>{if(l===!0)return a.output;const h=p||{},R=h.contains?"":"^",_=h.contains?"":"$";let b=`${R}(?:${a.output})${_}`;a&&a.negated===!0&&(b=`^(?!${b}).*$`);const C=o.toRegex(b,p);return E===!0&&(C.state=a),C},o.makeRe=(a,p={},l=!1,E=!1)=>{if(!a||typeof a!="string")throw new TypeError("Expected a non-empty string");let h={negated:!1,fastpaths:!0};return p.fastpaths!==!1&&(a[0]==="."||a[0]==="*")&&(h.output=t.fastpaths(a,p)),h.output||(h=t(a,p)),o.compileRe(h,p,l,E)},o.toRegex=(a,p)=>{try{const l=p||{};return new RegExp(a,l.flags||(l.nocase?"i":""))}catch(l){if(p&&p.debug===!0)throw l;return/$^/}},o.constants=m,at=o,at}var lt,kt;function fo(){if(kt)return lt;kt=1;const e=co(),t=rt();function r(m,c,o=!1){return c&&(c.windows===null||c.windows===void 0)&&(c={...c,windows:t.isWindows()}),e(m,c,o)}return Object.assign(r,e),lt=r,lt}var ho=fo();bt(ho);let go;const mo=e=>(go??=k(import.meta.url))(e),Le=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,qe=e=>{if(typeof Le<"u"&&Le.versions&&Le.versions.node){const[t,r]=Le.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Le.getBuiltinModule(e)}return mo(e)};qe("fs");qe("fs");qe("path");qe("url");const{createRequire:yo}=qe("module");var Nt=yo(import.meta.url);try{Nt.resolve("picomatch"),Nt("picomatch")}catch{}var pt,Lt;function bo(){if(Lt)return pt;Lt=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 pt=function(e){if(typeof e!="string"||e==="")return!1;for(var t;t=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(t[2])return!0;e=e.slice(t.index+t[0].length)}return!1},pt}var ct,Ht;function Xt(){if(Ht)return ct;Ht=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 e=bo(),t={"{":"}","(":")","[":"]"},r=function(c){if(c[0]==="!")return!0;for(var o=0,a=-2,p=-2,l=-2,E=-2,h=-2;o<c.length;){if(c[o]==="*"||c[o+1]==="?"&&/[\].+)]/.test(c[o])||p!==-1&&c[o]==="["&&c[o+1]!=="]"&&(p<o&&(p=c.indexOf("]",o)),p>o&&(h===-1||h>p||(h=c.indexOf("\\",o),h===-1||h>p)))||l!==-1&&c[o]==="{"&&c[o+1]!=="}"&&(l=c.indexOf("}",o),l>o&&(h=c.indexOf("\\",o),h===-1||h>l))||E!==-1&&c[o]==="("&&c[o+1]==="?"&&/[:!=]/.test(c[o+2])&&c[o+3]!==")"&&(E=c.indexOf(")",o),E>o&&(h=c.indexOf("\\",o),h===-1||h>E))||a!==-1&&c[o]==="("&&c[o+1]!=="|"&&(a<o&&(a=c.indexOf("|",o)),a!==-1&&c[a+1]!==")"&&(E=c.indexOf(")",a),E>a&&(h=c.indexOf("\\",a),h===-1||h>E))))return!0;if(c[o]==="\\"){var R=c[o+1];o+=2;var _=t[R];if(_){var b=c.indexOf(_,o);b!==-1&&(o=b+1)}if(c[o]==="!")return!0}else o++}return!1},m=function(c){if(c[0]==="!")return!0;for(var o=0;o<c.length;){if(/[*?{}()[\]]/.test(c[o]))return!0;if(c[o]==="\\"){var a=c[o+1];o+=2;var p=t[a];if(p){var l=c.indexOf(p,o);l!==-1&&(o=l+1)}if(c[o]==="!")return!0}else o++}return!1};return ct=function(c,o){if(typeof c!="string"||c==="")return!1;if(e(c))return!0;var a=r;return o&&o.strict===!1&&(a=m),a(c)},ct}let $o;const vo=e=>($o??=k(import.meta.url))(e),He=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,zt=e=>{if(typeof He<"u"&&He.versions&&He.versions.node){const[t,r]=He.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return He.getBuiltinModule(e)}return vo(e)},Eo=zt("path"),Ao=zt("os");var ft,Mt;function wo(){if(Mt)return ft;Mt=1;var e=Xt(),t=Eo.posix.dirname,r=Ao.platform()==="win32",m="/",c=/\\/g,o=/\\([!*?|[\](){}])/g;ft=function(l,E){var h=Object.assign({flipBackslashes:!0},E);h.flipBackslashes&&r&&l.indexOf(m)<0&&(l=l.replace(c,m)),a(l)&&(l+=m),l+="a";do l=t(l);while(p(l));return l.replace(o,"$1")};function a(l){var E=l.slice(-1),h;switch(E){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 p(l){return/\([^()]+$/.test(l)||l[0]==="{"||l[0]==="["||/[^\\][{[]/.test(l)?!0:e(l)}return ft}var Ro=wo();bt(Ro);let xo;const _o=e=>(xo??=k(import.meta.url))(e),Me=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,To=e=>{if(typeof Me<"u"&&Me.versions&&Me.versions.node){const[t,r]=Me.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Me.getBuiltinModule(e)}return _o(e)},{access:So}=To("node:fs/promises");async function yt(e,t=Ft){ge(e),e=ye(e);try{return await So(e,t),!0}catch{return!1}}let Co;const Oo=e=>(Co??=k(import.meta.url))(e),Be=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ko=e=>{if(typeof Be<"u"&&Be.versions&&Be.versions.node){const[t,r]=Be.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Be.getBuiltinModule(e)}return Oo(e)};ko("node:fs");var No=Xt();bt(No);let Lo;const Ho=e=>(Lo??=k(import.meta.url))(e),me=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Kt=e=>{if(typeof me<"u"&&me.versions&&me.versions.node){const[t,r]=me.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return me.getBuiltinModule(e)}return Ho(e)},{cwd:Mo}=me,{mkdir:Bo,rename:Io,copyFile:Do,unlink:Po}=Kt("node:fs/promises");Kt("node:fs");class Fo extends Error{constructor(t,r){super(`Source directory "${he(t)}" does not match destination directory "${he(r)}"`),this.name="SameDirectoryError"}}const Go=(e,t)=>{if(!e||!t)throw new Error("Source and destination paths must not be empty");if(he(e)!==he(t))throw new Fo(e,t)},Uo=async(e,t,{cwd:r,directoryMode:m,overwrite:c,validateDirectory:o})=>{if(r&&(e=ht(r,e),t=ht(r,t)),o&&Go(e,t),!c&&await yt(t))throw new Error(`The destination file exists: ${t}`);await Bo(he(t),{mode:m,recursive:!0});try{await Io(e,t)}catch(a){if(a.code==="EXDEV")await Do(e,t),await Po(e);else throw a}},un=async(e,t,r={})=>{const m={overwrite:!0,validateDirectory:!1,...r,cwd:r.cwd?ye(r.cwd):Mo()};await Uo(e,t,m)};let Xo=class extends Error{constructor(t){super(`ENOENT: ${t}`)}get code(){return"ENOENT"}set code(t){throw new Error("Cannot overwrite code ENOENT")}get name(){return"NotFoundError"}set name(t){throw new Error("Cannot overwrite name of NotFoundError")}},zo=class extends Error{constructor(t){super(`EPERM: Operation not permitted, ${t}`)}get code(){return"EPERM"}set code(t){throw new Error("Cannot overwrite code EPERM")}get name(){return"PermissionError"}set name(t){throw new Error("Cannot overwrite name of PermissionError")}};const Ko=(e,t)=>{const r=e?.code;return r==="ENOENT"?new Xo(`no such file or directory, open '${t}'`):r==="EACCES"||r==="EPERM"?new zo(`unable to read the non-readable file: ${t}`):e};let jo;const Wo=e=>(jo??=k(import.meta.url))(e),Ie=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,jt=e=>{if(typeof Ie<"u"&&Ie.versions&&Ie.versions.node){const[t,r]=Ie.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Ie.getBuiltinModule(e)}return Wo(e)},{readFile:Qo}=jt("node:fs/promises"),{unzip:qo,brotliDecompress:Vo}=jt("node:zlib"),Yo={brotli:Vo,gzip:qo,none:(e,t)=>{t(null,e)}},Zo=async(e,t)=>{ge(e),e=ye(e);const{buffer:r,compression:m,encoding:c,flag:o}=t??{};let a;try{a=await Qo(e,o?{flag:o}:{})}catch(p){throw Ko(p,e)}return await new Promise((p,l)=>{Yo[m??"none"](a,(E,h)=>{E?l(E):p(r?h:h.toString(c??"utf8"))})})};let Jo;const es=e=>(Jo??=k(import.meta.url))(e),De=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Wt=e=>{if(typeof De<"u"&&De.versions&&De.versions.node){const[t,r]=De.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return De.getBuiltinModule(e)}return es(e)};Wt("node:fs");Wt("node:zlib");const ts=e=>{const t={force:!0,recursive:!0};return e?.maxRetries!==void 0&&(t.maxRetries=e.maxRetries),e?.retryDelay!==void 0&&(t.retryDelay=e.retryDelay),t};let rs;const os=e=>(rs??=k(import.meta.url))(e),Pe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Qt=e=>{if(typeof Pe<"u"&&Pe.versions&&Pe.versions.node){const[t,r]=Pe.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Pe.getBuiltinModule(e)}return os(e)};Qt("node:fs");Qt("node:fs/promises");let ss;const ns=e=>(ss??=k(import.meta.url))(e),Fe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,is=e=>{if(typeof Fe<"u"&&Fe.versions&&Fe.versions.node){const[t,r]=Fe.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Fe.getBuiltinModule(e)}return ns(e)};is("node:fs");let us;const as=e=>(us??=k(import.meta.url))(e),Ge=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ls=e=>{if(typeof Ge<"u"&&Ge.versions&&Ge.versions.node){const[t,r]=Ge.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Ge.getBuiltinModule(e)}return as(e)},{rm:ps}=ls("node:fs/promises"),cs=async(e,t={})=>{ge(e),await ps(e,ts(t))};let fs;const ds=e=>(fs??=k(import.meta.url))(e),Ue=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,hs=e=>{if(typeof Ue<"u"&&Ue.versions&&Ue.versions.node){const[t,r]=Ue.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Ue.getBuiltinModule(e)}return ds(e)};hs("node:fs");const gs=e=>{if(typeof e!="string"&&!(e instanceof ArrayBuffer)&&!ArrayBuffer.isView(e))throw new TypeError("File contents must be a string, ArrayBuffer, or ArrayBuffer view.")};let ms;const ys=e=>(ms??=k(import.meta.url))(e),Xe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,bs=e=>{if(typeof Xe<"u"&&Xe.versions&&Xe.versions.node){const[t,r]=Xe.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Xe.getBuiltinModule(e)}return ys(e)},{randomBytes:$s}=bs("node:crypto"),vs=e=>`${e}.${process.pid.toString(36)}.${$s(6).toString("hex")}.tmp`,Es=new TextEncoder,As=e=>{if(e instanceof Uint8Array)return e;if(typeof e=="string")return Es.encode(e);if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e)){const t=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);return new Uint8Array(t)}throw new TypeError("Invalid contents type. Expected string or ArrayBuffer.")};let ws;const Rs=e=>(ws??=k(import.meta.url))(e),ze=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,xs=e=>{if(typeof ze<"u"&&ze.versions&&ze.versions.node){const[t,r]=ze.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return ze.getBuiltinModule(e)}return Rs(e)},{mkdir:_s,readFile:Ts,writeFile:Ss,stat:Cs,rename:Bt,chown:Os,chmod:ks,unlink:Ns}=xs("node:fs/promises"),Ls=async(e,t,r)=>{r={backup:!1,encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},ge(e),gs(t),e=ye(e);const m=await yt(e,Ft),c=r.flag??"w",o=c.includes("a"),a=c.includes("x");if(m&&(!r.overwrite||a))throw new cr(`file already exists, open '${e}'`);const p=vs(e);try{!m&&r.recursive&&await _s(he(e),{recursive:!0});let l,E=typeof t=="string"?Buffer.from(t,r.encoding??"utf8"):As(t);if(o&&m&&(E=Buffer.concat([await Ts(e),E])),await Ss(p,E,{flag:"wx"}),m&&r.backup&&(l=await Cs(e),r.chown??={gid:l.gid,uid:l.uid},await Bt(e,`${e}.bak`)),r.chown)try{await Os(p,r.chown.uid,r.chown.gid)}catch{}const h=l&&r.mode===void 0?l.mode:r.mode;h!==void 0&&await ks(p,h),await Bt(p,e)}catch(l){throw new Error(`Failed to write file at: ${e} - ${l.message}`,{cause:l})}finally{await yt(p)&&await Ns(p)}};let Hs;const Ms=e=>(Hs??=k(import.meta.url))(e),Ke=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Bs=e=>{if(typeof Ke<"u"&&Ke.versions&&Ke.versions.node){const[t,r]=Ke.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Ke.getBuiltinModule(e)}return Ms(e)};Bs("node:fs");let Is;const Ds=e=>(Is??=k(import.meta.url))(e),je=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ps=e=>{if(typeof je<"u"&&je.versions&&je.versions.node){const[t,r]=je.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return je.getBuiltinModule(e)}return Ds(e)};Ps("node:fs/promises");let Fs;const Gs=e=>(Fs??=k(import.meta.url))(e),We=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Us=e=>{if(typeof We<"u"&&We.versions&&We.versions.node){const[t,r]=We.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return We.getBuiltinModule(e)}return Gs(e)};Us("node:fs");let Xs;const zs=e=>(Xs??=k(import.meta.url))(e),Qe=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$t=e=>{if(typeof Qe<"u"&&Qe.versions&&Qe.versions.node){const[t,r]=Qe.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return Qe.getBuiltinModule(e)}return zs(e)},Ks=$t("fs"),js=$t("os"),Ws=$t("path");var dt={},It;function Qs(){if(It)return dt;It=1;var e=Object.defineProperty,t=(h,R)=>e(h,"name",{value:R,configurable:!0}),r=Ks,m=js,c=Ws;const o=t(h=>{let R="";for(let _=0;_<h.length;_+=1){const b=h[_],C=b.toUpperCase();R+=b===C?b.toLowerCase():C}return R},"invertCase"),a=new Map,p=t((h,R)=>{const _=c.join(h,`.is-fs-case-sensitive-test-${process.pid}`);try{return R.writeFileSync(_,""),!R.existsSync(o(_))}finally{try{R.unlinkSync(_)}catch{}}},"checkDirectoryCaseWithWrite"),l=t((h,R,_)=>{try{return p(h,_)}catch(b){if(R===void 0)return p(m.tmpdir(),_);throw b}},"checkDirectoryCaseWithFallback"),E=t((h,R=r,_=!0)=>{const b=h??process.cwd();if(_&&a.has(b))return a.get(b);let C;const X=o(b);return X!==b&&R.existsSync(b)?C=!R.existsSync(X):C=l(b,h,R),_&&a.set(b,C),C},"isFsCaseSensitive");return dt.isFsCaseSensitive=E,dt}Qs();class pn extends er{directory;constructor(t){super(t),this.directory=et(t?.directory||Dt(Zt(),"Upload_meta")),this.accessCheck().catch(r=>{this.logger?.error("Metadata storage access check failed: %O",r)})}getMetaPath=t=>{const r=et(`${this.directory}/${this.prefix}${t}${this.suffix}`),m=this.directory.endsWith("/")?this.directory:`${this.directory}/`;return r.startsWith(m)?r:ot(st.INVALID_FILE_NAME,`Invalid id: "${t}" resolves outside the meta directory`)};getIdFromPath=t=>t.slice(`${this.directory}/${this.prefix}`.length,-this.suffix.length);async save(t,r){await this.accessCheck();const m={...r};return m.metadata&&(m.metadata=tr(r.metadata)),await Ls(this.getMetaPath(t),JSON.stringify(m),{recursive:!0}),r}async touch(t,r){const m=new Date;return await Yt(this.getMetaPath(t),m,m),r}async get(t){try{const r=await Zo(this.getMetaPath(t));if(r===void 0)throw ot(st.FILE_NOT_FOUND);const m=JSON.parse(r);return m.metadata&&typeof m.metadata=="string"&&(m.metadata=rr(m.metadata)),m}catch(r){const m=r,c=r instanceof SyntaxError;throw m.code==="ENOENT"||c?ot(st.FILE_NOT_FOUND):r}}async delete(t){await cs(this.getMetaPath(t))}async accessCheck(){await Gt(this.directory)}}export{un as X,Gt as d,on as h,Jr as j,Zo as q,cs as u,pn as y};
|
package/dist/packem_shared/{local-meta-storage.d-D9PBfkn6.d.ts → local-meta-storage.d-cRTXr1kb.d.ts}
RENAMED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { F as File, L as LocalMetaStorageOptions, M as MetaStorage } from "./storage.d-
|
|
1
|
+
import { F as File, L as LocalMetaStorageOptions, M as MetaStorage } from "./storage.d-DwdJrArF.js";
|
|
2
2
|
import 'node:stream';
|
|
3
3
|
/**
|
|
4
|
-
* Stores upload metafiles on local disk
|
|
5
|
-
*/
|
|
4
|
+
* Stores upload metafiles on local disk
|
|
5
|
+
*/
|
|
6
6
|
declare class LocalMetaStorage<T extends File = File> extends MetaStorage<T> {
|
|
7
7
|
readonly directory: string;
|
|
8
8
|
constructor(config?: LocalMetaStorageOptions);
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
* Returns metafile path.
|
|
11
|
+
* @param id upload id
|
|
12
|
+
* @throws {UploadError} If the id resolves to a path outside the meta directory (e.g. via `..` traversal or absolute paths).
|
|
13
|
+
*/
|
|
14
14
|
getMetaPath: (id: string) => string;
|
|
15
15
|
override save(id: string, file: T): Promise<T>;
|
|
16
16
|
override touch(id: string, file: T): Promise<T>;
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { F as File, g as FileReturn, B as BaseStorage } from "./storage.d-DwdJrArF.js";
|
|
2
|
+
import { M as MediaTransformerConfig, a as MediaTransformResult } from "./types.d-BEUv414z.js";
|
|
3
|
+
/**
|
|
4
|
+
* Unified media transformer that automatically detects media type and routes to appropriate transformer.
|
|
5
|
+
* @template TFile The file type used by this transformer.
|
|
6
|
+
* @template TFileReturn The return type for file retrieval operations.
|
|
7
|
+
*
|
|
8
|
+
* Supports transformations via query parameters for on-demand media processing across all supported formats.
|
|
9
|
+
* @example
|
|
10
|
+
* // eslint-disable-next-line jsdoc/match-description
|
|
11
|
+
* ```ts
|
|
12
|
+
* const transformer = new MediaTransformer(storage, {
|
|
13
|
+
* maxImageSize: 10 * 1024 * 1024, // 10MB
|
|
14
|
+
* maxVideoSize: 100 * 1024 * 1024, // 100MB
|
|
15
|
+
* maxAudioSize: 50 * 1024 * 1024, // 50MB
|
|
16
|
+
* cache: new MapCache(), // In-memory caching
|
|
17
|
+
* saveTransformedFiles: true // Persist transformed files to storage
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Handle transformation via query parameters
|
|
21
|
+
* const result = await transformer.handle('file-id', {
|
|
22
|
+
* width: 800,
|
|
23
|
+
* height: 600,
|
|
24
|
+
* fit: 'cover',
|
|
25
|
+
* format: 'webp',
|
|
26
|
+
* quality: 80
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // Fetch with URL query string
|
|
30
|
+
* const result = await transformer.fetch('file-id', 'width=1280&height=720&codec=avc&bitrate=2000000');
|
|
31
|
+
*
|
|
32
|
+
* // Clear all cached transformed files
|
|
33
|
+
* transformer.clearSavedTransformedFiles();
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* ## Configuration Options
|
|
37
|
+
*
|
|
38
|
+
* - `saveTransformedFiles`: Persist transformed files to storage for reuse (default: false)
|
|
39
|
+
* - `cache`: Cache instance for in-memory caching (optional)
|
|
40
|
+
* - `maxImageSize/maxVideoSize/maxAudioSize`: Size limits for processing
|
|
41
|
+
* - `cacheTtl`: Cache time-to-live in seconds
|
|
42
|
+
*
|
|
43
|
+
* ## Supported Query Parameters
|
|
44
|
+
*
|
|
45
|
+
* ### Common Parameters
|
|
46
|
+
* - `format`: Output format (jpeg/png/webp/avif/mp4/webm/mkv/mp3/wav/ogg/aac/flac)
|
|
47
|
+
* - `quality`: Quality for images (0-100), bitrate for video/audio
|
|
48
|
+
*
|
|
49
|
+
* ### Image Parameters
|
|
50
|
+
* - `width`: Width in pixels
|
|
51
|
+
* - `height`: Height in pixels
|
|
52
|
+
* - `fit`: Resize fit mode - cover/contain/fill/inside/outside
|
|
53
|
+
* - `position`: Position for cover/contain fits
|
|
54
|
+
* - `withoutEnlargement`: Avoid enlarging smaller images (boolean)
|
|
55
|
+
* - `withoutReduction`: Avoid reducing larger images (boolean)
|
|
56
|
+
* - `kernel`: Resize kernel - nearest/cubic/mitchell/lanczos2/lanczos3
|
|
57
|
+
* - `fastShrinkOnLoad`: Fast shrink on load (boolean)
|
|
58
|
+
* - `left/top/cropWidth/cropHeight`: Crop parameters
|
|
59
|
+
* - `angle`: Rotation angle in degrees (any number, but angles other than 90°/180°/270° use interpolation and may affect quality)
|
|
60
|
+
* - `background`: Background color for rotation
|
|
61
|
+
* - `blur`: Apply blur effect (boolean)
|
|
62
|
+
* - `sharpen`: Apply sharpening (boolean)
|
|
63
|
+
* - `median`: Apply median filter with size (number)
|
|
64
|
+
* // eslint-disable-next-line jsdoc/match-description
|
|
65
|
+
* - `clahe`: Apply CLAHE (Contrast Limited Adaptive Histogram Equalization) (boolean)
|
|
66
|
+
* - `threshold`: Apply thresholding with value (0-255)
|
|
67
|
+
* - `gamma`: Apply gamma correction (boolean)
|
|
68
|
+
* - `negate`: Negate (invert) the image (boolean)
|
|
69
|
+
* - `normalise/normalize`: Normalise the image (boolean)
|
|
70
|
+
* - `flatten`: Flatten alpha channel (boolean)
|
|
71
|
+
* - `unflatten`: Unflatten alpha channel (boolean)
|
|
72
|
+
* - `flip`: Flip image vertically (boolean)
|
|
73
|
+
* - `flop`: Flop image horizontally (boolean)
|
|
74
|
+
* - `greyscale/grayscale`: Convert to greyscale (boolean)
|
|
75
|
+
* - `modulate`: Apply modulation effects (boolean)
|
|
76
|
+
* - `brightness`: Brightness multiplier for modulation (number)
|
|
77
|
+
* - `saturation`: Saturation multiplier for modulation (number)
|
|
78
|
+
* - `hue`: Hue rotation in degrees for modulation (number)
|
|
79
|
+
* // eslint-disable-next-line jsdoc/match-description
|
|
80
|
+
* - `lightness`: Lightness adjustment for modulation (number)
|
|
81
|
+
* - `tint`: Apply tinting (boolean)
|
|
82
|
+
* - `colourspace`: Convert colourspace - srgb/rgb/cmyk/lab/b-w
|
|
83
|
+
*
|
|
84
|
+
* ### Video Parameters
|
|
85
|
+
* - `width/height/fit`: Same as images
|
|
86
|
+
* - `codec`: Video codec - avc/hevc/vp8/vp9/av1
|
|
87
|
+
* - `bitrate`: Video bitrate in bits per second
|
|
88
|
+
* - `frameRate`: Frame rate in Hz
|
|
89
|
+
* - `keyFrameInterval`: Key frame interval in seconds
|
|
90
|
+
* - `angle`: Rotation angle in degrees (any number, but angles other than 90°/180°/270° use interpolation and may affect quality)
|
|
91
|
+
* - `background`: Background color for rotation
|
|
92
|
+
*
|
|
93
|
+
* ### Audio Parameters
|
|
94
|
+
* - `sampleRate`: Sample rate in Hz
|
|
95
|
+
* - `numberOfChannels`: Number of channels
|
|
96
|
+
* - `codec`: Audio codec - aac/opus/mp3/vorbis/flac
|
|
97
|
+
* - `bitrate`: Audio bitrate in bits per second
|
|
98
|
+
*
|
|
99
|
+
* ## File Persistence
|
|
100
|
+
*
|
|
101
|
+
* When `saveTransformedFiles` is enabled, transformed files are automatically saved to storage
|
|
102
|
+
* with deterministic IDs based on the original file and transformation parameters. Subsequent
|
|
103
|
+
* requests for the same transformation will serve the cached file directly, improving performance
|
|
104
|
+
* and reducing processing costs.
|
|
105
|
+
*/
|
|
106
|
+
declare class MediaTransformer<TFile extends File = File, TFileReturn extends FileReturn = FileReturn> {
|
|
107
|
+
private readonly storage;
|
|
108
|
+
private readonly imageTransformer?;
|
|
109
|
+
private readonly videoTransformer?;
|
|
110
|
+
private readonly audioTransformer?;
|
|
111
|
+
private readonly config;
|
|
112
|
+
private readonly logger;
|
|
113
|
+
/**
|
|
114
|
+
* Creates a new MediaTransformer instance.
|
|
115
|
+
* @param storage The storage backend for retrieving and storing media files.
|
|
116
|
+
* @param config Configuration options for the media transformer including transformer classes and settings.
|
|
117
|
+
* @throws Error if no transformer classes are provided in the configuration.
|
|
118
|
+
*/
|
|
119
|
+
constructor(storage: BaseStorage<TFile, TFileReturn>, config?: MediaTransformerConfig<TFile, TFileReturn>);
|
|
120
|
+
supportedFormats(): string[];
|
|
121
|
+
/**
|
|
122
|
+
* Handles media transformation based on query parameters.
|
|
123
|
+
* @param fileId File identifier.
|
|
124
|
+
* @param query Query parameters for transformation.
|
|
125
|
+
* @returns Unified transformation result.
|
|
126
|
+
*/
|
|
127
|
+
handle(fileId: string, query: Record<string, string | undefined> | URLSearchParams | string): Promise<MediaTransformResult>;
|
|
128
|
+
/**
|
|
129
|
+
* Fetches media transformation with URL query string support.
|
|
130
|
+
* @param fileId File identifier.
|
|
131
|
+
* @param queryString URL query string (e.g., "width=800&height=600&format=webp").
|
|
132
|
+
* @returns Unified transformation result.
|
|
133
|
+
*/
|
|
134
|
+
fetch(fileId: string, queryString: string): Promise<MediaTransformResult>;
|
|
135
|
+
/**
|
|
136
|
+
* Clears cache for a specific file across all transformers.
|
|
137
|
+
* @param fileId Optional file identifier to clear cache for. If omitted, clears all cache.
|
|
138
|
+
*/
|
|
139
|
+
clearCache(fileId?: string): void;
|
|
140
|
+
/**
|
|
141
|
+
* Clears all saved transformed files from storage.
|
|
142
|
+
* @remarks This is a maintenance operation and may take time for large numbers of files.
|
|
143
|
+
*/
|
|
144
|
+
clearSavedTransformedFiles(): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Clears saved transformed files for a specific original file.
|
|
147
|
+
* @param originalFileId Original file identifier to clear transformed files for.
|
|
148
|
+
*/
|
|
149
|
+
clearSavedTransformedFilesForFile(originalFileId: string): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Gets cache statistics (combined from all transformers).
|
|
152
|
+
* @returns Cache statistics for audio, image, and video transformers.
|
|
153
|
+
*/
|
|
154
|
+
getCacheStats(): {
|
|
155
|
+
audio?: {
|
|
156
|
+
maxSize: number;
|
|
157
|
+
size: number;
|
|
158
|
+
};
|
|
159
|
+
image?: {
|
|
160
|
+
maxSize: number;
|
|
161
|
+
size: number;
|
|
162
|
+
};
|
|
163
|
+
video?: {
|
|
164
|
+
maxSize: number;
|
|
165
|
+
size: number;
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Validates query parameters for the given media type.
|
|
170
|
+
* @param query The query parameters to validate.
|
|
171
|
+
* @param mediaType The media type being validated ('image', 'video', or 'audio').
|
|
172
|
+
* @throws {ValidationError} When invalid parameters are provided.
|
|
173
|
+
*/
|
|
174
|
+
private validateQueryParameters;
|
|
175
|
+
/**
|
|
176
|
+
* Validates query parameters for image transformations. Checks for invalid video/audio-only parameters, invalid fit values, invalid rotation angles, invalid formats, and incomplete crop parameter sets.
|
|
177
|
+
* @param query Query parameters to validate.
|
|
178
|
+
* @throws {ValidationError} When validation fails.
|
|
179
|
+
*/
|
|
180
|
+
private validateImageQueryParameters;
|
|
181
|
+
/**
|
|
182
|
+
* Validates query parameters for video transformations. Checks for invalid audio-only parameters, invalid fit values, invalid rotation angles, invalid codecs, invalid formats, incomplete crop parameter sets, and invalid numeric values.
|
|
183
|
+
* @param query Query parameters to validate.
|
|
184
|
+
* @throws {ValidationError} When validation fails.
|
|
185
|
+
*/
|
|
186
|
+
private validateVideoQueryParameters;
|
|
187
|
+
/**
|
|
188
|
+
* Generates a unique ID for transformed files based on original file and transformations.
|
|
189
|
+
* @param originalFileId The original file identifier.
|
|
190
|
+
* @param query The transformation query parameters.
|
|
191
|
+
* @param mediaType The media type (image, video, audio).
|
|
192
|
+
* @returns Unique deterministic identifier for the transformed file.
|
|
193
|
+
* @private
|
|
194
|
+
*/
|
|
195
|
+
private generateTransformedFileId;
|
|
196
|
+
/**
|
|
197
|
+
* Checks if the query contains any transformations.
|
|
198
|
+
* @param query The transformation query parameters.
|
|
199
|
+
* @returns True if any transformations are requested.
|
|
200
|
+
* @private
|
|
201
|
+
*/
|
|
202
|
+
private hasTransformations;
|
|
203
|
+
/**
|
|
204
|
+
* Creates a MediaTransformResult from a stored transformed file.
|
|
205
|
+
* @param storedFile The stored transformed file.
|
|
206
|
+
* @param mediaType The media type (image, video, audio).
|
|
207
|
+
* @param originalFile The original file information.
|
|
208
|
+
* @returns Media transformation result with metadata.
|
|
209
|
+
* @private
|
|
210
|
+
*/
|
|
211
|
+
private createMediaTransformResult;
|
|
212
|
+
/**
|
|
213
|
+
* Extracts format from content type.
|
|
214
|
+
* @param contentType MIME content type string.
|
|
215
|
+
* @returns Format string extracted from content type.
|
|
216
|
+
* @private
|
|
217
|
+
*/
|
|
218
|
+
private getFormatFromContentType;
|
|
219
|
+
/**
|
|
220
|
+
* Saves transformed file to storage.
|
|
221
|
+
* @param result The transformation result to save.
|
|
222
|
+
* @param originalFileId The original file identifier.
|
|
223
|
+
* @param query The transformation query parameters.
|
|
224
|
+
* @param mediaType The media type (image, video, audio).
|
|
225
|
+
* @returns Promise that resolves when file is saved.
|
|
226
|
+
* @private
|
|
227
|
+
*/
|
|
228
|
+
private saveTransformedFile;
|
|
229
|
+
/**
|
|
230
|
+
* Validates query parameters for audio transformations. Checks for invalid video-only parameters, invalid codecs, invalid formats, and invalid numeric values.
|
|
231
|
+
* @param query Query parameters to validate.
|
|
232
|
+
* @throws {ValidationError} When validation fails.
|
|
233
|
+
*/
|
|
234
|
+
private validateAudioQueryParameters;
|
|
235
|
+
/**
|
|
236
|
+
* Handles image transformation.
|
|
237
|
+
* @param fileId The file identifier.
|
|
238
|
+
* @param query The transformation query parameters.
|
|
239
|
+
* @returns Promise resolving to media transformation result.
|
|
240
|
+
* @private
|
|
241
|
+
*/
|
|
242
|
+
private handleImageTransformation;
|
|
243
|
+
/**
|
|
244
|
+
* Handles video transformation.
|
|
245
|
+
* @param fileId The file identifier.
|
|
246
|
+
* @param query The transformation query parameters.
|
|
247
|
+
* @returns Promise resolving to media transformation result.
|
|
248
|
+
* @private
|
|
249
|
+
*/
|
|
250
|
+
private handleVideoTransformation;
|
|
251
|
+
/**
|
|
252
|
+
* Handles audio transformation.
|
|
253
|
+
* @param fileId The file identifier.
|
|
254
|
+
* @param query The transformation query parameters.
|
|
255
|
+
* @returns Promise resolving to media transformation result.
|
|
256
|
+
* @private
|
|
257
|
+
*/
|
|
258
|
+
private handleAudioTransformation;
|
|
259
|
+
/**
|
|
260
|
+
* Parses query parameters from various input formats.
|
|
261
|
+
* @param query Query parameters in various formats.
|
|
262
|
+
* @returns Normalized MediaTransformQuery object.
|
|
263
|
+
* @private
|
|
264
|
+
*/
|
|
265
|
+
private parseQuery;
|
|
266
|
+
/**
|
|
267
|
+
* Parses boolean parameter from string.
|
|
268
|
+
* @param value String value to parse.
|
|
269
|
+
* @returns Boolean value or undefined.
|
|
270
|
+
* @private
|
|
271
|
+
*/
|
|
272
|
+
private parseBooleanParameter;
|
|
273
|
+
/**
|
|
274
|
+
* Parses URLSearchParams into MediaTransformQuery.
|
|
275
|
+
* @param parameters URL search parameters object.
|
|
276
|
+
* @returns MediaTransformQuery object with parsed parameters.
|
|
277
|
+
* @private
|
|
278
|
+
*/
|
|
279
|
+
private parseURLSearchParams;
|
|
280
|
+
/**
|
|
281
|
+
* Detects media type from MIME type.
|
|
282
|
+
* @param contentType MIME content type string.
|
|
283
|
+
* @returns Detected media type.
|
|
284
|
+
* @throws Error if content type is missing or unsupported.
|
|
285
|
+
* @private
|
|
286
|
+
*/
|
|
287
|
+
private detectMediaType;
|
|
288
|
+
/**
|
|
289
|
+
* Checks if query has image transformations.
|
|
290
|
+
* @param query The transformation query parameters.
|
|
291
|
+
* @returns True if image transformations are requested.
|
|
292
|
+
* @private
|
|
293
|
+
*/
|
|
294
|
+
private hasImageTransformations;
|
|
295
|
+
/**
|
|
296
|
+
* Checks if query has video transformations.
|
|
297
|
+
* @param query The transformation query parameters.
|
|
298
|
+
* @returns True if video transformations are requested.
|
|
299
|
+
* @private
|
|
300
|
+
*/
|
|
301
|
+
private hasVideoTransformations;
|
|
302
|
+
/**
|
|
303
|
+
* Checks if query has audio transformations.
|
|
304
|
+
* @param query The transformation query parameters.
|
|
305
|
+
* @returns True if audio transformations are requested.
|
|
306
|
+
* @private
|
|
307
|
+
*/
|
|
308
|
+
private hasAudioTransformations;
|
|
309
|
+
/**
|
|
310
|
+
* Converts ImageTransformer result to unified format.
|
|
311
|
+
* @param result The image transformation result.
|
|
312
|
+
* @returns Unified media transformation result.
|
|
313
|
+
* @private
|
|
314
|
+
*/
|
|
315
|
+
private convertImageResult;
|
|
316
|
+
/**
|
|
317
|
+
* Converts VideoTransformer result to unified format.
|
|
318
|
+
* @param result The video transformation result.
|
|
319
|
+
* @returns Unified media transformation result.
|
|
320
|
+
* @private
|
|
321
|
+
*/
|
|
322
|
+
private convertVideoResult;
|
|
323
|
+
/**
|
|
324
|
+
* Converts AudioTransformer result to unified format.
|
|
325
|
+
* @param result The audio transformation result.
|
|
326
|
+
* @returns Unified media transformation result.
|
|
327
|
+
* @private
|
|
328
|
+
*/
|
|
329
|
+
private convertAudioResult;
|
|
330
|
+
}
|
|
331
|
+
export { MediaTransformer as M };
|
package/dist/packem_shared/{memory-storage.d-4EU1cMt1.d.ts → memory-storage.d-BNZvDG1b.d.ts}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Readable } from 'node:stream';
|
|
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-
|
|
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-DwdJrArF.js";
|
|
3
3
|
/**
|
|
4
|
-
* Map-backed metadata storage used by {@link MemoryStorage}. Holds a deep-copied
|
|
5
|
-
* snapshot of each `File` so callers can mutate the returned object without leaking
|
|
6
|
-
* back into the backing store.
|
|
7
|
-
*/
|
|
4
|
+
* Map-backed metadata storage used by {@link MemoryStorage}. Holds a deep-copied
|
|
5
|
+
* snapshot of each `File` so callers can mutate the returned object without leaking
|
|
6
|
+
* back into the backing store.
|
|
7
|
+
*/
|
|
8
8
|
declare class MemoryMetaStorage<T extends File = File> extends MetaStorage<T> {
|
|
9
9
|
private readonly store;
|
|
10
10
|
constructor(config?: MetaStorageOptions & {
|
|
@@ -18,20 +18,20 @@ declare class MemoryMetaStorage<T extends File = File> extends MetaStorage<T> {
|
|
|
18
18
|
clear(): void;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* Public options for {@link MemoryStorage}. The `initial` record lets tests seed the
|
|
22
|
-
* store with a few key→bytes pairs; pass `metaStorage` to share metadata with another
|
|
23
|
-
* `Files` instance (rarely needed — the memory adapter is meant to be ephemeral).
|
|
24
|
-
*/
|
|
21
|
+
* Public options for {@link MemoryStorage}. The `initial` record lets tests seed the
|
|
22
|
+
* store with a few key→bytes pairs; pass `metaStorage` to share metadata with another
|
|
23
|
+
* `Files` instance (rarely needed — the memory adapter is meant to be ephemeral).
|
|
24
|
+
*/
|
|
25
25
|
interface MemoryStorageOptions<T extends File = File> extends BaseStorageOptions<T> {
|
|
26
26
|
/** Pre-populate the store with these key → bytes entries. */
|
|
27
27
|
initial?: Record<string, Buffer | Uint8Array | string>;
|
|
28
28
|
metaStorageConfig?: MetaStorageOptions;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* Stored entry in the backing {@link Map}. `bytes` is the raw payload; `meta` is a
|
|
32
|
-
* lightweight per-key metadata snapshot so {@link MemoryStorage.list} and
|
|
33
|
-
* `head` can answer without dragging the file class around.
|
|
34
|
-
*/
|
|
31
|
+
* Stored entry in the backing {@link Map}. `bytes` is the raw payload; `meta` is a
|
|
32
|
+
* lightweight per-key metadata snapshot so {@link MemoryStorage.list} and
|
|
33
|
+
* `head` can answer without dragging the file class around.
|
|
34
|
+
*/
|
|
35
35
|
interface MemoryEntry {
|
|
36
36
|
bytes: Buffer;
|
|
37
37
|
contentType: string;
|
|
@@ -41,21 +41,21 @@ interface MemoryEntry {
|
|
|
41
41
|
modifiedAt: string;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* In-memory storage adapter backed by a {@link Map}.
|
|
45
|
-
*
|
|
46
|
-
* Implements the full {@link BaseStorage} surface without touching disk or any
|
|
47
|
-
* external service — useful for tests, ephemeral environments, and as a
|
|
48
|
-
* reference implementation. `raw` returns the backing map so tests can inspect
|
|
49
|
-
* or reset state directly:
|
|
50
|
-
*
|
|
51
|
-
* ```ts
|
|
52
|
-
* const storage = new MemoryStorage({ initial: { "users/1.json": '{"id":1}' } });
|
|
53
|
-
* storage.raw.clear();
|
|
54
|
-
* ```
|
|
55
|
-
*
|
|
56
|
-
* Metadata is shallow-cloned on both write and read so callers never share a
|
|
57
|
-
* mutable object with the store.
|
|
58
|
-
*/
|
|
44
|
+
* In-memory storage adapter backed by a {@link Map}.
|
|
45
|
+
*
|
|
46
|
+
* Implements the full {@link BaseStorage} surface without touching disk or any
|
|
47
|
+
* external service — useful for tests, ephemeral environments, and as a
|
|
48
|
+
* reference implementation. `raw` returns the backing map so tests can inspect
|
|
49
|
+
* or reset state directly:
|
|
50
|
+
*
|
|
51
|
+
* ```ts
|
|
52
|
+
* const storage = new MemoryStorage({ initial: { "users/1.json": '{"id":1}' } });
|
|
53
|
+
* storage.raw.clear();
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* Metadata is shallow-cloned on both write and read so callers never share a
|
|
57
|
+
* mutable object with the store.
|
|
58
|
+
*/
|
|
59
59
|
declare class MemoryStorage<TFile extends File = File> extends BaseStorage<TFile> {
|
|
60
60
|
static override readonly name: string;
|
|
61
61
|
override checksumTypes: string[];
|
|
@@ -66,17 +66,13 @@ declare class MemoryStorage<TFile extends File = File> extends BaseStorage<TFile
|
|
|
66
66
|
override get raw(): Map<string, MemoryEntry>;
|
|
67
67
|
create(fileInit: FileInit, _options?: OperationOptions): Promise<TFile>;
|
|
68
68
|
write(part: FilePart | FileQuery, _options?: OperationOptions): Promise<TFile>;
|
|
69
|
-
get({
|
|
70
|
-
id
|
|
71
|
-
}: FileQuery, _options?: OperationOptions & {
|
|
69
|
+
get({ id }: FileQuery, _options?: OperationOptions & {
|
|
72
70
|
range?: {
|
|
73
71
|
end?: number;
|
|
74
72
|
start: number;
|
|
75
73
|
};
|
|
76
74
|
}): Promise<FileReturn>;
|
|
77
|
-
override getStream({
|
|
78
|
-
id
|
|
79
|
-
}: FileQuery, _options?: OperationOptions & {
|
|
75
|
+
override getStream({ id }: FileQuery, _options?: OperationOptions & {
|
|
80
76
|
range?: {
|
|
81
77
|
end?: number;
|
|
82
78
|
start: number;
|
|
@@ -86,12 +82,8 @@ declare class MemoryStorage<TFile extends File = File> extends BaseStorage<TFile
|
|
|
86
82
|
size?: number;
|
|
87
83
|
stream: Readable;
|
|
88
84
|
}>;
|
|
89
|
-
override exists({
|
|
90
|
-
|
|
91
|
-
}: FileQuery): Promise<boolean>;
|
|
92
|
-
delete({
|
|
93
|
-
id
|
|
94
|
-
}: FileQuery): Promise<TFile>;
|
|
85
|
+
override exists({ id }: FileQuery): Promise<boolean>;
|
|
86
|
+
delete({ id }: FileQuery): Promise<TFile>;
|
|
95
87
|
copy(source: string, destination: string): Promise<TFile>;
|
|
96
88
|
move(source: string, destination: string): Promise<TFile>;
|
|
97
89
|
override list(): Promise<TFile[]>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const $=/^[A-Z]:\//i,h=(e="")=>e&&e.replaceAll("\\","/").replace($,n=>n.toUpperCase()),p=/^[/\\]{2}/,i=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Z]:[/\\]/i,u=/^[A-Z]:$/i,d=/\/$/,x=()=>{if(typeof process.cwd=="function")try{const e=process.cwd();if(typeof e=="string")return h(e)}catch{}return"/"},a=(e,n)=>{let t="",l=0,s=-1,r=0,o;for(let f=0;f<=e.length;++f){if(f<e.length)o=e[f];else{if(o==="/")break;o="/"}if(o==="/"){if(!(s===f-1||r===1))if(r===2){if(t.length<2||l!==2||!t.endsWith(".")||t.at(-2)!=="."){if(t.length>2){const g=t.lastIndexOf("/");g===-1?(t="",l=0):(t=t.slice(0,g),l=t.length-1-t.lastIndexOf("/")),s=f,r=0;continue}else if(t.length>0){t="",l=0,s=f,r=0;continue}}n&&(t+=t.length>0?"/..":"..",l=2)}else t.length>0?t+=`/${e.slice(s+1,f)}`:t=e.slice(s+1,f),l=f-s-1;s=f,r=0}else o==="."&&r!==-1?++r:r=-1}return t},c=e=>i.test(e),I=function(e){if(e.length===0)return".";e=h(e);const n=p.exec(e),t=c(e),l=e.at(-1)==="/";return e=a(e,!t),e.length===0?t?"/":l?"./":".":(l&&(e+="/"),u.test(e)&&(e+="/"),n?t?`//${e}`:`//./${e}`:t&&!c(e)?`/${e}`:e)},w=(...e)=>{let n="";for(const t of e)if(t)if(n.length>0){const l=n.at(-1)==="/",s=t[0]==="/";l&&s?n+=t.slice(1):n+=l||s?t:`/${t}`}else n+=t;return I(n)},y=function(...e){e=e.map(l=>h(l));let n="",t=!1;for(let l=e.length-1;l>=-1&&!t;l--){const s=l>=0?e[l]:x();!s||s.length===0||(n=`${s}/${n}`,t=c(s))}return n=a(n,!t),u.test(n)?`${n}/`:t&&!c(n)?`/${n}`:n.length>0?n:"."},A=e=>{const n=h(e).replace(d,""),t=n.lastIndexOf("/");if(t===-1)return c(e)?"/":".";const l=n.slice(0,t);return u.test(l)?`${l}/`:l||(c(e)?"/":".")},O=(e,n)=>{const t=h(e),l=t.slice(t.lastIndexOf("/")+1);if(n&&l.endsWith(n)){if(n===t)return"";const s=l.slice(0,-n.length);if(s.length>0)return s}return l};export{A as J,O as K,y as P,I as W,h as b,c as v,w};
|