UNPKG

cnpmjs.org

Version:

Private npm registry and web for Enterprise, base on MySQL and Simple Store Service

139 lines (110 loc) 6.63 kB
'use strict'; var limit = require('../middleware/limit'); var login = require('../middleware/login'); var publishable = require('../middleware/publishable'); var syncByInstall = require('../middleware/sync_by_install'); var editable = require('../middleware/editable'); var existsPackage = require('../middleware/exists_package'); var unpublishable = require('../middleware/unpublishable'); var showTotal = require('../controllers/total'); var listAll = require('../controllers/registry/package/list_all'); var listShorts = require('../controllers/registry/package/list_shorts'); var listSince = require('../controllers/registry/package/list_since'); var listAllVersions = require('../controllers/registry/package/list'); var listDependents = require('../controllers/registry/package/list_dependents'); var getOneVersion = require('../controllers/registry/package/show'); var savePackage = require('../controllers/registry/package/save'); var tag = require('../controllers/registry/package/tag'); var removePackage = require('../controllers/registry/package/remove'); var removeOneVersion = require('../controllers/registry/package/remove_version'); var updatePackage = require('../controllers/registry/package/update'); var downloadPackage = require('../controllers/registry/package/download'); var downloadTotal = require('../controllers/registry/package/download_total'); var listPackagesByUser = require('../controllers/registry/package/list_by_user'); var addUser = require('../controllers/registry/user/add'); var showUser = require('../controllers/registry/user/show'); var updateUser = require('../controllers/registry/user/update'); var sync = require('../controllers/sync'); var userPackage = require('../controllers/registry/user_package'); var tags = require('../controllers/registry/package/dist_tag'); function routes(app) { function* jsonp(next) { yield* next; if (this.body) { this.jsonp = this.body; } } app.get('/', jsonp, showTotal); // before /:name/:version // get all modules, for npm search app.get('/-/all', listAll); app.get('/-/all/since', listSince); // get all module names, for auto completion app.get('/-/short', listShorts); // module // scope package: params: [$name] app.get(/^\/(@[\w\-\.]+\/[^\/]+)$/, syncByInstall, listAllVersions); // scope package: params: [$name, $version] app.get(/^\/(@[\w\-\.]+\/[\w\-\.]+)\/([^\/]+)$/, syncByInstall, getOneVersion); app.get('/:name', syncByInstall, listAllVersions); app.get('/:name/:version', syncByInstall, getOneVersion); // try to add module app.put(/^\/(@[\w\-\.]+\/[\w\-\.]+)$/, login, publishable, savePackage); app.put('/:name', login, publishable, savePackage); // sync from source npm app.put(/^\/(@[\w\-\.]+\/[\w\-\.]+)\/sync$/, sync.sync); app.put('/:name/sync', sync.sync); app.get(/^\/(@[\w\-\.]+\/[\w\-\.]+)\/sync\/log\/(\d+)$/, sync.getSyncLog); app.get('/:name/sync/log/:id', sync.getSyncLog); // add tag app.put(/^\/(@[\w\-\.]+\/[\w\-\.]+)\/([\w\-\.]+)$/, login, editable, tag); app.put('/:name/:tag', login, editable, tag); // need limit by ip app.get(/^\/(@[\w\-\.]+\/[\w\-\.]+)\/download\/(@[\w\-\.]+\/[\w\-\.]+)$/, limit, downloadPackage); app.get('/:name/download/:filename', limit, downloadPackage); app.get(/^\/(@[\w\-\.]+\/[\w\-\.]+)\/\-\/(@[\w\-\.]+\/[\w\-\.]+)$/, limit, downloadPackage); app.get('/:name/-/:filename', limit, downloadPackage); // delete tarball and remove one version app.delete(/^\/(@[\w\-\.]+\/[\w\-\.]+)\/download\/(@[\w\-\.]+\/[\w\-\.]+)\/\-rev\/([\w\-\.]+)$/, login, unpublishable, removeOneVersion); app.delete('/:name/download/:filename/-rev/:rev', login, unpublishable, removeOneVersion); // update module, unpublish will PUT this app.put(/^\/(@[\w\-\.]+\/[\w\-\.]+)\/\-rev\/([\w\-\.]+)$/, login, publishable, editable, updatePackage); app.put('/:name/-rev/:rev', login, publishable, editable, updatePackage); // remove all versions app.delete(/^\/(@[\w\-\.]+\/[\w\-\.]+)\/\-rev\/([\w\-\.]+)$/, login, unpublishable, removePackage); app.delete('/:name/-rev/:rev', login, unpublishable, removePackage); // try to create a new user // https://registry.npmjs.org/-/user/org.couchdb.user:fengmk2 app.put('/-/user/org.couchdb.user::name', addUser); app.get('/-/user/org.couchdb.user::name', showUser); app.put('/-/user/org.couchdb.user::name/-rev/:rev', login, updateUser); // list all packages of user app.get('/-/by-user/:user', userPackage.list); app.get('/-/users/:user/packages', listPackagesByUser); // download times app.get('/downloads/range/:range/:name', downloadTotal); app.get(/^\/downloads\/range\/([^\/]+)\/(@[\w\-\.]+\/[\w\-\.]+)$/, downloadTotal); app.get('/downloads/range/:range', downloadTotal); // GET /-/package/:pkg/dependents app.get('/-/package/:name/dependents', existsPackage, listDependents); app.get(/^\/\-\/package\/(@[\w\-\.]+\/[\w\-\.]+)\/dependents$/, existsPackage, listDependents); // GET /-/package/:pkg/dist-tags -- returns the package's dist-tags app.get('/-/package/:name/dist-tags', existsPackage, tags.index); app.get(/^\/\-\/package\/(@[\w\-\.]+\/[\w\-\.]+)\/dist\-tags$/, existsPackage, tags.index); // PUT /-/package/:pkg/dist-tags -- Set package's dist-tags to provided object body (removing missing) app.put('/-/package/:name/dist-tags', login, existsPackage, editable, tags.save); app.put(/^\/\-\/package\/(@[\w\-\.]+\/[\w\-\.]+)\/dist\-tags$/, login, existsPackage, editable, tags.save); // POST /-/package/:pkg/dist-tags -- Add/modify dist-tags from provided object body (merge) app.post('/-/package/:name/dist-tags', login, existsPackage, editable, tags.update); app.post(/^\/\-\/package\/(@[\w\-\.]+\/[\w\-\.]+)\/dist\-tags$/, login, existsPackage, editable, tags.update); // PUT /-/package/:pkg/dist-tags/:tag -- Set package's dist-tags[tag] to provided string body app.put('/-/package/:name/dist-tags/:tag', login, existsPackage, editable, tags.set); app.put(/^\/\-\/package\/(@[\w\-\.]+\/[\w\-\.]+)\/dist\-tags\/([\w\-\.]+)$/, login, existsPackage, editable, tags.set); // POST /-/package/:pkg/dist-tags/:tag -- Same as PUT /-/package/:pkg/dist-tags/:tag app.post('/-/package/:name/dist-tags/:tag', login, existsPackage, editable, tags.set); // DELETE /-/package/:pkg/dist-tags/:tag -- Remove tag from dist-tags app.delete('/-/package/:name/dist-tags/:tag', login, existsPackage, editable, tags.destroy); app.delete(/^\/\-\/package\/(@[\w\-\.]+\/[\w\-\.]+)\/dist\-tags\/([\w\-\.]+)$/, login, existsPackage, editable, tags.destroy); } module.exports = routes;