Skip to content
This repository was archived by the owner on Aug 11, 2021. It is now read-only.

Commit d9b16d1

Browse files
Thomas HallockThomas Hallock
authored andcommitted
using clone because JSON.parse(JSON.stringify(...)) errors when given undefined
1 parent 690d62c commit d9b16d1

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

lib/publish.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var assert = require('assert')
77
var fixer = require('normalize-package-data').fixer
88
var concat = require('concat-stream')
99
var ssri = require('ssri')
10+
var clone = require('clone')
1011

1112
function escaped (name) {
1213
return name.replace('/', '%2f')
@@ -75,7 +76,7 @@ function putFirst (registry, data, tarbuffer, access, auth, cb) {
7576

7677
if (!auth.token) {
7778
root.maintainers = [{ name: auth.username, email: auth.email }]
78-
data.maintainers = JSON.parse(JSON.stringify(root.maintainers))
79+
data.maintainers = clone(root.maintainers)
7980
}
8081

8182
root.versions[ data.version ] = data
@@ -173,8 +174,7 @@ function putNext (registry, newVersion, root, current, auth, cb) {
173174
current[i] = root[i]
174175
}
175176
}
176-
var maint = JSON.parse(JSON.stringify(root.maintainers))
177-
root.versions[newVersion].maintainers = maint
177+
root.versions[newVersion].maintainers = clone(root.maintainers)
178178

179179
var uri = url.resolve(registry, escaped(root.name))
180180
var options = {

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"index.js"
1616
],
1717
"dependencies": {
18+
"clone": "^1.0.2",
1819
"concat-stream": "^1.5.2",
1920
"graceful-fs": "^4.1.6",
2021
"normalize-package-data": "~1.0.1 || ^2.0.0",

test/publish.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ var ssri = require('ssri')
88
var server = require('./lib/server.js')
99
var common = require('./lib/common.js')
1010
var client = common.freshClient()
11+
var clone = require('clone')
1112

1213
function nop () {}
1314

@@ -145,7 +146,7 @@ test('publish call contract', function (t) {
145146
)
146147

147148
t.test('malformed semver in publish', function (t) {
148-
var metadata = JSON.parse(JSON.stringify(METADATA))
149+
var metadata = clone(METADATA)
149150
metadata.version = '%!@#$'
150151
var params = {
151152
metadata: metadata,

0 commit comments

Comments
 (0)