diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx
index 44f9965d0..65de45177 100644
--- a/client/homebrew/brewRenderer/brewRenderer.jsx
+++ b/client/homebrew/brewRenderer/brewRenderer.jsx
@@ -6,7 +6,7 @@ import React, { useState, useRef, useMemo, useEffect } from 'react';
import _ from 'lodash';
import MarkdownLegacy from '@shared/markdownLegacy.js';
-import { default as Markdown } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
import ErrorBar from './errorBar/errorBar.jsx';
import ToolBar from './toolBar/toolBar.jsx';
@@ -203,7 +203,7 @@ const BrewRenderer = (props)=>{
return ;
} else {
if(pageText.startsWith('\\page')) {
- const firstLineTokens = Markdown.marked.lexer(pageText.split('\n', 1)[0])[0].tokens;
+ const firstLineTokens = hbfm.marked.lexer(pageText.split('\n', 1)[0])[0].tokens;
const injectedTags = firstLineTokens?.find((obj)=>obj.injectedTags !== undefined)?.injectedTags;
if(injectedTags) {
styles = { ...styles, ...injectedTags.styles };
@@ -231,7 +231,7 @@ const BrewRenderer = (props)=>{
// DO NOT REMOVE!!! REQUIRED FOR BACKWARDS COMPATIBILITY WITH NON-UPGRADABLE VERSIONS OF CHROME.
pageText += `\n\n \n\\column\n `; //Artificial column break at page end to emulate column-fill:auto (until `wide` is used, when column-fill:balance will reappear)
- const html = Markdown.render(pageText, index);
+ const html = hbfm.render(pageText, index);
return ;
}
diff --git a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
index c840e8ddd..c012a167b 100644
--- a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
+++ b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
@@ -1,7 +1,7 @@
import './notificationPopup.less';
import React, { useEffect, useState } from 'react';
import request from '../../utils/request-middleware.js';
-import { default as Markdown } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
import Dialog from '@components/dialog.jsx';
diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx
index c7683a036..dc8c27d3a 100644
--- a/client/homebrew/pages/editPage/editPage.jsx
+++ b/client/homebrew/pages/editPage/editPage.jsx
@@ -4,7 +4,7 @@ import './editPage.less';
// Common imports
import React, { useState, useEffect, useRef } from 'react';
import request from '../../utils/request-middleware.js';
-import { default as Markdown } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
import _ from 'lodash';
import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefaults.js';
@@ -62,7 +62,7 @@ const EditPage = (props)=>{
const [lastSavedTime, setLastSavedTime] = useState(new Date());
const [saveGoogle, setSaveGoogle] = useState(!!props.brew.googleId);
const [error, setError] = useState(null);
- const [HTMLErrors, setHTMLErrors] = useState(Markdown.validate(props.brew.text));
+ const [HTMLErrors, setHTMLErrors] = useState(hbfm.validate(props.brew.text));
const [currentEditorViewPageNum, setCurrentEditorViewPageNum] = useState(1);
const [currentEditorCursorPageNum, setCurrentEditorCursorPageNum] = useState(1);
const [currentBrewRendererPageNum, setCurrentBrewRendererPageNum] = useState(1);
@@ -85,7 +85,7 @@ const EditPage = (props)=>{
const autoSavePref = JSON.parse(localStorage.getItem(AUTOSAVE_KEY) ?? true);
setAutoSaveEnabled(autoSavePref);
setWarnUnsavedChanges(!autoSavePref);
- setHTMLErrors(Markdown.validate(currentBrew.text));
+ setHTMLErrors(hbfm.validate(currentBrew.text));
fetchThemeBundle(setError, setThemeBundle, currentBrew.renderer, currentBrew.theme);
const handleControlKeys = (e)=>{
@@ -131,7 +131,7 @@ const EditPage = (props)=>{
//If there are HTML errors, run the validator on every change to give quick feedback
if(HTMLErrors.length && (field == 'text' || field == 'snippets'))
- setHTMLErrors(Markdown.validate(value));
+ setHTMLErrors(hbfm.validate(value));
if(field == 'metadata') setCurrentBrew((prev)=>({ ...prev, ...value }));
else setCurrentBrew((prev)=>({ ...prev, [field]: value }));
@@ -205,7 +205,7 @@ const EditPage = (props)=>{
};
const save = async (brew, saveToGoogle)=>{
- setHTMLErrors(Markdown.validate(brew.text));
+ setHTMLErrors(hbfm.validate(brew.text));
await updateHistory(brew).catch(console.error);
await versionHistoryGarbageCollection().catch(console.error);
diff --git a/client/homebrew/pages/errorPage/errorPage.jsx b/client/homebrew/pages/errorPage/errorPage.jsx
index 79e7a367e..5b2b7b118 100644
--- a/client/homebrew/pages/errorPage/errorPage.jsx
+++ b/client/homebrew/pages/errorPage/errorPage.jsx
@@ -1,7 +1,7 @@
import './errorPage.less';
import React from 'react';
import UIPage from '../basePages/uiPage/uiPage.jsx';
-import { default as Markdown } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
import ErrorIndex from './errors/errorIndex.js';
const ErrorPage = ({ brew })=>{
@@ -16,7 +16,7 @@ const ErrorPage = ({ brew })=>{
{brew?.text || 'No error text'}
-
+
);
diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx
index 9e7a1f3ff..4dc505ea9 100644
--- a/client/homebrew/pages/homePage/homePage.jsx
+++ b/client/homebrew/pages/homePage/homePage.jsx
@@ -4,7 +4,7 @@ import './homePage.less';
// Common imports
import React, { useState, useEffect, useRef } from 'react';
import request from '../../utils/request-middleware.js';
-import { default as Markdown } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
import _ from 'lodash';
import { DEFAULT_BREW } from '../../../../server/brewDefaults.js';
@@ -47,7 +47,7 @@ const HomePage =(props)=>{
const [currentBrew, setCurrentBrew] = useState(props.brew);
const [error, setError] = useState(undefined);
- const [HTMLErrors, setHTMLErrors] = useState(Markdown.validate(props.brew.text));
+ const [HTMLErrors, setHTMLErrors] = useState(hbfm.validate(props.brew.text));
const [currentEditorViewPageNum, setCurrentEditorViewPageNum] = useState(1);
const [currentEditorCursorPageNum, setCurrentEditorCursorPageNum] = useState(1);
const [currentBrewRendererPageNum, setCurrentBrewRendererPageNum] = useState(1);
@@ -118,7 +118,7 @@ const HomePage =(props)=>{
//If there are HTML errors, run the validator on every change to give quick feedback
if(HTMLErrors.length && (field == 'text' || field == 'snippets'))
- setHTMLErrors(Markdown.validate(value));
+ setHTMLErrors(hbfm.validate(value));
if(field == 'metadata') setCurrentBrew((prev)=>({ ...prev, ...value }));
else setCurrentBrew((prev)=>({ ...prev, [field]: value }));
diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx
index 84555f506..c45090fb7 100644
--- a/client/homebrew/pages/newPage/newPage.jsx
+++ b/client/homebrew/pages/newPage/newPage.jsx
@@ -4,7 +4,7 @@ import './newPage.less';
// Common imports
import React, { useState, useEffect, useRef } from 'react';
import request from '../../utils/request-middleware.js';
-import { default as Markdown } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
import _ from 'lodash';
import { DEFAULT_BREW } from '../../../../server/brewDefaults.js';
@@ -46,7 +46,7 @@ const NewPage = (props)=>{
const [isSaving, setIsSaving] = useState(false);
const [saveGoogle, setSaveGoogle] = useState(global.account?.googleId ? true : false);
const [error, setError] = useState(null);
- const [HTMLErrors, setHTMLErrors] = useState(Markdown.validate(props.brew.text));
+ const [HTMLErrors, setHTMLErrors] = useState(hbfm.validate(props.brew.text));
const [currentEditorViewPageNum, setCurrentEditorViewPageNum] = useState(1);
const [currentEditorCursorPageNum, setCurrentEditorCursorPageNum] = useState(1);
const [currentBrewRendererPageNum, setCurrentBrewRendererPageNum] = useState(1);
@@ -133,7 +133,7 @@ const NewPage = (props)=>{
//If there are HTML errors, run the validator on every change to give quick feedback
if(HTMLErrors.length && (field == 'text' || field == 'snippets'))
- setHTMLErrors(Markdown.validate(value));
+ setHTMLErrors(hbfm.validate(value));
if(field == 'metadata') setCurrentBrew((prev)=>({ ...prev, ...value }));
else setCurrentBrew((prev)=>({ ...prev, [field]: value }));
diff --git a/package-lock.json b/package-lock.json
index e92557165..0c808689c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -46,7 +46,7 @@
"fflate": "^0.8.3",
"fs-extra": "^11.3.5",
"hash-wasm": "^4.12.0",
- "hbfm": "file:../hbfm",
+ "hbmarkedwrapper": "^1.0.0",
"idb-keyval": "^6.2.5",
"js-yaml": "^5.3.0",
"jwt-simple": "^0.5.6",
@@ -100,49 +100,6 @@
"npm": ">=10.8 <12"
}
},
- "../hbfm": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "lodash": "^4.18.1",
- "marked": ">=3 <16",
- "marked-alignment-paragraphs": "^1.0.0",
- "marked-definition-lists": "^1.0.1",
- "marked-diagrams-markdeep": "^1.0.1",
- "marked-emoji": "^2.0.3",
- "marked-extended-tables": "^2.0.1",
- "marked-gfm-heading-id": "^4.1.4",
- "marked-nonbreaking-spaces": "^1.0.1",
- "marked-smartypants-lite": "^1.0.3",
- "marked-subsuper-text": "^1.0.4",
- "marked-variables": "^1.0.5"
- },
- "devDependencies": {
- "@babel/core": "^7.26.0",
- "@babel/preset-env": "^7.26.0",
- "@markedjs/testutils": "^15.0.0-0",
- "@rollup/plugin-commonjs": "^28.0.2",
- "@rollup/plugin-node-resolve": "^16.0.3",
- "@semantic-release/changelog": "^6.0.3",
- "@semantic-release/commit-analyzer": "^13.0.0",
- "@semantic-release/git": "^10.0.1",
- "@semantic-release/github": "^11.0.1",
- "@semantic-release/npm": "^12.0.1",
- "@semantic-release/release-notes-generator": "^14.0.2",
- "babel-jest": "^29.5.0",
- "eslint": "^8.57.1",
- "eslint-config-standard": "^17.1.0",
- "eslint-plugin-import": "^2.31.0",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^6.6.0",
- "jest-cli": "^29.7.0",
- "rollup": "^4.29.2",
- "semantic-release": "^24.2.0"
- },
- "peerDependencies": {
- "marked": ">=3 <16"
- }
- },
"node_modules/@asamuzakjp/css-color": {
"version": "6.0.7",
"dev": true,
@@ -8139,9 +8096,28 @@
"node": ">= 0.4"
}
},
- "node_modules/hbfm": {
- "resolved": "../hbfm",
- "link": true
+ "node_modules/hbmarkedwrapper": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hbmarkedwrapper/-/hbmarkedwrapper-1.0.0.tgz",
+ "integrity": "sha512-BJuswo2c9rqsnVBs2+sfmr57wrwBhVp095Fb9FpzLUpXyLwcJkc0r69QQiq9fJlR5VJwq2ZqkTjUjmEo2POKgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash": "^4.18.1",
+ "marked": ">=3 <16",
+ "marked-alignment-paragraphs": "^1.0.0",
+ "marked-definition-lists": "^1.0.1",
+ "marked-diagrams-markdeep": "^1.0.1",
+ "marked-emoji": "^2.0.3",
+ "marked-extended-tables": "^2.0.1",
+ "marked-gfm-heading-id": "^4.1.4",
+ "marked-nonbreaking-spaces": "^1.0.1",
+ "marked-smartypants-lite": "^1.0.3",
+ "marked-subsuper-text": "^1.0.4",
+ "marked-variables": "^1.0.5"
+ },
+ "peerDependencies": {
+ "marked": ">=3 <16"
+ }
},
"node_modules/hookified": {
"version": "1.15.1",
diff --git a/package.json b/package.json
index 3915380a0..bd11b5e8d 100644
--- a/package.json
+++ b/package.json
@@ -122,7 +122,7 @@
"fflate": "^0.8.3",
"fs-extra": "^11.3.5",
"hash-wasm": "^4.12.0",
- "hbfm": "file:../hbfm",
+ "hbmarkedwrapper": "^1.0.0",
"idb-keyval": "^6.2.5",
"js-yaml": "^5.3.0",
"jwt-simple": "^0.5.6",
diff --git a/server/homebrew.api.js b/server/homebrew.api.js
index 9c8af48f9..51bcf08c9 100644
--- a/server/homebrew.api.js
+++ b/server/homebrew.api.js
@@ -4,7 +4,7 @@ import { model as HomebrewModel } from './homebrew.model.js';
import express from 'express';
import zlib from 'zlib';
import GoogleActions from './googleActions.js';
-import { hbfm } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
import * as yaml from 'js-yaml';
import asyncHandler from 'express-async-handler';
import { nanoid } from 'nanoid';
diff --git a/tests/markdown/basic.test.js b/tests/markdown/basic.test.js
index 9c58a561d..a01c032fd 100644
--- a/tests/markdown/basic.test.js
+++ b/tests/markdown/basic.test.js
@@ -1,6 +1,6 @@
-import { hbfm } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
test('Processes the markdown within an HTML block if its just a class wrapper', function() {
const source = '*Bold text*
';
diff --git a/tests/markdown/definition-lists.test.js b/tests/markdown/definition-lists.test.js
index cfd969886..e2fd4f744 100644
--- a/tests/markdown/definition-lists.test.js
+++ b/tests/markdown/definition-lists.test.js
@@ -1,6 +1,6 @@
-import { hbfm } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
describe('Inline Definition Lists', ()=>{
test('No Term 1 Definition', function() {
diff --git a/tests/markdown/emojis.test.js b/tests/markdown/emojis.test.js
index 0a8209000..cbbdbf0f5 100644
--- a/tests/markdown/emojis.test.js
+++ b/tests/markdown/emojis.test.js
@@ -1,4 +1,4 @@
-import { hbfm } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
import dedent from 'dedent';
// Marked.js adds line returns after closing tags on some default tokens.
diff --git a/tests/markdown/hard-breaks.test.js b/tests/markdown/hard-breaks.test.js
index e56b34a52..cc8da9304 100644
--- a/tests/markdown/hard-breaks.test.js
+++ b/tests/markdown/hard-breaks.test.js
@@ -1,6 +1,6 @@
-import { hbfm } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
describe('Hard Breaks', ()=>{
test('Single Break', function() {
diff --git a/tests/markdown/mustache-syntax.test.js b/tests/markdown/mustache-syntax.test.js
index c36c859ab..dceb6e1e1 100644
--- a/tests/markdown/mustache-syntax.test.js
+++ b/tests/markdown/mustache-syntax.test.js
@@ -1,7 +1,7 @@
/* eslint-disable max-lines */
import dedent from 'dedent';
-import { hbfm } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
// Marked.js adds line returns after closing tags on some default tokens.
// This removes those line returns for comparison sake.
diff --git a/tests/markdown/non-breaking-spaces.test.js b/tests/markdown/non-breaking-spaces.test.js
index 5cefcc9f1..2ed781388 100644
--- a/tests/markdown/non-breaking-spaces.test.js
+++ b/tests/markdown/non-breaking-spaces.test.js
@@ -1,6 +1,6 @@
-import {hbfm} from 'hbfm';
+import {hbfm} from 'hbmarkedwrapper';
describe('Non-Breaking Spaces Interactions', ()=>{
test('I am actually a single-line definition list!', function() {
diff --git a/tests/markdown/paragraph-justification.test.js b/tests/markdown/paragraph-justification.test.js
index 7e06d5c2d..bd7731b91 100644
--- a/tests/markdown/paragraph-justification.test.js
+++ b/tests/markdown/paragraph-justification.test.js
@@ -1,6 +1,6 @@
-import { hbfm } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
describe('Justification', ()=>{
test('Left Justify', function() {
diff --git a/tests/markdown/variables.test.js b/tests/markdown/variables.test.js
index 405e46440..d9da1be07 100644
--- a/tests/markdown/variables.test.js
+++ b/tests/markdown/variables.test.js
@@ -1,7 +1,7 @@
/* eslint-disable max-lines */
import dedent from 'dedent';
-import { hbfm } from 'hbfm';
+import { hbfm } from 'hbmarkedwrapper';
// Marked.js adds line returns after closing tags on some default tokens.
// This removes those line returns for comparison sake.
diff --git a/themes/V3/Blank/snippets/footer.gen.js b/themes/V3/Blank/snippets/footer.gen.js
index 5bdfa4bed..7085f6492 100644
--- a/themes/V3/Blank/snippets/footer.gen.js
+++ b/themes/V3/Blank/snippets/footer.gen.js
@@ -1,4 +1,4 @@
-import { default as Markdown } from 'hbfm';
+import hbfm from 'hbmarkedwrapper';
export default {
createFooterFunc : function(headerSize=1){