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){