@visulima/storage 1.0.0-alpha.9 → 1.0.0
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 +555 -0
- package/LICENSE.md +237 -568
- package/README.md +82 -466
- package/dist/adapter/nuxt/module.d.ts +41 -34
- package/dist/adapter/nuxt/module.js +1 -93
- package/dist/adapter/nuxt/package.json +0 -6
- package/dist/ai/ai-sdk/index.d.ts +113 -0
- package/dist/ai/ai-sdk/index.js +1 -0
- package/dist/ai/claude/index.d.ts +177 -0
- package/dist/ai/claude/index.js +1 -0
- package/dist/ai/openai/index.d.ts +205 -0
- package/dist/ai/openai/index.js +1 -0
- package/dist/ai/tanstack/index.d.ts +115 -0
- package/dist/ai/tanstack/index.js +1 -0
- package/dist/handler/http/fetch/index.d.ts +303 -4
- package/dist/handler/http/fetch/index.js +1 -4
- package/dist/handler/http/hono/index.d.ts +73 -64
- package/dist/handler/http/hono/index.js +1 -65
- package/dist/handler/http/nextjs/index.d.ts +66 -58
- package/dist/handler/http/nextjs/index.js +1 -37
- package/dist/handler/http/node/index.d.ts +368 -4
- package/dist/handler/http/node/index.js +1 -8
- package/dist/handler/http/solid-start/index.d.ts +66 -57
- package/dist/handler/http/solid-start/index.js +1 -44
- package/dist/index.d.ts +106 -17
- package/dist/index.js +1 -13
- package/dist/openapi/index.d.ts +24 -5
- package/dist/openapi/index.js +1 -5
- package/dist/packem_shared/AbstractBaseStorage-Ba7cLu-t.js +1 -0
- package/dist/packem_shared/AwsLightFile-CpZrubaV.js +1 -0
- package/dist/packem_shared/AwsLightMetaStorage-DPqJ9LTr.js +1 -0
- package/dist/packem_shared/AwsLightStorage-DTBVxHXO.js +1 -0
- package/dist/packem_shared/AzureFile-DFSaVe25.js +1 -0
- package/dist/packem_shared/AzureSMetaStorage-ByzM6Aix.js +1 -0
- package/dist/packem_shared/AzureStorage-BFsD4qbF.js +1 -0
- package/dist/packem_shared/BaseTransformer-Buw5lX_3.js +1 -0
- package/dist/packem_shared/BoxFile-CseIoPW1.js +1 -0
- package/dist/packem_shared/BoxMetaStorage-DFwhEI9C.js +1 -0
- package/dist/packem_shared/BoxStorage-B_t-OVzf.js +1 -0
- package/dist/packem_shared/BunS3File-BcYmsz1n.js +1 -0
- package/dist/packem_shared/BunS3MetaStorage-DFwhEI9C.js +1 -0
- package/dist/packem_shared/BunS3Storage-CB_pZWlV.js +1 -0
- package/dist/packem_shared/BunnyFile-BgEOlcYI.js +1 -0
- package/dist/packem_shared/BunnyMetaStorage-DFwhEI9C.js +1 -0
- package/dist/packem_shared/BunnyStorage-CILSK4_Z.js +1 -0
- package/dist/packem_shared/CloudinaryFile-Bo5B-vM1.js +1 -0
- package/dist/packem_shared/CloudinaryMetaStorage-D_vNzewL.js +1 -0
- package/dist/packem_shared/CloudinaryStorage-DiCbdAi_.js +1 -0
- package/dist/packem_shared/DiskStorage-Kp5t3vnF.js +1 -0
- package/dist/packem_shared/DiskStorageWithChecksum-Bh6w-Iu8.js +1 -0
- package/dist/packem_shared/DropboxFile-BFb7eOzy.js +1 -0
- package/dist/packem_shared/DropboxMetaStorage-DFwhEI9C.js +1 -0
- package/dist/packem_shared/DropboxStorage-H8bd8hEz.js +1 -0
- package/dist/packem_shared/ERRORS-BIBxE2oR.js +1 -0
- package/dist/packem_shared/File-W8aOo15X.js +1 -0
- package/dist/packem_shared/Files-BA3mpDwz.js +1 -0
- package/dist/packem_shared/FirebaseFile-BLaBxa2A.js +1 -0
- package/dist/packem_shared/FirebaseMetaStorage-D_vNzewL.js +1 -0
- package/dist/packem_shared/FirebaseStorage-Dgk4XyMr.js +2 -0
- package/dist/packem_shared/FtpFile-ClWDYnt2.js +1 -0
- package/dist/packem_shared/FtpMetaStorage-DFwhEI9C.js +1 -0
- package/dist/packem_shared/FtpStorage-g_DjiR-C.js +1 -0
- package/dist/packem_shared/GCSConfig-BQ0OpVhe.js +1 -0
- package/dist/packem_shared/GCSFile-Cero7qZN.js +1 -0
- package/dist/packem_shared/GCSMetaStorage-3fLTlRd4.js +1 -0
- package/dist/packem_shared/GCStorage-DUfwVFd3.js +1 -0
- package/dist/packem_shared/GoogleDriveFile-DHpLhzg9.js +1 -0
- package/dist/packem_shared/GoogleDriveMetaStorage-DqkgoE46.js +1 -0
- package/dist/packem_shared/GoogleDriveStorage-D0-5egHE.js +1 -0
- package/dist/packem_shared/LocalMetaStorage-Bp5mVc76.js +1 -0
- package/dist/packem_shared/MediaTransformer-D2kUsklW.js +1 -0
- package/dist/packem_shared/MemoryMetaStorage-Ksgh9pe7.js +1 -0
- package/dist/packem_shared/MemoryStorage-DzSTdlAq.js +1 -0
- package/dist/packem_shared/MetaStorage-DPEUyWgN.js +1 -0
- package/dist/packem_shared/Metadata-B7CcBueg.js +1 -0
- package/dist/packem_shared/Multipart-Btj2mo9r.js +1 -0
- package/dist/packem_shared/Multipart-C4GpuHMU.js +1 -0
- package/dist/packem_shared/NetlifyBlobFile-DoFhkzaH.js +1 -0
- package/dist/packem_shared/NetlifyBlobMetaStorage-D_vNzewL.js +1 -0
- package/dist/packem_shared/NetlifyBlobStorage-DZdCmOVW.js +1 -0
- package/dist/packem_shared/NoOpMetrics-BLo6u4NY.js +1 -0
- package/dist/packem_shared/OneDriveFile-CNNJYI43.js +1 -0
- package/dist/packem_shared/OneDriveMetaStorage-DqkgoE46.js +1 -0
- package/dist/packem_shared/OneDriveStorage-CvJetV7_.js +1 -0
- package/dist/packem_shared/OpenTelemetryMetrics-DJDQsNKp.js +1 -0
- package/dist/packem_shared/PocketBaseFile-DpJpxl3e.js +1 -0
- package/dist/packem_shared/PocketBaseMetaStorage-CpvDRnSu.js +1 -0
- package/dist/packem_shared/PocketBaseStorage-BPil-koe.js +1 -0
- package/dist/packem_shared/Rest-BehVaxbl.js +1 -0
- package/dist/packem_shared/Rest-ymPCZkKR.js +1 -0
- package/dist/packem_shared/S3File-CpZrubaV.js +1 -0
- package/dist/packem_shared/S3MetaStorage-CMonflzp.js +1 -0
- package/dist/packem_shared/S3Storage-wslqssvr.js +1 -0
- package/dist/packem_shared/SftpFile-ClWDYnt2.js +1 -0
- package/dist/packem_shared/SftpMetaStorage-DFwhEI9C.js +1 -0
- package/dist/packem_shared/SftpStorage-BVbMtS2b.js +1 -0
- package/dist/packem_shared/SharePointFile-Blz9FS4h.js +1 -0
- package/dist/packem_shared/SharePointMetaStorage-DFwhEI9C.js +1 -0
- package/dist/packem_shared/SharePointStorage-DWjvR5oZ.js +1 -0
- package/dist/packem_shared/SupabaseFile-Bo5B-vM1.js +1 -0
- package/dist/packem_shared/SupabaseMetaStorage-DqkgoE46.js +1 -0
- package/dist/packem_shared/SupabaseStorage-BiKmYKb6.js +1 -0
- package/dist/packem_shared/TUS_RESUMABLE-CyTSRvPU.js +1 -0
- package/dist/packem_shared/Tus-BgbON_wQ.js +1 -0
- package/dist/packem_shared/Tus-v6jzkaIO.js +1 -0
- package/dist/packem_shared/UploadControl-DZJhI9Wh.js +1 -0
- package/dist/packem_shared/UploadThingFile-BTFMpcIA.js +1 -0
- package/dist/packem_shared/UploadThingMetaStorage-D_vNzewL.js +1 -0
- package/dist/packem_shared/UploadThingStorage-jrEnANC5.js +1 -0
- package/dist/packem_shared/ValidationError-3B06DFyE.js +1 -0
- package/dist/packem_shared/VercelBlobFile-CVQwKlZk.js +1 -0
- package/dist/packem_shared/VercelBlobMetaStorage-DFwhEI9C.js +1 -0
- package/dist/packem_shared/VercelBlobStorage-Y-cDgH30.js +1 -0
- package/dist/packem_shared/_commonjsHelpers-CWAkuNXM.js +1 -0
- package/dist/packem_shared/agentsCopyFile-Dl5iffdH.js +1 -0
- package/dist/packem_shared/akamai-DthkaFul.js +1 -0
- package/dist/packem_shared/alibaba-BEi25O1g.js +1 -0
- package/dist/packem_shared/approval-fVHwBp7u.js +1 -0
- package/dist/packem_shared/approval.d-CMAYH9GF.d.ts +75 -0
- package/dist/packem_shared/aws-light-meta-storage-DGrn72VJ.js +4 -0
- package/dist/packem_shared/azure-meta-storage-ClbEsfI4.js +1 -0
- package/dist/packem_shared/backblaze-m1N5NZ9q.js +1 -0
- package/dist/packem_shared/base-handler-core-EeV8gZck.js +1 -0
- package/dist/packem_shared/base-handler-fetch-CHzsgb7C.js +1 -0
- package/dist/packem_shared/base-handler-node-BjpW8pGi.js +1 -0
- package/dist/packem_shared/cache-Cw3QjoVN.js +1 -0
- package/dist/packem_shared/claudeCopyFile-BX9O4ORk.js +1 -0
- package/dist/packem_shared/cloudflare-CdUTErlo.js +1 -0
- package/dist/packem_shared/copyFile-49FtxXcm.js +1 -0
- package/dist/packem_shared/copyFile-BUPezT_c.js +1 -0
- package/dist/packem_shared/createResponsesFileTools-6Tvt2PNr.js +1 -0
- package/dist/packem_shared/createRetryWrapper-CxgiV_hH.js +1 -0
- package/dist/packem_shared/detect-file-type-BA7UBLKA.js +1 -0
- package/dist/packem_shared/digitalOcean-B2uB6pgz.js +1 -0
- package/dist/packem_shared/disk-storage-DIn-VnCh.js +1 -0
- package/dist/packem_shared/disk-storage-with-checksum.d-B-VGEsfl.d.ts +156 -0
- package/dist/packem_shared/executors-BDzMjc4y.js +1 -0
- package/dist/packem_shared/executors.d-BZP2rWo3.d.ts +69 -0
- package/dist/packem_shared/exoscale-BDa1Gjth.js +1 -0
- package/dist/packem_shared/filebase-CsFYJIwB.js +1 -0
- package/dist/packem_shared/files.d-CH0iLBNC.d.ts +655 -0
- package/dist/packem_shared/gcs-meta-storage-Dy37wCjI.js +1 -0
- package/dist/packem_shared/get-file-status-y3wTtDQs.js +1 -0
- package/dist/packem_shared/getFormatFromContentType-DCTTPQHm.js +1 -0
- package/dist/packem_shared/has-content-50BsqrWw.js +1 -0
- package/dist/packem_shared/headers-BAiAKekR.js +26 -0
- package/dist/packem_shared/hetzner-BGGFiRGD.js +1 -0
- package/dist/packem_shared/ibmCos-j-3TfJ5p.js +1 -0
- package/dist/packem_shared/idriveE2-C6pQ5pQ0.js +1 -0
- package/dist/packem_shared/index-nZWCQrSe.js +5 -0
- package/dist/packem_shared/internal-D_cZIFwI.js +1 -0
- package/dist/packem_shared/is-expired-CBEk6XBi.js +1 -0
- package/dist/packem_shared/local-meta-storage-C2T92TYb.js +11 -0
- package/dist/packem_shared/local-meta-storage.d-D9PBfkn6.d.ts +21 -0
- package/dist/packem_shared/media-transformer.d-Quf4ai47.d.ts +331 -0
- package/dist/packem_shared/memory-storage.d-4EU1cMt1.d.ts +101 -0
- package/dist/packem_shared/minio-NKquuBfS.js +1 -0
- package/dist/packem_shared/multipart-base-BOzY19lb.js +1 -0
- package/dist/packem_shared/oauth-refresh-EdGzlcOZ.js +1 -0
- package/dist/packem_shared/oracleCloud-DslqNpn6.js +1 -0
- package/dist/packem_shared/ovhCloud-CMHE6uLV.js +1 -0
- package/dist/packem_shared/part-match-D-9dGX42.js +1 -0
- package/dist/packem_shared/path-0oTTdkvl-BVg7lYf5.js +1 -0
- package/dist/packem_shared/posix-dirname-CfpH5wZi.js +1 -0
- package/dist/packem_shared/response-builder-CbSA8qPa.js +1 -0
- package/dist/packem_shared/rest-base-CynUg0mH.js +1 -0
- package/dist/packem_shared/restOpenApiSpec-Csv513qf.js +1 -0
- package/dist/packem_shared/s3-base-storage-DXZYN24h.js +1 -0
- package/dist/packem_shared/s3-base-storage.d-BQgP5B-t.d.ts +287 -0
- package/dist/packem_shared/scaleway-U1In3v70.js +1 -0
- package/dist/packem_shared/sharedErrorSchemaObject-YN65aAKj.js +1 -0
- package/dist/packem_shared/storage-Cyy73Y6r.js +1 -0
- package/dist/packem_shared/storage.d-CEM1upWM.d.ts +1176 -0
- package/dist/packem_shared/storj-Cb59q9kF.js +1 -0
- package/dist/packem_shared/sync-DhR3536K.js +1 -0
- package/dist/packem_shared/tencent-Q1y2GENc.js +1 -0
- package/dist/packem_shared/tigris-BELKoyyp.js +1 -0
- package/dist/packem_shared/transformOpenApiSpec-CIEAgpBD.js +1 -0
- package/dist/packem_shared/tus-base.d-DLzKE54M.d.ts +106 -0
- package/dist/packem_shared/tusOpenApiSpec-D96B03t5.js +1 -0
- package/dist/packem_shared/types.d-Bon9GVVe.d.ts +104 -0
- package/dist/packem_shared/types.d-CggTCgXr.d.ts +49 -0
- package/dist/packem_shared/types.d-CrUWY4On.d.ts +720 -0
- package/dist/packem_shared/update-size-DuNuLyxj.js +1 -0
- package/dist/packem_shared/vultr-B491cQ4e.js +1 -0
- package/dist/packem_shared/waitForStorage-ByQmG4xF.js +1 -0
- package/dist/packem_shared/wasabi-DFrwIoab.js +1 -0
- package/dist/packem_shared/xhrOpenApiSpec-DQR4h6M8.js +1 -0
- package/dist/packem_shared/yandex-CwzHuEKP.js +1 -0
- package/dist/storage/aws/clients/index.d.ts +612 -6
- package/dist/storage/aws/clients/index.js +1 -6
- package/dist/storage/aws/index.d.ts +332 -4
- package/dist/storage/aws/index.js +1 -3
- package/dist/storage/aws-light/index.d.ts +259 -4
- package/dist/storage/aws-light/index.js +1 -3
- package/dist/storage/azure/index.d.ts +236 -4
- package/dist/storage/azure/index.js +1 -3
- package/dist/storage/box/index.d.ts +189 -0
- package/dist/storage/box/index.js +1 -0
- package/dist/storage/bun-s3/index.d.ts +200 -0
- package/dist/storage/bun-s3/index.js +1 -0
- package/dist/storage/bunny/index.d.ts +119 -0
- package/dist/storage/bunny/index.js +1 -0
- package/dist/storage/cloudinary/index.d.ts +121 -0
- package/dist/storage/cloudinary/index.js +1 -0
- package/dist/storage/dropbox/index.d.ts +132 -0
- package/dist/storage/dropbox/index.js +1 -0
- package/dist/storage/firebase/index.d.ts +192 -0
- package/dist/storage/firebase/index.js +1 -0
- package/dist/storage/ftp/index.d.ts +91 -0
- package/dist/storage/ftp/index.js +1 -0
- package/dist/storage/gcs/index.d.ts +195 -5
- package/dist/storage/gcs/index.js +1 -4
- package/dist/storage/google-drive/index.d.ts +148 -0
- package/dist/storage/google-drive/index.js +1 -0
- package/dist/storage/local/index.d.ts +7 -4
- package/dist/storage/local/index.js +1 -3
- package/dist/storage/memory/index.d.ts +6 -0
- package/dist/storage/memory/index.js +1 -0
- package/dist/storage/netlify-blob/index.d.ts +147 -4
- package/dist/storage/netlify-blob/index.js +1 -3
- package/dist/storage/onedrive/index.d.ts +103 -0
- package/dist/storage/onedrive/index.js +1 -0
- package/dist/storage/pocketbase/index.d.ts +172 -0
- package/dist/storage/pocketbase/index.js +1 -0
- package/dist/storage/sftp/index.d.ts +92 -0
- package/dist/storage/sftp/index.js +1 -0
- package/dist/storage/sharepoint/index.d.ts +180 -0
- package/dist/storage/sharepoint/index.js +1 -0
- package/dist/storage/supabase/index.d.ts +115 -0
- package/dist/storage/supabase/index.js +1 -0
- package/dist/storage/uploadthing/index.d.ts +95 -0
- package/dist/storage/uploadthing/index.js +1 -0
- package/dist/storage/vercel-blob/index.d.ts +189 -4
- package/dist/storage/vercel-blob/index.js +1 -3
- package/dist/transformer/audio-transformer.d.ts +127 -125
- package/dist/transformer/audio-transformer.js +1 -278
- package/dist/transformer/image-transformer.d.ts +573 -568
- package/dist/transformer/image-transformer.js +1 -1100
- package/dist/transformer/index.d.ts +62 -5
- package/dist/transformer/index.js +1 -4
- package/dist/transformer/video-transformer.d.ts +144 -142
- package/dist/transformer/video-transformer.js +1 -310
- package/package.json +202 -51
- package/dist/handler/base/base-handler-core.d.ts +0 -91
- package/dist/handler/base/base-handler-fetch.d.ts +0 -76
- package/dist/handler/base/base-handler-node.d.ts +0 -137
- package/dist/handler/multipart/multipart-base.d.ts +0 -84
- package/dist/handler/multipart/multipart-fetch.d.ts +0 -64
- package/dist/handler/multipart/multipart.d.ts +0 -49
- package/dist/handler/rest/rest-base.d.ts +0 -106
- package/dist/handler/rest/rest-fetch.d.ts +0 -88
- package/dist/handler/rest/rest.d.ts +0 -93
- package/dist/handler/tus/tus-base.d.ts +0 -152
- package/dist/handler/tus/tus-fetch.d.ts +0 -72
- package/dist/handler/tus/tus.d.ts +0 -78
- package/dist/handler/types.d.ts +0 -53
- package/dist/handler/utils/request-parser.d.ts +0 -72
- package/dist/handler/utils/response-builder.d.ts +0 -83
- package/dist/handler/utils/storage-utils.d.ts +0 -10
- package/dist/handler/utils/stream-utils.d.ts +0 -29
- package/dist/handler/utils/upload-handlers.d.ts +0 -76
- package/dist/metrics/index.d.ts +0 -2
- package/dist/metrics/no-op-metrics.d.ts +0 -15
- package/dist/metrics/opentelemetry-metrics.d.ts +0 -55
- package/dist/openapi/rest.d.ts +0 -7
- package/dist/openapi/shared.d.ts +0 -13
- package/dist/openapi/transform.d.ts +0 -3
- package/dist/openapi/tus.d.ts +0 -7
- package/dist/openapi/xhr.d.ts +0 -7
- package/dist/packem_shared/AwsLightFile-tTneXZgG.js +0 -11
- package/dist/packem_shared/AwsLightMetaStorage-BWSOtVaN.js +0 -4
- package/dist/packem_shared/AwsLightStorage-Blv-GP4v.js +0 -133
- package/dist/packem_shared/AzureFile-CesgFzps.js +0 -8
- package/dist/packem_shared/AzureSMetaStorage-CFs-OYJT.js +0 -88
- package/dist/packem_shared/AzureStorage-B0v048hG.js +0 -357
- package/dist/packem_shared/BaseTransformer-C2gLib6v.js +0 -82
- package/dist/packem_shared/DiskStorage-Ck5yGQsq.js +0 -12
- package/dist/packem_shared/DiskStorageWithChecksum-BRl-V5x2.js +0 -238
- package/dist/packem_shared/ERRORS-D0apMqnc.js +0 -97
- package/dist/packem_shared/File-Bb3P23dr.js +0 -69
- package/dist/packem_shared/GCSConfig-vPP22kN6.js +0 -11
- package/dist/packem_shared/GCSFile-BIEunhAN.js +0 -8
- package/dist/packem_shared/GCSMetaStorage-CHZKMe7N.js +0 -7
- package/dist/packem_shared/GCStorage-C-gAuP0j.js +0 -406
- package/dist/packem_shared/LocalMetaStorage-CZHhKkMd.js +0 -7
- package/dist/packem_shared/MediaTransformer-D6658DL1.js +0 -1197
- package/dist/packem_shared/MetaStorage-pECeFOad.js +0 -46
- package/dist/packem_shared/Metadata-DRLXeJ0F.js +0 -89
- package/dist/packem_shared/Multipart-CRV21AUU.js +0 -128
- package/dist/packem_shared/Multipart-D2ryPMjD.js +0 -163
- package/dist/packem_shared/NetlifyBlobFile-CXzyjqrD.js +0 -14
- package/dist/packem_shared/NetlifyBlobMetaStorage-DxZ5aDvD.js +0 -9
- package/dist/packem_shared/NetlifyBlobStorage-CLPtjHqd.js +0 -376
- package/dist/packem_shared/NoOpMetrics-DhAk5rXc.js +0 -10
- package/dist/packem_shared/OpenTelemetryMetrics-BnxhqIaH.js +0 -67
- package/dist/packem_shared/Rest-DcxBMBjU.js +0 -228
- package/dist/packem_shared/Rest-DjwU3puo.js +0 -267
- package/dist/packem_shared/S3File-DZiyk9Qt.js +0 -11
- package/dist/packem_shared/S3MetaStorage-Dz9aDabA.js +0 -76
- package/dist/packem_shared/S3Storage-DHmTk-hU.js +0 -316
- package/dist/packem_shared/TUS_RESUMABLE-Dtfsffnj.js +0 -434
- package/dist/packem_shared/Tus-DFVlZHaX.js +0 -200
- package/dist/packem_shared/Tus-DaN0FmOy.js +0 -195
- package/dist/packem_shared/ValidationError-BfF1aE4h.js +0 -26
- package/dist/packem_shared/VercelBlobFile-BCg4aTEq.js +0 -18
- package/dist/packem_shared/VercelBlobMetaStorage-Bd9F-VFm.js +0 -9
- package/dist/packem_shared/VercelBlobStorage-DD9LMOS6.js +0 -261
- package/dist/packem_shared/_commonjsHelpers-BqLXS_qQ.js +0 -5
- package/dist/packem_shared/aws-light-meta-storage-DKJBgbR6.js +0 -446
- package/dist/packem_shared/backblaze-BlMnIcBC.js +0 -20
- package/dist/packem_shared/base-handler-core-BoAqTyz7.js +0 -303
- package/dist/packem_shared/base-handler-fetch-D4u2xits.js +0 -291
- package/dist/packem_shared/base-handler-node-DGzcHHAy.js +0 -730
- package/dist/packem_shared/cache-B88MXQ_2.js +0 -18
- package/dist/packem_shared/cloudflare-Bi1q8wXE.js +0 -21
- package/dist/packem_shared/defaultCloudStorageFileNameValidation-DUuacjWv.js +0 -11
- package/dist/packem_shared/digitalOcean-CWQRJM3L.js +0 -21
- package/dist/packem_shared/disk-storage-CD47QI30.js +0 -810
- package/dist/packem_shared/gcs-meta-storage-CJ8Uts_d.js +0 -158
- package/dist/packem_shared/has-content-CY66ehMK.js +0 -3
- package/dist/packem_shared/headers-YLRp1dLo.js +0 -1318
- package/dist/packem_shared/is-expired-CTThU1q5.js +0 -8
- package/dist/packem_shared/isRetryableError-Dycp7127.js +0 -82
- package/dist/packem_shared/isValidMediaType-BeDgiObq.js +0 -35
- package/dist/packem_shared/local-meta-storage-By-3SNBI.js +0 -649
- package/dist/packem_shared/minio-C2YBZQOw.js +0 -22
- package/dist/packem_shared/multipart-base-C994naBi.js +0 -102
- package/dist/packem_shared/part-match-BMNqHDYD.js +0 -96
- package/dist/packem_shared/path-CR6YkPXX-7R1-9CMk.js +0 -161
- package/dist/packem_shared/response-builder-BtnRiBUI.js +0 -45
- package/dist/packem_shared/rest-base-D9URIFkc.js +0 -457
- package/dist/packem_shared/restOpenApiSpec-D1JC_Jto.js +0 -800
- package/dist/packem_shared/s3-base-storage-C1DIHTYY.js +0 -510
- package/dist/packem_shared/sharedGet-Cpo7QUyu.js +0 -1019
- package/dist/packem_shared/storage-C6NSXb8h.js +0 -1175
- package/dist/packem_shared/tigris-Hac8TKnX.js +0 -21
- package/dist/packem_shared/transformOpenApiSpec-DWM5WtnN.js +0 -975
- package/dist/packem_shared/tusOpenApiSpec-mBZkl7he.js +0 -740
- package/dist/packem_shared/update-size-CCGm6i1J.js +0 -8
- package/dist/packem_shared/validator-BeX_lJet.js +0 -78
- package/dist/packem_shared/waitForStorage-Cscw85sx.js +0 -18
- package/dist/packem_shared/wasabi-DIyflHSd.js +0 -21
- package/dist/packem_shared/xhrOpenApiSpec-B1V5Dxrj.js +0 -264
- package/dist/storage/aws/clients/backblaze.d.ts +0 -12
- package/dist/storage/aws/clients/cloudflare.d.ts +0 -13
- package/dist/storage/aws/clients/digital-ocean.d.ts +0 -12
- package/dist/storage/aws/clients/minio.d.ts +0 -13
- package/dist/storage/aws/clients/tigris.d.ts +0 -12
- package/dist/storage/aws/clients/types.d.ts +0 -95
- package/dist/storage/aws/clients/wasabi.d.ts +0 -12
- package/dist/storage/aws/s3-base-storage.d.ts +0 -248
- package/dist/storage/aws/s3-client-adapter.d.ts +0 -110
- package/dist/storage/aws/s3-file.d.ts +0 -10
- package/dist/storage/aws/s3-meta-storage.d.ts +0 -15
- package/dist/storage/aws/s3-storage.d.ts +0 -70
- package/dist/storage/aws/types.d.ts +0 -119
- package/dist/storage/aws-light/aws-light-api-adapter.d.ts +0 -130
- package/dist/storage/aws-light/aws-light-file.d.ts +0 -10
- package/dist/storage/aws-light/aws-light-meta-storage.d.ts +0 -19
- package/dist/storage/aws-light/aws-light-storage.d.ts +0 -65
- package/dist/storage/aws-light/types.d.ts +0 -37
- package/dist/storage/azure/azure-file.d.ts +0 -6
- package/dist/storage/azure/azure-meta-storage.d.ts +0 -15
- package/dist/storage/azure/azure-storage.d.ts +0 -69
- package/dist/storage/azure/types.d.ts +0 -62
- package/dist/storage/gcs/fetch-error.d.ts +0 -11
- package/dist/storage/gcs/gcs-config.d.ts +0 -2
- package/dist/storage/gcs/gcs-file.d.ts +0 -6
- package/dist/storage/gcs/gcs-meta-storage.d.ts +0 -27
- package/dist/storage/gcs/gcs-storage.d.ts +0 -91
- package/dist/storage/gcs/types.d.ts +0 -55
- package/dist/storage/gcs/utils.d.ts +0 -7
- package/dist/storage/local/disk-storage-with-checksum.d.ts +0 -15
- package/dist/storage/local/disk-storage.d.ts +0 -135
- package/dist/storage/local/local-meta-storage.d.ts +0 -32
- package/dist/storage/meta-storage.d.ts +0 -30
- package/dist/storage/netlify-blob/netlify-blob-file.d.ts +0 -12
- package/dist/storage/netlify-blob/netlify-blob-meta-storage.d.ts +0 -7
- package/dist/storage/netlify-blob/netlify-blob-storage.d.ts +0 -93
- package/dist/storage/netlify-blob/types.d.ts +0 -30
- package/dist/storage/storage.d.ts +0 -353
- package/dist/storage/types.d.ts +0 -221
- package/dist/storage/utils/file/file.d.ts +0 -25
- package/dist/storage/utils/file/get-file-status.d.ts +0 -9
- package/dist/storage/utils/file/has-content.d.ts +0 -9
- package/dist/storage/utils/file/index.d.ts +0 -10
- package/dist/storage/utils/file/is-expired.d.ts +0 -8
- package/dist/storage/utils/file/metadata.d.ts +0 -18
- package/dist/storage/utils/file/part-match.d.ts +0 -11
- package/dist/storage/utils/file/types.d.ts +0 -37
- package/dist/storage/utils/file/update-metadata.d.ts +0 -10
- package/dist/storage/utils/file/update-size.d.ts +0 -10
- package/dist/storage/vercel-blob/types.d.ts +0 -32
- package/dist/storage/vercel-blob/vercel-blob-file.d.ts +0 -16
- package/dist/storage/vercel-blob/vercel-blob-meta-storage.d.ts +0 -7
- package/dist/storage/vercel-blob/vercel-blob-storage.d.ts +0 -76
- package/dist/transformer/base-transformer.d.ts +0 -63
- package/dist/transformer/media-transformer.d.ts +0 -332
- package/dist/transformer/types.d.ts +0 -652
- package/dist/transformer/utils.d.ts +0 -33
- package/dist/transformer/validation-error.d.ts +0 -23
- package/dist/utils/cache.d.ts +0 -32
- package/dist/utils/chunked-upload.d.ts +0 -65
- package/dist/utils/detect-file-type.d.ts +0 -28
- package/dist/utils/errors.d.ts +0 -74
- package/dist/utils/file-path-url-matcher.d.ts +0 -18
- package/dist/utils/headers.d.ts +0 -111
- package/dist/utils/http.d.ts +0 -92
- package/dist/utils/locker.d.ts +0 -26
- package/dist/utils/pipes/stream-checksum.d.ts +0 -47
- package/dist/utils/pipes/stream-length.d.ts +0 -22
- package/dist/utils/primitives/get-last-one.d.ts +0 -3
- package/dist/utils/primitives/is-record.d.ts +0 -2
- package/dist/utils/primitives/map-values.d.ts +0 -9
- package/dist/utils/primitives/pick.d.ts +0 -2
- package/dist/utils/primitives/to-milliseconds.d.ts +0 -12
- package/dist/utils/primitives/to-seconds.d.ts +0 -12
- package/dist/utils/range-checksum.d.ts +0 -33
- package/dist/utils/range-hasher.d.ts +0 -46
- package/dist/utils/retry.d.ts +0 -64
- package/dist/utils/types.d.ts +0 -108
- package/dist/utils/validation-error.d.ts +0 -22
- package/dist/utils/validator.d.ts +0 -36
|
@@ -1,278 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import BaseTransformer from '../packem_shared/BaseTransformer-C2gLib6v.js';
|
|
3
|
-
import { isValidMediaType, getFormatFromContentType } from '../packem_shared/isValidMediaType-BeDgiObq.js';
|
|
4
|
-
|
|
5
|
-
class AudioTransformer extends BaseTransformer {
|
|
6
|
-
/**
|
|
7
|
-
* Creates a new AudioTransformer instance.
|
|
8
|
-
* @param storage The storage backend for retrieving and storing audio files.
|
|
9
|
-
* @param config Configuration options for audio transformation including cache settings, codec defaults, and size limits.
|
|
10
|
-
*/
|
|
11
|
-
constructor(storage, config = {}) {
|
|
12
|
-
const logger = config.logger || storage.logger;
|
|
13
|
-
const transformerConfig = {
|
|
14
|
-
cacheTtl: 3600,
|
|
15
|
-
// 1 hour
|
|
16
|
-
defaultBitrate: 128e3,
|
|
17
|
-
// 128 kbps
|
|
18
|
-
defaultCodec: "aac",
|
|
19
|
-
maxAudioSize: 100 * 1024 * 1024,
|
|
20
|
-
// 100MB
|
|
21
|
-
maxCacheSize: 100,
|
|
22
|
-
// Max 100 transformed audio files in cache
|
|
23
|
-
supportedFormats: ["mp3", "wav", "ogg", "aac", "flac", "m4a", "wma", "aiff"],
|
|
24
|
-
...config
|
|
25
|
-
};
|
|
26
|
-
super(storage, transformerConfig, logger);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Resamples audio to different sample rate.
|
|
30
|
-
* @param fileId Unique identifier of the audio file to resample.
|
|
31
|
-
* @param options Resample options including target sample rate.
|
|
32
|
-
* @returns Promise resolving to transformed audio result.
|
|
33
|
-
*/
|
|
34
|
-
async resample(fileId, options) {
|
|
35
|
-
return this.transform(fileId, [{ options, type: "resample" }]);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Changes number of channels (up/downmixing).
|
|
39
|
-
* @param fileId Unique identifier of the audio file to process.
|
|
40
|
-
* @param options Channel mix options including target number of channels.
|
|
41
|
-
* @returns Promise resolving to transformed audio result.
|
|
42
|
-
*/
|
|
43
|
-
async mixChannels(fileId, options) {
|
|
44
|
-
return this.transform(fileId, [{ options, type: "channels" }]);
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Converts audio format or codec.
|
|
48
|
-
* @param fileId Unique identifier of the audio file to convert.
|
|
49
|
-
* @param format Target audio format (e.g., "mp3", "wav", "ogg").
|
|
50
|
-
* @param options Additional transform options.
|
|
51
|
-
* @returns Promise resolving to transformed audio result.
|
|
52
|
-
*/
|
|
53
|
-
async convertFormat(fileId, format, options = {}) {
|
|
54
|
-
return this.transform(fileId, [{ options: { ...options, format }, type: "format" }]);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Transcodes audio to different codec.
|
|
58
|
-
* @param fileId Unique identifier of the audio file to transcode.
|
|
59
|
-
* @param codec Target audio codec (e.g., "aac", "opus", "mp3").
|
|
60
|
-
* @param options Additional transform options.
|
|
61
|
-
* @returns Promise resolving to transformed audio result.
|
|
62
|
-
*/
|
|
63
|
-
async transcode(fileId, codec, options = {}) {
|
|
64
|
-
return this.transform(fileId, [{ options: { ...options, codec }, type: "codec" }]);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Applies a custom transformation pipeline to an audio file.
|
|
68
|
-
* @param fileId Unique identifier of the audio file to transform.
|
|
69
|
-
* @param steps Array of transformation steps to apply in sequence.
|
|
70
|
-
* @returns Promise resolving to transformed audio result.
|
|
71
|
-
*/
|
|
72
|
-
async transform(fileId, steps) {
|
|
73
|
-
const fileQuery = { id: fileId };
|
|
74
|
-
const cacheKey = this.generateCacheKey(fileId, steps);
|
|
75
|
-
if (this.cache) {
|
|
76
|
-
const cached = await Promise.resolve(this.cache.get(cacheKey));
|
|
77
|
-
if (cached) {
|
|
78
|
-
this.logger?.debug("Returning cached transformed audio for %s", fileId);
|
|
79
|
-
return cached;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
const originalFile = await this.storage.get(fileQuery);
|
|
83
|
-
await this.validateAudio(originalFile);
|
|
84
|
-
const transformedBuffer = await this.applyTransformations(originalFile.content, steps);
|
|
85
|
-
const result = await this.createTransformResult(transformedBuffer, originalFile);
|
|
86
|
-
if (this.cache) {
|
|
87
|
-
this.cache.set(cacheKey, result);
|
|
88
|
-
}
|
|
89
|
-
return result;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Apply multiple transformations in sequence using Mediabunny
|
|
93
|
-
*/
|
|
94
|
-
async applyTransformations(buffer, steps) {
|
|
95
|
-
const input = new Input({
|
|
96
|
-
formats: ALL_FORMATS,
|
|
97
|
-
source: new BufferSource(buffer)
|
|
98
|
-
});
|
|
99
|
-
const outputFormat = this.determineOutputFormat(steps);
|
|
100
|
-
const output = new Output({
|
|
101
|
-
format: outputFormat,
|
|
102
|
-
target: new BufferTarget()
|
|
103
|
-
});
|
|
104
|
-
const audioOptions = this.stepsToAudioOptions(steps);
|
|
105
|
-
const conversion = await Conversion.init({
|
|
106
|
-
audio: audioOptions,
|
|
107
|
-
input,
|
|
108
|
-
output
|
|
109
|
-
});
|
|
110
|
-
if (!conversion.isValid) {
|
|
111
|
-
const reasons = conversion.discardedTracks.map((track) => track.reason).join(", ");
|
|
112
|
-
throw new Error(`Audio transformation failed: ${reasons}`);
|
|
113
|
-
}
|
|
114
|
-
await conversion.execute();
|
|
115
|
-
return Buffer.from(output.target.buffer);
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Convert transformation steps to Mediabunny audio options
|
|
119
|
-
* @param steps Array of audio transformation steps to convert
|
|
120
|
-
* @returns Mediabunny audio options object for conversion
|
|
121
|
-
* @private
|
|
122
|
-
*/
|
|
123
|
-
// eslint-disable-next-line class-methods-use-this
|
|
124
|
-
stepsToAudioOptions(steps) {
|
|
125
|
-
const options = {};
|
|
126
|
-
for (const step of steps) {
|
|
127
|
-
switch (step.type) {
|
|
128
|
-
case "bitrate": {
|
|
129
|
-
const bitrateOptions = step.options;
|
|
130
|
-
if (bitrateOptions.bitrate) {
|
|
131
|
-
options.bitrate = bitrateOptions.bitrate;
|
|
132
|
-
}
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
case "channels": {
|
|
136
|
-
const channelOptions = step.options;
|
|
137
|
-
if (channelOptions.numberOfChannels) {
|
|
138
|
-
options.numberOfChannels = channelOptions.numberOfChannels;
|
|
139
|
-
}
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
case "codec": {
|
|
143
|
-
const codecOptions = step.options;
|
|
144
|
-
if (codecOptions.codec) {
|
|
145
|
-
options.codec = codecOptions.codec;
|
|
146
|
-
}
|
|
147
|
-
if (codecOptions.bitrate) {
|
|
148
|
-
options.bitrate = codecOptions.bitrate;
|
|
149
|
-
}
|
|
150
|
-
break;
|
|
151
|
-
}
|
|
152
|
-
case "resample": {
|
|
153
|
-
const resampleOptions = step.options;
|
|
154
|
-
if (resampleOptions.sampleRate) {
|
|
155
|
-
options.sampleRate = resampleOptions.sampleRate;
|
|
156
|
-
}
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return options;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Determine output format based on transformation steps
|
|
165
|
-
* @param steps Array of audio transformation steps
|
|
166
|
-
* @returns Mediabunny output format instance (defaults to MP3)
|
|
167
|
-
* @private
|
|
168
|
-
*/
|
|
169
|
-
determineOutputFormat(steps) {
|
|
170
|
-
for (const step of steps) {
|
|
171
|
-
if (step.type === "format" && step.options.format) {
|
|
172
|
-
return this.formatStringToOutputFormat(step.options.format);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
return new Mp3OutputFormat();
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Convert format string to Mediabunny output format
|
|
179
|
-
* @param format Audio format string (aac, flac, mp3, ogg, wav)
|
|
180
|
-
* @returns Mediabunny output format instance
|
|
181
|
-
* @private
|
|
182
|
-
*/
|
|
183
|
-
// eslint-disable-next-line class-methods-use-this
|
|
184
|
-
formatStringToOutputFormat(format) {
|
|
185
|
-
switch (format.toLowerCase()) {
|
|
186
|
-
case "aac": {
|
|
187
|
-
return new AdtsOutputFormat();
|
|
188
|
-
}
|
|
189
|
-
case "flac": {
|
|
190
|
-
return new FlacOutputFormat();
|
|
191
|
-
}
|
|
192
|
-
case "mp3": {
|
|
193
|
-
return new Mp3OutputFormat();
|
|
194
|
-
}
|
|
195
|
-
case "ogg": {
|
|
196
|
-
return new OggOutputFormat();
|
|
197
|
-
}
|
|
198
|
-
case "wav": {
|
|
199
|
-
return new WavOutputFormat();
|
|
200
|
-
}
|
|
201
|
-
default: {
|
|
202
|
-
return new Mp3OutputFormat();
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Validate that the file is a supported audio file
|
|
208
|
-
* @param file The file to validate
|
|
209
|
-
* @returns Promise that resolves if validation passes
|
|
210
|
-
* @throws Error if file size exceeds limits, wrong content type, unsupported format, or invalid audio
|
|
211
|
-
* @private
|
|
212
|
-
*/
|
|
213
|
-
async validateAudio(file) {
|
|
214
|
-
const fileSize = typeof file.size === "string" ? Number.parseInt(file.size, 10) : file.size;
|
|
215
|
-
if (this.config?.maxAudioSize && fileSize > this.config.maxAudioSize) {
|
|
216
|
-
throw new Error(`Audio size ${fileSize} exceeds maximum allowed size ${this.config.maxAudioSize}`);
|
|
217
|
-
}
|
|
218
|
-
if (!isValidMediaType(file.contentType, "audio")) {
|
|
219
|
-
throw new Error(`File is not audio: ${file.contentType}`);
|
|
220
|
-
}
|
|
221
|
-
const format = getFormatFromContentType(file.contentType);
|
|
222
|
-
if (this.config?.supportedFormats && format && !this.config.supportedFormats.includes(format)) {
|
|
223
|
-
throw new Error(`Unsupported audio format: ${format}`);
|
|
224
|
-
}
|
|
225
|
-
try {
|
|
226
|
-
const input = new Input({
|
|
227
|
-
formats: ALL_FORMATS,
|
|
228
|
-
source: new BufferSource(file.content)
|
|
229
|
-
});
|
|
230
|
-
const primaryTrack = await input.getPrimaryAudioTrack();
|
|
231
|
-
if (!primaryTrack) {
|
|
232
|
-
throw new Error("No audio track found");
|
|
233
|
-
}
|
|
234
|
-
} catch (error) {
|
|
235
|
-
throw new Error(`Invalid audio file: ${error}`);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Create transformation result with metadata
|
|
240
|
-
* @param buffer The transformed audio buffer
|
|
241
|
-
* @param originalFile The original file information
|
|
242
|
-
* @returns Audio transformation result with metadata
|
|
243
|
-
* @private
|
|
244
|
-
*/
|
|
245
|
-
async createTransformResult(buffer, originalFile) {
|
|
246
|
-
const input = new Input({
|
|
247
|
-
formats: ALL_FORMATS,
|
|
248
|
-
source: new BufferSource(buffer)
|
|
249
|
-
});
|
|
250
|
-
const audioTrack = await input.getPrimaryAudioTrack();
|
|
251
|
-
const duration = await input.computeDuration();
|
|
252
|
-
return {
|
|
253
|
-
bitrate: this.config.defaultBitrate,
|
|
254
|
-
buffer,
|
|
255
|
-
duration,
|
|
256
|
-
format: "mp3",
|
|
257
|
-
// Default, would need to detect actual format
|
|
258
|
-
numberOfChannels: audioTrack?.numberOfChannels || 2,
|
|
259
|
-
originalFile,
|
|
260
|
-
sampleRate: audioTrack?.sampleRate || 44100,
|
|
261
|
-
size: buffer.length
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Generate cache key for transformation
|
|
266
|
-
* @param fileId The file identifier
|
|
267
|
-
* @param steps Array of transformation steps
|
|
268
|
-
* @returns Unique cache key string
|
|
269
|
-
* @private
|
|
270
|
-
*/
|
|
271
|
-
// eslint-disable-next-line class-methods-use-this
|
|
272
|
-
generateCacheKey(fileId, steps) {
|
|
273
|
-
const stepsKey = steps.map((step) => `${step.type}:${JSON.stringify(step.options)}`).join("|");
|
|
274
|
-
return `${fileId}:${stepsKey}`;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
export { AudioTransformer as default };
|
|
1
|
+
import{Input as c,BufferSource as u,ALL_FORMATS as m,Output as d,BufferTarget as h,Conversion as l,Mp3OutputFormat as f,WavOutputFormat as w,OggOutputFormat as g,FlacOutputFormat as y,AdtsOutputFormat as b}from"mediabunny";import O from"../packem_shared/BaseTransformer-Buw5lX_3.js";import{isValidMediaType as F,getFormatFromContentType as T}from"../packem_shared/getFormatFromContentType-DCTTPQHm.js";class R extends O{constructor(t,e={}){const a=e.logger||t.logger,r={cacheTtl:3600,defaultBitrate:128e3,defaultCodec:"aac",maxAudioSize:100*1024*1024,maxCacheSize:100,supportedFormats:["mp3","wav","ogg","aac","flac","m4a","wma","aiff"],...e};super(t,r,a)}async resample(t,e){return this.transform(t,[{options:e,type:"resample"}])}async mixChannels(t,e){return this.transform(t,[{options:e,type:"channels"}])}async convertFormat(t,e,a={}){return this.transform(t,[{options:{...a,format:e},type:"format"}])}async transcode(t,e,a={}){return this.transform(t,[{options:{...a,codec:e},type:"codec"}])}async transform(t,e){const a={id:t},r=this.generateCacheKey(t,e);if(this.cache){const s=await Promise.resolve(this.cache.get(r));if(s)return this.logger?.debug("Returning cached transformed audio for %s",t),s}const o=await this.storage.get(a);await this.validateAudio(o);const i=await this.applyTransformations(o.content,e),n=await this.createTransformResult(i,o);return this.cache&&this.cache.set(r,n),n}async applyTransformations(t,e){const a=new c({formats:m,source:new u(t)}),r=this.determineOutputFormat(e),o=new d({format:r,target:new h}),i=this.stepsToAudioOptions(e),n=await l.init({audio:i,input:a,output:o});if(!n.isValid){const s=n.discardedTracks.map(p=>p.reason).join(", ");throw new Error(`Audio transformation failed: ${s}`)}return await n.execute(),Buffer.from(o.target.buffer)}stepsToAudioOptions(t){const e={};for(const a of t)switch(a.type){case"bitrate":{const r=a.options;r.bitrate&&(e.bitrate=r.bitrate);break}case"channels":{const r=a.options;r.numberOfChannels&&(e.numberOfChannels=r.numberOfChannels);break}case"codec":{const r=a.options;r.codec&&(e.codec=r.codec),r.bitrate&&(e.bitrate=r.bitrate);break}case"resample":{const r=a.options;r.sampleRate&&(e.sampleRate=r.sampleRate);break}}return e}determineOutputFormat(t){for(const e of t)if(e.type==="format"&&e.options.format)return this.formatStringToOutputFormat(e.options.format);return new f}formatStringToOutputFormat(t){switch(t.toLowerCase()){case"aac":return new b;case"flac":return new y;case"mp3":return new f;case"ogg":return new g;case"wav":return new w;default:return new f}}async validateAudio(t){const e=typeof t.size=="string"?Number.parseInt(t.size,10):t.size;if(this.config?.maxAudioSize&&e>this.config.maxAudioSize)throw new Error(`Audio size ${e} exceeds maximum allowed size ${this.config.maxAudioSize}`);if(!F(t.contentType,"audio"))throw new Error(`File is not audio: ${t.contentType}`);const a=T(t.contentType);if(this.config?.supportedFormats&&a&&!this.config.supportedFormats.includes(a))throw new Error(`Unsupported audio format: ${a}`);try{if(!await new c({formats:m,source:new u(t.content)}).getPrimaryAudioTrack())throw new Error("No audio track found")}catch(r){throw new Error(`Invalid audio file: ${r}`)}}async createTransformResult(t,e){const a=new c({formats:m,source:new u(t)}),r=await a.getPrimaryAudioTrack(),o=await a.computeDuration();return{bitrate:this.config.defaultBitrate,buffer:t,duration:o,format:"mp3",numberOfChannels:r?.numberOfChannels||2,originalFile:e,sampleRate:r?.sampleRate||44100,size:t.length}}generateCacheKey(t,e){const a=e.map(r=>`${r.type}:${JSON.stringify(r.options)}`).join("|");return`${t}:${a}`}}export{R as default};
|