Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ packages/core/test/unit/plugins/default/anchor.test.js
packages/core/test/unit/plugins/default/plantuml.test.js
packages/core/test/unit/plugins/default/shorthandSyntax.test.js
packages/core/test/unit/plugins/default/tree.test.js
packages/core/src/plugins/algolia.js
packages/core/src/plugins/disqus.js
packages/core/src/plugins/filterTags.js
packages/core/src/plugins/googleAnalytics.js
packages/core/src/plugins/mathDelimiters.js

# Rules for pure JS files
packages/core/src/lib/markdown-it/patches/*
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -130,5 +130,10 @@ packages/core/test/unit/plugins/default/anchor.test.js
packages/core/test/unit/plugins/default/plantuml.test.js
packages/core/test/unit/plugins/default/shorthandSyntax.test.js
packages/core/test/unit/plugins/default/tree.test.js
packages/core/src/plugins/algolia.js
packages/core/src/plugins/disqus.js
packages/core/src/plugins/filterTags.js
packages/core/src/plugins/googleAnalytics.js
packages/core/src/plugins/mathDelimiters.js

# --- packages/core end ---
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
const cheerio = module.parent.require('cheerio');
import cheerio from 'cheerio';
import { FrontMatter, PluginContext } from './Plugin';

const ALGOLIA_CSS_URL = 'https://cdn.jsdelivr.net/npm/@docsearch/css@3.2.0/dist/style.css';
const ALGOLIA_JS_URL = 'https://cdn.jsdelivr.net/npm/@docsearch/js@3.2.0/dist/umd/index.js';
const ALGOLIA_INPUT_SELECTOR = '#algolia-search-input';

function buildAlgoliaInitScript(pluginContext) {
function buildAlgoliaInitScript(pluginContext: PluginContext) {
return `<script>
docsearch({
container: "${ALGOLIA_INPUT_SELECTOR}",
Expand All @@ -25,7 +26,7 @@ function insertAlgoliaCustomCss() {
`;
}

function addNoIndexClasses(content) {
function addNoIndexClasses(content: string) {
const $ = cheerio.load(content);
const noIndexSelectors = [
'dropdown',
Expand All @@ -40,12 +41,13 @@ function addNoIndexClasses(content) {
return $.html();
}

module.exports = {
export = {
getLinks: () => [`<link rel="stylesheet" href="${ALGOLIA_CSS_URL}">`],
getScripts: pluginContext => [
getScripts: (pluginContext: PluginContext) => [
`<script src="${ALGOLIA_JS_URL}"></script>`,
buildAlgoliaInitScript(pluginContext),
insertAlgoliaCustomCss(),
],
postRender: (pluginContext, frontmatter, content) => addNoIndexClasses(content),
postRender: (_pluginContext: PluginContext,
_frontmatter: FrontMatter, content: string) => addNoIndexClasses(content),
};
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
const cheerio = module.parent.require('cheerio');
import cheerio from 'cheerio';
import { MbNode } from '../utils/node';
import { PluginContext } from './Plugin';

function loadDisqus(pluginContext) {
function loadDisqus(pluginContext: PluginContext) {
const config = `
let path = window.location.pathname;

Expand Down Expand Up @@ -60,8 +62,8 @@ function loadDisqus(pluginContext) {
`;
}

module.exports = {
processNode: (pluginContext, node) => {
export = {
processNode: (pluginContext: PluginContext, node: MbNode) => {
if (node.name !== 'disqus') {
return;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
const cheerio = module.parent.require('cheerio');
const escapeRegExp = module.parent.require('lodash/escapeRegExp');
import cheerio from 'cheerio';
import escapeRegExp from 'lodash/escapeRegExp';
import { FrontMatter, PluginContext } from './Plugin';

/**
* Filters out elements on the page based on config tags
* @param tags to filter
* @param content of the page
*/
function filterTags(tags, content) {
function filterTags(tags: string[], content: string) {
if (!tags) {
return content;
}
Expand All @@ -17,15 +18,15 @@ function filterTags(tags, content) {
// Whether it is makes tags visible or hides them
isHidden: tag.startsWith('-'),
}));
$('[tags]').each((i, element) => {
$(element).attr('hidden', true);
$(element).attr('tags').split(' ').forEach((tag) => {
$('[tags]').each((_i, element) => {
$(element).attr('hidden', 'true');
$(element).attr('tags')?.split(' ').forEach((tag) => {
tagOperations.forEach((tagOperation) => {
if (!tag.match(tagOperation.tagExp)) {
return;
}
if (tagOperation.isHidden) {
$(element).attr('hidden', true);
$(element).attr('hidden', 'true');
} else {
$(element).removeAttr('hidden');
}
Expand All @@ -36,8 +37,8 @@ function filterTags(tags, content) {
return $.html();
}

module.exports = {
postRender: (pluginContext, frontmatter, content) => {
export = {
postRender: (pluginContext: PluginContext, frontmatter: FrontMatter, content: string) => {
// Tags specified in site.json will be merged with tags specified in frontmatter
const mergedTags = (frontmatter.tags || []).concat(pluginContext.tags || []);
return filterTags(mergedTags, content);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
function getGoogleAnalyticsTrackingCode(pluginContext) {
import { PluginContext } from './Plugin';

function getGoogleAnalyticsTrackingCode(pluginContext: PluginContext) {
return `
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=${pluginContext.trackingID}"></script>
Expand All @@ -11,7 +13,6 @@ function getGoogleAnalyticsTrackingCode(pluginContext) {
</script>`;
}

module.exports = {
// eslint-disable-next-line no-unused-vars
getScripts: pluginContext => [getGoogleAnalyticsTrackingCode(pluginContext)],
export = {
getScripts: (pluginContext: PluginContext) => [getGoogleAnalyticsTrackingCode(pluginContext)],
};
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
const katex = require('katex');
import katex from 'katex';
import { PluginContext } from './Plugin';
import md from '../lib/markdown-it';

const texmath = require('markdown-it-texmath');
const md = require('../lib/markdown-it');

let pluginAdded = false;

// see https://github.com/goessner/markdown-it-texmath#features for supported delimiters
// note that some of them may not work correctly due to conflicting syntax
function mathDelimiters(pluginContext) {
function mathDelimiters(pluginContext: PluginContext) {
if (!pluginAdded) {
if (!pluginContext.delimiters) {
throw new Error('No delimiters defined in the plugin context!');
Expand All @@ -16,6 +18,6 @@ function mathDelimiters(pluginContext) {
}
}

module.exports = {
beforeSiteGenerate: pluginContext => mathDelimiters(pluginContext),
export = {
beforeSiteGenerate: (pluginContext: PluginContext) => mathDelimiters(pluginContext),
};