This is an automated email from the ASF dual-hosted git repository.

glynnbird pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb-nano.git


The following commit(s) were added to refs/heads/main by this push:
     new 53dea92  always return a Buffer from attachment.get. Fixes issue #373 
(#374)
53dea92 is described below

commit 53dea923e589e4a3125ecead625cfe2e0cbed606
Author: Glynn Bird <[email protected]>
AuthorDate: Fri Aug 21 13:58:19 2026 +0100

    always return a Buffer from attachment.get. Fixes issue #373 (#374)
    
    Co-authored-by: Glynn Bird <[email protected]>
---
 lib/nano.js                 |  2 +-
 package-lock.json           | 10 +++++-----
 package.json                |  2 +-
 test/attachment.get.test.js | 15 +++++++++++++++
 4 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/lib/nano.js b/lib/nano.js
index d0a3c4b..25c59be 100644
--- a/lib/nano.js
+++ b/lib/nano.js
@@ -148,7 +148,7 @@ module.exports = exports = function dbScope (cfg) {
       // when doing head requests, we return the response headers, not the 
response body
       if (req.method === 'head') {
         retval = Object.fromEntries(response.headers)
-      } else if (contentType && contentType.startsWith('application/json')) {
+      } else if (contentType && contentType.startsWith('application/json') && 
!opts.dontParse) {
         try {
           retval = await response.json()
         } catch {
diff --git a/package-lock.json b/package-lock.json
index 88ed01d..a61fa28 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "nano",
-  "version": "11.0.6",
+  "version": "11.0.7",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "nano",
-      "version": "11.0.6",
+      "version": "11.0.7",
       "license": "Apache-2.0",
       "devDependencies": {
         "@types/node": "^26.1.0",
@@ -42,9 +42,9 @@
       }
     },
     "node_modules/undici": {
-      "version": "7.28.0",
-      "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz";,
-      "integrity": 
"sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==",
+      "version": "7.29.0",
+      "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz";,
+      "integrity": 
"sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==",
       "dev": true,
       "license": "MIT",
       "engines": {
diff --git a/package.json b/package.json
index f9818f2..2239e29 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
   "license": "Apache-2.0",
   "homepage": "http://github.com/apache/couchdb-nano";,
   "repository": "http://github.com/apache/couchdb-nano";,
-  "version": "11.0.6",
+  "version": "11.0.7",
   "author": "Apache CouchDB <[email protected]> 
(http://couchdb.apache.org)",
   "keywords": [
     "couchdb",
diff --git a/test/attachment.get.test.js b/test/attachment.get.test.js
index fcb70c4..7e10968 100644
--- a/test/attachment.get.test.js
+++ b/test/attachment.get.test.js
@@ -43,6 +43,21 @@ test('should be able to get an attachment with opts - GET 
/db/id/attname - db.at
   mockAgent.assertNoPendingInterceptors()
 })
 
+test('should be able to get a JSON attachment as a buffer - GET /db/id/attname 
- db.attachment.get', async () => {
+  // mocks
+  const json = JSON.stringify({ foo: 'bar' })
+  mockPool
+    .intercept({ path: '/db/id/att.json' })
+    .reply(200, json, { headers: { 'content-type': 'application/json' } })
+
+  // test GET /db/id/attname
+  const db = nano.db.use('db')
+  const p = await db.attachment.get('id', 'att.json')
+  assert(Buffer.isBuffer(p), 'JSON attachment should be a buffer')
+  assert.equal(p.toString(), json)
+  mockAgent.assertNoPendingInterceptors()
+})
+
 test('should detect missing parameters - db.attachment.get', async () => {
   const db = nano.db.use('db')
   await assert.rejects(db.attachment.get(), { message: 'Invalid parameters' })

Reply via email to