From 62493700c80715d304b2a3b36726955b534623da Mon Sep 17 00:00:00 2001 From: "benjamin.747" Date: Fri, 6 Jun 2025 09:21:44 +0800 Subject: [PATCH 1/2] feat(UI): migrate sync server to mega --- .github/workflows/base.yml | 3 +- .github/workflows/mono-engine-deploy.yml | 4 +- .github/workflows/web-deploy.yml | 5 +- .github/workflows/web-sync-server-deploy.yml | 70 ++ moon/apps/sync-server/.gitignore | 1 + moon/apps/sync-server/Dockerfile | 61 ++ moon/apps/sync-server/README.md | 18 + moon/apps/sync-server/debug-script.js | 1 + moon/apps/sync-server/package.json | 34 + moon/apps/sync-server/sentry.properties | 2 + moon/apps/sync-server/src/api.ts | 15 + moon/apps/sync-server/src/database.ts | 144 ++++ moon/apps/sync-server/src/index.ts | 62 ++ moon/apps/sync-server/src/types.ts | 15 + moon/apps/sync-server/tsconfig.json | 15 + moon/apps/sync-server/tsup.config.ts | 9 + moon/apps/sync-server/turbo.json | 16 + moon/apps/web/next.config.js | 2 + moon/packages/config/src/index.ts | 4 +- moon/pnpm-lock.yaml | 650 ++++++++++++++++++- 20 files changed, 1115 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/web-sync-server-deploy.yml create mode 100644 moon/apps/sync-server/.gitignore create mode 100644 moon/apps/sync-server/Dockerfile create mode 100644 moon/apps/sync-server/README.md create mode 100644 moon/apps/sync-server/debug-script.js create mode 100644 moon/apps/sync-server/package.json create mode 100644 moon/apps/sync-server/sentry.properties create mode 100644 moon/apps/sync-server/src/api.ts create mode 100644 moon/apps/sync-server/src/database.ts create mode 100644 moon/apps/sync-server/src/index.ts create mode 100644 moon/apps/sync-server/src/types.ts create mode 100644 moon/apps/sync-server/tsconfig.json create mode 100644 moon/apps/sync-server/tsup.config.ts create mode 100644 moon/apps/sync-server/turbo.json diff --git a/.github/workflows/base.yml b/.github/workflows/base.yml index 39e158300..c905e8139 100644 --- a/.github/workflows/base.yml +++ b/.github/workflows/base.yml @@ -21,8 +21,7 @@ on: - 'scripts/**' - 'third-party/**' - 'toolchains/**' - - '.github/workflows/web-test.yml' - - '.github/workflows/web-deploy.yml' + - '.github/workflows/web-**' name: Base GitHub Action for Check, Test and Lints diff --git a/.github/workflows/mono-engine-deploy.yml b/.github/workflows/mono-engine-deploy.yml index a42794a26..b9f8e7c61 100644 --- a/.github/workflows/mono-engine-deploy.yml +++ b/.github/workflows/mono-engine-deploy.yml @@ -15,8 +15,8 @@ on: - 'scripts/**' - 'third-party/**' - 'toolchains/**' - - '.github/workflows/web-test.yml' - - '.github/workflows/web-deploy.yml' + - '.github/workflows/web-**' + - '.github/workflows/mono-engine-deploy.yml' env: AWS_ECS_CLUSTER_NAME: ${{ secrets.AWS_ECS_CLUSTER_NAME }} diff --git a/.github/workflows/web-deploy.yml b/.github/workflows/web-deploy.yml index 53d0a8d8a..bcd4bf535 100644 --- a/.github/workflows/web-deploy.yml +++ b/.github/workflows/web-deploy.yml @@ -4,8 +4,9 @@ on: branches: - main paths: - - '.github/workflows/web-*.yml' - - 'moon/**' + - '.github/workflows/web-deploy.yml' + - 'moon/apps/web/**' + - 'moon/packages/**' env: TIPTAP_PRIVATE_REGISTRY_KEY: ${{ secrets.TIPTAP_PRIVATE_REGISTRY_KEY }} diff --git a/.github/workflows/web-sync-server-deploy.yml b/.github/workflows/web-sync-server-deploy.yml new file mode 100644 index 000000000..d2e3e55e4 --- /dev/null +++ b/.github/workflows/web-sync-server-deploy.yml @@ -0,0 +1,70 @@ +name: Web Sync Server deploy +on: + push: + branches: + - main + paths: + - '.github/workflows/web-sycn-server*' + - 'moon/apps/sync-server/**' + - 'moon/packages/editor/**' + - 'moon/packages/config/**' + - 'moon/packages/types/**' + +env: + TIPTAP_PRIVATE_REGISTRY_KEY: ${{ secrets.TIPTAP_PRIVATE_REGISTRY_KEY }} + AWS_ECS_CLUSTER_NAME: ${{ secrets.AWS_ECS_CLUSTER_NAME }} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + web-sync-server-deploy: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.base.ref }} + + - uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + + - name: Login to Amazon ECR Public + id: login-ecr-public + uses: aws-actions/amazon-ecr-login@v2 + with: + registry-type: public + + - name: Build, tag, and push docker image to Amazon ECR Public + working-directory: moon + env: + REGISTRY: ${{ steps.login-ecr-public.outputs.registry }} + REGISTRY_ALIAS: m8q5m4u3 + REPOSITORY: mega + IMAGE_TAG: mega-web-sync-server-0.1.0-pre-release + run: | + docker build \ + -f apps/sync-server/Dockerfile \ + -t $REGISTRY/$REGISTRY_ALIAS/$REPOSITORY:$IMAGE_TAG . + docker push $REGISTRY/$REGISTRY_ALIAS/$REPOSITORY:$IMAGE_TAG + + - name: Force ECS redeploy + run: | + aws ecs update-service \ + --cluster ${{ secrets.AWS_ECS_CLUSTER_NAME }} \ + --service mega-web-sync-server-dev-service-v3hdlyk8 \ + --force-new-deployment + env: + AWS_REGION: ap-southeast-2 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/moon/apps/sync-server/.gitignore b/moon/apps/sync-server/.gitignore new file mode 100644 index 000000000..53c37a166 --- /dev/null +++ b/moon/apps/sync-server/.gitignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/moon/apps/sync-server/Dockerfile b/moon/apps/sync-server/Dockerfile new file mode 100644 index 000000000..6e22e0337 --- /dev/null +++ b/moon/apps/sync-server/Dockerfile @@ -0,0 +1,61 @@ +# syntax = docker/dockerfile:1 + +FROM node:22-slim as base + +# configure pnpm +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + + +# ENV SENTRY_PROPERTIES=sentry.properties + +# Throw-away build stage to reduce size of final image +FROM base as builder +# Install packages needed to build node modules +RUN apt-get update -qq && \ + apt-get install -y build-essential pkg-config python-is-python3 ca-certificates +WORKDIR /app +RUN pnpm install turbo@2.0.9 --global +COPY . . +RUN turbo prune @gitmono/sync-server --docker +WORKDIR /app + + +FROM base AS installer +WORKDIR /app +COPY --from=builder /app/out/json/ . +COPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml + +RUN pnpm config set "@tiptap-pro:registry" https://registry.tiptap.dev/ +RUN pnpm config set "//registry.tiptap.dev/:_authToken" CjqFil0n7z4GGur+RPric21fBBeSB4R4FoNdRYOE1bQEz6AXLCoANCc+o9rLIg6Q +RUN pnpm install + +COPY --from=builder /app/out/full/ . + +RUN npx turbo run build --filter=@gitmono/sync-server + +# ARG SENTRY_AUTH_TOKEN +# ARG SENTRY_ORG +# ARG SENTRY_PROJECT + +RUN apt-get update -y && apt-get install -y ca-certificates + +# RUN SENTRY_AUTH_TOKEN=${SENTRY_AUTH_TOKEN} SENTRY_ORG=${SENTRY_ORG} SENTRY_PROJECT=${SENTRY_PROJECT} npx turbo run sentry:sourcemaps --filter=@gitmono/sync-server + + +FROM base AS runner + +# Set production environment +ENV NODE_ENV="production" + +WORKDIR /app/apps/sync-server + +# Copy built application +COPY --from=installer /app /app + +# Start the server by default, this can be overwritten at runtime +EXPOSE 9000 +ENV PORT 9000 + +ENTRYPOINT [ "node", "dist/index.mjs" ] diff --git a/moon/apps/sync-server/README.md b/moon/apps/sync-server/README.md new file mode 100644 index 000000000..78f0057a9 --- /dev/null +++ b/moon/apps/sync-server/README.md @@ -0,0 +1,18 @@ +# sync-server + +## Troubleshooting + +To test the Docker build locally, run the following command in your terminal (from the repo root): + +``` +docker build -f apps/sync-server/Dockerfile . --build-arg SENTRY_AUTH_TOKEN= +``` + +> [!Note] +> Be sure to replace `` with the auth token on the Fly instance. You can get this easily like so: + +``` +cd apps/sync-server +fly ssh console +echo $SENTRY_AUTH_TOKEN +``` diff --git a/moon/apps/sync-server/debug-script.js b/moon/apps/sync-server/debug-script.js new file mode 100644 index 000000000..833d40ae6 --- /dev/null +++ b/moon/apps/sync-server/debug-script.js @@ -0,0 +1 @@ +console.log('Hello from my-script!') diff --git a/moon/apps/sync-server/package.json b/moon/apps/sync-server/package.json new file mode 100644 index 000000000..30466e92f --- /dev/null +++ b/moon/apps/sync-server/package.json @@ -0,0 +1,34 @@ +{ + "name": "@gitmono/sync-server", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "tsup", + "clean": "rm -rf .turbo dist node_modules", + "dev": "tsup --watch --onSuccess \"node dist/index.mjs\"", + "sentry:sourcemaps": "sentry-cli sourcemaps inject --org mega --project sync-server ./dist && sentry-cli sourcemaps upload --org mega --project sync-server --log-level=debug ./dist", + "start": "node dist/index.mjs" + }, + "dependencies": { + "@gitmono/editor": "workspace:*", + "@gitmono/types": "workspace:*", + "@hocuspocus/extension-database": "catalog:", + "@hocuspocus/extension-logger": "catalog:", + "@hocuspocus/server": "catalog:", + "@hocuspocus/transformer": "catalog:", + "@sentry/node": "catalog:", + "@tiptap/core": "catalog:", + "@tiptap/html": "catalog:", + "@tiptap/pm": "catalog:", + "dotenv": "catalog:", + "js-base64": "catalog:", + "yjs": "catalog:" + }, + "devDependencies": { + "@gitmono/tsconfig": "workspace:*", + "@flydotio/dockerfile": "catalog:", + "@sentry/cli": "catalog:", + "tsup": "catalog:", + "typescript": "catalog:" + } +} diff --git a/moon/apps/sync-server/sentry.properties b/moon/apps/sync-server/sentry.properties new file mode 100644 index 000000000..e746ff45f --- /dev/null +++ b/moon/apps/sync-server/sentry.properties @@ -0,0 +1,2 @@ +http.verify_ssl=false +auth.token= \ No newline at end of file diff --git a/moon/apps/sync-server/src/api.ts b/moon/apps/sync-server/src/api.ts new file mode 100644 index 000000000..f73654fef --- /dev/null +++ b/moon/apps/sync-server/src/api.ts @@ -0,0 +1,15 @@ +import { Api } from '@gitmono/types' + +let baseUrl = 'http://api.gitmega.com' + +if (process.env.NODE_ENV === 'production') { + baseUrl = 'http://api.gitmega.com' +} + +export const api = new Api({ + baseUrl, + baseApiParams: { + headers: { 'Content-Type': 'application/json' }, + format: 'json' + } +}) diff --git a/moon/apps/sync-server/src/database.ts b/moon/apps/sync-server/src/database.ts new file mode 100644 index 000000000..eea3f8e94 --- /dev/null +++ b/moon/apps/sync-server/src/database.ts @@ -0,0 +1,144 @@ +import { Database } from '@hocuspocus/extension-database' +import { Document } from '@hocuspocus/server' +import { TiptapTransformer } from '@hocuspocus/transformer' +import * as Sentry from '@sentry/node' +import { generateHTML, generateJSON } from '@tiptap/html' +import { fromUint8Array, toUint8Array } from 'js-base64' +import * as Y from 'yjs' + +import { getNoteExtensions } from '@gitmono/editor' + +import { api } from './api' +import { Context } from './types' + +const extensions = getNoteExtensions() + +export function sendVersionToConnections(document: Document, version: number) { + document.connections.forEach((connection) => { + const connectionSchemaVersion = connection.connection.context.schemaVersion ?? 0 + + // Update connections to readOnly if the schema version is lower than the current version + connection.connection.readOnly = connectionSchemaVersion < version + + // Send the schema version to the client + connection.connection.sendStateless( + JSON.stringify({ + type: 'schema', + version + }) + ) + }) +} + +type GetResourceProps = { + token: string + id: string + type: string | null + organization: string +} + +export async function getResource({ token, id, type, organization }: GetResourceProps) { + if (type === 'Note') { + return api.organizations.getNotesSyncState().request(organization, id, { + headers: { Authorization: `Bearer ${token}` } + }) + } +} + +export const database = new Database({ + /** + * Fetch the document state from Campsite, or generate a new document from the existing + * HTML if the document has never been edited before. + */ + async fetch(data) { + const context: Context = data.context + + const id = data.documentName + const organization = data.requestParameters.get('organization') + const type = data.requestParameters.get('type') + + try { + if (!organization) return new Uint8Array() + + const state = await getResource({ token: context.token, id, type, organization }) + + if (!state) { + return new Uint8Array() + } + + sendVersionToConnections(data.document, state.description_schema_version) + + // If there's a state (a.k.a, it has been edited before), return it + if (state.description_state) { + return toUint8Array(state.description_state) + } + + // Otherwise, generate a new state from the HTML + const json = generateJSON(state.description_html, extensions) + const ydoc = TiptapTransformer.toYdoc(json, 'default', extensions) + + return Y.encodeStateAsUpdate(ydoc) + } catch (error) { + Sentry.setContext('document', { + id, + organization, + type + }) + Sentry.setContext('context', { + schemaVersion: context.schemaVersion, + token: context.token + }) + Sentry.captureException(error) + throw error + } + }, + + /** + * Store the document state in Campsite. + */ + async store(data) { + const context: Context = data.context + + const id = data.documentName + const organization = data.requestParameters.get('organization') + const type = data.requestParameters.get('type') + + try { + if (!organization) return + + // Generate a state from the Yjs document + const state = Y.encodeStateAsUpdate(data.document) + const dbDocument = fromUint8Array(state) + + // Generate HTML from the Yjs document + const json = TiptapTransformer.fromYdoc(data.document, 'default') + const html = generateHTML(json, extensions) + + // Push the state (for Y.js) and the HTML (for our API) to Campsite + await api.organizations.putNotesSyncState().request( + organization, + id, + { + description_html: html, + description_state: dbDocument, + description_schema_version: context.schemaVersion + }, + { + headers: { Authorization: `Bearer ${context.token}` } + } + ) + } catch (error) { + Sentry.setContext('document', { + id, + organization, + type + }) + Sentry.setContext('context', { + schemaVersion: context.schemaVersion, + token: context.token + }) + Sentry.captureException(error) + throw error + } + } +}) diff --git a/moon/apps/sync-server/src/index.ts b/moon/apps/sync-server/src/index.ts new file mode 100644 index 000000000..4e35960fc --- /dev/null +++ b/moon/apps/sync-server/src/index.ts @@ -0,0 +1,62 @@ +import { Logger } from '@hocuspocus/extension-logger' +import { Hocuspocus } from '@hocuspocus/server' +import * as Sentry from '@sentry/node' +import * as dotenv from 'dotenv' + +import { database, getResource, sendVersionToConnections } from './database' +import { AuthenticationError, Context } from './types' + + +dotenv.config() + +const server = new Hocuspocus({ + port: parseInt(process.env.PORT || '9000', 10), + + async onAuthenticate(data): Promise { + if (!data.token) { + throw new AuthenticationError('no-token') + } + + const schemaVersion = parseInt(data.requestParameters.get('schemaVersion') || '', 10) + const organization = data.requestParameters.get('organization') + const type = data.requestParameters.get('type') + + if (!organization) { + throw new AuthenticationError('invalid-type') + } + + try { + const state = await getResource({ token: data.token, id: data.documentName, type, organization }) + + if (!state) { + throw new AuthenticationError('invalid-type') + } + + const document = data.instance.documents.get(data.documentName) + + if (document) sendVersionToConnections(document, state.description_schema_version) + data.connection.readOnly = schemaVersion < state.description_schema_version + + return { + token: data.token, + schemaVersion + } + } catch (error) { + Sentry.setContext('document', { + id: data.documentName, + organization, + type + }) + Sentry.setContext('context', { + schemaVersion: schemaVersion, + token: data.token + }) + Sentry.captureException(error) + throw error + } + }, + + extensions: [database, new Logger()] +}) + +server.listen() diff --git a/moon/apps/sync-server/src/types.ts b/moon/apps/sync-server/src/types.ts new file mode 100644 index 000000000..c27bedef7 --- /dev/null +++ b/moon/apps/sync-server/src/types.ts @@ -0,0 +1,15 @@ +export interface Context { + token: string + schemaVersion: number +} + +export type AuthenticationErrorType = 'no-token' | 'invalid-type' + +export class AuthenticationError extends Error { + reason: AuthenticationErrorType + + constructor(reason: AuthenticationErrorType) { + super(reason) + this.reason = reason + } +} diff --git a/moon/apps/sync-server/tsconfig.json b/moon/apps/sync-server/tsconfig.json new file mode 100644 index 000000000..c2b0d618d --- /dev/null +++ b/moon/apps/sync-server/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "@gitmono/tsconfig/base.json", + "include": ["."], + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "allowJs": true, + "outDir": "./dist", + "sourceMap": true, + "inlineSources": true, + // Set `sourceRoot` to "/" to strip the build path prefix + // from generated source code references. + // This improves issue grouping in Sentry. + "sourceRoot": "/" + } +} diff --git a/moon/apps/sync-server/tsup.config.ts b/moon/apps/sync-server/tsup.config.ts new file mode 100644 index 000000000..57eb64ab0 --- /dev/null +++ b/moon/apps/sync-server/tsup.config.ts @@ -0,0 +1,9 @@ +import { defineConfig, type Options } from 'tsup' + +export default defineConfig((options: Options) => ({ + entryPoints: ['src/index.ts'], + clean: true, + dts: true, + format: ['esm'], + ...options +})) diff --git a/moon/apps/sync-server/turbo.json b/moon/apps/sync-server/turbo.json new file mode 100644 index 000000000..a8ca1c7f1 --- /dev/null +++ b/moon/apps/sync-server/turbo.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://turborepo.org/schema.json", + "extends": ["//"], + "tasks": { + "dev": { + "dependsOn": ["build"], + "passThroughEnv": ["PORT"] + }, + "build": { + "env": ["SENTRY_AUTH_TOKEN", "SENTRY_ORG", "SENTRY_PROJECT", "TIPTAP_PRIVATE_REGISTRY_KEY", "NODE_ENV", "PORT"] + }, + "sentry:sourcemaps": { + "env": ["SENTRY_AUTH_TOKEN", "SENTRY_ORG", "SENTRY_PROJECT"] + } + } +} diff --git a/moon/apps/web/next.config.js b/moon/apps/web/next.config.js index 9be480de0..31dcaffeb 100644 --- a/moon/apps/web/next.config.js +++ b/moon/apps/web/next.config.js @@ -35,9 +35,11 @@ const cspResourcesByDirective = { 'blob:', 'https://*.gitmono.com', 'wss://*.gitmono.com', + 'ws://*.gitmega.com', 'http://*.gitmega.com', process.env.NODE_ENV !== 'production' && 'http://api.gitmega.com', process.env.NODE_ENV !== 'production' && 'http://git.gitmega.com', + process.env.NODE_ENV !== 'production' && 'localhost:8000', process.env.NODE_ENV !== 'production' && 'ws://localhost:9000', 'https://gitmono.s3.ap-southeast-2.amazonaws.com', process.env.NODE_ENV !== 'production' && 'https://campsite-media-dev.s3.amazonaws.com', diff --git a/moon/packages/config/src/index.ts b/moon/packages/config/src/index.ts index bf89d36d2..13783513b 100644 --- a/moon/packages/config/src/index.ts +++ b/moon/packages/config/src/index.ts @@ -5,7 +5,7 @@ const SITE_URL_PROD = 'https://www.gitmono.com' const SITE_URL_DEV = 'http://gitmono.test:3003' const SYNC_URL_PROD = 'wss://sync.gitmono.com' -const SYNC_URL_DEV = 'ws://localhost:9000' +const SYNC_URL_DEV = 'ws://sync.gitmega.com' export const IS_PRODUCTION = process.env.APP_ENV === 'production' export const SCOPE_COOKIE_NAME = 'scope' @@ -25,7 +25,7 @@ export const RAILS_API_URL = IS_PRODUCTION : process.env.NEXT_PUBLIC_API_URL || 'http://api.gitmega.com' export const LEGACY_API_URL = IS_PRODUCTION - ? 'https://api.gitmono.com' + ? 'https://git.gitmono.com' : process.env.NEXT_PUBLIC_LEGACY_API_URL || 'http://git.gitmega.com' const RAILS_AUTH_URL_PROD_COM = 'https://auth.gitmono.com' diff --git a/moon/pnpm-lock.yaml b/moon/pnpm-lock.yaml index b5e3c8847..ea6ea7f8d 100644 --- a/moon/pnpm-lock.yaml +++ b/moon/pnpm-lock.yaml @@ -24,12 +24,27 @@ catalogs: '@emotion/styled': specifier: ^11.14.0 version: 11.14.0 + '@flydotio/dockerfile': + specifier: ^0.4.11 + version: 0.4.11 '@heroicons/react': specifier: ^2.2.0 version: 2.2.0 + '@hocuspocus/extension-database': + specifier: ^2.13.5 + version: 2.15.2 + '@hocuspocus/extension-logger': + specifier: ^2.13.5 + version: 2.15.2 '@hocuspocus/provider': specifier: ^2.13.5 version: 2.13.5 + '@hocuspocus/server': + specifier: ^2.13.5 + version: 2.15.2 + '@hocuspocus/transformer': + specifier: ^2.13.5 + version: 2.15.2 '@hookform/resolvers': specifier: ^3.3.1 version: 3.3.1 @@ -135,9 +150,15 @@ catalogs: '@radix-ui/themes': specifier: ^3.2.1 version: 3.2.1 + '@sentry/cli': + specifier: ^2.30.1 + version: 2.30.1 '@sentry/nextjs': specifier: ^8.17.0 version: 8.17.0 + '@sentry/node': + specifier: ^7.106.1 + version: 7.120.3 '@shopify/react-shortcuts': specifier: ^5.2.0 version: 5.2.0 @@ -285,6 +306,9 @@ catalogs: '@tiptap/extension-underline': specifier: ^2.6.4 version: 2.6.4 + '@tiptap/html': + specifier: ^2.6.4 + version: 2.13.0 '@tiptap/pm': specifier: ^2.6.4 version: 2.6.4 @@ -378,6 +402,9 @@ catalogs: diff2html: specifier: ^3.4.51 version: 3.4.51 + dotenv: + specifier: ^16.3.1 + version: 16.4.5 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -701,6 +728,64 @@ importers: specifier: 'catalog:' version: 5.4.3 + apps/sync-server: + dependencies: + '@gitmono/editor': + specifier: workspace:* + version: link:../../packages/editor + '@gitmono/types': + specifier: workspace:* + version: link:../../packages/types + '@hocuspocus/extension-database': + specifier: 'catalog:' + version: 2.15.2(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + '@hocuspocus/extension-logger': + specifier: 'catalog:' + version: 2.15.2(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + '@hocuspocus/server': + specifier: 'catalog:' + version: 2.15.2(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + '@hocuspocus/transformer': + specifier: 'catalog:' + version: 2.15.2(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)(y-prosemirror@1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8))(yjs@13.6.8) + '@sentry/node': + specifier: 'catalog:' + version: 7.120.3 + '@tiptap/core': + specifier: 'catalog:' + version: 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/html': + specifier: 'catalog:' + version: 2.13.0(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4) + '@tiptap/pm': + specifier: 'catalog:' + version: 2.6.4 + dotenv: + specifier: 'catalog:' + version: 16.4.5 + js-base64: + specifier: 'catalog:' + version: 3.7.5 + yjs: + specifier: 'catalog:' + version: 13.6.8 + devDependencies: + '@flydotio/dockerfile': + specifier: 'catalog:' + version: 0.4.11 + '@gitmono/tsconfig': + specifier: workspace:* + version: link:../../packages/tsconfig + '@sentry/cli': + specifier: 'catalog:' + version: 2.30.1(encoding@0.1.13) + tsup: + specifier: 'catalog:' + version: 8.0.2(postcss@8.5.4)(ts-node@10.9.1(@types/node@20.12.4)(typescript@5.4.3))(typescript@5.4.3) + typescript: + specifier: 'catalog:' + version: 5.4.3 + apps/web: dependencies: '@100mslive/hms-noise-cancellation': @@ -831,10 +916,10 @@ importers: version: 3.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@tiptap/extension-collaboration': specifier: 'catalog:' - version: 2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)(y-prosemirror@1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8)) + version: 2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)(y-prosemirror@1.2.12(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8)) '@tiptap/extension-collaboration-cursor': specifier: 'catalog:' - version: 2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(y-prosemirror@1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8)) + version: 2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(y-prosemirror@1.2.12(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8)) '@tiptap/pm': specifier: 'catalog:' version: 2.6.4 @@ -1071,7 +1156,7 @@ importers: version: 0.9.1(@types/react-dom@18.2.24)(@types/react@18.2.74)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) y-prosemirror: specifier: ^1.2.12 - version: 1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + version: 1.2.12(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) yjs: specifier: 'catalog:' version: 13.6.8 @@ -2779,6 +2864,11 @@ packages: '@floating-ui/utils@0.1.1': resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==} + '@flydotio/dockerfile@0.4.11': + resolution: {integrity: sha512-L52UAfrOhmAn3T4TxpeRofQOSO+Kctg+uraB4nLzo4mvvh+4Z7HYxSi7Dnq0Kirz+xx6fDIc4OMNT1EdaORecA==} + engines: {node: '>=16.0.0'} + hasBin: true + '@formatjs/ecma402-abstract@1.17.0': resolution: {integrity: sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==} @@ -2802,12 +2892,37 @@ packages: '@hocuspocus/common@2.13.5': resolution: {integrity: sha512-8D9FzhZFlt0WsgXw5yT2zwSxi6z9d4V2vUz6co2vo3Cj+Y2bvGZsdDiTvU/MerGcCLME5k/w6PwLPojLYH/4pg==} + '@hocuspocus/common@2.15.2': + resolution: {integrity: sha512-wU1wxXNnQQMXyeL3mdSDYiQsm/r/QyJVjjQhF7sUBrLnjdsN7bA1cvfcSvJBr1ymrMSeYRmUL3UlQmEHEOaP7w==} + + '@hocuspocus/extension-database@2.15.2': + resolution: {integrity: sha512-BkYDfKA99udx7AEkqWReBS61kvGMC9SqoPJs3v8xNgpaj2GGyMJQlUdQRMhPyZTn2osV+pqhk8Hn7xUJCW1RJg==} + peerDependencies: + yjs: ^13.6.8 + + '@hocuspocus/extension-logger@2.15.2': + resolution: {integrity: sha512-nqSnSFI+xO7dBTsgzSANKvx09ptq8J4Doz3AdLgxfaweYC85qFao7mAx1ZCtWoVHseVwBYua6S3dTwQq5IsWEg==} + '@hocuspocus/provider@2.13.5': resolution: {integrity: sha512-G3S0OiFSYkmbOwnbhV7FyJs4OBqB/+1YT9c44Ujux1RKowGm5H8+0p3FUHfXwd/3v9V0jE+E1FnFKoGonJSQwA==} peerDependencies: y-protocols: ^1.0.6 yjs: ^13.6.8 + '@hocuspocus/server@2.15.2': + resolution: {integrity: sha512-+fLRVswg+bkgfHqJ+wFgywivw3H08WMOtVvJF7dJzWT2ZR/Sc3nDMFh2KqMF6Ygh4z6mt23xr7SKIm3eP1zoLA==} + peerDependencies: + y-protocols: ^1.0.6 + yjs: ^13.6.8 + + '@hocuspocus/transformer@2.15.2': + resolution: {integrity: sha512-FAo/rt0kch+YeBBp/iit74q+4RV6YRjdZXmvE0/Aw+n/nSW1W0ZNGXnhncfm8qP0CuXnss/Aw8dpfEPZKUWDJw==} + peerDependencies: + '@tiptap/core': ^2.6.4 + '@tiptap/pm': ^2.6.4 + y-prosemirror: ^1.2.1 + yjs: ^13.6.8 + '@hookform/resolvers@3.3.1': resolution: {integrity: sha512-K7KCKRKjymxIB90nHDQ7b9nli474ru99ZbqxiqDAWYsYhOsU3/4qLxW91y+1n04ic13ajjZ66L3aXbNef8PELQ==} peerDependencies: @@ -5141,6 +5256,9 @@ packages: '@remirror/core-constants@2.0.2': resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==} + '@remirror/core-constants@3.0.0': + resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} + '@resvg/resvg-wasm@2.4.0': resolution: {integrity: sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg==} engines: {node: '>= 10'} @@ -5262,6 +5380,10 @@ packages: resolution: {integrity: sha512-SBNXBbXEd4WdCIIa/9mkcrwUjxJxSQtYakJ00Xvv/gwqR1rmRFOVqVjLXisryDXCucdD4Rp5MqRT9H+BcSNVtg==} engines: {node: '>=14.18'} + '@sentry-internal/tracing@7.120.3': + resolution: {integrity: sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==} + engines: {node: '>=8'} + '@sentry/babel-plugin-component-annotate@2.20.1': resolution: {integrity: sha512-4mhEwYTK00bIb5Y9UWIELVUfru587Vaeg0DQGswv4aIRHIiMKLyNqCEejaaybQ/fNChIZOKmvyqXk430YVd7Qg==} engines: {node: '>= 14'} @@ -5320,10 +5442,18 @@ packages: engines: {node: '>= 10'} hasBin: true + '@sentry/core@7.120.3': + resolution: {integrity: sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==} + engines: {node: '>=8'} + '@sentry/core@8.17.0': resolution: {integrity: sha512-s62O0Re6WcvaVbH1IEeAWmj/ca8UhaRoFaDnc5TR68reOycBrgnqCNq3qHxBsELOA6NJowoK+T29DDGs9QVXhQ==} engines: {node: '>=14.18'} + '@sentry/integrations@7.120.3': + resolution: {integrity: sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==} + engines: {node: '>=8'} + '@sentry/nextjs@8.17.0': resolution: {integrity: sha512-VUmPDNW8jgCIe6rN9tYQNzgvFZ2V1jp4wHMI7LTC1tgxZHbyadUJnw5yNTxs0IyjzkFSDaaO879STPv3saeU1A==} engines: {node: '>=14.18'} @@ -5334,6 +5464,10 @@ packages: webpack: optional: true + '@sentry/node@7.120.3': + resolution: {integrity: sha512-t+QtekZedEfiZjbkRAk1QWJPnJlFBH/ti96tQhEq7wmlk3VszDXraZvLWZA0P2vXyglKzbWRGkT31aD3/kX+5Q==} + engines: {node: '>=8'} + '@sentry/node@8.17.0': resolution: {integrity: sha512-HJ7B/zlpGMOIN+TnLzp6gbOpOzTk3Co19N39Y17T9MrR+5Z4eHdgEKWORFyE0Wy2KYKkVRwJ5zZJbfldc0EsEA==} engines: {node: '>=14.18'} @@ -5354,10 +5488,18 @@ packages: peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x + '@sentry/types@7.120.3': + resolution: {integrity: sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==} + engines: {node: '>=8'} + '@sentry/types@8.17.0': resolution: {integrity: sha512-v0nI0+ajiGTijhF1W/ryn2+zFVFr6VPn6lao3W4qKj9MlltIHa4/uuGzTaiCFwoPw7g5bZ1Q09SStpDXVMkz2A==} engines: {node: '>=14.18'} + '@sentry/utils@7.120.3': + resolution: {integrity: sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==} + engines: {node: '>=8'} + '@sentry/utils@8.17.0': resolution: {integrity: sha512-HHtAPLOlvzhwgfYzxtuPnLUoGRMtMrFvopkii74zmx/1ZD4VN4PYPB2E5KFf3c18pTovw+kxF0ux6VrGiyAHsw==} engines: {node: '>=14.18'} @@ -5728,16 +5870,31 @@ packages: '@tiptap/core': ^2.0.0 '@tiptap/pm': ^2.0.0 + '@tiptap/core@2.13.0': + resolution: {integrity: sha512-VDwlf5+DznkrAT+vlggl9t/mPVeo3ayi4irXgLPkDfHAY8adVIx+RCek6GBChclJ8q2Iy0HZwpIYs/8L7tadqA==} + peerDependencies: + '@tiptap/pm': ^2.7.0 + '@tiptap/core@2.6.4': resolution: {integrity: sha512-lv+JyBI+5C6C7BMLYg2bloB00HvAZkcvgO3CzmFia28Vtt1P9yhS44elvBemhUf7IP7Hu12FUzDWY+2GQqiqkw==} peerDependencies: '@tiptap/pm': ^2.6.4 + '@tiptap/extension-blockquote@2.13.0': + resolution: {integrity: sha512-DQjd8AUG9TE+ReFp05T9N5Z+o4dw88j+O6xgPMjs1T1u9yHUMxwjvidPRi5QqCqPiwDJcqm3bjYxebPPMHbi9w==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-blockquote@2.6.4': resolution: {integrity: sha512-BzeQ52qHL4AEryPqgvPNRJ2siSTfSi2s3k7hVC29QYUTOidLSSDWVihn7lzJoBnqDMAOYj7yUhnEUEdjvOFGqw==} peerDependencies: '@tiptap/core': ^2.6.4 + '@tiptap/extension-bold@2.13.0': + resolution: {integrity: sha512-q/Kqo1HXas+dUevP/Qice+nbxXue8ZpmYBniw9zt/JHbgwH1b6Rw7lIjLxYerdaPWj305h9ZHxLqmzDOEcQRPw==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-bold@2.6.4': resolution: {integrity: sha512-DIKUiO2aqO9D3dAQngBacWk/vYwDY13+q3t5dlawRTCIHxgV571vGb+YbcLswbWPQjOziIBc5QgwUVZLjA8OkA==} peerDependencies: @@ -5749,17 +5906,33 @@ packages: '@tiptap/core': ^2.6.4 '@tiptap/pm': ^2.6.4 + '@tiptap/extension-bullet-list@2.13.0': + resolution: {integrity: sha512-7XMNtRFCC+Co7FrwyU5gUC+4i3k83kQb1KJcYjq6Deud/2DoXNJeRcacqXr+mNePm+W71xZJ7W7ePWLlHrfHPw==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-bullet-list@2.6.4': resolution: {integrity: sha512-SsEqWNvbcLjgPYQXWT+gm8Mdtd6SnM9kr5xdfOvfe9W1RCYi7U7SQjaYGLGQXuy3E8NDugNiG+ss2POMj4RaUQ==} peerDependencies: '@tiptap/core': ^2.6.4 + '@tiptap/extension-code-block@2.13.0': + resolution: {integrity: sha512-HGcWmwKx4D53HY4XO0ve6lNHirpWdd91AVGVPuIkyG0wSvAzBgXy4TIgyUrHxGRE4qvNAe685RCYIA/VMBJAyg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + '@tiptap/extension-code-block@2.6.4': resolution: {integrity: sha512-dnZYiKVNdHfqZqYgoCElLk8ETLlV3Q0rw3IVDKDTwrhanSSooGfkVts/Gn/jtJUIulRdu8lH/0qZCgM4ihznfw==} peerDependencies: '@tiptap/core': ^2.6.4 '@tiptap/pm': ^2.6.4 + '@tiptap/extension-code@2.13.0': + resolution: {integrity: sha512-TrMhcRKsxmpZyHEstMdXAjwe+3bTqsSdiLsotzV7LwO8eCyeN42xfm2yzz9h/SJGUsO1X70YhoLH8liBNif97A==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-code@2.6.4': resolution: {integrity: sha512-qCt/CRhV+s1E9XVCDxGgFwyQRjcLsqBuY5UTwH3Zp8MIBniyLyJDD0Rv9DgvVqalzRC8RoRxVey9Al3YhYNqsw==} peerDependencies: @@ -5778,11 +5951,22 @@ packages: '@tiptap/pm': ^2.6.4 y-prosemirror: ^1.2.11 + '@tiptap/extension-document@2.13.0': + resolution: {integrity: sha512-jZ9NRUtJ2g67XTFgfn/6hMz+N4XJ+kG0/4GeLU2B7ZMF3UdcMWTvgyLxUNXvuLgMbCATVFTDTZiYTXgB/nPAVw==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-document@2.6.4': resolution: {integrity: sha512-fEQzou6J/w7GWiMqxxiwX2TEB6hgjBsImkHCxU05a4IOnIkzC8C9pV+NWa8u1LGvbERmVPBQqWYJG6phDhtYkg==} peerDependencies: '@tiptap/core': ^2.6.4 + '@tiptap/extension-dropcursor@2.13.0': + resolution: {integrity: sha512-nx2PjBiuOb3vBUDKGSzHtfKcWJstaHGr4dx3C+TsJ3Z8qHl4tB9Ud+c7Uaz6/DptK52Q3nn2WAK2mp/njLvXuA==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + '@tiptap/extension-dropcursor@2.6.4': resolution: {integrity: sha512-maTQi2R63i1S3CCJTjyuHMpk0BvnFuUxq7krZ3LBCOJgUeS78PF/XPirbbR7s2jOVsHK77LYsgdoS3ApDu1zdQ==} peerDependencies: @@ -5795,28 +5979,61 @@ packages: '@tiptap/core': ^2.6.4 '@tiptap/pm': ^2.6.4 + '@tiptap/extension-gapcursor@2.13.0': + resolution: {integrity: sha512-rOYVPa+mBksgGn+o9KGzKXhPNabSUVxvOB5BBwFhc0pTD+icoNk5awcUNfKx1VcBqXE3ghUvR/EEro9PvwTtdg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + + '@tiptap/extension-hard-break@2.13.0': + resolution: {integrity: sha512-1n83Uq7r/x/vJecj46ZO/a+MrAVDYFofz2J1V+N42EindNXaf/c2I9dIR8yxIXH8NT211gd1MckRM43eSSXU0w==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-hard-break@2.6.4': resolution: {integrity: sha512-kBGGSBtp9oQlRBH7PfRvhbrauEphiJEuFUP9n/amAbrrNSabwmvBgyMl6wFXgMdfHF6CSv2YDgndE1sk8SjPSg==} peerDependencies: '@tiptap/core': ^2.6.4 + '@tiptap/extension-heading@2.13.0': + resolution: {integrity: sha512-85G/DrrywpMQtZYwZJFwR+2ocRdvUM3FMLO4JVIZA7DyFsMD59lAixSSdBC2yZyr2Y8uzMW/UYyJdE+gpO6k7A==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-heading@2.6.4': resolution: {integrity: sha512-GHwDguzRXRrB5htGPx6T0f0uN9RPAkjbjrl28T7LFXX5Lb2XO+Esr1l4LNsTU49H4wR9nL/89ZjEcd36BUWkog==} peerDependencies: '@tiptap/core': ^2.6.4 + '@tiptap/extension-history@2.13.0': + resolution: {integrity: sha512-0gaCTHYrsECs8ZeG3oX3fyTyvKJHuGUuCnbEBfvGVxlYdhDVyuloe+G3s3UFeVVQJKO/P5OcxvUuAQ06s29tXw==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + '@tiptap/extension-history@2.6.4': resolution: {integrity: sha512-Hr3SrvMsyDHKcsF4u3QPdY/NBYG9V0g5pPmZs/tdysXot3NUdkEYowjs9K9o5osKom364KjxQS0c9mOjyeKu1g==} peerDependencies: '@tiptap/core': ^2.6.4 '@tiptap/pm': ^2.6.4 + '@tiptap/extension-horizontal-rule@2.13.0': + resolution: {integrity: sha512-8gqYh2f7OAgEckIEoqsj98omJSPUOOWUvJRL50q70AUceMvPtVngWGKfITlDy4eYvRj5WXrNRSYrQrCU/8S8sg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + '@tiptap/extension-horizontal-rule@2.6.4': resolution: {integrity: sha512-lL29Hxsj1qFwRqtg41JlBOK/hmN+qnwIWvNCyZpKEVHs7d0iELj2REB/7R1KKAAdsvYo7pJrgqwBd1Ph6xRLpw==} peerDependencies: '@tiptap/core': ^2.6.4 '@tiptap/pm': ^2.6.4 + '@tiptap/extension-italic@2.13.0': + resolution: {integrity: sha512-eI5TtUgfvwIkj576pWWgHQjRItEe7IWG+t/ZyRDMo5eTxz5b6lqsJydexmJbdL/u25kMgtwd39v7QEu0OiPcVg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-italic@2.6.4': resolution: {integrity: sha512-XG/zaKVuorKr1vGEWEgLQTnQwOpNn/JyGxO7oC7wfYx5eYpbbCtMTEMvuqNvkm7kpvVAUx3ugi/D8DWyWZEtYg==} peerDependencies: @@ -5828,6 +6045,11 @@ packages: '@tiptap/core': ^2.6.4 '@tiptap/pm': ^2.6.4 + '@tiptap/extension-list-item@2.13.0': + resolution: {integrity: sha512-EDq4Xm/dPjvEhdnaVJlsjV/qjdNtCCFAgO7eBzHvXP14b8feVmqJdDGs6sEZznAGxDe9gjRNsDj9EABEkQK8Dg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-list-item@2.6.4': resolution: {integrity: sha512-NLP0nshX8eCZMLospdCsUApUQHPL1+T/MIi/Hhr0aNeaAg7KwBNH8/rFPuxPNs4BQkHOCuYq4Fm+klkebkFYJA==} peerDependencies: @@ -5838,11 +6060,21 @@ packages: peerDependencies: '@tiptap/core': ^2.6.4 + '@tiptap/extension-ordered-list@2.13.0': + resolution: {integrity: sha512-krHS6lRf3R+m2eNpgHIfqI/A4CcbNoAWyQFH7HXkSuh0bgO7Aq1zi39clVcYfnI7eFGy07Lx8dQZ2kTLQ/n4Lg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-ordered-list@2.6.4': resolution: {integrity: sha512-ecAEFpRKZc+b3f54EGvaRp7hsVza2i1nRhxHoPElqVR5DiCCSuSgAPCsKhUUT1rKweK9h56HiC4xswAyFrU5Ag==} peerDependencies: '@tiptap/core': ^2.6.4 + '@tiptap/extension-paragraph@2.13.0': + resolution: {integrity: sha512-icWUqD6j3VCIW8RTFoknBDSOwWruraJwSwfUKadEoplRSIz81J75cmoExscO8rHMD8juhIrKGbs5WD5WJajrpQ==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-paragraph@2.6.4': resolution: {integrity: sha512-JVlvhZPzjz0Q+29KmnrmLr3A3SvAMfKOZxbZZVnzee6vtI6rqjdYGBOtyyyWwrAliNQB6GkHiKmT3GxH76dz7A==} peerDependencies: @@ -5854,6 +6086,11 @@ packages: '@tiptap/core': ^2.6.4 '@tiptap/pm': ^2.6.4 + '@tiptap/extension-strike@2.13.0': + resolution: {integrity: sha512-1j7ho8vuldtLuSHl4oQUNbVtub3P/mR8b+DbK+Fmp9UZrd5moHP9sD3yeIP4Ms/7iJhdDgLJPKAKNqmA2fsOtg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-strike@2.6.4': resolution: {integrity: sha512-EV4hEA5qnRtKViaLKcucFvXP9xEUJOFgpFeOrp2xIgSXJLSmutkaDfz7nxJ2RLzwwYvPfWUL7ay97JSCzSuaIA==} peerDependencies: @@ -5870,6 +6107,16 @@ packages: peerDependencies: '@tiptap/core': ^2.6.4 + '@tiptap/extension-text-style@2.13.0': + resolution: {integrity: sha512-gUXzgBCYcY3lk5AJ9DvWolphNBw5b2TLbKyJ0ZBWDjdNL7nF87iKKcNBGAXh2bYugvSi7dlPeSv7OQELyBm8Ug==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-text@2.13.0': + resolution: {integrity: sha512-4VhKCxfOlBXbaRAM4/OtZnOeq+WcjJoaduo4Jrb7w1I18yqknVjOwFH3Cv+2VqIjPI8bILMWzgpxvFPKdrOllA==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/extension-text@2.6.4': resolution: {integrity: sha512-QfspuCTTpmFrSLbDs2z/0W7GLaoNanwj4OCKPSPz5XcraZJgFLsWAqZxZE4aLgZbJH2hcGWMe5ZHmvLf5dJogw==} peerDependencies: @@ -5885,6 +6132,15 @@ packages: peerDependencies: '@tiptap/core': ^2.6.4 + '@tiptap/html@2.13.0': + resolution: {integrity: sha512-k0Zoa3mVtlnErS/Iah5arumghjLPYf36AwLZIVoH1lSU3poemvE4gGI727Fbebwp6v2NjIYK9hzfcQRCXMnb+g==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + + '@tiptap/pm@2.13.0': + resolution: {integrity: sha512-CU2DEMQbYXwlnISFD0+7nQSBaqGKJHOiTnWpnAi5pOVphroEIbLPlT6AO4638MWtIR9QsOmGR8KXkQmNGA6tjQ==} + '@tiptap/pm@2.6.4': resolution: {integrity: sha512-k/AyigUioZVxFTcF7kWcUh5xeOV0bdGzHz+wmtP33md2jo8SJP29yEZ4Kshvk0IcFnVFEDrsfKiGhLRWpKx+YQ==} @@ -5896,6 +6152,9 @@ packages: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 + '@tiptap/starter-kit@2.13.0': + resolution: {integrity: sha512-hik7WvHXIWWNfkSez+Lp50GNL1pWboWm6aiYNCF6B7AEaN6mB+unuI2F+6YpSQ2LwXEajmyF+xLUKA+hBg5ZxA==} + '@todesktop/client-core@1.10.0': resolution: {integrity: sha512-5UVxHkQVd5jxalbcy2PLFIUaEdUjifEChlvtO3UQSHObKMmGOU7KpqB9CZKExBjAOmoIVxn7bukIdRrp2FlSEQ==} @@ -6050,18 +6309,27 @@ packages: '@types/linkify-it@3.0.5': resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + '@types/lodash@4.17.0': resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} '@types/markdown-it@13.0.7': resolution: {integrity: sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==} + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + '@types/mdast@3.0.15': resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} '@types/mdurl@1.0.5': resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} @@ -6690,6 +6958,9 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + async-lock@1.4.1: + resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} + async-memoize-one@1.1.2: resolution: {integrity: sha512-0UcS0uzg+z4CEcahvjeFThJ+2c37cQHiGHlkuuc1mBYfx6FjBIPQKXNuymElBv+emifGE8CtxlL42DGR9A9mug==} engines: {node: '>= 12'} @@ -6964,6 +7235,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} @@ -7694,6 +7969,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@5.0.0: + resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==} + engines: {node: '>=0.12'} + entities@6.0.0: resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} engines: {node: '>=0.12'} @@ -9105,6 +9384,9 @@ packages: engines: {node: '>=16'} hasBin: true + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} @@ -9150,6 +9432,9 @@ packages: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -10386,12 +10671,18 @@ packages: prosemirror-changeset@2.2.1: resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==} + prosemirror-changeset@2.3.1: + resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==} + prosemirror-collab@1.3.1: resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} prosemirror-commands@1.5.2: resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==} + prosemirror-commands@1.7.1: + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} + prosemirror-dropcursor@1.8.1: resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==} @@ -10410,12 +10701,18 @@ packages: prosemirror-markdown@1.13.0: resolution: {integrity: sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==} + prosemirror-markdown@1.13.2: + resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==} + prosemirror-menu@1.2.4: resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} prosemirror-model@1.22.3: resolution: {integrity: sha512-V4XCysitErI+i0rKFILGt/xClnFJaohe/wrrlT2NSZ+zk8ggQfDH4x2wNK7Gm0Hp4CIoWizvXFP7L9KMaCuI0Q==} + prosemirror-model@1.25.1: + resolution: {integrity: sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==} + prosemirror-schema-basic@1.2.3: resolution: {integrity: sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==} @@ -10428,6 +10725,9 @@ packages: prosemirror-tables@1.4.0: resolution: {integrity: sha512-fxryZZkQG12fSCNuZDrYx6Xvo2rLYZTbKLRd8rglOPgNJGMKIS8uvTt6gGC38m7UCu/ENnXIP9pEz5uDaPc+cA==} + prosemirror-tables@1.7.1: + resolution: {integrity: sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==} + prosemirror-trailing-node@2.0.9: resolution: {integrity: sha512-YvyIn3/UaLFlFKrlJB6cObvUhmwFNZVhy1Q8OpW/avoTbD/Y7H5EcjK4AZFKhmuS6/N6WkGgt7gWtBWDnmFvHg==} peerDependencies: @@ -10435,12 +10735,25 @@ packages: prosemirror-state: ^1.4.2 prosemirror-view: ^1.33.8 + prosemirror-trailing-node@3.0.0: + resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} + peerDependencies: + prosemirror-model: ^1.22.1 + prosemirror-state: ^1.4.2 + prosemirror-view: ^1.33.8 + + prosemirror-transform@1.10.4: + resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==} + prosemirror-transform@1.9.0: resolution: {integrity: sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==} prosemirror-view@1.33.9: resolution: {integrity: sha512-xV1A0Vz9cIcEnwmMhKKFAOkfIp8XmJRnaZoPqNXrPS7EK5n11Ov8V76KhR0RsfQd/SIzmWY+bg+M44A2Lx/Nnw==} + prosemirror-view@1.40.0: + resolution: {integrity: sha512-2G3svX0Cr1sJjkD/DYWSe3cfV5VPVTBOxI9XQEGWJDFEpsZb/gh4MV29ctv+OJx2RFX4BLt09i+6zaGM/ldkCw==} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -11377,6 +11690,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -12343,6 +12660,10 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -12719,6 +13040,10 @@ packages: yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} + zeed-dom@0.15.1: + resolution: {integrity: sha512-dtZ0aQSFyZmoJS0m06/xBN1SazUBPL5HpzlAcs/KcRW0rzadYw12deQBjeMhGKMMeGEp7bA9vmikMLaO4exBcg==} + engines: {node: '>=14.13.1'} + zod@3.22.3: resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} @@ -14005,6 +14330,14 @@ snapshots: '@floating-ui/utils@0.1.1': {} + '@flydotio/dockerfile@0.4.11': + dependencies: + chalk: 5.4.1 + diff: 5.1.0 + ejs: 3.1.9 + shell-quote: 1.8.3 + yargs: 17.7.2 + '@formatjs/ecma402-abstract@1.17.0': dependencies: '@formatjs/intl-localematcher': 0.4.0 @@ -14037,6 +14370,28 @@ snapshots: dependencies: lib0: 0.2.97 + '@hocuspocus/common@2.15.2': + dependencies: + lib0: 0.2.108 + + '@hocuspocus/extension-database@2.15.2(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8)': + dependencies: + '@hocuspocus/server': 2.15.2(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + yjs: 13.6.8 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - y-protocols + + '@hocuspocus/extension-logger@2.15.2(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8)': + dependencies: + '@hocuspocus/server': 2.15.2(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - y-protocols + - yjs + '@hocuspocus/provider@2.13.5(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8)': dependencies: '@hocuspocus/common': 2.13.5 @@ -14049,6 +14404,28 @@ snapshots: - bufferutil - utf-8-validate + '@hocuspocus/server@2.15.2(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8)': + dependencies: + '@hocuspocus/common': 2.15.2 + async-lock: 1.4.1 + kleur: 4.1.5 + lib0: 0.2.108 + uuid: 11.1.0 + ws: 8.18.2 + y-protocols: 1.0.6(yjs@13.6.8) + yjs: 13.6.8 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@hocuspocus/transformer@2.15.2(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)(y-prosemirror@1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8))(yjs@13.6.8)': + dependencies: + '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/pm': 2.6.4 + '@tiptap/starter-kit': 2.13.0 + y-prosemirror: 1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + yjs: 13.6.8 + '@hookform/resolvers@3.3.1(react-hook-form@7.46.1(react@18.2.0))': dependencies: react-hook-form: 7.46.1(react@18.2.0) @@ -17035,6 +17412,8 @@ snapshots: '@remirror/core-constants@2.0.2': {} + '@remirror/core-constants@3.0.0': {} + '@resvg/resvg-wasm@2.4.0': {} '@rollup/plugin-commonjs@26.0.1(rollup@3.29.4)': @@ -17132,6 +17511,12 @@ snapshots: '@sentry/types': 8.17.0 '@sentry/utils': 8.17.0 + '@sentry-internal/tracing@7.120.3': + dependencies: + '@sentry/core': 7.120.3 + '@sentry/types': 7.120.3 + '@sentry/utils': 7.120.3 + '@sentry/babel-plugin-component-annotate@2.20.1': {} '@sentry/browser@8.17.0': @@ -17198,11 +17583,23 @@ snapshots: - encoding - supports-color + '@sentry/core@7.120.3': + dependencies: + '@sentry/types': 7.120.3 + '@sentry/utils': 7.120.3 + '@sentry/core@8.17.0': dependencies: '@sentry/types': 8.17.0 '@sentry/utils': 8.17.0 + '@sentry/integrations@7.120.3': + dependencies: + '@sentry/core': 7.120.3 + '@sentry/types': 7.120.3 + '@sentry/utils': 7.120.3 + localforage: 1.10.0 + '@sentry/nextjs@8.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@14.2.5(@babel/core@7.24.6)(@opentelemetry/api@1.9.0)(@playwright/test@1.43.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)(webpack@5.91.0(esbuild@0.20.2))': dependencies: '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0) @@ -17261,6 +17658,14 @@ snapshots: - react - supports-color + '@sentry/node@7.120.3': + dependencies: + '@sentry-internal/tracing': 7.120.3 + '@sentry/core': 7.120.3 + '@sentry/integrations': 7.120.3 + '@sentry/types': 7.120.3 + '@sentry/utils': 7.120.3 + '@sentry/node@8.17.0': dependencies: '@opentelemetry/api': 1.9.0 @@ -17315,8 +17720,14 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.2.0 + '@sentry/types@7.120.3': {} + '@sentry/types@8.17.0': {} + '@sentry/utils@7.120.3': + dependencies: + '@sentry/types': 7.120.3 + '@sentry/utils@8.17.0': dependencies: '@sentry/types': 8.17.0 @@ -18214,14 +18625,26 @@ snapshots: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) '@tiptap/pm': 2.6.4 + '@tiptap/core@2.13.0(@tiptap/pm@2.13.0)': + dependencies: + '@tiptap/pm': 2.13.0 + '@tiptap/core@2.6.4(@tiptap/pm@2.6.4)': dependencies: '@tiptap/pm': 2.6.4 + '@tiptap/extension-blockquote@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-blockquote@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/extension-bold@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-bold@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) @@ -18232,34 +18655,56 @@ snapshots: '@tiptap/pm': 2.6.4 tippy.js: 6.3.7 + '@tiptap/extension-bullet-list@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-bullet-list@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/extension-code-block@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0)': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/pm': 2.13.0 + '@tiptap/extension-code-block@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) '@tiptap/pm': 2.6.4 + '@tiptap/extension-code@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-code@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) - '@tiptap/extension-collaboration-cursor@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(y-prosemirror@1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8))': + '@tiptap/extension-collaboration-cursor@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(y-prosemirror@1.2.12(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) - y-prosemirror: 1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + y-prosemirror: 1.2.12(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) - '@tiptap/extension-collaboration@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)(y-prosemirror@1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8))': + '@tiptap/extension-collaboration@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)(y-prosemirror@1.2.12(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) '@tiptap/pm': 2.6.4 - y-prosemirror: 1.2.12(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + y-prosemirror: 1.2.12(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8) + + '@tiptap/extension-document@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) '@tiptap/extension-document@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/extension-dropcursor@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0)': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/pm': 2.13.0 + '@tiptap/extension-dropcursor@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) @@ -18271,24 +18716,51 @@ snapshots: '@tiptap/pm': 2.6.4 tippy.js: 6.3.7 + '@tiptap/extension-gapcursor@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0)': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/pm': 2.13.0 + + '@tiptap/extension-hard-break@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-hard-break@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/extension-heading@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-heading@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/extension-history@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0)': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/pm': 2.13.0 + '@tiptap/extension-history@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) '@tiptap/pm': 2.6.4 + '@tiptap/extension-horizontal-rule@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0)': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/pm': 2.13.0 + '@tiptap/extension-horizontal-rule@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) '@tiptap/pm': 2.6.4 + '@tiptap/extension-italic@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-italic@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) @@ -18299,6 +18771,10 @@ snapshots: '@tiptap/pm': 2.6.4 linkifyjs: 4.1.3 + '@tiptap/extension-list-item@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-list-item@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) @@ -18307,10 +18783,18 @@ snapshots: dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/extension-ordered-list@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-ordered-list@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/extension-paragraph@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-paragraph@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) @@ -18320,6 +18804,10 @@ snapshots: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) '@tiptap/pm': 2.6.4 + '@tiptap/extension-strike@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-strike@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) @@ -18333,6 +18821,14 @@ snapshots: dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/extension-text-style@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + + '@tiptap/extension-text@2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-text@2.6.4(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))': dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) @@ -18345,6 +18841,33 @@ snapshots: dependencies: '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/html@2.13.0(@tiptap/core@2.6.4(@tiptap/pm@2.6.4))(@tiptap/pm@2.6.4)': + dependencies: + '@tiptap/core': 2.6.4(@tiptap/pm@2.6.4) + '@tiptap/pm': 2.6.4 + zeed-dom: 0.15.1 + + '@tiptap/pm@2.13.0': + dependencies: + prosemirror-changeset: 2.3.1 + prosemirror-collab: 1.3.1 + prosemirror-commands: 1.7.1 + prosemirror-dropcursor: 1.8.1 + prosemirror-gapcursor: 1.3.2 + prosemirror-history: 1.4.1 + prosemirror-inputrules: 1.4.0 + prosemirror-keymap: 1.2.2 + prosemirror-markdown: 1.13.2 + prosemirror-menu: 1.2.4 + prosemirror-model: 1.25.1 + prosemirror-schema-basic: 1.2.3 + prosemirror-schema-list: 1.4.1 + prosemirror-state: 1.4.3 + prosemirror-tables: 1.7.1 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0) + prosemirror-transform: 1.10.4 + prosemirror-view: 1.40.0 + '@tiptap/pm@2.6.4': dependencies: prosemirror-changeset: 2.2.1 @@ -18377,6 +18900,30 @@ snapshots: react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.2(react@18.2.0) + '@tiptap/starter-kit@2.13.0': + dependencies: + '@tiptap/core': 2.13.0(@tiptap/pm@2.13.0) + '@tiptap/extension-blockquote': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-bold': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-bullet-list': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-code': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-code-block': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0) + '@tiptap/extension-document': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-dropcursor': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0) + '@tiptap/extension-gapcursor': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0) + '@tiptap/extension-hard-break': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-heading': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-history': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0) + '@tiptap/extension-horizontal-rule': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0))(@tiptap/pm@2.13.0) + '@tiptap/extension-italic': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-list-item': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-ordered-list': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-paragraph': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-strike': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-text': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/extension-text-style': 2.13.0(@tiptap/core@2.13.0(@tiptap/pm@2.13.0)) + '@tiptap/pm': 2.13.0 + '@todesktop/client-core@1.10.0': dependencies: '@todesktop/client-electron-types': 27.0.0 @@ -18554,6 +19101,8 @@ snapshots: '@types/linkify-it@3.0.5': {} + '@types/linkify-it@5.0.0': {} + '@types/lodash@4.17.0': {} '@types/markdown-it@13.0.7': @@ -18561,12 +19110,19 @@ snapshots: '@types/linkify-it': 3.0.5 '@types/mdurl': 1.0.5 + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + '@types/mdast@3.0.15': dependencies: '@types/unist': 2.0.6 '@types/mdurl@1.0.5': {} + '@types/mdurl@2.0.0': {} + '@types/mdx@2.0.13': {} '@types/mime@1.3.5': {} @@ -19382,6 +19938,8 @@ snapshots: dependencies: tslib: 2.6.2 + async-lock@1.4.1: {} + async-memoize-one@1.1.2: dependencies: fast-deep-equal: 3.1.3 @@ -19712,6 +20270,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.4.1: {} + character-entities-legacy@3.0.0: {} character-entities@2.0.2: {} @@ -20466,6 +21026,8 @@ snapshots: entities@4.5.0: {} + entities@5.0.0: {} + entities@6.0.0: {} env-paths@2.2.1: {} @@ -22222,6 +22784,10 @@ snapshots: dependencies: isomorphic.js: 0.2.5 + lie@3.1.1: + dependencies: + immediate: 3.0.6 + lie@3.3.0: dependencies: immediate: 3.0.6 @@ -22263,6 +22829,10 @@ snapshots: mlly: 1.4.2 pkg-types: 1.0.3 + localforage@1.10.0: + dependencies: + lie: 3.1.1 + locate-character@3.0.0: optional: true @@ -23681,6 +24251,10 @@ snapshots: dependencies: prosemirror-transform: 1.9.0 + prosemirror-changeset@2.3.1: + dependencies: + prosemirror-transform: 1.10.4 + prosemirror-collab@1.3.1: dependencies: prosemirror-state: 1.4.3 @@ -23691,6 +24265,12 @@ snapshots: prosemirror-state: 1.4.3 prosemirror-transform: 1.9.0 + prosemirror-commands@1.7.1: + dependencies: + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-dropcursor@1.8.1: dependencies: prosemirror-state: 1.4.3 @@ -23726,6 +24306,12 @@ snapshots: markdown-it: 14.1.0 prosemirror-model: 1.22.3 + prosemirror-markdown@1.13.2: + dependencies: + '@types/markdown-it': 14.1.2 + markdown-it: 14.1.0 + prosemirror-model: 1.25.1 + prosemirror-menu@1.2.4: dependencies: crelt: 1.0.6 @@ -23737,6 +24323,10 @@ snapshots: dependencies: orderedmap: 2.1.1 + prosemirror-model@1.25.1: + dependencies: + orderedmap: 2.1.1 + prosemirror-schema-basic@1.2.3: dependencies: prosemirror-model: 1.22.3 @@ -23761,6 +24351,14 @@ snapshots: prosemirror-transform: 1.9.0 prosemirror-view: 1.33.9 + prosemirror-tables@1.7.1: + dependencies: + prosemirror-keymap: 1.2.2 + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.40.0 + prosemirror-trailing-node@2.0.9(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.9): dependencies: '@remirror/core-constants': 2.0.2 @@ -23769,6 +24367,18 @@ snapshots: prosemirror-state: 1.4.3 prosemirror-view: 1.33.9 + prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0): + dependencies: + '@remirror/core-constants': 3.0.0 + escape-string-regexp: 4.0.0 + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-view: 1.40.0 + + prosemirror-transform@1.10.4: + dependencies: + prosemirror-model: 1.25.1 + prosemirror-transform@1.9.0: dependencies: prosemirror-model: 1.22.3 @@ -23779,6 +24389,12 @@ snapshots: prosemirror-state: 1.4.3 prosemirror-transform: 1.9.0 + prosemirror-view@1.40.0: + dependencies: + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -25025,6 +25641,8 @@ snapshots: shebang-regex@3.0.0: {} + shell-quote@1.8.3: {} + shimmer@1.2.1: {} should-equal@2.0.0: @@ -26074,6 +26692,8 @@ snapshots: utils-merge@1.0.1: {} + uuid@11.1.0: {} + uuid@8.3.2: {} uuid@9.0.1: {} @@ -26498,6 +27118,15 @@ snapshots: y-protocols: 1.0.6(yjs@13.6.8) yjs: 13.6.8 + y-prosemirror@1.2.12(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0)(y-protocols@1.0.6(yjs@13.6.8))(yjs@13.6.8): + dependencies: + lib0: 0.2.97 + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-view: 1.40.0 + y-protocols: 1.0.6(yjs@13.6.8) + yjs: 13.6.8 + y-protocols@1.0.6(yjs@13.6.8): dependencies: lib0: 0.2.108 @@ -26527,7 +27156,7 @@ snapshots: yjs@13.6.8: dependencies: - lib0: 0.2.97 + lib0: 0.2.108 yn@3.1.1: optional: true @@ -26538,6 +27167,11 @@ snapshots: yoga-wasm-web@0.3.3: {} + zeed-dom@0.15.1: + dependencies: + css-what: 6.1.0 + entities: 5.0.0 + zod@3.22.3: {} zustand@3.5.7(react@18.2.0): From 21ce65320921d0c160dcd65a02e24bca7833145d Mon Sep 17 00:00:00 2001 From: "benjamin.747" Date: Mon, 9 Jun 2025 10:17:43 +0800 Subject: [PATCH 2/2] fix typo --- .github/workflows/web-sync-server-deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/web-sync-server-deploy.yml b/.github/workflows/web-sync-server-deploy.yml index d2e3e55e4..5f09da18b 100644 --- a/.github/workflows/web-sync-server-deploy.yml +++ b/.github/workflows/web-sync-server-deploy.yml @@ -4,7 +4,7 @@ on: branches: - main paths: - - '.github/workflows/web-sycn-server*' + - '.github/workflows/web-sync-server*' - 'moon/apps/sync-server/**' - 'moon/packages/editor/**' - 'moon/packages/config/**'