Skip to content

Commit 620b366

Browse files
authored
feat!: update marked lib to 15.0.0 (#559)
1 parent d9fc3aa commit 620b366

File tree

8 files changed

+28
-30
lines changed

8 files changed

+28
-30
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ StackBlitz available @ [https://stackblitz.com/edit/ngx-markdown](https://stackb
5454
To add ngx-markdown along with the required marked library to your `package.json` use the following commands.
5555

5656
```bash
57-
npm install ngx-markdown marked@^12.0.0 --save
57+
npm install ngx-markdown marked@^15.0.0 --save
5858
```
5959

6060
### Syntax highlight

demo/src/app/marked-options-factory.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ export function markedOptionsFactory(anchorService: AnchorService): MarkedOption
55
const renderer = new MarkedRenderer();
66

77
// fix `href` for absolute link with fragments so that _copy-paste_ urls are correct
8-
renderer.link = (href: string, title: string, text: string) => {
9-
return MarkedRenderer.prototype.link.call(renderer, anchorService.normalizeExternalUrl(href), title, text);
8+
renderer.link = ({ href, text }) => {
9+
return `<a href="${anchorService.normalizeExternalUrl(href)}">${text}</a>`;
1010
};
1111

1212
return { renderer };

demo/src/app/rerender/rerender.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default class RerenderComponent implements OnInit, OnDestroy {
4242

4343
headings: Element[] | undefined;
4444

45-
markdown = `## Markdown __rulez__!
45+
markdown = `## Markdown rulez!
4646
---
4747
4848
### Syntax highlight
@@ -85,9 +85,9 @@ const language = 'typescript';
8585
private overrideRenderer(styleAttribute: string): void {
8686
this.overrideEnabled = true;
8787

88-
this.markdownService.renderer.heading = (text: string, level: number): string => {
88+
this.markdownService.renderer.heading = ({ text, depth }): string => {
8989
return this.overrideEnabled
90-
? `<h${level}${styleAttribute}>${text}</h${level}>`
90+
? `<h${depth}${styleAttribute}>${text}</h${depth}>`
9191
: false as unknown as string;
9292
};
9393
}

lib/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"@angular/common": "^19.0.0",
3434
"@angular/core": "^19.0.0",
3535
"@angular/platform-browser": "^19.0.0",
36-
"marked": ">= 9.0.0 < 13.0.0",
36+
"marked": "^15.0.0",
3737
"rxjs": "^6.5.3 || ^7.4.0",
3838
"zone.js": "~0.15.0"
3939
},

lib/src/markdown.service.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { HttpClientTestingModule, HttpTestingController } from '@angular/common/
44
import { ComponentRef, EmbeddedViewRef, SecurityContext, TemplateRef, ViewContainerRef, ViewRef } from '@angular/core';
55
import { TestBed } from '@angular/core/testing';
66
import { BrowserModule, DomSanitizer } from '@angular/platform-browser';
7-
import { marked, MarkedExtension } from 'marked';
7+
import { marked, MarkedExtension, Tokens } from 'marked';
88
import { first } from 'rxjs/operators';
99
import { ClipboardButtonComponent } from './clipboard-button.component';
1010
import { KatexOptions } from './katex-options';
@@ -139,14 +139,14 @@ describe('MarkdownService', () => {
139139

140140
it('should update option.renderer when updated', () => {
141141

142-
const blockquote = (quote: string) => `<mock-blockquote>${quote}</mock-blockquote>`;
142+
const blockquote = ({ text }: Tokens.Blockquote) => `<mock-blockquote>${text}</mock-blockquote>`;
143143

144144
markdownService.renderer.blockquote = blockquote;
145145

146-
const quoteText = 'foobar';
147-
const expectedBlockquote = blockquote(quoteText);
148-
const rendererBlockquote = (markdownService.renderer as any).blockquote(quoteText);
149-
const optionsRendererBlockquote = (markdownService.options.renderer as any)!.blockquote(quoteText);
146+
const blockquoteToken = { text: 'foobar' } as Tokens.Blockquote;
147+
const expectedBlockquote = blockquote(blockquoteToken);
148+
const rendererBlockquote = markdownService.renderer.blockquote(blockquoteToken);
149+
const optionsRendererBlockquote = markdownService.options.renderer!.blockquote(blockquoteToken);
150150

151151
expect(rendererBlockquote).toBe(expectedBlockquote);
152152
expect(optionsRendererBlockquote).toBe(expectedBlockquote);

lib/src/markdown.service.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,13 @@ declare let Prism: {
5151
highlightAllUnder: (element: Element | Document) => void;
5252
};
5353

54-
5554
export const errorJoyPixelsNotLoaded = '[ngx-markdown] When using the `emoji` attribute you *have to* include Emoji-Toolkit files to `angular.json` or use imports. See README for more information';
5655
export const errorKatexNotLoaded = '[ngx-markdown] When using the `katex` attribute you *have to* include KaTeX files to `angular.json` or use imports. See README for more information';
5756
export const errorMermaidNotLoaded = '[ngx-markdown] When using the `mermaid` attribute you *have to* include Mermaid files to `angular.json` or use imports. See README for more information';
5857
export const errorClipboardNotLoaded = '[ngx-markdown] When using the `clipboard` attribute you *have to* include Clipboard files to `angular.json` or use imports. See README for more information';
5958
export const errorClipboardViewContainerRequired = '[ngx-markdown] When using the `clipboard` attribute you *have to* provide the `viewContainerRef` parameter to `MarkdownService.render()` function';
6059
export const errorSrcWithoutHttpClient = '[ngx-markdown] When using the `src` attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information';
6160

62-
6361
export const SECURITY_CONTEXT = new InjectionToken<SecurityContext>('SECURITY_CONTEXT');
6462

6563
export interface ParseOptions {
@@ -284,10 +282,10 @@ export class MarkdownService {
284282
}
285283

286284
const defaultCode = renderer.code;
287-
renderer.code = function (code: string, language: string | undefined, isEscaped: boolean) {
288-
return language === 'mermaid'
289-
? `<div class="mermaid">${code}</div>`
290-
: defaultCode.call(this, code, language, isEscaped);
285+
renderer.code = (token) => {
286+
return token.lang === 'mermaid'
287+
? `<div class="mermaid">${token.text}</div>`
288+
: defaultCode(token);
291289
};
292290

293291
extendedRenderer.ɵNgxMarkdownRendererExtendedForMermaid = true;

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@
6464
"gumshoejs": "^5.1.2",
6565
"hammerjs": "~2.0.8",
6666
"katex": "^0.16.2",
67-
"marked": "^12.0.0",
68-
"marked-gfm-heading-id": "^3.1.3",
67+
"marked": "^15.0.0",
68+
"marked-gfm-heading-id": "^4.1.1",
6969
"mermaid": "^11.2.1",
7070
"ngx-markdown": "file:lib",
7171
"prismjs": "^1.29.0",

yarn.lock

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7522,23 +7522,23 @@ map-visit@^1.0.0:
75227522
dependencies:
75237523
object-visit "^1.0.0"
75247524

7525-
marked-gfm-heading-id@^3.1.3:
7526-
version "3.2.0"
7527-
resolved "https://registry.yarnpkg.com/marked-gfm-heading-id/-/marked-gfm-heading-id-3.2.0.tgz#d0344f786b4ab55415048260aad147f4e8e904b6"
7528-
integrity sha512-Xfxpr5lXLDLY10XqzSCA9l2dDaiabQUgtYM9hw8yunyVsB/xYBRpiic6BOiY/EAJw1ik1eWr1ET1HKOAPZBhXg==
7525+
marked-gfm-heading-id@^4.1.1:
7526+
version "4.1.1"
7527+
resolved "https://registry.yarnpkg.com/marked-gfm-heading-id/-/marked-gfm-heading-id-4.1.1.tgz#c6a46a10272745f63c6b03439dc239543a8324e8"
7528+
integrity sha512-EeQZieAQmsI6c2tWLx0ETd0VjPwLV8qi+HT0dIsfVMERm0rCIuXfRvZXJbo1SgUi++lmuR1LVY+QzgNiLNvVpw==
75297529
dependencies:
75307530
github-slugger "^2.0.0"
75317531

7532-
marked@^12.0.0:
7533-
version "12.0.2"
7534-
resolved "https://registry.yarnpkg.com/marked/-/marked-12.0.2.tgz#b31578fe608b599944c69807b00f18edab84647e"
7535-
integrity sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==
7536-
75377532
marked@^13.0.2:
75387533
version "13.0.3"
75397534
resolved "https://registry.yarnpkg.com/marked/-/marked-13.0.3.tgz#5c5b4a5d0198060c7c9bc6ef9420a7fed30f822d"
75407535
integrity sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==
75417536

7537+
marked@^15.0.0:
7538+
version "15.0.1"
7539+
resolved "https://registry.yarnpkg.com/marked/-/marked-15.0.1.tgz#ed4a33b40b631623a1c3e68eb94663de740c5710"
7540+
integrity sha512-VnnE19XO2Vb2oZeH8quAepfrb6Aaz4OoY8yZQACfuy/5KVJ0GxYC0Qxzz/iuc+g5UF7H0HJ+QROfvH26XeBdDA==
7541+
75427542
75437543
version "0.3.0"
75447544
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"

0 commit comments

Comments
 (0)