feat: migrate readme to fastify (#2613)
* feat: migrate readme to fastify * Update readme.ts
This commit is contained in:
parent
d390a66158
commit
41475949ba
|
@ -41,6 +41,7 @@
|
|||
"@verdaccio/store": "workspace:6.0.0-6-next.15",
|
||||
"@verdaccio/tarball": "workspace:11.0.0-6-next.9",
|
||||
"@verdaccio/utils": "workspace:6.0.0-6-next.8",
|
||||
"@verdaccio/readme": "workspace:11.0.0-6-next.4",
|
||||
"abortcontroller-polyfill": "1.7.3",
|
||||
"core-js": "3.17.2",
|
||||
"debug": "4.3.2",
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
import buildDebug from 'debug';
|
||||
import { FastifyInstance } from 'fastify';
|
||||
import _ from 'lodash';
|
||||
|
||||
import sanitizyReadme from '@verdaccio/readme';
|
||||
|
||||
const debug = buildDebug('verdaccio:api:whoami');
|
||||
export const NOT_README_FOUND = 'ERROR: No README data found!';
|
||||
|
||||
function getReadme(fastify: FastifyInstance, request: any, packageName, callback) {
|
||||
fastify.storage.getPackage({
|
||||
name: packageName,
|
||||
uplinksLook: true,
|
||||
req: request.raw,
|
||||
callback: function (err, readme): void {
|
||||
debug('readme pkg %o', readme?.name);
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const parsedReadme = parseReadme(readme.name, readme.readme);
|
||||
callback(null, parsedReadme);
|
||||
} catch {
|
||||
callback(fastify.statusCode.NOT_FOUND).send(err);
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async function readmeRoute(fastify: FastifyInstance) {
|
||||
fastify.get('/package/readme/:packageName', async (request, reply) => {
|
||||
// @ts-ignore
|
||||
const { version, packageName } = request.params;
|
||||
debug('readme name %s version: %s', packageName, version);
|
||||
getReadme(fastify, request, packageName, (err, readme) => {
|
||||
if (err) {
|
||||
reply.send(err);
|
||||
} else {
|
||||
reply.code(fastify.statusCode.OK).send(readme);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
fastify.get('/package/readme/:scope/:packageName', async (request, reply) => {
|
||||
// @ts-ignore
|
||||
const { scope, packageName } = request.params;
|
||||
const packageNameScope = scope ? `${scope}/${packageName}` : packageName;
|
||||
debug('readme name %s', packageName);
|
||||
debug('readme endpoint scope:%s pkg: %s', scope, packageName);
|
||||
getReadme(fastify, request, packageNameScope, (err, readme) => {
|
||||
if (err) {
|
||||
reply.send(err);
|
||||
} else {
|
||||
reply.code(fastify.statusCode.OK).send(readme);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export default readmeRoute;
|
||||
|
||||
/**
|
||||
* parse package readme - markdown/ascii
|
||||
* @param {String} packageName name of package
|
||||
* @param {String} readme package readme
|
||||
* @return {String} converted html template
|
||||
*/
|
||||
export function parseReadme(packageName: string, readme: string): string | void {
|
||||
if (_.isEmpty(readme) === false) {
|
||||
debug('sanizity readme');
|
||||
return sanitizyReadme(readme);
|
||||
}
|
||||
throw new Error('ERROR: No README data found!');
|
||||
}
|
|
@ -13,6 +13,7 @@ import authPlugin from './plugins/auth';
|
|||
import configPlugin from './plugins/config';
|
||||
import coreUtils from './plugins/coreUtils';
|
||||
import storagePlugin from './plugins/storage';
|
||||
import readme from './routes/web/api/readme';
|
||||
|
||||
const debug = buildDebug('verdaccio:fastify');
|
||||
|
||||
|
@ -34,6 +35,7 @@ async function startServer({ logger, config }) {
|
|||
instance.register(search);
|
||||
instance.register(whoami);
|
||||
instance.register(tarball);
|
||||
instance.register(readme, { prefix: '/-/verdaccio' });
|
||||
done();
|
||||
});
|
||||
|
||||
|
|
|
@ -356,6 +356,7 @@ importers:
|
|||
'@verdaccio/config': workspace:6.0.0-6-next.10
|
||||
'@verdaccio/core': workspace:6.0.0-6-next.3
|
||||
'@verdaccio/logger': workspace:6.0.0-6-next.7
|
||||
'@verdaccio/readme': workspace:11.0.0-6-next.4
|
||||
'@verdaccio/store': workspace:6.0.0-6-next.15
|
||||
'@verdaccio/tarball': workspace:11.0.0-6-next.9
|
||||
'@verdaccio/types': workspace:11.0.0-6-next.9
|
||||
|
@ -373,6 +374,7 @@ importers:
|
|||
'@verdaccio/config': link:../../config
|
||||
'@verdaccio/core': link:../core
|
||||
'@verdaccio/logger': link:../../logger
|
||||
'@verdaccio/readme': link:../readme
|
||||
'@verdaccio/store': link:../../store
|
||||
'@verdaccio/tarball': link:../tarball
|
||||
'@verdaccio/utils': link:../../utils
|
||||
|
|
Loading…
Reference in New Issue