Skip to content
This repository was archived by the owner on Jan 19, 2022. It is now read-only.

Commit 1732154

Browse files
Michael Perrottemikemimik
Michael Perrotte
authored andcommittedMar 2, 2020
fix: pull-request feedback; read full commit message
- Reworked promise wrapping - Added else-if block - Fixed object cloning of options
1 parent df9cf82 commit 1732154

File tree

1 file changed

+88
-111
lines changed

1 file changed

+88
-111
lines changed
 

‎index.js

+88-111
Original file line numberDiff line numberDiff line change
@@ -28,90 +28,70 @@ const cmd = module.exports = {}
2828
cmd.public = (spec, opts) => setAccess(spec, 'public', opts)
2929
cmd.restricted = (spec, opts) => setAccess(spec, 'restricted', opts)
3030
function setAccess (spec, access, opts = {}) {
31-
return new Promise((resolve, reject) => {
32-
try {
33-
spec = npar(spec)
34-
validate('OSO', [spec, access, opts])
35-
const uri = `/-/package/${eu(spec.name)}/access`
36-
return npmFetch(uri, {
37-
...opts,
38-
method: 'POST',
39-
body: { access },
40-
spec
41-
})
42-
.then(() => resolve(true))
43-
.catch(reject)
44-
} catch (err) {
45-
return reject(err)
46-
}
31+
return Promise.resolve().then(() => {
32+
spec = npar(spec)
33+
validate('OSO', [spec, access, opts])
34+
const uri = `/-/package/${eu(spec.name)}/access`
35+
return npmFetch(uri, {
36+
...opts,
37+
method: 'POST',
38+
body: { access },
39+
spec
40+
}).then(() => true)
4741
})
4842
}
4943

5044
cmd.grant = (spec, entity, permissions, opts = {}) => {
51-
return new Promise((resolve, reject) => {
52-
try {
53-
spec = npar(spec)
54-
const { scope, team } = splitEntity(entity)
55-
validate('OSSSO', [spec, scope, team, permissions, opts])
56-
if (permissions !== 'read-write' && permissions !== 'read-only') {
57-
throw new Error('`permissions` must be `read-write` or `read-only`. Got `' + permissions + '` instead')
58-
}
59-
const uri = `/-/team/${eu(scope)}/${eu(team)}/package`
60-
return npmFetch(uri, {
61-
...opts,
62-
method: 'PUT',
63-
body: { package: spec.name, permissions },
64-
scope,
65-
spec,
66-
ignoreBody: true
67-
})
68-
.then(() => resolve(true))
69-
.catch(reject)
70-
} catch (err) {
71-
return reject(err)
45+
return Promise.resolve().then(() => {
46+
spec = npar(spec)
47+
const { scope, team } = splitEntity(entity)
48+
validate('OSSSO', [spec, scope, team, permissions, opts])
49+
if (permissions !== 'read-write' && permissions !== 'read-only') {
50+
throw new Error('`permissions` must be `read-write` or `read-only`. Got `' + permissions + '` instead')
7251
}
52+
const uri = `/-/team/${eu(scope)}/${eu(team)}/package`
53+
return npmFetch(uri, {
54+
...opts,
55+
method: 'PUT',
56+
body: { package: spec.name, permissions },
57+
scope,
58+
spec,
59+
ignoreBody: true
60+
})
61+
.then(() => true)
7362
})
7463
}
7564

7665
cmd.revoke = (spec, entity, opts = {}) => {
77-
return new Promise((resolve, reject) => {
78-
try {
79-
spec = npar(spec)
80-
const { scope, team } = splitEntity(entity)
81-
validate('OSSO', [spec, scope, team, opts])
82-
const uri = `/-/team/${eu(scope)}/${eu(team)}/package`
83-
return npmFetch(uri, {
84-
...opts,
85-
method: 'DELETE',
86-
body: { package: spec.name },
87-
scope,
88-
spec,
89-
ignoreBody: true
90-
})
91-
.then(() => resolve(true))
92-
.catch(reject)
93-
} catch (err) {
94-
return reject(err)
95-
}
66+
return Promise.resolve().then(() => {
67+
spec = npar(spec)
68+
const { scope, team } = splitEntity(entity)
69+
validate('OSSO', [spec, scope, team, opts])
70+
const uri = `/-/team/${eu(scope)}/${eu(team)}/package`
71+
return npmFetch(uri, {
72+
...opts,
73+
method: 'DELETE',
74+
body: { package: spec.name },
75+
scope,
76+
spec,
77+
ignoreBody: true
78+
})
79+
.then(() => true)
9680
})
9781
}
9882

9983
cmd.lsPackages = (entity, opts) => {
100-
return new Promise((resolve, reject) => {
101-
return cmd.lsPackages.stream(entity, opts)
102-
.collect()
103-
.then(data => {
104-
const packageList = data.reduce((acc, [key, val]) => {
105-
if (!acc) {
106-
acc = {}
107-
}
108-
acc[key] = val
109-
return acc
110-
}, null)
111-
return resolve(packageList)
112-
})
113-
.catch(reject)
114-
})
84+
return cmd.lsPackages.stream(entity, opts)
85+
.collect()
86+
.then(data => {
87+
return data.reduce((acc, [key, val]) => {
88+
if (!acc) {
89+
acc = {}
90+
}
91+
acc[key] = val
92+
return acc
93+
}, null)
94+
})
11595
}
11696

11797
cmd.lsPackages.stream = (entity, opts = {}) => {
@@ -123,77 +103,74 @@ cmd.lsPackages.stream = (entity, opts = {}) => {
123103
} else {
124104
uri = `/-/org/${eu(scope)}/package`
125105
}
126-
opts.query = { format: 'cli' }
127-
opts.mapJSON = mapJSON
106+
const nextOpts = {
107+
...opts,
108+
query: { format: 'cli' },
109+
mapJSON
110+
}
128111
const ret = new Minipass({ objectMode: true })
129-
npmFetch.json.stream(uri, '*', opts).on('error', err => {
130-
if (err.code === 'E404' && !team) {
131-
uri = `/-/user/${eu(scope)}/package`
132-
npmFetch.json.stream(uri, '*', opts).on(
133-
'error', err => ret.emit('error', err)
134-
).pipe(ret)
135-
} else {
136-
ret.emit('error', err)
137-
}
138-
}).pipe(ret)
112+
npmFetch.json.stream(uri, '*', nextOpts)
113+
.on('error', err => {
114+
if (err.code === 'E404' && !team) {
115+
uri = `/-/user/${eu(scope)}/package`
116+
npmFetch.json.stream(uri, '*', nextOpts)
117+
.on('error', err => ret.emit('error', err))
118+
.pipe(ret)
119+
} else {
120+
ret.emit('error', err)
121+
}
122+
})
123+
.pipe(ret)
139124
return ret
140125
}
141126

142127
cmd.lsCollaborators = (spec, user, opts) => {
143-
if (typeof user === 'object' && !opts) {
144-
opts = user
145-
user = undefined
146-
}
147-
return new Promise((resolve, reject) => {
128+
return Promise.resolve().then(() => {
148129
return cmd.lsCollaborators.stream(spec, user, opts)
149130
.collect()
150131
.then(data => {
151-
const collabList = data.reduce((acc, [key, val]) => {
132+
return data.reduce((acc, [key, val]) => {
152133
if (!acc) {
153134
acc = {}
154135
}
155136
acc[key] = val
156137
return acc
157138
}, null)
158-
return resolve(collabList)
159139
})
160-
.catch(reject)
161140
})
162141
}
163142

164143
cmd.lsCollaborators.stream = (spec, user, opts) => {
165144
if (typeof user === 'object' && !opts) {
166145
opts = user
167146
user = undefined
147+
} else if (!opts) {
148+
opts = {}
168149
}
169150
spec = npar(spec)
170151
validate('OSO|OZO', [spec, user, opts])
171152
const uri = `/-/package/${eu(spec.name)}/collaborators`
172-
opts.query = { format: 'cli', user: user || undefined }
173-
opts.mapJSON = mapJSON
174-
return npmFetch.json.stream(uri, '*', opts)
153+
return npmFetch.json.stream(uri, '*', {
154+
...opts,
155+
query: { format: 'cli', user: user || undefined },
156+
mapJSON
157+
})
175158
}
176159

177160
cmd.tfaRequired = (spec, opts) => setRequires2fa(spec, true, opts)
178161
cmd.tfaNotRequired = (spec, opts) => setRequires2fa(spec, false, opts)
179162
function setRequires2fa (spec, required, opts = {}) {
180-
return new Promise((resolve, reject) => {
181-
try {
182-
spec = npar(spec)
183-
validate('OBO', [spec, required, opts])
184-
const uri = `/-/package/${eu(spec.name)}/access`
185-
return npmFetch(uri, {
186-
...opts,
187-
method: 'POST',
188-
body: { publish_requires_tfa: required },
189-
spec,
190-
ignoreBody: true
191-
})
192-
.then(() => resolve(true))
193-
.catch(reject)
194-
} catch (err) {
195-
return reject(err)
196-
}
163+
return Promise.resolve().then(() => {
164+
spec = npar(spec)
165+
validate('OBO', [spec, required, opts])
166+
const uri = `/-/package/${eu(spec.name)}/access`
167+
return npmFetch(uri, {
168+
...opts,
169+
method: 'POST',
170+
body: { publish_requires_tfa: required },
171+
spec,
172+
ignoreBody: true
173+
}).then(() => true)
197174
})
198175
}
199176

0 commit comments

Comments
 (0)
This repository has been archived.