| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 'use strict'
- const fetch = require('npm-registry-fetch')
- const figgyPudding = require('figgy-pudding')
- const getStream = require('get-stream')
- const validate = require('aproba')
- const HooksConfig = figgyPudding({
- package: {},
- limit: {},
- offset: {},
- Promise: {default: () => Promise}
- })
- const eu = encodeURIComponent
- const cmd = module.exports = {}
- cmd.add = (name, endpoint, secret, opts) => {
- opts = HooksConfig(opts)
- validate('SSSO', [name, endpoint, secret, opts])
- let type = 'package'
- if (name.match(/^@[^/]+$/)) {
- type = 'scope'
- }
- if (name[0] === '~') {
- type = 'owner'
- name = name.substr(1)
- }
- return fetch.json('/-/npm/v1/hooks/hook', opts.concat({
- method: 'POST',
- body: { type, name, endpoint, secret }
- }))
- }
- cmd.rm = (id, opts) => {
- opts = HooksConfig(opts)
- validate('SO', [id, opts])
- return fetch.json(`/-/npm/v1/hooks/hook/${eu(id)}`, opts.concat({
- method: 'DELETE'
- }, opts)).catch(err => {
- if (err.code === 'E404') {
- return null
- } else {
- throw err
- }
- })
- }
- cmd.update = (id, endpoint, secret, opts) => {
- opts = HooksConfig(opts)
- validate('SSSO', [id, endpoint, secret, opts])
- return fetch.json(`/-/npm/v1/hooks/hook/${eu(id)}`, opts.concat({
- method: 'PUT',
- body: {endpoint, secret}
- }, opts))
- }
- cmd.find = (id, opts) => {
- opts = HooksConfig(opts)
- validate('SO', [id, opts])
- return fetch.json(`/-/npm/v1/hooks/hook/${eu(id)}`, opts)
- }
- cmd.ls = (opts) => {
- return getStream.array(cmd.ls.stream(opts))
- }
- cmd.ls.stream = (opts) => {
- opts = HooksConfig(opts)
- const {package: pkg, limit, offset} = opts
- validate('S|Z', [pkg])
- validate('N|Z', [limit])
- validate('N|Z', [offset])
- return fetch.json.stream('/-/npm/v1/hooks', 'objects.*', opts.concat({
- query: {
- package: pkg,
- limit,
- offset
- }
- }))
- }
|