From c206b60148127e4a2cec8d7b195983d29658e7dc Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Sat, 13 Jun 2026 19:36:07 +0100 Subject: [PATCH] [STC-820/STC-828] Update Hocuspocus baselines Aligns the Hocuspocus Node baseline with core and keeps the OpenProject API extension compiling on TypeScript 6. https://community.openproject.org/wp/STC-820 https://community.openproject.org/wp/STC-828 --- .github/workflows/hocuspocus-test.yml | 2 +- .../dev/hocuspocus/docker-compose.override.example.yml | 2 +- extensions/op-blocknote-hocuspocus/Dockerfile | 2 +- extensions/op-blocknote-hocuspocus/eslint.config.mjs | 9 +++++++++ extensions/op-blocknote-hocuspocus/package-lock.json | 4 ++-- extensions/op-blocknote-hocuspocus/package.json | 3 ++- .../src/extensions/openProjectApi.ts | 1 - extensions/op-blocknote-hocuspocus/tsconfig.json | 10 +++++++--- 8 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.github/workflows/hocuspocus-test.yml b/.github/workflows/hocuspocus-test.yml index 053fae2239e..179fcc6d640 100644 --- a/.github/workflows/hocuspocus-test.yml +++ b/.github/workflows/hocuspocus-test.yml @@ -25,7 +25,7 @@ jobs: - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: - node-version: '22.19' + node-version: '22.22.3' package-manager-cache: false cache: npm cache-dependency-path: extensions/op-blocknote-hocuspocus/package-lock.json diff --git a/docker/dev/hocuspocus/docker-compose.override.example.yml b/docker/dev/hocuspocus/docker-compose.override.example.yml index 152c707c283..22eb56df35a 100644 --- a/docker/dev/hocuspocus/docker-compose.override.example.yml +++ b/docker/dev/hocuspocus/docker-compose.override.example.yml @@ -5,7 +5,7 @@ services: hocuspocus: # In case of MacOS you need to specify the platform in your `docker/dev/hocuspocus/docker-compose.override.yml`: # platform: linux/amd64 - image: node:22-alpine + image: node:22.22.3-alpine working_dir: /app command: sh -c "npm run dev" volumes: diff --git a/extensions/op-blocknote-hocuspocus/Dockerfile b/extensions/op-blocknote-hocuspocus/Dockerfile index aa656f59020..5b3023e7562 100644 --- a/extensions/op-blocknote-hocuspocus/Dockerfile +++ b/extensions/op-blocknote-hocuspocus/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.18 +FROM node:22.22.3 WORKDIR /app COPY package*.json ./ RUN npm install --omit=dev diff --git a/extensions/op-blocknote-hocuspocus/eslint.config.mjs b/extensions/op-blocknote-hocuspocus/eslint.config.mjs index 865253db370..f2ceaf657b8 100644 --- a/extensions/op-blocknote-hocuspocus/eslint.config.mjs +++ b/extensions/op-blocknote-hocuspocus/eslint.config.mjs @@ -6,6 +6,9 @@ import { defineConfig } from "eslint/config"; import stylistic from "@stylistic/eslint-plugin"; export default defineConfig([ + { + ignores: ["package-lock.json"], + }, tseslint.configs.recommended, { files: ["**/*.{js,mjs,cjs,ts,mts,cts}"], @@ -26,6 +29,12 @@ export default defineConfig([ "@stylistic/indent": ["warn", 2], } }, + { + files: ["**/*.ts"], + rules: { + "no-undef": "off", + }, + }, { files: ["**/*.json"], plugins: { json }, diff --git a/extensions/op-blocknote-hocuspocus/package-lock.json b/extensions/op-blocknote-hocuspocus/package-lock.json index aea292675d5..2a028ab0e31 100644 --- a/extensions/op-blocknote-hocuspocus/package-lock.json +++ b/extensions/op-blocknote-hocuspocus/package-lock.json @@ -24,11 +24,12 @@ "eslint": "^9.35.0", "globals": "^17.3.0", "msw": "^2.12.7", + "typescript": "^6.0.3", "typescript-eslint": "^8.48.1", "vitest": "^4.1.0" }, "engines": { - "node": ">=22.18" + "node": "^22.22.3 || ^24.15.0" } }, "node_modules/@asamuzakjp/css-color": { @@ -5174,7 +5175,6 @@ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/extensions/op-blocknote-hocuspocus/package.json b/extensions/op-blocknote-hocuspocus/package.json index e93759bf64d..9365727ea0e 100644 --- a/extensions/op-blocknote-hocuspocus/package.json +++ b/extensions/op-blocknote-hocuspocus/package.json @@ -20,7 +20,7 @@ }, "homepage": "https://github.com/opf/openproject/tree/dev/extensions/op-blocknote-hocuspocus#readme", "engines": { - "node": ">=22.18" + "node": "^22.22.3 || ^24.15.0" }, "dependencies": { "@blocknote/server-util": "^0.51.3", @@ -38,6 +38,7 @@ "eslint": "^9.35.0", "globals": "^17.3.0", "msw": "^2.12.7", + "typescript": "^6.0.3", "typescript-eslint": "^8.48.1", "vitest": "^4.1.0" } diff --git a/extensions/op-blocknote-hocuspocus/src/extensions/openProjectApi.ts b/extensions/op-blocknote-hocuspocus/src/extensions/openProjectApi.ts index f7fb851ee14..316773c1efb 100644 --- a/extensions/op-blocknote-hocuspocus/src/extensions/openProjectApi.ts +++ b/extensions/op-blocknote-hocuspocus/src/extensions/openProjectApi.ts @@ -122,7 +122,6 @@ export class OpenProjectApi implements Extension { Y.applyUpdate(tempYdoc, Y.encodeStateAsUpdate(data.document)); const tempFragment = tempYdoc.getXmlFragment("document-store"); const editorData = editor.yXmlFragmentToBlocks(tempFragment); - // @ts-expect-error BlockNote types are complicated const markdownData = await editor.blocksToMarkdownLossy(editorData); const response = await fetchResource(resourceUrl, data.context.token, { diff --git a/extensions/op-blocknote-hocuspocus/tsconfig.json b/extensions/op-blocknote-hocuspocus/tsconfig.json index a31e0077766..ad8396fcfb7 100644 --- a/extensions/op-blocknote-hocuspocus/tsconfig.json +++ b/extensions/op-blocknote-hocuspocus/tsconfig.json @@ -4,13 +4,17 @@ "es2024", "ESNext.Array", "ESNext.Collection", - "ESNext.Iterator" + "ESNext.Iterator", + "DOM" ], - "module": "nodenext", + "module": "esnext", "target": "es2022", "strict": true, "esModuleInterop": true, "skipLibCheck": true, - "moduleResolution": "bundler" + "moduleResolution": "bundler", + "types": [ + "node" + ] } }