@verdaccio/api 6.0.0-6-next.16 → 6.0.0-6-next.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +91 -0
- package/build/dist-tags.d.ts +1 -1
- package/build/dist-tags.js +3 -3
- package/build/dist-tags.js.map +1 -1
- package/build/index.js +12 -12
- package/build/index.js.map +1 -1
- package/build/package.d.ts +1 -2
- package/build/package.js +28 -61
- package/build/package.js.map +1 -1
- package/build/ping.js.map +1 -1
- package/build/publish.d.ts +2 -2
- package/build/publish.js +10 -16
- package/build/publish.js.map +1 -1
- package/build/star.d.ts +1 -1
- package/build/star.js +6 -12
- package/build/star.js.map +1 -1
- package/build/stars.js.map +1 -1
- package/build/user.d.ts +1 -1
- package/build/user.js +5 -5
- package/build/user.js.map +1 -1
- package/build/utils.js.map +1 -1
- package/build/v1/profile.js.map +1 -1
- package/build/v1/search.js +3 -3
- package/build/v1/search.js.map +1 -1
- package/build/v1/token.d.ts +1 -1
- package/build/v1/token.js +6 -12
- package/build/v1/token.js.map +1 -1
- package/build/whoami.js.map +1 -1
- package/package.json +17 -19
- package/src/dist-tags.ts +7 -6
- package/src/index.ts +12 -11
- package/src/package.ts +38 -57
- package/src/ping.ts +2 -1
- package/src/publish.ts +10 -10
- package/src/star.ts +4 -3
- package/src/stars.ts +4 -4
- package/src/user.ts +8 -8
- package/src/utils.ts +2 -1
- package/src/v1/profile.ts +4 -3
- package/src/v1/search.ts +3 -2
- package/src/v1/token.ts +8 -7
- package/src/whoami.ts +3 -2
- package/test/integration/_helper.ts +7 -6
- package/test/integration/package.spec.ts +3 -2
- package/test/integration/ping.spec.ts +2 -1
- package/test/integration/publish.spec.ts +5 -3
- package/test/integration/user.spec.ts +4 -4
- package/test/unit/publish.spec.ts +4 -3
- package/test/unit/validate.api.params.middleware.spec.ts +1 -1
- package/types/custom.d.ts +2 -1
package/build/publish.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/publish.ts"],"names":["debug","publish","router","auth","storage","config","can","put","mime","getType","expectJson","publishPackage","delete","unPublishPackage","removeTarball","HEADERS","OCTET_STREAM","uploadPackageTarball","addVersion","starApi","req","res","next","packageName","params","package","createTarball","filename","data","cb","stream","addTarball","on","err","message","end","Buffer","from","done","createVersion","version","metadata","addTags","tags","mergeTags","afterChange","error","okMessage","metadataCopy","_attachments","versions","_","isNil","JSON","stringify","status","HTTP_STATUS","CREATED","ok","success","isInvalidBodyFormat","logger","info","errorUtils","getBadRequest","API_ERROR","UNSUPORTED_REGISTRY_CALL","CONFLICT","firstAttachmentKey","Object","keys","Path","basename","versionToPublish","readme","String","DIST_TAGS","remote_user","name","body","users","_rev","remote","allow_unpublish","changePackage","revision","API_MESSAGE","PKG_CHANGED","addPackage","PKG_CREATED","getBadData","BAD_PACKAGE_DATA","removePackage","PKG_REMOVED","TARBALL_REMOVED","tag","PKG_PUBLISHED","pipe","complete","abort","locals","report_error","TARBALL_UPLOADED"],"mappings":"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","sourcesContent":["import Path from 'path';\nimport _ from 'lodash';\nimport mime from 'mime';\nimport { Router } from 'express';\nimport buildDebug from 'debug';\n\nimport {\n API_MESSAGE,\n HEADERS,\n DIST_TAGS,\n API_ERROR,\n HTTP_STATUS,\n errorUtils,\n} from '@verdaccio/core';\nimport { validateMetadata, isObject, hasDiffOneKey } from '@verdaccio/utils';\nimport { media, expectJson, allow } from '@verdaccio/middleware';\nimport { notify } from '@verdaccio/hooks';\nimport { Config, Callback, MergeTags, Version, Package, CallbackAction } from '@verdaccio/types';\nimport { logger } from '@verdaccio/logger';\nimport { IAuth } from '@verdaccio/auth';\nimport { Storage } from '@verdaccio/store';\nimport { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '../types/custom';\n\nimport star from './star';\nimport { isPublishablePackage, isRelatedToDeprecation } from './utils';\n\nconst debug = buildDebug('verdaccio:api:publish');\n\nexport default function publish(\n router: Router,\n auth: IAuth,\n storage: Storage,\n config: Config\n): void {\n const can = allow(auth);\n\n /**\n * Publish a package / update package / un/start a package\n *\n * There are multiples scenarios here to be considered:\n *\n * 1. Publish scenario\n *\n * Publish a package consist of at least 1 step (PUT) with a metadata payload.\n * When a package is published, an _attachment property is present that contains the data\n * of the tarball.\n *\n * Example flow of publish.\n *\n * npm http fetch PUT 201 http://localhost:4873/@scope%2ftest1 9627ms\n npm info lifecycle @scope/test1@1.0.1~publish: @scope/test1@1.0.1\n npm info lifecycle @scope/test1@1.0.1~postpublish: @scope/test1@1.0.1\n + @scope/test1@1.0.1\n npm verb exit [ 0, true ]\n *\n *\n * 2. Unpublish scenario\n *\n * Unpublish consist in 3 steps.\n * 1. Try to fetch metadata -> if it fails, return 404\n * 2. Compute metadata locally (client side) and send a mutate payload excluding the version to\n * be unpublished\n * eg: if metadata reflects 1.0.1, 1.0.2 and 1.0.3, the computed metadata won't include 1.0.3.\n * 3. Once the second step has been successfully finished, delete the tarball.\n *\n * All these steps are consecutive and required, there is no transacions here, if step 3 fails,\n * metadata might get corrupted.\n *\n * Note the unpublish call will suffix in the url a /-rev/14-5d500cfce92f90fd revision number,\n * this not\n * used internally.\n *\n *\n * Example flow of unpublish.\n *\n * npm http fetch GET 200 http://localhost:4873/@scope%2ftest1?write=true 1680ms\n * npm http fetch PUT 201 http://localhost:4873/@scope%2ftest1/-rev/14-5d500cfce92f90fd\n * 956606ms attempt #2\n * npm http fetch GET 200 http://localhost:4873/@scope%2ftest1?write=true 1601ms\n * npm http fetch DELETE 201 http://localhost:4873/@scope%2ftest1/-/test1-1.0.3.tgz/-rev/16\n * -e11c8db282b2d992 19ms\n *\n * 3. Star a package\n *\n * Permissions: start a package depends of the publish and unpublish permissions, there is no\n * specific flag for star or un start.\n * The URL for star is similar to the unpublish (change package format)\n *\n * npm has no enpoint for star a package, rather mutate the metadata and acts as, the difference\n * is the users property which is part of the payload and the body only includes\n *\n * {\n\t\t \"_id\": pkgName,\n\t \t\"_rev\": \"3-b0cdaefc9bdb77c8\",\n\t\t \"users\": {\n\t\t [username]: boolean value (true, false)\n\t\t }\n\t}\n *\n */\n router.put(\n '/:package/:_rev?/:revision?',\n can('publish'),\n media(mime.getType('json')),\n expectJson,\n publishPackage(storage, config, auth)\n );\n\n /**\n * Un-publishing an entire package.\n *\n * This scenario happens when the first call detect there is only one version remaining\n * in the metadata, then the client decides to DELETE the resource\n * npm http fetch GET 304 http://localhost:4873/@scope%2ftest1?write=true 1076ms (from cache)\n npm http fetch DELETE 201 http://localhost:4873/@scope%2ftest1/-rev/18-d8ebe3020bd4ac9c 22ms\n */\n router.delete('/:package/-rev/*', can('unpublish'), unPublishPackage(storage));\n\n // removing a tarball\n router.delete(\n '/:package/-/:filename/-rev/:revision',\n can('unpublish'),\n can('publish'),\n removeTarball(storage)\n );\n\n // uploading package tarball\n router.put(\n '/:package/-/:filename/*',\n can('publish'),\n media(HEADERS.OCTET_STREAM),\n uploadPackageTarball(storage)\n );\n\n // adding a version\n router.put(\n '/:package/:version/-tag/:tag',\n can('publish'),\n media(mime.getType('json')),\n expectJson,\n addVersion(storage)\n );\n}\n\n/**\n * Publish a package\n */\nexport function publishPackage(storage: Storage, config: Config, auth: IAuth): any {\n const starApi = star(storage);\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n\n debug('publishing or updating a new version for %o', packageName);\n\n /**\n * Write tarball of stream data from package clients.\n */\n const createTarball = function (filename: string, data, cb: Callback): void {\n const stream = storage.addTarball(packageName, filename);\n stream.on('error', function (err) {\n debug(\n 'error on stream a tarball %o for %o with error %o',\n filename,\n packageName,\n err.message\n );\n cb(err);\n });\n stream.on('success', function () {\n debug('success on stream a tarball %o for %o', filename, packageName);\n cb();\n });\n // this is dumb and memory-consuming, but what choices do we have?\n // flow: we need first refactor this file before decides which type use here\n stream.end(Buffer.from(data.data, 'base64'));\n stream.done();\n };\n\n /**\n * Add new package version in storage\n */\n const createVersion = function (version: string, metadata: Version, cb: CallbackAction): void {\n debug('add a new package version %o to storage %o', version, metadata);\n storage.addVersion(packageName, version, metadata, null, cb);\n };\n\n /**\n * Add new tags in storage\n */\n const addTags = function (tags: MergeTags, cb: CallbackAction): void {\n debug('add new tag %o to storage', packageName);\n storage.mergeTags(packageName, tags, cb);\n };\n\n const afterChange = function (error, okMessage, metadata: Package): void {\n const metadataCopy: Package = { ...metadata };\n debug('after change metadata %o', metadata);\n\n const { _attachments, versions } = metadataCopy;\n\n // `npm star` wouldn't have attachments\n // and `npm deprecate` would have attachments as a empty object, i.e {}\n if (_.isNil(_attachments) || JSON.stringify(_attachments) === '{}') {\n debug('no attachments detected');\n if (error) {\n debug('no_attachments: after change error with %o', error.message);\n return next(error);\n }\n\n debug('no_attachments: after change success');\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: okMessage,\n success: true,\n });\n }\n\n /**\n * npm-registry-client 0.3+ embeds tarball into the json upload\n * issue https://github.com/rlidwka/sinopia/issues/31, dealing with it here:\n */\n\n const isInvalidBodyFormat =\n isObject(_attachments) === false ||\n hasDiffOneKey(_attachments) ||\n isObject(versions) === false ||\n hasDiffOneKey(versions);\n\n if (isInvalidBodyFormat) {\n // npm is doing something strange again\n // if this happens in normal circumstances, report it as a bug\n debug('invalid body format');\n logger.info({ packageName }, `wrong package format on publish a package @{packageName}`);\n return next(errorUtils.getBadRequest(API_ERROR.UNSUPORTED_REGISTRY_CALL));\n }\n\n if (error && error.status !== HTTP_STATUS.CONFLICT) {\n debug('error on change or update a package with %o', error.message);\n return next(error);\n }\n\n // at this point document is either created or existed before\n const [firstAttachmentKey] = Object.keys(_attachments);\n\n createTarball(\n Path.basename(firstAttachmentKey),\n _attachments[firstAttachmentKey],\n function (error) {\n debug('creating a tarball %o', firstAttachmentKey);\n if (error) {\n debug('error on create a tarball for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n const versionToPublish = Object.keys(versions)[0];\n\n versions[versionToPublish].readme =\n _.isNil(metadataCopy.readme) === false ? String(metadataCopy.readme) : '';\n\n createVersion(versionToPublish, versions[versionToPublish], function (error) {\n if (error) {\n debug('error on create a version for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n addTags(metadataCopy[DIST_TAGS], async function (error) {\n if (error) {\n debug('error on create a tag for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n try {\n await notify(\n metadataCopy,\n config,\n req.remote_user,\n `${metadataCopy.name}@${versionToPublish}`\n );\n } catch (error: any) {\n debug(\n 'error on notify add a new tag %o',\n `${metadataCopy.name}@${versionToPublish}`\n );\n logger.error({ error }, 'notify batch service has failed: @{error}');\n }\n\n debug('add a tag succesfully for %o', `${metadataCopy.name}@${versionToPublish}`);\n res.status(HTTP_STATUS.CREATED);\n return next({ ok: okMessage, success: true });\n });\n });\n }\n );\n };\n\n if (isPublishablePackage(req.body) === false && isObject(req.body.users)) {\n debug('starting star a package');\n return starApi(req, res, next);\n }\n\n try {\n debug('pre validation metadata to publish %o', req.body);\n const metadata = validateMetadata(req.body, packageName);\n debug('post validation metadata to publish %o', metadata);\n // treating deprecation as updating a package\n if (req.params._rev || isRelatedToDeprecation(req.body)) {\n debug('updating a new version for %o', packageName);\n // we check unpublish permissions, an update is basically remove versions\n const remote = req.remote_user;\n auth.allow_unpublish({ packageName }, remote, (error) => {\n debug('allowed to unpublish a package %o', packageName);\n if (error) {\n debug('not allowed to unpublish a version for %o', packageName);\n return next(error);\n }\n\n debug('update a package');\n storage.changePackage(packageName, metadata, req.params.revision, function (error) {\n afterChange(error, API_MESSAGE.PKG_CHANGED, metadata);\n });\n });\n } else {\n debug('adding a new version for the package %o', packageName);\n storage.addPackage(packageName, metadata, function (error) {\n debug('package metadata updated %o', metadata);\n afterChange(error, API_MESSAGE.PKG_CREATED, metadata);\n });\n }\n } catch (error: any) {\n debug('error on publish, bad package format %o', packageName);\n logger.error({ packageName }, 'error on publish, bad package data for @{packageName}');\n return next(errorUtils.getBadData(API_ERROR.BAD_PACKAGE_DATA));\n }\n };\n}\n\n/**\n * un-publish a package\n */\nexport function unPublishPackage(storage: Storage) {\n return async function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n const packageName = req.params.package;\n\n logger.debug({ packageName }, `unpublishing @{packageName}`);\n try {\n await storage.removePackage(packageName);\n } catch (err) {\n if (err) {\n return next(err);\n }\n }\n res.status(HTTP_STATUS.CREATED);\n return next({ ok: API_MESSAGE.PKG_REMOVED });\n };\n}\n\n/**\n * Delete tarball\n */\nexport function removeTarball(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n const { filename, revision } = req.params;\n\n logger.debug(\n { packageName, filename, revision },\n `removing a tarball for @{packageName}-@{tarballName}-@{revision}`\n );\n storage.removeTarball(packageName, filename, revision, function (err) {\n if (err) {\n return next(err);\n }\n res.status(HTTP_STATUS.CREATED);\n\n logger.debug(\n { packageName, filename, revision },\n `success remove tarball for @{packageName}-@{tarballName}-@{revision}`\n );\n return next({ ok: API_MESSAGE.TARBALL_REMOVED });\n });\n };\n}\n/**\n * Adds a new version\n */\nexport function addVersion(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const { version, tag } = req.params;\n const packageName = req.params.package;\n debug('add a new version %o and tag %o for %o', version, tag, packageName);\n\n storage.addVersion(packageName, version, req.body, tag, function (error) {\n if (error) {\n debug('error on add new version');\n return next(error);\n }\n\n debug('success on add new version');\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: API_MESSAGE.PKG_PUBLISHED,\n });\n });\n };\n}\n\n/**\n * uploadPackageTarball\n */\nexport function uploadPackageTarball(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n const stream = storage.addTarball(packageName, req.params.filename);\n req.pipe(stream);\n\n // checking if end event came before closing\n let complete = false;\n req.on('end', function () {\n complete = true;\n stream.done();\n });\n\n req.on('close', function () {\n if (!complete) {\n stream.abort();\n }\n });\n\n stream.on('error', function (err) {\n return res.locals.report_error(err);\n });\n\n stream.on('success', function () {\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: API_MESSAGE.TARBALL_UPLOADED,\n });\n });\n };\n}\n"],"file":"publish.js"}
|
|
1
|
+
{"version":3,"sources":["../src/publish.ts"],"names":["debug","publish","router","auth","storage","config","can","put","mime","getType","expectJson","publishPackage","delete","unPublishPackage","removeTarball","HEADERS","OCTET_STREAM","uploadPackageTarball","addVersion","starApi","req","res","next","packageName","params","package","createTarball","filename","data","cb","stream","addTarball","on","err","message","end","Buffer","from","done","createVersion","version","metadata","addTags","tags","mergeTags","afterChange","error","okMessage","metadataCopy","_attachments","versions","_","isNil","JSON","stringify","status","HTTP_STATUS","CREATED","ok","success","isInvalidBodyFormat","logger","info","errorUtils","getBadRequest","API_ERROR","UNSUPORTED_REGISTRY_CALL","CONFLICT","firstAttachmentKey","Object","keys","Path","basename","versionToPublish","readme","String","DIST_TAGS","remote_user","name","body","users","_rev","remote","allow_unpublish","changePackage","revision","API_MESSAGE","PKG_CHANGED","addPackage","PKG_CREATED","getBadData","BAD_PACKAGE_DATA","removePackage","PKG_REMOVED","TARBALL_REMOVED","tag","PKG_PUBLISHED","pipe","complete","abort","locals","report_error","TARBALL_UPLOADED"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport { Router } from 'express';\nimport _ from 'lodash';\nimport mime from 'mime';\nimport Path from 'path';\n\nimport { IAuth } from '@verdaccio/auth';\nimport {\n API_ERROR,\n API_MESSAGE,\n DIST_TAGS,\n HEADERS,\n HTTP_STATUS,\n errorUtils,\n} from '@verdaccio/core';\nimport { notify } from '@verdaccio/hooks';\nimport { logger } from '@verdaccio/logger';\nimport { allow, expectJson, media } from '@verdaccio/middleware';\nimport { Storage } from '@verdaccio/store';\nimport { Callback, CallbackAction, Config, MergeTags, Package, Version } from '@verdaccio/types';\nimport { hasDiffOneKey, isObject, validateMetadata } from '@verdaccio/utils';\n\nimport { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom';\nimport star from './star';\nimport { isPublishablePackage, isRelatedToDeprecation } from './utils';\n\nconst debug = buildDebug('verdaccio:api:publish');\n\nexport default function publish(\n router: Router,\n auth: IAuth,\n storage: Storage,\n config: Config\n): void {\n const can = allow(auth);\n\n /**\n * Publish a package / update package / un/start a package\n *\n * There are multiples scenarios here to be considered:\n *\n * 1. Publish scenario\n *\n * Publish a package consist of at least 1 step (PUT) with a metadata payload.\n * When a package is published, an _attachment property is present that contains the data\n * of the tarball.\n *\n * Example flow of publish.\n *\n * npm http fetch PUT 201 http://localhost:4873/@scope%2ftest1 9627ms\n npm info lifecycle @scope/test1@1.0.1~publish: @scope/test1@1.0.1\n npm info lifecycle @scope/test1@1.0.1~postpublish: @scope/test1@1.0.1\n + @scope/test1@1.0.1\n npm verb exit [ 0, true ]\n *\n *\n * 2. Unpublish scenario\n *\n * Unpublish consist in 3 steps.\n * 1. Try to fetch metadata -> if it fails, return 404\n * 2. Compute metadata locally (client side) and send a mutate payload excluding the version to\n * be unpublished\n * eg: if metadata reflects 1.0.1, 1.0.2 and 1.0.3, the computed metadata won't include 1.0.3.\n * 3. Once the second step has been successfully finished, delete the tarball.\n *\n * All these steps are consecutive and required, there is no transacions here, if step 3 fails,\n * metadata might get corrupted.\n *\n * Note the unpublish call will suffix in the url a /-rev/14-5d500cfce92f90fd revision number,\n * this not\n * used internally.\n *\n *\n * Example flow of unpublish.\n *\n * npm http fetch GET 200 http://localhost:4873/@scope%2ftest1?write=true 1680ms\n * npm http fetch PUT 201 http://localhost:4873/@scope%2ftest1/-rev/14-5d500cfce92f90fd\n * 956606ms attempt #2\n * npm http fetch GET 200 http://localhost:4873/@scope%2ftest1?write=true 1601ms\n * npm http fetch DELETE 201 http://localhost:4873/@scope%2ftest1/-/test1-1.0.3.tgz/-rev/16\n * -e11c8db282b2d992 19ms\n *\n * 3. Star a package\n *\n * Permissions: start a package depends of the publish and unpublish permissions, there is no\n * specific flag for star or un start.\n * The URL for star is similar to the unpublish (change package format)\n *\n * npm has no enpoint for star a package, rather mutate the metadata and acts as, the difference\n * is the users property which is part of the payload and the body only includes\n *\n * {\n\t\t \"_id\": pkgName,\n\t \t\"_rev\": \"3-b0cdaefc9bdb77c8\",\n\t\t \"users\": {\n\t\t [username]: boolean value (true, false)\n\t\t }\n\t}\n *\n */\n router.put(\n '/:package/:_rev?/:revision?',\n can('publish'),\n media(mime.getType('json')),\n expectJson,\n publishPackage(storage, config, auth)\n );\n\n /**\n * Un-publishing an entire package.\n *\n * This scenario happens when the first call detect there is only one version remaining\n * in the metadata, then the client decides to DELETE the resource\n * npm http fetch GET 304 http://localhost:4873/@scope%2ftest1?write=true 1076ms (from cache)\n npm http fetch DELETE 201 http://localhost:4873/@scope%2ftest1/-rev/18-d8ebe3020bd4ac9c 22ms\n */\n router.delete('/:package/-rev/*', can('unpublish'), unPublishPackage(storage));\n\n // removing a tarball\n router.delete(\n '/:package/-/:filename/-rev/:revision',\n can('unpublish'),\n can('publish'),\n removeTarball(storage)\n );\n\n // uploading package tarball\n router.put(\n '/:package/-/:filename/*',\n can('publish'),\n media(HEADERS.OCTET_STREAM),\n uploadPackageTarball(storage)\n );\n\n // adding a version\n router.put(\n '/:package/:version/-tag/:tag',\n can('publish'),\n media(mime.getType('json')),\n expectJson,\n addVersion(storage)\n );\n}\n\n/**\n * Publish a package\n */\nexport function publishPackage(storage: Storage, config: Config, auth: IAuth): any {\n const starApi = star(storage);\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n\n debug('publishing or updating a new version for %o', packageName);\n\n /**\n * Write tarball of stream data from package clients.\n */\n const createTarball = function (filename: string, data, cb: Callback): void {\n const stream = storage.addTarball(packageName, filename);\n stream.on('error', function (err) {\n debug(\n 'error on stream a tarball %o for %o with error %o',\n filename,\n packageName,\n err.message\n );\n cb(err);\n });\n stream.on('success', function () {\n debug('success on stream a tarball %o for %o', filename, packageName);\n cb();\n });\n // this is dumb and memory-consuming, but what choices do we have?\n // flow: we need first refactor this file before decides which type use here\n stream.end(Buffer.from(data.data, 'base64'));\n stream.done();\n };\n\n /**\n * Add new package version in storage\n */\n const createVersion = function (version: string, metadata: Version, cb: CallbackAction): void {\n debug('add a new package version %o to storage %o', version, metadata);\n storage.addVersion(packageName, version, metadata, null, cb);\n };\n\n /**\n * Add new tags in storage\n */\n const addTags = function (tags: MergeTags, cb: CallbackAction): void {\n debug('add new tag %o to storage', packageName);\n storage.mergeTags(packageName, tags, cb);\n };\n\n const afterChange = function (error, okMessage, metadata: Package): void {\n const metadataCopy: Package = { ...metadata };\n debug('after change metadata %o', metadata);\n\n const { _attachments, versions } = metadataCopy;\n\n // `npm star` wouldn't have attachments\n // and `npm deprecate` would have attachments as a empty object, i.e {}\n if (_.isNil(_attachments) || JSON.stringify(_attachments) === '{}') {\n debug('no attachments detected');\n if (error) {\n debug('no_attachments: after change error with %o', error.message);\n return next(error);\n }\n\n debug('no_attachments: after change success');\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: okMessage,\n success: true,\n });\n }\n\n /**\n * npm-registry-client 0.3+ embeds tarball into the json upload\n * issue https://github.com/rlidwka/sinopia/issues/31, dealing with it here:\n */\n\n const isInvalidBodyFormat =\n isObject(_attachments) === false ||\n hasDiffOneKey(_attachments) ||\n isObject(versions) === false ||\n hasDiffOneKey(versions);\n\n if (isInvalidBodyFormat) {\n // npm is doing something strange again\n // if this happens in normal circumstances, report it as a bug\n debug('invalid body format');\n logger.info({ packageName }, `wrong package format on publish a package @{packageName}`);\n return next(errorUtils.getBadRequest(API_ERROR.UNSUPORTED_REGISTRY_CALL));\n }\n\n if (error && error.status !== HTTP_STATUS.CONFLICT) {\n debug('error on change or update a package with %o', error.message);\n return next(error);\n }\n\n // at this point document is either created or existed before\n const [firstAttachmentKey] = Object.keys(_attachments);\n\n createTarball(\n Path.basename(firstAttachmentKey),\n _attachments[firstAttachmentKey],\n function (error) {\n debug('creating a tarball %o', firstAttachmentKey);\n if (error) {\n debug('error on create a tarball for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n const versionToPublish = Object.keys(versions)[0];\n\n versions[versionToPublish].readme =\n _.isNil(metadataCopy.readme) === false ? String(metadataCopy.readme) : '';\n\n createVersion(versionToPublish, versions[versionToPublish], function (error) {\n if (error) {\n debug('error on create a version for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n addTags(metadataCopy[DIST_TAGS], async function (error) {\n if (error) {\n debug('error on create a tag for %o with error %o', packageName, error.message);\n return next(error);\n }\n\n try {\n await notify(\n metadataCopy,\n config,\n req.remote_user,\n `${metadataCopy.name}@${versionToPublish}`\n );\n } catch (error: any) {\n debug(\n 'error on notify add a new tag %o',\n `${metadataCopy.name}@${versionToPublish}`\n );\n logger.error({ error }, 'notify batch service has failed: @{error}');\n }\n\n debug('add a tag succesfully for %o', `${metadataCopy.name}@${versionToPublish}`);\n res.status(HTTP_STATUS.CREATED);\n return next({ ok: okMessage, success: true });\n });\n });\n }\n );\n };\n\n if (isPublishablePackage(req.body) === false && isObject(req.body.users)) {\n debug('starting star a package');\n return starApi(req, res, next);\n }\n\n try {\n debug('pre validation metadata to publish %o', req.body);\n const metadata = validateMetadata(req.body, packageName);\n debug('post validation metadata to publish %o', metadata);\n // treating deprecation as updating a package\n if (req.params._rev || isRelatedToDeprecation(req.body)) {\n debug('updating a new version for %o', packageName);\n // we check unpublish permissions, an update is basically remove versions\n const remote = req.remote_user;\n auth.allow_unpublish({ packageName }, remote, (error) => {\n debug('allowed to unpublish a package %o', packageName);\n if (error) {\n debug('not allowed to unpublish a version for %o', packageName);\n return next(error);\n }\n\n debug('update a package');\n storage.changePackage(packageName, metadata, req.params.revision, function (error) {\n afterChange(error, API_MESSAGE.PKG_CHANGED, metadata);\n });\n });\n } else {\n debug('adding a new version for the package %o', packageName);\n storage.addPackage(packageName, metadata, function (error) {\n debug('package metadata updated %o', metadata);\n afterChange(error, API_MESSAGE.PKG_CREATED, metadata);\n });\n }\n } catch (error: any) {\n debug('error on publish, bad package format %o', packageName);\n logger.error({ packageName }, 'error on publish, bad package data for @{packageName}');\n return next(errorUtils.getBadData(API_ERROR.BAD_PACKAGE_DATA));\n }\n };\n}\n\n/**\n * un-publish a package\n */\nexport function unPublishPackage(storage: Storage) {\n return async function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) {\n const packageName = req.params.package;\n\n logger.debug({ packageName }, `unpublishing @{packageName}`);\n try {\n await storage.removePackage(packageName);\n } catch (err) {\n if (err) {\n return next(err);\n }\n }\n res.status(HTTP_STATUS.CREATED);\n return next({ ok: API_MESSAGE.PKG_REMOVED });\n };\n}\n\n/**\n * Delete tarball\n */\nexport function removeTarball(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n const { filename, revision } = req.params;\n\n logger.debug(\n { packageName, filename, revision },\n `removing a tarball for @{packageName}-@{tarballName}-@{revision}`\n );\n storage.removeTarball(packageName, filename, revision, function (err) {\n if (err) {\n return next(err);\n }\n res.status(HTTP_STATUS.CREATED);\n\n logger.debug(\n { packageName, filename, revision },\n `success remove tarball for @{packageName}-@{tarballName}-@{revision}`\n );\n return next({ ok: API_MESSAGE.TARBALL_REMOVED });\n });\n };\n}\n/**\n * Adds a new version\n */\nexport function addVersion(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const { version, tag } = req.params;\n const packageName = req.params.package;\n debug('add a new version %o and tag %o for %o', version, tag, packageName);\n\n storage.addVersion(packageName, version, req.body, tag, function (error) {\n if (error) {\n debug('error on add new version');\n return next(error);\n }\n\n debug('success on add new version');\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: API_MESSAGE.PKG_PUBLISHED,\n });\n });\n };\n}\n\n/**\n * uploadPackageTarball\n */\nexport function uploadPackageTarball(storage: Storage) {\n return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void {\n const packageName = req.params.package;\n const stream = storage.addTarball(packageName, req.params.filename);\n req.pipe(stream);\n\n // checking if end event came before closing\n let complete = false;\n req.on('end', function () {\n complete = true;\n stream.done();\n });\n\n req.on('close', function () {\n if (!complete) {\n stream.abort();\n }\n });\n\n stream.on('error', function (err) {\n return res.locals.report_error(err);\n });\n\n stream.on('success', function () {\n res.status(HTTP_STATUS.CREATED);\n return next({\n ok: API_MESSAGE.TARBALL_UPLOADED,\n });\n });\n };\n}\n"],"file":"publish.js"}
|
package/build/star.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Response } from 'express';
|
|
2
2
|
import { Storage } from '@verdaccio/store';
|
|
3
|
-
import { $
|
|
3
|
+
import { $NextFunctionVer, $RequestExtend } from '../types/custom';
|
|
4
4
|
export default function (storage: Storage): (req: $RequestExtend, res: Response, next: $NextFunctionVer) => void;
|
package/build/star.js
CHANGED
|
@@ -5,20 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
9
9
|
|
|
10
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _core = require("@verdaccio/core");
|
|
13
13
|
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
|
|
16
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
-
|
|
18
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
19
|
-
|
|
20
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
21
|
-
|
|
22
16
|
const debug = (0, _debug.default)('verdaccio:api:publish:star');
|
|
23
17
|
|
|
24
18
|
function _default(storage) {
|
|
@@ -75,9 +69,9 @@ function _default(storage) {
|
|
|
75
69
|
return afterChangePackage();
|
|
76
70
|
}
|
|
77
71
|
|
|
78
|
-
const users = isStar ?
|
|
72
|
+
const users = isStar ? { ...localStarUsers,
|
|
79
73
|
[remoteUsername]: true
|
|
80
|
-
}
|
|
74
|
+
} : _lodash.default.reduce(localStarUsers, (users, value, key) => {
|
|
81
75
|
if (key !== remoteUsername) {
|
|
82
76
|
users[key] = value;
|
|
83
77
|
}
|
|
@@ -85,9 +79,9 @@ function _default(storage) {
|
|
|
85
79
|
return users;
|
|
86
80
|
}, {});
|
|
87
81
|
debug('update package for %o', name);
|
|
88
|
-
storage.changePackage(name,
|
|
82
|
+
storage.changePackage(name, { ...info,
|
|
89
83
|
users
|
|
90
|
-
}
|
|
84
|
+
}, req.body._rev, function (err) {
|
|
91
85
|
afterChangePackage(err);
|
|
92
86
|
});
|
|
93
87
|
}
|
package/build/star.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/star.ts"],"names":["debug","storage","validateInputs","newUsers","localUsers","username","isStar","isExistlocalUsers","_","isNil","req","res","next","name","params","package","afterChangePackage","err","status","HTTP_STATUS","OK","success","getPackage","callback","info","newStarUser","body","USERS","remoteUsername","remote_user","localStarUsers","Object","keys","includes","users","reduce","value","key","changePackage","_rev"],"mappings":";;;;;;;AAAA;;AAEA;;
|
|
1
|
+
{"version":3,"sources":["../src/star.ts"],"names":["debug","storage","validateInputs","newUsers","localUsers","username","isStar","isExistlocalUsers","_","isNil","req","res","next","name","params","package","afterChangePackage","err","status","HTTP_STATUS","OK","success","getPackage","callback","info","newStarUser","body","USERS","remoteUsername","remote_user","localStarUsers","Object","keys","includes","users","reduce","value","key","changePackage","_rev"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport { Response } from 'express';\nimport _ from 'lodash';\n\nimport { HTTP_STATUS, USERS } from '@verdaccio/core';\nimport { Storage } from '@verdaccio/store';\n\nimport { $NextFunctionVer, $RequestExtend } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:publish:star');\n\nexport default function (\n storage: Storage\n): (req: $RequestExtend, res: Response, next: $NextFunctionVer) => void {\n const validateInputs = (newUsers, localUsers, username, isStar): boolean => {\n const isExistlocalUsers = _.isNil(localUsers[username]) === false;\n if (isStar && isExistlocalUsers && localUsers[username]) {\n return true;\n } else if (!isStar && isExistlocalUsers) {\n return false;\n } else if (!isStar && !isExistlocalUsers) {\n return true;\n }\n return false;\n };\n\n return (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => {\n const name = req.params.package;\n debug('starring a package for %o', name);\n const afterChangePackage = function (err?: Error) {\n if (err) {\n debug('error on update package for %o', name);\n return next(err);\n }\n\n debug('succes update package for %o', name);\n res.status(HTTP_STATUS.OK);\n next({\n success: true,\n });\n };\n\n debug('get package info package for %o', name);\n // @ts-ignore\n storage.getPackage({\n name,\n req,\n callback: function (err, info) {\n if (err) {\n debug('error on get package info package for %o', name);\n return next(err);\n }\n const newStarUser = req.body[USERS];\n const remoteUsername = req.remote_user.name;\n const localStarUsers = info[USERS];\n // Check is star or unstar\n const isStar = Object.keys(newStarUser).includes(remoteUsername);\n debug('is start? %o', isStar);\n if (\n _.isNil(localStarUsers) === false &&\n validateInputs(newStarUser, localStarUsers, remoteUsername, isStar)\n ) {\n return afterChangePackage();\n }\n const users = isStar\n ? {\n ...localStarUsers,\n [remoteUsername]: true,\n }\n : _.reduce(\n localStarUsers,\n (users, value, key) => {\n if (key !== remoteUsername) {\n users[key] = value;\n }\n return users;\n },\n {}\n );\n debug('update package for %o', name);\n storage.changePackage(name, { ...info, users }, req.body._rev, function (err) {\n afterChangePackage(err);\n });\n },\n });\n };\n}\n"],"file":"star.js"}
|
package/build/stars.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/stars.ts"],"names":["route","storage","get","req","res","next","remoteUsername","remote_user","name","getLocalDatabase","err","localPackages","filteredPackages","filter","localPackage","_","keys","USERS","includes","status","HTTP_STATUS","OK","rows","map","filteredPackage","value"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/stars.ts"],"names":["route","storage","get","req","res","next","remoteUsername","remote_user","name","getLocalDatabase","err","localPackages","filteredPackages","filter","localPackage","_","keys","USERS","includes","status","HTTP_STATUS","OK","rows","map","filteredPackage","value"],"mappings":";;;;;;;AACA;;AAEA;;;;AAQe,kBAAUA,KAAV,EAAyBC,OAAzB,EAAiD;AAC9DD,EAAAA,KAAK,CAACE,GAAN,CACE,wBADF,EAEE,CAACC,GAAD,EAAsBC,GAAtB,EAAqCC,IAArC,KAAsE;AACpE,UAAMC,cAAc,GAAGH,GAAG,CAACI,WAAJ,CAAgBC,IAAvC;AAEAP,IAAAA,OAAO,CAACQ,gBAAR,CAAyB,CAACC,GAAD,EAAMC,aAAN,KAAkC;AACzD,UAAID,GAAJ,EAAS;AACP,eAAOL,IAAI,CAACK,GAAD,CAAX;AACD;;AAED,YAAME,gBAA0B,GAAGD,aAAa,CAACE,MAAd,CAAsBC,YAAD,IACtDC,gBAAEC,IAAF,CAAOF,YAAY,CAACG,WAAD,CAAnB,EAA4BC,QAA5B,CAAqCZ,cAArC,CADiC,CAAnC;AAIAF,MAAAA,GAAG,CAACe,MAAJ,CAAWC,kBAAYC,EAAvB;AACAhB,MAAAA,IAAI,CAAC;AACHiB,QAAAA,IAAI,EAAEV,gBAAgB,CAACW,GAAjB,CAAsBC,eAAD,KAA+B;AACxDC,UAAAA,KAAK,EAAED,eAAe,CAAChB;AADiC,SAA/B,CAArB;AADH,OAAD,CAAJ;AAKD,KAfD;AAgBD,GArBH;AAuBD","sourcesContent":["import { Response, Router } from 'express';\nimport _ from 'lodash';\n\nimport { HTTP_STATUS, USERS } from '@verdaccio/core';\nimport { Storage } from '@verdaccio/store';\nimport { Package } from '@verdaccio/types';\n\nimport { $NextFunctionVer, $RequestExtend } from '../types/custom';\n\ntype Packages = Package[];\n\nexport default function (route: Router, storage: Storage): void {\n route.get(\n '/-/_view/starredByUser',\n (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => {\n const remoteUsername = req.remote_user.name;\n\n storage.getLocalDatabase((err, localPackages: Packages) => {\n if (err) {\n return next(err);\n }\n\n const filteredPackages: Packages = localPackages.filter((localPackage: Package) =>\n _.keys(localPackage[USERS]).includes(remoteUsername)\n );\n\n res.status(HTTP_STATUS.OK);\n next({\n rows: filteredPackages.map((filteredPackage: Package) => ({\n value: filteredPackage.name,\n })),\n });\n });\n }\n );\n}\n"],"file":"stars.js"}
|
package/build/user.d.ts
CHANGED
package/build/user.js
CHANGED
|
@@ -5,20 +5,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
|
|
8
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
-
|
|
10
8
|
var _debug = _interopRequireDefault(require("debug"));
|
|
11
9
|
|
|
12
|
-
var
|
|
10
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
11
|
|
|
14
12
|
var _auth = require("@verdaccio/auth");
|
|
15
13
|
|
|
16
|
-
var _logger = require("@verdaccio/logger");
|
|
17
|
-
|
|
18
14
|
var _config = require("@verdaccio/config");
|
|
19
15
|
|
|
20
16
|
var _core = require("@verdaccio/core");
|
|
21
17
|
|
|
18
|
+
var _logger = require("@verdaccio/logger");
|
|
19
|
+
|
|
20
|
+
var _utils = require("@verdaccio/utils");
|
|
21
|
+
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
24
24
|
const debug = (0, _debug.default)('verdaccio:api:user');
|
package/build/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/user.ts"],"names":["debug","route","auth","config","get","req","res","next","message","remote_user","name","status","HTTP_STATUS","OK","ok","put","password","body","remoteName","_","isNil","authenticate","callbackAuthenticate","err","user","logger","trace","errorUtils","getCode","UNAUTHORIZED","API_ERROR","BAD_USERNAME_PASSWORD","restoredRemoteUser","groups","token","getUnauthorized","CREATED","BAD_REQUEST","PASSWORD_SHORT","add_user","INTERNAL_ERROR","getConflict","undefined","delete","API_MESSAGE","LOGGED_OUT"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;
|
|
1
|
+
{"version":3,"sources":["../src/user.ts"],"names":["debug","route","auth","config","get","req","res","next","message","remote_user","name","status","HTTP_STATUS","OK","ok","put","password","body","remoteName","_","isNil","authenticate","callbackAuthenticate","err","user","logger","trace","errorUtils","getCode","UNAUTHORIZED","API_ERROR","BAD_USERNAME_PASSWORD","restoredRemoteUser","groups","token","getUnauthorized","CREATED","BAD_REQUEST","PASSWORD_SHORT","add_user","INTERNAL_ERROR","getConflict","undefined","delete","API_MESSAGE","LOGGED_OUT"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport { Response, Router } from 'express';\nimport _ from 'lodash';\n\nimport { getApiToken } from '@verdaccio/auth';\nimport { IAuth } from '@verdaccio/auth';\nimport { createRemoteUser } from '@verdaccio/config';\nimport { API_ERROR, API_MESSAGE, HTTP_STATUS, errorUtils } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\nimport { Config, RemoteUser } from '@verdaccio/types';\nimport { getAuthenticatedMessage, validatePassword } from '@verdaccio/utils';\n\nimport { $NextFunctionVer, $RequestExtend } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:user');\n\nexport default function (route: Router, auth: IAuth, config: Config): void {\n route.get(\n '/-/user/:org_couchdb_user',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n debug('verifying user');\n const message = getAuthenticatedMessage(req.remote_user.name);\n debug('user authenticated message %o', message);\n res.status(HTTP_STATUS.OK);\n next({\n ok: message,\n });\n }\n );\n\n route.put(\n '/-/user/:org_couchdb_user/:_rev?/:revision?',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n const { name, password } = req.body;\n debug('login or adduser');\n const remoteName = req.remote_user.name;\n\n if (_.isNil(remoteName) === false && _.isNil(name) === false && remoteName === name) {\n debug('login: no remote user detected');\n auth.authenticate(\n name,\n password,\n async function callbackAuthenticate(err, user): Promise<void> {\n if (err) {\n logger.trace(\n { name, err },\n 'authenticating for user @{username} failed. Error: @{err.message}'\n );\n return next(\n errorUtils.getCode(HTTP_STATUS.UNAUTHORIZED, API_ERROR.BAD_USERNAME_PASSWORD)\n );\n }\n\n const restoredRemoteUser: RemoteUser = createRemoteUser(name, user.groups || []);\n const token = await getApiToken(auth, config, restoredRemoteUser, password);\n debug('login: new token');\n if (!token) {\n return next(errorUtils.getUnauthorized());\n }\n\n res.status(HTTP_STATUS.CREATED);\n\n const message = getAuthenticatedMessage(req.remote_user.name);\n debug('login: created user message %o', message);\n\n return next({\n ok: message,\n token,\n });\n }\n );\n } else {\n if (validatePassword(password) === false) {\n debug('adduser: invalid password');\n // eslint-disable-next-line new-cap\n return next(errorUtils.getCode(HTTP_STATUS.BAD_REQUEST, API_ERROR.PASSWORD_SHORT()));\n }\n\n auth.add_user(name, password, async function (err, user): Promise<void> {\n if (err) {\n if (err.status >= HTTP_STATUS.BAD_REQUEST && err.status < HTTP_STATUS.INTERNAL_ERROR) {\n debug('adduser: error on create user');\n // With npm registering is the same as logging in,\n // and npm accepts only an 409 error.\n // So, changing status code here.\n return next(\n errorUtils.getCode(err.status, err.message) || errorUtils.getConflict(err.message)\n );\n }\n return next(err);\n }\n\n const token =\n name && password ? await getApiToken(auth, config, user, password) : undefined;\n debug('adduser: new token %o', token);\n if (!token) {\n return next(errorUtils.getUnauthorized());\n }\n\n req.remote_user = user;\n res.status(HTTP_STATUS.CREATED);\n debug('adduser: user has been created');\n return next({\n ok: `user '${req.body.name}' created`,\n token,\n });\n });\n }\n }\n );\n\n route.delete(\n '/-/user/token/*',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n res.status(HTTP_STATUS.OK);\n next({\n ok: API_MESSAGE.LOGGED_OUT,\n });\n }\n );\n}\n"],"file":"user.js"}
|
package/build/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts"],"names":["isPublishablePackage","pkg","keys","Object","_","includes","isRelatedToDeprecation","pkgInfo","versions","version","prototype","hasOwnProperty","call"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts"],"names":["isPublishablePackage","pkg","keys","Object","_","includes","isRelatedToDeprecation","pkgInfo","versions","version","prototype","hasOwnProperty","call"],"mappings":";;;;;;;;AAAA;;;;AAIA;AACA;AACA;AACA;AAEO,SAASA,oBAAT,CAA8BC,GAA9B,EAAqD;AAC1D,QAAMC,IAAc,GAAGC,MAAM,CAACD,IAAP,CAAYD,GAAZ,CAAvB;AAEA,SAAOG,gBAAEC,QAAF,CAAWH,IAAX,EAAiB,UAAjB,CAAP;AACD;;AAEM,SAASI,sBAAT,CAAgCC,OAAhC,EAA2D;AAChE,QAAM;AAAEC,IAAAA;AAAF,MAAeD,OAArB;;AACA,OAAK,MAAME,OAAX,IAAsBD,QAAtB,EAAgC;AAC9B,QAAIL,MAAM,CAACO,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCJ,QAAQ,CAACC,OAAD,CAA7C,EAAwD,YAAxD,CAAJ,EAA2E;AACzE,aAAO,IAAP;AACD;AACF;;AACD,SAAO,KAAP;AACD","sourcesContent":["import _ from 'lodash';\n\nimport { Package } from '@verdaccio/types';\n\n/**\n * Check whether the package metadta has enough data to be published\n * @param pkg metadata\n */\n\nexport function isPublishablePackage(pkg: Package): boolean {\n const keys: string[] = Object.keys(pkg);\n\n return _.includes(keys, 'versions');\n}\n\nexport function isRelatedToDeprecation(pkgInfo: Package): boolean {\n const { versions } = pkgInfo;\n for (const version in versions) {\n if (Object.prototype.hasOwnProperty.call(versions[version], 'deprecated')) {\n return true;\n }\n }\n return false;\n}\n"],"file":"utils.js"}
|
package/build/v1/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/v1/profile.ts"],"names":["route","auth","buildProfile","name","tfa","email","email_verified","created","updated","cidr_whitelist","fullname","get","req","res","next","_","isNil","remote_user","status","HTTP_STATUS","UNAUTHORIZED","message","API_ERROR","MUST_BE_LOGGED","post","password","body","new","errorUtils","getCode","PASSWORD_SHORT","changePassword","old","err","isUpdated","isNull","getConflict","getInternalError","INTERNAL_SERVER_ERROR","SERVICE_UNAVAILABLE","SUPPORT_ERRORS","TFA_DISABLED","INTERNAL_ERROR","APP_ERROR","PROFILE_ERROR"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/v1/profile.ts"],"names":["route","auth","buildProfile","name","tfa","email","email_verified","created","updated","cidr_whitelist","fullname","get","req","res","next","_","isNil","remote_user","status","HTTP_STATUS","UNAUTHORIZED","message","API_ERROR","MUST_BE_LOGGED","post","password","body","new","errorUtils","getCode","PASSWORD_SHORT","changePassword","old","err","isUpdated","isNull","getConflict","getInternalError","INTERNAL_SERVER_ERROR","SERVICE_UNAVAILABLE","SUPPORT_ERRORS","TFA_DISABLED","INTERNAL_ERROR","APP_ERROR","PROFILE_ERROR"],"mappings":"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","sourcesContent":["import { Response, Router } from 'express';\nimport _ from 'lodash';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { API_ERROR, APP_ERROR, HTTP_STATUS, SUPPORT_ERRORS, errorUtils } from '@verdaccio/core';\nimport { validatePassword } from '@verdaccio/utils';\n\nimport { $NextFunctionVer, $RequestExtend } from '../../types/custom';\n\nexport interface Profile {\n tfa: boolean;\n name: string;\n email: string;\n email_verified: boolean;\n created: string;\n updated: string;\n cidr_whitelist: string[] | null;\n fullname: string;\n}\n\nexport default function (route: Router, auth: IAuth): void {\n function buildProfile(name: string): Profile {\n return {\n tfa: false,\n name,\n email: '',\n email_verified: false,\n created: '',\n updated: '',\n cidr_whitelist: null,\n fullname: '',\n };\n }\n\n route.get(\n '/-/npm/v1/user',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n if (_.isNil(req.remote_user.name) === false) {\n return next(buildProfile(req.remote_user.name));\n }\n\n res.status(HTTP_STATUS.UNAUTHORIZED);\n return next({\n message: API_ERROR.MUST_BE_LOGGED,\n });\n }\n );\n\n route.post(\n '/-/npm/v1/user',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void {\n if (_.isNil(req.remote_user.name)) {\n res.status(HTTP_STATUS.UNAUTHORIZED);\n return next({\n message: API_ERROR.MUST_BE_LOGGED,\n });\n }\n\n const { password, tfa } = req.body;\n const { name } = req.remote_user;\n\n if (_.isNil(password) === false) {\n if (validatePassword(password.new) === false) {\n /* eslint new-cap:off */\n return next(errorUtils.getCode(HTTP_STATUS.UNAUTHORIZED, API_ERROR.PASSWORD_SHORT()));\n /* eslint new-cap:off */\n }\n\n auth.changePassword(\n name,\n password.old,\n password.new,\n (err, isUpdated): $NextFunctionVer => {\n if (_.isNull(err) === false) {\n return next(\n errorUtils.getCode(err.status, err.message) || errorUtils.getConflict(err.message)\n );\n }\n\n if (isUpdated) {\n return next(buildProfile(req.remote_user.name));\n }\n return next(errorUtils.getInternalError(API_ERROR.INTERNAL_SERVER_ERROR));\n }\n );\n } else if (_.isNil(tfa) === false) {\n return next(\n errorUtils.getCode(HTTP_STATUS.SERVICE_UNAVAILABLE, SUPPORT_ERRORS.TFA_DISABLED)\n );\n } else {\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, APP_ERROR.PROFILE_ERROR));\n }\n }\n );\n}\n"],"file":"profile.js"}
|
package/build/v1/search.js
CHANGED
|
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
|
|
8
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
-
|
|
10
8
|
var _debug = _interopRequireDefault(require("debug"));
|
|
11
9
|
|
|
12
|
-
var
|
|
10
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
11
|
|
|
14
12
|
var _core = require("@verdaccio/core");
|
|
15
13
|
|
|
14
|
+
var _logger = require("@verdaccio/logger");
|
|
15
|
+
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
18
|
const debug = (0, _debug.default)('verdaccio:api:search');
|
package/build/v1/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/v1/search.ts"],"names":["debug","route","auth","storage","checkAccess","pkg","remoteUser","Promise","resolve","reject","allow_access","packageName","package","name","err","allowed","status","String","match","get","req","res","next","query","url","size","from","map","k","data","abort","AbortController","on","parseInt","searchManager","search","checkAccessPromises","all","pkgItem","remote_user","final","filter","i","_","isNull","slice","logger","length","response","objects","total","time","Date","toUTCString","HTTP_STATUS","OK","json","error"],"mappings":";;;;;;;AAAA;;AACA;;AACA
|
|
1
|
+
{"version":3,"sources":["../../src/v1/search.ts"],"names":["debug","route","auth","storage","checkAccess","pkg","remoteUser","Promise","resolve","reject","allow_access","packageName","package","name","err","allowed","status","String","match","get","req","res","next","query","url","size","from","map","k","data","abort","AbortController","on","parseInt","searchManager","search","checkAccessPromises","all","pkgItem","remote_user","final","filter","i","_","isNull","slice","logger","length","response","objects","total","time","Date","toUTCString","HTTP_STATUS","OK","json","error"],"mappings":"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","sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { IAuth } from '@verdaccio/auth';\nimport { HTTP_STATUS, searchUtils } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\nimport { Storage } from '@verdaccio/store';\nimport { Package } from '@verdaccio/types';\n\nconst debug = buildDebug('verdaccio:api:search');\n\n/**\n * Endpoint for npm search v1\n * Empty value\n * - {\"objects\":[],\"total\":0,\"time\":\"Sun Jul 25 2021 14:09:11 GMT+0000 (Coordinated Universal Time)\"}\n * req: 'GET /-/v1/search?text=react&size=20&frpom=0&quality=0.65&popularity=0.98&maintenance=0.5'\n */\nexport default function (route, auth: IAuth, storage: Storage): void {\n function checkAccess(pkg: any, auth: any, remoteUser): Promise<Package | null> {\n return new Promise((resolve, reject) => {\n auth.allow_access({ packageName: pkg?.package?.name }, remoteUser, function (err, allowed) {\n if (err) {\n if (err.status && String(err.status).match(/^4\\d\\d$/)) {\n // auth plugin returns 4xx user error,\n // that's equivalent of !allowed basically\n allowed = false;\n return resolve(null);\n } else {\n reject(err);\n }\n } else {\n return resolve(allowed ? pkg : null);\n }\n });\n });\n }\n\n route.get('/-/v1/search', async (req, res, next) => {\n const { query, url } = req;\n let [size, from] = ['size', 'from'].map((k) => query[k]);\n let data;\n const abort = new AbortController();\n\n req.on('aborted', () => {\n abort.abort();\n });\n\n size = parseInt(size, 10) || 20;\n from = parseInt(from, 10) || 0;\n\n try {\n data = await storage.searchManager?.search({\n query,\n url,\n abort,\n });\n debug('stream finish');\n const checkAccessPromises: searchUtils.SearchItemPkg[] = await Promise.all(\n data.map((pkgItem) => {\n return checkAccess(pkgItem, auth, req.remote_user);\n })\n );\n\n const final: searchUtils.SearchItemPkg[] = checkAccessPromises\n .filter((i) => !_.isNull(i))\n .slice(from, size);\n logger.debug(`search results ${final?.length}`);\n\n const response: searchUtils.SearchResults = {\n objects: final,\n total: final.length,\n time: new Date().toUTCString(),\n };\n\n res.status(HTTP_STATUS.OK).json(response);\n } catch (error) {\n logger.error({ error }, 'search endpoint has failed @{error.message}');\n next(next);\n return;\n }\n });\n}\n"],"file":"search.js"}
|
package/build/v1/token.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { Config, Token } from '@verdaccio/types';
|
|
3
2
|
import { IAuth } from '@verdaccio/auth';
|
|
4
3
|
import { Storage } from '@verdaccio/store';
|
|
4
|
+
import { Config, Token } from '@verdaccio/types';
|
|
5
5
|
export declare type NormalizeToken = Token & {
|
|
6
6
|
created: string;
|
|
7
7
|
};
|
package/build/v1/token.js
CHANGED
|
@@ -7,26 +7,20 @@ exports.default = _default;
|
|
|
7
7
|
|
|
8
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
9
|
|
|
10
|
-
var _core = require("@verdaccio/core");
|
|
11
|
-
|
|
12
|
-
var _utils = require("@verdaccio/utils");
|
|
13
|
-
|
|
14
10
|
var _auth = require("@verdaccio/auth");
|
|
15
11
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
var _core = require("@verdaccio/core");
|
|
19
13
|
|
|
20
|
-
|
|
14
|
+
var _logger = require("@verdaccio/logger");
|
|
21
15
|
|
|
22
|
-
|
|
16
|
+
var _utils = require("@verdaccio/utils");
|
|
23
17
|
|
|
24
|
-
function
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
19
|
|
|
26
20
|
function normalizeToken(token) {
|
|
27
|
-
return
|
|
21
|
+
return { ...token,
|
|
28
22
|
created: new Date(token.created).toISOString()
|
|
29
|
-
}
|
|
23
|
+
};
|
|
30
24
|
} // https://github.com/npm/npm-profile/blob/latest/lib/index.js
|
|
31
25
|
|
|
32
26
|
|
package/build/v1/token.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/v1/token.ts"],"names":["normalizeToken","token","created","Date","toISOString","route","auth","storage","config","get","req","res","next","name","remote_user","_","isNil","tokens","readTokens","user","totalTokens","length","logger","debug","status","HTTP_STATUS","OK","objects","map","urls","error","msg","errorUtils","getCode","INTERNAL_ERROR","message","getUnauthorized","post","password","readonly","cidr_whitelist","body","isBoolean","isArray","BAD_DATA","SUPPORT_ERRORS","PARAMETERS_NOT_VALID","authenticate","err","errorCode","UNAUTHORIZED","isFunction","saveToken","NOT_IMPLEMENTED","STORAGE_NOT_IMPLEMENT","getInternalError","key","maskedToken","getTime","cidr","delete","params","tokenKey","deleteToken","info"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/v1/token.ts"],"names":["normalizeToken","token","created","Date","toISOString","route","auth","storage","config","get","req","res","next","name","remote_user","_","isNil","tokens","readTokens","user","totalTokens","length","logger","debug","status","HTTP_STATUS","OK","objects","map","urls","error","msg","errorUtils","getCode","INTERNAL_ERROR","message","getUnauthorized","post","password","readonly","cidr_whitelist","body","isBoolean","isArray","BAD_DATA","SUPPORT_ERRORS","PARAMETERS_NOT_VALID","authenticate","err","errorCode","UNAUTHORIZED","isFunction","saveToken","NOT_IMPLEMENTED","STORAGE_NOT_IMPLEMENT","getInternalError","key","maskedToken","getTime","cidr","delete","params","tokenKey","deleteToken","info"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AACA;;AAGA;;;;AAQA,SAASA,cAAT,CAAwBC,KAAxB,EAAsD;AACpD,SAAO,EACL,GAAGA,KADE;AAELC,IAAAA,OAAO,EAAE,IAAIC,IAAJ,CAASF,KAAK,CAACC,OAAf,EAAwBE,WAAxB;AAFJ,GAAP;AAID,C,CAED;;;AACe,kBAAUC,KAAV,EAAyBC,IAAzB,EAAsCC,OAAtC,EAAwDC,MAAxD,EAA8E;AAC3FH,EAAAA,KAAK,CAACI,GAAN,CACE,kBADF,EAEE,gBAAgBC,GAAhB,EAAqCC,GAArC,EAAoDC,IAApD,EAA4E;AAC1E,UAAM;AAAEC,MAAAA;AAAF,QAAWH,GAAG,CAACI,WAArB;;AAEA,QAAIC,gBAAEC,KAAF,CAAQH,IAAR,MAAkB,KAAtB,EAA6B;AAC3B,UAAI;AACF,cAAMI,MAAM,GAAG,MAAMV,OAAO,CAACW,UAAR,CAAmB;AAAEC,UAAAA,IAAI,EAAEN;AAAR,SAAnB,CAArB;AACA,cAAMO,WAAW,GAAGH,MAAM,CAACI,MAA3B;;AACAC,uBAAOC,KAAP,CAAa;AAAEH,UAAAA;AAAF,SAAb,EAA8B,sCAA9B;;AAEAT,QAAAA,GAAG,CAACa,MAAJ,CAAWC,kBAAYC,EAAvB;AACA,eAAOd,IAAI,CAAC;AACVe,UAAAA,OAAO,EAAEV,MAAM,CAACW,GAAP,CAAW5B,cAAX,CADC;AAEV6B,UAAAA,IAAI,EAAE;AACJjB,YAAAA,IAAI,EAAE,EADF,CACM;;AADN;AAFI,SAAD,CAAX;AAMD,OAZD,CAYE,OAAOkB,KAAP,EAAmB;AACnBR,uBAAOQ,KAAP,CAAa;AAAEA,UAAAA,KAAK,EAAEA,KAAK,CAACC;AAAf,SAAb,EAAmC,iCAAnC;;AACA,eAAOnB,IAAI,CAACoB,iBAAWC,OAAX,CAAmBR,kBAAYS,cAA/B,EAA+CJ,KAAK,CAACK,OAArD,CAAD,CAAX;AACD;AACF;;AACD,WAAOvB,IAAI,CAACoB,iBAAWI,eAAX,EAAD,CAAX;AACD,GAxBH;AA2BA/B,EAAAA,KAAK,CAACgC,IAAN,CACE,kBADF,EAEE,UAAU3B,GAAV,EAA+BC,GAA/B,EAA8CC,IAA9C,EAAsE;AACpE,UAAM;AAAE0B,MAAAA,QAAF;AAAYC,MAAAA,QAAZ;AAAsBC,MAAAA;AAAtB,QAAyC9B,GAAG,CAAC+B,IAAnD;AACA,UAAM;AAAE5B,MAAAA;AAAF,QAAWH,GAAG,CAACI,WAArB;;AAEA,QAAI,CAACC,gBAAE2B,SAAF,CAAYH,QAAZ,CAAD,IAA0B,CAACxB,gBAAE4B,OAAF,CAAUH,cAAV,CAA/B,EAA0D;AACxD,aAAO5B,IAAI,CAACoB,iBAAWC,OAAX,CAAmBR,kBAAYmB,QAA/B,EAAyCC,qBAAeC,oBAAxD,CAAD,CAAX;AACD;;AAEDxC,IAAAA,IAAI,CAACyC,YAAL,CAAkBlC,IAAlB,EAAwByB,QAAxB,EAAkC,OAAOU,GAAP,EAAY7B,IAAZ,KAAiC;AACjE,UAAI6B,GAAJ,EAAS;AACP,cAAMC,SAAS,GAAGD,GAAG,CAACb,OAAJ,GAAcV,kBAAYyB,YAA1B,GAAyCzB,kBAAYS,cAAvE;AACA,eAAOtB,IAAI,CAACoB,iBAAWC,OAAX,CAAmBgB,SAAnB,EAA8BD,GAAG,CAACb,OAAlC,CAAD,CAAX;AACD;;AAEDzB,MAAAA,GAAG,CAACI,WAAJ,GAAkBK,IAAlB;;AAEA,UAAI,CAACJ,gBAAEoC,UAAF,CAAa5C,OAAO,CAAC6C,SAArB,CAAL,EAAsC;AACpC,eAAOxC,IAAI,CACToB,iBAAWC,OAAX,CAAmBR,kBAAY4B,eAA/B,EAAgDR,qBAAeS,qBAA/D,CADS,CAAX;AAGD;;AAED,UAAI;AACF,cAAMrD,KAAK,GAAG,MAAM,uBAAYK,IAAZ,EAAkBE,MAAlB,EAA0BW,IAA1B,EAAgCmB,QAAhC,CAApB;;AACA,YAAI,CAACrC,KAAL,EAAY;AACV,gBAAM+B,iBAAWuB,gBAAX,EAAN;AACD;;AAED,cAAMC,GAAG,GAAG,wBAAYvD,KAAZ,CAAZ,CANE,CAOF;;AACA,cAAMwD,WAAW,GAAG,iBAAKxD,KAAL,EAAY,CAAZ,CAApB;AACA,cAAMC,OAAO,GAAG,IAAIC,IAAJ,GAAWuD,OAAX,EAAhB;AAEA;AACV;AACA;AACA;AACA;;AACU,cAAMN,SAAgB,GAAG;AACvBjC,UAAAA,IAAI,EAAEN,IADiB;AAEvBZ,UAAAA,KAAK,EAAEwD,WAFgB;AAGvBD,UAAAA,GAHuB;AAIvBG,UAAAA,IAAI,EAAEnB,cAJiB;AAKvBD,UAAAA,QALuB;AAMvBrC,UAAAA;AANuB,SAAzB;AASA,cAAMK,OAAO,CAAC6C,SAAR,CAAkBA,SAAlB,CAAN;;AACA9B,uBAAOC,KAAP,CAAa;AAAEiC,UAAAA,GAAF;AAAO3C,UAAAA;AAAP,SAAb,EAA4B,2CAA5B;;AACA,eAAOD,IAAI,CACTZ,cAAc,CAAC;AACbC,UAAAA,KADa;AAEbkB,UAAAA,IAAI,EAAEN,IAFO;AAGb2C,UAAAA,GAAG,EAAEJ,SAAS,CAACI,GAHF;AAIbG,UAAAA,IAAI,EAAEnB,cAJO;AAKbD,UAAAA,QALa;AAMbrC,UAAAA,OAAO,EAAEkD,SAAS,CAAClD;AANN,SAAD,CADL,CAAX;AAUD,OArCD,CAqCE,OAAO4B,KAAP,EAAmB;AACnBR,uBAAOQ,KAAP,CAAa;AAAEA,UAAAA,KAAK,EAAEA,KAAK,CAACC;AAAf,SAAb,EAAmC,qCAAnC;;AACA,eAAOnB,IAAI,CAACoB,iBAAWuB,gBAAX,CAA4BzB,KAAK,CAACK,OAAlC,CAAD,CAAX;AACD;AACF,KAvDD;AAwDD,GAlEH;AAqEA9B,EAAAA,KAAK,CAACuD,MAAN,CACE,kCADF,EAEE,OAAOlD,GAAP,EAA4BC,GAA5B,EAA2CC,IAA3C,KAAsE;AACpE,UAAM;AACJiD,MAAAA,MAAM,EAAE;AAAEC,QAAAA;AAAF;AADJ,QAEFpD,GAFJ;AAGA,UAAM;AAAEG,MAAAA;AAAF,QAAWH,GAAG,CAACI,WAArB;;AAEA,QAAIC,gBAAEC,KAAF,CAAQH,IAAR,MAAkB,KAAtB,EAA6B;AAC3BS,qBAAOC,KAAP,CAAa;AAAEV,QAAAA;AAAF,OAAb,EAAuB,sCAAvB;;AACA,UAAI;AACF,cAAMN,OAAO,CAACwD,WAAR,CAAoBlD,IAApB,EAA0BiD,QAA1B,CAAN;;AACAxC,uBAAO0C,IAAP,CAAY;AAAEF,UAAAA,QAAF;AAAYjD,UAAAA;AAAZ,SAAZ,EAAgC,mDAAhC;;AACA,eAAOD,IAAI,CAAC,EAAD,CAAX;AACD,OAJD,CAIE,OAAOkB,KAAP,EAAmB;AACnBR,uBAAOQ,KAAP,CAAa;AAAEA,UAAAA,KAAK,EAAEA,KAAK,CAACC;AAAf,SAAb,EAAmC,qCAAnC;;AACA,eAAOnB,IAAI,CAACoB,iBAAWC,OAAX,CAAmBR,kBAAYS,cAA/B,EAA+CJ,KAAK,CAACK,OAArD,CAAD,CAAX;AACD;AACF;;AACD,WAAOvB,IAAI,CAACoB,iBAAWI,eAAX,EAAD,CAAX;AACD,GApBH;AAsBD","sourcesContent":["import { Response, Router } from 'express';\nimport _ from 'lodash';\n\nimport { getApiToken } from '@verdaccio/auth';\nimport { IAuth } from '@verdaccio/auth';\nimport { HTTP_STATUS, SUPPORT_ERRORS, errorUtils } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\nimport { Storage } from '@verdaccio/store';\nimport { Config, RemoteUser, Token } from '@verdaccio/types';\nimport { mask, stringToMD5 } from '@verdaccio/utils';\n\nimport { $NextFunctionVer, $RequestExtend } from '../../types/custom';\n\nexport type NormalizeToken = Token & {\n created: string;\n};\n\nfunction normalizeToken(token: Token): NormalizeToken {\n return {\n ...token,\n created: new Date(token.created).toISOString(),\n };\n}\n\n// https://github.com/npm/npm-profile/blob/latest/lib/index.js\nexport default function (route: Router, auth: IAuth, storage: Storage, config: Config): void {\n route.get(\n '/-/npm/v1/tokens',\n async function (req: $RequestExtend, res: Response, next: $NextFunctionVer) {\n const { name } = req.remote_user;\n\n if (_.isNil(name) === false) {\n try {\n const tokens = await storage.readTokens({ user: name });\n const totalTokens = tokens.length;\n logger.debug({ totalTokens }, 'token list retrieved: @{totalTokens}');\n\n res.status(HTTP_STATUS.OK);\n return next({\n objects: tokens.map(normalizeToken),\n urls: {\n next: '', // TODO: pagination?\n },\n });\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token list has failed: @{error}');\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message));\n }\n }\n return next(errorUtils.getUnauthorized());\n }\n );\n\n route.post(\n '/-/npm/v1/tokens',\n function (req: $RequestExtend, res: Response, next: $NextFunctionVer) {\n const { password, readonly, cidr_whitelist } = req.body;\n const { name } = req.remote_user;\n\n if (!_.isBoolean(readonly) || !_.isArray(cidr_whitelist)) {\n return next(errorUtils.getCode(HTTP_STATUS.BAD_DATA, SUPPORT_ERRORS.PARAMETERS_NOT_VALID));\n }\n\n auth.authenticate(name, password, async (err, user: RemoteUser) => {\n if (err) {\n const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR;\n return next(errorUtils.getCode(errorCode, err.message));\n }\n\n req.remote_user = user;\n\n if (!_.isFunction(storage.saveToken)) {\n return next(\n errorUtils.getCode(HTTP_STATUS.NOT_IMPLEMENTED, SUPPORT_ERRORS.STORAGE_NOT_IMPLEMENT)\n );\n }\n\n try {\n const token = await getApiToken(auth, config, user, password);\n if (!token) {\n throw errorUtils.getInternalError();\n }\n\n const key = stringToMD5(token);\n // TODO: use a utility here\n const maskedToken = mask(token, 5);\n const created = new Date().getTime();\n\n /**\n * cidr_whitelist: is not being used, we pass it through\n * token: we do not store the real token (it is generated once and retrieved\n * to the user), just a mask of it.\n */\n const saveToken: Token = {\n user: name,\n token: maskedToken,\n key,\n cidr: cidr_whitelist,\n readonly,\n created,\n };\n\n await storage.saveToken(saveToken);\n logger.debug({ key, name }, 'token @{key} was created for user @{name}');\n return next(\n normalizeToken({\n token,\n user: name,\n key: saveToken.key,\n cidr: cidr_whitelist,\n readonly,\n created: saveToken.created,\n })\n );\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token creation has failed: @{error}');\n return next(errorUtils.getInternalError(error.message));\n }\n });\n }\n );\n\n route.delete(\n '/-/npm/v1/tokens/token/:tokenKey',\n async (req: $RequestExtend, res: Response, next: $NextFunctionVer) => {\n const {\n params: { tokenKey },\n } = req;\n const { name } = req.remote_user;\n\n if (_.isNil(name) === false) {\n logger.debug({ name }, '@{name} has requested remove a token');\n try {\n await storage.deleteToken(name, tokenKey);\n logger.info({ tokenKey, name }, 'token id @{tokenKey} was revoked for user @{name}');\n return next({});\n } catch (error: any) {\n logger.error({ error: error.msg }, 'token creation has failed: @{error}');\n return next(errorUtils.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message));\n }\n }\n return next(errorUtils.getUnauthorized());\n }\n );\n}\n"],"file":"token.js"}
|
package/build/whoami.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/whoami.ts"],"names":["debug","route","get","req","res","next","headers","referer","username","remote_user","name"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/whoami.ts"],"names":["debug","route","get","req","res","next","headers","referer","username","remote_user","name"],"mappings":";;;;;;;AAAA;;;;AAKA,MAAMA,KAAK,GAAG,oBAAW,oBAAX,CAAd;;AAEe,kBAAUC,KAAV,EAA+B;AAC5CA,EAAAA,KAAK,CAACC,GAAN,CAAU,SAAV,EAAqB,CAACC,GAAD,EAAsBC,GAAtB,EAAqCC,IAArC,KAAsE;AACzFL,IAAAA,KAAK,CAAC,kBAAD,CAAL;;AACA,QAAIG,GAAG,CAACG,OAAJ,CAAYC,OAAZ,KAAwB,QAA5B,EAAsC;AACpC,YAAMC,QAAQ,GAAGL,GAAG,CAACM,WAAJ,CAAgBC,IAAjC,CADoC,CAEpC;AACA;AACA;AACA;AACA;;AACAV,MAAAA,KAAK,CAAC,wBAAD,CAAL;AACA,aAAOK,IAAI,CAAC;AAAEG,QAAAA,QAAQ,EAAEA;AAAZ,OAAD,CAAX;AACD,KATD,MASO;AACLR,MAAAA,KAAK,CAAC,6BAAD,CAAL,CADK,CAEL;;AACA,aAAOK,IAAI,CAAC,OAAD,CAAX;AACD;AACF,GAhBD;AAkBAJ,EAAAA,KAAK,CAACC,GAAN,CAAU,WAAV,EAAuB,CAACC,GAAD,EAAsBC,GAAtB,EAAqCC,IAArC,KAAqE;AAC1F,UAAMG,QAAQ,GAAGL,GAAG,CAACM,WAAJ,CAAgBC,IAAjC,CAD0F,CAE1F;AACA;AACA;AACA;AACA;;AAEAV,IAAAA,KAAK,CAAC,qBAAD,EAAwBQ,QAAxB,CAAL;AACA,WAAOH,IAAI,CAAC;AAAEG,MAAAA,QAAQ,EAAEA;AAAZ,KAAD,CAAX;AACD,GAVD;AAWD","sourcesContent":["import buildDebug from 'debug';\nimport { Response, Router } from 'express';\n\nimport { $NextFunctionVer, $RequestExtend } from '../types/custom';\n\nconst debug = buildDebug('verdaccio:api:user');\n\nexport default function (route: Router): void {\n route.get('/whoami', (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => {\n debug('whoami: reditect');\n if (req.headers.referer === 'whoami') {\n const username = req.remote_user.name;\n // FIXME: this service should return 401 if user missing\n // if (!username) {\n // debug('whoami: user not found');\n // return next(getUnauthorized('Unauthorized'));\n // }\n debug('whoami: logged by user');\n return next({ username: username });\n } else {\n debug('whoami: redirect next route');\n // redirect to the route below\n return next('route');\n }\n });\n\n route.get('/-/whoami', (req: $RequestExtend, res: Response, next: $NextFunctionVer): any => {\n const username = req.remote_user.name;\n // FIXME: this service should return 401 if user missing\n // if (!username) {\n // debug('whoami: user not found');\n // return next(getUnauthorized('Unauthorized'));\n // }\n\n debug('whoami: response %o', username);\n return next({ username: username });\n });\n}\n"],"file":"whoami.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdaccio/api",
|
|
3
|
-
"version": "6.0.0-6-next.
|
|
3
|
+
"version": "6.0.0-6-next.20",
|
|
4
4
|
"description": "loaders logic",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -30,31 +30,29 @@
|
|
|
30
30
|
},
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@verdaccio/auth": "6.0.0-6-next.
|
|
34
|
-
"@verdaccio/config": "6.0.0-6-next.
|
|
35
|
-
"@verdaccio/core": "6.0.0-6-next.
|
|
36
|
-
"@verdaccio/hooks": "6.0.0-6-next.
|
|
37
|
-
"@verdaccio/logger": "6.0.0-6-next.
|
|
38
|
-
"@verdaccio/middleware": "6.0.0-6-next.
|
|
39
|
-
"@verdaccio/store": "6.0.0-6-next.
|
|
40
|
-
"@verdaccio/
|
|
41
|
-
"@verdaccio/utils": "6.0.0-6-next.7",
|
|
33
|
+
"@verdaccio/auth": "6.0.0-6-next.17",
|
|
34
|
+
"@verdaccio/config": "6.0.0-6-next.12",
|
|
35
|
+
"@verdaccio/core": "6.0.0-6-next.4",
|
|
36
|
+
"@verdaccio/hooks": "6.0.0-6-next.11",
|
|
37
|
+
"@verdaccio/logger": "6.0.0-6-next.9",
|
|
38
|
+
"@verdaccio/middleware": "6.0.0-6-next.17",
|
|
39
|
+
"@verdaccio/store": "6.0.0-6-next.18",
|
|
40
|
+
"@verdaccio/utils": "6.0.0-6-next.10",
|
|
42
41
|
"abortcontroller-polyfill": "1.7.3",
|
|
43
42
|
"cookies": "0.8.0",
|
|
44
|
-
"debug": "4.3.
|
|
45
|
-
"
|
|
43
|
+
"debug": "4.3.3",
|
|
44
|
+
"body-parser": "1.19.1",
|
|
45
|
+
"express": "4.17.2",
|
|
46
46
|
"lodash": "4.17.21",
|
|
47
|
-
"mime": "2.
|
|
47
|
+
"mime": "2.6.0",
|
|
48
48
|
"semver": "7.3.5"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@types/node": "16.
|
|
52
|
-
"@verdaccio/server": "6.0.0-6-next.
|
|
53
|
-
"@verdaccio/types": "11.0.0-6-next.
|
|
51
|
+
"@types/node": "16.11.19",
|
|
52
|
+
"@verdaccio/server": "6.0.0-6-next.25",
|
|
53
|
+
"@verdaccio/types": "11.0.0-6-next.10",
|
|
54
54
|
"@verdaccio/helper": "1.0.0",
|
|
55
|
-
"
|
|
56
|
-
"lodash": "4.17.21",
|
|
57
|
-
"supertest": "6.1.6"
|
|
55
|
+
"supertest": "6.2.1"
|
|
58
56
|
},
|
|
59
57
|
"funding": {
|
|
60
58
|
"type": "opencollective",
|