Skip to content

Commit

Permalink
feat: enable usePrettyRefs for nextJS publishing and preview (#1239)
Browse files Browse the repository at this point in the history
* feat: support usePrettyRef config

* fix: handle cases for MD_DENDRON and MD_REGULAR

* chore: update snapshots

* chore: add tests for preview and publishing

* chore: use getProps for getting config keys

* fix: wrong import

* add default config for usePrettyRef

* chore: update snapshot

* chore: fix broken tests

* chore: fix broken test
  • Loading branch information
hikchoi committed Sep 1, 2021
1 parent 66111a1 commit 8a456a9
Show file tree
Hide file tree
Showing 9 changed files with 337 additions and 139 deletions.
1 change: 1 addition & 0 deletions packages/engine-server/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ export class DConfig {
mermaid: true,
useKatex: true,
autoFoldFrontmatter: true,
usePrettyRefs: true,
dev: {
enablePreviewV2: true,
},
Expand Down
1 change: 0 additions & 1 deletion packages/engine-server/src/markdown/remark/dendronPub.ts
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,6 @@ function plugin(this: Unified.Processor, opts?: PluginOpts): Transformer {
const ndata = node.data as NoteRefDataV4;
const copts: NoteRefsOpts = {
wikiLinkOpts: opts?.wikiLinkOpts,
prettyRefs: opts?.prettyRefs,
};
const procOpts = MDUtilsV4.getProcOpts(proc);
const { data } = convertNoteRefASTV2({
Expand Down
21 changes: 12 additions & 9 deletions packages/engine-server/src/markdown/remark/noteRefsV2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
import { file2Note } from "@dendronhq/common-server";
import _ from "lodash";
import { brk, html, paragraph, root } from "mdast-builder";
import { DConfig } from "../../config";
import { Eat } from "remark-parse";
import Unified, { Plugin } from "unified";
import { Node, Parent } from "unist";
Expand Down Expand Up @@ -306,39 +307,41 @@ export function convertNoteRefASTV2(
const refLvl = MDUtilsV4.getNoteRefLvl(proc());
let { dest, vault, config, shouldApplyPublishRules } =
MDUtilsV4.getDendronData(proc);

if (MDUtilsV5.isV5Active(proc)) {
shouldApplyPublishRules = MDUtilsV5.shouldApplyPublishingRules(proc);
}

if (link.data.vaultName) {
vault = VaultUtils.getVaultByNameOrThrow({
vaults: engine.vaults,
vname: link.data.vaultName,
})!;
}

if (!vault) {
return {
error: new DendronError({ message: "no vault specified" }),
data: [],
};
}
let { prettyRefs, wikiLinkOpts } = compilerOpts;
const { wikiLinkOpts } = compilerOpts;
const sitePrettyRefConfig = DConfig.getProp(procOpts.config, "site").usePrettyRefs;
const prettyRefConfig = DConfig.getProp(procOpts.config, "usePrettyRefs");
let prettyRefs = shouldApplyPublishRules
? sitePrettyRefConfig
: prettyRefConfig
if (
!prettyRefs &&
_.includes([DendronASTDest.HTML, DendronASTDest.MD_ENHANCED_PREVIEW], dest)
prettyRefs && _.includes(
[DendronASTDest.MD_DENDRON, DendronASTDest.MD_REGULAR],
dest
)
) {
prettyRefs = true;
prettyRefs = false;
}

if (refLvl >= MAX_REF_LVL) {
return {
error: new DendronError({ message: "too many nested note refs" }),
data: [MDUtilsV4.genMDMsg("too many nested note refs")],
};
}

let noteRefs: DNoteLoc[] = [];
if (link.from.fname.endsWith("*")) {
const resp = engine.queryNotesSync({ qs: link.from.fname, vault });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -121,6 +122,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -198,6 +200,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -242,6 +245,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -303,6 +307,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -115,6 +116,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -192,6 +194,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -236,6 +239,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -297,6 +301,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -365,6 +370,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down Expand Up @@ -420,6 +426,7 @@ lookupConfirmVaultOnCreate: false
mermaid: true
useKatex: true
autoFoldFrontmatter: true
usePrettyRefs: true
dev:
enablePreviewV2: true
lookup:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,3 +192,139 @@ VFile {
"messages": Array [],
}
`;
exports[`dendronPub usePrettyRefs config.site.usePrettyRef: false 1`] = `
VFile {
"contents": "<h1 id=\\"foo\\"><a aria-hidden=\\"true\\" class=\\"anchor-heading\\" href=\\"#foo\\"><svg aria-hidden=\\"true\\" viewBox=\\"0 0 16 16\\"><use xlink:href=\\"#svg-link\\"></use></svg></a>Foo</h1>
<p></p><p></p><p>bar body</p><p></p><p></p>
<hr>
<h2 id=\\"children\\"><a aria-hidden=\\"true\\" class=\\"anchor-heading\\" href=\\"#children\\"><svg aria-hidden=\\"true\\" viewBox=\\"0 0 16 16\\"><use xlink:href=\\"#svg-link\\"></use></svg></a>Children</h2>
<ol>
<li><a href=\\"/notes/foo.ch1.html\\">Ch1</a></li>
</ol>",
"cwd": "<PROJECT_ROOT>",
"data": Object {},
"history": Array [],
"messages": Array [],
}
`;
exports[`dendronPub usePrettyRefs config.site.usePrettyRef: true 1`] = `
VFile {
"contents": "<h1 id=\\"foo\\"><a aria-hidden=\\"true\\" class=\\"anchor-heading\\" href=\\"#foo\\"><svg aria-hidden=\\"true\\" viewBox=\\"0 0 16 16\\"><use xlink:href=\\"#svg-link\\"></use></svg></a>Foo</h1>
<p></p><p></p><div class=\\"portal-container\\">
<div class=\\"portal-head\\">
<div class=\\"portal-backlink\\">
<div class=\\"portal-title\\">From <span class=\\"portal-text-title\\">Bar</span></div>
</div>
</div>
<div id=\\"portal-parent-anchor\\" class=\\"portal-parent\\" markdown=\\"1\\">
<div class=\\"portal-parent-fader-top\\"></div>
<div class=\\"portal-parent-fader-bottom\\"></div><p>bar body</p>
</div></div><p></p><p></p>
<hr>
<h2 id=\\"children\\"><a aria-hidden=\\"true\\" class=\\"anchor-heading\\" href=\\"#children\\"><svg aria-hidden=\\"true\\" viewBox=\\"0 0 16 16\\"><use xlink:href=\\"#svg-link\\"></use></svg></a>Children</h2>
<ol>
<li><a href=\\"/notes/foo.ch1.html\\">Ch1</a></li>
</ol>",
"cwd": "<PROJECT_ROOT>",
"data": Object {},
"history": Array [],
"messages": Array [],
}
`;
exports[`dendronPub usePrettyRefs config.usePrettyRef: false 1`] = `
VFile {
"contents": "<h1 id=\\"foo\\">Foo</h1>
<p></p><p></p><p>bar body</p><p></p><p></p>
<hr>
<h2 id=\\"children\\">Children</h2>
<ol>
<li><a href=\\"foo.ch1.html\\">Ch1</a></li>
</ol>",
"cwd": "<PROJECT_ROOT>",
"data": Object {},
"history": Array [],
"messages": Array [],
}
`;
exports[`dendronPub usePrettyRefs config.usePrettyRef: true 1`] = `
VFile {
"contents": "<h1 id=\\"foo\\">Foo</h1>
<p></p><p></p><div class=\\"portal-container\\">
<div class=\\"portal-head\\">
<div class=\\"portal-backlink\\">
<div class=\\"portal-title\\">From <span class=\\"portal-text-title\\">Bar</span></div>
<a href=\\"bar.html\\" class=\\"portal-arrow\\">Go to text <span class=\\"right-arrow\\">→</span></a>
</div>
</div>
<div id=\\"portal-parent-anchor\\" class=\\"portal-parent\\" markdown=\\"1\\">
<div class=\\"portal-parent-fader-top\\"></div>
<div class=\\"portal-parent-fader-bottom\\"></div><p>bar body</p>
</div></div><p></p><p></p>
<hr>
<h2 id=\\"children\\">Children</h2>
<ol>
<li><a href=\\"foo.ch1.html\\">Ch1</a></li>
</ol>",
"cwd": "<PROJECT_ROOT>",
"data": Object {},
"history": Array [],
"messages": Array [],
}
`;
exports[`dendronPub usePrettyRefs usePrettyRef defaults to true in both cases 1`] = `
VFile {
"contents": "<h1 id=\\"foo\\">Foo</h1>
<p></p><p></p><div class=\\"portal-container\\">
<div class=\\"portal-head\\">
<div class=\\"portal-backlink\\">
<div class=\\"portal-title\\">From <span class=\\"portal-text-title\\">Bar</span></div>
<a href=\\"bar.html\\" class=\\"portal-arrow\\">Go to text <span class=\\"right-arrow\\">→</span></a>
</div>
</div>
<div id=\\"portal-parent-anchor\\" class=\\"portal-parent\\" markdown=\\"1\\">
<div class=\\"portal-parent-fader-top\\"></div>
<div class=\\"portal-parent-fader-bottom\\"></div><p>bar body</p>
</div></div><p></p><p></p>
<hr>
<h2 id=\\"children\\">Children</h2>
<ol>
<li><a href=\\"foo.ch1.html\\">Ch1</a></li>
</ol>",
"cwd": "<PROJECT_ROOT>",
"data": Object {},
"history": Array [],
"messages": Array [],
}
`;
exports[`dendronPub usePrettyRefs usePrettyRef defaults to true in both cases 2`] = `
VFile {
"contents": "<h1 id=\\"foo\\"><a aria-hidden=\\"true\\" class=\\"anchor-heading\\" href=\\"#foo\\"><svg aria-hidden=\\"true\\" viewBox=\\"0 0 16 16\\"><use xlink:href=\\"#svg-link\\"></use></svg></a>Foo</h1>
<p></p><p></p><div class=\\"portal-container\\">
<div class=\\"portal-head\\">
<div class=\\"portal-backlink\\">
<div class=\\"portal-title\\">From <span class=\\"portal-text-title\\">Bar</span></div>
<a href=\\"/notes/bar.html\\" class=\\"portal-arrow\\">Go to text <span class=\\"right-arrow\\">→</span></a>
</div>
</div>
<div id=\\"portal-parent-anchor\\" class=\\"portal-parent\\" markdown=\\"1\\">
<div class=\\"portal-parent-fader-top\\"></div>
<div class=\\"portal-parent-fader-bottom\\"></div><p>bar body</p>
</div></div><p></p><p></p>
<hr>
<h2 id=\\"children\\"><a aria-hidden=\\"true\\" class=\\"anchor-heading\\" href=\\"#children\\"><svg aria-hidden=\\"true\\" viewBox=\\"0 0 16 16\\"><use xlink:href=\\"#svg-link\\"></use></svg></a>Children</h2>
<ol>
<li><a href=\\"/notes/foo.ch1.html\\">Ch1</a></li>
</ol>",
"cwd": "<PROJECT_ROOT>",
"data": Object {},
"history": Array [],
"messages": Array [],
}
`;

0 comments on commit 8a456a9

Please sign in to comment.