ProseMirror's document model is a tree structure where positions are calculated by traversing nodes, accounting for structural elements (opening/closing tags of nodes like paragraphs, lists, etc.). A position in ProseMirror is not "character index N". Structual boundaries like "start of paragraph" also get their own index. A document with two paragraphs "ab" and "cd" has positions: 0 1 2 3 4 5 6 7 8 <p> a b </p><p> c d </p> So when I serialize a ProseMirror document to plain text for external processing: 01 234 "ab\ncd" I need to save this mapping information so when the external system says "there's something interesting at characters [3,4]", I can map that back to ProseMirror positions to do something useful: highlighting, applying marks, or making selections. fix: measure site visits
66 lines
2.2 KiB
JSON
66 lines
2.2 KiB
JSON
{
|
|
"name": "my-qwik-empty-starter",
|
|
"description": "Blank project with routing included",
|
|
"engines": {
|
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
},
|
|
"engines-annotation": "Mostly required by sharp which needs a Node-API v9 compatible runtime",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"build": "qwik build",
|
|
"build.client": "vite build",
|
|
"build.preview": "vite build --ssr src/entry.preview.tsx",
|
|
"build.server": "qwik check-client src dist && vite build -c adapters/express/vite.config.ts",
|
|
"build.static": "vite build -c adapters/static/vite.config.ts",
|
|
"build.types": "tsc --incremental --noEmit",
|
|
"deploy": "echo 'Run \"npm run qwik add\" to install a server adapter'",
|
|
"dev": "vite --mode ssr",
|
|
"dev.debug": "node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force",
|
|
"fmt": "prettier --write .",
|
|
"fmt.check": "prettier --check .",
|
|
"lint": "eslint \"src/**/*.ts*\"",
|
|
"preview": "qwik build preview && vite preview --open",
|
|
"serve": "node server/entry.express",
|
|
"start": "vite --open --mode ssr",
|
|
"qwik": "qwik"
|
|
},
|
|
"devDependencies": {
|
|
"@builder.io/qwik": "^1.17.1",
|
|
"@builder.io/qwik-city": "^1.17.1",
|
|
"@eslint/js": "latest",
|
|
"@tailwindcss/vite": "^4.1.16",
|
|
"@types/compression": "^1.7.2",
|
|
"@types/express": "^4.17.19",
|
|
"@types/node": "20.19.0",
|
|
"compression": "^1.7.4",
|
|
"dotenv": "^16.3.2",
|
|
"eslint": "9.32.0",
|
|
"eslint-plugin-qwik": "^1.17.1",
|
|
"globals": "16.4.0",
|
|
"prettier": "3.6.2",
|
|
"tailwindcss": "^4.1.16",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "5.4.5",
|
|
"typescript-eslint": "8.38.0",
|
|
"typescript-plugin-css-modules": "latest",
|
|
"undici": "*",
|
|
"uvu": "^0.5.6",
|
|
"vite": "7.1.11",
|
|
"vite-tsconfig-paths": "^4.2.1"
|
|
},
|
|
"dependencies": {
|
|
"@tailwindcss/typography": "^0.5.19",
|
|
"express": "4.20.0",
|
|
"mathjs": "^15.0.0",
|
|
"prosemirror-commands": "^1.7.1",
|
|
"prosemirror-keymap": "^1.2.3",
|
|
"prosemirror-model": "^1.25.4",
|
|
"prosemirror-schema-basic": "^1.2.4",
|
|
"prosemirror-state": "^1.4.4",
|
|
"prosemirror-transform": "^1.10.4",
|
|
"prosemirror-view": "^1.41.3",
|
|
"temml": "^0.11.11"
|
|
},
|
|
"packageManager": "yarn@4.11.0"
|
|
}
|