Compare commits

...

20 Commits

Author SHA1 Message Date
Philipinho 463480ae67 v0.2.10 (fix) 2024-08-07 23:03:00 +02:00
Philipinho 2449d69fab v2.9.10 2024-08-07 22:22:49 +02:00
Philip Okugbe e0d74fcb0e Fix: editor formatting (#137)
* reduce space between list items

* reduce spacing

* Make inline code readable in dark mode
* Disable spellcheck in code

* fix numbered list in toggle block
2024-08-04 10:06:22 +02:00
Philipinho 4967849e3a add SMTP_SECURE 2024-08-02 11:19:12 +02:00
Philipinho 0a447e91bb fix markdown import 2024-07-22 18:39:44 +01:00
Philipinho 48e76aa9f4 v0.2.8 2024-07-22 16:36:06 +01:00
Philipinho 2bd6422a35 Show new workspace role on change 2024-07-22 16:35:00 +01:00
olivierIllogika 407a1aff3b only owner can assign owner role (#108)
* backend fix: https://github.com/docmost/docmost/commit/b4bc184cb3749a3faa5a00d5a1240faacd4b1035
2024-07-22 16:18:09 +01:00
Philipinho b4bc184cb3 prevent admin role from managing owner role (backend) 2024-07-22 16:16:33 +01:00
Philipinho 109dbdbe02 cleanup log 2024-07-22 15:59:43 +01:00
Philipinho 2df7de5828 fix table commands type error 2024-07-22 15:43:43 +01:00
Philipinho 373fc86e47 preserve details tag in markdown export 2024-07-22 14:09:52 +01:00
Philipinho 5052a9ea40 Support math export in Markdown 2024-07-22 13:20:00 +01:00
Philipinho cd47c79d86 Make math node handling better 2024-07-22 13:05:07 +01:00
Philipinho 78746938b7 fix export format state 2024-07-22 13:02:13 +01:00
Philipinho 4d2936627c fix: generate ydoc state during page import to prevent duplicate nodes on the editor 2024-07-22 11:02:43 +01:00
Philipinho d2ecd28047 fix: localize attachment type
* fixes #86
2024-07-22 10:58:32 +01:00
Philipinho bb92ca75e9 use logger 2024-07-21 21:57:31 +01:00
Philipinho 8f3e2ff663 fix editor placeholder bug 2024-07-21 20:50:08 +01:00
Philipinho 89f6311e46 * Make page import handling better 2024-07-21 20:48:33 +01:00
32 changed files with 604 additions and 261 deletions
+1
View File
@@ -30,6 +30,7 @@ SMTP_HOST=127.0.0.1
SMTP_PORT=587
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_SECURE=false
# Postmark driver config
POSTMARK_TOKEN=
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "client",
"private": true,
"version": "0.2.7",
"version": "0.2.10",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
@@ -23,7 +23,7 @@ const RoleButton = forwardRef<HTMLButtonElement, RoleButtonProps>(
),
);
interface SpaceRoleMenuProps {
interface RoleMenuProps {
roles: IRoleData[];
roleName: string;
onChange?: (value: string) => void;
@@ -35,7 +35,7 @@ export default function RoleSelectMenu({
roleName,
onChange,
disabled,
}: SpaceRoleMenuProps) {
}: RoleMenuProps) {
return (
<Menu withArrow>
<Menu.Target>
@@ -4,13 +4,14 @@ import { TextAlign } from "@tiptap/extension-text-align";
import { TaskList } from "@tiptap/extension-task-list";
import { TaskItem } from "@tiptap/extension-task-item";
import { Underline } from "@tiptap/extension-underline";
import { Link } from "@tiptap/extension-link";
import { Superscript } from "@tiptap/extension-superscript";
import SubScript from "@tiptap/extension-subscript";
import { Highlight } from "@tiptap/extension-highlight";
import { Typography } from "@tiptap/extension-typography";
import { TextStyle } from "@tiptap/extension-text-style";
import { Color } from "@tiptap/extension-color";
import Table from "@tiptap/extension-table";
import TableHeader from "@tiptap/extension-table-header";
import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight";
import SlashCommand from "@/features/editor/extensions/slash-command";
import { Collaboration } from "@tiptap/extension-collaboration";
@@ -23,8 +24,6 @@ import {
DetailsSummary,
MathBlock,
MathInline,
Table,
TableHeader,
TableCell,
TableRow,
TrailingNode,
@@ -57,6 +56,11 @@ export const mainExtensions = [
color: "#70CFF8",
},
codeBlock: false,
code: {
HTMLAttributes: {
spellcheck: false,
},
},
}),
Placeholder.configure({
placeholder: ({ node }) => {
@@ -66,7 +70,9 @@ export const mainExtensions = [
if (node.type.name === "detailsSummary") {
return "Toggle title";
}
return 'Write anything. Enter "/" for commands';
if (node.type.name === "paragraph") {
return 'Write anything. Enter "/" for commands';
}
},
includeChildren: true,
}),
@@ -95,10 +101,16 @@ export const mainExtensions = [
class: "comment-mark",
},
}),
Table,
Table.configure({
resizable: true,
lastColumnResizable: false,
allowTableNodeSelection: true,
}),
TableRow,
TableCell,
TableHeader,
MathInline.configure({
view: MathInlineView,
}),
@@ -124,6 +136,9 @@ export const mainExtensions = [
}),
CodeBlockLowlight.configure({
lowlight,
HTMLAttributes: {
spellcheck: false,
},
}),
Selection,
] as any;
@@ -31,8 +31,6 @@ import TableCellMenu from "@/features/editor/components/table/table-cell-menu.ts
import TableMenu from "@/features/editor/components/table/table-menu.tsx";
import ImageMenu from "@/features/editor/components/image/image-menu.tsx";
import CalloutMenu from "@/features/editor/components/callout/callout-menu.tsx";
import { uploadImageAction } from "@/features/editor/components/image/upload-image-action.tsx";
import { uploadVideoAction } from "@/features/editor/components/video/upload-video-action.tsx";
import VideoMenu from "@/features/editor/components/video/video-menu.tsx";
import {
handleFileDrop,
@@ -86,4 +86,22 @@
font-weight: 700;
}
}
:not(pre) > code {
font-family: "JetBrainsMono", var(--mantine-font-family-monospace);
line-height: var(--mantine-line-height);
padding: 2px calc(var(--mantine-spacing-xs) / 2);
border-radius: var(--mantine-radius-sm);
margin: 0;
@mixin where-light {
background-color: var(--code-bg, var(--mantine-color-gray-1));
color: var(--mantine-color-black);
}
@mixin where-dark {
background-color: var(--mantine-color-dark-8);
color: var(--mantine-color-gray-4);
}
}
}
@@ -20,6 +20,11 @@
outline: none;
}
p {
margin-top: 0.65em;
margin-bottom: 0.65em;
}
ul,
ol {
padding: 0 1rem;
@@ -27,6 +32,12 @@
margin-bottom: 0.25rem;
}
ul p,
ol p {
margin-top: 0;
margin-bottom: 0;
}
h1,
h2,
h3,
@@ -80,15 +91,9 @@
outline: 2px solid #70cff8;
}
.node-mathInline {
.katex-display {
margin: 0;
}
}
& > .react-renderer {
margin-top: var(--mantine-spacing-xl);
margin-bottom: var(--mantine-spacing-xl);
margin-top: var(--mantine-spacing-sm);
margin-bottom: var(--mantine-spacing-sm);
&:first-child {
margin-top: 0;
@@ -50,8 +50,7 @@
[data-type="detailsContainer"] {
flex: 1;
margin-left: 0.2em;
overflow-x: hidden;
padding: 4px;
word-break: break-word;
overflow-wrap: break-word;
@@ -56,7 +56,7 @@ export default function PageExportModal({
<div>
<Text size="md">Format</Text>
</div>
<ExportFormatSelection onChange={handleChange} />
<ExportFormatSelection format={format} onChange={handleChange} />
</Group>
<Group justify="center" mt="md">
@@ -72,16 +72,17 @@ export default function PageExportModal({
}
interface ExportFormatSelection {
format: ExportFormat;
onChange: (value: string) => void;
}
function ExportFormatSelection({ onChange }: ExportFormatSelection) {
function ExportFormatSelection({ format, onChange }: ExportFormatSelection) {
return (
<Select
data={[
{ value: "markdown", label: "Markdown" },
{ value: "html", label: "HTML" },
]}
defaultValue={ExportFormat.Markdown}
defaultValue={format}
onChange={onChange}
styles={{ wrapper: { maxWidth: 120 } }}
comboboxProps={{ width: "120" }}
@@ -84,14 +84,14 @@ function ImportFormatSelection({ spaceId, onClose }: ImportFormatSelection) {
}
}
const newTreeNodes = buildTree(pages);
const fullTree = treeData.concat(newTreeNodes);
if (pages?.length > 0 && pageCount > 0) {
const newTreeNodes = buildTree(pages);
const fullTree = treeData.concat(newTreeNodes);
if (newTreeNodes?.length && fullTree?.length > 0) {
setTreeData(fullTree);
}
if (newTreeNodes?.length && fullTree?.length > 0) {
setTreeData(fullTree);
}
if (pageCount > 0) {
const pageCountText = pageCount === 1 ? "1 page" : `${pageCount} pages`;
notifications.update({
@@ -11,11 +11,14 @@ import {
userRoleData,
} from "@/features/workspace/types/user-role-data.ts";
import useUserRole from "@/hooks/use-user-role.tsx";
import { UserRole } from "@/lib/types.ts";
export default function WorkspaceMembersTable() {
const { data, isLoading } = useWorkspaceMembersQuery({ limit: 100 });
const changeMemberRoleMutation = useChangeMemberRoleMutation();
const { isAdmin } = useUserRole();
const { isAdmin, isOwner } = useUserRole();
const assignableUserRoles = isOwner ? userRoleData : userRoleData.filter((role) => role.value !== UserRole.OWNER);
const handleRoleChange = async (
userId: string,
@@ -69,7 +72,7 @@ export default function WorkspaceMembersTable() {
<Table.Td>
<RoleSelectMenu
roles={userRoleData}
roles={assignableUserRoles}
roleName={getUserRoleLabel(user.role)}
onChange={(newRole) =>
handleRoleChange(user.id, user.role, newRole)
@@ -53,9 +53,10 @@ export function useChangeMemberRoleMutation() {
return useMutation<any, Error, any>({
mutationFn: (data) => changeMemberRole(data),
onSuccess: (data, variables) => {
// TODO: change in cache instead
notifications.show({ message: "Member role updated successfully" });
queryClient.refetchQueries({
queryKey: ["workspaceMembers", variables.spaceId],
queryKey: ["workspaceMembers"],
});
},
onError: (error) => {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "server",
"version": "0.2.7",
"version": "0.2.10",
"description": "",
"author": "",
"private": true,
@@ -10,6 +10,8 @@ import { Typography } from '@tiptap/extension-typography';
import { TextStyle } from '@tiptap/extension-text-style';
import { Color } from '@tiptap/extension-color';
import { Youtube } from '@tiptap/extension-youtube';
import Table from '@tiptap/extension-table';
import TableHeader from '@tiptap/extension-table-header';
import {
Callout,
Comment,
@@ -19,16 +21,18 @@ import {
LinkExtension,
MathBlock,
MathInline,
Table,
TableCell,
TableHeader,
TableRow,
TiptapImage,
TiptapVideo,
TrailingNode,
} from '@docmost/editor-ext';
import { generateText, JSONContent } from '@tiptap/core';
import { generateHTML, generateJSON } from '../common/helpers/prosemirror/html';
import { generateHTML } from '../common/helpers/prosemirror/html';
// @tiptap/html library works best for generating prosemirror json state but not HTML
// see: https://github.com/ueberdosis/tiptap/issues/5352
// see:https://github.com/ueberdosis/tiptap/issues/4089
import { generateJSON } from '@tiptap/html';
export const tiptapExtensions = [
StarterKit,
@@ -59,7 +59,7 @@ export class AttachmentService {
});
} catch (err) {
// delete uploaded file on error
console.error(err);
this.logger.error(err);
}
return attachment;
@@ -1,5 +1,6 @@
import {
BadRequestException,
ForbiddenException,
Injectable,
NotFoundException,
} from '@nestjs/common';
@@ -217,11 +218,21 @@ export class WorkspaceService {
) {
const user = await this.userRepo.findById(userRoleDto.userId, workspaceId);
const newRole = userRoleDto.role.toLowerCase();
if (!user) {
throw new BadRequestException('Workspace member not found');
}
if (user.role === userRoleDto.role) {
// prevent ADMIN from managing OWNER role
if (
(authUser.role === UserRole.ADMIN && newRole === UserRole.OWNER) ||
(authUser.role === UserRole.ADMIN && user.role === UserRole.OWNER)
) {
throw new ForbiddenException();
}
if (user.role === newRole) {
return user;
}
@@ -238,7 +249,7 @@ export class WorkspaceService {
await this.userRepo.updateUser(
{
role: userRoleDto.role,
role: newRole,
},
user.id,
workspaceId,
@@ -18,11 +18,11 @@ export function turndown(html: string): string {
highlightedCodeBlock,
taskList,
callout,
toggleListTitle,
toggleListBody,
preserveDetail,
listParagraph,
mathInline,
mathBlock,
]);
return turndownService.turndown(html).replaceAll('<br>', ' ');
}
@@ -72,29 +72,51 @@ function taskList(turndownService: TurndownService) {
});
}
function toggleListTitle(turndownService: TurndownService) {
turndownService.addRule('toggleListTitle', {
function preserveDetail(turndownService: TurndownService) {
turndownService.addRule('preserveDetail', {
filter: function (node: HTMLInputElement) {
return (
node.nodeName === 'SUMMARY' && node.parentNode.nodeName === 'DETAILS'
);
return node.nodeName === 'DETAILS';
},
replacement: function (content: any, node: HTMLInputElement) {
return '- ' + content;
// TODO: preserve summary of nested details
const summary = node.querySelector(':scope > summary');
let detailSummary = '';
if (summary) {
detailSummary = `<summary>${turndownService.turndown(summary.innerHTML)}</summary>`;
summary.remove();
}
const detailsContent = turndownService.turndown(node.innerHTML);
return `\n<details>\n${detailSummary}\n\n${detailsContent}\n\n</details>\n`;
},
});
}
function toggleListBody(turndownService: TurndownService) {
turndownService.addRule('toggleListContent', {
function mathInline(turndownService: TurndownService) {
turndownService.addRule('mathInline', {
filter: function (node: HTMLInputElement) {
return (
node.getAttribute('data-type') === 'detailsContent' &&
node.parentNode.nodeName === 'DETAILS'
node.nodeName === 'SPAN' &&
node.getAttribute('data-type') === 'mathInline'
);
},
replacement: function (content: any, node: HTMLInputElement) {
return ` ${content.replace(/\n/g, '\n ')} `;
return `$${content}$`;
},
});
}
function mathBlock(turndownService: TurndownService) {
turndownService.addRule('mathBlock', {
filter: function (node: HTMLInputElement) {
return (
node.nodeName === 'DIV' &&
node.getAttribute('data-type') === 'mathBlock'
);
},
replacement: function (content: any, node: HTMLInputElement) {
return `\n$$${content}$$\n`;
},
});
}
@@ -20,6 +20,7 @@ import {
} from '../../core/casl/interfaces/space-ability.type';
import { FileInterceptor } from '../../common/interceptors/file.interceptor';
import * as bytes from 'bytes';
import * as path from 'path';
import { MAX_FILE_SIZE } from '../../core/attachment/attachment.constants';
import { ImportService } from './import.service';
import { AuthWorkspace } from '../../common/decorators/auth-workspace.decorator';
@@ -42,6 +43,8 @@ export class ImportController {
@AuthUser() user: User,
@AuthWorkspace() workspace: Workspace,
) {
const validFileExtensions = ['.md', '.html'];
const maxFileSize = bytes(MAX_FILE_SIZE);
let file = null;
@@ -62,6 +65,12 @@ export class ImportController {
throw new BadRequestException('Failed to upload file');
}
if (
!validFileExtensions.includes(path.extname(file.filename).toLowerCase())
) {
throw new BadRequestException('Invalid import file type.');
}
const spaceId = file.fields?.spaceId?.value;
if (!spaceId) {
@@ -3,13 +3,17 @@ import { PageRepo } from '@docmost/db/repos/page/page.repo';
import { MultipartFile } from '@fastify/multipart';
import { sanitize } from 'sanitize-filename-ts';
import * as path from 'path';
import { htmlToJson } from '../../collaboration/collaboration.util';
import { marked } from 'marked';
import {
htmlToJson,
tiptapExtensions,
} from '../../collaboration/collaboration.util';
import { InjectKysely } from 'nestjs-kysely';
import { KyselyDB } from '@docmost/db/types/kysely.types';
import { generateSlugId } from '../../common/helpers';
import { generateJitteredKeyBetween } from 'fractional-indexing-jittered';
import { transformHTML } from './utils/html.utils';
import { markdownToHtml } from './utils/marked.utils';
import { TiptapTransformer } from '@hocuspocus/transformer';
import * as Y from 'yjs';
@Injectable()
export class ImportService {
@@ -30,22 +34,25 @@ export class ImportService {
const fileBuffer = await file.toBuffer();
const fileName = sanitize(file.filename).slice(0, 255).split('.')[0];
const fileExtension = path.extname(file.filename).toLowerCase();
const fileMimeType = file.mimetype;
const fileContent = fileBuffer.toString();
let prosemirrorState = null;
let createdPage = null;
if (fileExtension.endsWith('.md') && fileMimeType === 'text/markdown') {
prosemirrorState = await this.processMarkdown(fileContent);
}
if (fileExtension.endsWith('.html') && fileMimeType === 'text/html') {
prosemirrorState = await this.processHTML(fileContent);
try {
if (fileExtension.endsWith('.md')) {
prosemirrorState = await this.processMarkdown(fileContent);
} else if (fileExtension.endsWith('.html')) {
prosemirrorState = await this.processHTML(fileContent);
}
} catch (err) {
const message = 'Error processing file content';
this.logger.error(message, err);
throw new BadRequestException(message);
}
if (!prosemirrorState) {
const message = 'Unsupported file format or mime type';
const message = 'Failed to create ProseMirror state';
this.logger.error(message);
throw new BadRequestException(message);
}
@@ -63,14 +70,19 @@ export class ImportService {
slugId: generateSlugId(),
title: pageTitle,
content: prosemirrorJson,
ydoc: await this.createYdoc(prosemirrorJson),
position: pagePosition,
spaceId: spaceId,
creatorId: userId,
workspaceId: workspaceId,
lastUpdatedById: userId,
});
this.logger.debug(
`Successfully imported "${title}${fileExtension}. ID: ${createdPage.id} - SlugId: ${createdPage.slugId}"`,
);
} catch (err) {
const message = 'Failed to create page';
const message = 'Failed to create imported page';
this.logger.error(message, err);
throw new BadRequestException(message);
}
@@ -80,14 +92,37 @@ export class ImportService {
}
async processMarkdown(markdownInput: string): Promise<any> {
// turn markdown to html
const html = await marked.parse(markdownInput);
return await this.processHTML(html);
try {
const html = await markdownToHtml(markdownInput);
return this.processHTML(html);
} catch (err) {
throw err;
}
}
async processHTML(htmlInput: string): Promise<any> {
// turn html to prosemirror state
return htmlToJson(transformHTML(htmlInput));
try {
return htmlToJson(htmlInput);
} catch (err) {
throw err;
}
}
async createYdoc(prosemirrorJson: any): Promise<Buffer | null> {
if (prosemirrorJson) {
this.logger.debug(`Converting prosemirror json state to ydoc`);
const ydoc = TiptapTransformer.toYdoc(
prosemirrorJson,
'default',
tiptapExtensions,
);
Y.encodeStateAsUpdate(ydoc);
return Buffer.from(Y.encodeStateAsUpdate(ydoc));
}
return null;
}
extractTitleAndRemoveHeading(prosemirrorState: any) {
@@ -1,80 +0,0 @@
import { Window, DOMParser } from 'happy-dom';
function transformTaskList(html: string): string {
const window = new Window();
const doc = new DOMParser(window).parseFromString(html, 'text/html');
const ulElements = doc.querySelectorAll('ul');
ulElements.forEach((ul) => {
let isTaskList = false;
const liElements = ul.querySelectorAll('li');
liElements.forEach((li) => {
const checkbox = li.querySelector('input[type="checkbox"]');
if (checkbox) {
isTaskList = true;
// Add taskItem data type
li.setAttribute('data-type', 'taskItem');
// Set data-checked attribute based on the checkbox state
// @ts-ignore
li.setAttribute('data-checked', checkbox.checked ? 'true' : 'false');
// Remove the checkbox from the li
checkbox.remove();
// Move the content of <p> out of the <p> and remove <p>
const pElements = li.querySelectorAll('p');
pElements.forEach((p) => {
// Append the content of the <p> element to its parent (the <li> element)
while (p.firstChild) {
li.appendChild(p.firstChild);
}
// Remove the now empty <p> element
p.remove();
});
}
});
// If any <li> contains a checkbox, mark the <ul> as a task list
if (isTaskList) {
ul.setAttribute('data-type', 'taskList');
}
});
return doc.body.innerHTML;
}
function transformCallouts(html: string): string {
const window = new Window();
const doc = new DOMParser(window).parseFromString(html, 'text/html');
const calloutRegex = /:::(\w+)\s*([\s\S]*?)\s*:::/g;
const createCalloutDiv = (type: string, content: string): HTMLElement => {
const div = doc.createElement('div');
div.setAttribute('data-type', 'callout');
div.setAttribute('data-callout-type', type);
const p = doc.createElement('p');
p.textContent = content.trim();
div.appendChild(p);
return div as unknown as HTMLElement;
};
const pElements = doc.querySelectorAll('p');
pElements.forEach((p) => {
if (calloutRegex.test(p.innerHTML) && !p.closest('ul, ol')) {
calloutRegex.lastIndex = 0;
const [, type, content] = calloutRegex.exec(p.innerHTML) || [];
const calloutDiv = createCalloutDiv(type, content);
// @ts-ignore
p.replaceWith(calloutDiv);
}
});
return doc.body.innerHTML;
}
export function transformHTML(html: string): string {
return transformTaskList(transformCallouts(html));
}
@@ -0,0 +1,36 @@
import { marked } from 'marked';
marked.use({
renderer: {
// @ts-ignore
list(body: string, isOrdered: boolean, start: number) {
if (isOrdered) {
const startAttr = start !== 1 ? ` start="${start}"` : '';
return `<ol ${startAttr}>\n${body}</ol>\n`;
}
const dataType = body.includes(`<input`) ? ' data-type="taskList"' : '';
return `<ul${dataType}>\n${body}</ul>\n`;
},
// @ts-ignore
listitem({ text, raw, task: isTask, checked: isChecked }): string {
if (!isTask) {
return `<li>${text}</li>\n`;
}
const checkedAttr = isChecked
? 'data-checked="true"'
: 'data-checked="false"';
return `<li data-type="taskItem" ${checkedAttr}>${text}</li>\n`;
},
},
});
export async function markdownToHtml(markdownInput: string): Promise<string> {
const YAML_FONT_MATTER_REGEX = /^\s*---[\s\S]*?---\s*/;
const markdown = markdownInput
.replace(YAML_FONT_MATTER_REGEX, '')
.trimStart();
return marked.parse(markdown);
}
+3 -2
View File
@@ -1,7 +1,7 @@
{
"name": "docmost",
"homepage": "https://docmost.com",
"version": "0.2.7",
"version": "0.2.10",
"private": true,
"scripts": {
"build": "nx run-many -t build",
@@ -53,6 +53,7 @@
"@tiptap/extension-typography": "^2.5.4",
"@tiptap/extension-underline": "^2.5.4",
"@tiptap/extension-youtube": "^2.5.4",
"@tiptap/html": "^2.5.4",
"@tiptap/pm": "^2.5.4",
"@tiptap/react": "^2.5.4",
"@tiptap/starter-kit": "^2.5.4",
@@ -68,7 +69,7 @@
"@nx/js": "19.3.2",
"@types/uuid": "^10.0.0",
"concurrently": "^8.2.2",
"nx": "19.3.2",
"nx": "19.5.6",
"tsx": "^4.15.7"
},
"workspaces": {
@@ -1,7 +1,7 @@
import { type EditorState, Plugin, PluginKey } from "@tiptap/pm/state";
import { Decoration, DecorationSet } from "@tiptap/pm/view";
import { IAttachment } from "client/src/lib/types";
import { MediaUploadOptions, UploadFn } from "../media-utils";
import { IAttachment } from "../types";
const uploadKey = new PluginKey("image-upload");
@@ -36,7 +36,9 @@ export const MathBlock = Node.create({
return {
text: {
default: "",
parseHTML: (element) => element.innerHTML.split("$")[1],
parseHTML: (element) => {
return element.innerHTML;
},
},
};
},
@@ -44,7 +46,7 @@ export const MathBlock = Node.create({
parseHTML() {
return [
{
tag: "div",
tag: `div[data-type="${this.name}"]`,
getAttrs: (node: HTMLElement) => {
return node.hasAttribute("data-katex") ? {} : false;
},
@@ -55,8 +57,8 @@ export const MathBlock = Node.create({
renderHTML({ HTMLAttributes }) {
return [
"div",
{},
["div", { "data-katex": true }, `$$${HTMLAttributes.text}$$`],
{ "data-type": this.name, "data-katex": true },
`${HTMLAttributes.text}`,
];
},
@@ -37,7 +37,9 @@ export const MathInline = Node.create<MathInlineOption>({
return {
text: {
default: "",
parseHTML: (element) => element.innerHTML.split("$")[1],
parseHTML: (element) => {
return element.innerHTML;
},
},
};
},
@@ -45,7 +47,7 @@ export const MathInline = Node.create<MathInlineOption>({
parseHTML() {
return [
{
tag: "span",
tag: `span[data-type="${this.name}"]`,
getAttrs: (node: HTMLElement) => {
return node.hasAttribute("data-katex") ? {} : false;
},
@@ -54,7 +56,11 @@ export const MathInline = Node.create<MathInlineOption>({
},
renderHTML({ HTMLAttributes }) {
return ["span", { "data-katex": true }, `$${HTMLAttributes.text}$` || {}];
return [
"span",
{ "data-type": this.name, "data-katex": true },
`${HTMLAttributes.text}`,
];
},
addNodeView() {
@@ -1,3 +0,0 @@
import TiptapTableHeader from "@tiptap/extension-table-header";
export const TableHeader = TiptapTableHeader.configure();
@@ -1,4 +1,2 @@
export * from "./table-extension";
export * from "./header";
export * from "./row";
export * from "./cell";
@@ -1,7 +0,0 @@
import TiptapTable from "@tiptap/extension-table";
export const Table = TiptapTable.configure({
resizable: true,
lastColumnResizable: false,
allowTableNodeSelection: true,
});
+17
View File
@@ -0,0 +1,17 @@
// repetition for now
export interface IAttachment {
id: string;
fileName: string;
filePath: string;
fileSize: number;
fileExt: string;
mimeType: string;
type: string;
creatorId: string;
pageId: string | null;
spaceId: string | null;
workspaceId: string;
createdAt: string;
updatedAt: string;
deletedAt: string | null;
}
+1 -1
View File
@@ -3,7 +3,7 @@ import { Editor, findParentNode, isTextSelection } from "@tiptap/core";
import { Selection, Transaction } from "@tiptap/pm/state";
import { CellSelection, TableMap } from "@tiptap/pm/tables";
import { Node, ResolvedPos } from "@tiptap/pm/model";
import { Table } from "./table/table-extension";
import Table from "@tiptap/extension-table";
export const isRectSelected = (rect: any) => (selection: CellSelection) => {
const map = TableMap.get(selection.$anchorCell.node(-1));
@@ -1,7 +1,7 @@
import { type EditorState, Plugin, PluginKey } from "@tiptap/pm/state";
import { Decoration, DecorationSet } from "@tiptap/pm/view";
import { IAttachment } from "client/src/lib/types";
import { MediaUploadOptions, UploadFn } from "../media-utils";
import { IAttachment } from "../types";
const uploadKey = new PluginKey("video-upload");
+338 -87
View File
@@ -119,6 +119,9 @@ importers:
'@tiptap/extension-youtube':
specifier: ^2.5.4
version: 2.5.4(@tiptap/core@2.5.4(@tiptap/pm@2.5.4))
'@tiptap/html':
specifier: ^2.5.4
version: 2.5.4(@tiptap/core@2.5.4(@tiptap/pm@2.5.4))(@tiptap/pm@2.5.4)
'@tiptap/pm':
specifier: ^2.5.4
version: 2.5.4
@@ -152,7 +155,7 @@ importers:
devDependencies:
'@nx/js':
specifier: 19.3.2
version: 19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))(typescript@5.5.2)
version: 19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25)(@types/node@20.14.9)(nx@19.5.6(@swc/core@1.5.25))(typescript@5.5.2)
'@types/uuid':
specifier: ^10.0.0
version: 10.0.0
@@ -160,8 +163,8 @@ importers:
specifier: ^8.2.2
version: 8.2.2
nx:
specifier: 19.3.2
version: 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
specifier: 19.5.6
version: 19.5.6(@swc/core@1.5.25)
tsx:
specifier: ^4.15.7
version: 4.15.7
@@ -544,7 +547,7 @@ importers:
version: 5.1.3(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@9.5.0))(eslint@9.5.0)(prettier@3.3.2)
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
version: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
kysely-codegen:
specifier: ^0.15.0
version: 0.15.0(kysely@0.27.3)(pg@8.12.0)
@@ -553,7 +556,7 @@ importers:
version: 3.3.2
react-email:
specifier: ^2.1.4
version: 2.1.4(@swc/helpers@0.5.11)(babel-plugin-macros@2.8.0)(eslint@9.5.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
version: 2.1.4(@swc/helpers@0.5.11)(eslint@9.5.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
source-map-support:
specifier: ^0.5.21
version: 0.5.21
@@ -562,7 +565,7 @@ importers:
version: 7.0.0
ts-jest:
specifier: ^29.1.5
version: 29.1.5(@babel/core@7.24.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.3))(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)))(typescript@5.5.2)
version: 29.1.5(@babel/core@7.24.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.3))(jest@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)))(typescript@5.5.2)
ts-loader:
specifier: ^9.5.1
version: 9.5.1(typescript@5.5.2)(webpack@5.91.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11))
@@ -1577,6 +1580,15 @@ packages:
'@egjs/list-differ@1.0.1':
resolution: {integrity: sha512-OTFTDQcWS+1ZREOdCWuk5hCBgYO4OsD30lXcOCyVOAjXMhgL5rBRDnt/otb6Nz8CzU0L/igdcaQBDLWc4t9gvg==}
'@emnapi/core@1.2.0':
resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==}
'@emnapi/runtime@1.2.0':
resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==}
'@emnapi/wasi-threads@1.0.1':
resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
'@emoji-mart/data@1.2.1':
resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==}
@@ -2205,6 +2217,9 @@ packages:
cpu: [x64]
os: [win32]
'@napi-rs/wasm-runtime@0.2.4':
resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==}
'@nestjs/bull-shared@10.1.1':
resolution: {integrity: sha512-su7eThDrSz1oQagEi8l+1CyZ7N6nMgmyAX0DuZoXqT1KEVEDqGX7x80RlPVF60m/8SYOskckGMjJROSfNQcErw==}
peerDependencies:
@@ -2474,6 +2489,10 @@ packages:
resolution: {integrity: sha512-I1gW7woqwU6rdlgwj6XXAKcreJ5ptRKI2WpLdZErkrPmaRG/jMZx/yjZrG4PWdIEuZ4ZmYnRsoXbKN6ilCknQw==}
hasBin: true
'@nrwl/tao@19.5.6':
resolution: {integrity: sha512-p1bxEjW32bIHAiTp+PVdJpa2V9En2s9FigepHXyvmT2Aipisz96CKiDjexhPTjOZHUKtqA9FgmOIuVl3sBME3g==}
hasBin: true
'@nrwl/workspace@19.3.2':
resolution: {integrity: sha512-6gV4qa38t3GyRKmO2PLcamDcFRD7I3wl6/R0/E1eC8Wm6K2oBzjOIV5ALpz4iC4LOln88IL+AjuQdG6kdtfXlA==}
@@ -2501,60 +2520,120 @@ packages:
cpu: [arm64]
os: [darwin]
'@nx/nx-darwin-arm64@19.5.6':
resolution: {integrity: sha512-evEpUq571PQkhaLBR7ul5iqE2l97QS7Q37/rxoBuwJzyQ/QKHfNu5t032bR3KLyEOrv7golT10jMeoQlNeF7eQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@nx/nx-darwin-x64@19.3.2':
resolution: {integrity: sha512-C8s9X5AlVgl3V5PycLdX+75lpAWq0qQs6QUEAnyxrLM9l+/HRecgoW6uZ7tX6Fnd8WGfMIwyahBw4LyZgk6zTw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@nx/nx-darwin-x64@19.5.6':
resolution: {integrity: sha512-o1tu0dOW7TZ80VN9N11FQL/3gHd1+t6NqtEmRClN0/sAh2MZyiBdbXv7UeN5HoKE7HAusiVFIxK3c1lxOvFtsQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@nx/nx-freebsd-x64@19.3.2':
resolution: {integrity: sha512-XeEpEU0iqJ/5cAPMmjqJ0Sdz89ZtDRj4NdksioyhAHri94X5/3lm3lDs4tB3nObT7p3QL7r/HP1itq5DHYmMSQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [freebsd]
'@nx/nx-freebsd-x64@19.5.6':
resolution: {integrity: sha512-IUL0ROGpLUol9cuVJ7VeUvaB/ptxg7DOjMef1+LJeOgxl/SFNa0bj0kKpA/AQwujz6cLI7Ei7xLTVQOboNh1DA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [freebsd]
'@nx/nx-linux-arm-gnueabihf@19.3.2':
resolution: {integrity: sha512-r4Wl0P94QRBUyiexUcfwKxqFXp48avMG3L0no/ZuNWGODbw1w8ppA4vhnkXtXbIaMdaTGx9eIYO7kFJ2SwMCng==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@nx/nx-linux-arm-gnueabihf@19.5.6':
resolution: {integrity: sha512-TGf1+cpWg5QiPEGW5kgxa1fVNyASMuqu+LvQ9CKhNYNz5EPD15yr/k6C0tOjgSXro3wi8TikTeG0Ln2hpmn6pw==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@nx/nx-linux-arm64-gnu@19.3.2':
resolution: {integrity: sha512-oaTC4iS1fXnc61ZgSxwCQ2GGIqY64G22udRqNsX9TOtgrT7UA/mjE3Si01r+0xODimOiB525ueyxdIh1MAu6Vg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@nx/nx-linux-arm64-gnu@19.5.6':
resolution: {integrity: sha512-4hZI5NmnBEAzr3NV/BtlPjbSVffLWGGCJ5tB/JB/NpW/vMtzOPCZ4RvsHuJMPprqHcXOdUnBgZFEcLbEMUXz0A==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@nx/nx-linux-arm64-musl@19.3.2':
resolution: {integrity: sha512-yyO9bTM7FW7HTYsSQlL4lgbAexUBpzfhdK+RkgsCiW+U/5bi+jFRxo/SbqGUL+IVliFavWyRXahMqOOM6nBq/w==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@nx/nx-linux-arm64-musl@19.5.6':
resolution: {integrity: sha512-n0oIBblMN+nlcBUbrFUkRSyzKZVR+G1lzdZ3PuHVwLC664hkbijEBAdF2E321yRfv5ohQVY0UIYDZVFN2XhFUg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@nx/nx-linux-x64-gnu@19.3.2':
resolution: {integrity: sha512-DC+llVdL4toLjQkDGBgzoCe26FWIOT+SzRdVcKePoNliZ4jDhkOh3+p75NEIOEcDUgoE9M2iCWEBUjkV978ogw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@nx/nx-linux-x64-gnu@19.5.6':
resolution: {integrity: sha512-IuoNo1bDHyJEeHom/n2m4+AA+UQ+Rlryvt9+bTdADclSFjmBLYCgbJwQRy7q9+vQk2mpQm0pQJv4d3XKCpDH+g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@nx/nx-linux-x64-musl@19.3.2':
resolution: {integrity: sha512-Wun4v+kuuqv20tJiCENkHGisDqfx029bFufqxx2IOe9TvD6vK4rMMkFVPUoK3FP8EBdaMW4nrR0ZucTFnStl6w==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@nx/nx-linux-x64-musl@19.5.6':
resolution: {integrity: sha512-FXtB8m/CSRkXLtDOAGfImO9OCUDIwYBssnvCVqX6PyPTBaVWo/GvX1O9WRbXSqSVIaJJTPn1aY/p6vptlGbDFw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@nx/nx-win32-arm64-msvc@19.3.2':
resolution: {integrity: sha512-bNVf6eu5rWFjHvn0rKHeZYlHUcs3naXvvbduW1g0DPkHG6mt8FYffQmyboN+CSeBd/uWDPNyTUekVWwU7PjtLA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@nx/nx-win32-arm64-msvc@19.5.6':
resolution: {integrity: sha512-aIDU84rjvxoqyUDIdN4VwS91Yec8bAtXOxjOFlF2acY2tXh0RjzmM+mkEP44nVAzFy0V1/cjzBKb6643FsEqdA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@nx/nx-win32-x64-msvc@19.3.2':
resolution: {integrity: sha512-8DD5BPa5YrxTOKL3HTAgEd+IXNqRtJfwvbrn2MbOMNMyoMG9Zi5yhFvTH/HTT9Tz6VUHvXP16QWYA3R7eFi7Gg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@nx/nx-win32-x64-msvc@19.5.6':
resolution: {integrity: sha512-zWB/2TjhNYKHbuPh++5hYitno3EpSFXrPND0I0VLec27WW7voRY9XQFFznA3omForU4FfmVhITcKCqzIb3EtpA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@nx/workspace@19.3.2':
resolution: {integrity: sha512-gam41l0hFftYIYTt8eTvZjh+ZWo62HO2p/efqZuFIa/1ZsXF1XG8MDRkCSh5Wfjh1f0jS2ma8HwPV3e8TJm2lw==}
@@ -3780,6 +3859,12 @@ packages:
peerDependencies:
'@tiptap/core': ^2.5.4
'@tiptap/html@2.5.4':
resolution: {integrity: sha512-Fcvsa7kkO+Id7WBFimDN5zdHksVGVnyHnffaN/PaAgbKmzP53BC38Pd0XuHS+KL6btqQIFE2GlqNYnyIos7i+g==}
peerDependencies:
'@tiptap/core': ^2.5.4
'@tiptap/pm': ^2.5.4
'@tiptap/pm@2.5.4':
resolution: {integrity: sha512-oFIsuniptdUXn93x4aM2sVN3hYKo9Fj55zAkYrWhwxFYUYcPxd5ibra2we+wRK5TaiPu098wpC+yMSTZ/KKMpA==}
@@ -3812,6 +3897,9 @@ packages:
'@tsconfig/node16@1.0.4':
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
'@tybys/wasm-util@0.9.0':
resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
'@types/babel__core@7.20.5':
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
@@ -4757,6 +4845,10 @@ packages:
css-to-mat@1.1.1:
resolution: {integrity: sha512-kvpxFYZb27jRd2vium35G7q5XZ2WJ9rWjDUMNT36M3Hc41qCrLXFM5iEKMGXcrPsKfXEN+8l/riB4QzwwwiEyQ==}
css-what@6.1.0:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
@@ -6178,8 +6270,8 @@ packages:
makeerror@1.0.12:
resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
markdown-it@14.0.0:
resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==}
markdown-it@14.1.0:
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
hasBin: true
marked@13.0.2:
@@ -6456,6 +6548,18 @@ packages:
'@swc/core':
optional: true
nx@19.5.6:
resolution: {integrity: sha512-qjP17aa5ViXSpo0bDgJ7O3b8EY/0+PbX7ZIKvG1g6qasohtfM1y4Sx2bbSow0zCKU0+r1LnR53Q0lyX4OOgtUg==}
hasBin: true
peerDependencies:
'@swc-node/register': ^1.8.0
'@swc/core': ^1.3.85
peerDependenciesMeta:
'@swc-node/register':
optional: true
'@swc/core':
optional: true
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -7790,8 +7894,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
uc.micro@2.0.0:
resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==}
uc.micro@2.1.0:
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
uid2@1.0.0:
resolution: {integrity: sha512-+I6aJUv63YAcY9n4mQreLUt0d4lvwkkopDNmpomkAUz0fAkEMV9pRWxN0EjhW1YfRhcuyHg2v3mwddCDW1+LFQ==}
@@ -8160,6 +8264,10 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
zeed-dom@0.10.11:
resolution: {integrity: sha512-7ukbu6aQKx34OQ7PfUIxOuAhk2MvyZY/t4/IJsVzy76zuMzfhE74+Dbyp8SHiUJPTPkF0FflP1KVrGJ7gk9IHw==}
engines: {node: '>=14.13.1'}
zod@3.23.8:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
@@ -8263,7 +8371,7 @@ snapshots:
'@aws-sdk/client-sso-oidc': 3.600.0(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/client-sts': 3.600.0
'@aws-sdk/core': 3.598.0
'@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/middleware-bucket-endpoint': 3.598.0
'@aws-sdk/middleware-expect-continue': 3.598.0
'@aws-sdk/middleware-flexible-checksums': 3.598.0
@@ -8324,7 +8432,7 @@ snapshots:
'@aws-crypto/sha256-js': 5.2.0
'@aws-sdk/client-sts': 3.600.0
'@aws-sdk/core': 3.598.0
'@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/middleware-host-header': 3.598.0
'@aws-sdk/middleware-logger': 3.598.0
'@aws-sdk/middleware-recursion-detection': 3.598.0
@@ -8413,7 +8521,7 @@ snapshots:
'@aws-crypto/sha256-js': 5.2.0
'@aws-sdk/client-sso-oidc': 3.600.0(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/core': 3.598.0
'@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/middleware-host-header': 3.598.0
'@aws-sdk/middleware-logger': 3.598.0
'@aws-sdk/middleware-recursion-detection': 3.598.0
@@ -8481,13 +8589,13 @@ snapshots:
'@smithy/util-stream': 3.0.4
tslib: 2.6.2
'@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0)':
'@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0)':
dependencies:
'@aws-sdk/client-sts': 3.600.0
'@aws-sdk/credential-provider-env': 3.598.0
'@aws-sdk/credential-provider-http': 3.598.0
'@aws-sdk/credential-provider-process': 3.598.0
'@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0)
'@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))
'@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/types': 3.598.0
'@smithy/credential-provider-imds': 3.1.2
@@ -8499,13 +8607,13 @@ snapshots:
- '@aws-sdk/client-sso-oidc'
- aws-crt
'@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0)':
'@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0)':
dependencies:
'@aws-sdk/credential-provider-env': 3.598.0
'@aws-sdk/credential-provider-http': 3.598.0
'@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/credential-provider-process': 3.598.0
'@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0)
'@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))
'@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/types': 3.598.0
'@smithy/credential-provider-imds': 3.1.2
@@ -8526,10 +8634,10 @@ snapshots:
'@smithy/types': 3.2.0
tslib: 2.6.2
'@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)':
'@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))':
dependencies:
'@aws-sdk/client-sso': 3.598.0
'@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0)
'@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))
'@aws-sdk/types': 3.598.0
'@smithy/property-provider': 3.1.2
'@smithy/shared-ini-file-loader': 3.1.2
@@ -8666,7 +8774,7 @@ snapshots:
'@smithy/types': 3.2.0
tslib: 2.6.2
'@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)':
'@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))':
dependencies:
'@aws-sdk/client-sso-oidc': 3.600.0(@aws-sdk/client-sts@3.600.0)
'@aws-sdk/types': 3.598.0
@@ -9799,6 +9907,19 @@ snapshots:
'@egjs/list-differ@1.0.1': {}
'@emnapi/core@1.2.0':
dependencies:
'@emnapi/wasi-threads': 1.0.1
tslib: 2.6.2
'@emnapi/runtime@1.2.0':
dependencies:
tslib: 2.6.2
'@emnapi/wasi-threads@1.0.1':
dependencies:
tslib: 2.6.2
'@emoji-mart/data@1.2.1': {}
'@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.3.1)':
@@ -10167,7 +10288,7 @@ snapshots:
jest-util: 29.7.0
slash: 3.0.0
'@jest/core@29.7.0(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))':
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
@@ -10181,7 +10302,7 @@ snapshots:
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
jest-config: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -10457,6 +10578,12 @@ snapshots:
'@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2':
optional: true
'@napi-rs/wasm-runtime@0.2.4':
dependencies:
'@emnapi/core': 1.2.0
'@emnapi/runtime': 1.2.0
'@tybys/wasm-util': 0.9.0
'@nestjs/bull-shared@10.1.1(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.9(@nestjs/common@10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.3.9)(reflect-metadata@0.2.2)(rxjs@7.8.1))':
dependencies:
'@nestjs/common': 10.3.9(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@@ -10681,15 +10808,21 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
'@nrwl/devkit@19.3.2(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))':
'@nrwl/devkit@19.3.2(nx@19.3.2(@swc/core@1.5.25))':
dependencies:
'@nx/devkit': 19.3.2(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))
'@nx/devkit': 19.3.2(nx@19.3.2(@swc/core@1.5.25))
transitivePeerDependencies:
- nx
'@nrwl/js@19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))(typescript@5.5.2)':
'@nrwl/devkit@19.3.2(nx@19.5.6(@swc/core@1.5.25))':
dependencies:
'@nx/js': 19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))(typescript@5.5.2)
'@nx/devkit': 19.3.2(nx@19.5.6(@swc/core@1.5.25))
transitivePeerDependencies:
- nx
'@nrwl/js@19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25)(@types/node@20.14.9)(nx@19.5.6(@swc/core@1.5.25))(typescript@5.5.2)':
dependencies:
'@nx/js': 19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25)(@types/node@20.14.9)(nx@19.5.6(@swc/core@1.5.25))(typescript@5.5.2)
transitivePeerDependencies:
- '@babel/traverse'
- '@swc-node/register'
@@ -10702,18 +10835,27 @@ snapshots:
- typescript
- verdaccio
'@nrwl/tao@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))':
'@nrwl/tao@19.3.2(@swc/core@1.5.25)':
dependencies:
nx: 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
nx: 19.3.2(@swc/core@1.5.25)
tslib: 2.6.2
transitivePeerDependencies:
- '@swc-node/register'
- '@swc/core'
- debug
'@nrwl/workspace@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))':
'@nrwl/tao@19.5.6(@swc/core@1.5.25)':
dependencies:
'@nx/workspace': 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
nx: 19.5.6(@swc/core@1.5.25)
tslib: 2.6.2
transitivePeerDependencies:
- '@swc-node/register'
- '@swc/core'
- debug
'@nrwl/workspace@19.3.2(@swc/core@1.5.25)':
dependencies:
'@nx/workspace': 19.3.2(@swc/core@1.5.25)
transitivePeerDependencies:
- '@swc-node/register'
- '@swc/core'
@@ -10727,20 +10869,33 @@ snapshots:
transitivePeerDependencies:
- encoding
'@nx/devkit@19.3.2(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))':
'@nx/devkit@19.3.2(nx@19.3.2(@swc/core@1.5.25))':
dependencies:
'@nrwl/devkit': 19.3.2(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))
'@nrwl/devkit': 19.3.2(nx@19.3.2(@swc/core@1.5.25))
ejs: 3.1.9
enquirer: 2.3.6
ignore: 5.3.1
minimatch: 9.0.3
nx: 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
nx: 19.3.2(@swc/core@1.5.25)
semver: 7.6.2
tmp: 0.2.1
tslib: 2.6.2
yargs-parser: 21.1.1
'@nx/js@19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))(typescript@5.5.2)':
'@nx/devkit@19.3.2(nx@19.5.6(@swc/core@1.5.25))':
dependencies:
'@nrwl/devkit': 19.3.2(nx@19.5.6(@swc/core@1.5.25))
ejs: 3.1.9
enquirer: 2.3.6
ignore: 5.3.1
minimatch: 9.0.3
nx: 19.5.6(@swc/core@1.5.25)
semver: 7.6.2
tmp: 0.2.1
tslib: 2.6.2
yargs-parser: 21.1.1
'@nx/js@19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25)(@types/node@20.14.9)(nx@19.5.6(@swc/core@1.5.25))(typescript@5.5.2)':
dependencies:
'@babel/core': 7.24.6
'@babel/plugin-proposal-decorators': 7.23.7(@babel/core@7.24.6)
@@ -10749,9 +10904,9 @@ snapshots:
'@babel/preset-env': 7.23.8(@babel/core@7.24.6)
'@babel/preset-typescript': 7.23.3(@babel/core@7.24.6)
'@babel/runtime': 7.23.7
'@nrwl/js': 19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))(typescript@5.5.2)
'@nx/devkit': 19.3.2(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))
'@nx/workspace': 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
'@nrwl/js': 19.3.2(@babel/traverse@7.24.6)(@swc/core@1.5.25)(@types/node@20.14.9)(nx@19.5.6(@swc/core@1.5.25))(typescript@5.5.2)
'@nx/devkit': 19.3.2(nx@19.5.6(@swc/core@1.5.25))
'@nx/workspace': 19.3.2(@swc/core@1.5.25)
babel-plugin-const-enum: 1.2.0(@babel/core@7.24.6)
babel-plugin-macros: 2.8.0
babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.24.6)(@babel/traverse@7.24.6)
@@ -10768,7 +10923,7 @@ snapshots:
ora: 5.3.0
semver: 7.6.2
source-map-support: 0.5.19
ts-node: 10.9.1(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)
ts-node: 10.9.1(@swc/core@1.5.25)(@types/node@20.14.9)(typescript@5.5.2)
tsconfig-paths: 4.2.0
tslib: 2.6.2
transitivePeerDependencies:
@@ -10785,40 +10940,70 @@ snapshots:
'@nx/nx-darwin-arm64@19.3.2':
optional: true
'@nx/nx-darwin-arm64@19.5.6':
optional: true
'@nx/nx-darwin-x64@19.3.2':
optional: true
'@nx/nx-darwin-x64@19.5.6':
optional: true
'@nx/nx-freebsd-x64@19.3.2':
optional: true
'@nx/nx-freebsd-x64@19.5.6':
optional: true
'@nx/nx-linux-arm-gnueabihf@19.3.2':
optional: true
'@nx/nx-linux-arm-gnueabihf@19.5.6':
optional: true
'@nx/nx-linux-arm64-gnu@19.3.2':
optional: true
'@nx/nx-linux-arm64-gnu@19.5.6':
optional: true
'@nx/nx-linux-arm64-musl@19.3.2':
optional: true
'@nx/nx-linux-arm64-musl@19.5.6':
optional: true
'@nx/nx-linux-x64-gnu@19.3.2':
optional: true
'@nx/nx-linux-x64-gnu@19.5.6':
optional: true
'@nx/nx-linux-x64-musl@19.3.2':
optional: true
'@nx/nx-linux-x64-musl@19.5.6':
optional: true
'@nx/nx-win32-arm64-msvc@19.3.2':
optional: true
'@nx/nx-win32-arm64-msvc@19.5.6':
optional: true
'@nx/nx-win32-x64-msvc@19.3.2':
optional: true
'@nx/workspace@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))':
'@nx/nx-win32-x64-msvc@19.5.6':
optional: true
'@nx/workspace@19.3.2(@swc/core@1.5.25)':
dependencies:
'@nrwl/workspace': 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
'@nx/devkit': 19.3.2(nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)))
'@nrwl/workspace': 19.3.2(@swc/core@1.5.25)
'@nx/devkit': 19.3.2(nx@19.3.2(@swc/core@1.5.25))
chalk: 4.1.2
enquirer: 2.3.6
nx: 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
nx: 19.3.2(@swc/core@1.5.25)
tslib: 2.6.2
yargs-parser: 21.1.1
transitivePeerDependencies:
@@ -12059,6 +12244,12 @@ snapshots:
dependencies:
'@tiptap/core': 2.5.4(@tiptap/pm@2.5.4)
'@tiptap/html@2.5.4(@tiptap/core@2.5.4(@tiptap/pm@2.5.4))(@tiptap/pm@2.5.4)':
dependencies:
'@tiptap/core': 2.5.4(@tiptap/pm@2.5.4)
'@tiptap/pm': 2.5.4
zeed-dom: 0.10.11
'@tiptap/pm@2.5.4':
dependencies:
prosemirror-changeset: 2.2.1
@@ -12128,6 +12319,10 @@ snapshots:
'@tsconfig/node16@1.0.4': {}
'@tybys/wasm-util@0.9.0':
dependencies:
tslib: 2.6.2
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.24.6
@@ -13230,13 +13425,13 @@ snapshots:
optionalDependencies:
typescript: 5.3.3
create-jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
create-jest@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
jest-config: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -13272,6 +13467,8 @@ snapshots:
'@daybrush/utils': 1.13.0
'@scena/matrix': 1.1.1
css-what@6.1.0: {}
cssesc@3.0.0: {}
cssstyle@3.0.0:
@@ -13299,9 +13496,7 @@ snapshots:
decimal.js@10.4.3: {}
dedent@1.5.1(babel-plugin-macros@2.8.0):
optionalDependencies:
babel-plugin-macros: 2.8.0
dedent@1.5.1: {}
deep-is@0.1.4: {}
@@ -14381,7 +14576,7 @@ snapshots:
jest-util: 29.7.0
p-limit: 3.1.0
jest-circus@29.7.0(babel-plugin-macros@2.8.0):
jest-circus@29.7.0:
dependencies:
'@jest/environment': 29.7.0
'@jest/expect': 29.7.0
@@ -14390,7 +14585,7 @@ snapshots:
'@types/node': 20.14.9
chalk: 4.1.2
co: 4.6.0
dedent: 1.5.1(babel-plugin-macros@2.8.0)
dedent: 1.5.1
is-generator-fn: 2.1.0
jest-each: 29.7.0
jest-matcher-utils: 29.7.0
@@ -14407,16 +14602,16 @@ snapshots:
- babel-plugin-macros
- supports-color
jest-cli@29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
jest-cli@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
dependencies:
'@jest/core': 29.7.0(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
create-jest: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
create-jest: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
exit: 0.1.2
import-local: 3.1.0
jest-config: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
jest-config: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -14426,7 +14621,7 @@ snapshots:
- supports-color
- ts-node
jest-config@29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
jest-config@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
dependencies:
'@babel/core': 7.24.6
'@jest/test-sequencer': 29.7.0
@@ -14437,7 +14632,7 @@ snapshots:
deepmerge: 4.3.1
glob: 7.2.3
graceful-fs: 4.2.11
jest-circus: 29.7.0(babel-plugin-macros@2.8.0)
jest-circus: 29.7.0
jest-environment-node: 29.7.0
jest-get-type: 29.6.3
jest-regex-util: 29.6.3
@@ -14678,12 +14873,12 @@ snapshots:
merge-stream: 2.0.0
supports-color: 8.1.1
jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
jest@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
dependencies:
'@jest/core': 29.7.0(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
'@jest/types': 29.6.3
import-local: 3.1.0
jest-cli: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
jest-cli: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -14899,7 +15094,7 @@ snapshots:
linkify-it@5.0.0:
dependencies:
uc.micro: 2.0.0
uc.micro: 2.1.0
linkifyjs@4.1.3: {}
@@ -14994,14 +15189,14 @@ snapshots:
dependencies:
tmpl: 1.0.5
markdown-it@14.0.0:
markdown-it@14.1.0:
dependencies:
argparse: 2.0.1
entities: 4.5.0
linkify-it: 5.0.0
mdurl: 2.0.0
punycode.js: 2.3.1
uc.micro: 2.0.0
uc.micro: 2.1.0
marked@13.0.2: {}
@@ -15146,7 +15341,7 @@ snapshots:
kysely: 0.27.3
reflect-metadata: 0.2.2
next@14.1.4(@babel/core@7.24.5)(babel-plugin-macros@2.8.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
next@14.1.4(@babel/core@7.24.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@next/env': 14.1.4
'@swc/helpers': 0.5.2
@@ -15156,7 +15351,7 @@ snapshots:
postcss: 8.4.31
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
styled-jsx: 5.1.1(@babel/core@7.24.5)(babel-plugin-macros@2.8.0)(react@18.3.1)
styled-jsx: 5.1.1(@babel/core@7.24.5)(react@18.3.1)
optionalDependencies:
'@next/swc-darwin-arm64': 14.1.4
'@next/swc-darwin-x64': 14.1.4
@@ -15228,9 +15423,9 @@ snapshots:
nwsapi@2.2.10: {}
nx@19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11)):
nx@19.3.2(@swc/core@1.5.25):
dependencies:
'@nrwl/tao': 19.3.2(@swc/core@1.5.25(@swc/helpers@0.5.11))
'@nrwl/tao': 19.3.2(@swc/core@1.5.25)
'@yarnpkg/lockfile': 1.1.0
'@yarnpkg/parsers': 3.0.0-rc.46
'@zkochan/js-yaml': 0.0.7
@@ -15279,6 +15474,58 @@ snapshots:
transitivePeerDependencies:
- debug
nx@19.5.6(@swc/core@1.5.25):
dependencies:
'@napi-rs/wasm-runtime': 0.2.4
'@nrwl/tao': 19.5.6(@swc/core@1.5.25)
'@yarnpkg/lockfile': 1.1.0
'@yarnpkg/parsers': 3.0.0-rc.46
'@zkochan/js-yaml': 0.0.7
axios: 1.7.2
chalk: 4.1.2
cli-cursor: 3.1.0
cli-spinners: 2.6.1
cliui: 8.0.1
dotenv: 16.4.5
dotenv-expand: 11.0.6
enquirer: 2.3.6
figures: 3.2.0
flat: 5.0.2
front-matter: 4.0.2
fs-extra: 11.2.0
ignore: 5.3.1
jest-diff: 29.7.0
jsonc-parser: 3.2.0
lines-and-columns: 2.0.4
minimatch: 9.0.3
node-machine-id: 1.1.12
npm-run-path: 4.0.1
open: 8.4.2
ora: 5.3.0
semver: 7.6.2
string-width: 4.2.3
strong-log-transformer: 2.1.0
tar-stream: 2.2.0
tmp: 0.2.1
tsconfig-paths: 4.2.0
tslib: 2.6.2
yargs: 17.7.2
yargs-parser: 21.1.1
optionalDependencies:
'@nx/nx-darwin-arm64': 19.5.6
'@nx/nx-darwin-x64': 19.5.6
'@nx/nx-freebsd-x64': 19.5.6
'@nx/nx-linux-arm-gnueabihf': 19.5.6
'@nx/nx-linux-arm64-gnu': 19.5.6
'@nx/nx-linux-arm64-musl': 19.5.6
'@nx/nx-linux-x64-gnu': 19.5.6
'@nx/nx-linux-x64-musl': 19.5.6
'@nx/nx-win32-arm64-msvc': 19.5.6
'@nx/nx-win32-x64-msvc': 19.5.6
'@swc/core': 1.5.25(@swc/helpers@0.5.11)
transitivePeerDependencies:
- debug
object-assign@4.1.1: {}
object-hash@3.0.0: {}
@@ -15690,7 +15937,7 @@ snapshots:
prosemirror-markdown@1.13.0:
dependencies:
markdown-it: 14.0.0
markdown-it: 14.1.0
prosemirror-model: 1.22.1
prosemirror-menu@1.2.4:
@@ -15821,7 +16068,7 @@ snapshots:
react: 18.3.1
scheduler: 0.23.2
react-email@2.1.4(@swc/helpers@0.5.11)(babel-plugin-macros@2.8.0)(eslint@9.5.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
react-email@2.1.4(@swc/helpers@0.5.11)(eslint@9.5.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)):
dependencies:
'@babel/core': 7.24.5
'@babel/parser': 7.24.5
@@ -15848,7 +16095,7 @@ snapshots:
glob: 10.3.4
log-symbols: 4.1.0
mime-types: 2.1.35
next: 14.1.4(@babel/core@7.24.5)(babel-plugin-macros@2.8.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next: 14.1.4(@babel/core@7.24.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
normalize-path: 3.0.0
ora: 5.4.1
postcss: 8.4.38
@@ -16449,13 +16696,12 @@ snapshots:
minimist: 1.2.8
through: 2.3.8
styled-jsx@5.1.1(@babel/core@7.24.5)(babel-plugin-macros@2.8.0)(react@18.3.1):
styled-jsx@5.1.1(@babel/core@7.24.5)(react@18.3.1):
dependencies:
client-only: 0.0.1
react: 18.3.1
optionalDependencies:
'@babel/core': 7.24.5
babel-plugin-macros: 2.8.0
sucrase@3.35.0:
dependencies:
@@ -16567,6 +16813,18 @@ snapshots:
mkdirp: 1.0.4
yallist: 4.0.0
terser-webpack-plugin@5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)(webpack@5.91.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.2
terser: 5.29.2
webpack: 5.91.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)
optionalDependencies:
'@swc/core': 1.3.101(@swc/helpers@0.5.11)
esbuild: 0.19.11
terser-webpack-plugin@5.3.10(@swc/core@1.5.25(@swc/helpers@0.5.11))(webpack@5.90.1(@swc/core@1.5.25(@swc/helpers@0.5.11))):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
@@ -16578,17 +16836,6 @@ snapshots:
optionalDependencies:
'@swc/core': 1.5.25(@swc/helpers@0.5.11)
terser-webpack-plugin@5.3.10(@swc/core@1.5.25(@swc/helpers@0.5.11))(webpack@5.91.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.2
terser: 5.29.2
webpack: 5.91.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)
optionalDependencies:
'@swc/core': 1.5.25(@swc/helpers@0.5.11)
terser@5.29.2:
dependencies:
'@jridgewell/source-map': 0.3.6
@@ -16669,11 +16916,11 @@ snapshots:
ts-interface-checker@0.1.13: {}
ts-jest@29.1.5(@babel/core@7.24.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.3))(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)))(typescript@5.5.2):
ts-jest@29.1.5(@babel/core@7.24.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.3))(jest@29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2)))(typescript@5.5.2):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
jest: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@2.8.0)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
jest: 29.7.0(@types/node@20.14.9)(ts-node@10.9.2(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2))
jest-util: 29.7.0
json5: 2.2.3
lodash.memoize: 4.1.2
@@ -16697,7 +16944,7 @@ snapshots:
typescript: 5.5.2
webpack: 5.91.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)
ts-node@10.9.1(@swc/core@1.5.25(@swc/helpers@0.5.11))(@types/node@20.14.9)(typescript@5.5.2):
ts-node@10.9.1(@swc/core@1.5.25)(@types/node@20.14.9)(typescript@5.5.2):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.9
@@ -16778,7 +17025,7 @@ snapshots:
typescript@5.5.2: {}
uc.micro@2.0.0: {}
uc.micro@2.1.0: {}
uid2@1.0.0: {}
@@ -16977,7 +17224,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
terser-webpack-plugin: 5.3.10(@swc/core@1.5.25(@swc/helpers@0.5.11))(webpack@5.91.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11))
terser-webpack-plugin: 5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)(webpack@5.91.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11))
watchpack: 2.4.1
webpack-sources: 3.2.3
transitivePeerDependencies:
@@ -17101,4 +17348,8 @@ snapshots:
yocto-queue@0.1.0: {}
zeed-dom@0.10.11:
dependencies:
css-what: 6.1.0
zod@3.23.8: {}