0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-27 07:23:09 +00:00

Merge pull request #1451 from naturalcrit/master

Backing up live version before v3 beta opens
This commit is contained in:
Trevor Buckner
2021-07-24 22:14:25 -04:00
committed by GitHub
52 changed files with 676 additions and 396 deletions

View File

@@ -176,7 +176,10 @@ const BrewRenderer = createClass({
</div> </div>
: null} : null}
<Frame initialContent={this.state.initialContent} style={{ width: '100%', height: '100%', visibility: this.state.visibility }} contentDidMount={this.frameDidMount}> <Frame initialContent={this.state.initialContent}
head = <link href={`${this.props.renderer == 'legacy' ? '/themes/5ePhbLegacy.style.css' : '/themes/5ePhb.style.css'}`} rel='stylesheet'/>
style={{ width: '100%', height: '100%', visibility: this.state.visibility }}
contentDidMount={this.frameDidMount}>
<div className={'brewRenderer'} <div className={'brewRenderer'}
onScroll={this.handleScroll} onScroll={this.handleScroll}
style={{ height: this.state.height }}> style={{ height: this.state.height }}>
@@ -189,6 +192,7 @@ const BrewRenderer = createClass({
<div className='pages' ref='pages'> <div className='pages' ref='pages'>
{/* Apply CSS from Style tab */} {/* Apply CSS from Style tab */}
<div style={{ display: 'none' }} dangerouslySetInnerHTML={{ __html: `<style> ${this.props.style} </style>` }} /> <div style={{ display: 'none' }} dangerouslySetInnerHTML={{ __html: `<style> ${this.props.style} </style>` }} />
{/* Render pages from Markdown tab */} {/* Render pages from Markdown tab */}

View File

@@ -1,19 +1,11 @@
@import (multiple, less) 'shared/naturalcrit/styles/reset.less'; @import (multiple, less) 'shared/naturalcrit/styles/reset.less';
& {@import (multiple, less) './client/homebrew/phbStyle/phb.styleLegacy.less';} //&{} keeps internal variables locally-scoped
& {@import (multiple, less) './client/homebrew/phbStyle/phb.style.less';}
.brewRenderer{ .brewRenderer{
will-change : transform; will-change : transform;
overflow-y : scroll; overflow-y : scroll;
.pages{ .pages{
margin : 30px 0px; margin : 30px 0px;
&>.phb{ &>.page{
margin-right : auto;
margin-bottom : 30px;
margin-left : auto;
box-shadow : 1px 4px 14px #000;
}
&>.phb3{
margin-right : auto; margin-right : auto;
margin-bottom : 30px; margin-bottom : 30px;
margin-left : auto; margin-left : auto;

View File

@@ -82,11 +82,11 @@ module.exports = {
return [ return [
`#### ${_.sample(spellNames)}`, `#### ${_.sample(spellNames)}`,
`*${_.sample(level)}-level ${_.sample(spellSchools)}*`, `*${_.sample(level)}-level ${_.sample(spellSchools)}*`,
'___', '',
'- **Casting Time:** 1 action', '**Casting Time:** :: 1 action',
`- **Range:** ${_.sample(['Self', 'Touch', '30 feet', '60 feet'])}`, `**Range:** :: ${_.sample(['Self', 'Touch', '30 feet', '60 feet'])}`,
`- **Components:** ${components}`, `**Components:** :: ${components}`,
`- **Duration:** ${_.sample(['Until dispelled', '1 round', 'Instantaneous', 'Concentration, up to 10 minutes', '1 hour'])}`, `**Duration:** :: ${_.sample(['Until dispelled', '1 round', 'Instantaneous', 'Concentration, up to 10 minutes', '1 hour'])}`,
'', '',
'A flame, equivalent in brightness to a torch, springs from an object that you touch. ', 'A flame, equivalent in brightness to a torch, springs from an object that you touch. ',
'The effect look like a regular flame, but it creates no heat and doesn\'t use oxygen. ', 'The effect look like a regular flame, but it creates no heat and doesn\'t use oxygen. ',

View File

@@ -146,18 +146,18 @@ module.exports = {
## ${getMonsterName()} ## ${getMonsterName()}
*${getType()}, ${getAlignment()}* *${getType()}, ${getAlignment()}*
___ ___
: **Armor Class** : ${_.random(10, 20)} (chain mail, shield) **Armor Class** :: ${_.random(10, 20)} (chain mail, shield)
: **Hit Points** : ${_.random(1, 150)}(1d4 + 5) **Hit Points** :: ${_.random(1, 150)}(1d4 + 5)
: **Speed** : ${_.random(0, 50)}ft. **Speed** :: ${_.random(0, 50)}ft.
___ ___
| STR | DEX | CON | INT | WIS | CHA | | STR | DEX | CON | INT | WIS | CHA |
|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| |:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|
${getStats()} ${getStats()}
___ ___
: **Condition Immunities** : ${genList(['groggy', 'swagged', 'weak-kneed', 'buzzed', 'groovy', 'melancholy', 'drunk'], 3)} **Condition Immunities** :: ${genList(['groggy', 'swagged', 'weak-kneed', 'buzzed', 'groovy', 'melancholy', 'drunk'], 3)}
: **Senses** : darkvision 60 ft., passive Perception ${_.random(3, 20)} **Senses** :: darkvision 60 ft., passive Perception ${_.random(3, 20)}
: **Languages** : ${genList(['Common', 'Pottymouth', 'Gibberish', 'Latin', 'Jive'], 2)} **Languages** :: ${genList(['Common', 'Pottymouth', 'Gibberish', 'Latin', 'Jive'], 2)}
: **Challenge** : ${_.random(0, 15)} (${_.random(10, 10000)} XP) **Challenge** :: ${_.random(0, 15)} (${_.random(10, 10000)} XP)
___ ___
: :
${_.times(_.random(genLines, genLines + 2), function(){return genAbilities();}).join('\n\t\t\t\n\t\t\t')} ${_.times(_.random(genLines, genLines + 2), function(){return genAbilities();}).join('\n\t\t\t\n\t\t\t')}

View File

@@ -27,18 +27,34 @@ module.exports = [
}, },
{ {
name : 'Vertical Spacing', name : 'Vertical Spacing',
icon : 'fas fa-times-circle', icon : 'fas fa-arrows-alt-v',
gen : '' gen : '\n::::\n'
},
{
name : 'Horizontal Spacing',
icon : 'fas fa-arrows-alt-h',
gen : ' {{width="100px"}} '
}, },
{ {
name : 'Wide Block', name : 'Wide Block',
icon : 'fas fa-times-circle', icon : 'fas fa-window-maximize',
gen : '' gen : dedent`\n
{{wide
Everything in here will be extra wide. Tables, text, everything!
Beware though, CSS columns can behave a bit weird sometimes. You may
have to rely on the automatic column-break rather than \`\column\` if
you mix columns and wide blocks on the same page.
}}
\n`
}, },
{ {
name : 'Image', name : 'Image',
icon : 'fas fa-times-circle', icon : 'fas fa-image',
gen : '' gen : dedent`
<img
src='https://s-media-cache-ak0.pinimg.com/736x/4a/81/79/4a8179462cfdf39054a418efd4cb743e.jpg'
style='width:325px'/>
Credit: Kyounghwan Kim`
}, },
{ {
name : 'Background Image', name : 'Background Image',
@@ -130,26 +146,28 @@ module.exports = [
name : 'Note', name : 'Note',
icon : 'fas fa-sticky-note', icon : 'fas fa-sticky-note',
gen : function(){ gen : function(){
return [ return dedent`
'> ##### Time to Drop Knowledge', {{note
'> Use notes to point out some interesting information. ', ##### Time to Drop Knowledge
'> ', Use notes to point out some interesting information.
'> **Tables and lists** both work within a note.'
].join('\n'); **Tables and lists** both work within a note.
}}
\n`;
}, },
}, },
{ {
name : 'Descriptive Text Box', name : 'Descriptive Text Box',
icon : 'fas fa-comment-alt', icon : 'fas fa-comment-alt',
gen : function(){ gen : function(){
return [ return dedent`
'<div class=\'descriptive\'>', {{descriptive
'##### Time to Drop Knowledge', ##### Time to Drop Knowledge
'Use notes to point out some interesting information. ', Use descriptive boxes to highlight text that should be read aloud.
'',
'**Tables and lists** both work within a note.', **Tables and lists** both work within a descriptive box.
'</div>' }}
].join('\n'); \n`;
}, },
}, },
{ {

View File

@@ -1,4 +1,5 @@
const _ = require('lodash'); const _ = require('lodash');
const dedent = require('dedent-tabs').default;
const getTOC = (pages)=>{ const getTOC = (pages)=>{
const add1 = (title, page)=>{ const add1 = (title, page)=>{
@@ -9,7 +10,7 @@ const getTOC = (pages)=>{
}); });
}; };
const add2 = (title, page)=>{ const add2 = (title, page)=>{
if(!_.last(res)) add1('', page); if(!_.last(res)) add1(null, page);
_.last(res).children.push({ _.last(res).children.push({
title : title, title : title,
page : page + 1, page : page + 1,
@@ -17,8 +18,8 @@ const getTOC = (pages)=>{
}); });
}; };
const add3 = (title, page)=>{ const add3 = (title, page)=>{
if(!_.last(res)) add1('', page); if(!_.last(res)) add1(null, page);
if(!_.last(_.last(res).children)) add2('', page); if(!_.last(_.last(res).children)) add2(null, page);
_.last(_.last(res).children).children.push({ _.last(_.last(res).children).children.push({
title : title, title : title,
page : page + 1, page : page + 1,
@@ -51,13 +52,21 @@ module.exports = function(brew){
const pages = brew.text.split('\\page'); const pages = brew.text.split('\\page');
const TOC = getTOC(pages); const TOC = getTOC(pages);
const markdown = _.reduce(TOC, (r, g1, idx1)=>{ const markdown = _.reduce(TOC, (r, g1, idx1)=>{
r.push(`- **[${idx1 + 1} ${g1.title}](#p${g1.page})**`); if(g1.title !== null) {
r.push(`\t\t- ### [{{ ${g1.title}}}{{ ${g1.page}}}](#p${g1.page})`);
}
if(g1.children.length){ if(g1.children.length){
_.each(g1.children, (g2, idx2)=>{ _.each(g1.children, (g2, idx2)=>{
r.push(` - [${idx1 + 1}.${idx2 + 1} ${g2.title}](#p${g2.page})`); if(g2.title !== null) {
r.push(`\t\t - #### [{{ ${g2.title}}}{{ ${g2.page}}}](#p${g2.page})`);
}
if(g2.children.length){ if(g2.children.length){
_.each(g2.children, (g3, idx3)=>{ _.each(g2.children, (g3, idx3)=>{
r.push(` - [${idx1 + 1}.${idx2 + 1}.${idx3 + 1} ${g3.title}](#p${g3.page})`); if(g2.title !== null) {
r.push(`\t\t - [{{ ${g3.title}}}{{ ${g3.page}}}](#p${g3.page})`);
} else { // Don't over-indent if no level-2 parent entry
r.push(`\t\t - [{{ ${g3.title}}}{{ ${g3.page}}}](#p${g3.page})`);
}
}); });
} }
}); });
@@ -65,8 +74,11 @@ module.exports = function(brew){
return r; return r;
}, []).join('\n'); }, []).join('\n');
return `<div class='toc'> return dedent`
##### Table Of Contents {{toc,wide
# Table Of Contents
${markdown} ${markdown}
</div>\n`; }}
\n`;
}; };

View File

@@ -80,7 +80,8 @@ const RecentItems = createClass({
componentDidUpdate : function(prevProps) { componentDidUpdate : function(prevProps) {
if(prevProps.brew && this.props.brew.editId !== prevProps.brew.editId) { if(prevProps.brew && this.props.brew.editId !== prevProps.brew.editId) {
if(this.props.storageKey == 'edit') { let edited = JSON.parse(localStorage.getItem(EDIT_KEY) || '[]');
if(this.props.storageKey == 'edit') {
let prevEditId = prevProps.brew.editId; let prevEditId = prevProps.brew.editId;
if(prevProps.brew.googleId){ if(prevProps.brew.googleId){
prevEditId = `${prevProps.brew.googleId}${prevProps.brew.editId}`; prevEditId = `${prevProps.brew.googleId}${prevProps.brew.editId}`;

View File

@@ -59,6 +59,7 @@ const PrintPage = createClass({
render : function(){ render : function(){
return <div> return <div>
<Meta name='robots' content='noindex, nofollow' /> <Meta name='robots' content='noindex, nofollow' />
<link href={`${this.props.brew.renderer == 'legacy' ? '/themes/5ePhbLegacy.style.css' : '/themes/5ePhb.style.css'}`} rel='stylesheet'/>
{/* Apply CSS from Style tab */} {/* Apply CSS from Style tab */}
<div style={{ display: 'none' }} dangerouslySetInnerHTML={{ __html: `<style> ${this.props.brew.style} </style>` }} /> <div style={{ display: 'none' }} dangerouslySetInnerHTML={{ __html: `<style> ${this.props.brew.style} </style>` }} />
{this.renderPages()} {this.renderPages()}

View File

@@ -53,6 +53,7 @@ const UserPage = createClass({
const brews = this.getSortedBrews(); const brews = this.getSortedBrews();
return <div className='userPage sitePage'> return <div className='userPage sitePage'>
<link href='/themes/5ePhbLegacy.style.css' rel='stylesheet'/>
<Navbar> <Navbar>
<Nav.section> <Nav.section>
<NewBrew /> <NewBrew />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 530 B

View File

@@ -1,9 +0,0 @@
@footerAccentImage : data-uri('./client/homebrew/phbStyle/images/footerAccent.png');
@frameBorderImage : data-uri('./client/homebrew/phbStyle/images/frameBorder.png');
@backgroundImage : data-uri('./client/homebrew/phbStyle/images/parchmentBackground.jpg');
@redTriangleImage : data-uri('./client/homebrew/phbStyle/images/redTriangle.png');
@monsterBorderImageLegacy : data-uri('./client/homebrew/phbStyle/images/monsterBorderLegacy.png');
@noteBorderImage : data-uri('./client/homebrew/phbStyle/images/noteBorder.png');
@descriptiveBoxImage : data-uri('./client/homebrew/phbStyle/images/descriptiveBorder.png');
@monsterBlockBackground : data-uri('./client/homebrew/phbStyle/images/parchmentBackgroundGrayscale.jpg');
@monsterBorderImage : data-uri('./client/homebrew/phbStyle/images/monsterBorderFancy.png');

Binary file not shown.

Before

Width:  |  Height:  |  Size: 864 B

428
package-lock.json generated
View File

@@ -9,13 +9,13 @@
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/core": "^7.14.6", "@babel/core": "^7.14.8",
"@babel/plugin-transform-runtime": "^7.14.5", "@babel/plugin-transform-runtime": "^7.14.5",
"@babel/preset-env": "^7.14.7", "@babel/preset-env": "^7.14.8",
"@babel/preset-react": "^7.14.5", "@babel/preset-react": "^7.14.5",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
"classnames": "^2.3.1", "classnames": "^2.3.1",
"codemirror": "^5.62.0", "codemirror": "^5.62.2",
"cookie-parser": "^1.4.5", "cookie-parser": "^1.4.5",
"create-react-class": "^15.7.0", "create-react-class": "^15.7.0",
"dedent-tabs": "^0.9.0", "dedent-tabs": "^0.9.0",
@@ -23,14 +23,14 @@
"express-async-handler": "^1.1.4", "express-async-handler": "^1.1.4",
"express-static-gzip": "2.1.1", "express-static-gzip": "2.1.1",
"fs-extra": "10.0.0", "fs-extra": "10.0.0",
"googleapis": "78.0.0", "googleapis": "82.0.0",
"jwt-simple": "^0.5.6", "jwt-simple": "^0.5.6",
"less": "^3.13.1", "less": "^3.13.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"marked": "2.1.3", "marked": "2.1.3",
"markedLegacy": "npm:marked@^0.3.19", "markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.1", "moment": "^2.29.1",
"mongoose": "^5.12.15", "mongoose": "^5.13.3",
"nanoid": "3.1.23", "nanoid": "3.1.23",
"nconf": "^0.11.3", "nconf": "^0.11.3",
"prop-types": "15.7.2", "prop-types": "15.7.2",
@@ -44,7 +44,7 @@
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git" "vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^7.29.0", "eslint": "^7.31.0",
"eslint-plugin-react": "^7.24.0", "eslint-plugin-react": "^7.24.0",
"pico-check": "^2.1.3" "pico-check": "^2.1.3"
}, },
@@ -72,19 +72,19 @@
} }
}, },
"node_modules/@babel/core": { "node_modules/@babel/core": {
"version": "7.14.6", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz",
"integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==",
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.14.5", "@babel/code-frame": "^7.14.5",
"@babel/generator": "^7.14.5", "@babel/generator": "^7.14.8",
"@babel/helper-compilation-targets": "^7.14.5", "@babel/helper-compilation-targets": "^7.14.5",
"@babel/helper-module-transforms": "^7.14.5", "@babel/helper-module-transforms": "^7.14.8",
"@babel/helpers": "^7.14.6", "@babel/helpers": "^7.14.8",
"@babel/parser": "^7.14.6", "@babel/parser": "^7.14.8",
"@babel/template": "^7.14.5", "@babel/template": "^7.14.5",
"@babel/traverse": "^7.14.5", "@babel/traverse": "^7.14.8",
"@babel/types": "^7.14.5", "@babel/types": "^7.14.8",
"convert-source-map": "^1.7.0", "convert-source-map": "^1.7.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"gensync": "^1.0.0-beta.2", "gensync": "^1.0.0-beta.2",
@@ -146,11 +146,11 @@
} }
}, },
"node_modules/@babel/generator": { "node_modules/@babel/generator": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz",
"integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==",
"dependencies": { "dependencies": {
"@babel/types": "^7.14.5", "@babel/types": "^7.14.8",
"jsesc": "^2.5.1", "jsesc": "^2.5.1",
"source-map": "^0.5.0" "source-map": "^0.5.0"
}, },
@@ -356,18 +356,18 @@
} }
}, },
"node_modules/@babel/helper-module-transforms": { "node_modules/@babel/helper-module-transforms": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz",
"integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", "integrity": "sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==",
"dependencies": { "dependencies": {
"@babel/helper-module-imports": "^7.14.5", "@babel/helper-module-imports": "^7.14.5",
"@babel/helper-replace-supers": "^7.14.5", "@babel/helper-replace-supers": "^7.14.5",
"@babel/helper-simple-access": "^7.14.5", "@babel/helper-simple-access": "^7.14.8",
"@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-split-export-declaration": "^7.14.5",
"@babel/helper-validator-identifier": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.8",
"@babel/template": "^7.14.5", "@babel/template": "^7.14.5",
"@babel/traverse": "^7.14.5", "@babel/traverse": "^7.14.8",
"@babel/types": "^7.14.5" "@babel/types": "^7.14.8"
}, },
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
@@ -420,11 +420,11 @@
} }
}, },
"node_modules/@babel/helper-simple-access": { "node_modules/@babel/helper-simple-access": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz",
"integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==",
"dependencies": { "dependencies": {
"@babel/types": "^7.14.5" "@babel/types": "^7.14.8"
}, },
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
@@ -453,9 +453,9 @@
} }
}, },
"node_modules/@babel/helper-validator-identifier": { "node_modules/@babel/helper-validator-identifier": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz",
"integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", "integrity": "sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow==",
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
} }
@@ -483,13 +483,13 @@
} }
}, },
"node_modules/@babel/helpers": { "node_modules/@babel/helpers": {
"version": "7.14.6", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz",
"integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", "integrity": "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==",
"dependencies": { "dependencies": {
"@babel/template": "^7.14.5", "@babel/template": "^7.14.5",
"@babel/traverse": "^7.14.5", "@babel/traverse": "^7.14.8",
"@babel/types": "^7.14.5" "@babel/types": "^7.14.8"
}, },
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
@@ -538,9 +538,9 @@
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
}, },
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.14.7", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz",
"integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==",
"bin": { "bin": {
"parser": "bin/babel-parser.js" "parser": "bin/babel-parser.js"
}, },
@@ -1595,9 +1595,9 @@
} }
}, },
"node_modules/@babel/preset-env": { "node_modules/@babel/preset-env": {
"version": "7.14.7", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz",
"integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", "integrity": "sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg==",
"dependencies": { "dependencies": {
"@babel/compat-data": "^7.14.7", "@babel/compat-data": "^7.14.7",
"@babel/helper-compilation-targets": "^7.14.5", "@babel/helper-compilation-targets": "^7.14.5",
@@ -1666,7 +1666,7 @@
"@babel/plugin-transform-unicode-escapes": "^7.14.5", "@babel/plugin-transform-unicode-escapes": "^7.14.5",
"@babel/plugin-transform-unicode-regex": "^7.14.5", "@babel/plugin-transform-unicode-regex": "^7.14.5",
"@babel/preset-modules": "^0.1.4", "@babel/preset-modules": "^0.1.4",
"@babel/types": "^7.14.5", "@babel/types": "^7.14.8",
"babel-plugin-polyfill-corejs2": "^0.2.2", "babel-plugin-polyfill-corejs2": "^0.2.2",
"babel-plugin-polyfill-corejs3": "^0.2.2", "babel-plugin-polyfill-corejs3": "^0.2.2",
"babel-plugin-polyfill-regenerator": "^0.2.2", "babel-plugin-polyfill-regenerator": "^0.2.2",
@@ -1746,17 +1746,17 @@
} }
}, },
"node_modules/@babel/traverse": { "node_modules/@babel/traverse": {
"version": "7.14.7", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz",
"integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==",
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.14.5", "@babel/code-frame": "^7.14.5",
"@babel/generator": "^7.14.5", "@babel/generator": "^7.14.8",
"@babel/helper-function-name": "^7.14.5", "@babel/helper-function-name": "^7.14.5",
"@babel/helper-hoist-variables": "^7.14.5", "@babel/helper-hoist-variables": "^7.14.5",
"@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-split-export-declaration": "^7.14.5",
"@babel/parser": "^7.14.7", "@babel/parser": "^7.14.8",
"@babel/types": "^7.14.5", "@babel/types": "^7.14.8",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0" "globals": "^11.1.0"
}, },
@@ -1789,11 +1789,11 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}, },
"node_modules/@babel/types": { "node_modules/@babel/types": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz",
"integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==",
"dependencies": { "dependencies": {
"@babel/helper-validator-identifier": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.8",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
}, },
"engines": { "engines": {
@@ -1801,9 +1801,9 @@
} }
}, },
"node_modules/@eslint/eslintrc": { "node_modules/@eslint/eslintrc": {
"version": "0.4.2", "version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
"integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
@@ -1821,9 +1821,9 @@
} }
}, },
"node_modules/@eslint/eslintrc/node_modules/debug": { "node_modules/@eslint/eslintrc/node_modules/debug": {
"version": "4.3.1", "version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"ms": "2.1.2" "ms": "2.1.2"
@@ -1855,6 +1855,49 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/@humanwhocodes/config-array": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
"integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.0",
"debug": "^4.1.1",
"minimatch": "^3.0.4"
},
"engines": {
"node": ">=10.10.0"
}
},
"node_modules/@humanwhocodes/config-array/node_modules/debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/@humanwhocodes/config-array/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/@humanwhocodes/object-schema": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
"integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
"dev": true
},
"node_modules/@sindresorhus/is": { "node_modules/@sindresorhus/is": {
"version": "0.14.0", "version": "0.14.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
@@ -1960,9 +2003,9 @@
} }
}, },
"node_modules/acorn-jsx": { "node_modules/acorn-jsx": {
"version": "5.3.1", "version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true, "dev": true,
"peerDependencies": { "peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
@@ -3138,9 +3181,9 @@
} }
}, },
"node_modules/codemirror": { "node_modules/codemirror": {
"version": "5.62.0", "version": "5.62.2",
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.0.tgz", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.2.tgz",
"integrity": "sha512-Xnl3304iCc8nyVZuRkzDVVwc794uc9QNX0UcPGeNic1fbzkSrO4l4GVXho9tRNKBgPYZXgocUqXyfIv3BILhCQ==" "integrity": "sha512-tVFMUa4J3Q8JUd1KL9yQzQB0/BJt7ZYZujZmTPgo/54Lpuq3ez4C8x/ATUY/wv7b7X3AUq8o3Xd+2C5ZrCGWHw=="
}, },
"node_modules/collection-visit": { "node_modules/collection-visit": {
"version": "1.0.0", "version": "1.0.0",
@@ -3811,13 +3854,14 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "7.29.0", "version": "7.31.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.31.0.tgz",
"integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", "integrity": "sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/code-frame": "7.12.11", "@babel/code-frame": "7.12.11",
"@eslint/eslintrc": "^0.4.2", "@eslint/eslintrc": "^0.4.3",
"@humanwhocodes/config-array": "^0.5.0",
"ajv": "^6.10.0", "ajv": "^6.10.0",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"cross-spawn": "^7.0.2", "cross-spawn": "^7.0.2",
@@ -4732,9 +4776,9 @@
} }
}, },
"node_modules/globals": { "node_modules/globals": {
"version": "13.9.0", "version": "13.10.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz",
"integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"type-fest": "^0.20.2" "type-fest": "^0.20.2"
@@ -4753,6 +4797,9 @@
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">=10" "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/google-auth-library": { "node_modules/google-auth-library": {
@@ -4789,9 +4836,9 @@
} }
}, },
"node_modules/googleapis": { "node_modules/googleapis": {
"version": "78.0.0", "version": "82.0.0",
"resolved": "https://registry.npmjs.org/googleapis/-/googleapis-78.0.0.tgz", "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-82.0.0.tgz",
"integrity": "sha512-Qx3WyG0kP1EHMc5z5lHDZyNg/u/1T9P0yudfp9y/ZrtQTpCLQM+7hH2Ca/C3Gnnn0qwN8hsn9E5Os03L46fldA==", "integrity": "sha512-TytL2h+Cl82RP8ZZ4hgiqOz/ZKWJ5nqn2ZaQ1bNIsIp6z4xuasXyJsgPaZzHADyRx/zNQfRfJGwzRInYJy7X4A==",
"dependencies": { "dependencies": {
"google-auth-library": "^7.0.2", "google-auth-library": "^7.0.2",
"googleapis-common": "^5.0.2" "googleapis-common": "^5.0.2"
@@ -6291,9 +6338,9 @@
} }
}, },
"node_modules/mongodb": { "node_modules/mongodb": {
"version": "3.6.8", "version": "3.6.10",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.8.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.10.tgz",
"integrity": "sha512-sDjJvI73WjON1vapcbyBD3Ao9/VN3TKYY8/QX9EPbs22KaCSrQ5rXo5ZZd44tWJ3wl3FlnrFZ+KyUtNH6+1ZPQ==", "integrity": "sha512-fvIBQBF7KwCJnDZUnFFy4WqEFP8ibdXeFANnylW19+vOwdjOAvqIzPdsNCEMT6VKTHnYu4K64AWRih0mkFms6Q==",
"dependencies": { "dependencies": {
"bl": "^2.2.1", "bl": "^2.2.1",
"bson": "^1.1.4", "bson": "^1.1.4",
@@ -6306,17 +6353,38 @@
}, },
"optionalDependencies": { "optionalDependencies": {
"saslprep": "^1.0.0" "saslprep": "^1.0.0"
},
"peerDependenciesMeta": {
"aws4": {
"optional": true
},
"bson-ext": {
"optional": true
},
"kerberos": {
"optional": true
},
"mongodb-client-encryption": {
"optional": true
},
"mongodb-extjson": {
"optional": true
},
"snappy": {
"optional": true
}
} }
}, },
"node_modules/mongoose": { "node_modules/mongoose": {
"version": "5.12.15", "version": "5.13.3",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.12.15.tgz", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.3.tgz",
"integrity": "sha512-GVvxE2/mbUsxAbTtleFlehCNMFlzcgKue/olukIpoN6iw1MYXKodf+ZIRndO+2jzlgbZgiHkAZZJbcFNt1DgHA==", "integrity": "sha512-q+zX6kqHAvwxf5speMWhq6qF4vdj+x6/kfD5RSKdZKNm52yGmaUygN+zgrtQjBZPFEzG0B3vF6GP0PoAGadE+w==",
"dependencies": { "dependencies": {
"@types/mongodb": "^3.5.27", "@types/mongodb": "^3.5.27",
"@types/node": "14.x || 15.x",
"bson": "^1.1.4", "bson": "^1.1.4",
"kareem": "2.3.2", "kareem": "2.3.2",
"mongodb": "3.6.8", "mongodb": "3.6.10",
"mongoose-legacy-pluralize": "1.0.2", "mongoose-legacy-pluralize": "1.0.2",
"mpath": "0.8.3", "mpath": "0.8.3",
"mquery": "3.2.5", "mquery": "3.2.5",
@@ -9516,19 +9584,19 @@
"integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==" "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw=="
}, },
"@babel/core": { "@babel/core": {
"version": "7.14.6", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz",
"integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==",
"requires": { "requires": {
"@babel/code-frame": "^7.14.5", "@babel/code-frame": "^7.14.5",
"@babel/generator": "^7.14.5", "@babel/generator": "^7.14.8",
"@babel/helper-compilation-targets": "^7.14.5", "@babel/helper-compilation-targets": "^7.14.5",
"@babel/helper-module-transforms": "^7.14.5", "@babel/helper-module-transforms": "^7.14.8",
"@babel/helpers": "^7.14.6", "@babel/helpers": "^7.14.8",
"@babel/parser": "^7.14.6", "@babel/parser": "^7.14.8",
"@babel/template": "^7.14.5", "@babel/template": "^7.14.5",
"@babel/traverse": "^7.14.5", "@babel/traverse": "^7.14.8",
"@babel/types": "^7.14.5", "@babel/types": "^7.14.8",
"convert-source-map": "^1.7.0", "convert-source-map": "^1.7.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"gensync": "^1.0.0-beta.2", "gensync": "^1.0.0-beta.2",
@@ -9571,11 +9639,11 @@
} }
}, },
"@babel/generator": { "@babel/generator": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz",
"integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==",
"requires": { "requires": {
"@babel/types": "^7.14.5", "@babel/types": "^7.14.8",
"jsesc": "^2.5.1", "jsesc": "^2.5.1",
"source-map": "^0.5.0" "source-map": "^0.5.0"
}, },
@@ -9730,18 +9798,18 @@
} }
}, },
"@babel/helper-module-transforms": { "@babel/helper-module-transforms": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz",
"integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", "integrity": "sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==",
"requires": { "requires": {
"@babel/helper-module-imports": "^7.14.5", "@babel/helper-module-imports": "^7.14.5",
"@babel/helper-replace-supers": "^7.14.5", "@babel/helper-replace-supers": "^7.14.5",
"@babel/helper-simple-access": "^7.14.5", "@babel/helper-simple-access": "^7.14.8",
"@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-split-export-declaration": "^7.14.5",
"@babel/helper-validator-identifier": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.8",
"@babel/template": "^7.14.5", "@babel/template": "^7.14.5",
"@babel/traverse": "^7.14.5", "@babel/traverse": "^7.14.8",
"@babel/types": "^7.14.5" "@babel/types": "^7.14.8"
} }
}, },
"@babel/helper-optimise-call-expression": { "@babel/helper-optimise-call-expression": {
@@ -9779,11 +9847,11 @@
} }
}, },
"@babel/helper-simple-access": { "@babel/helper-simple-access": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz",
"integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==",
"requires": { "requires": {
"@babel/types": "^7.14.5" "@babel/types": "^7.14.8"
} }
}, },
"@babel/helper-skip-transparent-expression-wrappers": { "@babel/helper-skip-transparent-expression-wrappers": {
@@ -9803,9 +9871,9 @@
} }
}, },
"@babel/helper-validator-identifier": { "@babel/helper-validator-identifier": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz",
"integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==" "integrity": "sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow=="
}, },
"@babel/helper-validator-option": { "@babel/helper-validator-option": {
"version": "7.14.5", "version": "7.14.5",
@@ -9824,13 +9892,13 @@
} }
}, },
"@babel/helpers": { "@babel/helpers": {
"version": "7.14.6", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz",
"integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", "integrity": "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==",
"requires": { "requires": {
"@babel/template": "^7.14.5", "@babel/template": "^7.14.5",
"@babel/traverse": "^7.14.5", "@babel/traverse": "^7.14.8",
"@babel/types": "^7.14.5" "@babel/types": "^7.14.8"
} }
}, },
"@babel/highlight": { "@babel/highlight": {
@@ -9869,9 +9937,9 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.14.7", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz",
"integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==" "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA=="
}, },
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
"version": "7.14.5", "version": "7.14.5",
@@ -10546,9 +10614,9 @@
} }
}, },
"@babel/preset-env": { "@babel/preset-env": {
"version": "7.14.7", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz",
"integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", "integrity": "sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg==",
"requires": { "requires": {
"@babel/compat-data": "^7.14.7", "@babel/compat-data": "^7.14.7",
"@babel/helper-compilation-targets": "^7.14.5", "@babel/helper-compilation-targets": "^7.14.5",
@@ -10617,7 +10685,7 @@
"@babel/plugin-transform-unicode-escapes": "^7.14.5", "@babel/plugin-transform-unicode-escapes": "^7.14.5",
"@babel/plugin-transform-unicode-regex": "^7.14.5", "@babel/plugin-transform-unicode-regex": "^7.14.5",
"@babel/preset-modules": "^0.1.4", "@babel/preset-modules": "^0.1.4",
"@babel/types": "^7.14.5", "@babel/types": "^7.14.8",
"babel-plugin-polyfill-corejs2": "^0.2.2", "babel-plugin-polyfill-corejs2": "^0.2.2",
"babel-plugin-polyfill-corejs3": "^0.2.2", "babel-plugin-polyfill-corejs3": "^0.2.2",
"babel-plugin-polyfill-regenerator": "^0.2.2", "babel-plugin-polyfill-regenerator": "^0.2.2",
@@ -10683,17 +10751,17 @@
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.14.7", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz",
"integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==",
"requires": { "requires": {
"@babel/code-frame": "^7.14.5", "@babel/code-frame": "^7.14.5",
"@babel/generator": "^7.14.5", "@babel/generator": "^7.14.8",
"@babel/helper-function-name": "^7.14.5", "@babel/helper-function-name": "^7.14.5",
"@babel/helper-hoist-variables": "^7.14.5", "@babel/helper-hoist-variables": "^7.14.5",
"@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-split-export-declaration": "^7.14.5",
"@babel/parser": "^7.14.7", "@babel/parser": "^7.14.8",
"@babel/types": "^7.14.5", "@babel/types": "^7.14.8",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0" "globals": "^11.1.0"
}, },
@@ -10719,18 +10787,18 @@
} }
}, },
"@babel/types": { "@babel/types": {
"version": "7.14.5", "version": "7.14.8",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz",
"integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==",
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.8",
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
}, },
"@eslint/eslintrc": { "@eslint/eslintrc": {
"version": "0.4.2", "version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
"integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
"dev": true, "dev": true,
"requires": { "requires": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
@@ -10745,9 +10813,9 @@
}, },
"dependencies": { "dependencies": {
"debug": { "debug": {
"version": "4.3.1", "version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true, "dev": true,
"requires": { "requires": {
"ms": "2.1.2" "ms": "2.1.2"
@@ -10767,6 +10835,40 @@
} }
} }
}, },
"@humanwhocodes/config-array": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
"integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
"dev": true,
"requires": {
"@humanwhocodes/object-schema": "^1.2.0",
"debug": "^4.1.1",
"minimatch": "^3.0.4"
},
"dependencies": {
"debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true,
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"@humanwhocodes/object-schema": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
"integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
"dev": true
},
"@sindresorhus/is": { "@sindresorhus/is": {
"version": "0.14.0", "version": "0.14.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
@@ -10850,9 +10952,9 @@
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
}, },
"acorn-jsx": { "acorn-jsx": {
"version": "5.3.1", "version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true, "dev": true,
"requires": {} "requires": {}
}, },
@@ -11836,9 +11938,9 @@
} }
}, },
"codemirror": { "codemirror": {
"version": "5.62.0", "version": "5.62.2",
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.0.tgz", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.2.tgz",
"integrity": "sha512-Xnl3304iCc8nyVZuRkzDVVwc794uc9QNX0UcPGeNic1fbzkSrO4l4GVXho9tRNKBgPYZXgocUqXyfIv3BILhCQ==" "integrity": "sha512-tVFMUa4J3Q8JUd1KL9yQzQB0/BJt7ZYZujZmTPgo/54Lpuq3ez4C8x/ATUY/wv7b7X3AUq8o3Xd+2C5ZrCGWHw=="
}, },
"collection-visit": { "collection-visit": {
"version": "1.0.0", "version": "1.0.0",
@@ -12405,13 +12507,14 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
}, },
"eslint": { "eslint": {
"version": "7.29.0", "version": "7.31.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.31.0.tgz",
"integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", "integrity": "sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "7.12.11", "@babel/code-frame": "7.12.11",
"@eslint/eslintrc": "^0.4.2", "@eslint/eslintrc": "^0.4.3",
"@humanwhocodes/config-array": "^0.5.0",
"ajv": "^6.10.0", "ajv": "^6.10.0",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"cross-spawn": "^7.0.2", "cross-spawn": "^7.0.2",
@@ -13133,9 +13236,9 @@
} }
}, },
"globals": { "globals": {
"version": "13.9.0", "version": "13.10.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz",
"integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==",
"dev": true, "dev": true,
"requires": { "requires": {
"type-fest": "^0.20.2" "type-fest": "^0.20.2"
@@ -13174,9 +13277,9 @@
} }
}, },
"googleapis": { "googleapis": {
"version": "78.0.0", "version": "82.0.0",
"resolved": "https://registry.npmjs.org/googleapis/-/googleapis-78.0.0.tgz", "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-82.0.0.tgz",
"integrity": "sha512-Qx3WyG0kP1EHMc5z5lHDZyNg/u/1T9P0yudfp9y/ZrtQTpCLQM+7hH2Ca/C3Gnnn0qwN8hsn9E5Os03L46fldA==", "integrity": "sha512-TytL2h+Cl82RP8ZZ4hgiqOz/ZKWJ5nqn2ZaQ1bNIsIp6z4xuasXyJsgPaZzHADyRx/zNQfRfJGwzRInYJy7X4A==",
"requires": { "requires": {
"google-auth-library": "^7.0.2", "google-auth-library": "^7.0.2",
"googleapis-common": "^5.0.2" "googleapis-common": "^5.0.2"
@@ -14339,9 +14442,9 @@
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
}, },
"mongodb": { "mongodb": {
"version": "3.6.8", "version": "3.6.10",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.8.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.10.tgz",
"integrity": "sha512-sDjJvI73WjON1vapcbyBD3Ao9/VN3TKYY8/QX9EPbs22KaCSrQ5rXo5ZZd44tWJ3wl3FlnrFZ+KyUtNH6+1ZPQ==", "integrity": "sha512-fvIBQBF7KwCJnDZUnFFy4WqEFP8ibdXeFANnylW19+vOwdjOAvqIzPdsNCEMT6VKTHnYu4K64AWRih0mkFms6Q==",
"requires": { "requires": {
"bl": "^2.2.1", "bl": "^2.2.1",
"bson": "^1.1.4", "bson": "^1.1.4",
@@ -14352,14 +14455,15 @@
} }
}, },
"mongoose": { "mongoose": {
"version": "5.12.15", "version": "5.13.3",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.12.15.tgz", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.3.tgz",
"integrity": "sha512-GVvxE2/mbUsxAbTtleFlehCNMFlzcgKue/olukIpoN6iw1MYXKodf+ZIRndO+2jzlgbZgiHkAZZJbcFNt1DgHA==", "integrity": "sha512-q+zX6kqHAvwxf5speMWhq6qF4vdj+x6/kfD5RSKdZKNm52yGmaUygN+zgrtQjBZPFEzG0B3vF6GP0PoAGadE+w==",
"requires": { "requires": {
"@types/mongodb": "^3.5.27", "@types/mongodb": "^3.5.27",
"@types/node": "14.x || 15.x",
"bson": "^1.1.4", "bson": "^1.1.4",
"kareem": "2.3.2", "kareem": "2.3.2",
"mongodb": "3.6.8", "mongodb": "3.6.10",
"mongoose-legacy-pluralize": "1.0.2", "mongoose-legacy-pluralize": "1.0.2",
"mpath": "0.8.3", "mpath": "0.8.3",
"mquery": "3.2.5", "mquery": "3.2.5",

View File

@@ -40,13 +40,13 @@
] ]
}, },
"dependencies": { "dependencies": {
"@babel/core": "^7.14.6", "@babel/core": "^7.14.8",
"@babel/plugin-transform-runtime": "^7.14.5", "@babel/plugin-transform-runtime": "^7.14.5",
"@babel/preset-env": "^7.14.7", "@babel/preset-env": "^7.14.8",
"@babel/preset-react": "^7.14.5", "@babel/preset-react": "^7.14.5",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
"classnames": "^2.3.1", "classnames": "^2.3.1",
"codemirror": "^5.62.0", "codemirror": "^5.62.2",
"cookie-parser": "^1.4.5", "cookie-parser": "^1.4.5",
"create-react-class": "^15.7.0", "create-react-class": "^15.7.0",
"dedent-tabs": "^0.9.0", "dedent-tabs": "^0.9.0",
@@ -54,14 +54,14 @@
"express-async-handler": "^1.1.4", "express-async-handler": "^1.1.4",
"express-static-gzip": "2.1.1", "express-static-gzip": "2.1.1",
"fs-extra": "10.0.0", "fs-extra": "10.0.0",
"googleapis": "78.0.0", "googleapis": "82.0.0",
"jwt-simple": "^0.5.6", "jwt-simple": "^0.5.6",
"less": "^3.13.1", "less": "^3.13.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"marked": "2.1.3", "marked": "2.1.3",
"markedLegacy": "npm:marked@^0.3.19", "markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.29.1", "moment": "^2.29.1",
"mongoose": "^5.12.15", "mongoose": "^5.13.3",
"nanoid": "3.1.23", "nanoid": "3.1.23",
"nconf": "^0.11.3", "nconf": "^0.11.3",
"prop-types": "15.7.2", "prop-types": "15.7.2",
@@ -75,7 +75,7 @@
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git" "vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^7.29.0", "eslint": "^7.31.0",
"eslint-plugin-react": "^7.24.0", "eslint-plugin-react": "^7.24.0",
"pico-check": "^2.1.3" "pico-check": "^2.1.3"
} }

View File

@@ -8,6 +8,7 @@ const isDev = !!process.argv.find((arg)=>arg=='--dev');
const lessTransform = require('vitreum/transforms/less.js'); const lessTransform = require('vitreum/transforms/less.js');
const assetTransform = require('vitreum/transforms/asset.js'); const assetTransform = require('vitreum/transforms/asset.js');
const babel = require('@babel/core'); const babel = require('@babel/core');
const less = require('less');
const babelify = async (code)=>(await babel.transformAsync(code, { presets: ['@babel/preset-env', '@babel/preset-react'], plugins: ['@babel/plugin-transform-runtime'] })).code; const babelify = async (code)=>(await babel.transformAsync(code, { presets: ['@babel/preset-env', '@babel/preset-react'], plugins: ['@babel/plugin-transform-runtime'] })).code;
@@ -23,7 +24,27 @@ const build = async ({ bundle, render, ssr })=>{
await fs.outputFile('./build/homebrew/bundle.css', css); await fs.outputFile('./build/homebrew/bundle.css', css);
await fs.outputFile('./build/homebrew/bundle.js', bundle); await fs.outputFile('./build/homebrew/bundle.js', bundle);
await fs.outputFile('./build/homebrew/ssr.js', ssr); await fs.outputFile('./build/homebrew/ssr.js', ssr);
await fs.copy('./client/homebrew/phbStyle/fonts', './build/fonts'); await fs.copy('./themes/fonts', './build/fonts');
let src = './themes/5ePhbLegacy.style.less';
//Parse brew theme files
less.render(fs.readFileSync(src).toString(), {
compress : !isDev
}, function(e, output) {
fs.outputFile('./build/themes/5ePhbLegacy.style.css', output.css);
});
src = './themes/5ePhb.style.less';
less.render(fs.readFileSync(src).toString(), {
compress : !isDev
}, function(e, output) {
fs.outputFile('./build/themes/5ePhb.style.css', output.css);
});
// await less.render(lessCode, {
// compress : !dev,
// sourceMap : (dev ? {
// sourceMapFileInline: true,
// outputSourceFiles: true
// } : false),
// })
//compress files in production //compress files in production
if(!isDev){ if(!isDev){
@@ -37,7 +58,7 @@ const build = async ({ bundle, render, ssr })=>{
} }
}; };
fs.emptyDirSync('./build/homebrew'); fs.emptyDirSync('./build');
pack('./client/homebrew/homebrew.jsx', { pack('./client/homebrew/homebrew.jsx', {
paths : ['./shared'], paths : ['./shared'],
libs : Proj.libs, libs : Proj.libs,

View File

@@ -19,74 +19,141 @@ renderer.paragraph = function(text){
let match; let match;
if(text.startsWith('<div') || text.startsWith('</div')) if(text.startsWith('<div') || text.startsWith('</div'))
return `${text}`; return `${text}`;
else if(match = text.match(/(^|^.*?\n)<span class="inline([^>]*><\/span>)$/)) else if(match = text.match(/(^|^.*?\n)<span class="inline(.*?<\/span>)$/)) {
return `<p>${match[1]}</p><span class="inline-block"${match[2]}`; return `${match[1].trim() ? `<p>${match[1]}</p>` : ''}<span class="inline-block${match[2]}`;
else } else
return `<p>${text}</p>\n`; return `<p>${text}</p>\n`;
}; };
// Mustache-style Divs {{class \n content ... \n}} const mustacheSpans = {
let blockCount = 0; name : 'mustacheSpans',
const blockRegex = /^ *{{(?:="[\w,\-. ]*"|[^"'\s])*$|^ *}}$/gm; level : 'inline', // Is this a block-level or inline-level tokenizer?
const inlineFullRegex = /{{[^\n]*}}/g; start(src) { return src.match(/{{[^{]/)?.index; }, // Hint to Marked.js to stop and check for a match
const inlineRegex = /{{(?:="[\w,\-. ]*"|[^"'{}}\s])*\s*|}}/g; tokenizer(src, tokens) {
const completeSpan = /^{{[^\n]*}}/; // Regex for the complete token
renderer.text = function(text){ const inlineRegex = /{{(?:="[\w,\-. ]*"|[^"'{}\s])*\s*|}}/g;
const newText = text.replaceAll('&quot;', '"'); const match = completeSpan.exec(src);
let matches; if(match) {
//Find closing delimiter
if(matches = newText.match(inlineFullRegex)) { let blockCount = 0;
let tags = '';
//SPAN - INLINE let endIndex = 0;
matches = newText.match(inlineRegex); let delim;
let matchIndex = 0; while (delim = inlineRegex.exec(match[0])) {
const res = _.reduce(newText.split(inlineRegex), (r, splitText)=>{ if(delim[0].startsWith('{{')) {
tags = tags || ` ${processStyleTags(delim[0].substring(2))}`;
if(splitText) r.push(Markdown.parseInline(splitText, { renderer: renderer })); blockCount++;
} else if(delim[0] == '}}' && blockCount !== 0) {
const block = matches[matchIndex] ? matches[matchIndex].trimLeft() : ''; blockCount--;
if(block && block.startsWith('{{')) { if(blockCount == 0) {
const values = processStyleTags(block.substring(2)); endIndex = inlineRegex.lastIndex;
r.push(`<span class="inline ${values}>`); break;
blockCount++; }
} else if(block == '}}' && blockCount !== 0){ }
r.push('</span>');
blockCount--;
} }
matchIndex++; if(endIndex) {
const raw = src.slice(0, endIndex);
const text = raw.slice((raw.indexOf(' ')+1) || -2, -2);
return r; return { // Token to generate
}, []).join(''); type : 'mustacheSpans', // Should match "name" above
return `${res}`; raw : raw, // Text to consume from the source
} else if(matches = newText.match(blockRegex)) { text : text, // Additional custom properties
//DIV - BLOCK-LEVEL tags : tags,
let matchIndex = 0; tokens : this.inlineTokens(text) // inlineTokens to process **bold**, *italics*, etc.
const res = _.reduce(newText.split(blockRegex), (r, splitText)=>{ };
if(splitText) r.push(Markdown.parseInline(splitText, { renderer: renderer })); }
const block = matches[matchIndex] ? matches[matchIndex].trimLeft() : '';
if(block && block.startsWith('{')) {
const values = processStyleTags(block.substring(2));
r.push(`<div class="block ${values}">`);
blockCount++;
} else if(block == '}}' && blockCount !== 0){
r.push('</div>');
blockCount--;
}
matchIndex++;
return r;
}, []).join('');
return res;
} else {
if(!matches) {
return `${text}`;
} }
},
renderer(token) {
return `<span class="inline${token.tags}>${this.parseInline(token.tokens)}</span>`; // parseInline to turn child tokens into HTML
} }
}; };
const mustacheDivs = {
name : 'mustacheDivs',
level : 'block',
start(src) { return src.match(/^ *{{[^{]/m)?.index; }, // Hint to Marked.js to stop and check for a match
tokenizer(src, tokens) {
const completeBlock = /^ *{{.*\n *}}/s; // Regex for the complete token
const blockRegex = /^ *{{(?:="[\w,\-. ]*"|[^"'{}\s])*$|^ *}}$/gm;
const match = completeBlock.exec(src);
if(match) {
//Find closing delimiter
let blockCount = 0;
let tags = '';
let endIndex = 0;
let delim;
while (delim = blockRegex.exec(match[0])?.[0].trim()) {
if(delim.startsWith('{{')) {
tags = tags || ` ${processStyleTags(delim.substring(2))}`;
blockCount++;
} else if(delim == '}}' && blockCount !== 0) {
blockCount--;
if(blockCount == 0) {
endIndex = blockRegex.lastIndex;
break;
}
}
}
if(endIndex) {
const raw = src.slice(0, endIndex);
const text = raw.slice((raw.indexOf('\n')+1) || -2, -2);
return { // Token to generate
type : 'mustacheDivs', // Should match "name" above
raw : raw, // Text to consume from the source
text : text, // Additional custom properties
tags : tags,
tokens : this.inline(this.blockTokens(text))
};
}
}
},
renderer(token) {
return `<div class="block${token.tags}>${this.parse(token.tokens)}</div>`; // parseInline to turn child tokens into HTML
}
};
const definitionLists = {
name : 'definitionLists',
level : 'block',
start(src) { return src.match(/^.*?::.*/m)?.index; }, // Hint to Marked.js to stop and check for a match
tokenizer(src, tokens) {
const regex = /^([^\n]*?)::([^\n]*)/ym;
let match;
let endIndex = 0;
const definitions = [];
//if(!src.match(/^[^\n]*?::/)) {console.log('return'); return;}
while (match = regex.exec(src)) {
definitions.push({
dt : this.inlineTokens(match[1].trim()),
dd : this.inlineTokens(match[2].trim())
});
//console.log(regexl)
endIndex = regex.lastIndex;
}
if(definitions.length) {
return {
type : 'definitionLists',
raw : src.slice(0, endIndex),
definitions
};
}
},
renderer(token) {
return `<dl>
${token.definitions.reduce((html, def)=>{
return `${html}<dt>${this.parseInline(def.dt)}</dt>`
+ `<dd>${this.parseInline(def.dd)}</dd>\n`;
}, '')}
</dl>`;
}
};
Markdown.use({ extensions: [mustacheSpans, mustacheDivs, definitionLists] });
//Fix local links in the Preview iFrame to link inside the frame //Fix local links in the Preview iFrame to link inside the frame
renderer.link = function (href, title, text) { renderer.link = function (href, title, text) {
let self = false; let self = false;
@@ -177,17 +244,14 @@ const processStyleTags = (string)=>{
const id = _.remove(tags, (tag)=>tag.startsWith('#')).map((tag)=>tag.slice(1))[0]; const id = _.remove(tags, (tag)=>tag.startsWith('#')).map((tag)=>tag.slice(1))[0];
const classes = _.remove(tags, (tag)=>!tag.includes('"')); const classes = _.remove(tags, (tag)=>!tag.includes('"'));
const styles = tags.map((tag)=>tag.replace(/="(.*)"/g, ':$1;')); const styles = tags.map((tag)=>tag.replace(/="(.*)"/g, ':$1;'));
return `${classes.join(' ')}" ${id ? `id="${id}"` : ''} ${styles ? `style="${styles.join(' ')}"` : ''}`; return `${classes.join(' ')}" ${id ? `id="${id}"` : ''} ${styles.length ? `style="${styles.join(' ')}"` : ''}`;
}; };
module.exports = { module.exports = {
marked : Markdown, marked : Markdown,
render : (rawBrewText)=>{ render : (rawBrewText)=>{
blockCount = 0;
rawBrewText = rawBrewText.replace(/^\\column$/gm, `<div class='columnSplit'></div>`) rawBrewText = rawBrewText.replace(/^\\column$/gm, `<div class='columnSplit'></div>`)
.replace(/^(:+)$/gm, (match)=>`${`<div class='blank'></div>`.repeat(match.length)}\n`) .replace(/^(:+)$/gm, (match)=>`${`<div class='blank'></div>`.repeat(match.length)}\n`)
.replace(/(?:^|>) *:([^:\n]*):([^\n]*)\n/gm, (match, term, def)=>`<dt>${Markdown.parseInline(term)}</dt><dd>${def}</dd>`)
.replace(/(<dt>.*<\/dt><dd>.*<\/dd>\n?)+/gm, `<dl>$1</dl>\n\n`)
.replace(/^}}/gm, '\n}}') .replace(/^}}/gm, '\n}}')
.replace(/^({{[^\n]*)$/gm, '$1\n'); .replace(/^({{[^\n]*)$/gm, '$1\n');
return Markdown( return Markdown(

View File

@@ -1,5 +1,5 @@
@import (less) './client/homebrew/phbStyle/phb.fonts.less'; @import (less) './themes/fonts/5e/fonts.less';
@import (less) './client/homebrew/phbStyle/phb.assets.less'; @import (less) './themes/assets/assets.less';
//Colors //Colors
@background : #EEE5CE; @background : #EEE5CE;
@@ -19,9 +19,12 @@ body {
font-family : ScalySansRemake; font-family : ScalySansRemake;
font-size : 0.325cm; font-size : 0.325cm;
line-height : 1.2em; line-height : 1.2em;
p,dl,ul { p,dl,ul,ol {
line-height : 1.2em; line-height : 1.2em;
} }
ul, ol {
padding-left : 1em;
}
em{ em{
font-style : italic; font-style : italic;
} }
@@ -42,7 +45,7 @@ body {
-webkit-column-gap : 0.9cm; -webkit-column-gap : 0.9cm;
-moz-column-gap : 0.9cm; -moz-column-gap : 0.9cm;
} }
.phb3{ .page{
.useColumns(); .useColumns();
counter-increment : phb-page-numbers; counter-increment : phb-page-numbers;
position : relative; position : relative;
@@ -64,10 +67,10 @@ body {
// *****************************/ // *****************************/
p{ p{
overflow-wrap : break-word; //TODO: MAKE ALL MARGINS TOP-ONLY. USE * + * STYLE SELECTORS overflow-wrap : break-word; //TODO: MAKE ALL MARGINS TOP-ONLY. USE * + * STYLE SELECTORS
margin-bottom : 1em; margin-bottom : 0.8em;
line-height : 1.3em; line-height : 1.3em;
&+p{ &+p{
margin-top : -1em; margin-top : -0.8em;
} }
} }
ul{ ul{
@@ -194,31 +197,75 @@ body {
//***************************** //*****************************
// * NOTE // * NOTE
// *****************************/ // *****************************/
blockquote{ .note{
&::before{
content : "";
box-sizing : border-box;
border-style : solid;
border-width : 11px;
border-image : @noteBorderImage 12;
border-image-outset : 9px 0px;
box-shadow : 1px 4px 14px #888;
position : absolute;
width : 100%;
height : 100%;
top : 0;
left : 0;
}
.useSansSerif(); .useSansSerif();
box-sizing : border-box; position : relative;
margin-bottom : 1em; margin-top : 1.3em;
padding : 5px 10px; margin-left : -0.1em;
margin-right : -0.1em;
background-color : @noteGreen; background-color : @noteGreen;
border-style : solid; padding : 0.5em 0.6em;
border-width : 11px; & + * {
border-image : @noteBorderImage 11; margin-top : 1.3em;
border-image-outset : 9px 0px; }
box-shadow : 1px 4px 14px #888; p{
-webkit-transform : translateZ(0); //Prevents shadows from breaking across columns display : block;
p, ul{ padding-bottom : 0px;
font-size : 0.352cm; }
line-height : 1.1em; p + p {
padding-top : .8em;
}
:last-child {
margin-bottom : 0em;
} }
} }
//If a note starts a column, give it space at the top to render border //************************************
pre+blockquote, h2+blockquote, h3+blockquote, h4+blockquote, h5+blockquote { // * DESCRIPTIVE TEXT BOX
margin-top : 13px; // ************************************/
.descriptive{
.useSansSerif();
display : block-inline;
margin-top : 1.4em;
background-color : #faf7ea;
font-family : ScalySansRemake;
border-style : solid;
border-width : 7px;
border-image : @descriptiveBoxImage 12 stretch;
border-image-outset : 4px;
box-shadow : 0px 0px 6px #faf7ea;
padding : 0.1em;
& + * {
margin-top : 1.4em;
}
p{
display : block;
padding-bottom : 0px;
line-height : 1.5em;
}
p + p {
padding-top : .8em;
}
:last-child {
margin-bottom : 0em;
}
} }
//***************************** //*****************************
// * MONSTER STAT BLOCK // * MONSTER STAT BLOCK
// *****************************/ // *****************************/
.monster { .monster {
&.frame { &.frame {
border-style : solid; border-style : solid;
@@ -283,11 +330,6 @@ body {
dl { dl {
.useSansSerif(); .useSansSerif();
color : @headerText; color : @headerText;
padding-left :1.3em;
text-indent :-1.3em;
}
dd {
text-indent : 0px;
} }
// Monster Ability table // Monster Ability table
@@ -414,7 +456,7 @@ body {
//***************************** //*****************************
// * SPELL LIST // * SPELL LIST
// *****************************/ // *****************************/
.phb3 .spellList{ .page .spellList{
.useSansSerif(); .useSansSerif();
column-count : 4; column-count : 4;
column-span : all; column-span : all;
@@ -440,7 +482,7 @@ body {
//***************************** //*****************************
// * WIDE // * WIDE
// *****************************/ // *****************************/
.phb3 .wide{ .page .wide{
column-span : all; column-span : all;
-webkit-column-span : all; -webkit-column-span : all;
-moz-column-span : all; -moz-column-span : all;
@@ -448,7 +490,7 @@ body {
//***************************** //*****************************
// * CLASS TABLE // * CLASS TABLE
// *****************************/ // *****************************/
.phb3 .classTable{ .page .classTable{
margin-top : 25px; margin-top : 25px;
margin-bottom : 40px; margin-bottom : 40px;
border-collapse : separate; border-collapse : separate;
@@ -464,72 +506,83 @@ body {
margin-bottom : 10px; margin-bottom : 10px;
} }
} }
//************************************
// * DESCRIPTIVE TEXT BOX
// ************************************/
.phb3 .descriptive{
display : block-inline;
margin-bottom : 1em;
background-color : #faf7ea;
font-family : ScalySansRemake;
border-style : solid;
border-width : 7px;
border-image : @descriptiveBoxImage 12 stretch;
border-image-outset : 4px;
box-shadow : 0px 0px 6px #faf7ea;
p{
display : block;
padding-bottom : 0px;
line-height : 1.5em;
}
p + p {
padding-top : .8em;
}
em {
font-family : ScalySansRemake;
font-style : italic;
}
strong {
font-family : ScalySansRemake;
font-weight : 800;
letter-spacing : -0.02em;
}
}
.phb3 pre+.descriptive{
margin-top : 8px;
}
//***************************** //*****************************
// * TABLE OF CONTENTS // * TABLE OF CONTENTS
// *****************************/ // *****************************/
.phb3 .toc{ .page .toc{
-webkit-column-break-inside : avoid; -webkit-column-break-inside : avoid;
page-break-inside : avoid; page-break-inside : avoid;
break-inside : avoid; break-inside : avoid;
h1 {
text-align : center;
margin-bottom : 0.1cm;
}
a{ a{
color : black; display : table;
color : inherit;
text-decoration : none; text-decoration : none;
&:hover{ &:hover{
text-decoration : underline; text-decoration : underline;
} }
} }
h4 {
margin-top : 0.1cm;
}
ul{ ul{
padding-left : 0; padding-left : 0;
list-style-type : none; list-style-type : none;
li + li h3 {
margin-top : 0.26cm;
line-height : 1em
}
h3 span:first-child::after {
border : none;
}
span {
display : table-cell;
&:first-child {
position : relative;
overflow : hidden;
&::after {
content : "";
position : absolute;
bottom : 0.08cm; /* Set as you want */
margin-left : 0.06cm; /* Spacing before dot leaders */
width : 100%;
border-bottom : 0.05cm dotted #000;
}
}
&:last-child {
font-family : BookInsanityRemake;
font-size : 0.34cm;
font-weight : normal;
color : black;
text-align : right;
vertical-align : bottom; /* Keep Price text bottom-aligned */
width : 1%;
padding-left : 0.06cm; /* Spacing after dot leaders */
/*white-space: nowrap; /* Uncomment if needed */
}
}
ul { /*List indent*/
margin-left : 1em;
}
} }
&>ul>li{ &.wide{
margin-bottom : 10px; .useColumns(0.96);
} }
} }
//***************************** //*****************************
// * MUSTACHE DIVS/SPANS // * MUSTACHE DIVS/SPANS
// *****************************/ // *****************************/
.phb3 { .page {
.block { .block {
break-inside : avoid; break-inside : avoid;
-webkit-transform : translateZ(0); //Prevents shadows from breaking across columns
} }
.inline-block { .inline {
display : block; display : inline-block;
} }
div { div {
column-gap : 0.5cm; //Default spacing if a div uses multicolumns column-gap : 0.5cm; //Default spacing if a div uses multicolumns
@@ -539,24 +592,33 @@ body {
//***************************** //*****************************
// * DEFINITION LISTS // * DEFINITION LISTS
// *****************************/ // *****************************/
.phb3 { .page {
// dl { dl {
// margin-top: 10px; line-height : 1.3em;
// } padding-left : 1em;
text-indent : -1em;
}
dl + p {
margin-top: 0.5em;
}
p + dl {
margin-top: -0.5em;
}
dt { dt {
float: left; float: left;
//clear: left; //Doesn't seem necessary //clear: left; //Doesn't seem necessary
margin-right: 5px; margin-right: 5px;
} }
// dd { dd {
// margin-left: 0px; margin-left : 0px;
// } text-indent : 0px;
}
} }
//***************************** //*****************************
// * BLANK LINE // * BLANK LINE
// *****************************/ // *****************************/
.phb3 { .page {
.blank { .blank {
height: 0.75em; height: 0.75em;
} }

View File

@@ -1,6 +1,6 @@
@import (less) './client/homebrew/phbStyle/phb.fontsLegacy.less'; @import (less) './themes/fonts/5e legacy/fonts.less';
@import (less) './client/homebrew/phbStyle/phb.assets.less'; @import (less) './themes/assets/assets.less';
@import (less) './client/homebrew/phbStyle/phb.depricated.less'; @import (less) './themes/phb.depricated.less';
//Colors //Colors
@background : #EEE5CE; @background : #EEE5CE;
@noteGreen : #e0e5c1; @noteGreen : #e0e5c1;

View File

@@ -0,0 +1,9 @@
@footerAccentImage : data-uri('./themes/assets/footerAccent.png');
@frameBorderImage : data-uri('./themes/assets/frameBorder.png');
@backgroundImage : data-uri('./themes/assets/parchmentBackground.jpg');
@redTriangleImage : data-uri('./themes/assets/redTriangle.png');
@monsterBorderImageLegacy : data-uri('./themes/assets/monsterBorderLegacy.png');
@noteBorderImage : data-uri('./themes/assets/noteBorder.png');
@descriptiveBoxImage : data-uri('./themes/assets/descriptiveBorder.png');
@monsterBlockBackground : data-uri('./themes/assets/parchmentBackgroundGrayscale.jpg');
@monsterBorderImage : data-uri('./themes/assets/monsterBorderFancy.png');

View File

Before

Width:  |  Height:  |  Size: 311 B

After

Width:  |  Height:  |  Size: 311 B

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 135 B

After

Width:  |  Height:  |  Size: 135 B

View File

Before

Width:  |  Height:  |  Size: 274 B

After

Width:  |  Height:  |  Size: 274 B

View File

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

View File

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View File

Before

Width:  |  Height:  |  Size: 864 B

After

Width:  |  Height:  |  Size: 864 B

View File

@@ -1,25 +1,25 @@
/* Main Font, serif */ /* Main Font, serif */
@font-face { @font-face {
font-family: BookSanity; font-family: BookSanity;
src: url('../fonts/legacy/Bookinsanity.woff2'); src: url('../fonts/5e legacy/Bookinsanity.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: BookSanity; font-family: BookSanity;
src: url('../fonts/legacy/Bookinsanity Bold.woff2'); src: url('../fonts/5e legacy/Bookinsanity Bold.woff2');
font-weight: bold; font-weight: bold;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: BookSanity; font-family: BookSanity;
src: url('../fonts/legacy/Bookinsanity Italic.woff2'); src: url('../fonts/5e legacy/Bookinsanity Italic.woff2');
font-weight: normal; font-weight: normal;
font-style: italic; font-style: italic;
} }
@font-face { @font-face {
font-family: BookSanity; font-family: BookSanity;
src: url('../fonts/legacy/Bookinsanity Bold Italic.woff2'); src: url('../fonts/5e legacy/Bookinsanity Bold Italic.woff2');
font-weight: bold; font-weight: bold;
font-style: italic; font-style: italic;
} }
@@ -27,13 +27,13 @@
/* Notes and Tables, sans-serif */ /* Notes and Tables, sans-serif */
@font-face { @font-face {
font-family: ScalySans; font-family: ScalySans;
src: url('../fonts/legacy/Scaly Sans.woff2'); src: url('../fonts/5e legacy/Scaly Sans.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: ScalySansSmallCaps; font-family: ScalySansSmallCaps;
src: url('../fonts/legacy/Scaly Sans Caps.woff2'); src: url('../fonts/5e legacy/Scaly Sans Caps.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
@@ -41,7 +41,7 @@
/* Headers */ /* Headers */
@font-face { @font-face {
font-family: MrJeeves; font-family: MrJeeves;
src: url('../fonts/legacy/Mr Eaves Small Caps.woff2'); src: url('../fonts/5e legacy/Mr Eaves Small Caps.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
@@ -49,7 +49,7 @@
/* Fancy Drop Cap */ /* Fancy Drop Cap */
@font-face { @font-face {
font-family: Solberry; font-family: Solberry;
src: url('../fonts/legacy/Solbera Imitation.woff2'); src: url('../fonts/5e legacy/Solbera Imitation.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }

View File

@@ -1,25 +1,25 @@
/* Main Font, serif */ /* Main Font, serif */
@font-face { @font-face {
font-family: BookInsanityRemake; font-family: BookInsanityRemake;
src: url('../fonts/v3/Bookinsanity.woff2'); src: url('../fonts/5e/Bookinsanity.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: BookInsanityRemake; font-family: BookInsanityRemake;
src: url('../fonts/v3/Bookinsanity Bold.woff2'); src: url('../fonts/5e/Bookinsanity Bold.woff2');
font-weight: bold; font-weight: bold;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: BookInsanityRemake; font-family: BookInsanityRemake;
src: url('../fonts/v3/Bookinsanity Italic.woff2'); src: url('../fonts/5e/Bookinsanity Italic.woff2');
font-weight: normal; font-weight: normal;
font-style: italic; font-style: italic;
} }
@font-face { @font-face {
font-family: BookInsanityRemake; font-family: BookInsanityRemake;
src: url('../fonts/v3/Bookinsanity Bold Italic.woff2'); src: url('../fonts/5e/Bookinsanity Bold Italic.woff2');
font-weight: bold; font-weight: bold;
font-style: italic; font-style: italic;
} }
@@ -27,31 +27,31 @@
/* Notes and Tables, sans-serif */ /* Notes and Tables, sans-serif */
@font-face { @font-face {
font-family: ScalySansRemake; font-family: ScalySansRemake;
src: url('../fonts/v3/Scaly Sans.woff2'); src: url('../fonts/5e/Scaly Sans.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: ScalySansRemake; font-family: ScalySansRemake;
src: url('../fonts/v3/Scaly Sans Bold.woff2'); src: url('../fonts/5e/Scaly Sans Bold.woff2');
font-weight: bold; font-weight: bold;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: ScalySansRemake; font-family: ScalySansRemake;
src: url('../fonts/v3/Scaly Sans Italic.woff2'); src: url('../fonts/5e/Scaly Sans Italic.woff2');
font-weight: normal; font-weight: normal;
font-style: italic; font-style: italic;
} }
@font-face { @font-face {
font-family: ScalySansRemake; font-family: ScalySansRemake;
src: url('../fonts/v3/Scaly Sans Bold Italic.woff2'); src: url('../fonts/5e/Scaly Sans Bold Italic.woff2');
font-weight: bold; font-weight: bold;
font-style: italic; font-style: italic;
} }
@font-face { @font-face {
font-family: ScalySansSmallCapsRemake; font-family: ScalySansSmallCapsRemake;
src: url('../fonts/v3/Scaly Sans Caps.woff2'); src: url('../fonts/5e/Scaly Sans Caps.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
@@ -59,15 +59,15 @@
/* Headers */ /* Headers */
@font-face { @font-face {
font-family: MrEavesRemake; font-family: MrEavesRemake;
src: url('../fonts/v3/Mr Eaves Small Caps.woff2'); src: url('../fonts/5e/Mr Eaves Small Caps.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
/* Fancy Drop Cap */ /* Fancy Drop Cap */
@font-face { @font-face {
font-family: SolberaImitationRemake; //Tweaked v3 version font-family: SolberaImitationRemake; //Tweaked 5e version
src: url('../fonts/v3/Solbera Imitation Tweak.woff2'); src: url('../fonts/5e/Solbera Imitation Tweak.woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }