From 56db2a73c24eff8ed42b0a65edd7f376ffe0b0cd Mon Sep 17 00:00:00 2001 From: David Bolack Date: Mon, 29 Dec 2025 16:06:44 -0600 Subject: [PATCH 01/40] Add True20 License and compatibility Logo --- themes/V3/Blank/snippets.js | 15 +++++++++++++++ themes/V3/Blank/snippets/license.gen.js | 4 +++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/themes/V3/Blank/snippets.js b/themes/V3/Blank/snippets.js index f1c62e486..e64fdc73f 100644 --- a/themes/V3/Blank/snippets.js +++ b/themes/V3/Blank/snippets.js @@ -589,6 +589,21 @@ module.exports = [ }, + { + name : 'True 20', + subsnippets : [ + { + name : 'OGL 1.0 Section 15', + gen : LicenseGen.grTrue20Sec15, + }, + { + name : 'True20 Logo', + gen : LicenseGen.grTrue20CompatLogo, + } + + ] + }, + { name : 'Wizards of the Coast', icon : 'fab fa-wizards-of-the-coast', diff --git a/themes/V3/Blank/snippets/license.gen.js b/themes/V3/Blank/snippets/license.gen.js index dfc67880a..237fc7929 100644 --- a/themes/V3/Blank/snippets/license.gen.js +++ b/themes/V3/Blank/snippets/license.gen.js @@ -58,5 +58,7 @@ module.exports = { iconsCompatibility : 'Compatibility with Icons requires Icons Superpowered Roleplaying from Ad Infinitum Adventures. Ad Infinitum Adventures does not guarantee compatibility, and does not endorse this product.', iconsTrademark : 'Icons Superpowered Roleplaying is a trademark of Steve Kenson, published exclusively by Ad Infinitum Adventures. The Icons Superpowered Roleplaying Compatibility Logo is a trademark of Ad Infinitum Adventures and is used under the Icons Superpowered Roleplaying Compatibility License.', icondsSection15 : 'Open Game License v 1.0, Copyright 2000, Wizards of the Coast, Inc.\n::\nFudge System Reference Document, Copyright 2005, Grey Ghost Press, Inc.; Authors Steffan O\’Sullivan and Ann Dupuis, with additional material by Peter Bonney, Deird’Re Brooks, Reimer Behrends, Shawn Garbett, Steven Hammond, Ed Heil, Bernard Hsiung, Sedge Lewis, Gordon McCormick, Kent Matthewson, Peter Mikelsons, Anthony Roberson, Andy Skinner, Stephan Szabo, John Ughrin, Dmitri Zagidulin\n::\nFATE (Fantastic Adventures in Tabletop Entertainment), Copyright 2003 by Evil Hat Productions LLC; Authors Robert Donoghue and Fred Hicks\n::\nSpirit of the Century, Copyright 2006, Evil Hat Productions LLC. Authors Robert Donoghue, Fred Hicks, and Leonard Balsera.\n::\nIcons, Copyright 2010, Ad Infinitum Adventures; Author Steve Kenson.\n', - iconsCompatibilityLogo : '![Icons Compatibility Logo](/assets/license_logos/Ad-Infinitum-Adventures_Icons-Compatibility-License_Logo.png){width:200px}' + iconsCompatibilityLogo : '![Icons Compatibility Logo](/assets/license_logos/Ad-Infinitum-Adventures_Icons-Compatibility-License_Logo.png){width:200px}', + grTrue20Sec15 : 'True20 Adventure Roleplaying, Revised Edition OGL Section 15.\n\n15. COPYRIGHT NOTICE\nOpen Game License v 1.0 Copyright 2000, Wizards of the Coast, Inc.\n\nSystem Reference Document, Copyright 2000, Wizards of the Coast, Inc., Authors Jonathan Tweet, Monte Cook, Skip Williams, based on original material by E. Gary Gygax and Dave Arneson.\n\nModern System Reference Document Copyright 2002-2004, Wizards of the Coast, Inc.; Authors Bill Slavicsek, Jeff Grubb, Rich Redman, Charles Ryan, Eric Cagle, David Noonan, Stan!, Christopher Perkins, Rodney Thompson, and JD Wiker, based on material by Jonathan Tweet, Monte Cook, Skip Williams, Richard Baker, Peter Adkison, Bruce R. Cordell, John Tynes, Andy Collins, and JD Wiker.\n\nAdvanced Player’s Manual, Copyright 2005, Green Ronin Publishing: Author Skip Williams.\n\nAdvanced Player’s Guide, Copyright 2004, White Wolf Publishing, Inc.\n\nAlgernon Files, Copyright 2004, Blackwyrm Games; Authors Aaron Sullivan and Dave Mattingly.\n\nArmies of the Abyss, Copyright 2002, Green Ronin Publishing; Authors Erik Mona and Chris Pramas.\n\nThe Avatar’s Handbook, Copyright 2003, Green Ronin Publishing; Authors Jesse Decker and Chris Tomasson.\n\nBastards & Bloodlines, Copyright 2003, Green Ronin Publishing, Author Owen K.C. Stephens\n\nBlue Rose, Copyright 2005, Green Ronin Publishing; Authors Jeremy Crawford, Dawn Elliot, Steve Kenson, and John Snead.\n\nBlue Rose Companion, Copyright 2005, Green Ronin Publishing; Editor Jeremy Crawford.\n\nThe Book of Fiends, Copyright 2003, Green Ronin Publishing; Authors Aaron Loeb, Erik Mona, Chris Pramas, and Robert J. Schwalb.\n\nBook of the Righteous, Copyright 2002, Aaron Loeb.\n\nChallenging Challenge Ratings: Immortal’s Handbook, Copyright 2003, Craig Cochrane.\n\nConan The Roleplaying Game, Copyright 2003 Conan Properties International LCC; Authorized Publisher Mongoose Publishing Ltd; Author Ian Sturrock.\n\nCORE Explanatory Notice, Copyright 2003, Benjamin R. Durbin\n\nCreatures of Freeport, Copyright 2004, Green Ronin Publishing, LLC; Authors Graeme Davis and Keith Baker.\n\nCrime and Punishment, Copyright 2003, Author Keith Baker\n\nCrooks!, Copyright 2003, Green Ronin Publishing; Authors Sean Glenn, Kyle Hunter, and Erik Mona.\n\nCry Havoc, Copyright 2003, Skip Williams. All rights reserved.\n\nChallenging Challenge Ratings: Immortal’s Handbook, Copyright 2003, Craig Cochrane.\n\nDarwin’s World 2nd Edition, Copyright 2003, RPG Objects; Authors Dominic Covey and Chris Davis.\n\nDesign Parameters: Immortal’s Handbook, Copyright 2003, Craig Cochrane.\n\nFading Suns d20, Copyright 2001, Holistic Design, Inc.\n\nGalactic Races, Copyright 2001, Fantasy Flight Games.\n\nGimmick’s Guide to Gadgets, Copyright 2005, Green Ronin Publishing; Author Mike Mearls.\n\nGrim Tales, Copyright 2004, Benjamin R. Durbin, published by Bad Axe Games, LCC.\n\nGrim Tales, Cyberware game mechanics; Copyright 2003, Benjamin R. Durbin, published by Bad Axe Games, LCC.\n\nGrim Tales, Firearms game mechanics; Copyright 2003, Benjamin R. Durbin, published by Bad Axe Games, LCC.\n\nGrim Tales, Horror game mechanics; Copyright 2003, Benjamin R. Durbin, published by Bad Axe Games, LCC.\n\nGrim Tales, Spellcasting game mechanics; Copyright 2003, Benjamin R. Durbin, published by Bad Axe Games, LCC.\n\nGrim Tales, Vehicle game mechanics; Copyright 2003, Benjamin R. Durbin, published by Bad Axe Games, LCC.\n\nHot Pursuit, Copyright 2005, Corey Reid, published by Adamant Entertainment, Inc.\n\nImmortals Handbook, Copyright 2003, Craig Cochrane.\n\nLegions of Hell, Copyright 2001, Green Ronin Publishing; Author Chris Pramas.\n\nA Magical Medieval Society: Western Europe, Copyright 2003, Expeditious Retreat Press; Authors Suzi Yee and Joseph Browning.\n\nThe Mastermind’s Manual, Copyright 2006, Green Ronin Publishing; Author Steve Kenson.\n\nModern Player’s Companion, Copyright 2003, The Game Mechanics, Inc; Author: Stan!\n\nMonster’s Handbook, Copyright 2002, Fantasy Flight Publishing, Inc.\n\nMonte Cook Presents: Iron Heroes, Copyright 2005, Monte J. Cook. All rights reserved.\n\nMonte Cook’s: Arcana Unearthed, Copyright 2003, Monte J. Cook. All rights reserved.\n\nMutants & Masterminds, Copyright 2002, Green Ronin Publishing; Author Steve Kenson.\n\nMutants & Masterminds, Second Edition, Copyright 2005, Green Ronin Publishing; Author Steve Kenson.\n\nMutants & Masterminds Annual #1, Copyright 2004, Green Ronin Publishing, LLC; Editor Erik Mona.\n\nMythic Heroes, Copyright 2005, Benjamin R. Durbin, published by Bad Axe Games, LLC.\n\nOGL Horror, Copyright 2003, Mongoose Publishing Limited.\n\nPossessors: Children of the Outer Gods, Copyright 2003, Philip Reed and Christopher Shy, www.philipjreed.com and www.studioronin.com.\n\nThe Psychic’s Handbook, Copyright 2004, Green Ronin Publishing; Author Steve Kenson.\n\nThe Quintessential Fighter, Copyright 2001 Mongoose Publishing\n\nRelics and Rituals: Excalibur,Copyright 2004, White Wolf Publishing, Inc.\n\nRokugan, Copyright 2001 AEG\n\nThe Seven Saxons, by Benjamin R. Durbin and Ryan Smalley, Copyright 2005, Bad Axe Games, LLC.\n\nSilver Age Sentinels d20, Copyright 2002, Guardians of Order, Inc.; Authors Stephen Kenson, Mark C. Mackinnon, Jeff Mackintosh, Jesse Scoble.\n\nSkull & Bones, Copyright 2003, Green Ronin, Green Ronin Publisihing, Authors Ian Sturrock, T.S. Luikart, and Gareth-Michael Skarka.\n\nSpycraft Copyright 2002, Alderac Entertainment Group.\n\nSpycraft Espionage Handbook, Copyright 2002, Alderac Entertainment Group, Inc.; Authors Patrick Kapera and Kevin Wilson.\n\nSpycraft Faceman/Snoop Class Guide, Copyright 2003, Alderac Entertainment Group, Inc.; Authors Alexander Flagg, Clayton A. Oliver.\n\nSpycraft Fixer/Pointman Class Guide, Copyright 2003, Alderac Entertainment Group, Inc.; Authors Scott Gearin.\n\nSpycraft Mastermind Guide, Copyright 2004, Alderac Entertainment Group, Inc.; Steve Crow, Alexander Flagg, B. D. Flory, Clayton A. Oliver.\n\nSpycraft Modern Arms Guide, Copyright 2002, Alderac Entertainment Group, Inc.; Authors Chad Brunner, Tim D’Allard, Rob Drake, Michael Fish, Scott Gearin, Owen Hershey, Patrick Kapera, Michael Petrovich, Jim Wardrip, Stephen Wilcoxon.\n\nSpycraft Soldier/Wheelman Class Guide, Copyright 2003, Alderac Entertainment Group, Inc.; Authors Chad Brunner, Shawn Carman, B. D. Flory, Scott Gearin, Patrick Kapera.\n\nSpycraft U.S. Militaries Guide, Copyright 2004, Alderac Entertainment Group, Inc.; Authors Dave McAlister, Clayton A. Oliver, Patrick Kapera.\n\nSpycraft, Copyright 2005, Alderac Entertainment Group.\n\nSwords of Our Fathers, Copyright 2003, The Game Mechanics\n\nTales of the Caliphate Nights, Copyright 2006, Paradigm Concepts, Inc., Author Aaron Infante-Levy\n\nTome of Horrors, Copyright 2002, Necromancer Games., Inc.; Author Scott Greene, based on original material by Gary Gygax.\n\nTrue20 Adventure Roleplaying, Copyright 2005, Green Ronin Publishing; Author Steve Kenson.\n\nTrue20 Bestiary, Copyright 2006, Green Ronin Publishing; Author Matthew E. Kaiser.\n\nTrue20 Companion, Copyright 2007, Green Ronin Publishing; Authors Erica Balsley, David Jarvis, Matthew E. Kaiser, Steve Kenson, and Sean Preston.\n\nThe Unholy Warrior’s Handbook, Copyright 2003, Green Ronin Publishing; Author Robert J. Schwalb.\n\nUltramodern Firearms, Copyright 2002, Green Ronin Publishing; Author Charles McManus Ryan.\n\nUnearthed Arcana, Copyright 2004, Wizards of the Coast, Inc.; Andy Collins, Jesse Decker, David Noonan, Rich Redman.\n\nWrath & Rage, Copyright 2002, Green Ronin Publishing, Author Jim Bishop\n\nTrue20 Adventure Roleplaying, Revised Edition, Copyright 2008, Green Ronin Publishing; Author Steve Kenson.', + grTrue20CompatLogo : `![True20 Compatibility Logo](/assets/license_logos/true_20.jpg){width:1.5in}` }; \ No newline at end of file From 0d6c3c7e33e71d4a0cb74177090c2b019c2fa8eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Tue, 20 Jan 2026 19:56:37 +0100 Subject: [PATCH 02/40] fix module.exports --- client/admin/admin.jsx | 6 +- .../authorUtils/authorLookup/authorLookup.jsx | 2 +- client/admin/authorUtils/authorUtils.jsx | 2 +- .../brewUtils/brewCleanup/brewCleanup.jsx | 8 +- .../brewUtils/brewCompress/brewCompress.jsx | 7 +- .../admin/brewUtils/brewLookup/brewLookup.jsx | 12 ++- client/admin/brewUtils/brewUtils.jsx | 28 +++--- client/admin/brewUtils/stats/stats.jsx | 8 +- client/admin/lockTools/lockTools.jsx | 5 +- .../notificationAdd/notificationAdd.jsx | 7 +- .../notificationLookup/notificationLookup.jsx | 9 +- .../notificationUtils/notificationUtils.jsx | 9 +- .../codeEditor/autocompleteEmoji.js | 2 +- client/components/codeEditor/close-tag.js | 2 +- client/components/codeEditor/codeEditor.jsx | 2 +- client/components/codeEditor/fold-css.js | 2 +- client/components/codeEditor/fold-pages.js | 2 +- client/components/combobox.jsx | 2 +- .../renderWarnings/renderWarnings.jsx | 2 +- client/components/splitPane/splitPane.jsx | 2 +- client/components/svg/cauldron.svg.jsx | 2 +- client/components/svg/naturalcrit-d20.svg.jsx | 2 +- client/homebrew/brewRenderer/brewRenderer.jsx | 2 +- .../brewRenderer/errorBar/errorBar.jsx | 2 +- .../notificationPopup/notificationPopup.jsx | 2 +- .../homebrew/brewRenderer/toolBar/toolBar.jsx | 2 +- client/homebrew/editor/editor.jsx | 2 +- .../editor/metadataEditor/metadataEditor.jsx | 2 +- .../editor/metadataEditor/validations.js | 2 +- .../homebrew/editor/snippetbar/snippetbar.jsx | 2 +- client/homebrew/editor/tagInput/tagInput.jsx | 2 +- client/homebrew/homebrew.jsx | 2 +- client/homebrew/navbar/account.navitem.jsx | 2 +- client/homebrew/navbar/error-navitem.jsx | 2 +- client/homebrew/navbar/help.navitem.jsx | 2 +- client/homebrew/navbar/metadata.navitem.jsx | 2 +- client/homebrew/navbar/nav.jsx | 2 +- client/homebrew/navbar/navbar.jsx | 2 +- client/homebrew/navbar/newbrew.navitem.jsx | 2 +- client/homebrew/navbar/patreon.navitem.jsx | 2 +- client/homebrew/navbar/print.navitem.jsx | 2 +- client/homebrew/navbar/recent.navitem.jsx | 2 +- client/homebrew/navbar/vault.navitem.jsx | 2 +- .../pages/accountPage/accountPage.jsx | 2 +- .../basePages/listPage/brewItem/brewItem.jsx | 2 +- .../pages/basePages/listPage/listPage.jsx | 2 +- .../pages/basePages/uiPage/uiPage.jsx | 2 +- client/homebrew/pages/editPage/editPage.jsx | 2 +- .../lockNotification/lockNotification.jsx | 2 +- client/homebrew/pages/errorPage/errorPage.jsx | 2 +- .../pages/errorPage/errors/errorIndex.js | 2 +- client/homebrew/pages/homePage/homePage.jsx | 2 +- client/homebrew/pages/newPage/newPage.jsx | 2 +- client/homebrew/pages/sharePage/sharePage.jsx | 2 +- client/homebrew/pages/userPage/userPage.jsx | 2 +- client/homebrew/pages/vaultPage/vaultPage.jsx | 2 +- package-lock.json | 85 ++++++------------- shared/markdownLegacy.js | 2 +- themes/Legacy/5ePHB/snippets.js | 2 +- .../Legacy/5ePHB/snippets/classfeature.gen.js | 2 +- .../Legacy/5ePHB/snippets/classtable.gen.js | 2 +- themes/Legacy/5ePHB/snippets/coverpage.gen.js | 2 +- themes/Legacy/5ePHB/snippets/fullclass.gen.js | 2 +- themes/Legacy/5ePHB/snippets/magic.gen.js | 2 +- .../Legacy/5ePHB/snippets/monsterblock.gen.js | 2 +- .../5ePHB/snippets/tableOfContents.gen.js | 2 +- themes/V3/5eDMG/snippets.js | 2 +- themes/V3/5ePHB/snippets.js | 2 +- themes/V3/5ePHB/snippets/classfeature.gen.js | 2 +- themes/V3/5ePHB/snippets/classtable.gen.js | 2 +- themes/V3/5ePHB/snippets/coverpage.gen.js | 2 +- themes/V3/5ePHB/snippets/fullclass.gen.js | 2 +- themes/V3/5ePHB/snippets/magic.gen.js | 2 +- themes/V3/5ePHB/snippets/monsterblock.gen.js | 2 +- themes/V3/5ePHB/snippets/quote.gen.js | 2 +- themes/V3/5ePHB/snippets/script.gen.js | 2 +- themes/V3/5ePHB/snippets/watercolor.gen.js | 2 +- themes/V3/Blank/snippets.js | 2 +- themes/V3/Blank/snippets/footer.gen.js | 2 +- themes/V3/Blank/snippets/imageMask.gen.js | 2 +- themes/V3/Blank/snippets/index.gen.js | 2 +- themes/V3/Blank/snippets/license.gen.js | 2 +- themes/V3/Blank/snippets/licenseAELF.js | 2 +- .../V3/Blank/snippets/licenseDTRPGCC.gen.js | 2 +- themes/V3/Blank/snippets/licenseGNU.gen.js | 2 +- .../V3/Blank/snippets/licenseMongoose.gen.js | 2 +- themes/V3/Blank/snippets/licenseWotC.gen.js | 2 +- .../V3/Blank/snippets/tableOfContents.gen.js | 2 +- themes/V3/Blank/snippets/watercolor.gen.js | 2 +- themes/V3/Journal/snippets.js | 2 +- 90 files changed, 148 insertions(+), 194 deletions(-) diff --git a/client/admin/admin.jsx b/client/admin/admin.jsx index 787c2a3eb..5a9a55fc8 100644 --- a/client/admin/admin.jsx +++ b/client/admin/admin.jsx @@ -1,7 +1,7 @@ import './admin.less'; import React, { useEffect, useState } from 'react'; -const BrewUtils = require('./brewUtils/brewUtils.jsx'); -const NotificationUtils = require('./notificationUtils/notificationUtils.jsx'); +import BrewUtils from "./brewUtils/brewUtils.jsx"; +import NotificationUtils from './notificationUtils/notificationUtils.jsx'; import AuthorUtils from './authorUtils/authorUtils.jsx'; import LockTools from './lockTools/lockTools.jsx'; @@ -49,4 +49,4 @@ const Admin = ()=>{ ); }; -module.exports = Admin; +export default Admin; diff --git a/client/admin/authorUtils/authorLookup/authorLookup.jsx b/client/admin/authorUtils/authorLookup/authorLookup.jsx index abdece6f7..cdfe6274b 100644 --- a/client/admin/authorUtils/authorLookup/authorLookup.jsx +++ b/client/admin/authorUtils/authorLookup/authorLookup.jsx @@ -84,4 +84,4 @@ const authorLookup = ()=>{ ); }; -module.exports = authorLookup; +export default authorLookup; diff --git a/client/admin/authorUtils/authorUtils.jsx b/client/admin/authorUtils/authorUtils.jsx index a96eea528..ef717a1ec 100644 --- a/client/admin/authorUtils/authorUtils.jsx +++ b/client/admin/authorUtils/authorUtils.jsx @@ -10,4 +10,4 @@ const authorUtils = ()=>{ ); }; -module.exports = authorUtils; \ No newline at end of file +export default authorUtils; \ No newline at end of file diff --git a/client/admin/brewUtils/brewCleanup/brewCleanup.jsx b/client/admin/brewUtils/brewCleanup/brewCleanup.jsx index d4b17c570..1675bdc95 100644 --- a/client/admin/brewUtils/brewCleanup/brewCleanup.jsx +++ b/client/admin/brewUtils/brewCleanup/brewCleanup.jsx @@ -1,7 +1,5 @@ -const React = require('react'); -const createClass = require('create-react-class'); - -const request = require('superagent'); +import React, {createClass} from 'react'; +import request from 'superagent'; const BrewCleanup = createClass({ displayName : 'BrewCleanup', @@ -69,4 +67,4 @@ const BrewCleanup = createClass({ } }); -module.exports = BrewCleanup; +export default BrewCleanup; diff --git a/client/admin/brewUtils/brewCompress/brewCompress.jsx b/client/admin/brewUtils/brewCompress/brewCompress.jsx index ccb59e027..2aee2a511 100644 --- a/client/admin/brewUtils/brewCompress/brewCompress.jsx +++ b/client/admin/brewUtils/brewCompress/brewCompress.jsx @@ -1,6 +1,5 @@ -const React = require('react'); -const createClass = require('create-react-class'); -const request = require('superagent'); +import React, {createClass} from 'react'; +import request from 'superagent'; const BrewCompress = createClass({ displayName : 'BrewCompress', @@ -85,4 +84,4 @@ const BrewCompress = createClass({ } }); -module.exports = BrewCompress; +export default BrewCompress; diff --git a/client/admin/brewUtils/brewLookup/brewLookup.jsx b/client/admin/brewUtils/brewLookup/brewLookup.jsx index fb780f29e..3211b43aa 100644 --- a/client/admin/brewUtils/brewLookup/brewLookup.jsx +++ b/client/admin/brewUtils/brewLookup/brewLookup.jsx @@ -1,10 +1,8 @@ -const React = require('react'); -const createClass = require('create-react-class'); -const cx = require('classnames'); - -const request = require('superagent'); -const Moment = require('moment'); +import React, {createClass} from 'react'; +import request from 'superagent'; +import cx from 'classnames'; +import Moment from 'moment'; const BrewLookup = createClass({ getDefaultProps() { @@ -110,4 +108,4 @@ const BrewLookup = createClass({ } }); -module.exports = BrewLookup; +export default BrewLookup; diff --git a/client/admin/brewUtils/brewUtils.jsx b/client/admin/brewUtils/brewUtils.jsx index bab2cb82f..7e0159797 100644 --- a/client/admin/brewUtils/brewUtils.jsx +++ b/client/admin/brewUtils/brewUtils.jsx @@ -1,15 +1,14 @@ -const React = require('react'); -const createClass = require('create-react-class'); -require('./brewUtils.less'); +import React from "react"; +import "./brewUtils.less"; -const BrewCleanup = require('./brewCleanup/brewCleanup.jsx'); -const BrewLookup = require('./brewLookup/brewLookup.jsx'); -const BrewCompress = require ('./brewCompress/brewCompress.jsx'); -const Stats = require('./stats/stats.jsx'); +import BrewCleanup from "./brewCleanup/brewCleanup.jsx"; +import BrewLookup from "./brewLookup/brewLookup.jsx"; +import BrewCompress from "./brewCompress/brewCompress.jsx"; +import Stats from "./stats/stats.jsx"; -const BrewUtils = createClass({ - render : function(){ - return <> +const BrewUtils = () => { + return ( + <>
@@ -17,8 +16,7 @@ const BrewUtils = createClass({
- ; - } -}); - -module.exports = BrewUtils; + + ); +}; +export default BrewUtils; diff --git a/client/admin/brewUtils/stats/stats.jsx b/client/admin/brewUtils/stats/stats.jsx index 7f96618f9..988bfbdfb 100644 --- a/client/admin/brewUtils/stats/stats.jsx +++ b/client/admin/brewUtils/stats/stats.jsx @@ -1,7 +1,5 @@ -const React = require('react'); -const createClass = require('create-react-class'); - -const request = require('superagent'); +import React, {createClass} from 'react'; +import request from 'superagent'; const Stats = createClass({ displayName : 'Stats', @@ -43,4 +41,4 @@ const Stats = createClass({ } }); -module.exports = Stats; +export default Stats; diff --git a/client/admin/lockTools/lockTools.jsx b/client/admin/lockTools/lockTools.jsx index 9a28d330f..f2701c47e 100644 --- a/client/admin/lockTools/lockTools.jsx +++ b/client/admin/lockTools/lockTools.jsx @@ -1,7 +1,6 @@ /*eslint max-lines: ["warn", {"max": 500, "skipBlankLines": true, "skipComments": true}]*/ require('./lockTools.less'); -const React = require('react'); -const createClass = require('create-react-class'); +import React, {createClass} from 'react'; import request from '../../homebrew/utils/request-middleware.js'; @@ -339,4 +338,4 @@ const LockLookup = createClass({ } }); -module.exports = LockTools; \ No newline at end of file +export default LockTools; \ No newline at end of file diff --git a/client/admin/notificationUtils/notificationAdd/notificationAdd.jsx b/client/admin/notificationUtils/notificationAdd/notificationAdd.jsx index 0cca1047e..122b0320c 100644 --- a/client/admin/notificationUtils/notificationAdd/notificationAdd.jsx +++ b/client/admin/notificationUtils/notificationAdd/notificationAdd.jsx @@ -1,7 +1,6 @@ require('./notificationAdd.less'); -const React = require('react'); -const { useState, useRef } = require('react'); -const request = require('superagent'); +import React, { useState, useRef } from 'react'; +import request from 'superagent'; const NotificationAdd = ()=>{ const [notificationResult, setNotificationResult] = useState(null); @@ -106,4 +105,4 @@ const NotificationAdd = ()=>{ ); }; -module.exports = NotificationAdd; +export default NotificationAdd; diff --git a/client/admin/notificationUtils/notificationLookup/notificationLookup.jsx b/client/admin/notificationUtils/notificationLookup/notificationLookup.jsx index 05f81b776..e3c0e0ae4 100644 --- a/client/admin/notificationUtils/notificationLookup/notificationLookup.jsx +++ b/client/admin/notificationUtils/notificationLookup/notificationLookup.jsx @@ -1,9 +1,8 @@ require('./notificationLookup.less'); -const React = require('react'); -const { useState } = require('react'); -const request = require('superagent'); -const Moment = require('moment'); +import React, { useState} from 'react'; +import request from 'superagent'; +import Moment from 'moment'; const NotificationDetail = ({ notification, onDelete })=>( <> @@ -102,4 +101,4 @@ const NotificationLookup = ()=>{ ); }; -module.exports = NotificationLookup; +export default NotificationLookup; diff --git a/client/admin/notificationUtils/notificationUtils.jsx b/client/admin/notificationUtils/notificationUtils.jsx index 22ea21328..00db44a37 100644 --- a/client/admin/notificationUtils/notificationUtils.jsx +++ b/client/admin/notificationUtils/notificationUtils.jsx @@ -1,7 +1,6 @@ -const React = require('react'); - -const NotificationLookup = require('./notificationLookup/notificationLookup.jsx'); -const NotificationAdd = require('./notificationAdd/notificationAdd.jsx'); +import React from 'react'; +import NotificationLookup from './notificationLookup/notificationLookup.jsx'; +import NotificationAdd from './notificationAdd/notificationAdd.jsx'; const NotificationUtils = ()=>{ return ( @@ -12,4 +11,4 @@ const NotificationUtils = ()=>{ ); }; -module.exports = NotificationUtils; +export default NotificationUtils; diff --git a/client/components/codeEditor/autocompleteEmoji.js b/client/components/codeEditor/autocompleteEmoji.js index ae7f2628f..d5a3a71aa 100644 --- a/client/components/codeEditor/autocompleteEmoji.js +++ b/client/components/codeEditor/autocompleteEmoji.js @@ -79,6 +79,6 @@ const showAutocompleteEmoji = function(CodeMirror, editor) { }); }; -module.exports = { +export default { showAutocompleteEmoji }; \ No newline at end of file diff --git a/client/components/codeEditor/close-tag.js b/client/components/codeEditor/close-tag.js index 728b63a5c..ebf9f9320 100644 --- a/client/components/codeEditor/close-tag.js +++ b/client/components/codeEditor/close-tag.js @@ -38,7 +38,7 @@ const autoCloseCurlyBraces = function(CodeMirror, cm, typingClosingBrace) { } }; -module.exports = { +export default { autoCloseCurlyBraces : function(CodeMirror, codeMirror) { const map = { name: 'autoCloseCurlyBraces' }; map[`'{'`] = function(cm) { return autoCloseCurlyBraces(CodeMirror, cm); }; diff --git a/client/components/codeEditor/codeEditor.jsx b/client/components/codeEditor/codeEditor.jsx index fb69b6dcf..cd759463f 100644 --- a/client/components/codeEditor/codeEditor.jsx +++ b/client/components/codeEditor/codeEditor.jsx @@ -461,5 +461,5 @@ const CodeEditor = createClass({ } }); -module.exports = CodeEditor; +export default CodeEditor; diff --git a/client/components/codeEditor/fold-css.js b/client/components/codeEditor/fold-css.js index 338cab176..06bfd96a4 100644 --- a/client/components/codeEditor/fold-css.js +++ b/client/components/codeEditor/fold-css.js @@ -1,4 +1,4 @@ -module.exports = { +export default { registerHomebreweryHelper : function(CodeMirror) { CodeMirror.registerHelper('fold', 'homebrewerycss', function(cm, start) { diff --git a/client/components/codeEditor/fold-pages.js b/client/components/codeEditor/fold-pages.js index cff1c64e0..1d8d19f6b 100644 --- a/client/components/codeEditor/fold-pages.js +++ b/client/components/codeEditor/fold-pages.js @@ -1,4 +1,4 @@ -module.exports = { +export default { registerHomebreweryHelper : function(CodeMirror) { CodeMirror.registerHelper('fold', 'homebrewery', function(cm, start) { const matcher = /^\\page.*/; diff --git a/client/components/combobox.jsx b/client/components/combobox.jsx index ae9f1d7f8..22afab766 100644 --- a/client/components/combobox.jsx +++ b/client/components/combobox.jsx @@ -126,4 +126,4 @@ const Combobox = createClass({ } }); -module.exports = Combobox; +export default Combobox; diff --git a/client/components/renderWarnings/renderWarnings.jsx b/client/components/renderWarnings/renderWarnings.jsx index 6b8ea8184..b1e93acc8 100644 --- a/client/components/renderWarnings/renderWarnings.jsx +++ b/client/components/renderWarnings/renderWarnings.jsx @@ -57,4 +57,4 @@ const RenderWarnings = createClass({ } }); -module.exports = RenderWarnings; +export default RenderWarnings; diff --git a/client/components/splitPane/splitPane.jsx b/client/components/splitPane/splitPane.jsx index 78ba59ed3..c92cc5c5f 100644 --- a/client/components/splitPane/splitPane.jsx +++ b/client/components/splitPane/splitPane.jsx @@ -108,4 +108,4 @@ const Pane = ({ width, children, isDragging, moveBrew, moveSource, liveScroll, s ); }; -module.exports = SplitPane; +export default SplitPane; diff --git a/client/components/svg/cauldron.svg.jsx b/client/components/svg/cauldron.svg.jsx index 49405783b..e57d50f48 100644 --- a/client/components/svg/cauldron.svg.jsx +++ b/client/components/svg/cauldron.svg.jsx @@ -1,7 +1,7 @@ const React = require('react'); const createClass = require('create-react-class'); -module.exports = function(props){ +export default function(props){ return diff --git a/client/components/svg/naturalcrit-d20.svg.jsx b/client/components/svg/naturalcrit-d20.svg.jsx index 1482b5559..1a8b81d3d 100644 --- a/client/components/svg/naturalcrit-d20.svg.jsx +++ b/client/components/svg/naturalcrit-d20.svg.jsx @@ -1,6 +1,6 @@ const React = require('react'); const createClass = require('create-react-class'); -module.exports = function(props){ +export default function(props){ return ; }; \ No newline at end of file diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index 7e6681c57..c98993816 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -345,4 +345,4 @@ const BrewRenderer = (props)=>{ ); }; -module.exports = BrewRenderer; +export default BrewRenderer; diff --git a/client/homebrew/brewRenderer/errorBar/errorBar.jsx b/client/homebrew/brewRenderer/errorBar/errorBar.jsx index 78b36d70c..f8ab03ede 100644 --- a/client/homebrew/brewRenderer/errorBar/errorBar.jsx +++ b/client/homebrew/brewRenderer/errorBar/errorBar.jsx @@ -50,4 +50,4 @@ const ErrorBar = (props)=>{ ); }; -module.exports = ErrorBar; +export default ErrorBar; diff --git a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx index ad8f9140a..e51fe5db2 100644 --- a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx +++ b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx @@ -62,4 +62,4 @@ const NotificationPopup = ()=>{ ; }; -module.exports = NotificationPopup; +export default NotificationPopup; diff --git a/client/homebrew/brewRenderer/toolBar/toolBar.jsx b/client/homebrew/brewRenderer/toolBar/toolBar.jsx index 4aee3b6bd..ace6ab113 100644 --- a/client/homebrew/brewRenderer/toolBar/toolBar.jsx +++ b/client/homebrew/brewRenderer/toolBar/toolBar.jsx @@ -259,4 +259,4 @@ const ToolBar = ({ displayOptions, onDisplayOptionsChange, visiblePages, totalPa ); }; -module.exports = ToolBar; +export default ToolBar; diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx index 0ffd2e8a0..7c0b881ed 100644 --- a/client/homebrew/editor/editor.jsx +++ b/client/homebrew/editor/editor.jsx @@ -542,4 +542,4 @@ const Editor = createClass({ } }); -module.exports = Editor; +export default Editor; diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.jsx b/client/homebrew/editor/metadataEditor/metadataEditor.jsx index 338ad9360..f41328b8e 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.jsx +++ b/client/homebrew/editor/metadataEditor/metadataEditor.jsx @@ -411,4 +411,4 @@ const MetadataEditor = createClass({ } }); -module.exports = MetadataEditor; +export default MetadataEditor; diff --git a/client/homebrew/editor/metadataEditor/validations.js b/client/homebrew/editor/metadataEditor/validations.js index d0e052b07..2430534dc 100644 --- a/client/homebrew/editor/metadataEditor/validations.js +++ b/client/homebrew/editor/metadataEditor/validations.js @@ -1,4 +1,4 @@ -module.exports = { +export default { title : [ (value)=>{ return value?.length > 100 ? 'Max title length of 100 characters' : null; diff --git a/client/homebrew/editor/snippetbar/snippetbar.jsx b/client/homebrew/editor/snippetbar/snippetbar.jsx index 5e2051a86..9da299b52 100644 --- a/client/homebrew/editor/snippetbar/snippetbar.jsx +++ b/client/homebrew/editor/snippetbar/snippetbar.jsx @@ -281,7 +281,7 @@ const Snippetbar = createClass({ } }); -module.exports = Snippetbar; +export default Snippetbar; const SnippetGroup = createClass({ displayName : 'SnippetGroup', diff --git a/client/homebrew/editor/tagInput/tagInput.jsx b/client/homebrew/editor/tagInput/tagInput.jsx index d60e23b1b..e3e750263 100644 --- a/client/homebrew/editor/tagInput/tagInput.jsx +++ b/client/homebrew/editor/tagInput/tagInput.jsx @@ -102,4 +102,4 @@ const TagInput = ({ unique = true, values = [], ...props })=>{ ); }; -module.exports = TagInput; +export default TagInput; diff --git a/client/homebrew/homebrew.jsx b/client/homebrew/homebrew.jsx index e38293bde..18a3993a6 100644 --- a/client/homebrew/homebrew.jsx +++ b/client/homebrew/homebrew.jsx @@ -80,4 +80,4 @@ const Homebrew = (props)=>{ ); }; -module.exports = Homebrew; \ No newline at end of file +export default Homebrew; \ No newline at end of file diff --git a/client/homebrew/navbar/account.navitem.jsx b/client/homebrew/navbar/account.navitem.jsx index bdc6d386a..e0ebc82cb 100644 --- a/client/homebrew/navbar/account.navitem.jsx +++ b/client/homebrew/navbar/account.navitem.jsx @@ -111,4 +111,4 @@ const Account = createClass({ } }); -module.exports = Account; +export default Account; diff --git a/client/homebrew/navbar/error-navitem.jsx b/client/homebrew/navbar/error-navitem.jsx index 6b739379b..1dea63ddd 100644 --- a/client/homebrew/navbar/error-navitem.jsx +++ b/client/homebrew/navbar/error-navitem.jsx @@ -144,4 +144,4 @@ const ErrorNavItem = ({ error = '', clearError })=>{ ; }; -module.exports = ErrorNavItem; +export default ErrorNavItem; diff --git a/client/homebrew/navbar/help.navitem.jsx b/client/homebrew/navbar/help.navitem.jsx index 0b1ff6c3a..1487f0c8b 100644 --- a/client/homebrew/navbar/help.navitem.jsx +++ b/client/homebrew/navbar/help.navitem.jsx @@ -3,7 +3,7 @@ const dedent = require('dedent-tabs').default; const Nav = require('client/homebrew/navbar/nav.jsx'); -module.exports = function(props){ +export default function(props){ return need help? diff --git a/client/homebrew/navbar/metadata.navitem.jsx b/client/homebrew/navbar/metadata.navitem.jsx index 6eadac367..d5277dfa7 100644 --- a/client/homebrew/navbar/metadata.navitem.jsx +++ b/client/homebrew/navbar/metadata.navitem.jsx @@ -86,4 +86,4 @@ const MetadataNav = createClass({ }); -module.exports = MetadataNav; +export default MetadataNav; diff --git a/client/homebrew/navbar/nav.jsx b/client/homebrew/navbar/nav.jsx index 16f194716..9dba70167 100644 --- a/client/homebrew/navbar/nav.jsx +++ b/client/homebrew/navbar/nav.jsx @@ -117,4 +117,4 @@ const Nav = { }; -module.exports = Nav; +export default Nav; diff --git a/client/homebrew/navbar/navbar.jsx b/client/homebrew/navbar/navbar.jsx index bafed9db0..07e84d178 100644 --- a/client/homebrew/navbar/navbar.jsx +++ b/client/homebrew/navbar/navbar.jsx @@ -49,4 +49,4 @@ const Navbar = createClass({ } }); -module.exports = Navbar; +export default Navbar; diff --git a/client/homebrew/navbar/newbrew.navitem.jsx b/client/homebrew/navbar/newbrew.navitem.jsx index b8cf82ab7..7fe5d67c4 100644 --- a/client/homebrew/navbar/newbrew.navitem.jsx +++ b/client/homebrew/navbar/newbrew.navitem.jsx @@ -100,4 +100,4 @@ const NewBrew = ()=>{ ); }; -module.exports = NewBrew; +export default NewBrew; diff --git a/client/homebrew/navbar/patreon.navitem.jsx b/client/homebrew/navbar/patreon.navitem.jsx index d957231de..6edf780e5 100644 --- a/client/homebrew/navbar/patreon.navitem.jsx +++ b/client/homebrew/navbar/patreon.navitem.jsx @@ -1,7 +1,7 @@ const React = require('react'); const Nav = require('client/homebrew/navbar/nav.jsx'); -module.exports = function(props){ +export default function(props){ return get PDF ; diff --git a/client/homebrew/navbar/recent.navitem.jsx b/client/homebrew/navbar/recent.navitem.jsx index 0d7b176af..c1337ea4e 100644 --- a/client/homebrew/navbar/recent.navitem.jsx +++ b/client/homebrew/navbar/recent.navitem.jsx @@ -175,7 +175,7 @@ const RecentItems = createClass({ }); -module.exports = { +export default { edited : (props)=>{ return { ); }; -module.exports = AccountPage; +export default AccountPage; diff --git a/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx b/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx index b0c0d3aa9..4f952f01e 100644 --- a/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx @@ -176,4 +176,4 @@ const BrewItem = ({ ); }; -module.exports = BrewItem; +export default BrewItem; diff --git a/client/homebrew/pages/basePages/listPage/listPage.jsx b/client/homebrew/pages/basePages/listPage/listPage.jsx index 4afc14364..9589956d5 100644 --- a/client/homebrew/pages/basePages/listPage/listPage.jsx +++ b/client/homebrew/pages/basePages/listPage/listPage.jsx @@ -279,4 +279,4 @@ const ListPage = createClass({ } }); -module.exports = ListPage; +export default ListPage; diff --git a/client/homebrew/pages/basePages/uiPage/uiPage.jsx b/client/homebrew/pages/basePages/uiPage/uiPage.jsx index 1880779c9..7a95748aa 100644 --- a/client/homebrew/pages/basePages/uiPage/uiPage.jsx +++ b/client/homebrew/pages/basePages/uiPage/uiPage.jsx @@ -35,4 +35,4 @@ const UIPage = createClass({ } }); -module.exports = UIPage; +export default UIPage; diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index 1bc8bb35e..3eb26186e 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -415,4 +415,4 @@ const EditPage = (props)=>{ ); }; -module.exports = EditPage; +export default EditPage; diff --git a/client/homebrew/pages/editPage/lockNotification/lockNotification.jsx b/client/homebrew/pages/editPage/lockNotification/lockNotification.jsx index 34102bdc6..c71c85891 100644 --- a/client/homebrew/pages/editPage/lockNotification/lockNotification.jsx +++ b/client/homebrew/pages/editPage/lockNotification/lockNotification.jsx @@ -40,4 +40,4 @@ function LockNotification(props) { ; }; -module.exports = LockNotification; +export default LockNotification; diff --git a/client/homebrew/pages/errorPage/errorPage.jsx b/client/homebrew/pages/errorPage/errorPage.jsx index 1b7b19e2f..e90ceb742 100644 --- a/client/homebrew/pages/errorPage/errorPage.jsx +++ b/client/homebrew/pages/errorPage/errorPage.jsx @@ -22,4 +22,4 @@ const ErrorPage = ({ brew })=>{ ); }; -module.exports = ErrorPage; +export default ErrorPage; diff --git a/client/homebrew/pages/errorPage/errors/errorIndex.js b/client/homebrew/pages/errorPage/errors/errorIndex.js index b13f5230d..9ca37a854 100644 --- a/client/homebrew/pages/errorPage/errors/errorIndex.js +++ b/client/homebrew/pages/errorPage/errors/errorIndex.js @@ -268,4 +268,4 @@ const errorIndex = (props)=>{ }; }; -module.exports = errorIndex; +export default errorIndex; diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index 463df333b..fb5caecd7 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -230,4 +230,4 @@ const HomePage =(props)=>{ ); }; -module.exports = HomePage; +export default HomePage; diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 83eaeda45..fb595ab98 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -276,4 +276,4 @@ const NewPage = (props)=>{ ); }; -module.exports = NewPage; +export default NewPage; diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index 32e88c9d8..48bed1655 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -116,4 +116,4 @@ const SharePage = (props)=>{ ); }; -module.exports = SharePage; +export default SharePage; diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index b9273f3c3..ac4257124 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -61,4 +61,4 @@ const UserPage = (props)=>{ ); }; -module.exports = UserPage; +export default UserPage; diff --git a/client/homebrew/pages/vaultPage/vaultPage.jsx b/client/homebrew/pages/vaultPage/vaultPage.jsx index f009c1054..a9c316d8a 100644 --- a/client/homebrew/pages/vaultPage/vaultPage.jsx +++ b/client/homebrew/pages/vaultPage/vaultPage.jsx @@ -430,4 +430,4 @@ const VaultPage = (props)=>{ ); }; -module.exports = VaultPage; +export default VaultPage; diff --git a/package-lock.json b/package-lock.json index baa4dc289..3360741fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,7 +90,6 @@ "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@csstools/css-calc": "^2.1.3", "@csstools/css-color-parser": "^3.0.9", @@ -104,8 +103,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/@babel/code-frame": { "version": "7.27.1", @@ -135,6 +133,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1799,6 +1798,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", "license": "MIT", + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", @@ -1920,6 +1920,7 @@ "integrity": "sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -1960,7 +1961,6 @@ } ], "license": "MIT-0", - "peer": true, "engines": { "node": ">=18" } @@ -1981,7 +1981,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -2006,7 +2005,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@csstools/color-helpers": "^5.0.2", "@csstools/css-calc": "^2.1.4" @@ -2035,6 +2033,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -2058,6 +2057,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -3810,6 +3810,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4770,6 +4771,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -5548,7 +5550,6 @@ "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@asamuzakjp/css-color": "^3.2.0", "rrweb-cssom": "^0.8.0" @@ -5578,7 +5579,6 @@ "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0" @@ -5663,8 +5663,7 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/decode-uri-component": { "version": "0.2.2", @@ -6016,7 +6015,6 @@ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=0.12" }, @@ -6264,6 +6262,7 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -7768,7 +7767,6 @@ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "whatwg-encoding": "^3.1.1" }, @@ -7836,7 +7834,6 @@ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -8433,8 +8430,7 @@ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/is-promise": { "version": "4.0.0", @@ -8758,6 +8754,7 @@ "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "30.2.0", "@jest/types": "30.2.0", @@ -10000,6 +9997,7 @@ "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", "license": "MIT", + "peer": true, "bin": { "marked": "bin/marked.js" }, @@ -10463,7 +10461,6 @@ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "debug": "4" }, @@ -10477,7 +10474,6 @@ "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^5.0.0", @@ -10488,28 +10484,12 @@ "node": ">=12" } }, - "node_modules/mongoose/node_modules/gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/mongoose/node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -10570,7 +10550,6 @@ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -10591,16 +10570,14 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/mongoose/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "license": "BSD-2-Clause", - "optional": true, - "peer": true + "optional": true }, "node_modules/mongoose/node_modules/whatwg-url": { "version": "5.0.0", @@ -10608,7 +10585,6 @@ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -10988,8 +10964,7 @@ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", @@ -11357,7 +11332,6 @@ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "entities": "^6.0.0" }, @@ -11672,6 +11646,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -11734,6 +11709,7 @@ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11748,7 +11724,6 @@ "integrity": "sha512-Mn8KJ45HNNG6JBpBizXcyf6LqY/qyqetGcou/nprDnFwBFBLGj0j/sNKV2lj2KMOVOwdXu14aEzqJv8CIV6e8g==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "postcss": "^8.4.20" } @@ -11837,6 +11812,7 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -12026,6 +12002,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -12038,6 +12015,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -12530,8 +12508,7 @@ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/run-parallel": { "version": "1.2.0", @@ -12662,7 +12639,6 @@ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "xmlchars": "^2.2.0" }, @@ -13605,6 +13581,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", @@ -13884,8 +13861,7 @@ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/synckit": { "version": "0.11.11", @@ -14001,7 +13977,6 @@ "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tldts-core": "^6.1.86" }, @@ -14014,8 +13989,7 @@ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tmpl": { "version": "1.0.5", @@ -14176,7 +14150,6 @@ "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "tldts": "^6.1.32" }, @@ -14800,7 +14773,6 @@ "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "xml-name-validator": "^5.0.0" }, @@ -15150,7 +15122,6 @@ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "iconv-lite": "0.6.3" }, @@ -15164,7 +15135,6 @@ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -15375,7 +15345,6 @@ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -15398,7 +15367,6 @@ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=18" } @@ -15408,8 +15376,7 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/xtend": { "version": "4.0.2", diff --git a/shared/markdownLegacy.js b/shared/markdownLegacy.js index 5a8108297..0dfd46320 100644 --- a/shared/markdownLegacy.js +++ b/shared/markdownLegacy.js @@ -103,7 +103,7 @@ const voidTags = new Set([ ]); -module.exports = { +export default { marked : Markdown, render : (rawBrewText)=>{ return Markdown( diff --git a/themes/Legacy/5ePHB/snippets.js b/themes/Legacy/5ePHB/snippets.js index e9134853c..e1665b47c 100644 --- a/themes/Legacy/5ePHB/snippets.js +++ b/themes/Legacy/5ePHB/snippets.js @@ -8,7 +8,7 @@ const CoverPageGen = require('./snippets/coverpage.gen.js'); const TableOfContentsGen = require('./snippets/tableOfContents.gen.js'); const dedent = require('dedent-tabs').default; -module.exports = [ +export default [ { groupName : 'Text Editor', diff --git a/themes/Legacy/5ePHB/snippets/classfeature.gen.js b/themes/Legacy/5ePHB/snippets/classfeature.gen.js index e2407ff03..53e989dcc 100644 --- a/themes/Legacy/5ePHB/snippets/classfeature.gen.js +++ b/themes/Legacy/5ePHB/snippets/classfeature.gen.js @@ -1,6 +1,6 @@ const _ = require('lodash'); -module.exports = function(classname){ +export default function(classname){ classname = _.sample(['archivist', 'fancyman', 'linguist', 'fletcher', 'notary', 'berserker-typist', 'fishmongerer', 'manicurist', 'haberdasher', 'concierge']); diff --git a/themes/Legacy/5ePHB/snippets/classtable.gen.js b/themes/Legacy/5ePHB/snippets/classtable.gen.js index 867aa625e..69ded1b19 100644 --- a/themes/Legacy/5ePHB/snippets/classtable.gen.js +++ b/themes/Legacy/5ePHB/snippets/classtable.gen.js @@ -50,7 +50,7 @@ const getFeature = (level)=>{ return res.join(', '); }; -module.exports = { +export default { full : function(){ const classname = _.sample(classnames); diff --git a/themes/Legacy/5ePHB/snippets/coverpage.gen.js b/themes/Legacy/5ePHB/snippets/coverpage.gen.js index 4b658e317..8d66c4391 100644 --- a/themes/Legacy/5ePHB/snippets/coverpage.gen.js +++ b/themes/Legacy/5ePHB/snippets/coverpage.gen.js @@ -98,7 +98,7 @@ const subtitles = [ ]; -module.exports = ()=>{ +export default ()=>{ return `
@@ -34,7 +33,7 @@ const Nav = { } }), - item : createClass({ + item : createReactClass({ displayName : 'Nav.item', getDefaultProps : function() { return { diff --git a/client/homebrew/navbar/navbar.jsx b/client/homebrew/navbar/navbar.jsx index 07e84d178..234580fb4 100644 --- a/client/homebrew/navbar/navbar.jsx +++ b/client/homebrew/navbar/navbar.jsx @@ -1,11 +1,11 @@ -require('./navbar.less'); -const React = require('react'); -const createClass = require('create-react-class'); +import './navbar.less'; +import React from 'react'; +import createReactClass from 'create-react-class'; -const Nav = require('client/homebrew/navbar/nav.jsx'); -const PatreonNavItem = require('./patreon.navitem.jsx'); +import Nav from 'client/homebrew/navbar/nav.jsx'; +import PatreonNavItem from './patreon.navitem.jsx'; -const Navbar = createClass({ +const Navbar = createReactClass({ displayName : 'Navbar', getInitialState : function() { return { diff --git a/client/homebrew/navbar/newbrew.navitem.jsx b/client/homebrew/navbar/newbrew.navitem.jsx index 7fe5d67c4..3af2b6acf 100644 --- a/client/homebrew/navbar/newbrew.navitem.jsx +++ b/client/homebrew/navbar/newbrew.navitem.jsx @@ -1,7 +1,7 @@ -const React = require('react'); -const _ = require('lodash'); -const Nav = require('client/homebrew/navbar/nav.jsx'); -const { splitTextStyleAndMetadata } = require('../../../shared/helpers.js'); // Importing the function from helpers.js +import React from 'react'; +import _ from 'lodash'; +import Nav from 'client/homebrew/navbar/nav.jsx'; +import { splitTextStyleAndMetadata } from '../../../shared/helpers.js'; const BREWKEY = 'HB_newPage_content'; const STYLEKEY = 'HB_newPage_style'; diff --git a/client/homebrew/navbar/patreon.navitem.jsx b/client/homebrew/navbar/patreon.navitem.jsx index 6edf780e5..7eb7daee8 100644 --- a/client/homebrew/navbar/patreon.navitem.jsx +++ b/client/homebrew/navbar/patreon.navitem.jsx @@ -1,5 +1,5 @@ -const React = require('react'); -const Nav = require('client/homebrew/navbar/nav.jsx'); +import React from 'react'; +import Nav from 'client/homebrew/navbar/nav.jsx'; export default function(props){ return diff --git a/client/homebrew/navbar/recent.navitem.jsx b/client/homebrew/navbar/recent.navitem.jsx index c1337ea4e..5a40ce645 100644 --- a/client/homebrew/navbar/recent.navitem.jsx +++ b/client/homebrew/navbar/recent.navitem.jsx @@ -1,15 +1,15 @@ -const React = require('react'); -const createClass = require('create-react-class'); -const _ = require('lodash'); -const Moment = require('moment'); +import React from 'react'; +import createReactClass from 'create-react-class'; +import _ from 'lodash'; +import Moment from 'moment'; -const Nav = require('client/homebrew/navbar/nav.jsx'); +import Nav from 'client/homebrew/navbar/nav.jsx'; const EDIT_KEY = 'HB_nav_recentlyEdited'; const VIEW_KEY = 'HB_nav_recentlyViewed'; -const RecentItems = createClass({ +const RecentItems = createReactClass({ DisplayName : 'RecentItems', getDefaultProps : function() { return { diff --git a/client/homebrew/navbar/vault.navitem.jsx b/client/homebrew/navbar/vault.navitem.jsx index dff401525..9e4305811 100644 --- a/client/homebrew/navbar/vault.navitem.jsx +++ b/client/homebrew/navbar/vault.navitem.jsx @@ -1,6 +1,6 @@ -const React = require('react'); +import React from 'react'; -const Nav = require('client/homebrew/navbar/nav.jsx'); +import Nav from 'client/homebrew/navbar/nav.jsx'; export default function (props) { return ( diff --git a/client/homebrew/pages/accountPage/accountPage.jsx b/client/homebrew/pages/accountPage/accountPage.jsx index 91f8daa05..015106628 100644 --- a/client/homebrew/pages/accountPage/accountPage.jsx +++ b/client/homebrew/pages/accountPage/accountPage.jsx @@ -1,7 +1,7 @@ -const React = require('react'); -const moment = require('moment'); -const UIPage = require('../basePages/uiPage/uiPage.jsx'); -const NaturalCritIcon = require('client/components/svg/naturalcrit-d20.svg.jsx'); +import React from 'react'; +import moment from 'moment'; +import UIPage from '../basePages/uiPage/uiPage.jsx'; +import NaturalCritIcon from 'client/components/svg/naturalcrit-d20.svg.jsx'; let SAVEKEY = ''; diff --git a/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx b/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx index 4f952f01e..41d992b9d 100644 --- a/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/basePages/listPage/brewItem/brewItem.jsx @@ -1,12 +1,11 @@ -require('./brewItem.less'); -const React = require('react'); -const { useCallback } = React; -const moment = require('moment'); +import './brewItem.less'; +import React, { useCallback } from 'react'; +import moment from 'moment'; import request from '../../../../utils/request-middleware.js'; -const googleDriveIcon = require('../../../../googleDrive.svg'); -const homebreweryIcon = require('../../../../thumbnail.svg'); -const dedent = require('dedent-tabs').default; +import googleDriveIcon from '../../../../googleDrive.svg'; +import homebreweryIcon from '../../../../thumbnail.svg'; +import dedent from 'dedent-tabs'; const BrewItem = ({ brew = { diff --git a/client/homebrew/pages/basePages/listPage/listPage.jsx b/client/homebrew/pages/basePages/listPage/listPage.jsx index 9589956d5..e5a662aa6 100644 --- a/client/homebrew/pages/basePages/listPage/listPage.jsx +++ b/client/homebrew/pages/basePages/listPage/listPage.jsx @@ -1,11 +1,11 @@ /*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/ -require('./listPage.less'); -const React = require('react'); -const createClass = require('create-react-class'); -const _ = require('lodash'); -const moment = require('moment'); +import './listPage.less'; +import React from 'react'; +import createReactClass from 'create-react-class'; +import _ from 'lodash'; +import moment from 'moment;' -const BrewItem = require('./brewItem/brewItem.jsx'); +import BrewItem from './brewItem/brewItem.jsx'; const USERPAGE_SORT_DIR = 'HB_listPage_sortDir'; const USERPAGE_SORT_TYPE = 'HB_listPage_sortType'; @@ -14,7 +14,7 @@ const USERPAGE_GROUP_VISIBILITY_PREFIX = 'HB_listPage_visibility_group'; const DEFAULT_SORT_TYPE = 'alpha'; const DEFAULT_SORT_DIR = 'asc'; -const ListPage = createClass({ +const ListPage = createReactClass({ displayName : 'ListPage', getDefaultProps : function() { return { diff --git a/client/homebrew/pages/basePages/uiPage/uiPage.jsx b/client/homebrew/pages/basePages/uiPage/uiPage.jsx index 7a95748aa..c15f69d04 100644 --- a/client/homebrew/pages/basePages/uiPage/uiPage.jsx +++ b/client/homebrew/pages/basePages/uiPage/uiPage.jsx @@ -1,16 +1,16 @@ -require('./uiPage.less'); -const React = require('react'); -const createClass = require('create-react-class'); +import './uiPage.less'; +import React from 'react'; +import createReactClass from 'create-react-class'; -const Nav = require('client/homebrew/navbar/nav.jsx'); -const Navbar = require('client/homebrew/navbar/navbar.jsx'); -const NewBrewItem = require('client/homebrew/navbar/newbrew.navitem.jsx'); -const HelpNavItem = require('client/homebrew/navbar/help.navitem.jsx'); -const RecentNavItem = require('client/homebrew/navbar/recent.navitem.jsx').both; -const Account = require('client/homebrew/navbar/account.navitem.jsx'); +import Nav from 'client/homebrew/navbar/nav.jsx'; +import Navbar from 'client/homebrew/navbar/navbar.jsx'; +import NewBrewItem from 'client/homebrew/navbar/newbrew.navitem.jsx'; +import HelpNavItem from 'client/homebrew/navbar/help.navitem.jsx'; +import { both as RecentNavItem } from 'client/homebrew/navbar/recent.navitem.jsx'; +import Account from 'client/homebrew/navbar/account.navitem.jsx'; -const UIPage = createClass({ +const UIPage = createReactClass({ displayName : 'UIPage', render : function(){ diff --git a/client/homebrew/pages/errorPage/errorPage.jsx b/client/homebrew/pages/errorPage/errorPage.jsx index e90ceb742..ffbfc43bb 100644 --- a/client/homebrew/pages/errorPage/errorPage.jsx +++ b/client/homebrew/pages/errorPage/errorPage.jsx @@ -1,8 +1,8 @@ -require('./errorPage.less'); -const React = require('react'); -const UIPage = require('../basePages/uiPage/uiPage.jsx'); -import Markdown from '../../../../shared/markdown.js'; -const ErrorIndex = require('./errors/errorIndex.js'); +import './errorPage.less'; +import React from 'react'; +import UIPage from '../basePages/uiPage/uiPage.jsx'; +import Markdown from '../../../../shared/markdown.js'; +import ErrorIndex from './errors/errorIndex.js'; const ErrorPage = ({ brew })=>{ // Retrieving the error text based on the brew's error code from ErrorIndex diff --git a/client/homebrew/pages/errorPage/errors/errorIndex.js b/client/homebrew/pages/errorPage/errors/errorIndex.js index 9ca37a854..67b658325 100644 --- a/client/homebrew/pages/errorPage/errors/errorIndex.js +++ b/client/homebrew/pages/errorPage/errors/errorIndex.js @@ -1,4 +1,4 @@ -const dedent = require('dedent-tabs').default; +import dedent from 'dedent-tabs'; const loginUrl = 'https://www.naturalcrit.com/login'; diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index 48bed1655..ccd6533e5 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -1,18 +1,19 @@ -require('./sharePage.less'); -const React = require('react'); -const { useState, useEffect, useCallback } = React; -const { Meta } = require('vitreum/headtags'); +import './sharePage.less'; +import React, { useState, useEffect, useCallback } from 'react'; +import HeadTags from '../../../../vitreum/headtags.js'; +const { Meta } = HeadTags; -const Nav = require('client/homebrew/navbar/nav.jsx'); -const Navbar = require('client/homebrew/navbar/navbar.jsx'); -const MetadataNav = require('client/homebrew/navbar/metadata.navitem.jsx'); -const PrintNavItem = require('client/homebrew/navbar/print.navitem.jsx'); -const RecentNavItem = require('client/homebrew/navbar/recent.navitem.jsx').both; -const Account = require('client/homebrew/navbar/account.navitem.jsx'); -const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx'); -const { DEFAULT_BREW_LOAD } = require('../../../../server/brewDefaults.js'); -const { printCurrentBrew, fetchThemeBundle } = require('../../../../shared/helpers.js'); +import Nav from 'client/homebrew/navbar/nav.jsx'; +import Navbar from 'client/homebrew/navbar/navbar.jsx'; +import MetadataNav from 'client/homebrew/navbar/metadata.navitem.jsx'; +import PrintNavItem from 'client/homebrew/navbar/print.navitem.jsx'; +import { both as RecentNavItem } from 'client/homebrew/navbar/recent.navitem.jsx'; +import Account from 'client/homebrew/navbar/account.navitem.jsx'; +import BrewRenderer from '../../brewRenderer/brewRenderer.jsx'; + +import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefaults.js'; +import { printCurrentBrew, fetchThemeBundle } from '../../../../shared/helpers.js'; const SharePage = (props)=>{ const { brew = DEFAULT_BREW_LOAD, disableMeta = false } = props; diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index ac4257124..f6f0cfa38 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -1,17 +1,16 @@ -const React = require('react'); -const { useState } = React; -const _ = require('lodash'); +import React, { useState} from 'react'; +import _ from 'lodash'; -const ListPage = require('../basePages/listPage/listPage.jsx'); +import ListPage from '../basePages/listPage/listPage.jsx'; -const Nav = require('client/homebrew/navbar/nav.jsx'); -const Navbar = require('client/homebrew/navbar/navbar.jsx'); -const RecentNavItem = require('client/homebrew/navbar/recent.navitem.jsx').both; -const Account = require('client/homebrew/navbar/account.navitem.jsx'); -const NewBrew = require('client/homebrew/navbar/newbrew.navitem.jsx'); -const HelpNavItem = require('client/homebrew/navbar/help.navitem.jsx'); -const ErrorNavItem = require('client/homebrew/navbar/error-navitem.jsx'); -const VaultNavitem = require('client/homebrew/navbar/vault.navitem.jsx'); +import Nav from 'client/homebrew/navbar/nav.jsx'; +import Navbar from 'client/homebrew/navbar/navbar.jsx'; +import { both as RecentNavItem } from 'client/homebrew/navbar/recent.navitem.jsx'; +import Account from 'client/homebrew/navbar/account.navitem.jsx'; +import NewBrew from 'client/homebrew/navbar/newbrew.navitem.jsx'; +import HelpNavItem from 'client/homebrew/navbar/help.navitem.jsx'; +import ErrorNavItem from 'client/homebrew/navbar/error-navitem.jsx'; +import VaultNavitem from 'client/homebrew/navbar/vault.navitem.jsx'; const UserPage = (props)=>{ props = { diff --git a/client/homebrew/pages/vaultPage/vaultPage.jsx b/client/homebrew/pages/vaultPage/vaultPage.jsx index a9c316d8a..fd2dff064 100644 --- a/client/homebrew/pages/vaultPage/vaultPage.jsx +++ b/client/homebrew/pages/vaultPage/vaultPage.jsx @@ -1,19 +1,17 @@ /*eslint max-lines: ["warn", {"max": 400, "skipBlankLines": true, "skipComments": true}]*/ /*eslint max-params:["warn", { max: 10 }], */ -require('./vaultPage.less'); +import './vaultPage.less'; +import React, { useState, useEffect, useRef } from 'react'; -const React = require('react'); -const { useState, useEffect, useRef } = React; - -const Nav = require('client/homebrew/navbar/nav.jsx'); -const Navbar = require('client/homebrew/navbar/navbar.jsx'); -const RecentNavItem = require('client/homebrew/navbar/recent.navitem.jsx').both; -const Account = require('client/homebrew/navbar/account.navitem.jsx'); -const NewBrew = require('client/homebrew/navbar/newbrew.navitem.jsx'); -const HelpNavItem = require('client/homebrew/navbar/help.navitem.jsx'); -const BrewItem = require('../basePages/listPage/brewItem/brewItem.jsx'); -const SplitPane = require('client/components/splitPane/splitPane.jsx'); -const ErrorIndex = require('../errorPage/errors/errorIndex.js'); +import Nav from 'client/homebrew/navbar/nav.jsx'; +import Navbar from 'client/homebrew/navbar/navbar.jsx'; +import { both as RecentNavItem } from 'client/homebrew/navbar/recent.navitem.jsx'; +import Account from 'client/homebrew/navbar/account.navitem.jsx'; +import NewBrew from 'client/homebrew/navbar/newbrew.navitem.jsx'; +import HelpNavItem from 'client/homebrew/navbar/help.navitem.jsx'; +import BrewItem from '../basePages/listPage/brewItem/brewItem.jsx'; +import SplitPane from 'client/components/splitPane/splitPane.jsx'; +import ErrorIndex from '../errorPage/errors/errorIndex.js'; import request from '../../utils/request-middleware.js'; diff --git a/eslint.config.mjs b/eslint.config.mjs index 25d0395c7..549ba2536 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -32,7 +32,7 @@ export default [{ "max-depth" : ["warn", { max: 4 }], "max-params" : ["warn", { max: 5 }], "no-restricted-syntax" : ["warn", "ClassDeclaration", "SwitchStatement"], - "no-unused-vars" : ["warn", { vars: "all", args: "none", varsIgnorePattern: "config|_|cx|createClass" }], + "no-unused-vars" : ["warn", { vars: "all", args: "none", varsIgnorePattern: "config|_|cx|createReactClass" }], "react/jsx-uses-vars" : "warn", /** Fixable **/ diff --git a/shared/markdownLegacy.js b/shared/markdownLegacy.js index 0dfd46320..9cea8dbb2 100644 --- a/shared/markdownLegacy.js +++ b/shared/markdownLegacy.js @@ -1,5 +1,5 @@ -const _ = require('lodash'); -const Markdown = require('markedLegacy'); +import _ from 'lodash'; +import Markdown from 'markedLegacy'; const renderer = new Markdown.Renderer(); //Processes the markdown within an HTML block if it's just a class-wrapper diff --git a/tests/html/safeHTML.test.js b/tests/html/safeHTML.test.js index cb5466a48..d1bb2b539 100644 --- a/tests/html/safeHTML.test.js +++ b/tests/html/safeHTML.test.js @@ -1,6 +1,5 @@ - - -require('jsdom-global')(); +import jsdomGlobal from 'jsdom-global'; +jsdomGlobal(); import { safeHTML } from '../../client/homebrew/brewRenderer/safeHTML'; diff --git a/tests/markdown/emojis.test.js b/tests/markdown/emojis.test.js index e21eec414..e5b6ecd47 100644 --- a/tests/markdown/emojis.test.js +++ b/tests/markdown/emojis.test.js @@ -1,5 +1,5 @@ import Markdown from 'markdown.js'; -const dedent = require('dedent-tabs').default; +import dedent from 'dedent-tabs'; // 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/mustache-syntax.test.js b/tests/markdown/mustache-syntax.test.js index 5743f7903..bdf368414 100644 --- a/tests/markdown/mustache-syntax.test.js +++ b/tests/markdown/mustache-syntax.test.js @@ -1,6 +1,6 @@ /* eslint-disable max-lines */ -const dedent = require('dedent-tabs').default; +import dedent from 'dedent-tabs'; import Markdown from 'markdown.js'; // Marked.js adds line returns after closing tags on some default tokens. diff --git a/tests/markdown/variables.test.js b/tests/markdown/variables.test.js index 64232078f..aa2117f31 100644 --- a/tests/markdown/variables.test.js +++ b/tests/markdown/variables.test.js @@ -1,6 +1,6 @@ /* eslint-disable max-lines */ -const dedent = require('dedent-tabs').default; +import dedent from 'dedent-tabs'; import Markdown from 'markdown.js'; // Marked.js adds line returns after closing tags on some default tokens. diff --git a/themes/Legacy/5ePHB/snippets.js b/themes/Legacy/5ePHB/snippets.js index e1665b47c..3bcdac50e 100644 --- a/themes/Legacy/5ePHB/snippets.js +++ b/themes/Legacy/5ePHB/snippets.js @@ -1,12 +1,12 @@ /* eslint-disable max-lines */ -const MagicGen = require('./snippets/magic.gen.js'); -const ClassTableGen = require('./snippets/classtable.gen.js'); -const MonsterBlockGen = require('./snippets/monsterblock.gen.js'); -const ClassFeatureGen = require('./snippets/classfeature.gen.js'); -const CoverPageGen = require('./snippets/coverpage.gen.js'); -const TableOfContentsGen = require('./snippets/tableOfContents.gen.js'); -const dedent = require('dedent-tabs').default; +import MagicGen from './snippets/magic.gen.js'; +import ClassTableGen from './snippets/classtable.gen.js'; +import MonsterBlockGen from './snippets/monsterblock.gen.js'; +import ClassFeatureGen from './snippets/classfeature.gen.js'; +import CoverPageGen from './snippets/coverpage.gen.js'; +import TableOfContentsGen from './snippets/tableOfContents.gen.js'; +import dedent from 'dedent-tabs'; export default [ diff --git a/themes/Legacy/5ePHB/snippets/classfeature.gen.js b/themes/Legacy/5ePHB/snippets/classfeature.gen.js index 53e989dcc..b92d527f9 100644 --- a/themes/Legacy/5ePHB/snippets/classfeature.gen.js +++ b/themes/Legacy/5ePHB/snippets/classfeature.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; export default function(classname){ diff --git a/themes/Legacy/5ePHB/snippets/classtable.gen.js b/themes/Legacy/5ePHB/snippets/classtable.gen.js index 69ded1b19..3444de38f 100644 --- a/themes/Legacy/5ePHB/snippets/classtable.gen.js +++ b/themes/Legacy/5ePHB/snippets/classtable.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; const features = [ 'Astrological Botany', diff --git a/themes/Legacy/5ePHB/snippets/coverpage.gen.js b/themes/Legacy/5ePHB/snippets/coverpage.gen.js index 8d66c4391..0cd0e50d5 100644 --- a/themes/Legacy/5ePHB/snippets/coverpage.gen.js +++ b/themes/Legacy/5ePHB/snippets/coverpage.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; const titles = [ 'The Burning Gallows', diff --git a/themes/Legacy/5ePHB/snippets/fullclass.gen.js b/themes/Legacy/5ePHB/snippets/fullclass.gen.js index 68fc81ac3..50d1ef578 100644 --- a/themes/Legacy/5ePHB/snippets/fullclass.gen.js +++ b/themes/Legacy/5ePHB/snippets/fullclass.gen.js @@ -1,8 +1,8 @@ -const _ = require('lodash'); +import _ from 'lodash'; -const ClassFeatureGen = require('./classfeature.gen.js'); +import ClassFeatureGen from './classfeature.gen.js'; -const ClassTableGen = require('./classtable.gen.js'); +import ClassTableGen from './classtable.gen.js'; export default function(){ diff --git a/themes/Legacy/5ePHB/snippets/magic.gen.js b/themes/Legacy/5ePHB/snippets/magic.gen.js index 832ad2a84..cea4ac1a8 100644 --- a/themes/Legacy/5ePHB/snippets/magic.gen.js +++ b/themes/Legacy/5ePHB/snippets/magic.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; const spellNames = [ 'Astral Rite of Acne', diff --git a/themes/Legacy/5ePHB/snippets/monsterblock.gen.js b/themes/Legacy/5ePHB/snippets/monsterblock.gen.js index 3279fa995..9c241a7ae 100644 --- a/themes/Legacy/5ePHB/snippets/monsterblock.gen.js +++ b/themes/Legacy/5ePHB/snippets/monsterblock.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; const genList = function(list, max){ return _.sampleSize(list, _.random(0, max)).join(', ') || 'None'; diff --git a/themes/Legacy/5ePHB/snippets/tableOfContents.gen.js b/themes/Legacy/5ePHB/snippets/tableOfContents.gen.js index 3873eb400..b37cca9ee 100644 --- a/themes/Legacy/5ePHB/snippets/tableOfContents.gen.js +++ b/themes/Legacy/5ePHB/snippets/tableOfContents.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; const getTOC = (pages)=>{ const add1 = (title, page)=>{ diff --git a/themes/V3/5ePHB/snippets.js b/themes/V3/5ePHB/snippets.js index afa789af5..9ab81b2c0 100644 --- a/themes/V3/5ePHB/snippets.js +++ b/themes/V3/5ePHB/snippets.js @@ -1,15 +1,12 @@ /* eslint-disable max-lines */ - -const MagicGen = require('./snippets/magic.gen.js'); -const ClassTableGen = require('./snippets/classtable.gen.js'); -const MonsterBlockGen = require('./snippets/monsterblock.gen.js'); -const scriptGen = require('./snippets/script.gen.js'); -const ClassFeatureGen = require('./snippets/classfeature.gen.js'); -const CoverPageGen = require('./snippets/coverpage.gen.js'); -const QuoteGen = require('./snippets/quote.gen.js'); -const dedent = require('dedent-tabs').default; - - +import MagicGen from './snippets/magic.gen.js'; +import ClassTableGen from './snippets/classtable.gen.js'; +import MonsterBlockGen from './snippets/monsterblock.gen.js'; +import scriptGen from './snippets/script.gen.js'; +import ClassFeatureGen from './snippets/classfeature.gen.js'; +import CoverPageGen from './snippets/coverpage.gen.js'; +import QuoteGen from './snippets/quote.gen.js'; +import dedent from 'dedent-tabs'; export default [ { diff --git a/themes/V3/5ePHB/snippets/classfeature.gen.js b/themes/V3/5ePHB/snippets/classfeature.gen.js index 794545920..9ea46785a 100644 --- a/themes/V3/5ePHB/snippets/classfeature.gen.js +++ b/themes/V3/5ePHB/snippets/classfeature.gen.js @@ -1,5 +1,5 @@ -const _ = require('lodash'); -const dedent = require('dedent-tabs').default; +import _ from 'lodash'; +import dedent from 'dedent-tabs'; export default function(classname){ diff --git a/themes/V3/5ePHB/snippets/classtable.gen.js b/themes/V3/5ePHB/snippets/classtable.gen.js index 469ed5193..0f2d2371a 100644 --- a/themes/V3/5ePHB/snippets/classtable.gen.js +++ b/themes/V3/5ePHB/snippets/classtable.gen.js @@ -1,5 +1,5 @@ -const _ = require('lodash'); -const dedent = require('dedent-tabs').default; +import _ from 'lodash'; +import dedent from 'dedent-tabs'; const features = [ 'Astrological Botany', 'Biochemical Sorcery', 'Civil Divination', diff --git a/themes/V3/5ePHB/snippets/coverpage.gen.js b/themes/V3/5ePHB/snippets/coverpage.gen.js index 20ef3c3f8..7cf9cf5cf 100644 --- a/themes/V3/5ePHB/snippets/coverpage.gen.js +++ b/themes/V3/5ePHB/snippets/coverpage.gen.js @@ -1,5 +1,5 @@ -const _ = require('lodash'); -const dedent = require('dedent-tabs').default; +import _ from 'lodash'; +import dedent from 'dedent-tabs'; const titles = [ 'The Burning Gallows', 'The Ring of Nenlast', diff --git a/themes/V3/5ePHB/snippets/fullclass.gen.js b/themes/V3/5ePHB/snippets/fullclass.gen.js index 68fc81ac3..16cf5854a 100644 --- a/themes/V3/5ePHB/snippets/fullclass.gen.js +++ b/themes/V3/5ePHB/snippets/fullclass.gen.js @@ -1,8 +1,7 @@ -const _ = require('lodash'); +import _ from 'lodash'; -const ClassFeatureGen = require('./classfeature.gen.js'); - -const ClassTableGen = require('./classtable.gen.js'); +import ClassFeatureGen from './classfeature.gen.js'; +import ClassTableGen from './classtable.gen.js'; export default function(){ diff --git a/themes/V3/5ePHB/snippets/magic.gen.js b/themes/V3/5ePHB/snippets/magic.gen.js index 745d86695..11a8011e7 100644 --- a/themes/V3/5ePHB/snippets/magic.gen.js +++ b/themes/V3/5ePHB/snippets/magic.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; const spellNames = [ 'Astral Rite of Acne', diff --git a/themes/V3/5ePHB/snippets/monsterblock.gen.js b/themes/V3/5ePHB/snippets/monsterblock.gen.js index 1f3b37736..483c9016d 100644 --- a/themes/V3/5ePHB/snippets/monsterblock.gen.js +++ b/themes/V3/5ePHB/snippets/monsterblock.gen.js @@ -1,5 +1,5 @@ -const _ = require('lodash'); -const dedent = require('dedent-tabs').default; +import _ from 'lodash'; +import dedent from 'dedent-tabs'; const genList = function(list, max){ return _.sampleSize(list, _.random(0, max)).join(', ') || 'None'; diff --git a/themes/V3/5ePHB/snippets/quote.gen.js b/themes/V3/5ePHB/snippets/quote.gen.js index f7c9c7414..4f52ea4c5 100644 --- a/themes/V3/5ePHB/snippets/quote.gen.js +++ b/themes/V3/5ePHB/snippets/quote.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; const quotes = [ 'The sword glinted in the dim light, its edges keen and deadly. As the adventurer reached for it, he couldn\'t help but feel a surge of excitement mixed with fear. This was no ordinary blade.', diff --git a/themes/V3/5ePHB/snippets/script.gen.js b/themes/V3/5ePHB/snippets/script.gen.js index 44573958f..ace330255 100644 --- a/themes/V3/5ePHB/snippets/script.gen.js +++ b/themes/V3/5ePHB/snippets/script.gen.js @@ -1,5 +1,5 @@ -const _ = require('lodash'); -const dedent = require('dedent-tabs').default; +import _ from 'lodash'; +import dedent from 'dedent-tabs'; export default { dwarvish : ()=>{ diff --git a/themes/V3/5ePHB/snippets/watercolor.gen.js b/themes/V3/5ePHB/snippets/watercolor.gen.js index 3d8c81f8b..25ce84aa9 100644 --- a/themes/V3/5ePHB/snippets/watercolor.gen.js +++ b/themes/V3/5ePHB/snippets/watercolor.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; export default ()=>{ return `{{watercolor${_.random(1, 12)},top:20px,left:30px,width:300px,background-color:#BBAD82,opacity:80%}}\n\n`; diff --git a/themes/V3/Blank/snippets.js b/themes/V3/Blank/snippets.js index 3b443740e..3f7dd1c19 100644 --- a/themes/V3/Blank/snippets.js +++ b/themes/V3/Blank/snippets.js @@ -1,17 +1,16 @@ /* eslint-disable max-lines */ - -const WatercolorGen = require('./snippets/watercolor.gen.js'); -const ImageMaskGen = require('./snippets/imageMask.gen.js'); -const FooterGen = require('./snippets/footer.gen.js'); -const LicenseGenWotC = require('./snippets/licenseWotC.gen.js'); -const LicenseGenGNU = require('./snippets/licenseGNU.gen.js'); -const LicenseGen = require('./snippets/license.gen.js'); -const LicenseGenAelf = require('./snippets/licenseAELF.js'); -const LicenseDTTRPGGCC = require('./snippets/licenseDTRPGCC.gen.js'); -const LicenseMongoosePublishing = require('./snippets/licenseMongoose.gen.js'); -const dedent = require('dedent-tabs').default; -const TableOfContentsGen = require('./snippets/tableOfContents.gen.js'); -const indexGen = require('./snippets/index.gen.js'); +import dedent from 'dedent-tabs'; +import WatercolorGen from './snippets/watercolor.gen.js'; +import ImageMaskGen from './snippets/imageMask.gen.js'; +import FooterGen from './snippets/footer.gen.js'; +import LicenseGenWotC from './snippets/licenseWotC.gen.js'; +import LicenseGenGNU from './snippets/licenseGNU.gen.js'; +import LicenseGen from './snippets/license.gen.js'; +import LicenseGenAelf from './snippets/licenseAELF.js'; +import LicenseDTTRPGGCC from './snippets/licenseDTRPGCC.gen.js'; +import LicenseMongoosePublishing from './snippets/licenseMongoose.gen.js'; +import TableOfContentsGen from './snippets/tableOfContents.gen.js'; +import indexGen from './snippets/index.gen.js'; export default [ diff --git a/themes/V3/Blank/snippets/imageMask.gen.js b/themes/V3/Blank/snippets/imageMask.gen.js index 9127b826b..761259c19 100644 --- a/themes/V3/Blank/snippets/imageMask.gen.js +++ b/themes/V3/Blank/snippets/imageMask.gen.js @@ -1,5 +1,5 @@ -const _ = require('lodash'); -const dedent = require('dedent-tabs').default; +import _ from 'lodash'; +import dedent from 'dedent-tabs'; export default { center : ()=>{ diff --git a/themes/V3/Blank/snippets/index.gen.js b/themes/V3/Blank/snippets/index.gen.js index 5a10f67f4..1321762e9 100644 --- a/themes/V3/Blank/snippets/index.gen.js +++ b/themes/V3/Blank/snippets/index.gen.js @@ -1,4 +1,4 @@ -const dedent = require('dedent-tabs').default; +import dedent from 'dedent-tabs'; export default ()=>{ return dedent` diff --git a/themes/V3/Blank/snippets/license.gen.js b/themes/V3/Blank/snippets/license.gen.js index b8f0778c5..2bb3b9daa 100644 --- a/themes/V3/Blank/snippets/license.gen.js +++ b/themes/V3/Blank/snippets/license.gen.js @@ -1,5 +1,5 @@ /* eslint-disable max-lines */ -const dedent = require('dedent'); +import dedent from 'dedent'; // Small and one-off licenses // Licenses in this file consist of one or two functions at most. If something is larger, diff --git a/themes/V3/Blank/snippets/licenseAELF.js b/themes/V3/Blank/snippets/licenseAELF.js index 12e45a3f9..0df1d8028 100644 --- a/themes/V3/Blank/snippets/licenseAELF.js +++ b/themes/V3/Blank/snippets/licenseAELF.js @@ -1,5 +1,5 @@ /* eslint-disable max-lines */ -const dedent = require('dedent'); +import dedent from 'dedent'; // AELF License diff --git a/themes/V3/Blank/snippets/licenseDTRPGCC.gen.js b/themes/V3/Blank/snippets/licenseDTRPGCC.gen.js index 98377651a..8febabfbb 100644 --- a/themes/V3/Blank/snippets/licenseDTRPGCC.gen.js +++ b/themes/V3/Blank/snippets/licenseDTRPGCC.gen.js @@ -1,5 +1,5 @@ /* eslint-disable max-lines */ -const dedent = require('dedent'); +import dedent from 'dedent'; // DriveThruRPG/OneBookShelf Community Content Programs diff --git a/themes/V3/Blank/snippets/licenseGNU.gen.js b/themes/V3/Blank/snippets/licenseGNU.gen.js index 4952ee7de..e09a0d2df 100644 --- a/themes/V3/Blank/snippets/licenseGNU.gen.js +++ b/themes/V3/Blank/snippets/licenseGNU.gen.js @@ -1,5 +1,5 @@ /* eslint-disable max-lines */ -const dedent = require('dedent'); +import dedent from 'dedent'; // GNU Licenses diff --git a/themes/V3/Blank/snippets/licenseMongoose.gen.js b/themes/V3/Blank/snippets/licenseMongoose.gen.js index bc8e58148..c89ae6429 100644 --- a/themes/V3/Blank/snippets/licenseMongoose.gen.js +++ b/themes/V3/Blank/snippets/licenseMongoose.gen.js @@ -1,5 +1,5 @@ /* eslint-disable max-lines */ -const dedent = require('dedent'); +import dedent from 'dedent'; // Mongoose Publishing Licenses diff --git a/themes/V3/Blank/snippets/licenseWotC.gen.js b/themes/V3/Blank/snippets/licenseWotC.gen.js index a33bb4c46..543255540 100644 --- a/themes/V3/Blank/snippets/licenseWotC.gen.js +++ b/themes/V3/Blank/snippets/licenseWotC.gen.js @@ -1,5 +1,5 @@ /* eslint-disable max-lines */ -const dedent = require('dedent'); +import dedent from 'dedent'; export default { ogl1a : function () { diff --git a/themes/V3/Blank/snippets/tableOfContents.gen.js b/themes/V3/Blank/snippets/tableOfContents.gen.js index 45dca126c..d093d574a 100644 --- a/themes/V3/Blank/snippets/tableOfContents.gen.js +++ b/themes/V3/Blank/snippets/tableOfContents.gen.js @@ -1,4 +1,4 @@ -const dedent = require('dedent-tabs').default; +import dedent from 'dedent-tabs'; // Map each actual page to its footer label, accounting for skips or numbering resets const mapPages = (pages)=>{ diff --git a/themes/V3/Blank/snippets/watercolor.gen.js b/themes/V3/Blank/snippets/watercolor.gen.js index 3d8c81f8b..25ce84aa9 100644 --- a/themes/V3/Blank/snippets/watercolor.gen.js +++ b/themes/V3/Blank/snippets/watercolor.gen.js @@ -1,4 +1,4 @@ -const _ = require('lodash'); +import _ from 'lodash'; export default ()=>{ return `{{watercolor${_.random(1, 12)},top:20px,left:30px,width:300px,background-color:#BBAD82,opacity:80%}}\n\n`; diff --git a/vitreum/headtags.js b/vitreum/headtags.js new file mode 100644 index 000000000..8e0d06523 --- /dev/null +++ b/vitreum/headtags.js @@ -0,0 +1,79 @@ +import React from 'react'; + +const obj2props = (obj)=>Object.entries(obj).map(([k,v])=>`${k}="${v}"`).join(' '); +const toStr = (chld)=>Array.isArray(chld) ? chld.join('') : chld; +const onServer = (typeof window === 'undefined'); + +const injectTag = (tag, props, children)=>{ + const injectNode = document.createElement(tag); + Object.entries(props).map(([key, val])=>injectNode[key]=val); + if(children) injectNode.appendChild(document.createTextNode(children)); + document.getElementsByTagName('head')[0].appendChild(injectNode); +}; + + +let NamedTags = {}; +let UnnamedTags = []; + + +const HeadComponents = { + Title({ children }){ + if(onServer) NamedTags.title = `${toStr(children)}`; + React.useEffect(()=>{document.title = toStr(children)}, [children]); + return null; + }, + Favicon({ type = 'image/png', href = '', rel='icon', id= 'favicon'}){ + if(onServer) NamedTags.favicon = `` + React.useEffect(()=>{document.getElementById(id).href=href}, [id, href]); + return null; + }, + + Description({ children }){ + if(onServer) NamedTags.description = `` + return null; + }, + + Noscript({ children }){ + if(onServer) UnnamedTags.push(`