diff --git a/apps/client/package.json b/apps/client/package.json index 6dfde853f..b6860498d 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -77,7 +77,7 @@ ] }, "circular-deps": { - "command": "pnpx dpdm -T {projectRoot}/src/**/*.ts --tree=false --warning=false" + "command": "pnpx dpdm -T {projectRoot}/src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular" } } } diff --git a/apps/client/src/services/server.ts b/apps/client/src/services/server.ts index 861a20e60..cb557b19b 100644 --- a/apps/client/src/services/server.ts +++ b/apps/client/src/services/server.ts @@ -1,6 +1,5 @@ import utils, { isShare } from "./utils.js"; import ValidationError from "./validation_error.js"; -import { throwError } from "./ws.js"; type Headers = Record; @@ -277,6 +276,7 @@ async function reportError(method: string, url: string, statusCode: number, resp } else { const title = `${statusCode} ${method} ${url}`; toastService.showErrorTitleAndMessage(title, messageStr); + const { throwError } = await import("./ws.js"); throwError(`${title} - ${message}`); } } diff --git a/apps/server/src/services/import/markdown.spec.ts b/apps/server/src/services/import/markdown.spec.ts index 8768d3252..3aa67bd9d 100644 --- a/apps/server/src/services/import/markdown.spec.ts +++ b/apps/server/src/services/import/markdown.spec.ts @@ -281,4 +281,10 @@ $$`; expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); }); + it("supports wikilink with root-relative path", () => { + const input = `oh no my banana I bought on [[journal/monday]] has gone off! I’m taking it back to the [[other/shop]] for a refund`; + const expected = `

oh no my banana I bought on journal/monday has gone off! I’m taking it back to the other/shop for a refund

`; + expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); + }); + }); diff --git a/apps/server/src/services/import/markdown.ts b/apps/server/src/services/import/markdown.ts index 498127397..c945143fa 100644 --- a/apps/server/src/services/import/markdown.ts +++ b/apps/server/src/services/import/markdown.ts @@ -23,7 +23,9 @@ class CustomMarkdownRenderer extends Renderer { } override paragraph(data: Tokens.Paragraph): string { - return super.paragraph(data).trimEnd(); + let text = super.paragraph(data).trimEnd(); + text = processWikiLinks(text); + return text; } override code({ text, lang }: Tokens.Code): string { @@ -212,6 +214,11 @@ function restoreFromMap(text: string, map: Map): string { return text.replace(new RegExp(pattern, 'g'), match => map.get(match) ?? match); } +function processWikiLinks(paragraph: string) { + paragraph = paragraph.replaceAll(/\[\[([^\[\]]+)\]\]/g, `$1`); + return paragraph; +} + const renderer = new CustomMarkdownRenderer({ async: false }); export default {