0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-24 01:13:15 +00:00

Compare commits

..

140 Commits

Author SHA1 Message Date
Trevor Buckner
f23959bb05 Update pr-check.yml 2024-04-19 11:24:18 -04:00
Trevor Buckner
228041913e Create limit-pull-requests.yml 2024-04-19 11:15:27 -04:00
Trevor Buckner
fc53989946 Create pr-check.yml
For users with many open PRs, creates a warning message in the PR description when opening a new PR, encouraging users to complete existing PRs before opening new ones.
2024-04-19 10:47:00 -04:00
Trevor Buckner
9f72dc08c6 Merge pull request #3411 from naturalcrit/make-diceFont-capitalization-consistent
Change dicefont names to consistent camelCase
2024-04-18 16:52:15 -04:00
Trevor Buckner
1018ba554f rename files to camelCase 2024-04-18 16:42:06 -04:00
Trevor Buckner
709c9ece74 Change to camelCase 2024-04-18 16:20:09 -04:00
Trevor Buckner
19e51102d2 Merge pull request #3410 from naturalcrit/Only-check-DefinitionLists-at-start-of-line
Only check definition lists at start of line
2024-04-17 01:08:03 -04:00
Trevor Buckner
68a68bde82 Only check for DLs at start of line
Previous "start" regex used `^` instead of `\n`, which meant if the first character in a line failed to start a match, it would check for the start of a DL in *every* character in the line, which slows things down a lot.
2024-04-17 01:03:25 -04:00
Trevor Buckner
e1186b4a1e Rename Inline to SingleLine 2024-04-17 01:01:58 -04:00
Trevor Buckner
9e71945a76 Merge pull request #3388 from 5e-Cleric/scrollbar-new-fix
Custom scrollbar fixes
2024-04-09 18:39:20 -04:00
Trevor Buckner
9f6fc3d1ac Merge branch 'master' into scrollbar-new-fix 2024-04-09 18:38:07 -04:00
Trevor Buckner
e22830eb4a Merge pull request #3399 from 5e-Cleric/add-share-link-to-error-pages
Add share link to error pages ONLY IF PUBLISHED
2024-04-09 15:31:53 -04:00
Trevor Buckner
f02a3d815a Merge branch 'master' into add-share-link-to-error-pages 2024-04-09 15:24:23 -04:00
Trevor Buckner
7097897df8 Remove "stub.published" from thrown error, since no longer used 2024-04-09 15:24:04 -04:00
Víctor Losada Hernández
9247967f93 fixed published request 2024-04-09 20:12:40 +02:00
Trevor Buckner
1b3d82fc04 Merge pull request #3400 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-jest-28.2.0
Bump eslint-plugin-jest from 27.9.0 to 28.2.0
2024-04-09 13:15:56 -04:00
dependabot[bot]
810934f2c1 Bump eslint-plugin-jest from 27.9.0 to 28.2.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.9.0 to 28.2.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.9.0...v28.2.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-09 15:42:16 +00:00
Trevor Buckner
3b507a1fb9 Merge pull request #3403 from naturalcrit/dependabot/npm_and_yarn/mongoose-8.3.1
Bump mongoose from 8.3.0 to 8.3.1
2024-04-09 11:41:27 -04:00
Trevor Buckner
4f1056a320 Merge branch 'master' into dependabot/npm_and_yarn/mongoose-8.3.1 2024-04-09 11:39:03 -04:00
Trevor Buckner
963aa8f003 Merge pull request #3398 from Gazook89/Clean-Up-accountPage.jsx
Refactor accountPage.jsx to functional component
2024-04-09 11:37:34 -04:00
Trevor Buckner
431dfd7780 tweak comments 2024-04-09 11:36:13 -04:00
Trevor Buckner
4f0cbd82d4 Linting, small cleanup, and renaming some functions
Renamed "makeActive" and "renderButton" to make more clear without needing comments.
2024-04-09 11:35:30 -04:00
dependabot[bot]
53e437c6bc Bump mongoose from 8.3.0 to 8.3.1
Bumps [mongoose](https://github.com/Automattic/mongoose) from 8.3.0 to 8.3.1.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/8.3.0...8.3.1)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-09 03:02:17 +00:00
Víctor Losada Hernández
0e5c91733d Revert "rename icons less"
This reverts commit 7cc83eaf95.
2024-04-08 02:29:43 +02:00
Víctor Losada Hernández
f5c729c328 Revert "rename icons"
This reverts commit 22b01b131f.
2024-04-08 02:29:40 +02:00
Víctor Losada Hernández
4f9e93fac7 Revert "renaming snippetBar"
This reverts commit 2045bf8060.
2024-04-08 02:29:38 +02:00
Víctor Losada Hernández
7cc83eaf95 rename icons less 2024-04-08 02:19:43 +02:00
Víctor Losada Hernández
22b01b131f rename icons 2024-04-08 02:19:32 +02:00
Víctor Losada Hernández
2045bf8060 renaming snippetBar 2024-04-08 02:17:10 +02:00
Víctor Losada Hernández
df73b37180 Merge branch 'master' of https://github.com/naturalcrit/homebrewery into add-share-link-to-error-pages 2024-04-07 16:17:51 +02:00
Víctor Losada Hernández
99f9b10348 initial commit 2024-04-07 16:16:21 +02:00
Gazook89
ed85f77c48 ESLint linting (one small whitespace change). 2024-04-06 21:34:04 -05:00
Gazook89
777438fd94 rename props.brew.uiItems to ...accountDetails
and destructure props at start of account page component.

`accountDetails` is more descriptive of what set of info is being passed through props to the account page, info which is only *then* displayed as UI items.
2024-04-06 21:23:26 -05:00
Gazook89
08406de5cc add code comments for each step. 2024-04-06 15:44:19 -05:00
Gazook89
e1599909bc change name of render method to be more discriptive
"UiItems" is not descriptive enough for a render method because most anything that is rendered is part of the UI.  This could be left as just `render()`, but `renderAccountPage()` provides best context of what is happening.
2024-04-06 15:30:18 -05:00
Gazook89
e7eda1f5ec Convert class component to functional component
Used OpenAI ChatGPT to do the bulk of this, and then fixed some formatting and looked for obvious mistakes.
2024-04-06 15:26:40 -05:00
Gazook89
9f2aaf01c7 Remove unnecessary Nav components and methods. 2024-04-06 14:50:20 -05:00
Trevor Buckner
882c78fbb5 Merge pull request #2981 from 5e-Cleric/small-fixes,-snippet-uniformity
Cleaning CSS for uniformity
2024-04-04 17:44:34 -04:00
Trevor Buckner
a79b2fb755 Merge branch 'master' into small-fixes,-snippet-uniformity 2024-04-04 17:38:42 -04:00
Trevor Buckner
97fba241a1 Undo linting on unrelated pages 2024-04-04 17:37:52 -04:00
Trevor Buckner
d0fbca7af5 Undo linting on unrelated files. 2024-04-04 17:36:06 -04:00
Trevor Buckner
36726c747c Merge pull request #3393 from naturalcrit/dependabot/npm_and_yarn/mongoose-8.3.0
Bump mongoose from 8.2.3 to 8.3.0
2024-04-04 14:28:16 -04:00
Trevor Buckner
74580e63d6 Merge branch 'master' into dependabot/npm_and_yarn/mongoose-8.3.0 2024-04-04 14:22:13 -04:00
Trevor Buckner
1d8eb35c64 Merge pull request #3368 from 5e-Cleric/authors-as-links-to-userpage-in-error-pages
Usernames in error pages being displayed as anchors to their userpage
2024-04-04 14:22:01 -04:00
Trevor Buckner
659472578b Merge branch 'master' into authors-as-links-to-userpage-in-error-pages 2024-04-04 14:19:56 -04:00
Trevor Buckner
9ec549b496 Merge pull request #3383 from Gazook89/Changes-to-server-start
Changes to terminal output on server start
2024-04-04 14:12:40 -04:00
Trevor Buckner
e37c190600 Merge branch 'master' into Changes-to-server-start 2024-04-04 14:11:33 -04:00
dependabot[bot]
d51d7efdcf Bump mongoose from 8.2.3 to 8.3.0
Bumps [mongoose](https://github.com/Automattic/mongoose) from 8.2.3 to 8.3.0.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/8.2.3...8.3.0)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-04 17:47:06 +00:00
Trevor Buckner
b0a16c8daf Merge pull request #3392 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.24.4
Bump @babel/preset-env from 7.24.3 to 7.24.4
2024-04-04 13:46:14 -04:00
dependabot[bot]
beb86c1820 Bump @babel/preset-env from 7.24.3 to 7.24.4
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.24.3 to 7.24.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.4/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-04 17:42:44 +00:00
Trevor Buckner
48f8026c35 Merge pull request #3391 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.24.4
Bump @babel/core from 7.24.3 to 7.24.4
2024-04-04 13:41:24 -04:00
Trevor Buckner
1be0a2dac3 Merge branch 'master' into dependabot/npm_and_yarn/babel/core-7.24.4 2024-04-04 13:40:08 -04:00
Trevor Buckner
d31e495d07 Merge pull request #3394 from Gazook89/1px-change-in-Editor-Height
1px adjustment to Editor height
2024-04-04 13:23:14 -04:00
Gazook89
3b2a48eabf remove + 1 from editor height 2024-04-03 22:52:16 -05:00
dependabot[bot]
4bc76a0766 Bump @babel/core from 7.24.3 to 7.24.4
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.24.3 to 7.24.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.4/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-04 03:12:37 +00:00
Trevor Buckner
3faa23c6eb Merge pull request #3389 from Gazook89/snippet-menu-style-revision
Align snippet menu icons and names
2024-04-03 23:05:25 -04:00
Gazook89
e324de8f4f remove 'remake' from font names 2024-04-03 14:09:07 -05:00
Gazook89
7954ae8692 set a min-width on icons, reduce font sizes 2024-04-03 12:57:24 -05:00
Víctor Losada Hernández
85a00b508b automatic linting 2024-04-02 14:47:03 +02:00
Víctor Losada Hernández
1e91d7256c Merge branch 'master' into authors-as-links-to-userpage-in-error-pages 2024-04-02 14:12:35 +02:00
Víctor Losada Hernández
8a15172db1 pull from master and suggested fixes 2024-04-02 14:09:53 +02:00
Víctor Losada Hernández
aae574e4e5 Merge branch 'master' of https://github.com/naturalcrit/homebrewery into small-fixes,-snippet-uniformity 2024-04-02 13:56:21 +02:00
Víctor Losada Hernández
45106b47d4 Custom scrollbar fixes 2024-04-02 13:47:16 +02:00
Gazook89
59b3038b9b small style changes to terminal output of server start 2024-03-29 20:42:07 -05:00
Gazook89
31cf8b7d28 add browser-readable address and some styling to log. 2024-03-28 14:58:05 -05:00
Trevor Buckner
9f6bc10369 Merge pull request #3222 from naturalcrit/dependabot/npm_and_yarn/classnames-2.5.1
Bump classnames from 2.3.2 to 2.5.1
2024-03-27 10:07:46 -04:00
Trevor Buckner
f7c7d40195 Merge branch 'master' into dependabot/npm_and_yarn/classnames-2.5.1 2024-03-27 10:04:11 -04:00
Trevor Buckner
380e3fead3 Merge pull request #3367 from naturalcrit/dependabot/npm_and_yarn/babel/core-7.24.3
Bump @babel/core from 7.24.0 to 7.24.3
2024-03-27 10:03:22 -04:00
dependabot[bot]
ffa01c7f1d Bump @babel/core from 7.24.0 to 7.24.3
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.24.0 to 7.24.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.3/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-27 14:01:07 +00:00
Trevor Buckner
15367f9444 Merge pull request #3380 from naturalcrit/dependabot/npm_and_yarn/express-4.19.2
Bump express from 4.19.1 to 4.19.2
2024-03-27 09:59:34 -04:00
Trevor Buckner
90a710907e Merge branch 'master' into dependabot/npm_and_yarn/express-4.19.2 2024-03-27 09:57:16 -04:00
Trevor Buckner
da6d06728c Merge pull request #3346 from 5e-Cleric/scrollbar
Custom scrollbar
2024-03-27 09:56:35 -04:00
Trevor Buckner
451ff3ffec Merge branch 'master' into scrollbar 2024-03-27 09:54:57 -04:00
Trevor Buckner
61038f876d Merge branch 'master' into dependabot/npm_and_yarn/express-4.19.2 2024-03-27 09:34:20 -04:00
Trevor Buckner
20e1c71eff Merge pull request #3379 from G-Ambatte/fixDL+MustacheClash-#3378
Change Marked extension priority order
2024-03-27 09:34:05 -04:00
Trevor Buckner
d2d7f5b71e Merge branch 'master' into fixDL+MustacheClash-#3378 2024-03-27 09:23:52 -04:00
dependabot[bot]
0ad4cb7cfd Bump express from 4.19.1 to 4.19.2
Bumps [express](https://github.com/expressjs/express) from 4.19.1 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.1...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-27 13:23:35 +00:00
Trevor Buckner
161efbb3c8 Merge pull request #3372 from naturalcrit/dependabot/npm_and_yarn/express-4.19.1
Bump express from 4.18.3 to 4.19.1
2024-03-27 09:23:06 -04:00
G.Ambatte
b35739c5c1 Change Marked extension priority order 2024-03-27 15:48:34 +13:00
Trevor Buckner
831c635149 Merge branch 'master' into dependabot/npm_and_yarn/express-4.19.1 2024-03-25 14:51:30 -04:00
Trevor Buckner
d961e7695d Merge pull request #3366 from naturalcrit/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.24.3
Bump @babel/plugin-transform-runtime from 7.24.0 to 7.24.3
2024-03-25 14:44:23 -04:00
dependabot[bot]
4b842ef37f Bump @babel/plugin-transform-runtime from 7.24.0 to 7.24.3
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.24.0 to 7.24.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.3/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 18:33:28 +00:00
Trevor Buckner
0396bedcd0 Merge pull request #3373 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.24.3
Bump @babel/preset-env from 7.24.1 to 7.24.3
2024-03-25 14:31:26 -04:00
Trevor Buckner
772b478682 Merge branch 'master' into dependabot/npm_and_yarn/babel/preset-env-7.24.3 2024-03-22 11:43:07 -04:00
Trevor Buckner
dab8dd278d Merge pull request #3376 from naturalcrit/dependabot/npm_and_yarn/mongoose-8.2.3
Bump mongoose from 8.2.2 to 8.2.3
2024-03-22 11:42:57 -04:00
dependabot[bot]
72d26c6c7e Bump @babel/preset-env from 7.24.1 to 7.24.3
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.24.1 to 7.24.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.3/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-22 15:41:15 +00:00
Trevor Buckner
a7f07ab9f5 Merge branch 'master' into dependabot/npm_and_yarn/express-4.19.1 2024-03-22 11:40:47 -04:00
Trevor Buckner
75080135af Merge branch 'master' into dependabot/npm_and_yarn/mongoose-8.2.3 2024-03-22 11:40:36 -04:00
Trevor Buckner
7a9483c0d0 Merge pull request #3363 from naturalcrit/dependabot/npm_and_yarn/babel/preset-react-7.24.1
Bump @babel/preset-react from 7.23.3 to 7.24.1
2024-03-22 11:40:26 -04:00
Trevor Buckner
484c6bb8a7 Merge branch 'master' into dependabot/npm_and_yarn/babel/preset-react-7.24.1 2024-03-22 11:23:23 -04:00
Trevor Buckner
125adfb198 Merge branch 'master' into dependabot/npm_and_yarn/express-4.19.1 2024-03-22 11:23:09 -04:00
dependabot[bot]
a0c6e92016 Bump mongoose from 8.2.2 to 8.2.3
Bumps [mongoose](https://github.com/Automattic/mongoose) from 8.2.2 to 8.2.3.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/8.2.2...8.2.3)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-22 03:49:13 +00:00
Trevor Buckner
7de58740a2 Merge pull request #3375 from G-Ambatte/fixDefinitionListUndefinedTypeCrash
Fix crash when match is undefined
2024-03-21 21:56:31 -04:00
G.Ambatte
bae56b8b9d Fix crash when match is undefined 2024-03-22 14:27:45 +13:00
dependabot[bot]
e02d925a49 Bump express from 4.18.3 to 4.19.1
Bumps [express](https://github.com/expressjs/express) from 4.18.3 to 4.19.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.3...4.19.1)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-21 03:02:53 +00:00
Víctor Losada Hernández
03f868d084 initial commit 2024-03-20 17:58:10 +01:00
Trevor Buckner
920c4cd7cb Merge pull request #3361 from G-Ambatte/addDefinitionListTests
Add definition list test: ensure inline has priority over multiline
2024-03-20 10:42:52 -04:00
dependabot[bot]
bf2c638cad Bump @babel/preset-react from 7.23.3 to 7.24.1
Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.23.3 to 7.24.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.1/packages/babel-preset-react)

---
updated-dependencies:
- dependency-name: "@babel/preset-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-20 14:41:25 +00:00
Trevor Buckner
eddb513e72 Merge branch 'master' into addDefinitionListTests 2024-03-20 10:40:34 -04:00
Trevor Buckner
fea68ac71a Merge pull request #3362 from naturalcrit/dependabot/npm_and_yarn/babel/preset-env-7.24.1
Bump @babel/preset-env from 7.24.0 to 7.24.1
2024-03-20 10:39:45 -04:00
dependabot[bot]
97b10c685c Bump @babel/preset-env from 7.24.0 to 7.24.1
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.24.0 to 7.24.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.1/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-20 03:21:58 +00:00
G.Ambatte
40fc422ab5 Check inline DL has priority over multiline DL 2024-03-20 13:31:10 +13:00
Trevor Buckner
647afba2b0 Merge pull request #3359 from naturalcrit/Fix-Multiline-DL-Crash
Fix crash for DL, disallow block tokens as DT, add test
2024-03-19 15:48:40 -04:00
Trevor Buckner
bd324a7e74 Fix crash for DL, disallow block tokens as DT, add test 2024-03-19 13:14:58 -04:00
Trevor Buckner
ac080c8323 Merge pull request #3358 from 5e-Cleric/fix-monster-dl
Quickfix: Monster statblocks definition list missed blank line
2024-03-18 19:36:48 -04:00
Trevor Buckner
30ebf90371 Add Tests to circleci 2024-03-18 19:34:17 -04:00
Trevor Buckner
f9a7adbd72 Fix tests 2024-03-18 19:28:42 -04:00
Víctor Losada Hernández
b74fb22182 Revert "fix another test"
This reverts commit b6ea89356b.
2024-03-18 23:50:33 +01:00
Víctor Losada Hernández
b6ea89356b fix another test 2024-03-18 23:47:06 +01:00
Víctor Losada Hernández
37488ded4d fix 1 test, no idea how these work 2024-03-18 23:43:51 +01:00
Víctor Losada Hernández
c47dd828ed initial commit 2024-03-18 23:39:15 +01:00
Trevor Buckner
a34ed8ccb4 Merge pull request #3354 from naturalcrit/dependabot/npm_and_yarn/eslint-plugin-react-7.34.1
Bump eslint-plugin-react from 7.34.0 to 7.34.1
2024-03-18 17:37:47 -04:00
Trevor Buckner
d4d0546d61 Merge branch 'master' into dependabot/npm_and_yarn/eslint-plugin-react-7.34.1 2024-03-18 17:34:16 -04:00
Trevor Buckner
e94c1d33d2 Merge pull request #3353 from naturalcrit/dependabot/npm_and_yarn/mongoose-8.2.2
Bump mongoose from 8.2.1 to 8.2.2
2024-03-18 17:34:05 -04:00
Trevor Buckner
dd6388bf9f Merge pull request #3327 from G-Ambatte/experimentalBrewLocking-#3326
Add administrative brew locking function
2024-03-18 17:33:54 -04:00
Trevor Buckner
8b8071a903 Merge branch 'master' into experimentalBrewLocking-#3326 2024-03-18 17:31:41 -04:00
dependabot[bot]
19746a78f4 Bump eslint-plugin-react from 7.34.0 to 7.34.1
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.34.0 to 7.34.1.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/v7.34.1/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.0...v7.34.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 21:26:36 +00:00
dependabot[bot]
13d679c4bf Bump mongoose from 8.2.1 to 8.2.2
Bumps [mongoose](https://github.com/Automattic/mongoose) from 8.2.1 to 8.2.2.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/mongoose/compare/8.2.1...8.2.2)

---
updated-dependencies:
- dependency-name: mongoose
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 21:26:34 +00:00
Trevor Buckner
a851378a2f Merge pull request #3357 from naturalcrit/v3.12.0
v3.12.0
2024-03-18 17:25:34 -04:00
G.Ambatte
7f168f35b8 Add test for locked brew 2024-03-17 21:35:03 +13:00
G.Ambatte
21c0916693 Switch to boolean lock state 2024-03-17 21:34:31 +13:00
G.Ambatte
8f0fb6e458 Merge branch 'master' into experimentalBrewLocking-#3326 2024-03-17 18:40:57 +13:00
Trevor Buckner
4606ad4c6e Merge branch 'master' into scrollbar 2024-03-14 17:10:30 -04:00
Víctor Losada Hernández
5a410029f6 Merge branch 'master' into scrollbar 2024-03-08 19:51:15 +01:00
Víctor Losada Hernández
b4fec32320 Merge branch 'scrollbar' of https://github.com/5e-Cleric/homebrewery into scrollbar 2024-03-08 10:13:06 +01:00
Víctor Losada Hernández
d0000cee11 linting 2024-03-08 10:13:04 +01:00
Víctor Losada Hernández
846b3b9d02 Merge branch 'master' into scrollbar 2024-03-08 10:11:16 +01:00
Víctor Losada Hernández
54d881642d listpage, editor 2024-03-08 10:09:29 +01:00
Víctor Losada Hernández
beaf67c975 initial commit 2024-03-06 19:30:23 +01:00
G.Ambatte
5b35d1169d Merge branch 'experimentalBrewLocking-#3326' of https://github.com/G-Ambatte/homebrewery into experimentalBrewLocking-#3326 2024-02-28 16:02:47 +13:00
G.Ambatte
0d1d3a180d Handle missing lock property 2024-02-28 16:02:35 +13:00
G.Ambatte
df3db14e8b Merge branch 'master' into experimentalBrewLocking-#3326 2024-02-28 15:55:01 +13:00
Trevor Buckner
1c7d2740f3 Merge branch 'master' into dependabot/npm_and_yarn/classnames-2.5.1 2024-02-27 15:30:35 -05:00
G.Ambatte
802da2920b Initial functionality pass 2024-02-25 22:28:44 +13:00
Víctor Losada Hernández
453656fbeb Merge branch 'master' into small-fixes,-snippet-uniformity 2024-02-23 18:53:56 +01:00
dependabot[bot]
70657c16d1 Bump classnames from 2.3.2 to 2.5.1
Bumps [classnames](https://github.com/JedWatson/classnames) from 2.3.2 to 2.5.1.
- [Changelog](https://github.com/JedWatson/classnames/blob/main/HISTORY.md)
- [Commits](https://github.com/JedWatson/classnames/compare/v2.3.2...v2.5.1)

---
updated-dependencies:
- dependency-name: classnames
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-30 19:30:29 +00:00
Víctor Losada Hernández
3d5f99adae covers em to cm 2023-08-11 15:30:33 +02:00
Víctor Losada Hernández
a889fa657e display prop again 2023-08-11 15:18:16 +02:00
Víctor Losada Hernández
4347debf45 unsetting footer should use display property 2023-08-11 15:10:08 +02:00
Víctor Losada Hernández
dc3243ae59 back cover should not create a page after itself 2023-08-11 15:08:49 +02:00
27 changed files with 948 additions and 705 deletions

View File

@@ -64,6 +64,12 @@ jobs:
- run:
name: Test - Mustache Spans
command: npm run test:mustache-syntax
- run:
name: Test - Definition Lists
command: npm run test:definition-lists
- run:
name: Test - Variables
command: npm run test:variables
- run:
name: Test - Routes
command: npm run test:route

View File

@@ -0,0 +1,103 @@
name: Limit pull requests
description: >
Limit the number of open pull requests to the repository created by a user
author: ZhongRuoyu (from Homebrew repository)
branding:
icon: alert-triangle
color: yellow
inputs:
token:
description: GitHub token
required: false
default: ${{ github.token }}
except-users:
description: The users exempted from the limit, one per line
required: false
# https://docs.github.com/en/graphql/reference/enums#commentauthorassociation
except-author-associations:
description: The author associations exempted from the limit, one per line
required: false
comment-limit:
description: >
Post the comment when the user's number of open pull requests exceeds this
number and `comment` is not empty
required: true
default: "10"
comment:
description: The comment to post when the limit is reached
required: false
close-limit:
description: >
Close the pull request when the user's number of open pull requests
exceeds this number and `close` is set to `true`
required: true
default: "50"
close:
description: Whether to close the pull request when the limit is reached
required: true
default: "false"
runs:
using: composite
steps:
- name: Check the number of pull requests
id: count-pull-requests
run: |
# If the user is exempted, assume they have no pull requests.
if grep -Fiqx '${{ github.actor }}' <<<"$EXCEPT_USERS"; then
echo "::notice::@${{ github.actor }} is exempted from the limit."
echo "count=0" >>"$GITHUB_OUTPUT"
exit 0
fi
if grep -Fiqx '${{ github.event.pull_request.author_association }}' <<<"$EXCEPT_AUTHOR_ASSOCIATIONS"; then
echo "::notice::@{{ github.actor }} is a ${{ github.event.pull_request.author_association }} exempted from the limit."
echo "count=0" >>"$GITHUB_OUTPUT"
exit 0
fi
count="$(
gh api \
--method GET \
--header 'Accept: application/vnd.github+json' \
--header 'X-GitHub-Api-Version: 2022-11-28' \
--field state=open \
--paginate \
'/repos/{owner}/{repo}/pulls' |
jq \
--raw-output \
--arg USER '${{ github.actor }}' \
'map(select(.user.login == $USER)) | length'
)"
echo "::notice::@${{ github.actor }} has $count open pull request(s)."
echo "count=$count" >>"$GITHUB_OUTPUT"
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ inputs.token }}
EXCEPT_USERS: ${{ inputs.except-users }}
EXCEPT_AUTHOR_ASSOCIATIONS: ${{ inputs.except-author-associations }}
shell: bash
- name: Comment on pull request
if: >
fromJSON(steps.count-pull-requests.outputs.count) > fromJSON(inputs.comment-limit) &&
inputs.comment != ''
run: |
gh pr comment '${{ github.event.pull_request.number }}' \
--body="${COMMENT_BODY}"
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ inputs.token }}
COMMENT_BODY: ${{ inputs.comment }}
shell: bash
- name: Close pull request
if: >
fromJSON(steps.count-pull-requests.outputs.count) > fromJSON(inputs.close-limit) &&
inputs.close == 'true'
run: |
gh pr close '${{ github.event.pull_request.number }}'
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ inputs.token }}
shell: bash

25
.github/workflows/pr-check.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: PR Check
on: pull_request_target
env:
GH_REPO: ${{ github.repository }}
GH_NO_UPDATE_NOTIFIER: 1
GH_PROMPT_DISABLED: 1
permissions:
contents: read
issues: write
pull-requests: write
statuses: write
jobs:
limit-pull-requests:
if: always() && github.repository_owner == 'Homebrew'
runs-on: ubuntu-latest
steps:
- uses: Homebrew/actions/limit-pull-requests@master
with:
except-users: |
dependabot
comment-limit: 1
comment: |
Hi, thanks for your contribution to the Homebrewery! You already have >=3 open pull requests. Consider completing some of your existing PRs before opening new ones. Thanks!
close-limit: 5
close: false

View File

@@ -14,6 +14,28 @@
box-shadow : 1px 4px 14px #000000;
}
}
&::-webkit-scrollbar {
width: 20px;
&:horizontal{
height: 20px;
width:auto;
}
&-thumb {
background: linear-gradient(90deg, #d3c1af 15px, #00000000 15px);
&:horizontal{
background: linear-gradient(0deg, #d3c1af 15px, #00000000 15px);
}
}
&-corner {
visibility: hidden;
}
}
}
.pane { position : relative; }
.pageInfo {

View File

@@ -81,7 +81,7 @@ const Editor = createClass({
updateEditorSize : function() {
if(this.refs.codeEditor) {
let paneHeight = this.refs.main.parentNode.clientHeight;
paneHeight -= SNIPPETBAR_HEIGHT + 1;
paneHeight -= SNIPPETBAR_HEIGHT;
this.refs.codeEditor.codeMirror.setSize(null, paneHeight);
}
},

View File

@@ -130,6 +130,8 @@
height : 1.2em;
margin-right : 8px;
font-size : 1.2em;
min-width: 25px;
text-align: center;
& ~ i {
margin-right : 0;
margin-left : 5px;
@@ -138,7 +140,7 @@
&.font {
height : auto;
&::before {
font-size : 1.4em;
font-size : 1em;
content : 'ABC';
}

View File

@@ -76,7 +76,7 @@ const Homebrew = createClass({
<Route path='/print' element={<WithRoute el={PrintPage} />} />
<Route path='/changelog' element={<WithRoute el={SharePage} brew={this.props.brew} />} />
<Route path='/faq' element={<WithRoute el={SharePage} brew={this.props.brew} />} />
<Route path='/account' element={<WithRoute el={AccountPage} brew={this.props.brew} uiItems={this.props.brew.uiItems} />} />
<Route path='/account' element={<WithRoute el={AccountPage} brew={this.props.brew} accountDetails={this.props.brew.accountDetails} />} />
<Route path='/legacy' element={<WithRoute el={HomePage} brew={this.props.brew} />} />
<Route path='/error' element={<WithRoute el={ErrorPage} brew={this.props.brew} />} />
<Route path='/' element={<WithRoute el={HomePage} brew={this.props.brew} />} />

View File

@@ -15,6 +15,23 @@
}
&.listPage .content {
overflow-y : scroll;
&::-webkit-scrollbar {
width: 20px;
&:horizontal{
height: 20px;
width:auto;
}
&-thumb {
background: linear-gradient(90deg, #d3c1af 15px, #00000000 15px);
&:horizontal{
background: linear-gradient(0deg, #d3c1af 15px, #00000000 15px);
}
}
&-corner {
visibility: hidden;
}
}
}
}
}

View File

@@ -1,102 +1,82 @@
const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames');
const React = require('react');
const moment = require('moment');
const UIPage = require('../basePages/uiPage/uiPage.jsx');
const Nav = require('naturalcrit/nav/nav.jsx');
const Navbar = require('../../navbar/navbar.jsx');
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
const Account = require('../../navbar/account.navitem.jsx');
const NewBrew = require('../../navbar/newbrew.navitem.jsx');
const HelpNavItem = require('../../navbar/help.navitem.jsx');
const NaturalCritIcon = require('naturalcrit/svg/naturalcrit.svg.jsx');
let SAVEKEY = '';
const AccountPage = createClass({
displayName : 'AccountPage',
getDefaultProps : function() {
return {
brew : {},
uiItems : {}
};
},
getInitialState : function() {
return {
uiItems : this.props.uiItems
};
},
componentDidMount : function(){
if(!this.state.saveLocation && this.props.uiItems.username) {
SAVEKEY = `HOMEBREWERY-DEFAULT-SAVE-LOCATION-${this.props.uiItems.username}`;
let saveLocation = window.localStorage.getItem(SAVEKEY);
saveLocation = saveLocation ?? (this.state.uiItems.googleId ? 'GOOGLE-DRIVE' : 'HOMEBREWERY');
this.makeActive(saveLocation);
const AccountPage = (props)=>{
// destructure props and set state for save location
const { accountDetails, brew } = props;
const [saveLocation, setSaveLocation] = React.useState('');
// initialize save location from local storage based on user id
React.useEffect(()=>{
if(!saveLocation && accountDetails.username) {
SAVEKEY = `HOMEBREWERY-DEFAULT-SAVE-LOCATION-${accountDetails.username}`;
// if no SAVEKEY in local storage, default save location to Google Drive if user has Google account.
let saveLocation = window.localStorage.getItem(SAVEKEY);
saveLocation = saveLocation ?? (accountDetails.googleId ? 'GOOGLE-DRIVE' : 'HOMEBREWERY');
setActiveSaveLocation(saveLocation);
}
},
}, []);
makeActive : function(newSelection){
if(this.state.saveLocation == newSelection) return;
const setActiveSaveLocation = (newSelection)=>{
if(saveLocation === newSelection) return;
window.localStorage.setItem(SAVEKEY, newSelection);
this.setState({
saveLocation : newSelection
});
},
setSaveLocation(newSelection);
};
renderButton : function(name, key, shouldRender=true){
if(!shouldRender) return;
return <button className={this.state.saveLocation==key ? 'active' : ''} onClick={()=>{this.makeActive(key);}}>{name}</button>;
},
// todo: should this be a set of radio buttons (well styled) since it's either/or choice?
const renderSaveLocationButton = (name, key, shouldRender = true)=>{
if(!shouldRender) return null;
return (
<button className={saveLocation === key ? 'active' : ''} onClick={()=>{setActiveSaveLocation(key);}}>
{name}
</button>
);
};
renderNavItems : function() {
return <Navbar>
<Nav.section>
<NewBrew />
<HelpNavItem />
<RecentNavItem />
<Account />
</Nav.section>
</Navbar>;
},
// render the entirety of the account page content
const renderAccountPage = ()=>{
return (
<>
<div className='dataGroup'>
<h1>Account Information <i className='fas fa-user'></i></h1>
<p><strong>Username: </strong>{accountDetails.username || 'No user currently logged in'}</p>
<p><strong>Last Login: </strong>{moment(accountDetails.issued).format('dddd, MMMM Do YYYY, h:mm:ss a ZZ') || '-'}</p>
</div>
<div className='dataGroup'>
<h3>Homebrewery Information <NaturalCritIcon /></h3>
<p><strong>Brews on Homebrewery: </strong>{accountDetails.mongoCount}</p>
</div>
<div className='dataGroup'>
<h3>Google Information <i className='fab fa-google-drive'></i></h3>
<p><strong>Linked to Google: </strong>{accountDetails.googleId ? 'YES' : 'NO'}</p>
{accountDetails.googleId && (
<p>
<strong>Brews on Google Drive: </strong>{accountDetails.googleCount ?? (
<>
Unable to retrieve files - <a href='https://github.com/naturalcrit/homebrewery/discussions/1580'>follow these steps to renew your Google credentials.</a>
</>
)}
</p>
)}
</div>
<div className='dataGroup'>
<h4>Default Save Location</h4>
{renderSaveLocationButton('Homebrewery', 'HOMEBREWERY')}
{renderSaveLocationButton('Google Drive', 'GOOGLE-DRIVE', accountDetails.googleId)}
</div>
</>
);
};
renderUiItems : function() {
return <>
<div className='dataGroup'>
<h1>Account Information <i className='fas fa-user'></i></h1>
<p><strong>Username: </strong> {this.props.uiItems.username || 'No user currently logged in'}</p>
<p><strong>Last Login: </strong> {moment(this.props.uiItems.issued).format('dddd, MMMM Do YYYY, h:mm:ss a ZZ') || '-'}</p>
</div>
<div className='dataGroup'>
<h3>Homebrewery Information <NaturalCritIcon /></h3>
<p><strong>Brews on Homebrewery: </strong> {this.props.uiItems.mongoCount}</p>
</div>
<div className='dataGroup'>
<h3>Google Information <i className='fab fa-google-drive'></i></h3>
<p><strong>Linked to Google: </strong> {this.props.uiItems.googleId ? 'YES' : 'NO'}</p>
{this.props.uiItems.googleId &&
<p>
<strong>Brews on Google Drive: </strong> {this.props.uiItems.googleCount ?? <>Unable to retrieve files - <a href='https://github.com/naturalcrit/homebrewery/discussions/1580'>follow these steps to renew your Google credentials.</a></>}
</p>
}
</div>
<div className='dataGroup'>
<h4>Default Save Location</h4>
{this.renderButton('Homebrewery', 'HOMEBREWERY')}
{this.renderButton('Google Drive', 'GOOGLE-DRIVE', this.state.uiItems.googleId)}
</div>
</>;
},
render : function(){
return <UIPage brew={this.props.brew}>
{this.renderUiItems()}
</UIPage>;
}
});
// return the account page inside the base layout wrapper (with navbar etc).
return (
<UIPage brew={brew}>
{renderAccountPage()}
</UIPage>);
};
module.exports = AccountPage;

View File

@@ -73,9 +73,11 @@ const errorIndex = (props)=>{
**Properties** tab, and adding your username to the "invited authors" list. You can
then try to access this document again.
:
**Brew Title:** ${props.brew.brewTitle || 'Unable to show title'}
**Current Authors:** ${props.brew.authors?.map((author)=>{return `${author}`;}).join(', ') || 'Unable to list authors'}
**Current Authors:** ${props.brew.authors?.map((author)=>{return `[${author}](/user/${author})`;}).join(', ') || 'Unable to list authors'}
[Click here to be redirected to the brew's share page.](/share/${props.brew.shareId})`,
@@ -86,9 +88,14 @@ const errorIndex = (props)=>{
You must be logged in to one of the accounts listed as an author of this brew.
User is not logged in. Please log in [here](${loginUrl}).
:
**Brew Title:** ${props.brew.brewTitle || 'Unable to show title'}
**Current Authors:** ${props.brew.authors?.map((author)=>{return `${author}`;}).join(', ') || 'Unable to list authors'}`,
**Current Authors:** ${props.brew.authors?.map((author)=>{return `[${author}](/user/${author})`;}).join(', ') || 'Unable to list authors'}
[Click here to be redirected to the brew's share page.](/share/${props.brew.shareId})`,
// Brew load error
'05' : dedent`
@@ -97,6 +104,8 @@ const errorIndex = (props)=>{
The server could not locate the Homebrewery document. It was likely deleted by
its owner.
:
**Requested access:** ${props.brew.accessType}
**Brew ID:** ${props.brew.brewId}`,
@@ -113,6 +122,8 @@ const errorIndex = (props)=>{
An error occurred while attempting to remove the Homebrewery document.
:
**Brew ID:** ${props.brew.brewId}`,
// Author delete error
@@ -121,7 +132,21 @@ const errorIndex = (props)=>{
An error occurred while attempting to remove the user from the Homebrewery document author list!
:
**Brew ID:** ${props.brew.brewId}`,
// Brew locked by Administrators error
'100' : dedent`
## This brew has been locked.
Please contact the Administrators to unlock this document.
:
**Brew ID:** ${props.brew.brewId}
**Brew Title:** ${props.brew.brewTitle}`,
};
};

1129
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -31,7 +31,7 @@
"test:mustache-syntax:inline": "jest '.*(mustache-syntax).*' -t '^Inline:.*' --verbose --noStackTrace",
"test:mustache-syntax:block": "jest '.*(mustache-syntax).*' -t '^Block:.*' --verbose --noStackTrace",
"test:mustache-syntax:injection": "jest '.*(mustache-syntax).*' -t '^Injection:.*' --verbose --noStackTrace",
"test:marked-extensions": "jest tests/markdown/marked-extensions.test.js --verbose --noStackTrace",
"test:definition-lists": "jest tests/markdown/definition-lists.test.js --verbose --noStackTrace",
"test:route": "jest tests/routes/static-pages.test.js --verbose",
"phb": "node scripts/phb.js",
"prod": "set NODE_ENV=production && npm run build",
@@ -81,19 +81,19 @@
]
},
"dependencies": {
"@babel/core": "^7.24.0",
"@babel/plugin-transform-runtime": "^7.24.0",
"@babel/preset-env": "^7.24.0",
"@babel/preset-react": "^7.23.3",
"@babel/core": "^7.24.4",
"@babel/plugin-transform-runtime": "^7.24.3",
"@babel/preset-env": "^7.24.4",
"@babel/preset-react": "^7.24.1",
"@googleapis/drive": "^8.7.0",
"body-parser": "^1.20.2",
"classnames": "^2.3.2",
"classnames": "^2.5.1",
"codemirror": "^5.65.6",
"cookie-parser": "^1.4.6",
"create-react-class": "^15.7.0",
"dedent-tabs": "^0.10.3",
"expr-eval": "^2.0.2",
"express": "^4.18.3",
"express": "^4.19.2",
"express-async-handler": "^1.2.0",
"express-static-gzip": "2.1.7",
"fs-extra": "11.2.0",
@@ -107,7 +107,7 @@
"marked-smartypants-lite": "^1.0.2",
"markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.30.1",
"mongoose": "^8.2.1",
"mongoose": "^8.3.1",
"nanoid": "3.3.4",
"nconf": "^0.12.1",
"react": "^18.2.0",
@@ -120,8 +120,8 @@
},
"devDependencies": {
"eslint": "^8.57.0",
"eslint-plugin-jest": "^27.9.0",
"eslint-plugin-react": "^7.34.0",
"eslint-plugin-jest": "^28.2.0",
"eslint-plugin-react": "^7.34.1",
"jest": "^29.7.0",
"jest-expect-message": "^1.1.3",
"postcss-less": "^6.0.0",

View File

@@ -7,6 +7,14 @@ DB.connect(config).then(()=>{
// before launching server
const PORT = process.env.PORT || config.get('web_port') || 8000;
server.app.listen(PORT, ()=>{
console.log(`server on port: ${PORT}`);
const reset = '\x1b[0m'; // Reset to default style
const bright = '\x1b[1m'; // Bright (bold) style
const cyan = '\x1b[36m'; // Cyan color
const underline = '\x1b[4m'; // Underlined style
console.log(`\n\tserver started at: ${new Date().toLocaleString()}`);
console.log(`\tserver on port: ${PORT}`);
console.log(`\t${bright + cyan}Open in browser: ${reset}${underline + bright + cyan}http://localhost:${PORT}${reset}\n\n`)
});
});

View File

@@ -372,7 +372,7 @@ app.get('/account', asyncHandler(async (req, res, next)=>{
console.log(err);
});
data.uiItems = {
data.accountDetails = {
username : req.account.username,
issued : req.account.issued,
googleId : Boolean(req.account.googleId),

View File

@@ -7,7 +7,9 @@ const config = require('./config.js');
let serviceAuth;
if(!config.get('service_account')){
console.log('No Google Service Account in config files - Google Drive integration will not be available.');
const reset = '\x1b[0m'; // Reset to default style
const yellow = '\x1b[33m'; // yellow color
console.warn(`\n${yellow}No Google Service Account in config files - Google Drive integration will not be available.${reset}`);
} else {
const keys = typeof(config.get('service_account')) == 'string' ?
JSON.parse(config.get('service_account')) :
@@ -18,7 +20,7 @@ if(!config.get('service_account')){
serviceAuth.scopes = ['https://www.googleapis.com/auth/drive'];
} catch (err) {
console.warn(err);
console.log('Please make sure the Google Service Account is set up properly in your config files.');
console.warn('Please make sure the Google Service Account is set up properly in your config files.');
}
}

View File

@@ -54,6 +54,10 @@ const api = {
});
stub = stub?.toObject();
if(stub?.lock?.locked && accessType != 'edit') {
throw { HBErrorCode: '100', code: stub.lock.code, message: stub.lock.message, brewId: stub.shareId, brewTitle: stub.title };
}
// If there is a google id, try to find the google brew
if(!stubOnly && (googleId || stub?.googleId)) {
let googleError;
@@ -79,9 +83,9 @@ const api = {
if(accessType === 'edit' && (authorsExist && !(isAuthor || isInvited))) {
const accessError = { name: 'Access Error', status: 401 };
if(req.account){
throw { ...accessError, message: 'User is not an Author', HBErrorCode: '03', authors: stub.authors, brewTitle: stub.title, shareId: stub.shareId };
throw { ...accessError, message: 'User is not an Author', HBErrorCode: '03', authors: stub.authors, brewTitle: stub.title, shareId: stub.shareId};
}
throw { ...accessError, message: 'User is not logged in', HBErrorCode: '04', authors: stub.authors, brewTitle: stub.title };
throw { ...accessError, message: 'User is not logged in', HBErrorCode: '04', authors: stub.authors, brewTitle: stub.title, shareId: stub.shareId};
}
// If after all of that we still don't have a brew, throw an exception

View File

@@ -117,7 +117,7 @@ describe('Tests for api', ()=>{
id : '123456789012345678901234567890123abcdefghijkl'
}
});
expect(googleId).toEqual('123456789012345678901234567890123');
expect(id).toEqual('abcdefghijkl');
});
@@ -128,7 +128,7 @@ describe('Tests for api', ()=>{
id : '123456789012345678901234567890123abcdefghij'
}
});
expect(googleId).toEqual('123456789012345678901234567890123');
expect(id).toEqual('abcdefghij');
});
@@ -298,6 +298,18 @@ describe('Tests for api', ()=>{
expect(model.get).toHaveBeenCalledWith({ shareId: '1' });
expect(google.getGoogleBrew).toHaveBeenCalledWith('2', '1', 'share');
});
it('access is denied to a locked brew', async()=>{
const lockBrew = { title: 'test brew', shareId: '1', lock: { locked: true, code: 404, message: 'brew locked' } };
model.get = jest.fn(()=>toBrewPromise(lockBrew));
api.getId = jest.fn(()=>({ id: '1', googleId: undefined }));
const fn = api.getBrew('share', false);
const req = { brew: {} };
const next = jest.fn();
await expect(fn(req, null, next)).rejects.toEqual({ 'HBErrorCode': '100', 'brewId': '1', 'brewTitle': 'test brew', 'code': 404, 'message': 'brew locked' });
});
});
describe('mergeBrewText', ()=>{

View File

@@ -17,13 +17,23 @@
text-shadow: none;
font-weight: 600;
color: grey;
}
}
.sourceMoveFlash .CodeMirror-line{
animation-name: sourceMoveAnimation;
animation-duration: 0.4s;
}
.CodeMirror-vscrollbar {
&::-webkit-scrollbar {
width: 20px;
}
&::-webkit-scrollbar-thumb {
width: 20px;
background: linear-gradient(90deg, #858585 15px, #808080 15px);
}
}
//.cm-tab {
// background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAQAAACOs/baAAAARUlEQVR4nGJgIAG8JkXxUAcCtDWemcGR1lY4MvgzCEKY7jSBjgxBDAG09UEQzAe0AMwMHrSOAwEGRtpaMIwAAAAA//8DAG4ID9EKs6YqAAAAAElFTkSuQmCC) no-repeat right;
//}

View File

@@ -294,10 +294,10 @@ const superSubScripts = {
}
};
const definitionListsInline = {
name : 'definitionListsInline',
const definitionListsSingleLine = {
name : 'definitionListsSingleLine',
level : 'block',
start(src) { return src.match(/^[^\n]*?::[^\n]*/m)?.index; }, // Hint to Marked.js to stop and check for a match
start(src) { return src.match(/\n[^\n]*?::[^\n]*/m)?.index; }, // Hint to Marked.js to stop and check for a match
tokenizer(src, tokens) {
const regex = /^([^\n]*?)::([^\n]*)(?:\n|$)/ym;
let match;
@@ -312,7 +312,7 @@ const definitionListsInline = {
}
if(definitions.length) {
return {
type : 'definitionListsInline',
type : 'definitionListsSingleLine',
raw : src.slice(0, endIndex),
definitions
};
@@ -321,15 +321,15 @@ const definitionListsInline = {
renderer(token) {
return `<dl>${token.definitions.reduce((html, def)=>{
return `${html}<dt>${this.parser.parseInline(def.dt)}</dt>`
+ `<dd>${this.parser.parseInline(def.dd)}</dd>`;
+ `<dd>${this.parser.parseInline(def.dd)}</dd>\n`;
}, '')}</dl>`;
}
};
const definitionListsMultiline = {
name : 'definitionListsMultiline',
const definitionListsMultiLine = {
name : 'definitionListsMultiLine',
level : 'block',
start(src) { return src.match(/^[^\n]*\n::/m)?.index; }, // Hint to Marked.js to stop and check for a match
start(src) { return src.match(/\n[^\n]*\n::/m)?.index; }, // Hint to Marked.js to stop and check for a match
tokenizer(src, tokens) {
const regex = /(\n?\n?(?!::)[^\n]+?(?=\n::))|\n::(.(?:.|\n)*?(?=(?:\n::)|(?:\n\n)|$))/y;
let match;
@@ -337,12 +337,14 @@ const definitionListsMultiline = {
const definitions = [];
while (match = regex.exec(src)) {
if(match[1]) {
if(this.lexer.blockTokens(match[1].trim())[0]?.type !== 'paragraph') // DT must not be another block-level token besides <p>
break;
definitions.push({
dt : this.lexer.inlineTokens(match[1].trim()),
dds : []
});
}
if(match[2]) {
if(match[2] && definitions.length) {
definitions[definitions.length - 1].dds.push(
this.lexer.inlineTokens(match[2].trim().replace(/\s/g, ' '))
);
@@ -351,7 +353,7 @@ const definitionListsMultiline = {
}
if(definitions.length) {
return {
type : 'definitionListsMultiline',
type : 'definitionListsMultiLine',
raw : src.slice(0, endIndex),
definitions
};
@@ -615,7 +617,7 @@ function MarkedVariables() {
//^=====--------------------< Variable Handling >-------------------=====^//
Marked.use(MarkedVariables());
Marked.use({ extensions: [mustacheSpans, mustacheDivs, mustacheInjectInline, definitionListsInline, definitionListsMultiline, superSubScripts] });
Marked.use({ extensions: [definitionListsMultiLine, definitionListsSingleLine, superSubScripts, mustacheSpans, mustacheDivs, mustacheInjectInline] });
Marked.use(mustacheInjectBlock);
Marked.use({ renderer: renderer, tokenizer: tokenizer, mangle: false });
Marked.use(MarkedExtendedTables(), MarkedGFMHeadingId(), MarkedSmartypantsLite());

View File

@@ -6,19 +6,19 @@ describe('Inline Definition Lists', ()=>{
test('No Term 1 Definition', function() {
const source = ':: My First Definition\n\n';
const rendered = Markdown.render(source).trim();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt></dt><dd>My First Definition</dd></dl>');
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt></dt><dd>My First Definition</dd>\n</dl>');
});
test('Single Definition Term', function() {
const source = 'My term :: My First Definition\n\n';
const rendered = Markdown.render(source).trim();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt>My term</dt><dd>My First Definition</dd></dl>');
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt>My term</dt><dd>My First Definition</dd>\n</dl>');
});
test('Multiple Definition Terms', function() {
const source = 'Term 1::Definition of Term 1\nTerm 2::Definition of Term 2\n\n';
const rendered = Markdown.render(source).trim();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt>Term 1</dt><dd>Definition of Term 1</dd><dt>Term 2</dt><dd>Definition of Term 2</dd></dl>');
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt>Term 1</dt><dd>Definition of Term 1</dd>\n<dt>Term 2</dt><dd>Definition of Term 2</dd>\n</dl>');
});
});
@@ -68,7 +68,7 @@ describe('Multiline Definition Lists', ()=>{
test('Multiple Term, Single multi-line definition, followed by an inline dl', function() {
const source = 'Term 1\n::Definition 1\nand more and more\n\nTerm 2\n::Definition 1\n::Definition 2\n\n::Inline Definition (no term)';
const rendered = Markdown.render(source).trim();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt>Term 1</dt>\n<dd>Definition 1 and more and more</dd>\n<dt>Term 2</dt>\n<dd>Definition 1</dd>\n<dd>Definition 2</dd></dl><dl><dt></dt><dd>Inline Definition (no term)</dd></dl>');
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt>Term 1</dt>\n<dd>Definition 1 and more and more</dd>\n<dt>Term 2</dt>\n<dd>Definition 1</dd>\n<dd>Definition 2</dd></dl><dl><dt></dt><dd>Inline Definition (no term)</dd>\n</dl>');
});
test('Multiple Term, Single multi-line definition, followed by paragraph', function() {
@@ -76,4 +76,16 @@ describe('Multiline Definition Lists', ()=>{
const rendered = Markdown.render(source).trim();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt>Term 1</dt>\n<dd>Definition 1 and more and more</dd>\n<dt>Term 2</dt>\n<dd>Definition 1</dd>\n<dd>Definition 2</dd></dl><p>Paragraph</p>');
});
test('Block Token cannot be the Term of a multi-line definition', function() {
const source = '## Header\n::Definition 1 of a single-line DL\n::Definition 1 of another single-line DL';
const rendered = Markdown.render(source).trim();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<h2 id="header">Header</h2>\n<dl><dt></dt><dd>Definition 1 of a single-line DL</dd>\n<dt></dt><dd>Definition 1 of another single-line DL</dd>\n</dl>');
});
test('Inline DL has priority over Multiline', function() {
const source = 'Term 1 :: Inline definition 1\n:: Inline definition 2 (no DT)';
const rendered = Markdown.render(source).trim();
expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('<dl><dt>Term 1</dt><dd>Inline definition 1</dd>\n<dt></dt><dd>Inline definition 2 (no DT)</dd>\n</dl>');
});
});

View File

@@ -149,8 +149,6 @@ module.exports = {
![](/assets/naturalCritLogoWhite.svg)
Homebrewery.Naturalcrit.com
}}
\page`;
}}`;
}
};

View File

@@ -1,6 +1,6 @@
@import (less) './themes/assets/assets.less';
@import (less) './themes/fonts/icon fonts/font-icons.less';
@import (less) './themes/fonts/icon fonts/dicefont.less';
@import (less) './themes/fonts/icon fonts/diceFont.less';
:root {
//Colors
@@ -532,14 +532,14 @@
.page:has(.frontCover) {
columns : 1;
text-align : center;
&::after { all : unset; }
&::after { display : none; }
h1 {
margin-top : 1.2cm;
margin-bottom : 0;
font-family : 'NodestoCapsCondensed';
font-size : 2.245cm;
font-weight : normal;
line-height : 0.85em;
line-height : 1.9cm;
color : white;
text-shadow : unset;
text-transform : uppercase;
@@ -626,14 +626,14 @@
.page:has(.insideCover) {
columns : 1;
text-align : center;
&::after { all : unset; }
&::after { display : none; }
h1 {
margin-top : 1.2cm;
margin-bottom : 0;
font-family : 'NodestoCapsCondensed';
font-size : 2.1cm;
font-weight : normal;
line-height : 0.85em;
line-height : 1.785cm;
text-transform : uppercase;
}
h2 {
@@ -672,7 +672,7 @@
padding : 2.25cm 1.3cm 2cm 1.3cm;
color : #FFFFFF;
columns : 1;
&::after { all : unset; }
&::after { display : none; }
.columnWrapper { width : 7.6cm; }
.backCover {
position : absolute;
@@ -688,7 +688,7 @@
margin-bottom : 0.3cm;
font-family : 'NodestoCapsCondensed';
font-size : 1.35cm;
line-height : 0.95em;
line-height : 1.28cm;
color : #ED1C24;
text-align : center;
}
@@ -714,7 +714,7 @@
p {
font-family : 'Overpass';
font-size : 0.332cm;
line-height : 1.5em;
line-height : 0.35cm;
}
hr + p {
margin-top : 0.6cm;
@@ -739,10 +739,10 @@
font-family : 'NodestoCapsWide';
font-size : 0.4cm;
line-height : 1em;
line-height : 1.28cm;
color : #FFFFFF;
text-align : center;
text-indent : 0;
letter-spacing : 0.08em;
}
}
}
@@ -782,7 +782,7 @@
margin-left : auto;
font-family : 'Overpass';
font-size : 0.45cm;
line-height : 1.1em;
line-height : 0.495cm;
}
}

View File

@@ -326,27 +326,27 @@ module.exports = [
gen : dedent`{{font-family:CodeLight Dummy Text}}`
},
{
name : 'Scaly Sans Remake',
name : 'Scaly Sans',
icon : 'font ScalySansRemake',
gen : dedent`{{font-family:ScalySansRemake Dummy Text}}`
},
{
name : 'Book Insanity Remake',
name : 'Book Insanity',
icon : 'font BookInsanityRemake',
gen : dedent`{{font-family:BookInsanityRemake Dummy Text}}`
},
{
name : 'Mr Eaves Remake',
name : 'Mr Eaves',
icon : 'font MrEavesRemake',
gen : dedent`{{font-family:MrEavesRemake Dummy Text}}`
},
{
name: 'Solbera Imitation Remake',
name: 'Solbera Imitation',
icon: 'font SolberaImitationRemake',
gen: dedent`{{font-family:SolberaImitationRemake Dummy Text}}`
},
{
name: 'Scaly Sans Small Caps Remake',
name: 'Scaly Sans Small Caps',
icon: 'font ScalySansSmallCapsRemake',
gen: dedent`{{font-family:ScalySansSmallCapsRemake Dummy Text}}`
},

View File

@@ -1,6 +1,6 @@
@import (less) './themes/fonts/5e/fonts.less';
@import (less) './themes/assets/assets.less';
@import (less) './themes/fonts/icon fonts/dicefont.less';
@import (less) './themes/fonts/icon fonts/diceFont.less';
:root {
//Colors

View File

@@ -1,9 +1,9 @@
/* Icon Font: dicefont */
/* Icon Font: diceFont */
@font-face {
font-family : 'DiceFont';
font-style : normal;
font-weight : normal;
src : url('../../../fonts/icon fonts/dicefont.woff2');
src : url('../../../fonts/icon fonts/diceFont.woff2');
}
.df {