Skip to content

Commit

Permalink
feat: highlight readme source code (#3506)
Browse files Browse the repository at this point in the history
* feat: highlight readme source code

* chore: fix tests

* Delete utils.spec.ts.snap
  • Loading branch information
juanpicado committed Nov 19, 2022
1 parent 07144c9 commit 8715a5c
Show file tree
Hide file tree
Showing 12 changed files with 32 additions and 142 deletions.
49 changes: 13 additions & 36 deletions .pnp.cjs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
7 changes: 4 additions & 3 deletions Dockerfile
Expand Up @@ -6,11 +6,12 @@ ENV NODE_ENV=production \
CI=true \
HUSKY_DEBUG=1

RUN apk --no-cache add openssl ca-certificates wget && \
RUN apk add --force-overwrite && \
apk --no-cache add openssl ca-certificates wget && \
apk --no-cache add g++ gcc libgcc libstdc++ linux-headers make python3 && \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
wget -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.29-r0/glibc-2.29-r0.apk && \
apk add glibc-2.29-r0.apk
wget -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk && \
apk add --force-overwrite glibc-2.35-r0.apk

WORKDIR /opt/verdaccio-build
COPY . .
Expand Down
3 changes: 1 addition & 2 deletions package.json
Expand Up @@ -20,9 +20,8 @@
"dependencies": {
"@verdaccio/commons-api": "10.2.0",
"@verdaccio/local-storage": "10.3.1",
"@verdaccio/readme": "10.4.2",
"@verdaccio/streams": "10.2.0",
"@verdaccio/ui-theme": "6.0.0-6-next.50",
"@verdaccio/ui-theme": "6.0.0-6-next.51",
"JSONStream": "1.3.5",
"async": "3.2.4",
"body-parser": "1.20.1",
Expand Down
2 changes: 1 addition & 1 deletion src/api/web/endpoint/package.ts
Expand Up @@ -105,7 +105,7 @@ function addPackageWebApi(storage: IStorageHandler, auth: IAuth, config: Config)
res.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN);
const referer = req.get('Referer');
const pathname = referer ? new URL(referer).pathname : undefined;
next(parseReadme(info.name, info.readme, { pathname }));
next(parseReadme(info.name, info.readme));
},
});
});
Expand Down
11 changes: 5 additions & 6 deletions src/lib/utils.ts
Expand Up @@ -11,7 +11,6 @@ import validator from 'validator';

// eslint-disable-next-line max-len
import { getBadData, getBadRequest, getCode, getConflict, getForbidden, getInternalError, getNotFound, getServiceUnavailable, getUnauthorized } from '@verdaccio/commons-api';
import sanitizyReadme from '@verdaccio/readme';
import { Author, Config, Package, Version } from '@verdaccio/types';

