From b91c3ede1e106d222b03277f9fb880493ccfc7c5 Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Tue, 23 Apr 2024 22:07:00 +0100 Subject: [PATCH] fixes * fix comments * fix page history * fix aside width on smaller screens --- .../layouts/dashboard/shell.module.css | 6 + .../components/layouts/dashboard/shell.tsx | 4 +- .../comment/components/comment-dialog.tsx | 6 +- .../comment/components/comment-list.tsx | 73 ++- .../features/comment/queries/comment-query.ts | 63 +- .../comment/services/comment-service.ts | 34 +- .../page-history/components/history-list.tsx | 114 ++-- .../queries/page-history-query.ts | 22 +- .../services/page-history-service.ts | 24 +- .../src/core/comment/comment.controller.ts | 68 ++- .../server/src/core/comment/comment.module.ts | 3 +- .../src/core/comment/comment.service.ts | 10 +- .../kysely/repos/page/page-history.repo.ts | 22 +- package.json | 56 +- pnpm-lock.yaml | 570 +++++++++--------- 15 files changed, 611 insertions(+), 464 deletions(-) diff --git a/apps/client/src/components/layouts/dashboard/shell.module.css b/apps/client/src/components/layouts/dashboard/shell.module.css index c1c3c11d..87d6618b 100644 --- a/apps/client/src/components/layouts/dashboard/shell.module.css +++ b/apps/client/src/components/layouts/dashboard/shell.module.css @@ -24,6 +24,12 @@ } } +@media (max-width: 48em) { + .aside { + width: 350px; + } +} + @media (max-width: 48em) { .navbar { width: 300px; diff --git a/apps/client/src/components/layouts/dashboard/shell.tsx b/apps/client/src/components/layouts/dashboard/shell.tsx index 4f04c0d4..fb4c952b 100644 --- a/apps/client/src/components/layouts/dashboard/shell.tsx +++ b/apps/client/src/components/layouts/dashboard/shell.tsx @@ -33,8 +33,8 @@ export default function Shell({ children }: { children: React.ReactNode }) { collapsed: { mobile: !mobileOpened, desktop: !desktopOpened }, }} aside={{ - width: 300, - breakpoint: "md", + width: 350, + breakpoint: "sm", collapsed: { mobile: !isAsideOpen, desktop: !isAsideOpen }, }} padding="md" diff --git a/apps/client/src/features/comment/components/comment-dialog.tsx b/apps/client/src/features/comment/components/comment-dialog.tsx index f73e605a..7e527bfc 100644 --- a/apps/client/src/features/comment/components/comment-dialog.tsx +++ b/apps/client/src/features/comment/components/comment-dialog.tsx @@ -57,8 +57,8 @@ function CommentDialog({ editor, pageId }: CommentDialogProps) { await createCommentMutation.mutateAsync(commentData); editor .chain() - .setContent(createdComment.id) // @ts-ignore + .setComment(createdComment.id) .unsetCommentDecoration() .run(); setActiveCommentId(createdComment.id); @@ -75,7 +75,7 @@ function CommentDialog({ editor, pageId }: CommentDialogProps) { } }; - const handleCommentEditorChange = (newContent) => { + const handleCommentEditorChange = (newContent: any) => { setComment(newContent); }; @@ -93,7 +93,7 @@ function CommentDialog({ editor, pageId }: CommentDialogProps) { > - + {currentUser.user.name.charAt(0)}
diff --git a/apps/client/src/features/comment/components/comment-list.tsx b/apps/client/src/features/comment/components/comment-list.tsx index abb8738d..866293a9 100644 --- a/apps/client/src/features/comment/components/comment-list.tsx +++ b/apps/client/src/features/comment/components/comment-list.tsx @@ -1,16 +1,24 @@ -import React, { useState, useRef } from 'react'; -import { useParams } from 'react-router-dom'; -import { Divider, Paper } from '@mantine/core'; -import CommentListItem from '@/features/comment/components/comment-list-item'; -import { useCommentsQuery, useCreateCommentMutation } from '@/features/comment/queries/comment-query'; +import React, { useState, useRef } from "react"; +import { useParams } from "react-router-dom"; +import { Divider, Paper } from "@mantine/core"; +import CommentListItem from "@/features/comment/components/comment-list-item"; +import { + useCommentsQuery, + useCreateCommentMutation, +} from "@/features/comment/queries/comment-query"; -import CommentEditor from '@/features/comment/components/comment-editor'; -import CommentActions from '@/features/comment/components/comment-actions'; -import { useFocusWithin } from '@mantine/hooks'; +import CommentEditor from "@/features/comment/components/comment-editor"; +import CommentActions from "@/features/comment/components/comment-actions"; +import { useFocusWithin } from "@mantine/hooks"; +import { IComment } from "@/features/comment/types/comment.types.ts"; function CommentList() { const { pageId } = useParams(); - const { data: comments, isLoading: isCommentsLoading, isError } = useCommentsQuery(pageId); + const { + data: comments, + isLoading: isCommentsLoading, + isError, + } = useCommentsQuery(pageId); const [isLoading, setIsLoading] = useState(false); const createCommentMutation = useCreateCommentMutation(); @@ -22,12 +30,12 @@ function CommentList() { return
Error loading comments.
; } - if (!comments || comments.length === 0) { + if (!comments || comments.items.length === 0) { return <>No comments yet.; } - const renderComments = (comment) => { - const handleAddReply = async (commentId, content) => { + const renderComments = (comment: IComment) => { + const handleAddReply = async (commentId: string, content: string) => { try { setIsLoading(true); const commentData = { @@ -38,14 +46,22 @@ function CommentList() { await createCommentMutation.mutateAsync(commentData); } catch (error) { - console.error('Failed to post comment:', error); + console.error("Failed to post comment:", error); } finally { setIsLoading(false); } }; return ( - +
@@ -53,26 +69,34 @@ function CommentList() { - + ); }; return ( <> - {comments.filter(comment => comment.parentCommentId === null).map(renderComments)} + {comments.items + .filter((comment) => comment.parentCommentId === null) + .map(renderComments)} ); } const ChildComments = ({ comments, parentId }) => { - const getChildComments = (parentId) => { - return comments.filter(comment => comment.parentCommentId === parentId); + const getChildComments = (parentId: string) => { + return comments.items.filter( + (comment: IComment) => comment.parentCommentId === parentId, + ); }; return (
- {getChildComments(parentId).map(childComment => ( + {getChildComments(parentId).map((childComment) => (
@@ -83,23 +107,26 @@ const ChildComments = ({ comments, parentId }) => { }; const CommentEditorWithActions = ({ commentId, onSave, isLoading }) => { - const [content, setContent] = useState(''); + const [content, setContent] = useState(""); const { ref, focused } = useFocusWithin(); const commentEditorRef = useRef(null); const handleSave = () => { onSave(commentId, content); - setContent(''); + setContent(""); commentEditorRef.current?.clearContent(); }; return (
- + {focused && }
); }; - export default CommentList; diff --git a/apps/client/src/features/comment/queries/comment-query.ts b/apps/client/src/features/comment/queries/comment-query.ts index 97cc0a55..67d5ed75 100644 --- a/apps/client/src/features/comment/queries/comment-query.ts +++ b/apps/client/src/features/comment/queries/comment-query.ts @@ -1,16 +1,28 @@ -import { useMutation, useQuery, useQueryClient, UseQueryResult } from '@tanstack/react-query'; +import { + useMutation, + useQuery, + useQueryClient, + UseQueryResult, +} from "@tanstack/react-query"; import { createComment, - deleteComment, getPageComments, + deleteComment, + getPageComments, resolveComment, updateComment, -} from '@/features/comment/services/comment-service'; -import { IComment, IResolveComment } from '@/features/comment/types/comment.types'; -import { notifications } from '@mantine/notifications'; +} from "@/features/comment/services/comment-service"; +import { + IComment, + IResolveComment, +} from "@/features/comment/types/comment.types"; +import { notifications } from "@mantine/notifications"; +import { IPagination } from "@/lib/types.ts"; -export const RQ_KEY = (pageId: string) => ['comments', pageId]; +export const RQ_KEY = (pageId: string) => ["comments", pageId]; -export function useCommentsQuery(pageId: string): UseQueryResult { +export function useCommentsQuery( + pageId: string, +): UseQueryResult, Error> { return useQuery({ queryKey: RQ_KEY(pageId), queryFn: () => getPageComments(pageId), @@ -27,14 +39,14 @@ export function useCreateCommentMutation() { const newComment = data; let comments = queryClient.getQueryData(RQ_KEY(data.pageId)); if (comments) { - comments = prevComments => [...prevComments, newComment]; - queryClient.setQueryData(RQ_KEY(data.pageId), comments); + // comments = prevComments => [...prevComments, newComment]; + //queryClient.setQueryData(RQ_KEY(data.pageId), comments); } - notifications.show({ message: 'Comment created successfully' }); + notifications.show({ message: "Comment created successfully" }); }, onError: (error) => { - notifications.show({ message: 'Error creating comment', color: 'red' }); + notifications.show({ message: "Error creating comment", color: "red" }); }, }); } @@ -43,10 +55,10 @@ export function useUpdateCommentMutation() { return useMutation>({ mutationFn: (data) => updateComment(data), onSuccess: (data) => { - notifications.show({ message: 'Comment updated successfully' }); + notifications.show({ message: "Comment updated successfully" }); }, onError: (error) => { - notifications.show({ message: 'Failed to update comment', color: 'red' }); + notifications.show({ message: "Failed to update comment", color: "red" }); }, }); } @@ -59,13 +71,13 @@ export function useDeleteCommentMutation(pageId?: string) { onSuccess: (data, variables) => { let comments = queryClient.getQueryData(RQ_KEY(pageId)) as IComment[]; if (comments) { - comments = comments.filter(comment => comment.id !== variables); - queryClient.setQueryData(RQ_KEY(pageId), comments); + // comments = comments.filter(comment => comment.id !== variables); + // queryClient.setQueryData(RQ_KEY(pageId), comments); } - notifications.show({ message: 'Comment deleted successfully' }); + notifications.show({ message: "Comment deleted successfully" }); }, onError: (error) => { - notifications.show({ message: 'Failed to delete comment', color: 'red' }); + notifications.show({ message: "Failed to delete comment", color: "red" }); }, }); } @@ -76,21 +88,26 @@ export function useResolveCommentMutation() { return useMutation({ mutationFn: (data: IResolveComment) => resolveComment(data), onSuccess: (data: IComment, variables) => { - - const currentComments = queryClient.getQueryData(RQ_KEY(data.pageId)) as IComment[]; + const currentComments = queryClient.getQueryData( + RQ_KEY(data.pageId), + ) as IComment[]; if (currentComments) { const updatedComments = currentComments.map((comment) => - comment.id === variables.commentId ? { ...comment, ...data } : comment, + comment.id === variables.commentId + ? { ...comment, ...data } + : comment, ); queryClient.setQueryData(RQ_KEY(data.pageId), updatedComments); } - notifications.show({ message: 'Comment resolved successfully' }); + notifications.show({ message: "Comment resolved successfully" }); }, onError: (error) => { - notifications.show({ message: 'Failed to resolve comment', color: 'red' }); + notifications.show({ + message: "Failed to resolve comment", + color: "red", + }); }, }); } - diff --git a/apps/client/src/features/comment/services/comment-service.ts b/apps/client/src/features/comment/services/comment-service.ts index b153e56f..d4bb623d 100644 --- a/apps/client/src/features/comment/services/comment-service.ts +++ b/apps/client/src/features/comment/services/comment-service.ts @@ -1,8 +1,14 @@ -import api from '@/lib/api-client'; -import { IComment, IResolveComment } from '@/features/comment/types/comment.types'; +import api from "@/lib/api-client"; +import { + IComment, + IResolveComment, +} from "@/features/comment/types/comment.types"; +import { IPagination } from "@/lib/types.ts"; -export async function createComment(data: Partial): Promise { - const req = await api.post('/comments/create', data); +export async function createComment( + data: Partial, +): Promise { + const req = await api.post("/comments/create", data); return req.data as IComment; } @@ -11,21 +17,25 @@ export async function resolveComment(data: IResolveComment): Promise { return req.data as IComment; } -export async function updateComment(data: Partial): Promise { +export async function updateComment( + data: Partial, +): Promise { const req = await api.post(`/comments/update`, data); return req.data as IComment; } -export async function getCommentById(id: string): Promise { - const req = await api.post('/comments/view', { id }); +export async function getCommentById(commentId: string): Promise { + const req = await api.post("/comments/info", { commentId }); return req.data as IComment; } -export async function getPageComments(pageId: string): Promise { - const req = await api.post('/comments', { pageId }); - return req.data as IComment[]; +export async function getPageComments( + pageId: string, +): Promise> { + const req = await api.post("/comments", { pageId }); + return req.data; } -export async function deleteComment(id: string): Promise { - await api.post('/comments/delete', { id }); +export async function deleteComment(commentId: string): Promise { + await api.post("/comments/delete", { commentId }); } diff --git a/apps/client/src/features/page-history/components/history-list.tsx b/apps/client/src/features/page-history/components/history-list.tsx index 45d15fb2..ef2c6582 100644 --- a/apps/client/src/features/page-history/components/history-list.tsx +++ b/apps/client/src/features/page-history/components/history-list.tsx @@ -1,50 +1,76 @@ -import { usePageHistoryListQuery, usePageHistoryQuery } from '@/features/page-history/queries/page-history-query'; -import { useParams } from 'react-router-dom'; -import HistoryItem from '@/features/page-history/components/history-item'; -import { activeHistoryIdAtom, historyAtoms } from '@/features/page-history/atoms/history-atoms'; -import { useAtom } from 'jotai'; -import { useCallback, useEffect } from 'react'; -import { Button, ScrollArea, Group, Divider, Text } from '@mantine/core'; -import { pageEditorAtom, titleEditorAtom } from '@/features/editor/atoms/editor-atoms'; -import { modals } from '@mantine/modals'; -import { notifications } from '@mantine/notifications'; +import { + usePageHistoryListQuery, + usePageHistoryQuery, +} from "@/features/page-history/queries/page-history-query"; +import { useParams } from "react-router-dom"; +import HistoryItem from "@/features/page-history/components/history-item"; +import { + activeHistoryIdAtom, + historyAtoms, +} from "@/features/page-history/atoms/history-atoms"; +import { useAtom } from "jotai"; +import { useCallback, useEffect } from "react"; +import { Button, ScrollArea, Group, Divider, Text } from "@mantine/core"; +import { + pageEditorAtom, + titleEditorAtom, +} from "@/features/editor/atoms/editor-atoms"; +import { modals } from "@mantine/modals"; +import { notifications } from "@mantine/notifications"; function HistoryList() { const [activeHistoryId, setActiveHistoryId] = useAtom(activeHistoryIdAtom); const { pageId } = useParams(); - const { data, isLoading, isError } = usePageHistoryListQuery(pageId); + const { + data: pageHistoryList, + isLoading, + isError, + } = usePageHistoryListQuery(pageId); const { data: activeHistoryData } = usePageHistoryQuery(activeHistoryId); const [mainEditor] = useAtom(pageEditorAtom); const [mainEditorTitle] = useAtom(titleEditorAtom); const [, setHistoryModalOpen] = useAtom(historyAtoms); - const confirmModal = () => modals.openConfirmModal({ - title: 'Please confirm your action', - children: ( - - Are you sure you want to restore this version? Any changes not versioned will be lost. - - ), - labels: { confirm: 'Confirm', cancel: 'Cancel' }, - onConfirm: handleRestore, - }); + const confirmModal = () => + modals.openConfirmModal({ + title: "Please confirm your action", + children: ( + + Are you sure you want to restore this version? Any changes not + versioned will be lost. + + ), + labels: { confirm: "Confirm", cancel: "Cancel" }, + onConfirm: handleRestore, + }); const handleRestore = useCallback(() => { if (activeHistoryData) { - mainEditorTitle.chain().clearContent().setContent(activeHistoryData.title, true).run(); - mainEditor.chain().clearContent().setContent(activeHistoryData.content).run(); + mainEditorTitle + .chain() + .clearContent() + .setContent(activeHistoryData.title, true) + .run(); + mainEditor + .chain() + .clearContent() + .setContent(activeHistoryData.content) + .run(); setHistoryModalOpen(false); - notifications.show({ message: 'Successfully restored' }); - + notifications.show({ message: "Successfully restored" }); } }, [activeHistoryData]); useEffect(() => { - if (data && data.length > 0 && !activeHistoryId) { - setActiveHistoryId(data[0].id); + if ( + pageHistoryList && + pageHistoryList.items.length > 0 && + !activeHistoryId + ) { + setActiveHistoryId(pageHistoryList.items[0].id); } - }, [data]); + }, [pageHistoryList]); if (isLoading) { return <>; @@ -54,31 +80,39 @@ function HistoryList() { return
Error loading page history.
; } - if (!data || data.length === 0) { + if (!pageHistoryList || pageHistoryList.items.length === 0) { return <>No page history saved yet.; } return (
- {data && data.map((historyItem, index) => ( - - ))} + {pageHistoryList && + pageHistoryList.items.map((historyItem, index) => ( + + ))} - - + +
- ); } diff --git a/apps/client/src/features/page-history/queries/page-history-query.ts b/apps/client/src/features/page-history/queries/page-history-query.ts index 89153fca..0fbb5dba 100644 --- a/apps/client/src/features/page-history/queries/page-history-query.ts +++ b/apps/client/src/features/page-history/queries/page-history-query.ts @@ -1,18 +1,26 @@ -import { useQuery, UseQueryResult } from '@tanstack/react-query'; -import { getPageHistoryById, getPageHistoryList } from '@/features/page-history/services/page-history-service'; -import { IPageHistory } from '@/features/page-history/types/page.types'; +import { useQuery, UseQueryResult } from "@tanstack/react-query"; +import { + getPageHistoryById, + getPageHistoryList, +} from "@/features/page-history/services/page-history-service"; +import { IPageHistory } from "@/features/page-history/types/page.types"; +import { IPagination } from "@/lib/types.ts"; -export function usePageHistoryListQuery(pageId: string): UseQueryResult { +export function usePageHistoryListQuery( + pageId: string, +): UseQueryResult, Error> { return useQuery({ - queryKey: ['page-history-list', pageId], + queryKey: ["page-history-list", pageId], queryFn: () => getPageHistoryList(pageId), enabled: !!pageId, }); } -export function usePageHistoryQuery(historyId: string): UseQueryResult { +export function usePageHistoryQuery( + historyId: string, +): UseQueryResult { return useQuery({ - queryKey: ['page-history', historyId], + queryKey: ["page-history", historyId], queryFn: () => getPageHistoryById(historyId), enabled: !!historyId, staleTime: 10 * 60 * 1000, diff --git a/apps/client/src/features/page-history/services/page-history-service.ts b/apps/client/src/features/page-history/services/page-history-service.ts index df4e9886..87884d0f 100644 --- a/apps/client/src/features/page-history/services/page-history-service.ts +++ b/apps/client/src/features/page-history/services/page-history-service.ts @@ -1,12 +1,20 @@ -import api from '@/lib/api-client'; -import { IPageHistory } from '@/features/page-history/types/page.types'; +import api from "@/lib/api-client"; +import { IPageHistory } from "@/features/page-history/types/page.types"; -export async function getPageHistoryList(pageId: string): Promise { - const req = await api.post('/pages/history', { pageId }); - return req.data as IPageHistory[]; +export async function getPageHistoryList( + pageId: string, +): Promise { + const req = await api.post("/pages/history", { + pageId, + }); + return req.data; } -export async function getPageHistoryById(id: string): Promise { - const req = await api.post('/pages/history/details', { id }); - return req.data as IPageHistory; +export async function getPageHistoryById( + historyId: string, +): Promise { + const req = await api.post("/pages/history/info", { + historyId, + }); + return req.data; } diff --git a/apps/server/src/core/comment/comment.controller.ts b/apps/server/src/core/comment/comment.controller.ts index c05b9a02..3d51b4fd 100644 --- a/apps/server/src/core/comment/comment.controller.ts +++ b/apps/server/src/core/comment/comment.controller.ts @@ -5,6 +5,8 @@ import { HttpCode, HttpStatus, UseGuards, + NotFoundException, + ForbiddenException, } from '@nestjs/common'; import { CommentService } from './comment.service'; import { CreateCommentDto } from './dto/create-comment.dto'; @@ -15,43 +17,90 @@ import { AuthWorkspace } from '../../decorators/auth-workspace.decorator'; import { JwtAuthGuard } from '../../guards/jwt-auth.guard'; import { PaginationOptions } from '@docmost/db/pagination/pagination-options'; import { User, Workspace } from '@docmost/db/types/entity.types'; +import SpaceAbilityFactory from '../casl/abilities/space-ability.factory'; +import { PageRepo } from '@docmost/db/repos/page/page.repo'; +import { + SpaceCaslAction, + SpaceCaslSubject, +} from '../casl/interfaces/space-ability.type'; +import { CommentRepo } from '@docmost/db/repos/comment/comment.repo'; @UseGuards(JwtAuthGuard) @Controller('comments') export class CommentController { - constructor(private readonly commentService: CommentService) {} + constructor( + private readonly commentService: CommentService, + private readonly commentRepo: CommentRepo, + private readonly pageRepo: PageRepo, + private readonly spaceAbility: SpaceAbilityFactory, + ) {} - @HttpCode(HttpStatus.CREATED) + @HttpCode(HttpStatus.OK) @Post('create') async create( @Body() createCommentDto: CreateCommentDto, @AuthUser() user: User, @AuthWorkspace() workspace: Workspace, ) { + const page = await this.pageRepo.findById(createCommentDto.pageId); + if (!page) { + throw new NotFoundException('Page not found'); + } + + const ability = await this.spaceAbility.createForUser(user, page.spaceId); + if (ability.cannot(SpaceCaslAction.Create, SpaceCaslSubject.Page)) { + throw new ForbiddenException(); + } + return this.commentService.create(user.id, workspace.id, createCommentDto); } @HttpCode(HttpStatus.OK) - @Post() - findPageComments( + @Post('/') + async findPageComments( @Body() input: PageIdDto, @Body() pagination: PaginationOptions, - //@AuthUser() user: User, + @AuthUser() user: User, // @AuthWorkspace() workspace: Workspace, ) { + const page = await this.pageRepo.findById(input.pageId); + if (!page) { + throw new NotFoundException('Page not found'); + } + + const ability = await this.spaceAbility.createForUser(user, page.spaceId); + if (ability.cannot(SpaceCaslAction.Read, SpaceCaslSubject.Page)) { + throw new ForbiddenException(); + } return this.commentService.findByPageId(input.pageId, pagination); } @HttpCode(HttpStatus.OK) @Post('info') - findOne(@Body() input: CommentIdDto) { - return this.commentService.findById(input.commentId); + async findOne(@Body() input: CommentIdDto, @AuthUser() user: User) { + const comment = await this.commentRepo.findById(input.commentId); + if (!comment) { + throw new NotFoundException('Comment not found'); + } + + // TODO: add spaceId to comment entity. + const page = await this.pageRepo.findById(comment.pageId); + if (!page) { + throw new NotFoundException('Page not found'); + } + + const ability = await this.spaceAbility.createForUser(user, page.spaceId); + if (ability.cannot(SpaceCaslAction.Read, SpaceCaslSubject.Page)) { + throw new ForbiddenException(); + } + return comment; } @HttpCode(HttpStatus.OK) @Post('update') - update(@Body() updateCommentDto: UpdateCommentDto) { + update(@Body() updateCommentDto: UpdateCommentDto, @AuthUser() user: User) { + //TODO: only comment creators can update their comments return this.commentService.update( updateCommentDto.commentId, updateCommentDto, @@ -60,7 +109,8 @@ export class CommentController { @HttpCode(HttpStatus.OK) @Post('delete') - remove(@Body() input: CommentIdDto) { + remove(@Body() input: CommentIdDto, @AuthUser() user: User) { + // TODO: only comment creators and admins can delete their comments return this.commentService.remove(input.commentId); } } diff --git a/apps/server/src/core/comment/comment.module.ts b/apps/server/src/core/comment/comment.module.ts index a32b2fde..60a577e8 100644 --- a/apps/server/src/core/comment/comment.module.ts +++ b/apps/server/src/core/comment/comment.module.ts @@ -1,10 +1,9 @@ import { Module } from '@nestjs/common'; import { CommentService } from './comment.service'; import { CommentController } from './comment.controller'; -import { PageModule } from '../page/page.module'; @Module({ - imports: [PageModule], + imports: [], controllers: [CommentController], providers: [CommentService], exports: [CommentService], diff --git a/apps/server/src/core/comment/comment.service.ts b/apps/server/src/core/comment/comment.service.ts index 78b1b8e0..6efa6d53 100644 --- a/apps/server/src/core/comment/comment.service.ts +++ b/apps/server/src/core/comment/comment.service.ts @@ -5,17 +5,17 @@ import { } from '@nestjs/common'; import { CreateCommentDto } from './dto/create-comment.dto'; import { UpdateCommentDto } from './dto/update-comment.dto'; -import { PageService } from '../page/services/page.service'; import { CommentRepo } from '@docmost/db/repos/comment/comment.repo'; import { Comment } from '@docmost/db/types/entity.types'; import { PaginationOptions } from '@docmost/db/pagination/pagination-options'; import { PaginationResult } from '@docmost/db/pagination/pagination'; +import { PageRepo } from '@docmost/db/repos/page/page.repo'; @Injectable() export class CommentService { constructor( private commentRepo: CommentRepo, - private pageService: PageService, + private pageRepo: PageRepo, ) {} async findById(commentId: string) { @@ -35,7 +35,7 @@ export class CommentService { ) { const commentContent = JSON.parse(createCommentDto.content); - const page = await this.pageService.findById(createCommentDto.pageId); + const page = await this.pageRepo.findById(createCommentDto.pageId); // const spaceId = null; // todo, get from page if (!page) { @@ -59,7 +59,7 @@ export class CommentService { const createdComment = await this.commentRepo.insertComment({ pageId: createCommentDto.pageId, content: commentContent, - selection: createCommentDto?.selection.substring(0, 250), + selection: createCommentDto?.selection?.substring(0, 250), type: 'inline', // for now parentCommentId: createCommentDto?.parentCommentId, creatorId: userId, @@ -74,7 +74,7 @@ export class CommentService { pageId: string, pagination: PaginationOptions, ): Promise> { - const page = await this.pageService.findById(pageId); + const page = await this.pageRepo.findById(pageId); if (!page) { throw new BadRequestException('Page not found'); diff --git a/apps/server/src/kysely/repos/page/page-history.repo.ts b/apps/server/src/kysely/repos/page/page-history.repo.ts index 3aed048a..d08edf54 100644 --- a/apps/server/src/kysely/repos/page/page-history.repo.ts +++ b/apps/server/src/kysely/repos/page/page-history.repo.ts @@ -18,24 +18,11 @@ import { DB } from '@docmost/db/types/db'; export class PageHistoryRepo { constructor(@InjectKysely() private readonly db: KyselyDB) {} - private baseFields: Array = [ - 'id', - 'pageId', - 'title', - 'slug', - 'icon', - 'coverPhoto', - 'version', - 'lastUpdatedById', - 'workspaceId', - 'createdAt', - 'updatedAt', - ]; - async findById(pageHistoryId: string): Promise { return await this.db .selectFrom('pageHistory') - .select((eb) => [...this.baseFields, this.withLastUpdatedBy(eb)]) + .selectAll() + .select((eb) => this.withLastUpdatedBy(eb)) .where('id', '=', pageHistoryId) .executeTakeFirst(); } @@ -83,7 +70,8 @@ export class PageHistoryRepo { async findPageHistoryByPageId(pageId: string, pagination: PaginationOptions) { const query = this.db .selectFrom('pageHistory') - .select((eb) => [...this.baseFields, this.withLastUpdatedBy(eb)]) + .selectAll() + .select((eb) => this.withLastUpdatedBy(eb)) .where('pageId', '=', pageId) .orderBy('createdAt', 'desc'); @@ -101,6 +89,6 @@ export class PageHistoryRepo { .selectFrom('users') .select(['users.id', 'users.name', 'users.avatarUrl']) .whereRef('users.id', '=', 'pageHistory.lastUpdatedById'), - ).as('withLastUpdatedBy'); + ).as('lastUpdatedBy'); } } diff --git a/package.json b/package.json index 9e44b2ec..0020c900 100644 --- a/package.json +++ b/package.json @@ -10,40 +10,40 @@ "@hocuspocus/provider": "^2.11.3", "@hocuspocus/server": "^2.11.3", "@hocuspocus/transformer": "^2.11.3", - "@tiptap/extension-code-block": "^2.2.4", - "@tiptap/extension-collaboration": "^2.2.4", - "@tiptap/extension-collaboration-cursor": "^2.2.4", - "@tiptap/extension-color": "^2.2.4", - "@tiptap/extension-document": "^2.2.4", - "@tiptap/extension-heading": "^2.2.4", - "@tiptap/extension-highlight": "^2.2.4", - "@tiptap/extension-link": "^2.2.4", - "@tiptap/extension-list-item": "^2.2.4", - "@tiptap/extension-list-keymap": "^2.2.4", - "@tiptap/extension-mention": "^2.2.4", - "@tiptap/extension-placeholder": "^2.2.4", - "@tiptap/extension-subscript": "^2.2.4", - "@tiptap/extension-superscript": "^2.2.4", - "@tiptap/extension-task-item": "^2.2.4", - "@tiptap/extension-task-list": "^2.2.4", - "@tiptap/extension-text": "^2.2.4", - "@tiptap/extension-text-align": "^2.2.4", - "@tiptap/extension-text-style": "^2.2.4", - "@tiptap/extension-typography": "^2.2.4", - "@tiptap/extension-underline": "^2.2.4", - "@tiptap/html": "^2.2.4", - "@tiptap/pm": "^2.2.4", - "@tiptap/react": "^2.2.4", - "@tiptap/starter-kit": "^2.2.4", - "@tiptap/suggestion": "^2.2.4", + "@tiptap/extension-code-block": "^2.3.0", + "@tiptap/extension-collaboration": "^2.3.0", + "@tiptap/extension-collaboration-cursor": "^2.3.0", + "@tiptap/extension-color": "^2.3.0", + "@tiptap/extension-document": "^2.3.0", + "@tiptap/extension-heading": "^2.3.0", + "@tiptap/extension-highlight": "^2.3.0", + "@tiptap/extension-link": "^2.3.0", + "@tiptap/extension-list-item": "^2.3.0", + "@tiptap/extension-list-keymap": "^2.3.0", + "@tiptap/extension-mention": "^2.3.0", + "@tiptap/extension-placeholder": "^2.3.0", + "@tiptap/extension-subscript": "^2.3.0", + "@tiptap/extension-superscript": "^2.3.0", + "@tiptap/extension-task-item": "^2.3.0", + "@tiptap/extension-task-list": "^2.3.0", + "@tiptap/extension-text": "^2.3.0", + "@tiptap/extension-text-align": "^2.3.0", + "@tiptap/extension-text-style": "^2.3.0", + "@tiptap/extension-typography": "^2.3.0", + "@tiptap/extension-underline": "^2.3.0", + "@tiptap/html": "^2.3.0", + "@tiptap/pm": "^2.3.0", + "@tiptap/react": "^2.3.0", + "@tiptap/starter-kit": "^2.3.0", + "@tiptap/suggestion": "^2.3.0", "fractional-indexing-jittered": "^0.9.1", "tiptap-extension-global-drag-handle": "^0.1.6", "y-indexeddb": "^9.0.12", "yjs": "^13.6.14" }, "devDependencies": { - "@nx/js": "18.2.2", - "nx": "18.2.2" + "@nx/js": "18.3.3", + "nx": "18.3.3" }, "workspaces": { "packages": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a36ddd9..32da0dd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,85 +19,85 @@ importers: version: 2.11.3(y-protocols@1.0.6)(yjs@13.6.14) '@hocuspocus/transformer': specifier: ^2.11.3 - version: 2.11.3(@tiptap/pm@2.2.4)(y-prosemirror@1.2.3)(yjs@13.6.14) + version: 2.11.3(@tiptap/pm@2.3.0)(y-prosemirror@1.2.3)(yjs@13.6.14) '@tiptap/extension-code-block': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) '@tiptap/extension-collaboration': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(y-prosemirror@1.2.3) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(y-prosemirror@1.2.3) '@tiptap/extension-collaboration-cursor': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(y-prosemirror@1.2.3) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(y-prosemirror@1.2.3) '@tiptap/extension-color': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/extension-text-style@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/extension-text-style@2.3.0) '@tiptap/extension-document': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-heading': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-highlight': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-link': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) '@tiptap/extension-list-item': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-list-keymap': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-mention': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(@tiptap/suggestion@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(@tiptap/suggestion@2.3.0) '@tiptap/extension-placeholder': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) '@tiptap/extension-subscript': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-superscript': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-task-item': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) '@tiptap/extension-task-list': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-text': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-text-align': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-text-style': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-typography': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/extension-underline': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0) '@tiptap/html': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) '@tiptap/pm': - specifier: ^2.2.4 - version: 2.2.4 + specifier: ^2.3.0 + version: 2.3.0 '@tiptap/react': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(react-dom@18.2.0)(react@18.2.0) '@tiptap/starter-kit': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/pm@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/pm@2.3.0) '@tiptap/suggestion': - specifier: ^2.2.4 - version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + specifier: ^2.3.0 + version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) fractional-indexing-jittered: specifier: ^0.9.1 version: 0.9.1 @@ -112,11 +112,11 @@ importers: version: 13.6.14 devDependencies: '@nx/js': - specifier: 18.2.2 - version: 18.2.2(@types/node@20.12.4)(nx@18.2.2)(typescript@5.4.4) + specifier: 18.3.3 + version: 18.3.3(@types/node@20.12.4)(nx@18.3.3)(typescript@5.4.4) nx: - specifier: 18.2.2 - version: 18.2.2 + specifier: 18.3.3 + version: 18.3.3 apps/client: dependencies: @@ -3053,16 +3053,16 @@ packages: - utf-8-validate dev: false - /@hocuspocus/transformer@2.11.3(@tiptap/pm@2.2.4)(y-prosemirror@1.2.3)(yjs@13.6.14): + /@hocuspocus/transformer@2.11.3(@tiptap/pm@2.3.0)(y-prosemirror@1.2.3)(yjs@13.6.14): resolution: {integrity: sha512-xwvweF0P1T8MjD+Dw/2nwqi0ctL9a+JO/HIYDXqcCn1OJ956jrblRfMGJhXqXUjUd17qAxeBPiPh9gjtceQNig==} peerDependencies: '@tiptap/pm': ^2.1.12 y-prosemirror: ^1.2.1 yjs: ^13.6.8 dependencies: - '@tiptap/core': 2.1.16(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 - '@tiptap/starter-kit': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.1.16(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 + '@tiptap/starter-kit': 2.3.0(@tiptap/pm@2.3.0) y-prosemirror: 1.2.3(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.32.7)(y-protocols@1.0.6)(yjs@13.6.14) yjs: 13.6.14 dev: false @@ -3830,18 +3830,18 @@ packages: fastq: 1.17.1 dev: true - /@nrwl/devkit@18.2.2(nx@18.2.2): - resolution: {integrity: sha512-6RBr1aMzrpY0kk9L9buqT9H7Nv8+QujJPo4ASr6jp/5d5gPBsebeTn6qSvv1xJSB0GhB1ACOeq1nVkbwRQoQCw==} + /@nrwl/devkit@18.3.3(nx@18.3.3): + resolution: {integrity: sha512-3zZLE1vfwsNie7qjVUt9lqaM1slU0RTr/dW+Yt/2lxe8Peu6f8bnCM1Pf3kSlzoxQroctfocRtVHFXJsAuAt4g==} dependencies: - '@nx/devkit': 18.2.2(nx@18.2.2) + '@nx/devkit': 18.3.3(nx@18.3.3) transitivePeerDependencies: - nx dev: true - /@nrwl/js@18.2.2(@types/node@20.12.4)(nx@18.2.2)(typescript@5.4.4): - resolution: {integrity: sha512-+COyT27frMSARYNPyFDL404nOgMmJQ0o5ap24hYond3TUuhYa5LKB0AQvEZZEz6Wb0Z/KdWRi44mw4+Gm+5Beg==} + /@nrwl/js@18.3.3(@types/node@20.12.4)(nx@18.3.3)(typescript@5.4.4): + resolution: {integrity: sha512-7Wtv5kpeMWUDBUFu5go49HM/S8vDrtMOvZf9xnUcnjsFDReWe8XIEkTWudZDbzID3X4T6WQAftzj2Ov6k566lQ==} dependencies: - '@nx/js': 18.2.2(@types/node@20.12.4)(nx@18.2.2)(typescript@5.4.4) + '@nx/js': 18.3.3(@types/node@20.12.4)(nx@18.3.3)(typescript@5.4.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -3855,11 +3855,11 @@ packages: - verdaccio dev: true - /@nrwl/tao@18.2.2: - resolution: {integrity: sha512-tXjAbbw8Ir3cY/PQVHiC7q10jsU43r5kkEVwa2vzd1rfPtPFvj9WtgwISd+GstuppYtsbNi+UgTNmHX8dRKPYQ==} + /@nrwl/tao@18.3.3: + resolution: {integrity: sha512-f/PUDLpSMEObiLQ5sIDySJM+5DxSCNunkxxbY1R9rmQ1cFcgrHaXIHQqbSj91mMa3mmtbKACk8u1LbI+oQV0Tg==} hasBin: true dependencies: - nx: 18.2.2 + nx: 18.3.3 tslib: 2.6.2 transitivePeerDependencies: - '@swc-node/register' @@ -3867,10 +3867,10 @@ packages: - debug dev: true - /@nrwl/workspace@18.2.2: - resolution: {integrity: sha512-Vqd6S3IlLtIeSru84T+gX+AtMZYS7qgXTujo2ux0q2gc/AxtHp7etmiUqKuXV4Q9QqBqsxZZg+P6NWzyPJACDg==} + /@nrwl/workspace@18.3.3: + resolution: {integrity: sha512-9Giuec9l3PpS8mekD00W9kBIKmWRpQSkp+/RvYmc+7kKtVC+Uj/kc68exBOanVgq6zKzYrn+FqHWHGWnHxp+ww==} dependencies: - '@nx/workspace': 18.2.2 + '@nx/workspace': 18.3.3 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' @@ -3888,24 +3888,24 @@ packages: transitivePeerDependencies: - encoding - /@nx/devkit@18.2.2(nx@18.2.2): - resolution: {integrity: sha512-Yz/uLYfy2QLeeCJecgKXuT4z0eGx/yBw3VxkgD0zSvpSIg8p1OGSK/rUQ47n/FibsLRdXa1Me5uE57rNt/FKvA==} + /@nx/devkit@18.3.3(nx@18.3.3): + resolution: {integrity: sha512-FtkZ6mA5//vEA5lcbT80m080ROVacHYV5F1peztTRA+IY2JZGJoqx425kn5ylDO8aCSAIAwcn2qIdhI8BnpG3Q==} peerDependencies: - nx: '>= 16 <= 18' + nx: '>= 16 <= 19' dependencies: - '@nrwl/devkit': 18.2.2(nx@18.2.2) + '@nrwl/devkit': 18.3.3(nx@18.3.3) ejs: 3.1.9 enquirer: 2.3.6 ignore: 5.3.1 - nx: 18.2.2 + nx: 18.3.3 semver: 7.6.0 tmp: 0.2.1 tslib: 2.6.2 yargs-parser: 21.1.1 dev: true - /@nx/js@18.2.2(@types/node@20.12.4)(nx@18.2.2)(typescript@5.4.4): - resolution: {integrity: sha512-EQXlUW83w4D2//AXMW4AQUocBs4Nwfl15gPERahpzyTK6CKSOV3nKyORCTnVa5TgtugRXGluTbN3TxamSoWpug==} + /@nx/js@18.3.3(@types/node@20.12.4)(nx@18.3.3)(typescript@5.4.4): + resolution: {integrity: sha512-e8u56oG0mlTVz48EeH0C7txX0GeLYN0o4mK1LDAMIHQa4tKefNfwrdqHaZBiVqFOPopeFtqi8s0kqce5prwCaw==} peerDependencies: verdaccio: ^5.0.4 peerDependenciesMeta: @@ -3919,9 +3919,9 @@ packages: '@babel/preset-env': 7.23.8(@babel/core@7.24.3) '@babel/preset-typescript': 7.23.3(@babel/core@7.24.3) '@babel/runtime': 7.23.7 - '@nrwl/js': 18.2.2(@types/node@20.12.4)(nx@18.2.2)(typescript@5.4.4) - '@nx/devkit': 18.2.2(nx@18.2.2) - '@nx/workspace': 18.2.2 + '@nrwl/js': 18.3.3(@types/node@20.12.4)(nx@18.3.3)(typescript@5.4.4) + '@nx/devkit': 18.3.3(nx@18.3.3) + '@nx/workspace': 18.3.3 '@phenomnomnominal/tsquery': 5.0.1(typescript@5.4.4) babel-plugin-const-enum: 1.2.0(@babel/core@7.24.3) babel-plugin-macros: 2.8.0 @@ -3954,8 +3954,8 @@ packages: - typescript dev: true - /@nx/nx-darwin-arm64@18.2.2: - resolution: {integrity: sha512-mZ5X2rmtzmEGnt5ddpKlyQDGRd1wh0HSJtWvjruj6fYLNNpoosnXefI0PQLZUw13hf8OpJNo8J6xKfjIViSa8g==} + /@nx/nx-darwin-arm64@18.3.3: + resolution: {integrity: sha512-NpA2/7o1uUuaocMYopX9muxKif9HlGfWaXo2UeiR918usF6xri4aUqweZbaXVc9iqCAEbVMWUsjaLYGKPXHAjw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3963,8 +3963,8 @@ packages: dev: true optional: true - /@nx/nx-darwin-x64@18.2.2: - resolution: {integrity: sha512-FeYvbr0OOIdn9xvuNZlLHQKwdAPN9KcWnmIysJTQZeanvUf6tifkhBUU1cXDduAkdut5iibnnA91JhcEj4x9yg==} + /@nx/nx-darwin-x64@18.3.3: + resolution: {integrity: sha512-aydPLbc7DeceJ6szRf6DLT4ERoPvwfWyFiGXdAlEZYWhjEuNZLeG8K6jA3yHeWltKfX/qJqhnyKbnubBNzBKlQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3972,8 +3972,8 @@ packages: dev: true optional: true - /@nx/nx-freebsd-x64@18.2.2: - resolution: {integrity: sha512-Owt/5jT8IG5I6eRbs8en+bHvi2St+k1Z1S1CLArlnfTzkTgVGz/R39HD4OouEVnr2dQPkfc7ms6+XkhlYx5NLg==} + /@nx/nx-freebsd-x64@18.3.3: + resolution: {integrity: sha512-sEYEWsK/fwC1l7wzls7RNOjhmrooH0lK0mpgj1vDXesLBSZ7k+pddAqaHFECN4QXBSbHZI2PWOEhbnIH+Errsg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] @@ -3981,8 +3981,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm-gnueabihf@18.2.2: - resolution: {integrity: sha512-6D6ZC4EdBjAE0QgLYXuk7AC5r/LM+XUUOa5tFAV6fsAKn+GjVFsmP8dl/HEHfg+vx619+o+IrVrOA+h6ztmNJA==} + /@nx/nx-linux-arm-gnueabihf@18.3.3: + resolution: {integrity: sha512-B9GGMkrrzwiAfvew22x85ITO9TiNxbgRbKJQWQaoopNpXrnSWpY8WTNxpDT24fwV1qdQfsPKcY3F4O0NOUgPRA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -3990,8 +3990,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm64-gnu@18.2.2: - resolution: {integrity: sha512-RHZ9nPZ4ivv9p+djO9WqoilMhjlR8/rj7P4sog5OpeRE5EWc65Rb7SFwjek1IovS2gbbK+3P2y8Q4G7lyvbe5w==} + /@nx/nx-linux-arm64-gnu@18.3.3: + resolution: {integrity: sha512-1EucHf5/0JeqZmhritqkpEdOcdo9Dl32gpFvhNfS6kCAYmaDlEl4zqedz3VIoj4C7+C0pV3mcRO9qB9H7GM5bQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3999,8 +3999,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm64-musl@18.2.2: - resolution: {integrity: sha512-WginA4UHdrRhK40pDV8sv3Izho5aOzWf3iC8WVXi8r850mVbOE88JaWnO7TJ7zNWgiM32/OZeVyaYQ/Wv8pYjw==} + /@nx/nx-linux-arm64-musl@18.3.3: + resolution: {integrity: sha512-HPgOgnYYLPVCBEaAkSEGPGzZqTDCiyCAF/qtvx5z0f1U/hZYb1ubgxw70ogY82Cafr7X4gQBz5k4/ZCnoCXlOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -4008,8 +4008,8 @@ packages: dev: true optional: true - /@nx/nx-linux-x64-gnu@18.2.2: - resolution: {integrity: sha512-Fekq6TWZAN7T1Yi+IVAPQ3wUmsmtvu3WyvXiVBjVKh8C1H/PKPcNi+4kaG9Ys1BhBZhqiEfTgc44RF9xLM9IAQ==} + /@nx/nx-linux-x64-gnu@18.3.3: + resolution: {integrity: sha512-FgYTQ3VEE6EUOGtJT9riRK8IBwPGFjKS+N2mudQJn2bB/9IumUvVRYQUIX08gqGLlqZPO6uUUhUjwZY8SnjRLQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -4017,8 +4017,8 @@ packages: dev: true optional: true - /@nx/nx-linux-x64-musl@18.2.2: - resolution: {integrity: sha512-3Uk7x2/giczRCva7RsWd/KjgeYH9kOQFiqzE4heMrjBEuJQfACDlasjIrTRv9bwLrZ6otkBVeX/zmE9kBo3tOA==} + /@nx/nx-linux-x64-musl@18.3.3: + resolution: {integrity: sha512-QnWjGViR1Wj9gJXa1RJ9mXyy2/JzQ7NF2C4ulTYSH5St1HoxhkfnLsV0+uNLFEV9PSZq+2BfxmQuT8Appefv1A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -4026,8 +4026,8 @@ packages: dev: true optional: true - /@nx/nx-win32-arm64-msvc@18.2.2: - resolution: {integrity: sha512-y0d79+FYtSEI96KGAjIUrD7/xybAp7aSjqqesM0WP2+DIJBYkdjK6maTKxkB5gb3FBJyhfNYr4A1NqDnvbPtvA==} + /@nx/nx-win32-arm64-msvc@18.3.3: + resolution: {integrity: sha512-Xn3LUaPsF8QkEYUVV3lc693NTCMWrfZBFXTy1cQpvLzQ+idsXQ/EGWoq93cIM3Nc2YWyblT2hHHelb8dHCZAlw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -4035,8 +4035,8 @@ packages: dev: true optional: true - /@nx/nx-win32-x64-msvc@18.2.2: - resolution: {integrity: sha512-17b7hh8VMGWHq0yQDxevLUM0K4ZoNUah3oYVbYe46tp1w7D4u44vDkOOE2SpV2E/alllcDES1etcVsYQSMTGig==} + /@nx/nx-win32-x64-msvc@18.3.3: + resolution: {integrity: sha512-t8HvOnQEiaaoTFOOIrql30NPhIwDFO7jg0Jtz3Tbneulh7ceswJp71yFHsRGGrYZ23Tgg+Sna6M9qLRGzlRGkg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4044,14 +4044,14 @@ packages: dev: true optional: true - /@nx/workspace@18.2.2: - resolution: {integrity: sha512-peZQmiibIVNoDYHgTvrd+2k14KfuquarnoDrNT4USpOz36B6usMGEOw8a2kZ+7TZ7xpCGOhDTr3jHYTg8NFBUg==} + /@nx/workspace@18.3.3: + resolution: {integrity: sha512-SUJJKzOUuNnclpHHde6f6nlF+pQwMjeF026jFpWDFaNzdsADhhRulkz0GLRXB9kKszvzz2JKde9WBWnKrFZ2IQ==} dependencies: - '@nrwl/workspace': 18.2.2 - '@nx/devkit': 18.2.2(nx@18.2.2) + '@nrwl/workspace': 18.3.3 + '@nx/devkit': 18.3.3(nx@18.3.3) chalk: 4.1.2 enquirer: 2.3.6 - nx: 18.2.2 + nx: 18.3.3 tslib: 2.6.2 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -4787,358 +4787,358 @@ packages: react: 18.2.0 dev: false - /@tiptap/core@2.1.16(@tiptap/pm@2.2.4): + /@tiptap/core@2.1.16(@tiptap/pm@2.3.0): resolution: {integrity: sha512-nKnV603UyzbcrqhCXTWxDN22Ujb4VNfmKkACms1JOMGo7BVARmMCp2nBsLW8fmgCxmf8AS0LXY63tU7ILWYc5g==} peerDependencies: '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/pm': 2.2.4 + '@tiptap/pm': 2.3.0 dev: false - /@tiptap/core@2.2.4(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==} + /@tiptap/core@2.3.0(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-Gk2JN3i5CMkYGmsbyFI7cBUftWa+F7QYmeCLTWfbuy+hCM2OBsnYVKxhggFPGXRL5KLBEgBWeCeWMHfIw3B2MA==} peerDependencies: '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/pm': 2.2.4 + '@tiptap/pm': 2.3.0 dev: false - /@tiptap/extension-blockquote@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-FrfPnn0VgVrUwWLwja1afX99JGLp6PE9ThVcmri+tLwUZQvTTVcCvHoCdOakav3/nge1+aV4iE3tQdyq1tWI9Q==} + /@tiptap/extension-blockquote@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-Cztt77t7f+f0fuPy+FWUL8rKTIpcdsVT0z0zYQFFafvGaom0ZALQSOdTR/q+Kle9I4DaCMO3/Q0mwax/D4k4+A==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-bold@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==} + /@tiptap/extension-bold@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-SzkbJibHXFNU7TRaAebTtwbXUEhGZ8+MhlBn12aQ4QhdjNtFpQwKXQPyYeDyZGcyiOFgtFTb+WIfCGm8ZX0Fpw==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-bubble-menu@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==} + /@tiptap/extension-bubble-menu@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-dqyfQ8idTlhapvt0fxCGvkyjw92pBEwPqmkJ01h3EE8wTh53j0ytOHyMSf1KBuzardxpd8Yya3zlrAcR0Z3DlQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 tippy.js: 6.3.7 dev: false - /@tiptap/extension-bullet-list@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-z/MPmW8bhRougMuorl6MAQBXeK4rhlP+jBWlNwT+CT8h5IkXqPnDbM1sZeagp2nYfVV6Yc4RWpzimqHHtGnYTA==} + /@tiptap/extension-bullet-list@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-4nU4vJ5FjRDLqHm085vYAkuo68UK84Wl6CDSjm7sPVcu0FvQX02Okqt65azoSYQeS1SSSd5qq9YZuGWcYdp4Cw==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-code-block@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-h6WV9TmaBEZmvqe1ezMR83DhCPUap6P2mSR5pwVk0WVq6rvZjfgU0iF3EetBJOeDgPlz7cNe2NMDfVb1nGTM/g==} + /@tiptap/extension-code-block@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-+Ne6PRBwQt70Pp8aW2PewaEy4bHrNYn4N+y8MObsFtqLutXBz4nXnsXWiNYFQZwzlUY+CHG4XS73mx8oMOFfDw==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 dev: false - /@tiptap/extension-code@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-JB4SJ2mUU/9qXFUf+K5K9szvovnN9AIcCb0f0UlcVBuddKHSqCl3wO3QJgYt44BfQTLMNuyzr+zVqfFd6BNt/g==} + /@tiptap/extension-code@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-O2FZmosiIRoVbW82fZy8xW4h4gb2xAzxWzHEcsHPlwCbE3vYvcBMmbkQ5p+33eRtuRQInzl3Q/cwupv9ctIepQ==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-collaboration-cursor@2.2.4(@tiptap/core@2.2.4)(y-prosemirror@1.2.3): - resolution: {integrity: sha512-G0j08yGwFaq3AiaNHR+CUVCqLQv0fZhmwy9V1ByE7YkIgiDs9icCuKo1cbY2riW/Sn874rIHEctMxA8hVsNttw==} + /@tiptap/extension-collaboration-cursor@2.3.0(@tiptap/core@2.3.0)(y-prosemirror@1.2.3): + resolution: {integrity: sha512-nwh3yBuFCBvGLzJeCDzwAesm4nkbIQuYJCM7IUt/JHnY4nj6H9ZtJQw4gWe4CCiEzl8zgozIDyq/WSExweH7zw==} peerDependencies: '@tiptap/core': ^2.0.0 y-prosemirror: ^1.2.1 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) y-prosemirror: 1.2.3(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.32.7)(y-protocols@1.0.6)(yjs@13.6.14) dev: false - /@tiptap/extension-collaboration@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(y-prosemirror@1.2.3): - resolution: {integrity: sha512-Q9DnGeTYhB8TDud9B2zbRZqbNdBi0C/zzTYora2bFRRXnUzQUJgvV7HeIcHajj2wdKe8HXGwXjrCzORUtwUFgA==} + /@tiptap/extension-collaboration@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(y-prosemirror@1.2.3): + resolution: {integrity: sha512-mim3lG+wdlSYiPdPYO6jAt0YhBauS0E1GoqrDgIVPM5G3qqcMC8DMLsA3XPkf5LZE7JSJRcX+R8Wo2VJXvqqYQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 y-prosemirror: ^1.2.1 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 y-prosemirror: 1.2.3(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.32.7)(y-protocols@1.0.6)(yjs@13.6.14) dev: false - /@tiptap/extension-color@2.2.4(@tiptap/core@2.2.4)(@tiptap/extension-text-style@2.2.4): - resolution: {integrity: sha512-R3caThbG25gQz5b1+3PoJnVmuMF0lnqxPJ86l2ZWRAuqRSSEOJDYMGY5rlnPkAVW23Ej2FOuDFVxV/18pFHo3w==} + /@tiptap/extension-color@2.3.0(@tiptap/core@2.3.0)(@tiptap/extension-text-style@2.3.0): + resolution: {integrity: sha512-rqtdTaGawPZSRszwC/BlkJTF1diosIBBRSO5/YCRHT7CfGJNJyomL3eFREynXLKnXZ69SMceDh6yU6B54uTHXQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/extension-text-style': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/extension-text-style': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/extension-text-style': 2.3.0(@tiptap/core@2.3.0) dev: false - /@tiptap/extension-document@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-z+05xGK0OFoXV1GL+/8bzcZuWMdMA3+EKwk5c+iziG60VZcvGTF7jBRsZidlu9Oaj0cDwWHCeeo6L9SgSh6i2A==} + /@tiptap/extension-document@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-WC55SMrtlsNOnHXpzbXDzJOp7eKmZV0rXooKmvCDqoiLO/DKpyQXyF+0UHfcRPmUAi2GWFPaer7+p1H9xzcjXg==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-dropcursor@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==} + /@tiptap/extension-dropcursor@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-WWxxGQPWdbzxyYP6jtBYSq4wMRhINhI0wBC8pgkxTVwCIWftMuYj++FP4LLIpuWgj78PWApuoM0QQxk4Lj7FOw==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 dev: false - /@tiptap/extension-floating-menu@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==} + /@tiptap/extension-floating-menu@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-bNY43/yU/+wGfmk2eDV7EPDAN/akbC+YnSKTA5VPJADzscvlrL2HlQrxbd/STIdlwKqdPU5MokcvCChhfZ4f6w==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 tippy.js: 6.3.7 dev: false - /@tiptap/extension-gapcursor@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==} + /@tiptap/extension-gapcursor@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-OxcXcfD0uzNcXdXu2ZpXFAtXIsgK2MBHvFUs0t0gxtcL/t43pTOQBLy+29Ei30BxpwLghtX8jQ6IDzMiybq/sA==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 dev: false - /@tiptap/extension-hard-break@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-FPvS57GcqHIeLbPKGJa3gnH30Xw+YB1PXXnAWG2MpnMtc2Vtj1l5xaYYBZB+ADdXLAlU0YMbKhFLQO4+pg1Isg==} + /@tiptap/extension-hard-break@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-9pXi69SzLabbjY5KZ54UKzu7HAHTla9aYZKH56VatOAiJOPKJppFbU2/NfJwGzDrEtfOiDqr3dYbUDF3RuCFoQ==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-heading@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-gkq7Ns2FcrOCRq7Q+VRYt5saMt2R9g4REAtWy/jEevJ5UV5vA2AiGnYDmxwAkHutoYU0sAUkjqx37wE0wpamNw==} + /@tiptap/extension-heading@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-YcZoUYfqb0nohoPgem4f8mjn5OqDomFrbJiC9VRHUOCIuEu+aJEYwp8mmdkLnS3f+LRCZ6G76cJJ50lkzSAZRw==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-highlight@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-GGl6ehKQ0Q0gGgUQhkWg2XYPfhVU5c0JD3NHzV4OrBP6JAtFeMYeSLdfYzFcmoYnGafvSZaJ3NukUvnDHZGzRg==} + /@tiptap/extension-highlight@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-An/tzoCMbugdaU02ORJeJ74DZI5pf9oqwX9RoYPQ5K81Ia3jG52BBVtFjGq/j10Tr4iOuCmOuE+PzNtnzz3UIw==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-history@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==} + /@tiptap/extension-history@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-EF5Oq9fe/VBzU1Lsow2ubOlx1e1r4OQT1WUPGsRnL7pr94GH1Skpk7/hs9COJ9K6kP3Ebt42XjP0JEQodR58YA==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 dev: false - /@tiptap/extension-horizontal-rule@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-iCRHjFQQHApWg3R4fkKkJQhWEOdu1Fdc4YEAukdOXPSg3fg36IwjvsMXjt9SYBtVZ+iio3rORCZGXyMvgCH9uw==} + /@tiptap/extension-horizontal-rule@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-4DB8GU3uuDzzyqUmONIb3CHXcQ6Nuy4mHHkFSmUyEjg1i5eMQU5H7S6mNvZbltcJB2ImgCSwSMlj1kVN3MLIPg==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 dev: false - /@tiptap/extension-italic@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==} + /@tiptap/extension-italic@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-jdFjLjdt5JtPlGMpoS6TEq5rznjbAYVlPwcw5VkYENVIYIGIR1ylIw2JwK1nUEsQ+OgYwVxHLejcUXWG1dCi2g==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-link@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-Qsx0cFZm4dxbkToXs5TcXbSoUdicv8db1gV1DYIZdETqjBm4wFjlzCUP7hPHFlvNfeSy1BzAMRt+RpeuiwvxWQ==} + /@tiptap/extension-link@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-CnJAlV0ZOdEhKmDfYKuHJVG8g79iCFQ85cX/CROTWyuMfXz9uhj2rLpZ6nfidVbonqxAhQp7NAIr2y+Fj5/53A==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 linkifyjs: 4.1.3 dev: false - /@tiptap/extension-list-item@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-lPLKGKsHpM9ClUa8n7GEUn8pG6HCYU0vFruIy3l2t6jZdHkrgBnYtVGMZ13K8UDnj/hlAlccxku0D0P4mA1Vrg==} + /@tiptap/extension-list-item@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-mHU+IuRa56OT6YCtxf5Z7OSUrbWdKhGCEX7RTrteDVs5oMB6W3oF9j88M5qQmZ1WDcxvQhAOoXctnMt6eX9zcA==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-list-keymap@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-cDfvDK7A63oLsmF+X3JW6Q0Jgi/g+vp3CordWX2ohQNKNsCEs+8XUX5uyjB2k9cMtdm2z41EMn+3CHEgwuzhFQ==} + /@tiptap/extension-list-keymap@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-j/ZvCSOxQs9iyH/4UigQ9y6yRMFUvd3sCxuC3iJkShmQmUk6BnPhoURNkcHxx01cG79qdCJ6GpOCMdhfQfNQJQ==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-mention@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(@tiptap/suggestion@2.2.4): - resolution: {integrity: sha512-myUlwpbrQgWfRJwG4UHM2PbiSp+squJv6LPKfKINs5yDxIproaZ0/4TAJt3heeSXZJnboPAQxSP7eLd5pY8lBw==} + /@tiptap/extension-mention@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(@tiptap/suggestion@2.3.0): + resolution: {integrity: sha512-Zu18LIKOMWm7XQztGuwLTxGGwGMc0QDbEAXB5TLrKFYWdHoaU0wu65+mBa61kuUoZ1Ur71J7vu2tuU70uPd16w==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 '@tiptap/suggestion': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 - '@tiptap/suggestion': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 + '@tiptap/suggestion': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-ordered-list@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-TpFy140O9Af1JciXt+xwqYUXxcJ6YG8zi/B5UDJujp+FH5sCmlYYBBnWxiFMhVaj6yEmA2eafu1qUkic/1X5Aw==} + /@tiptap/extension-ordered-list@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-gkf0tltXjlUj0cqyfDV2r7xy9YPKtcVSWwlCPun6OOi0KzKFiAMqQpA9hy2W6gJ+KCp8+KNRMClZOfH4TnnBfg==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-paragraph@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==} + /@tiptap/extension-paragraph@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-peCpA7DFqkd0cHb+cHv4YHNoMsXG8tKFNJlCHpLmsZWl2hWmpKgKmUrXAUfzjcFSvkZxn0xYc5oWbqUgg+2LzA==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-placeholder@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-UL4Fn9T33SoS7vdI3NnSxBJVeGUIgCIutgXZZ5J8CkcRoDIeS78z492z+6J+qGctHwTd0xUL5NzNJI82HfiTdg==} + /@tiptap/extension-placeholder@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-1BOyxVLzyUYf6yOOeJ8CfpP6DSCS4L6HjBZqj6WP1z1NyBV8RAfhf3UuLNcimfSWAETXFR3g0ZbaxxWffI1cEg==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 dev: false - /@tiptap/extension-strike@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==} + /@tiptap/extension-strike@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-gOW4ALeH8gkJiUGGXVy/AOd5lAPTX0bzoOW1+sCLcTA7t8dluBW7M2ngNYxTEtlKqyv7aLfrgsYSiqucmmfSLw==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-subscript@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-W8HVGJNqRT7Ho5LIlTn/yaOHpRnfSWPGh5YxMDmmR4fH+mG4ZgwOrxS7D1HrE1Ak9YZ+/ebFyRUHhcdUVu46Bg==} + /@tiptap/extension-subscript@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-yABeLpyx0nuSraGBaOoD4yayJM/7zy/LT1NGFsxwf4mNsCvjnUjSKg7vYljmiAHLDyxABwZQerWnpdwmN4Rnzg==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-superscript@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-RUmQ92Yow1z1GSVWV7TxqXaH9XpmA+TohDAWtXokLlfNfodz99zLOxPFf/+kE1voSFLuJxwHsWS9TV27V3N3aA==} + /@tiptap/extension-superscript@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-M6ZIacIBPEJ01F3WsumoqzaccOPd4EIEQhZX3jD/2GYvWNn/2Is3ZdDvftcoOwup4D0ybM7GzbVesQMvht1vpg==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-task-item@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-Ixzv7bPcgrWelSD0Jy6yAlHxmGWpD5lPt6Ey4POYy7u98duyUFOBMHLcsV24ipQsRacuB+htgmuqOrkiL+hg7w==} + /@tiptap/extension-task-item@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-WvQJiQSskI1dZLPgNH4hmYPW0HFyR/EHwogzVnY7XCn2/5isV0ewyaVuSfqTXvfEA/R5uCi95opwz61NFBc2nQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 dev: false - /@tiptap/extension-task-list@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-URh1Yzj/YZBOMkobK4/U8s1QYwIIqHm4b0YadLPPZx9IzTjyV/2bvIakphCmBtxWxeTXW5TbO9eNod3qatq21w==} + /@tiptap/extension-task-list@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-TBgqf4s3DpUV97w7AAj1WZDnZ3rZQ8B645d9bBayo4VfRzHCLefv5cVP/Ye9GA23T4FZoHNR+yIPrM7SfhkmPA==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-text-align@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-iojhpsv3n/r4g/4wMFl1d85RloWrAV3TRUJluurPQZJdrJ7ynJ2fiPqmigAXyaYAJ3+a1ryu9JPlktT9RdYO/A==} + /@tiptap/extension-text-align@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-Pj+Yuk8xpYLGxNKGRUwvjlrOQP66ZyzjpJN5xqjJ7anzb2OKrluWMBco3xhjd/h03viA+wYeJKfnEpk/SbzHTQ==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-text-style@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-8Mcxy+HUHPUgK7bOv34m8zhbhzPm6f1/hgbgwz9m+Oel7MNPElsMXtxxygbwtr7Hbj6S4NBoBl/Ir4BkziYRbQ==} + /@tiptap/extension-text-style@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-S+sQZqd+QtJjbZ0LOp0Krf0dlrdMx7BQL0sUNKPq8XXRMcfW0pEEFGIU/0VDFQCldLIuyd7lZ8zo5cjaAgskIA==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-text@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==} + /@tiptap/extension-text@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-zkudl0TyKRy/8vHtyo5dMzjBRD0HEUnsS8YOsjR4xwQq5EYUXleRgM1s6lb6Yms2sLUAZRWdDddoQ686iq4zQg==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-typography@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-1gmvr74uk44Wzxd6QI+dKz/M//xaD15yYwUtcRc9+ohbfvCqtRl3XDVoxl3MQmDMljcui5kMMaRcFNvW1Kujvg==} + /@tiptap/extension-typography@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-bI9t6dVp3wvzp3RVhJYRAV5Gi4pCSnumYith62TJmEk7fI24XuwMAXJu32+RTtBkaWHX/nwSGPh/ol0PRmtzKw==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/extension-underline@2.2.4(@tiptap/core@2.2.4): - resolution: {integrity: sha512-jCHgIJMwtXlGHVy/j3L8/QvglHCikkHJw7YS5yf8E/8HlPh1tZfVy/IxdgacDOpUN30X+UPJZQDdVKymafgwdA==} + /@tiptap/extension-underline@2.3.0(@tiptap/core@2.3.0): + resolution: {integrity: sha512-vmmcwCPmWqGKYHZevz50+bxrpHyiu5y6YZweAE476hn8Mud6vYg7RpkXgW8bjkCOky6UA51uelslSc0XrLE6uw==} peerDependencies: '@tiptap/core': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) dev: false - /@tiptap/html@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-a6ORgv+X5CExUOdLVjAd4uIPPTrETLylyed/4vhaPIhe3fZKc+2oJrj87lxfUGasY4LV7Gpn+s08XM5fXyB61g==} + /@tiptap/html@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-XAIDIUxWVQzQZQO3IIhBmpbcCr9ozea3yI4R2vOuF2sF/eGxKYBat0AwQfVSm2D7xf/rFUMd5bwbRJTyFsTD/A==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 zeed-dom: 0.10.11 dev: false - /@tiptap/pm@2.2.4: - resolution: {integrity: sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==} + /@tiptap/pm@2.3.0: + resolution: {integrity: sha512-4WYqShZBwDyReKvapC0nmeYdOtZbZ31y4MjolpKQaSD4I7kg/oZspC+byUGdvIRsNpRN7i2X0IyvdISKk8gw5Q==} dependencies: prosemirror-changeset: 2.2.1 prosemirror-collab: 1.3.1 @@ -5160,56 +5160,56 @@ packages: prosemirror-view: 1.32.7 dev: false - /@tiptap/react@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HkYmMZWcETPZn3KpzdDg/ns2TKeFh54TvtCEInA4ljYtWGLoZc/A+KaiEtMIgVs+Mo1XwrhuoNGjL9c0OK2HJw==} + /@tiptap/react@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ThgFJQTWYKRClTV2Zg0wBRqfy0EGz3U4NOey7jwncUjSjx5+o9nXbfQAYWDKQFfWyE+wnrBTYfddEP9pHNX5cQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/extension-bubble-menu': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) - '@tiptap/extension-floating-menu': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/extension-bubble-menu': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) + '@tiptap/extension-floating-menu': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@tiptap/starter-kit@2.2.4(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-Kbk7qUfIZg3+bNa3e/wBeDQt4jJB46uQgM+xy5NSY6H8NZP6gdmmap3aIrn9S/W/hGpxJl4RcXAeaT0CQji9XA==} + /@tiptap/starter-kit@2.3.0(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-TjvCd/hzEnuEYOdr5uQqcfHOMuj7JRoZBPdheupwl3SbuYiCxtcqYyAE5qoGXWwuVe9xVGerOLVPkDUgmyrH6A==} dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/extension-blockquote': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-bold': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-bullet-list': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-code': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-code-block': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) - '@tiptap/extension-document': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-dropcursor': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) - '@tiptap/extension-gapcursor': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) - '@tiptap/extension-hard-break': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-heading': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-history': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) - '@tiptap/extension-horizontal-rule': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4) - '@tiptap/extension-italic': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-list-item': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-ordered-list': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-paragraph': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-strike': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-text': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/extension-blockquote': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-bold': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-bullet-list': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-code': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-code-block': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) + '@tiptap/extension-document': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-dropcursor': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) + '@tiptap/extension-gapcursor': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) + '@tiptap/extension-hard-break': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-heading': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-history': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) + '@tiptap/extension-horizontal-rule': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0) + '@tiptap/extension-italic': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-list-item': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-ordered-list': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-paragraph': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-strike': 2.3.0(@tiptap/core@2.3.0) + '@tiptap/extension-text': 2.3.0(@tiptap/core@2.3.0) transitivePeerDependencies: - '@tiptap/pm' dev: false - /@tiptap/suggestion@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4): - resolution: {integrity: sha512-g6HHsKM6K3asW+ZlwMYyLCRqCRaswoliZOQofY4iZt5ru5HNTSzm3YW4XSyW5RGXJIuc319yyrOFgtJ3Fyu5rQ==} + /@tiptap/suggestion@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0): + resolution: {integrity: sha512-QngwR9ahodVfwqp/kXxJvuL3zNb6XZu+vCuWy8RJrGP8DA7SCI9t8t7iB6NfG4kSsRGxM+3DuLi+2xOZQUaEVQ==} peerDependencies: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 dependencies: - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/pm': 2.2.4 + '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0) + '@tiptap/pm': 2.3.0 dev: false /@tsconfig/node10@1.0.9: @@ -9292,8 +9292,8 @@ packages: set-blocking: 2.0.0 dev: false - /nx@18.2.2: - resolution: {integrity: sha512-ZEnN+2XV6QWI3q6N/I9byjSK2ErxAJJjKIWFQ45RW7+KCFbiwF0zeGnn5zruSHY7nbTrUf5C7MDA80eXam5DTg==} + /nx@18.3.3: + resolution: {integrity: sha512-GqC5ANfTWV6SFbgquZwuRMI2Z2nO0c0Yx4JzM3x32aJOgXsmRml3WcV0a5648bIXSen34gylHYl2EHaxVWkzNQ==} hasBin: true requiresBuild: true peerDependencies: @@ -9305,7 +9305,7 @@ packages: '@swc/core': optional: true dependencies: - '@nrwl/tao': 18.2.2 + '@nrwl/tao': 18.3.3 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 @@ -9340,16 +9340,16 @@ packages: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 18.2.2 - '@nx/nx-darwin-x64': 18.2.2 - '@nx/nx-freebsd-x64': 18.2.2 - '@nx/nx-linux-arm-gnueabihf': 18.2.2 - '@nx/nx-linux-arm64-gnu': 18.2.2 - '@nx/nx-linux-arm64-musl': 18.2.2 - '@nx/nx-linux-x64-gnu': 18.2.2 - '@nx/nx-linux-x64-musl': 18.2.2 - '@nx/nx-win32-arm64-msvc': 18.2.2 - '@nx/nx-win32-x64-msvc': 18.2.2 + '@nx/nx-darwin-arm64': 18.3.3 + '@nx/nx-darwin-x64': 18.3.3 + '@nx/nx-freebsd-x64': 18.3.3 + '@nx/nx-linux-arm-gnueabihf': 18.3.3 + '@nx/nx-linux-arm64-gnu': 18.3.3 + '@nx/nx-linux-arm64-musl': 18.3.3 + '@nx/nx-linux-x64-gnu': 18.3.3 + '@nx/nx-linux-x64-musl': 18.3.3 + '@nx/nx-win32-arm64-msvc': 18.3.3 + '@nx/nx-win32-x64-msvc': 18.3.3 transitivePeerDependencies: - debug dev: true