%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict' const eu = encodeURIComponent const fetch = require('npm-registry-fetch') const validate = require('aproba') // From https://github.com/npm/registry/blob/master/docs/orgs/memberships.md const cmd = module.exports class MembershipDetail {} cmd.set = (org, user, role, opts = {}) => { if ( typeof role === 'object' && Object.keys(opts).length === 0 ) { opts = role role = undefined } validate('SSSO|SSZO', [org, user, role, opts]) user = user.replace(/^@?/, '') org = org.replace(/^@?/, '') return fetch.json(`/-/org/${eu(org)}/user`, { ...opts, method: 'PUT', body: { user, role }, }).then(ret => Object.assign(new MembershipDetail(), ret)) } cmd.rm = (org, user, opts = {}) => { validate('SSO', [org, user, opts]) user = user.replace(/^@?/, '') org = org.replace(/^@?/, '') return fetch(`/-/org/${eu(org)}/user`, { ...opts, method: 'DELETE', body: { user }, ignoreBody: true, }).then(() => null) } class Roster {} cmd.ls = (org, opts = {}) => { return cmd.ls.stream(org, opts) .collect() .then(data => data.reduce((acc, [key, val]) => { if (!acc) { acc = {} } acc[key] = val return acc }, null)) .then(ret => Object.assign(new Roster(), ret)) } cmd.ls.stream = (org, opts = {}) => { validate('SO', [org, opts]) org = org.replace(/^@?/, '') return fetch.json.stream(`/-/org/${eu(org)}/user`, '*', { ...opts, mapJSON: (value, [key]) => { return [key, value] }, }) }