diff --git a/.changeset/small-pillows-hug.md b/.changeset/small-pillows-hug.md new file mode 100644 index 00000000..a5eebe29 --- /dev/null +++ b/.changeset/small-pillows-hug.md @@ -0,0 +1,5 @@ +--- +"@tus/azure-store": patch +--- + +Fix metadata parsing bug diff --git a/packages/azure-store/src/index.ts b/packages/azure-store/src/index.ts index c80ecd5f..f0385e96 100644 --- a/packages/azure-store/src/index.ts +++ b/packages/azure-store/src/index.ts @@ -117,7 +117,15 @@ export class AzureStore extends DataStore { const upload = JSON.parse(propertyData.metadata.upload) as Upload // Metadata is base64 encoded to avoid errors for non-ASCII characters // so we need to decode it separately - upload.metadata = Metadata.parse(JSON.stringify(upload.metadata ?? {})) + let metadataStr + if (typeof upload.metadata === 'string') { + metadataStr = upload.metadata + } else if (upload.metadata && typeof upload.metadata === 'object') { + metadataStr = JSON.stringify(upload.metadata ?? {}) + } else { + metadataStr = '{}' + } + upload.metadata = Metadata.parse(metadataStr) await this.cache.set(appendBlobClient.url, upload)