From f08b6e4a18374c1aa097f81b848d7dedb93cb07d Mon Sep 17 00:00:00 2001 From: Dan Beneventano Date: Wed, 21 Jul 2021 19:21:56 -0400 Subject: [PATCH] Light theme improvements, upgrade dependencies, upgrade to apollo server 3, v0.0.100 --- electron/package.json | 2 +- package.json | 10 +- server/package.json | 34 +- server/src/bootstrap.ts | 21 +- web/package.json | 16 +- web/src/components/BottomBar.jsx | 4 +- web/src/components/comment/Comment.jsx | 18 +- .../components/comment/CreateCommentCard.jsx | 4 +- web/src/components/message/Message.jsx | 19 +- .../components/message/input/MessageInput.jsx | 14 +- web/src/components/post/Post.jsx | 12 +- web/src/components/post/Posts.jsx | 2 +- .../post/create/CreatePostDialog.jsx | 10 +- .../post/create/CreatePostHeader.jsx | 4 +- web/src/components/server/list/ServerList.jsx | 25 +- web/src/components/ui/editor/Editor.jsx | 2 +- web/src/components/ui/sidebar/Sidebar.jsx | 62 +- web/src/components/ui/sidebar/SidebarItem.jsx | 8 +- web/src/pages/server/ServerSidebar.jsx | 2 +- web/tailwind.config.js | 62 +- yarn.lock | 1041 +++++++---------- 21 files changed, 598 insertions(+), 774 deletions(-) diff --git a/electron/package.json b/electron/package.json index 1c75a9df..025d47fa 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,7 +1,7 @@ { "name": "electron", "description": "All-in-one chat and forums for communities.", - "version": "0.0.99", + "version": "0.0.100", "private": true, "repository": "github:joincomet/comet", "homepage": "https://joincomet.app", diff --git a/package.json b/package.json index 527476a8..2fec885d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "comet", - "version": "0.0.99", + "version": "0.0.100", "private": true, "license": "MPL-2.0", "author": { @@ -32,12 +32,12 @@ "@graphql-codegen/typescript": "^1.23.0", "@graphql-codegen/typescript-operations": "^1.18.4", "@graphql-codegen/typescript-react-apollo": "^2.3.1", - "@types/node": "^16.3.2", - "@typescript-eslint/eslint-plugin": "^4.28.3", - "@typescript-eslint/parser": "^4.28.3", + "@types/node": "^16.4.0", + "@typescript-eslint/eslint-plugin": "^4.28.4", + "@typescript-eslint/parser": "^4.28.4", "concurrently": "^6.2.0", "cross-env": "^7.0.3", - "eslint": "^7.30.0", + "eslint": "^7.31.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", "prettier": "^2.3.2", diff --git a/server/package.json b/server/package.json index 5f9e3962..c813a58f 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "server", - "version": "0.0.99", + "version": "0.0.100", "private": true, "engines": { "node": "16.x.x" @@ -18,9 +18,9 @@ "@n1ru4l/graphql-live-query": "^0.7.1", "@n1ru4l/in-memory-live-query-store": "^0.6.5", "add": "^2.0.6", - "apollo-server-express": "^2.25.2", + "apollo-server-express": "^3.0.2", "argon2": "^0.28.2", - "aws-sdk": "^2.947.0", + "aws-sdk": "^2.951.0", "class-validator": "^0.13.1", "cors": "^2.8.5", "cross-env": "^7.0.3", @@ -28,7 +28,7 @@ "dayjs": "^1.10.6", "express": "^4.17.1", "faker": "^5.5.3", - "file-type": "^16.5.1", + "file-type": "^16.5.2", "got": "^11.8.2", "graphql": "^15.4.0-experimental-stream-defer.1", "graphql-redis-subscriptions": "^2.4.0", @@ -38,17 +38,17 @@ "graphql-ws": "^5.3.0", "ioredis": "^4.27.6", "jsonwebtoken": "^8.5.1", - "metascraper": "^5.22.10", - "metascraper-author": "^5.22.10", - "metascraper-clearbit": "^5.22.9", - "metascraper-date": "^5.22.9", - "metascraper-description": "^5.22.9", - "metascraper-image": "^5.22.9", - "metascraper-logo": "^5.22.9", - "metascraper-publisher": "^5.22.10", - "metascraper-title": "^5.22.9", - "metascraper-url": "^5.22.9", - "metascraper-youtube": "^5.22.9", + "metascraper": "^5.22.11", + "metascraper-author": "^5.22.11", + "metascraper-clearbit": "^5.22.11", + "metascraper-date": "^5.22.11", + "metascraper-description": "^5.22.11", + "metascraper-image": "^5.22.11", + "metascraper-logo": "^5.22.11", + "metascraper-publisher": "^5.22.11", + "metascraper-title": "^5.22.11", + "metascraper-url": "^5.22.11", + "metascraper-youtube": "^5.22.11", "mikro-orm-cache-adapter-redis": "^1.1.1", "mime": "^2.5.2", "mudder": "^1.0.10", @@ -59,7 +59,7 @@ "sharp": "^0.28.3", "type-graphql": "^1.1.1", "typescript": "^4.3.5", - "user-agents": "^1.0.713", + "user-agents": "^1.0.719", "validator": "^13.6.0", "ws": "^7.5.3", "xss": "^1.0.9" @@ -70,7 +70,7 @@ "@types/express": "^4.17.13", "@types/faker": "^5.5.7", "@types/graphql-upload": "^8.0.6", - "@types/ioredis": "^4.26.5", + "@types/ioredis": "^4.26.6", "@types/jsonwebtoken": "^8.5.4", "@types/mime": "^2.0.3", "@types/sanitize-html": "^2.3.2", diff --git a/server/src/bootstrap.ts b/server/src/bootstrap.ts index 939254e8..9de8d9dc 100644 --- a/server/src/bootstrap.ts +++ b/server/src/bootstrap.ts @@ -16,10 +16,11 @@ import cors from 'cors' import { InMemoryLiveQueryStore } from '@n1ru4l/in-memory-live-query-store' import { Disposable } from 'graphql-ws' import { seed } from '@/seed/seed' +import { createServer } from 'http' const validationRules = [...specifiedRules, NoLiveMixedWithDeferStreamRule] -const RESET = true // set TRUE to WIPE AND RESET DATABASE in dev +const RESET = false // set TRUE to WIPE AND RESET DATABASE in dev export async function bootstrap() { console.log(`Initializing database connection...`) @@ -43,7 +44,7 @@ export async function bootstrap() { const schema = await buildSchema(typeGraphQLConf) const app = express() - + const httpServer = createServer(app) app.use(cors({ origin: true })) app.use( graphqlUploadExpress({ @@ -52,7 +53,6 @@ export async function bootstrap() { }) ) const apolloServer = new ApolloServer({ - uploads: false, schema, validationRules, context: ({ req }) => { @@ -69,12 +69,13 @@ export async function bootstrap() { } as Context } }) + await apolloServer.start() apolloServer.applyMiddleware({ app }) const port = +process.env.PORT || 4000 let graphqlWs: Disposable - const server = app.listen(port, () => { + const server = httpServer.listen(port, () => { console.log(`Listening on port ${port}`) // create and use the websocket server const wsServer = new ws.Server({ @@ -118,11 +119,13 @@ export async function bootstrap() { ) }) - process.once('SIGINT', () => { - console.log('Received SIGINT. Shutting down HTTP and Websocket server.') - graphqlWs?.dispose() - server.close() - orm.close() + ;['SIGINT', 'SIGTERM'].forEach(signal => { + process.on(signal, () => { + console.log('Received SIGINT. Shutting down HTTP and Websocket server.') + graphqlWs?.dispose() + server.close() + orm.close() + }) }) await seed(orm.em.fork()) diff --git a/web/package.json b/web/package.json index ee25afcd..9d8a2229 100644 --- a/web/package.json +++ b/web/package.json @@ -1,7 +1,7 @@ { "name": "web", "description": "All-in-one chat and forums for communities.", - "version": "0.0.99", + "version": "0.0.100", "private": true, "repository": "github:joincomet/comet", "homepage": "https://joincomet.app", @@ -45,7 +45,7 @@ "fuse.js": "^6.4.6", "graphql": "^15.4.0-experimental-stream-defer.1", "graphql-ws": "^5.3.0", - "i18next": "^20.3.3", + "i18next": "^20.3.4", "i18next-browser-languagedetector": "^6.1.2", "react-contenteditable": "^3.3.5", "react-dnd": "^14.0.2", @@ -53,9 +53,9 @@ "react-dnd-touch-backend": "^14.0.0", "react-dropzone": "^11.3.4", "react-helmet-async": "^1.0.9", - "react-hook-form": "^7.11.0", + "react-hook-form": "^7.11.1", "react-hot-toast": "^2.0.0", - "react-i18next": "^11.11.2", + "react-i18next": "^11.11.3", "react-icons": "^4.2.0", "react-intersection-observer": "^8.32.0", "react-player": "^2.9.0", @@ -66,7 +66,7 @@ "react-twitter-widgets": "^1.10.0", "react-use": "^17.2.4", "react-virtual": "^2.8.0", - "react-virtuoso": "^1.9.3", + "react-virtuoso": "^1.9.6", "react-youtube": "^7.13.1", "tippy.js": "^6.3.1", "twemoji": "^13.1.0", @@ -91,14 +91,14 @@ "graphiql": "^1.4.2", "graphql-tag": "^2.12.5", "meros": "^1.1.4", - "postcss": "^8.3.5", + "postcss": "^8.3.6", "react": "^17.0.2", "react-dom": "^17.0.2", "sass": "^1.35.2", "string-hash": "^1.1.3", "tailwind-scrollbar": "^1.3.1", - "tailwindcss": "^2.2.4", - "vite": "^2.4.2", + "tailwindcss": "^2.2.6", + "vite": "^2.4.3", "vite-plugin-pwa": "^0.8.1" }, "resolutions": { diff --git a/web/src/components/BottomBar.jsx b/web/src/components/BottomBar.jsx index cfc0b7ca..a7effd96 100644 --- a/web/src/components/BottomBar.jsx +++ b/web/src/components/BottomBar.jsx @@ -172,13 +172,13 @@ export default function BottomBar() { <> - +
setOpen(true)}> - +
diff --git a/web/src/components/comment/Comment.jsx b/web/src/components/comment/Comment.jsx index c32ebf93..3d48d502 100644 --- a/web/src/components/comment/Comment.jsx +++ b/web/src/components/comment/Comment.jsx @@ -46,11 +46,11 @@ export default function Comment({ ]) const isReplying = replyingCommentId === comment.id - if(comment.isDeleted && !comment.childCount) return null + if (comment.isDeleted && !comment.childCount) return null return (
@@ -66,7 +66,11 @@ export default function Comment({ @@ -74,7 +78,7 @@ export default function Comment({
- {comment.author?.username ?? [deleted]} + {comment.author?.username ?? ( + [deleted] + )}
@@ -265,7 +271,7 @@ export default function Comment({
{!collapse && - comment.childComments.map((childComment) => ( + comment.childComments.map(childComment => ( setOpen(true)} - className="dark:bg-gray-700 h-13 flex items-center rounded transition dark:hover:bg-gray-650 cursor-pointer bg-gray-50" + className="dark:bg-gray-700 h-13 flex items-center rounded transition dark:hover:bg-gray-650 cursor-pointer bg-gray-200" >
@@ -24,7 +24,7 @@ export default function CreateCommentCard({ postId }) {
) : ( -
+
diff --git a/web/src/components/message/Message.jsx b/web/src/components/message/Message.jsx index d412e2ca..49b9936c 100644 --- a/web/src/components/message/Message.jsx +++ b/web/src/components/message/Message.jsx @@ -39,11 +39,6 @@ export default memo(function Message({ [message] ) - const showUser = - index === 0 || - (prevMessage && - (!prevMessage.text || prevMessage.author.id !== message.author.id)) - const day = Math.floor( new Date(message.createdAt).getTime() / (1000 * 60 * 60 * 24) ) @@ -54,6 +49,12 @@ export default memo(function Message({ ) : null + const showUser = + index === 0 || + (prevMessage && + (!prevMessage.text || prevMessage.author.id !== message.author.id)) || + day > prevDay + if (message.type === MessageType.Initial) { return } @@ -92,7 +93,7 @@ export default memo(function Message({ }} > - + {message.author.username} @@ -111,9 +112,9 @@ export default memo(function Message({ return (
{day > prevDay && ( -
-
- +
+
+ {format(new Date(message.createdAt), 'MMMM d, y')}
diff --git a/web/src/components/message/input/MessageInput.jsx b/web/src/components/message/input/MessageInput.jsx index 00410605..e0b54db4 100644 --- a/web/src/components/message/input/MessageInput.jsx +++ b/web/src/components/message/input/MessageInput.jsx @@ -210,7 +210,13 @@ export default function MessageInput({ channel, server, group, user, users }) { return () => { instance.destroy() } - }, [canSendMessage, placeholder, variables?.channelId, variables?.groupId, variables?.userId]) + }, [ + canSendMessage, + placeholder, + variables?.channelId, + variables?.groupId, + variables?.userId + ]) // const editor = useEditor(editorOptions) @@ -394,11 +400,9 @@ export default function MessageInput({ channel, server, group, user, users }) { }} className={`${canSendMessage ? 'px-14' : 'px-4 opacity-50'} ${ currentUser ? '' : 'cursor-pointer' - } min-h-[3rem] max-h-[20rem] overflow-y-auto scrollbar-light dark:bg-gray-700 py-3 w-full rounded-lg text-base focus:outline-none text-secondary border-none bg-gray-100`} + } min-h-[3rem] max-h-[20rem] overflow-y-auto scrollbar-light dark:bg-gray-700 py-3 w-full rounded-lg text-base focus:outline-none text-secondary border-none bg-gray-200`} > - {!editor?.isDestroyed && ( - - )} + {!editor?.isDestroyed && }
diff --git a/web/src/components/post/Post.jsx b/web/src/components/post/Post.jsx index 3c75ed79..dc1ca9ac 100644 --- a/web/src/components/post/Post.jsx +++ b/web/src/components/post/Post.jsx @@ -79,7 +79,7 @@ export default memo(function Post({
{ if (!isDragging) { push(post.relativeUrl) @@ -111,7 +111,7 @@ export default memo(function Post({ className={`focus:outline-none p-1 rounded-full dark:hover:bg-gray-750 transition cursor-pointer hover:bg-gray-200 ${ post.voteType === VoteType.Up ? 'text-red-400' : 'text-mid' }`} - onClick={(e) => { + onClick={e => { e.stopPropagation() e.preventDefault() if (!currentUser) { @@ -162,7 +162,7 @@ export default memo(function Post({ className={`focus:outline-none p-1 rounded-full dark:hover:bg-gray-750 transition cursor-pointer ${ post.voteType === VoteType.Down ? 'text-blue-400' : 'text-mid' }`} - onClick={(e) => { + onClick={e => { e.stopPropagation() e.preventDefault() if (!currentUser) { @@ -205,7 +205,7 @@ export default memo(function Post({ {!isPostPage && (
-
+
{post.title}
diff --git a/web/src/components/post/Posts.jsx b/web/src/components/post/Posts.jsx index 1b2008d2..ea44cd65 100644 --- a/web/src/components/post/Posts.jsx +++ b/web/src/components/post/Posts.jsx @@ -26,7 +26,7 @@ export default function Posts({ folderId, serverId, showServerName, header }) { return ( <> header : null, Footer: () => diff --git a/web/src/components/post/create/CreatePostDialog.jsx b/web/src/components/post/create/CreatePostDialog.jsx index e38b8fd4..629102d0 100644 --- a/web/src/components/post/create/CreatePostDialog.jsx +++ b/web/src/components/post/create/CreatePostDialog.jsx @@ -64,10 +64,10 @@ const tabClass = active => h-12 border-b-2 dark:hover:bg-gray-775 - hover:bg-gray-100 + hover:bg-gray-200 ${ active - ? 'dark:border-gray-100 text-primary dark:bg-gray-775 bg-gray-50' + ? 'dark:border-gray-100 text-primary dark:bg-gray-775 bg-gray-200' : 'border-transparent text-tertiary' } flex @@ -84,7 +84,7 @@ const titleClass = ctl(` h-10 placeholder-tertiary dark:bg-gray-750 - bg-gray-50 + bg-gray-100 rounded text-sm text-primary @@ -330,7 +330,7 @@ export default function CreatePostDialog({ open, setOpen, serverId }) { !url || isURL(url) })} @@ -439,7 +439,7 @@ export default function CreatePostDialog({ open, setOpen, serverId }) { { if ( diff --git a/web/src/components/post/create/CreatePostHeader.jsx b/web/src/components/post/create/CreatePostHeader.jsx index 52744753..ad4dff10 100644 --- a/web/src/components/post/create/CreatePostHeader.jsx +++ b/web/src/components/post/create/CreatePostHeader.jsx @@ -15,9 +15,9 @@ export default function CreatePostHeader({ server }) {
setOpen(true)} - className="dark:bg-gray-700 h-13 flex items-center rounded transition dark:hover:bg-gray-650 cursor-pointer bg-gray-50" + className="dark:bg-gray-700 h-13 flex items-center rounded transition dark:hover:bg-gray-650 cursor-pointer bg-gray-200 hover:bg-gray-300" > -
+
diff --git a/web/src/components/server/list/ServerList.jsx b/web/src/components/server/list/ServerList.jsx index 72dcc704..8d67071f 100644 --- a/web/src/components/server/list/ServerList.jsx +++ b/web/src/components/server/list/ServerList.jsx @@ -20,7 +20,7 @@ import { useState } from 'react' import Dialog from '@/components/ui/dialog/Dialog' import StyledDialog from '@/components/ui/dialog/StyledDialog' import ShowPasswordButton from '@/components/ui/ShowPasswordButton' -import CountBadge from "@/components/ui/CountBadge"; +import CountBadge from '@/components/ui/CountBadge' export default function ServerList({ hide = false }) { const { pathname } = useLocation() @@ -43,7 +43,9 @@ export default function ServerList({ hide = false }) { return ( <>
{isMac &&
}
@@ -107,13 +109,14 @@ function ServerListServer({ server }) { server, permissions: [ServerPermission.PrivateChannels] }) - const channels = (server.channels ?? []) - .filter(channel => - channel.type === ChannelType.Private ? canViewPrivateChannels : true - ) - const unread = !!channels - .find(c => c.isUnread) - const mentionCount = channels.length > 0 ? channels.map(c => c.mentionCount).reduce((acc, cur) => acc + cur) : 0 + const channels = (server.channels ?? []).filter(channel => + channel.type === ChannelType.Private ? canViewPrivateChannels : true + ) + const unread = !!channels.find(c => c.isUnread) + const mentionCount = + channels.length > 0 + ? channels.map(c => c.mentionCount).reduce((acc, cur) => acc + cur) + : 0 const active = serverName === server.name const [deleteOpen, setDeleteOpen] = useState(false) @@ -134,9 +137,7 @@ function ServerListServer({ server }) { }} > +
diff --git a/web/src/components/ui/sidebar/Sidebar.jsx b/web/src/components/ui/sidebar/Sidebar.jsx index 418adf68..e161b50a 100644 --- a/web/src/components/ui/sidebar/Sidebar.jsx +++ b/web/src/components/ui/sidebar/Sidebar.jsx @@ -1,6 +1,6 @@ -import ctl from "@netlify/classnames-template-literals"; -import {useStore} from "@/hooks/useStore"; -import ServerList from "@/components/server/list/ServerList"; +import ctl from '@netlify/classnames-template-literals' +import { useStore } from '@/hooks/useStore' +import ServerList from '@/components/server/list/ServerList' import { motion, AnimatePresence } from 'framer-motion' const sidebarClass = ctl(` @@ -11,14 +11,15 @@ const sidebarClass = ctl(` md:translate-x-0 top-0 bottom-0 - bg-gray-50 + bg-gray-200 dark:bg-gray-800 transform z-50 md:z-0 `) -const leftClass = show => ctl(` +const leftClass = show => + ctl(` left-0 md:rounded-tl-lg ${show ? 'translate-x-0' : '-translate-x-full md:translate-x-0'} @@ -29,7 +30,8 @@ const leftClass = show => ctl(` min-w-[19.5rem] `) -const rightClass = show => ctl(` +const rightClass = show => + ctl(` right-0 ${show ? 'translate-x-0' : 'translate-x-full'} ${show ? 'md:block' : 'md:hidden'} @@ -47,35 +49,53 @@ const overlayClass = ctl(` `) export default function Sidebar({ children, right = false }) { - const [showLeftSidebar, setShowLeftSidebar, showRightSidebar, setShowRightSidebar] = useStore(s => [s.showLeftSidebar, s.setShowLeftSidebar, s.showRightSidebar, s.setShowRightSidebar]) + const [ + showLeftSidebar, + setShowLeftSidebar, + showRightSidebar, + setShowRightSidebar + ] = useStore(s => [ + s.showLeftSidebar, + s.setShowLeftSidebar, + s.showRightSidebar, + s.setShowRightSidebar + ]) return ( <> {(right ? showRightSidebar : showLeftSidebar) && ( { - if (right && showRightSidebar) setShowRightSidebar(false) - else if (!right && showLeftSidebar) setShowLeftSidebar(false) - }} /> + initial={{ opacity: 0 }} + animate={{ opacity: 0.75 }} + exit={{ opacity: 0 }} + transition={{ duration: 0.15, ease: [0.4, 0, 0.2, 1] }} + className={overlayClass} + onClick={() => { + if (right && showRightSidebar) setShowRightSidebar(false) + else if (!right && showLeftSidebar) setShowLeftSidebar(false) + }} + /> )}
{!right && ( -
setShowLeftSidebar(false)}> +
setShowLeftSidebar(false)} + >
)} -
{ - if (!right) setShowLeftSidebar(false) - }} +
{ + if (!right) setShowLeftSidebar(false) + }} > {children}
diff --git a/web/src/components/ui/sidebar/SidebarItem.jsx b/web/src/components/ui/sidebar/SidebarItem.jsx index 8a9f4dd6..7c48a84a 100644 --- a/web/src/components/ui/sidebar/SidebarItem.jsx +++ b/web/src/components/ui/sidebar/SidebarItem.jsx @@ -18,8 +18,8 @@ const className = (large, small, light) => w-full ${ light - ? 'dark:hover:bg-gray-725 dark:active:bg-gray-725 hover:bg-gray-200' - : 'dark:hover:bg-gray-775 dark:active:bg-gray-775 hover:bg-gray-200' + ? 'dark:hover:bg-gray-725 dark:active:bg-gray-725 hover:bg-gray-300 active:bg-gray-300' + : 'dark:hover:bg-gray-775 dark:active:bg-gray-775 hover:bg-gray-300 active:bg-gray-300' } text-gray-600 dark:text-gray-400 @@ -38,8 +38,8 @@ const activeClassName = light => dark:hover:text-gray-200 ${ light - ? `dark:bg-gray-700 dark:hover:bg-gray-700 bg-gray-200` - : `dark:bg-gray-750 dark:hover:bg-gray-750 bg-gray-200` + ? `dark:bg-gray-700 dark:hover:bg-gray-700 bg-gray-300` + : `dark:bg-gray-750 dark:hover:bg-gray-750 bg-gray-300` } `) diff --git a/web/src/pages/server/ServerSidebar.jsx b/web/src/pages/server/ServerSidebar.jsx index abe9685f..8840c740 100644 --- a/web/src/pages/server/ServerSidebar.jsx +++ b/web/src/pages/server/ServerSidebar.jsx @@ -97,7 +97,7 @@ export default function ServerSidebar() { )}
-
+
= 19.0.0" react: ">= 16.8.0" - checksum: a0c361c3c1f2a4a67387a2e8c0525a03dfbacd744dda0efbce598b2078a2e872d1ccca45aabc495b87b1afe6502069dd1af77de96902450f7c69eb060d929622 + checksum: 2559aa67ede6e577fa4c8deafebb50e8c9c46bf9b47779079e363d5c598d28afac25c358cf74e4124ff6b390c3a6cdf172c54fd3cb4d3127e58ba214d9f6d25c languageName: node linkType: hard @@ -14887,16 +14766,16 @@ fsevents@~2.3.2: languageName: node linkType: hard -"react-virtuoso@npm:^1.9.3": - version: 1.9.3 - resolution: "react-virtuoso@npm:1.9.3" +"react-virtuoso@npm:^1.9.6": + version: 1.9.6 + resolution: "react-virtuoso@npm:1.9.6" dependencies: "@virtuoso.dev/react-urx": ^0.2.5 "@virtuoso.dev/urx": ^0.2.5 resize-observer-polyfill: ^1.5.1 peerDependencies: react: ">=16" - checksum: 8766d9168f5d3d55979735369ecd39efabf192195b2f576f33dabb7affeba5106130df4355340e05700a49b82144099ce88fbebab0d841d4d5c73f5ccd559ca6 + checksum: aa3b031239862c42990c9a583eb3e322435a70bcfd9059b643f8efc157339af3e27693f97aeacb3d5161e5f838aaaf74c91bfc53a8c8aefc5da3568884ea4d8e languageName: node linkType: hard @@ -15890,16 +15769,16 @@ resolve@^2.0.0-next.3: "@types/express": ^4.17.13 "@types/faker": ^5.5.7 "@types/graphql-upload": ^8.0.6 - "@types/ioredis": ^4.26.5 + "@types/ioredis": ^4.26.6 "@types/jsonwebtoken": ^8.5.4 "@types/mime": ^2.0.3 "@types/sanitize-html": ^2.3.2 "@types/sharp": ^0.28.4 "@types/user-agents": ^1.0.2 add: ^2.0.6 - apollo-server-express: ^2.25.2 + apollo-server-express: ^3.0.2 argon2: ^0.28.2 - aws-sdk: ^2.947.0 + aws-sdk: ^2.951.0 class-validator: ^0.13.1 cors: ^2.8.5 cross-env: ^7.0.3 @@ -15907,7 +15786,7 @@ resolve@^2.0.0-next.3: dayjs: ^1.10.6 express: ^4.17.1 faker: ^5.5.3 - file-type: ^16.5.1 + file-type: ^16.5.2 got: ^11.8.2 graphql: ^15.4.0-experimental-stream-defer.1 graphql-redis-subscriptions: ^2.4.0 @@ -15917,17 +15796,17 @@ resolve@^2.0.0-next.3: graphql-ws: ^5.3.0 ioredis: ^4.27.6 jsonwebtoken: ^8.5.1 - metascraper: ^5.22.10 - metascraper-author: ^5.22.10 - metascraper-clearbit: ^5.22.9 - metascraper-date: ^5.22.9 - metascraper-description: ^5.22.9 - metascraper-image: ^5.22.9 - metascraper-logo: ^5.22.9 - metascraper-publisher: ^5.22.10 - metascraper-title: ^5.22.9 - metascraper-url: ^5.22.9 - metascraper-youtube: ^5.22.9 + metascraper: ^5.22.11 + metascraper-author: ^5.22.11 + metascraper-clearbit: ^5.22.11 + metascraper-date: ^5.22.11 + metascraper-description: ^5.22.11 + metascraper-image: ^5.22.11 + metascraper-logo: ^5.22.11 + metascraper-publisher: ^5.22.11 + metascraper-title: ^5.22.11 + metascraper-url: ^5.22.11 + metascraper-youtube: ^5.22.11 mikro-orm-cache-adapter-redis: ^1.1.1 mime: ^2.5.2 mudder: ^1.0.10 @@ -15941,7 +15820,7 @@ resolve@^2.0.0-next.3: tsconfig-paths: ^3.10.1 type-graphql: ^1.1.1 typescript: ^4.3.5 - user-agents: ^1.0.713 + user-agents: ^1.0.719 validator: ^13.6.0 ws: ^7.5.3 xss: ^1.0.9 @@ -16719,14 +16598,13 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"strtok3@npm:^6.0.3": - version: 6.0.8 - resolution: "strtok3@npm:6.0.8" +"strtok3@npm:6.1.3": + version: 6.1.3 + resolution: "strtok3@npm:6.1.3" dependencies: "@tokenizer/token": ^0.1.1 - "@types/debug": ^4.1.5 - peek-readable: ^3.1.3 - checksum: 3109c9317923b5927e6c476f76ec75b8a5ec7e10c1139fd200f2b398e0293fbaea49e52db8a92548c3b857776de2b1abf69f4cdcc4d23ab69f1599e59044b7a1 + peek-readable: ^3.1.4 + checksum: b030b0e1233eb67f73b340301589d39c2f94cbbc353beedf2f9d2ef8a7a0ec9d01ca89b80aafa1cf443c1446d3d5958d051f6e8e69390b95db02e7e08588e050 languageName: node linkType: hard @@ -16762,21 +16640,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"subscriptions-transport-ws@npm:^0.9.19": - version: 0.9.19 - resolution: "subscriptions-transport-ws@npm:0.9.19" - dependencies: - backo2: ^1.0.2 - eventemitter3: ^3.1.0 - iterall: ^1.2.1 - symbol-observable: ^1.0.4 - ws: ^5.2.0 || ^6.0.0 || ^7.0.0 - peerDependencies: - graphql: ">=0.10.0" - checksum: d305b2d9db46070edcbadca257df725d241253141d1a1ff019b47ba0f650678b4419e598bdda410d49913ffc2eb76695f4ae8e9cbf8b8cd124f057143a9250b7 - languageName: node - linkType: hard - "sumchecker@npm:^3.0.1": version: 3.0.1 resolution: "sumchecker@npm:3.0.1" @@ -16924,21 +16787,20 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"tailwindcss@npm:^2.2.4": - version: 2.2.4 - resolution: "tailwindcss@npm:2.2.4" +"tailwindcss@npm:^2.2.6": + version: 2.2.6 + resolution: "tailwindcss@npm:2.2.6" dependencies: - "@fullhuman/postcss-purgecss": ^4.0.3 arg: ^5.0.0 bytes: ^3.0.0 chalk: ^4.1.1 chokidar: ^3.5.2 - color: ^3.1.3 + color: ^3.2.0 cosmiconfig: ^7.0.0 detective: ^5.2.0 - didyoumean: ^1.2.1 + didyoumean: ^1.2.2 dlv: ^1.1.3 - fast-glob: ^3.2.5 + fast-glob: ^3.2.7 fs-extra: ^10.0.0 glob-parent: ^6.0.0 html-tags: ^3.1.0 @@ -16955,6 +16817,7 @@ resolve@^2.0.0-next.3: postcss-selector-parser: ^6.0.6 postcss-value-parser: ^4.1.0 pretty-hrtime: ^1.0.3 + purgecss: ^4.0.3 quick-lru: ^5.1.1 reduce-css-calc: ^2.1.8 resolve: ^1.20.0 @@ -16965,7 +16828,7 @@ resolve@^2.0.0-next.3: bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: e48ad9747ac3082bd46df0a70d839818ecff5033ffd89f785bb4fb399046a49feb2a2a9c7f79468d4728d5edad29b9c453c3b723d6da0e0331e4db4d48b0bd03 + checksum: 61bf4028f419e9c496e53521cd18bb727cb27c9bf932958a15c320041e5c4d5572e8adf44513bb9b11bd3015719784bc7ffca1995a9208dec6d4eb06a4c91961 languageName: node linkType: hard @@ -17239,13 +17102,13 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"token-types@npm:^2.0.0": - version: 2.1.1 - resolution: "token-types@npm:2.1.1" +"token-types@npm:^3.0.0": + version: 3.1.0 + resolution: "token-types@npm:3.1.0" dependencies: "@tokenizer/token": ^0.1.1 ieee754: ^1.2.1 - checksum: bd57cce67c87f62f4902bd0a51066b2a98ec4397c9f54438f620d3dcf2c838fa0387690865bd8764d67211da46dd46a4bee070af923ed11d31fd2f565030687b + checksum: 53dcc9293e8551ae662b0cc6c4d2ebeb883baa25ac44242f2cfc96eea9de364a0bfe2d7eb7f8230de73c0c1faba1349212082546d465779f53b89c943f3add3e languageName: node linkType: hard @@ -17320,15 +17183,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"ts-invariant@npm:^0.4.0": - version: 0.4.4 - resolution: "ts-invariant@npm:0.4.4" - dependencies: - tslib: ^1.9.3 - checksum: 0280fb0e853db923605d84d83a7587342b2fcf718af5eac858cc461fcaa95837543de5f6d0a9afd8caf84faa01ffcc2a21cf71f5f51894d3e854b8a9504786bc - languageName: node - linkType: hard - "ts-invariant@npm:^0.8.0, ts-invariant@npm:^0.8.2": version: 0.8.2 resolution: "ts-invariant@npm:0.8.2" @@ -17338,6 +17192,15 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard +"ts-is-defined@npm:^1.0.0": + version: 1.0.0 + resolution: "ts-is-defined@npm:1.0.0" + dependencies: + ts-tiny-invariant: 0.0.3 + checksum: b57a18dadbd7da706e178edc27e3bd71999efb409fb7bff9de1652d729117bfb52d7bed940a47c6974b9f27569ecafc92d56870316fa487d14346b70b9b63fe3 + languageName: node + linkType: hard + "ts-log@npm:^2.2.3": version: 2.2.3 resolution: "ts-log@npm:2.2.3" @@ -17427,6 +17290,13 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard +"ts-tiny-invariant@npm:0.0.3": + version: 0.0.3 + resolution: "ts-tiny-invariant@npm:0.0.3" + checksum: 3e4d39c1b42662e3a75a06b859356bfb858318afe10f3a23ad14d01ebd5ec3de566883c7f10cd170b6e34313193ab6dd8aa4b8da7eb33370f21e6e868161e244 + languageName: node + linkType: hard + "tsconfig-paths@npm:^3.10.1": version: 3.10.1 resolution: "tsconfig-paths@npm:3.10.1" @@ -17450,7 +17320,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"tslib@npm:^1.10.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": +"tslib@npm:^1.10.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: f44fe7f216946b17d3e3074df3746372703cf24e9127b4c045511456e8e4bf25515fb0a1bb3937676cc305651c5d4fcb6377b0588a4c6a957e748c4c28905d17 @@ -17643,7 +17513,7 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"type-is@npm:^1.6.16, type-is@npm:~1.6.17, type-is@npm:~1.6.18": +"type-is@npm:~1.6.17, type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" dependencies: @@ -18011,13 +17881,13 @@ typescript@^4.3.5: languageName: node linkType: hard -"user-agents@npm:^1.0.713": - version: 1.0.713 - resolution: "user-agents@npm:1.0.713" +"user-agents@npm:^1.0.719": + version: 1.0.719 + resolution: "user-agents@npm:1.0.719" dependencies: dot-json: ^1.2.2 lodash.clonedeep: ^4.5.0 - checksum: a77692123d7543ee6cf46d5bc3f8b0eed3b448f3486bc2fd0160a90b30588997ceaa1f09f40727db5a0ae922807aefddad5070cfeb676d2c781a37902b7bb491 + checksum: 9672cf31488c6b00eeb9b0e0033b7cc7bfa1446199bd74106cea0d0793f0ba8e0c09094e820236fe4b9978153dc162c9a85e54efa0ac75eb192d04fa15d78368 languageName: node linkType: hard @@ -18035,19 +17905,6 @@ typescript@^4.3.5: languageName: node linkType: hard -"util.promisify@npm:^1.0.0": - version: 1.1.1 - resolution: "util.promisify@npm:1.1.1" - dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - for-each: ^0.3.3 - has-symbols: ^1.0.1 - object.getownpropertydescriptors: ^2.1.1 - checksum: 5a6c33c88de7cea4fa313fc31f6d594d41fd75dbd27ced41f87763fd7972c4b618feb5478ce47fed6ff2d681b1157eeae966b22e290c4834714d526280408304 - languageName: node - linkType: hard - "utils-merge@npm:1.0.1": version: 1.0.1 resolution: "utils-merge@npm:1.0.1" @@ -18064,7 +17921,7 @@ typescript@^4.3.5: languageName: node linkType: hard -"uuid@npm:^3.1.0, uuid@npm:^3.3.2": +"uuid@npm:^3.3.2": version: 3.4.0 resolution: "uuid@npm:3.4.0" bin: @@ -18136,6 +17993,13 @@ typescript@^4.3.5: languageName: node linkType: hard +"value-or-promise@npm:1.0.6": + version: 1.0.6 + resolution: "value-or-promise@npm:1.0.6" + checksum: ea5fa311aad0c6f63feccb6891e162f847e9bb2b257813eef8fc945f9e48b3df5fe7402227309171f0b096b6c2d17e163d6384ec3de819f49743537bde078699 + languageName: node + linkType: hard + "vary@npm:^1, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" @@ -18177,9 +18041,9 @@ typescript@^4.3.5: languageName: node linkType: hard -"vite@npm:^2.4.2": - version: 2.4.2 - resolution: "vite@npm:2.4.2" +"vite@npm:^2.4.3": + version: 2.4.3 + resolution: "vite@npm:2.4.3" dependencies: esbuild: ^0.12.8 fsevents: ~2.3.2 @@ -18191,7 +18055,7 @@ typescript@^4.3.5: optional: true bin: vite: bin/vite.js - checksum: 59949bfcc490ffcc499dcd4a93cb56b2d8aa0b2063cf1f1e83aaa9a38cd11de59e1acd987bfec2542c68da886bd82d63b7539f538824b16260875178e260b8b7 + checksum: 36d37053ddf10312efea5a1cc0bdb494b24036f38f098277d258253ce4fbfdee0c02a4316996967a6a178eca6f508e95134971af8d90f9808676f57fc7b4ee34 languageName: node linkType: hard @@ -18287,10 +18151,10 @@ typescript@^4.3.5: graphql: ^15.4.0-experimental-stream-defer.1 graphql-tag: ^2.12.5 graphql-ws: ^5.3.0 - i18next: ^20.3.3 + i18next: ^20.3.4 i18next-browser-languagedetector: ^6.1.2 meros: ^1.1.4 - postcss: ^8.3.5 + postcss: ^8.3.6 react: ^17.0.2 react-contenteditable: ^3.3.5 react-dnd: ^14.0.2 @@ -18299,9 +18163,9 @@ typescript@^4.3.5: react-dom: ^17.0.2 react-dropzone: ^11.3.4 react-helmet-async: ^1.0.9 - react-hook-form: ^7.11.0 + react-hook-form: ^7.11.1 react-hot-toast: ^2.0.0 - react-i18next: ^11.11.2 + react-i18next: ^11.11.3 react-icons: ^4.2.0 react-intersection-observer: ^8.32.0 react-player: ^2.9.0 @@ -18312,18 +18176,18 @@ typescript@^4.3.5: react-twitter-widgets: ^1.10.0 react-use: ^17.2.4 react-virtual: ^2.8.0 - react-virtuoso: ^1.9.3 + react-virtuoso: ^1.9.6 react-youtube: ^7.13.1 sass: ^1.35.2 string-hash: ^1.1.3 tailwind-scrollbar: ^1.3.1 - tailwindcss: ^2.2.4 + tailwindcss: ^2.2.6 tippy.js: ^6.3.1 twemoji: ^13.1.0 typescript: ^4.3.5 use-dark-mode: ^2.3.1 validator: ^13.6.0 - vite: ^2.4.2 + vite: ^2.4.3 vite-plugin-pwa: ^0.8.1 zustand: ^3.5.7 languageName: unknown @@ -18767,21 +18631,6 @@ typescript@^4.3.5: languageName: node linkType: hard -"ws@npm:^5.2.0 || ^6.0.0 || ^7.0.0": - version: 7.4.6 - resolution: "ws@npm:7.4.6" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: ffeb626d92f14aa3a67aa3784824c1d290131e25d225f4ca6b1b6b6d7ea754fca67694d89a5b99b144382365e1bccf1f7ec2f92df56f0d25f44939b070452f06 - languageName: node - linkType: hard - "ws@npm:^7.5.3": version: 7.5.3 resolution: "ws@npm:7.5.3" @@ -19016,17 +18865,7 @@ typescript@^4.3.5: languageName: node linkType: hard -"zen-observable-ts@npm:^0.8.21": - version: 0.8.21 - resolution: "zen-observable-ts@npm:0.8.21" - dependencies: - tslib: ^1.9.3 - zen-observable: ^0.8.0 - checksum: 031ac9c2441a9b2d388417ab402e759fcb72e74c926ecd2500708da309c54e4ecad2c3d1ce85f039d30f670fca092facd21f3e25d6dba5c055504eb08012acb0 - languageName: node - linkType: hard - -"zen-observable@npm:^0.8.0, zen-observable@npm:^0.8.14": +"zen-observable@npm:^0.8.14": version: 0.8.15 resolution: "zen-observable@npm:0.8.15" checksum: 7d155f8a75b9314f9f31e70a31edcd897b0e8a1313737502ab84a573e49d2c333b738e415c156334a6e910c363ce546b59fa7921eff61440285caa99c843df74