import { AuthorAvatar, StringValue } from '../../types';
Expand Down Expand Up @@ -494,18 +493,18 @@ export function addGravatarSupport(pkgInfo: Package, online = true): AuthorAvata
* parse package readme - markdown/ascii
* @param {String} packageName name of package
* @param {String} readme package readme
* @param {Object} options sanitizyReadme options
* @return {String} converted html template
*/
export function parseReadme(packageName: string, readme: string, options: { pathname?: string | void } = {}): string | void {
export function parseReadme(packageName: string, readme: string): string | void {
if (_.isEmpty(readme) === false) {
return sanitizyReadme(readme, options);
return readme;
}

// logs readme not found error
logger.error({ packageName }, '@{packageName}: No readme found');
logger.info({ packageName }, '@{packageName}: No readme found');

return sanitizyReadme('ERROR: No README data found!');
return 'ERROR: No README data found!';
}

export function buildToken(type: string, token: string): string {
Expand Down
51 changes: 0 additions & 51 deletions test/unit/modules/utils/__snapshots__/utils.spec.ts.snap

This file was deleted.

20 changes: 2 additions & 18 deletions test/unit/modules/utils/utils.spec.ts
Expand Up @@ -404,26 +404,10 @@ describe('Utilities', () => {
});

describe('parseReadme', () => {
test('should parse makrdown text to html template', () => {
const markdown = '# markdown';
expect(parseReadme('testPackage', markdown)).toEqual('<h1 id="markdown">markdown</h1>');
expect(parseReadme('testPackage', String(readmeFile('markdown.md')))).toMatchSnapshot();
});

test('should pass for conversion of non-ascii to markdown text', () => {
const simpleText = 'simple text';
const randomText = '%%%%%**##==';
const randomTextMarkdown = 'simple text \n # markdown';

expect(parseReadme('testPackage', randomText)).toEqual('<p>%%%%%**##==</p>');
expect(parseReadme('testPackage', simpleText)).toEqual('<p>simple text</p>');
expect(parseReadme('testPackage', randomTextMarkdown)).toEqual('<p>simple text </p>\n<h1 id="markdown">markdown</h1>');
});

test('should show error for no readme data', () => {
const noData = '';
const spy = jest.spyOn(logger, 'error');
expect(parseReadme('testPackage', noData)).toEqual('<p>ERROR: No README data found!</p>');
const spy = jest.spyOn(logger, 'info');
expect(parseReadme('testPackage', noData)).toEqual('ERROR: No README data found!');
expect(spy).toHaveBeenCalledWith({ packageName: 'testPackage' }, '@{packageName}: No readme found');
});
});
Expand Down
31 changes: 6 additions & 25 deletions yarn.lock
Expand Up @@ -2978,17 +2978,6 @@ __metadata:
languageName: node
linkType: hard

"@verdaccio/readme@npm:10.4.2":
version: 10.4.2
resolution: "@verdaccio/readme@npm:10.4.2"
dependencies:
dompurify: 2.4.0
jsdom: 16.7.0
marked: 4.2.2
checksum: 73492f11378cb2d4047caa693bde9e322b730b1d79c84ecea92098b4fda104b644d6098b016819069c5a7482bff993e28c35fbbc69f98f23ce0a042cc30dbfc4
languageName: node
linkType: hard

"@verdaccio/streams@npm:10.2.0":
version: 10.2.0
resolution: "@verdaccio/streams@npm:10.2.0"
Expand All @@ -3003,10 +2992,10 @@ __metadata:
languageName: node
linkType: hard

"@verdaccio/ui-theme@npm:6.0.0-6-next.50":
version: 6.0.0-6-next.50
resolution: "@verdaccio/ui-theme@npm:6.0.0-6-next.50"
checksum: 1e7ac1608f89cacb058c6b822928ef5828d8797419a5bf8470502f17d4b3af9e48037ed22d19d5efa8d12612131d4fc4eef4bf7aa1b281b5b685cafc30b5583c
"@verdaccio/ui-theme@npm:6.0.0-6-next.51":
version: 6.0.0-6-next.51
resolution: "@verdaccio/ui-theme@npm:6.0.0-6-next.51"
checksum: b478cb7cd8bef2b6dfe924728d9869765b5f540536df84dfdb2318406c595cef39ab80d5f4a2296795ad476ea427f477830212170f9c10cd01f74dc728fe0481
languageName: node
linkType: hard

Expand Down Expand Up @@ -4994,13 +4983,6 @@ __metadata:
languageName: node
linkType: hard

"dompurify@npm:2.4.0":
version: 2.4.0
resolution: "dompurify@npm:2.4.0"
checksum: c93ea73cf8e3ba044588450198563e56ce6902e36d0e16e3699df2fa59e82c4fdd11d4ad04ef5024569ce96a35b46f29d0bbea522516add33cd39a7f56a8a675
languageName: node
linkType: hard

"dot-prop@npm:^5.1.0":
version: 5.3.0
resolution: "dot-prop@npm:5.3.0"
Expand Down Expand Up @@ -7950,7 +7932,7 @@ __metadata:
languageName: node
linkType: hard

"jsdom@npm:16.7.0, jsdom@npm:^16.4.0":
"jsdom@npm:^16.4.0":
version: 16.7.0
resolution: "jsdom@npm:16.7.0"
dependencies:
Expand Down Expand Up @@ -12115,10 +12097,9 @@ __metadata:
"@verdaccio-scope/verdaccio-auth-foo": 0.0.2
"@verdaccio/commons-api": 10.2.0
"@verdaccio/local-storage": 10.3.1
"@verdaccio/readme": 10.4.2
"@verdaccio/streams": 10.2.0
"@verdaccio/types": 10.7.0
"@verdaccio/ui-theme": 6.0.0-6-next.50
"@verdaccio/ui-theme": 6.0.0-6-next.51
JSONStream: 1.3.5
all-contributors-cli: 6.20.0
async: 3.2.4
Expand Down

0 comments on commit 8715a5c

Please sign in to comment.