Diffdown is a real-time collaborative Markdown editor/previewer built on the AT Protocol diffdown.com

Added OG meta tags, tweaked images

+2138 -110
+16 -1
.claude/settings.local.json
··· 15 15 "WebFetch(domain:markpub.at)", 16 16 "Bash(fly deploy:*)", 17 17 "Bash(fly logs:*)", 18 - "Bash(fly certs:*)" 18 + "Bash(fly certs:*)", 19 + "mcp__jcodemunch__index_folder", 20 + "Bash(npx esbuild milkdown-entry.js --bundle --format=esm --outfile=static/vendor/milkdown.js)", 21 + "Bash(node -e \"import\\(''@milkdown/kit/core''\\).then\\(m => console.log\\(Object.keys\\(m\\)\\)\\)\")", 22 + "Bash(node -e \"import\\(''@milkdown/kit/preset/commonmark''\\).then\\(m => console.log\\(Object.keys\\(m\\)\\)\\)\")", 23 + "Bash(node -e \"import\\(''@milkdown/kit/plugin/listener''\\).then\\(m => console.log\\(Object.keys\\(m\\)\\)\\)\")", 24 + "WebFetch(domain:leaflet.pub)", 25 + "Bash(sqlite3:*)", 26 + "Bash(ls:*)", 27 + "Bash(fly ssh:*)", 28 + "Bash(fly:*)", 29 + "Bash(grep:*)", 30 + "Bash(node:*)", 31 + "Bash(magick:*)", 32 + "mcp__codebase-memory-mcp__index_repository", 33 + "mcp__codebase-memory-mcp__manage_adr" 19 34 ] 20 35 } 21 36 }
+4 -4
.gitignore
··· 1 - markdownhub.db 2 - markdownhub.db-shm 3 - markdownhub.db-wal 4 - markdownhub 1 + diffdown.db 2 + diffdown.db-shm 3 + diffdown.db-wal 5 4 node_modules/ 6 5 .claude/ 7 6 /node_modules ··· 16 15 .Trashes 17 16 ehthumbs.db 18 17 Thumbs.db 18 + server
+69
Makefile
··· 1 + .PHONY: help build run test clean migrate-up migrate-down docker-up docker-down 2 + 3 + help: ## Show this help message 4 + @echo 'Usage: make [target]' 5 + @echo '' 6 + @echo 'Available targets:' 7 + @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-15s %s\n", $$1, $$2}' $(MAKEFILE_LIST) 8 + 9 + build: ## Build the application 10 + @echo "Building..." 11 + @go build -o bin/server ./cmd/server 12 + 13 + run: ## Run the application 14 + @echo "Running..." 15 + @go run ./cmd/server 16 + 17 + test: ## Run tests 18 + @echo "Running tests..." 19 + @go test -v ./... 20 + 21 + test-coverage: ## Run tests with coverage 22 + @echo "Running tests with coverage..." 23 + @go test -v -coverprofile=coverage.out ./... 24 + @go tool cover -html=coverage.out -o coverage.html 25 + 26 + lint: ## Run linter 27 + @echo "Running linter..." 28 + @golangci-lint run 29 + 30 + fmt: ## Format code 31 + @echo "Formatting code..." 32 + @go fmt ./... 33 + 34 + clean: ## Clean build artifacts 35 + @echo "Cleaning..." 36 + @rm -rf bin/ 37 + @rm -f coverage.out coverage.html 38 + 39 + migrate-up: ## Run database migrations up 40 + @echo "Running migrations up..." 41 + @go run cmd/migrate/main.go up 42 + 43 + migrate-down: ## Run database migrations down 44 + @echo "Running migrations down..." 45 + @go run cmd/migrate/main.go down 46 + 47 + migrate-create: ## Create a new migration (usage: make migrate-create name=create_users_table) 48 + @echo "Creating migration: $(name)" 49 + @go run cmd/migrate/main.go create $(name) 50 + 51 + docker-up: ## Start Docker services 52 + @echo "Starting Docker services..." 53 + @docker-compose up -d 54 + 55 + docker-down: ## Stop Docker services 56 + @echo "Stopping Docker services..." 57 + @docker-compose down 58 + 59 + docker-logs: ## View Docker logs 60 + @docker-compose logs -f 61 + 62 + dev: ## Run in development mode with hot reload 63 + @echo "Starting development server..." 64 + @air 65 + 66 + install-tools: ## Install development tools 67 + @echo "Installing development tools..." 68 + @go install github.com/cosmtrek/air@latest 69 + @go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
+1 -69
README.md
··· 2 2 3 3 Collaborative Markdown editor with real-time preview, version history, and multi-file repository support. 4 4 5 - ## Phase 1 — Solo Editor MVP (current) 6 - 7 - What's built: 8 - 9 - - **Auth**: Email/password registration and login, plus GitHub/Google OAuth stubs 10 - - **Repositories**: Create repos with name, description, visibility (private/public/unlisted) 11 - - **File management**: Create, browse, view, and edit Markdown files within repos 12 - - **Split-pane editor**: CodeMirror 6 on the left, rendered Markdown on the right 13 - - **Auto-save**: Saves content after 2s of inactivity (no version created) 14 - - **Manual save with version**: Creates a named snapshot for version history 15 - - **Version history**: List all versions, select two to compare 16 - - **Diff viewer**: Side-by-side diff with line-level add/delete highlighting 17 - - **Server-side rendering**: Go templates, goldmark for Markdown rendering 18 - 19 - ## Stack 20 - 21 - | Layer | Tech | 22 - |-------|------| 23 - | Backend | Go (net/http, gorilla/sessions, gorilla/websocket) | 24 - | Database | SQLite (WAL mode) | 25 - | Editor | CodeMirror 6 | 26 - | Markdown | goldmark (server), API-based preview (client) | 27 - | Diff | sergi/go-diff | 28 - | Auth | bcrypt + OAuth2 (GitHub, Google) | 29 - | Deploy | fly.io | 30 - 31 5 ## Running locally 32 6 33 7 ```bash 34 8 # Set env vars (or use defaults for dev) 35 - export SESSION_SECRET="your-secret-here" 9 + export DIFFDOWN_SESSION_SECRET="your-secret-here" 36 10 export BASE_URL="http://127.0.0.1:8080" 37 11 38 - # Optional: OAuth (skip for password-only auth) 39 - export GITHUB_CLIENT_ID="..." 40 - export GITHUB_CLIENT_SECRET="..." 41 - export GOOGLE_CLIENT_ID="..." 42 - export GOOGLE_CLIENT_SECRET="..." 43 - 44 12 # Build and run 45 13 go build -o diffdown ./cmd/server 46 14 ./diffdown 47 15 ``` 48 16 49 17 Server starts on `:8080`. 50 - 51 - ## What's next 52 - 53 - ### Phase 2 — Comments 54 - 55 - - Line-anchored comments with content hash drift detection 56 - - Threaded replies (one level) 57 - - Resolve/unresolve 58 - - Gutter indicators in editor 59 - 60 - ### Phase 3 — Collaborative Editing 61 - 62 - - Yjs CRDT via WebSocket 63 - - Real-time multi-user editing 64 - - Presence indicators (cursors, selections) 65 - - Awareness protocol 66 - 67 - ## Project structure 68 - 69 - ``` 70 - diffdown/ 71 - ├── cmd/server/main.go # Entry point, routing 72 - ├── internal/ 73 - │ ├── auth/ # Sessions, password hashing, OAuth config 74 - │ ├── db/ # SQLite queries and migrations 75 - │ ├── handler/ # HTTP handlers 76 - │ ├── middleware/ # Auth injection, logging 77 - │ ├── model/ # Data structs 78 - │ ├── render/ # Goldmark Markdown rendering 79 - │ └── version/ # Diff computation 80 - ├── migrations/ # SQL migration files 81 - ├── static/css/ # Stylesheets 82 - ├── templates/ # Go HTML templates 83 - ├── Dockerfile 84 - └── fly.toml 85 - ``` 86 18 87 19 ## Note on CodeMirror 88 20
+7 -1
cmd/server/main.go
··· 24 24 if dbPath == "" { 25 25 dbPath = "./diffdown.db" 26 26 } 27 - sessionSecret := os.Getenv("SESSION_SECRET") 27 + sessionSecret := os.Getenv("DIFFDOWN_SESSION_SECRET") 28 28 if sessionSecret == "" { 29 29 sessionSecret = "dev-secret-change-in-production" 30 30 } ··· 73 73 // Static files are handled outside the mux to avoid conflicts with 74 74 // wildcard patterns. 75 75 staticHandler := http.StripPrefix("/static/", http.FileServer(http.Dir("static"))) 76 + faviconHandler := http.FileServer(http.Dir("static")) 76 77 77 78 // Auth routes 78 79 mux.HandleFunc("GET /auth/login", h.LoginPage) ··· 106 107 http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 107 108 if strings.HasPrefix(r.URL.Path, "/static/") { 108 109 staticHandler.ServeHTTP(w, r) 110 + return 111 + } 112 + if r.URL.Path == "/favicon.ico" || r.URL.Path == "/favicon.svg" || 113 + strings.HasPrefix(r.URL.Path, "/favicon/") { 114 + faviconHandler.ServeHTTP(w, r) 109 115 return 110 116 } 111 117 mux.ServeHTTP(w, r)
+2 -2
fly.toml
··· 6 6 [env] 7 7 PORT = "8080" 8 8 DB_PATH = "/data/markdownhub.db" 9 - DIFFDOWN_BASE_URL = "https://diffdown.jluther.net" 10 - 9 + DIFFDOWN_BASE_URL = "https://diffdown.com" 10 + COMPOSED_BASE_URL = "https://diffdown.com" 11 11 [http_service] 12 12 internal_port = 8080 13 13 force_https = true
+6 -4
internal/handler/handler.go
··· 31 31 // --- Template helpers --- 32 32 33 33 type PageData struct { 34 - Title string 35 - User *model.User 36 - Content interface{} 37 - Error string 34 + Title string 35 + User *model.User 36 + Content interface{} 37 + Error string 38 + Description string 39 + OGImage string 38 40 } 39 41 40 42 func (h *Handler) currentUser(r *http.Request) *model.User {
markdownhub

This is a binary file and will not be displayed.

markdownhub.db

This is a binary file and will not be displayed.

markdownhub.db-shm

This is a binary file and will not be displayed.

markdownhub.db-wal

This is a binary file and will not be displayed.

+1979
node_modules/.package-lock.json
··· 4 4 "lockfileVersion": 3, 5 5 "requires": true, 6 6 "packages": { 7 + "node_modules/@babel/helper-string-parser": { 8 + "version": "7.27.1", 9 + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", 10 + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", 11 + "license": "MIT", 12 + "engines": { 13 + "node": ">=6.9.0" 14 + } 15 + }, 16 + "node_modules/@babel/helper-validator-identifier": { 17 + "version": "7.28.5", 18 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", 19 + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", 20 + "license": "MIT", 21 + "engines": { 22 + "node": ">=6.9.0" 23 + } 24 + }, 25 + "node_modules/@babel/parser": { 26 + "version": "7.29.0", 27 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", 28 + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", 29 + "license": "MIT", 30 + "dependencies": { 31 + "@babel/types": "^7.29.0" 32 + }, 33 + "bin": { 34 + "parser": "bin/babel-parser.js" 35 + }, 36 + "engines": { 37 + "node": ">=6.0.0" 38 + } 39 + }, 40 + "node_modules/@babel/types": { 41 + "version": "7.29.0", 42 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", 43 + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", 44 + "license": "MIT", 45 + "dependencies": { 46 + "@babel/helper-string-parser": "^7.27.1", 47 + "@babel/helper-validator-identifier": "^7.28.5" 48 + }, 49 + "engines": { 50 + "node": ">=6.9.0" 51 + } 52 + }, 7 53 "node_modules/@codemirror/autocomplete": { 8 54 "version": "6.20.1", 9 55 "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.1.tgz", ··· 157 203 "w3c-keyname": "^2.2.4" 158 204 } 159 205 }, 206 + "node_modules/@floating-ui/core": { 207 + "version": "1.7.5", 208 + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", 209 + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", 210 + "license": "MIT", 211 + "dependencies": { 212 + "@floating-ui/utils": "^0.2.11" 213 + } 214 + }, 215 + "node_modules/@floating-ui/dom": { 216 + "version": "1.7.6", 217 + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", 218 + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", 219 + "license": "MIT", 220 + "dependencies": { 221 + "@floating-ui/core": "^1.7.5", 222 + "@floating-ui/utils": "^0.2.11" 223 + } 224 + }, 225 + "node_modules/@floating-ui/utils": { 226 + "version": "0.2.11", 227 + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", 228 + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", 229 + "license": "MIT" 230 + }, 231 + "node_modules/@jridgewell/sourcemap-codec": { 232 + "version": "1.5.5", 233 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", 234 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", 235 + "license": "MIT" 236 + }, 160 237 "node_modules/@lezer/common": { 161 238 "version": "1.5.1", 162 239 "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.1.tgz", ··· 230 307 "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", 231 308 "license": "MIT" 232 309 }, 310 + "node_modules/@milkdown/components": { 311 + "version": "7.19.0", 312 + "resolved": "https://registry.npmjs.org/@milkdown/components/-/components-7.19.0.tgz", 313 + "integrity": "sha512-l/xasav/CPVXQZWs5oiFtnWw2zMk4Bq1EmKFElzsaKJCCW7ZBofasoGoQY5h0j+CDM8nAe8WLTq87WWWb9Ut6A==", 314 + "license": "MIT", 315 + "dependencies": { 316 + "@floating-ui/dom": "^1.5.1", 317 + "@milkdown/core": "7.19.0", 318 + "@milkdown/ctx": "7.19.0", 319 + "@milkdown/exception": "7.19.0", 320 + "@milkdown/plugin-tooltip": "7.19.0", 321 + "@milkdown/preset-commonmark": "7.19.0", 322 + "@milkdown/preset-gfm": "7.19.0", 323 + "@milkdown/prose": "7.19.0", 324 + "@milkdown/transformer": "7.19.0", 325 + "@milkdown/utils": "7.19.0", 326 + "@types/lodash-es": "^4.17.12", 327 + "clsx": "^2.0.0", 328 + "dompurify": "^3.2.5", 329 + "lodash-es": "^4.17.21", 330 + "nanoid": "^5.0.9", 331 + "unist-util-visit": "^5.0.0", 332 + "vue": "^3.5.20" 333 + }, 334 + "peerDependencies": { 335 + "@codemirror/language": "^6", 336 + "@codemirror/state": "^6", 337 + "@codemirror/view": "^6" 338 + } 339 + }, 340 + "node_modules/@milkdown/core": { 341 + "version": "7.19.0", 342 + "resolved": "https://registry.npmjs.org/@milkdown/core/-/core-7.19.0.tgz", 343 + "integrity": "sha512-x5vxnVCxxKSGCa1+J7I4RzEDl4KkvsXJF6xm1zCtvj0BCsbCFGiUVx2AtLcFkkvWZ5530CuOouDJ9FC27yoCoA==", 344 + "license": "MIT", 345 + "dependencies": { 346 + "@milkdown/ctx": "7.19.0", 347 + "@milkdown/exception": "7.19.0", 348 + "@milkdown/prose": "7.19.0", 349 + "@milkdown/transformer": "7.19.0", 350 + "remark-parse": "^11.0.0", 351 + "remark-stringify": "^11.0.0", 352 + "unified": "^11.0.3" 353 + } 354 + }, 355 + "node_modules/@milkdown/ctx": { 356 + "version": "7.19.0", 357 + "resolved": "https://registry.npmjs.org/@milkdown/ctx/-/ctx-7.19.0.tgz", 358 + "integrity": "sha512-tdG9jm6yk6PRSvFZW5rRSqOGrKdcNdbXJwfGiEGr538pgKYhJ/yKPF3HmfupkhGyxabRP/PydQa4q/N/OOs03g==", 359 + "license": "MIT", 360 + "dependencies": { 361 + "@milkdown/exception": "7.19.0" 362 + } 363 + }, 364 + "node_modules/@milkdown/exception": { 365 + "version": "7.19.0", 366 + "resolved": "https://registry.npmjs.org/@milkdown/exception/-/exception-7.19.0.tgz", 367 + "integrity": "sha512-ykgjxqrOueTCjmDGr0aidulZa1mC6bg4f8eDyMiT0wd4vB+3iYmQxY8NxdKwUqlz4UM5KBnbyFlGlgQsQDL+ew==", 368 + "license": "MIT" 369 + }, 370 + "node_modules/@milkdown/kit": { 371 + "version": "7.19.0", 372 + "resolved": "https://registry.npmjs.org/@milkdown/kit/-/kit-7.19.0.tgz", 373 + "integrity": "sha512-q+FF2dLMpw056mwowg1de+vcDl2gLyNfBmOCJ1WjJSqw4evlcYcKjYgKZWViE/WLOjryQDQhDlg0g58/uUFiyQ==", 374 + "license": "MIT", 375 + "dependencies": { 376 + "@milkdown/components": "7.19.0", 377 + "@milkdown/core": "7.19.0", 378 + "@milkdown/ctx": "7.19.0", 379 + "@milkdown/plugin-block": "7.19.0", 380 + "@milkdown/plugin-clipboard": "7.19.0", 381 + "@milkdown/plugin-cursor": "7.19.0", 382 + "@milkdown/plugin-history": "7.19.0", 383 + "@milkdown/plugin-indent": "7.19.0", 384 + "@milkdown/plugin-listener": "7.19.0", 385 + "@milkdown/plugin-slash": "7.19.0", 386 + "@milkdown/plugin-tooltip": "7.19.0", 387 + "@milkdown/plugin-trailing": "7.19.0", 388 + "@milkdown/plugin-upload": "7.19.0", 389 + "@milkdown/preset-commonmark": "7.19.0", 390 + "@milkdown/preset-gfm": "7.19.0", 391 + "@milkdown/prose": "7.19.0", 392 + "@milkdown/transformer": "7.19.0", 393 + "@milkdown/utils": "7.19.0" 394 + } 395 + }, 396 + "node_modules/@milkdown/plugin-block": { 397 + "version": "7.19.0", 398 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-block/-/plugin-block-7.19.0.tgz", 399 + "integrity": "sha512-VCOscCUXOlkOO/i3PYUHHJ9nAk3rjBGlEB6Rs3Ge7hJbuv2Hb/5mTiWI2KRARu1deGaEaYUjsH8NX+BOH3ZMew==", 400 + "license": "MIT", 401 + "dependencies": { 402 + "@floating-ui/dom": "^1.5.1", 403 + "@milkdown/core": "7.19.0", 404 + "@milkdown/ctx": "7.19.0", 405 + "@milkdown/prose": "7.19.0", 406 + "@milkdown/utils": "7.19.0", 407 + "@types/lodash-es": "^4.17.12", 408 + "lodash-es": "^4.17.21" 409 + } 410 + }, 411 + "node_modules/@milkdown/plugin-clipboard": { 412 + "version": "7.19.0", 413 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-clipboard/-/plugin-clipboard-7.19.0.tgz", 414 + "integrity": "sha512-V29/XE3M/ffvc5Owdm9tdUaD/GZ5AHMgbpBkd6+2/PH09MfGA9CPTpAjhqxxkWEi3CoT0HapdoceKuzd5bD7Nw==", 415 + "license": "MIT", 416 + "dependencies": { 417 + "@milkdown/core": "7.19.0", 418 + "@milkdown/ctx": "7.19.0", 419 + "@milkdown/prose": "7.19.0", 420 + "@milkdown/utils": "7.19.0" 421 + } 422 + }, 423 + "node_modules/@milkdown/plugin-cursor": { 424 + "version": "7.19.0", 425 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-cursor/-/plugin-cursor-7.19.0.tgz", 426 + "integrity": "sha512-NGAuTxSbOdy3nHQ8bTk9I6Vi1eX14xpcN7QU65aIJM01RnGhTBx5cF6f82n0IWTXMbN+MVOuQfqywfdRx1ukLw==", 427 + "license": "MIT", 428 + "dependencies": { 429 + "@milkdown/ctx": "7.19.0", 430 + "@milkdown/prose": "7.19.0", 431 + "@milkdown/utils": "7.19.0", 432 + "prosemirror-drop-indicator": "^0.1.0" 433 + } 434 + }, 435 + "node_modules/@milkdown/plugin-history": { 436 + "version": "7.19.0", 437 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-history/-/plugin-history-7.19.0.tgz", 438 + "integrity": "sha512-bC5bN0Ep5AC3hkiPS6LJTkorBoe5S7meJNzO0WqcIpkwckHD3M59Z7uz6dSUZdxVcL5IcFegDVsEYkiDq1Jcrw==", 439 + "license": "MIT", 440 + "dependencies": { 441 + "@milkdown/core": "7.19.0", 442 + "@milkdown/ctx": "7.19.0", 443 + "@milkdown/prose": "7.19.0", 444 + "@milkdown/utils": "7.19.0" 445 + } 446 + }, 447 + "node_modules/@milkdown/plugin-indent": { 448 + "version": "7.19.0", 449 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-indent/-/plugin-indent-7.19.0.tgz", 450 + "integrity": "sha512-P9rJK9OHCmqry37pAFcknY3VVvAEpUt7RflfdjFXSb3aGyJb+TDaQBiTHgxzTTXmvmAaPGLm2uuGtx34ThrA1A==", 451 + "license": "MIT", 452 + "dependencies": { 453 + "@milkdown/ctx": "7.19.0", 454 + "@milkdown/prose": "7.19.0", 455 + "@milkdown/utils": "7.19.0" 456 + } 457 + }, 458 + "node_modules/@milkdown/plugin-listener": { 459 + "version": "7.19.0", 460 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-listener/-/plugin-listener-7.19.0.tgz", 461 + "integrity": "sha512-shEVqcC2SKH0jaB74ReztNxG5hXjby26S1lN+evHKtsy2cB2vbWH2eHqSZkl8EGbLZJrqDsHwDKxTNTwB/oMSg==", 462 + "license": "MIT", 463 + "dependencies": { 464 + "@milkdown/core": "7.19.0", 465 + "@milkdown/ctx": "7.19.0", 466 + "@milkdown/prose": "7.19.0", 467 + "@types/lodash-es": "^4.17.12", 468 + "lodash-es": "^4.17.21" 469 + } 470 + }, 471 + "node_modules/@milkdown/plugin-slash": { 472 + "version": "7.19.0", 473 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-slash/-/plugin-slash-7.19.0.tgz", 474 + "integrity": "sha512-mdcqxOC9voMHKBScCGZjtSU6xTd6/Z6Oc7XsTQ5Yc0XqRgqcYAL3ti/1dtP2BMy8zXu/pHegatOzGWO9DlrcUQ==", 475 + "license": "MIT", 476 + "dependencies": { 477 + "@floating-ui/dom": "^1.5.1", 478 + "@milkdown/ctx": "7.19.0", 479 + "@milkdown/prose": "7.19.0", 480 + "@milkdown/utils": "7.19.0", 481 + "@types/lodash-es": "^4.17.12", 482 + "lodash-es": "^4.17.21" 483 + } 484 + }, 485 + "node_modules/@milkdown/plugin-tooltip": { 486 + "version": "7.19.0", 487 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-tooltip/-/plugin-tooltip-7.19.0.tgz", 488 + "integrity": "sha512-2HBiMgQ3aY/jdbxRRAbUkglk+PACCNGL7AERssRhr3G3Ph+eNwJYpK6VN7eHsUyDbFSP0koS7npr6U2kZWThFg==", 489 + "license": "MIT", 490 + "dependencies": { 491 + "@floating-ui/dom": "^1.5.1", 492 + "@milkdown/ctx": "7.19.0", 493 + "@milkdown/prose": "7.19.0", 494 + "@milkdown/utils": "7.19.0", 495 + "@types/lodash-es": "^4.17.12", 496 + "lodash-es": "^4.17.21" 497 + } 498 + }, 499 + "node_modules/@milkdown/plugin-trailing": { 500 + "version": "7.19.0", 501 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-trailing/-/plugin-trailing-7.19.0.tgz", 502 + "integrity": "sha512-VbAqrvZq4S0kFVipuNmM+Qg8PvvT6SUXhRCMWzM0tX1I7H6Lie+oT/G5bpNPSKh7BNi7pbCllLGi0/L88vSzSw==", 503 + "license": "MIT", 504 + "dependencies": { 505 + "@milkdown/ctx": "7.19.0", 506 + "@milkdown/prose": "7.19.0", 507 + "@milkdown/utils": "7.19.0" 508 + } 509 + }, 510 + "node_modules/@milkdown/plugin-upload": { 511 + "version": "7.19.0", 512 + "resolved": "https://registry.npmjs.org/@milkdown/plugin-upload/-/plugin-upload-7.19.0.tgz", 513 + "integrity": "sha512-dAcxLf8TvCljgrRUa65lV3MYA5HAmCOjVHS0CzKCfC568T4eg3K2kSbr+EFEYCSR7vCbLjm/o9F4kI4qaWmAAw==", 514 + "license": "MIT", 515 + "dependencies": { 516 + "@milkdown/core": "7.19.0", 517 + "@milkdown/ctx": "7.19.0", 518 + "@milkdown/exception": "7.19.0", 519 + "@milkdown/prose": "7.19.0", 520 + "@milkdown/utils": "7.19.0" 521 + } 522 + }, 523 + "node_modules/@milkdown/preset-commonmark": { 524 + "version": "7.19.0", 525 + "resolved": "https://registry.npmjs.org/@milkdown/preset-commonmark/-/preset-commonmark-7.19.0.tgz", 526 + "integrity": "sha512-8rPEd4S3ny5wuFJvnZdieedKxFeW3KU5Rz54LYhA/nYPG+tE9q5lqDs0ZzHNoJdXMiLWbNf/dd0QokHVNlbQLQ==", 527 + "license": "MIT", 528 + "dependencies": { 529 + "@milkdown/core": "7.19.0", 530 + "@milkdown/ctx": "7.19.0", 531 + "@milkdown/exception": "7.19.0", 532 + "@milkdown/prose": "7.19.0", 533 + "@milkdown/transformer": "7.19.0", 534 + "@milkdown/utils": "7.19.0", 535 + "remark-inline-links": "^7.0.0", 536 + "unist-util-visit": "^5.0.0", 537 + "unist-util-visit-parents": "^6.0.1" 538 + } 539 + }, 540 + "node_modules/@milkdown/preset-gfm": { 541 + "version": "7.19.0", 542 + "resolved": "https://registry.npmjs.org/@milkdown/preset-gfm/-/preset-gfm-7.19.0.tgz", 543 + "integrity": "sha512-wW5ShJUhIaWNnbtv4IjV+xh9TvVId+Lm8CAurUs2E1nBX2N5wHTzzl2/9WOTt/g4u49e64rJewkwZJri8MPy7g==", 544 + "license": "MIT", 545 + "dependencies": { 546 + "@milkdown/core": "7.19.0", 547 + "@milkdown/ctx": "7.19.0", 548 + "@milkdown/exception": "7.19.0", 549 + "@milkdown/preset-commonmark": "7.19.0", 550 + "@milkdown/prose": "7.19.0", 551 + "@milkdown/transformer": "7.19.0", 552 + "@milkdown/utils": "7.19.0", 553 + "prosemirror-safari-ime-span": "^1.0.1", 554 + "remark-gfm": "^4.0.1" 555 + } 556 + }, 557 + "node_modules/@milkdown/prose": { 558 + "version": "7.19.0", 559 + "resolved": "https://registry.npmjs.org/@milkdown/prose/-/prose-7.19.0.tgz", 560 + "integrity": "sha512-T/uYqSr4YT4uZtu4nBxTWyvZhVs2Lzh9qpcYH81PVwtZUT3b57+e+39s1D7UKAwFGi0qB7qZu/53l6pcw8radg==", 561 + "license": "MIT", 562 + "dependencies": { 563 + "@milkdown/exception": "7.19.0", 564 + "prosemirror-changeset": "^2.3.1", 565 + "prosemirror-commands": "^1.7.1", 566 + "prosemirror-dropcursor": "^1.8.2", 567 + "prosemirror-gapcursor": "^1.4.0", 568 + "prosemirror-history": "^1.5.0", 569 + "prosemirror-inputrules": "^1.5.1", 570 + "prosemirror-keymap": "^1.2.3", 571 + "prosemirror-model": "^1.25.4", 572 + "prosemirror-schema-list": "^1.5.1", 573 + "prosemirror-state": "^1.4.4", 574 + "prosemirror-tables": "^1.8.1", 575 + "prosemirror-transform": "^1.10.5", 576 + "prosemirror-view": "^1.41.3" 577 + } 578 + }, 579 + "node_modules/@milkdown/transformer": { 580 + "version": "7.19.0", 581 + "resolved": "https://registry.npmjs.org/@milkdown/transformer/-/transformer-7.19.0.tgz", 582 + "integrity": "sha512-Ui1vwbyTd1nAaieTylI8ibNbXSAxygkiFjkwOPGO5w0Eu7leH+0hVrbeGUCSzYdJfjGsN537CYu/8kvLIR+lQg==", 583 + "license": "MIT", 584 + "dependencies": { 585 + "@milkdown/exception": "7.19.0", 586 + "@milkdown/prose": "7.19.0", 587 + "remark": "^15.0.1", 588 + "unified": "^11.0.3" 589 + } 590 + }, 591 + "node_modules/@milkdown/utils": { 592 + "version": "7.19.0", 593 + "resolved": "https://registry.npmjs.org/@milkdown/utils/-/utils-7.19.0.tgz", 594 + "integrity": "sha512-aIu8j7TypVn+4ZWgrIUjpljIulAVwNERWNZgkfYLQLOv+BbF1gIbpoB7t3w0RD2EeENrEu0P3J0Sl5LDMbyDRQ==", 595 + "license": "MIT", 596 + "dependencies": { 597 + "@milkdown/core": "7.19.0", 598 + "@milkdown/ctx": "7.19.0", 599 + "@milkdown/exception": "7.19.0", 600 + "@milkdown/prose": "7.19.0", 601 + "@milkdown/transformer": "7.19.0", 602 + "nanoid": "^5.0.9" 603 + } 604 + }, 605 + "node_modules/@ocavue/utils": { 606 + "version": "1.5.0", 607 + "resolved": "https://registry.npmjs.org/@ocavue/utils/-/utils-1.5.0.tgz", 608 + "integrity": "sha512-zYOKnvUm8IQ86tNCrpUVBT0lEvoKvyf+9pPS7M4VDB8O1o+msaPMsb/xZx/w5hpcuN1dfehJrkY41ZcdGZpyqg==", 609 + "license": "MIT", 610 + "funding": { 611 + "url": "https://github.com/sponsors/ocavue" 612 + } 613 + }, 614 + "node_modules/@types/debug": { 615 + "version": "4.1.12", 616 + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", 617 + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", 618 + "license": "MIT", 619 + "dependencies": { 620 + "@types/ms": "*" 621 + } 622 + }, 623 + "node_modules/@types/lodash": { 624 + "version": "4.17.24", 625 + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", 626 + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", 627 + "license": "MIT" 628 + }, 629 + "node_modules/@types/lodash-es": { 630 + "version": "4.17.12", 631 + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", 632 + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", 633 + "license": "MIT", 634 + "dependencies": { 635 + "@types/lodash": "*" 636 + } 637 + }, 638 + "node_modules/@types/mdast": { 639 + "version": "4.0.4", 640 + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", 641 + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", 642 + "license": "MIT", 643 + "dependencies": { 644 + "@types/unist": "*" 645 + } 646 + }, 647 + "node_modules/@types/ms": { 648 + "version": "2.1.0", 649 + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", 650 + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", 651 + "license": "MIT" 652 + }, 653 + "node_modules/@types/trusted-types": { 654 + "version": "2.0.7", 655 + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", 656 + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", 657 + "license": "MIT", 658 + "optional": true 659 + }, 660 + "node_modules/@types/unist": { 661 + "version": "3.0.3", 662 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 663 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 664 + "license": "MIT" 665 + }, 666 + "node_modules/@vue/compiler-core": { 667 + "version": "3.5.29", 668 + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.29.tgz", 669 + "integrity": "sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==", 670 + "license": "MIT", 671 + "dependencies": { 672 + "@babel/parser": "^7.29.0", 673 + "@vue/shared": "3.5.29", 674 + "entities": "^7.0.1", 675 + "estree-walker": "^2.0.2", 676 + "source-map-js": "^1.2.1" 677 + } 678 + }, 679 + "node_modules/@vue/compiler-dom": { 680 + "version": "3.5.29", 681 + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.29.tgz", 682 + "integrity": "sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==", 683 + "license": "MIT", 684 + "dependencies": { 685 + "@vue/compiler-core": "3.5.29", 686 + "@vue/shared": "3.5.29" 687 + } 688 + }, 689 + "node_modules/@vue/compiler-sfc": { 690 + "version": "3.5.29", 691 + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.29.tgz", 692 + "integrity": "sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==", 693 + "license": "MIT", 694 + "dependencies": { 695 + "@babel/parser": "^7.29.0", 696 + "@vue/compiler-core": "3.5.29", 697 + "@vue/compiler-dom": "3.5.29", 698 + "@vue/compiler-ssr": "3.5.29", 699 + "@vue/shared": "3.5.29", 700 + "estree-walker": "^2.0.2", 701 + "magic-string": "^0.30.21", 702 + "postcss": "^8.5.6", 703 + "source-map-js": "^1.2.1" 704 + } 705 + }, 706 + "node_modules/@vue/compiler-ssr": { 707 + "version": "3.5.29", 708 + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.29.tgz", 709 + "integrity": "sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==", 710 + "license": "MIT", 711 + "dependencies": { 712 + "@vue/compiler-dom": "3.5.29", 713 + "@vue/shared": "3.5.29" 714 + } 715 + }, 716 + "node_modules/@vue/reactivity": { 717 + "version": "3.5.29", 718 + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.29.tgz", 719 + "integrity": "sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==", 720 + "license": "MIT", 721 + "dependencies": { 722 + "@vue/shared": "3.5.29" 723 + } 724 + }, 725 + "node_modules/@vue/runtime-core": { 726 + "version": "3.5.29", 727 + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.29.tgz", 728 + "integrity": "sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==", 729 + "license": "MIT", 730 + "dependencies": { 731 + "@vue/reactivity": "3.5.29", 732 + "@vue/shared": "3.5.29" 733 + } 734 + }, 735 + "node_modules/@vue/runtime-dom": { 736 + "version": "3.5.29", 737 + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.29.tgz", 738 + "integrity": "sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==", 739 + "license": "MIT", 740 + "dependencies": { 741 + "@vue/reactivity": "3.5.29", 742 + "@vue/runtime-core": "3.5.29", 743 + "@vue/shared": "3.5.29", 744 + "csstype": "^3.2.3" 745 + } 746 + }, 747 + "node_modules/@vue/server-renderer": { 748 + "version": "3.5.29", 749 + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.29.tgz", 750 + "integrity": "sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==", 751 + "license": "MIT", 752 + "dependencies": { 753 + "@vue/compiler-ssr": "3.5.29", 754 + "@vue/shared": "3.5.29" 755 + }, 756 + "peerDependencies": { 757 + "vue": "3.5.29" 758 + } 759 + }, 760 + "node_modules/@vue/shared": { 761 + "version": "3.5.29", 762 + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.29.tgz", 763 + "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==", 764 + "license": "MIT" 765 + }, 766 + "node_modules/bail": { 767 + "version": "2.0.2", 768 + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", 769 + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", 770 + "license": "MIT", 771 + "funding": { 772 + "type": "github", 773 + "url": "https://github.com/sponsors/wooorm" 774 + } 775 + }, 776 + "node_modules/ccount": { 777 + "version": "2.0.1", 778 + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", 779 + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", 780 + "license": "MIT", 781 + "funding": { 782 + "type": "github", 783 + "url": "https://github.com/sponsors/wooorm" 784 + } 785 + }, 786 + "node_modules/character-entities": { 787 + "version": "2.0.2", 788 + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", 789 + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", 790 + "license": "MIT", 791 + "funding": { 792 + "type": "github", 793 + "url": "https://github.com/sponsors/wooorm" 794 + } 795 + }, 796 + "node_modules/clsx": { 797 + "version": "2.1.1", 798 + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 799 + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 800 + "license": "MIT", 801 + "engines": { 802 + "node": ">=6" 803 + } 804 + }, 233 805 "node_modules/codemirror": { 234 806 "version": "6.0.2", 235 807 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", ··· 251 823 "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", 252 824 "license": "MIT" 253 825 }, 826 + "node_modules/csstype": { 827 + "version": "3.2.3", 828 + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", 829 + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", 830 + "license": "MIT" 831 + }, 832 + "node_modules/debug": { 833 + "version": "4.4.3", 834 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", 835 + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 836 + "license": "MIT", 837 + "dependencies": { 838 + "ms": "^2.1.3" 839 + }, 840 + "engines": { 841 + "node": ">=6.0" 842 + }, 843 + "peerDependenciesMeta": { 844 + "supports-color": { 845 + "optional": true 846 + } 847 + } 848 + }, 849 + "node_modules/decode-named-character-reference": { 850 + "version": "1.3.0", 851 + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", 852 + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", 853 + "license": "MIT", 854 + "dependencies": { 855 + "character-entities": "^2.0.0" 856 + }, 857 + "funding": { 858 + "type": "github", 859 + "url": "https://github.com/sponsors/wooorm" 860 + } 861 + }, 862 + "node_modules/dequal": { 863 + "version": "2.0.3", 864 + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 865 + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 866 + "license": "MIT", 867 + "engines": { 868 + "node": ">=6" 869 + } 870 + }, 871 + "node_modules/devlop": { 872 + "version": "1.1.0", 873 + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", 874 + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", 875 + "license": "MIT", 876 + "dependencies": { 877 + "dequal": "^2.0.0" 878 + }, 879 + "funding": { 880 + "type": "github", 881 + "url": "https://github.com/sponsors/wooorm" 882 + } 883 + }, 884 + "node_modules/dompurify": { 885 + "version": "3.3.2", 886 + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.2.tgz", 887 + "integrity": "sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==", 888 + "license": "(MPL-2.0 OR Apache-2.0)", 889 + "engines": { 890 + "node": ">=20" 891 + }, 892 + "optionalDependencies": { 893 + "@types/trusted-types": "^2.0.7" 894 + } 895 + }, 896 + "node_modules/entities": { 897 + "version": "7.0.1", 898 + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", 899 + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", 900 + "license": "BSD-2-Clause", 901 + "engines": { 902 + "node": ">=0.12" 903 + }, 904 + "funding": { 905 + "url": "https://github.com/fb55/entities?sponsor=1" 906 + } 907 + }, 908 + "node_modules/escape-string-regexp": { 909 + "version": "5.0.0", 910 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", 911 + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", 912 + "license": "MIT", 913 + "engines": { 914 + "node": ">=12" 915 + }, 916 + "funding": { 917 + "url": "https://github.com/sponsors/sindresorhus" 918 + } 919 + }, 920 + "node_modules/estree-walker": { 921 + "version": "2.0.2", 922 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 923 + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 924 + "license": "MIT" 925 + }, 926 + "node_modules/extend": { 927 + "version": "3.0.2", 928 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 929 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 930 + "license": "MIT" 931 + }, 932 + "node_modules/is-plain-obj": { 933 + "version": "4.1.0", 934 + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", 935 + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", 936 + "license": "MIT", 937 + "engines": { 938 + "node": ">=12" 939 + }, 940 + "funding": { 941 + "url": "https://github.com/sponsors/sindresorhus" 942 + } 943 + }, 944 + "node_modules/lodash-es": { 945 + "version": "4.17.23", 946 + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", 947 + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", 948 + "license": "MIT" 949 + }, 950 + "node_modules/longest-streak": { 951 + "version": "3.1.0", 952 + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", 953 + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", 954 + "license": "MIT", 955 + "funding": { 956 + "type": "github", 957 + "url": "https://github.com/sponsors/wooorm" 958 + } 959 + }, 960 + "node_modules/magic-string": { 961 + "version": "0.30.21", 962 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", 963 + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", 964 + "license": "MIT", 965 + "dependencies": { 966 + "@jridgewell/sourcemap-codec": "^1.5.5" 967 + } 968 + }, 969 + "node_modules/markdown-table": { 970 + "version": "3.0.4", 971 + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", 972 + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", 973 + "license": "MIT", 974 + "funding": { 975 + "type": "github", 976 + "url": "https://github.com/sponsors/wooorm" 977 + } 978 + }, 979 + "node_modules/mdast-util-definitions": { 980 + "version": "6.0.0", 981 + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", 982 + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", 983 + "license": "MIT", 984 + "dependencies": { 985 + "@types/mdast": "^4.0.0", 986 + "@types/unist": "^3.0.0", 987 + "unist-util-visit": "^5.0.0" 988 + }, 989 + "funding": { 990 + "type": "opencollective", 991 + "url": "https://opencollective.com/unified" 992 + } 993 + }, 994 + "node_modules/mdast-util-find-and-replace": { 995 + "version": "3.0.2", 996 + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", 997 + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", 998 + "license": "MIT", 999 + "dependencies": { 1000 + "@types/mdast": "^4.0.0", 1001 + "escape-string-regexp": "^5.0.0", 1002 + "unist-util-is": "^6.0.0", 1003 + "unist-util-visit-parents": "^6.0.0" 1004 + }, 1005 + "funding": { 1006 + "type": "opencollective", 1007 + "url": "https://opencollective.com/unified" 1008 + } 1009 + }, 1010 + "node_modules/mdast-util-from-markdown": { 1011 + "version": "2.0.3", 1012 + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", 1013 + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", 1014 + "license": "MIT", 1015 + "dependencies": { 1016 + "@types/mdast": "^4.0.0", 1017 + "@types/unist": "^3.0.0", 1018 + "decode-named-character-reference": "^1.0.0", 1019 + "devlop": "^1.0.0", 1020 + "mdast-util-to-string": "^4.0.0", 1021 + "micromark": "^4.0.0", 1022 + "micromark-util-decode-numeric-character-reference": "^2.0.0", 1023 + "micromark-util-decode-string": "^2.0.0", 1024 + "micromark-util-normalize-identifier": "^2.0.0", 1025 + "micromark-util-symbol": "^2.0.0", 1026 + "micromark-util-types": "^2.0.0", 1027 + "unist-util-stringify-position": "^4.0.0" 1028 + }, 1029 + "funding": { 1030 + "type": "opencollective", 1031 + "url": "https://opencollective.com/unified" 1032 + } 1033 + }, 1034 + "node_modules/mdast-util-gfm": { 1035 + "version": "3.1.0", 1036 + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", 1037 + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", 1038 + "license": "MIT", 1039 + "dependencies": { 1040 + "mdast-util-from-markdown": "^2.0.0", 1041 + "mdast-util-gfm-autolink-literal": "^2.0.0", 1042 + "mdast-util-gfm-footnote": "^2.0.0", 1043 + "mdast-util-gfm-strikethrough": "^2.0.0", 1044 + "mdast-util-gfm-table": "^2.0.0", 1045 + "mdast-util-gfm-task-list-item": "^2.0.0", 1046 + "mdast-util-to-markdown": "^2.0.0" 1047 + }, 1048 + "funding": { 1049 + "type": "opencollective", 1050 + "url": "https://opencollective.com/unified" 1051 + } 1052 + }, 1053 + "node_modules/mdast-util-gfm-autolink-literal": { 1054 + "version": "2.0.1", 1055 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", 1056 + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", 1057 + "license": "MIT", 1058 + "dependencies": { 1059 + "@types/mdast": "^4.0.0", 1060 + "ccount": "^2.0.0", 1061 + "devlop": "^1.0.0", 1062 + "mdast-util-find-and-replace": "^3.0.0", 1063 + "micromark-util-character": "^2.0.0" 1064 + }, 1065 + "funding": { 1066 + "type": "opencollective", 1067 + "url": "https://opencollective.com/unified" 1068 + } 1069 + }, 1070 + "node_modules/mdast-util-gfm-footnote": { 1071 + "version": "2.1.0", 1072 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", 1073 + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", 1074 + "license": "MIT", 1075 + "dependencies": { 1076 + "@types/mdast": "^4.0.0", 1077 + "devlop": "^1.1.0", 1078 + "mdast-util-from-markdown": "^2.0.0", 1079 + "mdast-util-to-markdown": "^2.0.0", 1080 + "micromark-util-normalize-identifier": "^2.0.0" 1081 + }, 1082 + "funding": { 1083 + "type": "opencollective", 1084 + "url": "https://opencollective.com/unified" 1085 + } 1086 + }, 1087 + "node_modules/mdast-util-gfm-strikethrough": { 1088 + "version": "2.0.0", 1089 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", 1090 + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", 1091 + "license": "MIT", 1092 + "dependencies": { 1093 + "@types/mdast": "^4.0.0", 1094 + "mdast-util-from-markdown": "^2.0.0", 1095 + "mdast-util-to-markdown": "^2.0.0" 1096 + }, 1097 + "funding": { 1098 + "type": "opencollective", 1099 + "url": "https://opencollective.com/unified" 1100 + } 1101 + }, 1102 + "node_modules/mdast-util-gfm-table": { 1103 + "version": "2.0.0", 1104 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", 1105 + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", 1106 + "license": "MIT", 1107 + "dependencies": { 1108 + "@types/mdast": "^4.0.0", 1109 + "devlop": "^1.0.0", 1110 + "markdown-table": "^3.0.0", 1111 + "mdast-util-from-markdown": "^2.0.0", 1112 + "mdast-util-to-markdown": "^2.0.0" 1113 + }, 1114 + "funding": { 1115 + "type": "opencollective", 1116 + "url": "https://opencollective.com/unified" 1117 + } 1118 + }, 1119 + "node_modules/mdast-util-gfm-task-list-item": { 1120 + "version": "2.0.0", 1121 + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", 1122 + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", 1123 + "license": "MIT", 1124 + "dependencies": { 1125 + "@types/mdast": "^4.0.0", 1126 + "devlop": "^1.0.0", 1127 + "mdast-util-from-markdown": "^2.0.0", 1128 + "mdast-util-to-markdown": "^2.0.0" 1129 + }, 1130 + "funding": { 1131 + "type": "opencollective", 1132 + "url": "https://opencollective.com/unified" 1133 + } 1134 + }, 1135 + "node_modules/mdast-util-phrasing": { 1136 + "version": "4.1.0", 1137 + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", 1138 + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", 1139 + "license": "MIT", 1140 + "dependencies": { 1141 + "@types/mdast": "^4.0.0", 1142 + "unist-util-is": "^6.0.0" 1143 + }, 1144 + "funding": { 1145 + "type": "opencollective", 1146 + "url": "https://opencollective.com/unified" 1147 + } 1148 + }, 1149 + "node_modules/mdast-util-to-markdown": { 1150 + "version": "2.1.2", 1151 + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", 1152 + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", 1153 + "license": "MIT", 1154 + "dependencies": { 1155 + "@types/mdast": "^4.0.0", 1156 + "@types/unist": "^3.0.0", 1157 + "longest-streak": "^3.0.0", 1158 + "mdast-util-phrasing": "^4.0.0", 1159 + "mdast-util-to-string": "^4.0.0", 1160 + "micromark-util-classify-character": "^2.0.0", 1161 + "micromark-util-decode-string": "^2.0.0", 1162 + "unist-util-visit": "^5.0.0", 1163 + "zwitch": "^2.0.0" 1164 + }, 1165 + "funding": { 1166 + "type": "opencollective", 1167 + "url": "https://opencollective.com/unified" 1168 + } 1169 + }, 1170 + "node_modules/mdast-util-to-string": { 1171 + "version": "4.0.0", 1172 + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", 1173 + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", 1174 + "license": "MIT", 1175 + "dependencies": { 1176 + "@types/mdast": "^4.0.0" 1177 + }, 1178 + "funding": { 1179 + "type": "opencollective", 1180 + "url": "https://opencollective.com/unified" 1181 + } 1182 + }, 1183 + "node_modules/micromark": { 1184 + "version": "4.0.2", 1185 + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", 1186 + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", 1187 + "funding": [ 1188 + { 1189 + "type": "GitHub Sponsors", 1190 + "url": "https://github.com/sponsors/unifiedjs" 1191 + }, 1192 + { 1193 + "type": "OpenCollective", 1194 + "url": "https://opencollective.com/unified" 1195 + } 1196 + ], 1197 + "license": "MIT", 1198 + "dependencies": { 1199 + "@types/debug": "^4.0.0", 1200 + "debug": "^4.0.0", 1201 + "decode-named-character-reference": "^1.0.0", 1202 + "devlop": "^1.0.0", 1203 + "micromark-core-commonmark": "^2.0.0", 1204 + "micromark-factory-space": "^2.0.0", 1205 + "micromark-util-character": "^2.0.0", 1206 + "micromark-util-chunked": "^2.0.0", 1207 + "micromark-util-combine-extensions": "^2.0.0", 1208 + "micromark-util-decode-numeric-character-reference": "^2.0.0", 1209 + "micromark-util-encode": "^2.0.0", 1210 + "micromark-util-normalize-identifier": "^2.0.0", 1211 + "micromark-util-resolve-all": "^2.0.0", 1212 + "micromark-util-sanitize-uri": "^2.0.0", 1213 + "micromark-util-subtokenize": "^2.0.0", 1214 + "micromark-util-symbol": "^2.0.0", 1215 + "micromark-util-types": "^2.0.0" 1216 + } 1217 + }, 1218 + "node_modules/micromark-core-commonmark": { 1219 + "version": "2.0.3", 1220 + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", 1221 + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", 1222 + "funding": [ 1223 + { 1224 + "type": "GitHub Sponsors", 1225 + "url": "https://github.com/sponsors/unifiedjs" 1226 + }, 1227 + { 1228 + "type": "OpenCollective", 1229 + "url": "https://opencollective.com/unified" 1230 + } 1231 + ], 1232 + "license": "MIT", 1233 + "dependencies": { 1234 + "decode-named-character-reference": "^1.0.0", 1235 + "devlop": "^1.0.0", 1236 + "micromark-factory-destination": "^2.0.0", 1237 + "micromark-factory-label": "^2.0.0", 1238 + "micromark-factory-space": "^2.0.0", 1239 + "micromark-factory-title": "^2.0.0", 1240 + "micromark-factory-whitespace": "^2.0.0", 1241 + "micromark-util-character": "^2.0.0", 1242 + "micromark-util-chunked": "^2.0.0", 1243 + "micromark-util-classify-character": "^2.0.0", 1244 + "micromark-util-html-tag-name": "^2.0.0", 1245 + "micromark-util-normalize-identifier": "^2.0.0", 1246 + "micromark-util-resolve-all": "^2.0.0", 1247 + "micromark-util-subtokenize": "^2.0.0", 1248 + "micromark-util-symbol": "^2.0.0", 1249 + "micromark-util-types": "^2.0.0" 1250 + } 1251 + }, 1252 + "node_modules/micromark-extension-gfm": { 1253 + "version": "3.0.0", 1254 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", 1255 + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", 1256 + "license": "MIT", 1257 + "dependencies": { 1258 + "micromark-extension-gfm-autolink-literal": "^2.0.0", 1259 + "micromark-extension-gfm-footnote": "^2.0.0", 1260 + "micromark-extension-gfm-strikethrough": "^2.0.0", 1261 + "micromark-extension-gfm-table": "^2.0.0", 1262 + "micromark-extension-gfm-tagfilter": "^2.0.0", 1263 + "micromark-extension-gfm-task-list-item": "^2.0.0", 1264 + "micromark-util-combine-extensions": "^2.0.0", 1265 + "micromark-util-types": "^2.0.0" 1266 + }, 1267 + "funding": { 1268 + "type": "opencollective", 1269 + "url": "https://opencollective.com/unified" 1270 + } 1271 + }, 1272 + "node_modules/micromark-extension-gfm-autolink-literal": { 1273 + "version": "2.1.0", 1274 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", 1275 + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", 1276 + "license": "MIT", 1277 + "dependencies": { 1278 + "micromark-util-character": "^2.0.0", 1279 + "micromark-util-sanitize-uri": "^2.0.0", 1280 + "micromark-util-symbol": "^2.0.0", 1281 + "micromark-util-types": "^2.0.0" 1282 + }, 1283 + "funding": { 1284 + "type": "opencollective", 1285 + "url": "https://opencollective.com/unified" 1286 + } 1287 + }, 1288 + "node_modules/micromark-extension-gfm-footnote": { 1289 + "version": "2.1.0", 1290 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", 1291 + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", 1292 + "license": "MIT", 1293 + "dependencies": { 1294 + "devlop": "^1.0.0", 1295 + "micromark-core-commonmark": "^2.0.0", 1296 + "micromark-factory-space": "^2.0.0", 1297 + "micromark-util-character": "^2.0.0", 1298 + "micromark-util-normalize-identifier": "^2.0.0", 1299 + "micromark-util-sanitize-uri": "^2.0.0", 1300 + "micromark-util-symbol": "^2.0.0", 1301 + "micromark-util-types": "^2.0.0" 1302 + }, 1303 + "funding": { 1304 + "type": "opencollective", 1305 + "url": "https://opencollective.com/unified" 1306 + } 1307 + }, 1308 + "node_modules/micromark-extension-gfm-strikethrough": { 1309 + "version": "2.1.0", 1310 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", 1311 + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", 1312 + "license": "MIT", 1313 + "dependencies": { 1314 + "devlop": "^1.0.0", 1315 + "micromark-util-chunked": "^2.0.0", 1316 + "micromark-util-classify-character": "^2.0.0", 1317 + "micromark-util-resolve-all": "^2.0.0", 1318 + "micromark-util-symbol": "^2.0.0", 1319 + "micromark-util-types": "^2.0.0" 1320 + }, 1321 + "funding": { 1322 + "type": "opencollective", 1323 + "url": "https://opencollective.com/unified" 1324 + } 1325 + }, 1326 + "node_modules/micromark-extension-gfm-table": { 1327 + "version": "2.1.1", 1328 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", 1329 + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", 1330 + "license": "MIT", 1331 + "dependencies": { 1332 + "devlop": "^1.0.0", 1333 + "micromark-factory-space": "^2.0.0", 1334 + "micromark-util-character": "^2.0.0", 1335 + "micromark-util-symbol": "^2.0.0", 1336 + "micromark-util-types": "^2.0.0" 1337 + }, 1338 + "funding": { 1339 + "type": "opencollective", 1340 + "url": "https://opencollective.com/unified" 1341 + } 1342 + }, 1343 + "node_modules/micromark-extension-gfm-tagfilter": { 1344 + "version": "2.0.0", 1345 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", 1346 + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", 1347 + "license": "MIT", 1348 + "dependencies": { 1349 + "micromark-util-types": "^2.0.0" 1350 + }, 1351 + "funding": { 1352 + "type": "opencollective", 1353 + "url": "https://opencollective.com/unified" 1354 + } 1355 + }, 1356 + "node_modules/micromark-extension-gfm-task-list-item": { 1357 + "version": "2.1.0", 1358 + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", 1359 + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", 1360 + "license": "MIT", 1361 + "dependencies": { 1362 + "devlop": "^1.0.0", 1363 + "micromark-factory-space": "^2.0.0", 1364 + "micromark-util-character": "^2.0.0", 1365 + "micromark-util-symbol": "^2.0.0", 1366 + "micromark-util-types": "^2.0.0" 1367 + }, 1368 + "funding": { 1369 + "type": "opencollective", 1370 + "url": "https://opencollective.com/unified" 1371 + } 1372 + }, 1373 + "node_modules/micromark-factory-destination": { 1374 + "version": "2.0.1", 1375 + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", 1376 + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", 1377 + "funding": [ 1378 + { 1379 + "type": "GitHub Sponsors", 1380 + "url": "https://github.com/sponsors/unifiedjs" 1381 + }, 1382 + { 1383 + "type": "OpenCollective", 1384 + "url": "https://opencollective.com/unified" 1385 + } 1386 + ], 1387 + "license": "MIT", 1388 + "dependencies": { 1389 + "micromark-util-character": "^2.0.0", 1390 + "micromark-util-symbol": "^2.0.0", 1391 + "micromark-util-types": "^2.0.0" 1392 + } 1393 + }, 1394 + "node_modules/micromark-factory-label": { 1395 + "version": "2.0.1", 1396 + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", 1397 + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", 1398 + "funding": [ 1399 + { 1400 + "type": "GitHub Sponsors", 1401 + "url": "https://github.com/sponsors/unifiedjs" 1402 + }, 1403 + { 1404 + "type": "OpenCollective", 1405 + "url": "https://opencollective.com/unified" 1406 + } 1407 + ], 1408 + "license": "MIT", 1409 + "dependencies": { 1410 + "devlop": "^1.0.0", 1411 + "micromark-util-character": "^2.0.0", 1412 + "micromark-util-symbol": "^2.0.0", 1413 + "micromark-util-types": "^2.0.0" 1414 + } 1415 + }, 1416 + "node_modules/micromark-factory-space": { 1417 + "version": "2.0.1", 1418 + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", 1419 + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", 1420 + "funding": [ 1421 + { 1422 + "type": "GitHub Sponsors", 1423 + "url": "https://github.com/sponsors/unifiedjs" 1424 + }, 1425 + { 1426 + "type": "OpenCollective", 1427 + "url": "https://opencollective.com/unified" 1428 + } 1429 + ], 1430 + "license": "MIT", 1431 + "dependencies": { 1432 + "micromark-util-character": "^2.0.0", 1433 + "micromark-util-types": "^2.0.0" 1434 + } 1435 + }, 1436 + "node_modules/micromark-factory-title": { 1437 + "version": "2.0.1", 1438 + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", 1439 + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", 1440 + "funding": [ 1441 + { 1442 + "type": "GitHub Sponsors", 1443 + "url": "https://github.com/sponsors/unifiedjs" 1444 + }, 1445 + { 1446 + "type": "OpenCollective", 1447 + "url": "https://opencollective.com/unified" 1448 + } 1449 + ], 1450 + "license": "MIT", 1451 + "dependencies": { 1452 + "micromark-factory-space": "^2.0.0", 1453 + "micromark-util-character": "^2.0.0", 1454 + "micromark-util-symbol": "^2.0.0", 1455 + "micromark-util-types": "^2.0.0" 1456 + } 1457 + }, 1458 + "node_modules/micromark-factory-whitespace": { 1459 + "version": "2.0.1", 1460 + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", 1461 + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", 1462 + "funding": [ 1463 + { 1464 + "type": "GitHub Sponsors", 1465 + "url": "https://github.com/sponsors/unifiedjs" 1466 + }, 1467 + { 1468 + "type": "OpenCollective", 1469 + "url": "https://opencollective.com/unified" 1470 + } 1471 + ], 1472 + "license": "MIT", 1473 + "dependencies": { 1474 + "micromark-factory-space": "^2.0.0", 1475 + "micromark-util-character": "^2.0.0", 1476 + "micromark-util-symbol": "^2.0.0", 1477 + "micromark-util-types": "^2.0.0" 1478 + } 1479 + }, 1480 + "node_modules/micromark-util-character": { 1481 + "version": "2.1.1", 1482 + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", 1483 + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", 1484 + "funding": [ 1485 + { 1486 + "type": "GitHub Sponsors", 1487 + "url": "https://github.com/sponsors/unifiedjs" 1488 + }, 1489 + { 1490 + "type": "OpenCollective", 1491 + "url": "https://opencollective.com/unified" 1492 + } 1493 + ], 1494 + "license": "MIT", 1495 + "dependencies": { 1496 + "micromark-util-symbol": "^2.0.0", 1497 + "micromark-util-types": "^2.0.0" 1498 + } 1499 + }, 1500 + "node_modules/micromark-util-chunked": { 1501 + "version": "2.0.1", 1502 + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", 1503 + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", 1504 + "funding": [ 1505 + { 1506 + "type": "GitHub Sponsors", 1507 + "url": "https://github.com/sponsors/unifiedjs" 1508 + }, 1509 + { 1510 + "type": "OpenCollective", 1511 + "url": "https://opencollective.com/unified" 1512 + } 1513 + ], 1514 + "license": "MIT", 1515 + "dependencies": { 1516 + "micromark-util-symbol": "^2.0.0" 1517 + } 1518 + }, 1519 + "node_modules/micromark-util-classify-character": { 1520 + "version": "2.0.1", 1521 + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", 1522 + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", 1523 + "funding": [ 1524 + { 1525 + "type": "GitHub Sponsors", 1526 + "url": "https://github.com/sponsors/unifiedjs" 1527 + }, 1528 + { 1529 + "type": "OpenCollective", 1530 + "url": "https://opencollective.com/unified" 1531 + } 1532 + ], 1533 + "license": "MIT", 1534 + "dependencies": { 1535 + "micromark-util-character": "^2.0.0", 1536 + "micromark-util-symbol": "^2.0.0", 1537 + "micromark-util-types": "^2.0.0" 1538 + } 1539 + }, 1540 + "node_modules/micromark-util-combine-extensions": { 1541 + "version": "2.0.1", 1542 + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", 1543 + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", 1544 + "funding": [ 1545 + { 1546 + "type": "GitHub Sponsors", 1547 + "url": "https://github.com/sponsors/unifiedjs" 1548 + }, 1549 + { 1550 + "type": "OpenCollective", 1551 + "url": "https://opencollective.com/unified" 1552 + } 1553 + ], 1554 + "license": "MIT", 1555 + "dependencies": { 1556 + "micromark-util-chunked": "^2.0.0", 1557 + "micromark-util-types": "^2.0.0" 1558 + } 1559 + }, 1560 + "node_modules/micromark-util-decode-numeric-character-reference": { 1561 + "version": "2.0.2", 1562 + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", 1563 + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", 1564 + "funding": [ 1565 + { 1566 + "type": "GitHub Sponsors", 1567 + "url": "https://github.com/sponsors/unifiedjs" 1568 + }, 1569 + { 1570 + "type": "OpenCollective", 1571 + "url": "https://opencollective.com/unified" 1572 + } 1573 + ], 1574 + "license": "MIT", 1575 + "dependencies": { 1576 + "micromark-util-symbol": "^2.0.0" 1577 + } 1578 + }, 1579 + "node_modules/micromark-util-decode-string": { 1580 + "version": "2.0.1", 1581 + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", 1582 + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", 1583 + "funding": [ 1584 + { 1585 + "type": "GitHub Sponsors", 1586 + "url": "https://github.com/sponsors/unifiedjs" 1587 + }, 1588 + { 1589 + "type": "OpenCollective", 1590 + "url": "https://opencollective.com/unified" 1591 + } 1592 + ], 1593 + "license": "MIT", 1594 + "dependencies": { 1595 + "decode-named-character-reference": "^1.0.0", 1596 + "micromark-util-character": "^2.0.0", 1597 + "micromark-util-decode-numeric-character-reference": "^2.0.0", 1598 + "micromark-util-symbol": "^2.0.0" 1599 + } 1600 + }, 1601 + "node_modules/micromark-util-encode": { 1602 + "version": "2.0.1", 1603 + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", 1604 + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", 1605 + "funding": [ 1606 + { 1607 + "type": "GitHub Sponsors", 1608 + "url": "https://github.com/sponsors/unifiedjs" 1609 + }, 1610 + { 1611 + "type": "OpenCollective", 1612 + "url": "https://opencollective.com/unified" 1613 + } 1614 + ], 1615 + "license": "MIT" 1616 + }, 1617 + "node_modules/micromark-util-html-tag-name": { 1618 + "version": "2.0.1", 1619 + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", 1620 + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", 1621 + "funding": [ 1622 + { 1623 + "type": "GitHub Sponsors", 1624 + "url": "https://github.com/sponsors/unifiedjs" 1625 + }, 1626 + { 1627 + "type": "OpenCollective", 1628 + "url": "https://opencollective.com/unified" 1629 + } 1630 + ], 1631 + "license": "MIT" 1632 + }, 1633 + "node_modules/micromark-util-normalize-identifier": { 1634 + "version": "2.0.1", 1635 + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", 1636 + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", 1637 + "funding": [ 1638 + { 1639 + "type": "GitHub Sponsors", 1640 + "url": "https://github.com/sponsors/unifiedjs" 1641 + }, 1642 + { 1643 + "type": "OpenCollective", 1644 + "url": "https://opencollective.com/unified" 1645 + } 1646 + ], 1647 + "license": "MIT", 1648 + "dependencies": { 1649 + "micromark-util-symbol": "^2.0.0" 1650 + } 1651 + }, 1652 + "node_modules/micromark-util-resolve-all": { 1653 + "version": "2.0.1", 1654 + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", 1655 + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", 1656 + "funding": [ 1657 + { 1658 + "type": "GitHub Sponsors", 1659 + "url": "https://github.com/sponsors/unifiedjs" 1660 + }, 1661 + { 1662 + "type": "OpenCollective", 1663 + "url": "https://opencollective.com/unified" 1664 + } 1665 + ], 1666 + "license": "MIT", 1667 + "dependencies": { 1668 + "micromark-util-types": "^2.0.0" 1669 + } 1670 + }, 1671 + "node_modules/micromark-util-sanitize-uri": { 1672 + "version": "2.0.1", 1673 + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", 1674 + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", 1675 + "funding": [ 1676 + { 1677 + "type": "GitHub Sponsors", 1678 + "url": "https://github.com/sponsors/unifiedjs" 1679 + }, 1680 + { 1681 + "type": "OpenCollective", 1682 + "url": "https://opencollective.com/unified" 1683 + } 1684 + ], 1685 + "license": "MIT", 1686 + "dependencies": { 1687 + "micromark-util-character": "^2.0.0", 1688 + "micromark-util-encode": "^2.0.0", 1689 + "micromark-util-symbol": "^2.0.0" 1690 + } 1691 + }, 1692 + "node_modules/micromark-util-subtokenize": { 1693 + "version": "2.1.0", 1694 + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", 1695 + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", 1696 + "funding": [ 1697 + { 1698 + "type": "GitHub Sponsors", 1699 + "url": "https://github.com/sponsors/unifiedjs" 1700 + }, 1701 + { 1702 + "type": "OpenCollective", 1703 + "url": "https://opencollective.com/unified" 1704 + } 1705 + ], 1706 + "license": "MIT", 1707 + "dependencies": { 1708 + "devlop": "^1.0.0", 1709 + "micromark-util-chunked": "^2.0.0", 1710 + "micromark-util-symbol": "^2.0.0", 1711 + "micromark-util-types": "^2.0.0" 1712 + } 1713 + }, 1714 + "node_modules/micromark-util-symbol": { 1715 + "version": "2.0.1", 1716 + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", 1717 + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", 1718 + "funding": [ 1719 + { 1720 + "type": "GitHub Sponsors", 1721 + "url": "https://github.com/sponsors/unifiedjs" 1722 + }, 1723 + { 1724 + "type": "OpenCollective", 1725 + "url": "https://opencollective.com/unified" 1726 + } 1727 + ], 1728 + "license": "MIT" 1729 + }, 1730 + "node_modules/micromark-util-types": { 1731 + "version": "2.0.2", 1732 + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", 1733 + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", 1734 + "funding": [ 1735 + { 1736 + "type": "GitHub Sponsors", 1737 + "url": "https://github.com/sponsors/unifiedjs" 1738 + }, 1739 + { 1740 + "type": "OpenCollective", 1741 + "url": "https://opencollective.com/unified" 1742 + } 1743 + ], 1744 + "license": "MIT" 1745 + }, 1746 + "node_modules/ms": { 1747 + "version": "2.1.3", 1748 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1749 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1750 + "license": "MIT" 1751 + }, 1752 + "node_modules/nanoid": { 1753 + "version": "5.1.6", 1754 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", 1755 + "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", 1756 + "funding": [ 1757 + { 1758 + "type": "github", 1759 + "url": "https://github.com/sponsors/ai" 1760 + } 1761 + ], 1762 + "license": "MIT", 1763 + "bin": { 1764 + "nanoid": "bin/nanoid.js" 1765 + }, 1766 + "engines": { 1767 + "node": "^18 || >=20" 1768 + } 1769 + }, 1770 + "node_modules/orderedmap": { 1771 + "version": "2.1.1", 1772 + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", 1773 + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", 1774 + "license": "MIT" 1775 + }, 1776 + "node_modules/picocolors": { 1777 + "version": "1.1.1", 1778 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1779 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1780 + "license": "ISC" 1781 + }, 1782 + "node_modules/postcss": { 1783 + "version": "8.5.8", 1784 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", 1785 + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", 1786 + "funding": [ 1787 + { 1788 + "type": "opencollective", 1789 + "url": "https://opencollective.com/postcss/" 1790 + }, 1791 + { 1792 + "type": "tidelift", 1793 + "url": "https://tidelift.com/funding/github/npm/postcss" 1794 + }, 1795 + { 1796 + "type": "github", 1797 + "url": "https://github.com/sponsors/ai" 1798 + } 1799 + ], 1800 + "license": "MIT", 1801 + "dependencies": { 1802 + "nanoid": "^3.3.11", 1803 + "picocolors": "^1.1.1", 1804 + "source-map-js": "^1.2.1" 1805 + }, 1806 + "engines": { 1807 + "node": "^10 || ^12 || >=14" 1808 + } 1809 + }, 1810 + "node_modules/postcss/node_modules/nanoid": { 1811 + "version": "3.3.11", 1812 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 1813 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 1814 + "funding": [ 1815 + { 1816 + "type": "github", 1817 + "url": "https://github.com/sponsors/ai" 1818 + } 1819 + ], 1820 + "license": "MIT", 1821 + "bin": { 1822 + "nanoid": "bin/nanoid.cjs" 1823 + }, 1824 + "engines": { 1825 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1826 + } 1827 + }, 1828 + "node_modules/prosemirror-changeset": { 1829 + "version": "2.4.0", 1830 + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.4.0.tgz", 1831 + "integrity": "sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng==", 1832 + "license": "MIT", 1833 + "dependencies": { 1834 + "prosemirror-transform": "^1.0.0" 1835 + } 1836 + }, 1837 + "node_modules/prosemirror-commands": { 1838 + "version": "1.7.1", 1839 + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz", 1840 + "integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==", 1841 + "license": "MIT", 1842 + "dependencies": { 1843 + "prosemirror-model": "^1.0.0", 1844 + "prosemirror-state": "^1.0.0", 1845 + "prosemirror-transform": "^1.10.2" 1846 + } 1847 + }, 1848 + "node_modules/prosemirror-drop-indicator": { 1849 + "version": "0.1.3", 1850 + "resolved": "https://registry.npmjs.org/prosemirror-drop-indicator/-/prosemirror-drop-indicator-0.1.3.tgz", 1851 + "integrity": "sha512-fJV6G2tHIVXZLUuc60fS9ly1/GuGOlAZUm67S1El+kGFUYh27Hyv6hcGx3rrJ+Q/JZL5jnyAibIZYYWpPqE45g==", 1852 + "license": "MIT", 1853 + "dependencies": { 1854 + "@ocavue/utils": "^1.0.0", 1855 + "prosemirror-model": "^1.25.4", 1856 + "prosemirror-state": "^1.4.4", 1857 + "prosemirror-view": "^1.41.3" 1858 + }, 1859 + "funding": { 1860 + "url": "https://github.com/sponsors/ocavue" 1861 + } 1862 + }, 1863 + "node_modules/prosemirror-dropcursor": { 1864 + "version": "1.8.2", 1865 + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz", 1866 + "integrity": "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==", 1867 + "license": "MIT", 1868 + "dependencies": { 1869 + "prosemirror-state": "^1.0.0", 1870 + "prosemirror-transform": "^1.1.0", 1871 + "prosemirror-view": "^1.1.0" 1872 + } 1873 + }, 1874 + "node_modules/prosemirror-gapcursor": { 1875 + "version": "1.4.0", 1876 + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.4.0.tgz", 1877 + "integrity": "sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==", 1878 + "license": "MIT", 1879 + "dependencies": { 1880 + "prosemirror-keymap": "^1.0.0", 1881 + "prosemirror-model": "^1.0.0", 1882 + "prosemirror-state": "^1.0.0", 1883 + "prosemirror-view": "^1.0.0" 1884 + } 1885 + }, 1886 + "node_modules/prosemirror-history": { 1887 + "version": "1.5.0", 1888 + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.5.0.tgz", 1889 + "integrity": "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==", 1890 + "license": "MIT", 1891 + "dependencies": { 1892 + "prosemirror-state": "^1.2.2", 1893 + "prosemirror-transform": "^1.0.0", 1894 + "prosemirror-view": "^1.31.0", 1895 + "rope-sequence": "^1.3.0" 1896 + } 1897 + }, 1898 + "node_modules/prosemirror-inputrules": { 1899 + "version": "1.5.1", 1900 + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz", 1901 + "integrity": "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==", 1902 + "license": "MIT", 1903 + "dependencies": { 1904 + "prosemirror-state": "^1.0.0", 1905 + "prosemirror-transform": "^1.0.0" 1906 + } 1907 + }, 1908 + "node_modules/prosemirror-keymap": { 1909 + "version": "1.2.3", 1910 + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz", 1911 + "integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==", 1912 + "license": "MIT", 1913 + "dependencies": { 1914 + "prosemirror-state": "^1.0.0", 1915 + "w3c-keyname": "^2.2.0" 1916 + } 1917 + }, 1918 + "node_modules/prosemirror-model": { 1919 + "version": "1.25.4", 1920 + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz", 1921 + "integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==", 1922 + "license": "MIT", 1923 + "dependencies": { 1924 + "orderedmap": "^2.0.0" 1925 + } 1926 + }, 1927 + "node_modules/prosemirror-safari-ime-span": { 1928 + "version": "1.0.2", 1929 + "resolved": "https://registry.npmjs.org/prosemirror-safari-ime-span/-/prosemirror-safari-ime-span-1.0.2.tgz", 1930 + "integrity": "sha512-QJqD8s1zE/CuK56kDsUhndh5hiHh/gFnAuPOA9ytva2s85/ZEt2tNWeALTJN48DtWghSKOmiBsvVn2OlnJ5H2w==", 1931 + "license": "MIT", 1932 + "dependencies": { 1933 + "prosemirror-state": "^1.4.3", 1934 + "prosemirror-view": "^1.33.8" 1935 + }, 1936 + "funding": { 1937 + "url": "https://github.com/sponsors/ocavue" 1938 + } 1939 + }, 1940 + "node_modules/prosemirror-schema-list": { 1941 + "version": "1.5.1", 1942 + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", 1943 + "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", 1944 + "license": "MIT", 1945 + "dependencies": { 1946 + "prosemirror-model": "^1.0.0", 1947 + "prosemirror-state": "^1.0.0", 1948 + "prosemirror-transform": "^1.7.3" 1949 + } 1950 + }, 1951 + "node_modules/prosemirror-state": { 1952 + "version": "1.4.4", 1953 + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz", 1954 + "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==", 1955 + "license": "MIT", 1956 + "dependencies": { 1957 + "prosemirror-model": "^1.0.0", 1958 + "prosemirror-transform": "^1.0.0", 1959 + "prosemirror-view": "^1.27.0" 1960 + } 1961 + }, 1962 + "node_modules/prosemirror-tables": { 1963 + "version": "1.8.5", 1964 + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.8.5.tgz", 1965 + "integrity": "sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==", 1966 + "license": "MIT", 1967 + "dependencies": { 1968 + "prosemirror-keymap": "^1.2.3", 1969 + "prosemirror-model": "^1.25.4", 1970 + "prosemirror-state": "^1.4.4", 1971 + "prosemirror-transform": "^1.10.5", 1972 + "prosemirror-view": "^1.41.4" 1973 + } 1974 + }, 1975 + "node_modules/prosemirror-transform": { 1976 + "version": "1.11.0", 1977 + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.11.0.tgz", 1978 + "integrity": "sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw==", 1979 + "license": "MIT", 1980 + "dependencies": { 1981 + "prosemirror-model": "^1.21.0" 1982 + } 1983 + }, 1984 + "node_modules/prosemirror-view": { 1985 + "version": "1.41.6", 1986 + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.6.tgz", 1987 + "integrity": "sha512-mxpcDG4hNQa/CPtzxjdlir5bJFDlm0/x5nGBbStB2BWX+XOQ9M8ekEG+ojqB5BcVu2Rc80/jssCMZzSstJuSYg==", 1988 + "license": "MIT", 1989 + "dependencies": { 1990 + "prosemirror-model": "^1.20.0", 1991 + "prosemirror-state": "^1.0.0", 1992 + "prosemirror-transform": "^1.1.0" 1993 + } 1994 + }, 1995 + "node_modules/remark": { 1996 + "version": "15.0.1", 1997 + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", 1998 + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", 1999 + "license": "MIT", 2000 + "dependencies": { 2001 + "@types/mdast": "^4.0.0", 2002 + "remark-parse": "^11.0.0", 2003 + "remark-stringify": "^11.0.0", 2004 + "unified": "^11.0.0" 2005 + }, 2006 + "funding": { 2007 + "type": "opencollective", 2008 + "url": "https://opencollective.com/unified" 2009 + } 2010 + }, 2011 + "node_modules/remark-gfm": { 2012 + "version": "4.0.1", 2013 + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", 2014 + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", 2015 + "license": "MIT", 2016 + "dependencies": { 2017 + "@types/mdast": "^4.0.0", 2018 + "mdast-util-gfm": "^3.0.0", 2019 + "micromark-extension-gfm": "^3.0.0", 2020 + "remark-parse": "^11.0.0", 2021 + "remark-stringify": "^11.0.0", 2022 + "unified": "^11.0.0" 2023 + }, 2024 + "funding": { 2025 + "type": "opencollective", 2026 + "url": "https://opencollective.com/unified" 2027 + } 2028 + }, 2029 + "node_modules/remark-inline-links": { 2030 + "version": "7.0.0", 2031 + "resolved": "https://registry.npmjs.org/remark-inline-links/-/remark-inline-links-7.0.0.tgz", 2032 + "integrity": "sha512-4uj1pPM+F495ySZhTIB6ay2oSkTsKgmYaKk/q5HIdhX2fuyLEegpjWa0VdJRJ01sgOqAFo7MBKdDUejIYBMVMQ==", 2033 + "license": "MIT", 2034 + "dependencies": { 2035 + "@types/mdast": "^4.0.0", 2036 + "mdast-util-definitions": "^6.0.0", 2037 + "unist-util-visit": "^5.0.0" 2038 + }, 2039 + "funding": { 2040 + "type": "opencollective", 2041 + "url": "https://opencollective.com/unified" 2042 + } 2043 + }, 2044 + "node_modules/remark-parse": { 2045 + "version": "11.0.0", 2046 + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", 2047 + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", 2048 + "license": "MIT", 2049 + "dependencies": { 2050 + "@types/mdast": "^4.0.0", 2051 + "mdast-util-from-markdown": "^2.0.0", 2052 + "micromark-util-types": "^2.0.0", 2053 + "unified": "^11.0.0" 2054 + }, 2055 + "funding": { 2056 + "type": "opencollective", 2057 + "url": "https://opencollective.com/unified" 2058 + } 2059 + }, 2060 + "node_modules/remark-stringify": { 2061 + "version": "11.0.0", 2062 + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", 2063 + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", 2064 + "license": "MIT", 2065 + "dependencies": { 2066 + "@types/mdast": "^4.0.0", 2067 + "mdast-util-to-markdown": "^2.0.0", 2068 + "unified": "^11.0.0" 2069 + }, 2070 + "funding": { 2071 + "type": "opencollective", 2072 + "url": "https://opencollective.com/unified" 2073 + } 2074 + }, 2075 + "node_modules/rope-sequence": { 2076 + "version": "1.3.4", 2077 + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", 2078 + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", 2079 + "license": "MIT" 2080 + }, 2081 + "node_modules/source-map-js": { 2082 + "version": "1.2.1", 2083 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2084 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2085 + "license": "BSD-3-Clause", 2086 + "engines": { 2087 + "node": ">=0.10.0" 2088 + } 2089 + }, 254 2090 "node_modules/style-mod": { 255 2091 "version": "4.1.3", 256 2092 "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", 257 2093 "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", 258 2094 "license": "MIT" 259 2095 }, 2096 + "node_modules/trough": { 2097 + "version": "2.2.0", 2098 + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", 2099 + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", 2100 + "license": "MIT", 2101 + "funding": { 2102 + "type": "github", 2103 + "url": "https://github.com/sponsors/wooorm" 2104 + } 2105 + }, 2106 + "node_modules/unified": { 2107 + "version": "11.0.5", 2108 + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", 2109 + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", 2110 + "license": "MIT", 2111 + "dependencies": { 2112 + "@types/unist": "^3.0.0", 2113 + "bail": "^2.0.0", 2114 + "devlop": "^1.0.0", 2115 + "extend": "^3.0.0", 2116 + "is-plain-obj": "^4.0.0", 2117 + "trough": "^2.0.0", 2118 + "vfile": "^6.0.0" 2119 + }, 2120 + "funding": { 2121 + "type": "opencollective", 2122 + "url": "https://opencollective.com/unified" 2123 + } 2124 + }, 2125 + "node_modules/unist-util-is": { 2126 + "version": "6.0.1", 2127 + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", 2128 + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", 2129 + "license": "MIT", 2130 + "dependencies": { 2131 + "@types/unist": "^3.0.0" 2132 + }, 2133 + "funding": { 2134 + "type": "opencollective", 2135 + "url": "https://opencollective.com/unified" 2136 + } 2137 + }, 2138 + "node_modules/unist-util-stringify-position": { 2139 + "version": "4.0.0", 2140 + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", 2141 + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", 2142 + "license": "MIT", 2143 + "dependencies": { 2144 + "@types/unist": "^3.0.0" 2145 + }, 2146 + "funding": { 2147 + "type": "opencollective", 2148 + "url": "https://opencollective.com/unified" 2149 + } 2150 + }, 2151 + "node_modules/unist-util-visit": { 2152 + "version": "5.1.0", 2153 + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", 2154 + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", 2155 + "license": "MIT", 2156 + "dependencies": { 2157 + "@types/unist": "^3.0.0", 2158 + "unist-util-is": "^6.0.0", 2159 + "unist-util-visit-parents": "^6.0.0" 2160 + }, 2161 + "funding": { 2162 + "type": "opencollective", 2163 + "url": "https://opencollective.com/unified" 2164 + } 2165 + }, 2166 + "node_modules/unist-util-visit-parents": { 2167 + "version": "6.0.2", 2168 + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", 2169 + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", 2170 + "license": "MIT", 2171 + "dependencies": { 2172 + "@types/unist": "^3.0.0", 2173 + "unist-util-is": "^6.0.0" 2174 + }, 2175 + "funding": { 2176 + "type": "opencollective", 2177 + "url": "https://opencollective.com/unified" 2178 + } 2179 + }, 2180 + "node_modules/vfile": { 2181 + "version": "6.0.3", 2182 + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", 2183 + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", 2184 + "license": "MIT", 2185 + "dependencies": { 2186 + "@types/unist": "^3.0.0", 2187 + "vfile-message": "^4.0.0" 2188 + }, 2189 + "funding": { 2190 + "type": "opencollective", 2191 + "url": "https://opencollective.com/unified" 2192 + } 2193 + }, 2194 + "node_modules/vfile-message": { 2195 + "version": "4.0.3", 2196 + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", 2197 + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", 2198 + "license": "MIT", 2199 + "dependencies": { 2200 + "@types/unist": "^3.0.0", 2201 + "unist-util-stringify-position": "^4.0.0" 2202 + }, 2203 + "funding": { 2204 + "type": "opencollective", 2205 + "url": "https://opencollective.com/unified" 2206 + } 2207 + }, 2208 + "node_modules/vue": { 2209 + "version": "3.5.29", 2210 + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.29.tgz", 2211 + "integrity": "sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==", 2212 + "license": "MIT", 2213 + "dependencies": { 2214 + "@vue/compiler-dom": "3.5.29", 2215 + "@vue/compiler-sfc": "3.5.29", 2216 + "@vue/runtime-dom": "3.5.29", 2217 + "@vue/server-renderer": "3.5.29", 2218 + "@vue/shared": "3.5.29" 2219 + }, 2220 + "peerDependencies": { 2221 + "typescript": "*" 2222 + }, 2223 + "peerDependenciesMeta": { 2224 + "typescript": { 2225 + "optional": true 2226 + } 2227 + } 2228 + }, 260 2229 "node_modules/w3c-keyname": { 261 2230 "version": "2.2.8", 262 2231 "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", 263 2232 "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", 264 2233 "license": "MIT" 2234 + }, 2235 + "node_modules/zwitch": { 2236 + "version": "2.0.4", 2237 + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", 2238 + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", 2239 + "license": "MIT", 2240 + "funding": { 2241 + "type": "github", 2242 + "url": "https://github.com/sponsors/wooorm" 2243 + } 265 2244 } 266 2245 } 267 2246 }
+21
static/css/editor.css
··· 22 22 display: flex; 23 23 align-items: center; 24 24 gap: 0.75rem; 25 + flex-shrink: 0; 26 + } 27 + 28 + @media (max-width: 600px) { 29 + .editor-toolbar { 30 + flex-wrap: wrap; 31 + gap: 0.4rem; 32 + padding: 0.4rem 0.75rem; 33 + } 34 + 35 + .breadcrumb { 36 + flex: 1 1 100%; 37 + min-width: 0; 38 + } 39 + 40 + .toolbar-actions { 41 + flex: 1 1 100%; 42 + gap: 0.4rem; 43 + overflow-x: auto; 44 + padding-bottom: 0.1rem; 45 + } 25 46 } 26 47 27 48 .btn-outline.active {
static/favicon.ico

This is a binary file and will not be displayed.

static/img/logo-document.png

This is a binary file and will not be displayed.

+15 -27
static/img/logo-document.svg static/img/dd-logo.svg
··· 1 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 2 <svg 3 - width="400" 4 - height="511.24261" 5 - viewBox="0 0 400 511.24261" 3 + width="365" 4 + height="466.50885" 5 + viewBox="0 0 365 466.50885" 6 6 version="1.1" 7 7 xml:space="preserve" 8 8 style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" 9 9 id="svg8" 10 - sodipodi:docname="logo-document.svg" 11 - inkscape:version="1.3.2 (091e20e, 2023-11-25)" 12 - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 13 - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 14 10 xmlns="http://www.w3.org/2000/svg" 15 - xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview 16 - id="namedview1" 17 - pagecolor="#ffffff" 18 - bordercolor="#000000" 19 - borderopacity="0.25" 20 - inkscape:showpageshadow="2" 21 - inkscape:pageopacity="0.0" 22 - inkscape:pagecheckerboard="0" 23 - inkscape:deskcolor="#d1d1d1" 24 - inkscape:zoom="0.53777778" 25 - inkscape:cx="431.40496" 26 - inkscape:cy="530.88843" 27 - inkscape:window-width="1776" 28 - inkscape:window-height="1184" 29 - inkscape:window-x="2789" 30 - inkscape:window-y="31" 31 - inkscape:window-maximized="0" 32 - inkscape:current-layer="svg8" /><defs 11 + xmlns:svg="http://www.w3.org/2000/svg"><defs 33 12 id="defs8" /> 34 13 35 14 ··· 40 19 41 20 <g 42 21 id="g9" 43 - transform="matrix(11.111111,0,0,11.61915,-22.222222,-23.2383)"><path 22 + transform="matrix(10.138889,0,0,10.602474,-20.277778,-21.204948)"><path 44 23 d="M 2,4 C 2,2.895 2.895,2 4,2 h 22 l 12,12 v 30 c 0,1.105 -0.895,2 -2,2 H 4 C 2.895,46 2,45.105 2,44 Z" 45 24 style="fill:#2563eb" 46 - id="path1" /><g 25 + id="path1" /><path 26 + d="M 7.9224904,13.449877 H 6.1110306 v -1.04191 h 1.7326966 c 0.7963736,0 1.457103,-0.146446 1.9821849,-0.439355 0.5250799,-0.292911 0.9167029,-0.711339 1.1748679,-1.255305 0.258169,-0.548157 0.387252,-1.2009176 0.387252,-1.9582872 0,-0.7490003 -0.12909,-1.393392 -0.387252,-1.9331744 C 10.746997,6.2820628 10.366305,5.8678111 9.8587302,5.57909 9.355527,5.2861849 8.7232396,5.139732 7.9618709,5.139732 H 6.1110306 V 4.097847 l 1.9361656,-2.1e-5 c 0.9538997,-1.05e-5 1.7677766,0.1862038 2.4416338,0.5586122 0.67823,0.3724081 1.196749,0.9080066 1.555554,1.606795 0.363179,0.6946035 0.544769,1.5251982 0.544769,2.4917866 0,0.9749583 -0.18159,1.8139222 -0.544769,2.5168922 -0.363177,0.698793 -0.892637,1.236485 -1.588377,1.613074 -0.6957302,0.376591 -1.5402366,0.564891 -2.5335166,0.564891 z M 6.1109554,4.097826 v 9.352051 H 4.8770122 V 4.097826 Z" 27 + id="text1" 28 + style="font-size:67.4282px;line-height:1;font-family:'Inter 18pt';letter-spacing:0px;fill:#ececec;stroke-width:0.258756" 29 + aria-label="D" /><text 30 + style="font-style:normal;font-size:13.1447px;line-height:1;font-family:'Inter 18pt';letter-spacing:0px;fill:#b3b3b3;stroke-width:0.258756" 31 + x="10.490101" 32 + y="13.585623" 33 + id="text2" 34 + transform="scale(1.0226062,0.97789354)">d</text><g 47 35 transform="matrix(0,-1.475264,1,0,-17.976555,48.258067)" 48 36 id="g2"> 49 37 <path
+16
templates/base.html
··· 4 4 <head> 5 5 <meta charset="utf-8"> 6 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 + <link rel="icon" href="/favicon.ico" sizes="any"> 8 + <link rel="icon" href="/favicon.svg" type="image/svg+xml"> 9 + <link rel="apple-touch-icon" href="/favicon/apple-touch-icon.png"> 10 + <link rel="manifest" href="/favicon/site.webmanifest"> 7 11 <title>{{.Title}} — Diffdown</title> 12 + <meta name="description" content="{{if .Description}}{{.Description}}{{else}}Diffdown — collaborative markdown editing and publishing.{{end}}"> 13 + <!-- Open Graph --> 14 + <meta property="og:type" content="website"> 15 + <meta property="og:site_name" content="Diffdown"> 16 + <meta property="og:title" content="{{.Title}} — Diffdown"> 17 + <meta property="og:description" content="{{if .Description}}{{.Description}}{{else}}Diffdown — collaborative markdown editing and publishing.{{end}}"> 18 + <meta property="og:image" content="{{if .OGImage}}{{.OGImage}}{{else}}/favicon/android-chrome-512x512.png{{end}}"> 19 + <!-- Twitter Card --> 20 + <meta name="twitter:card" content="summary"> 21 + <meta name="twitter:title" content="{{.Title}} — Diffdown"> 22 + <meta name="twitter:description" content="{{if .Description}}{{.Description}}{{else}}Diffdown — collaborative markdown editing and publishing.{{end}}"> 23 + <meta name="twitter:image" content="{{if .OGImage}}{{.OGImage}}{{else}}/favicon/android-chrome-512x512.png{{end}}"> 8 24 <link rel="stylesheet" href="/static/css/style.css"> 9 25 {{block "head" .}}{{end}} 10 26 <script>
+1 -1
templates/document_edit.html
··· 223 223 if (mode === 'source') { 224 224 richEl.style.display = 'none'; 225 225 sourceEl.style.display = ''; 226 - sourceOnlyBtns.forEach(b => b.style.display = ''); 226 + sourceOnlyBtns.forEach(b => b.style.display = 'inline-block'); 227 227 richOnlyBtns.forEach(b => b.style.display = 'none'); 228 228 sourceBtn.classList.add('active'); 229 229 } else {
+1 -1
templates/landing.html
··· 3 3 <div class="landing"> 4 4 <h1>Collaborative Markdown Editing</h1> 5 5 <p>Write, review, and collaborate on Markdown documents with your team. Uh, eventually. Right now, you can only write and edit solo documents.</p> 6 - <p><strong>Note:</strong> This app is a toy I built to learn <a href="https://atproto.com/">AT Protocol</a>, <a href="https://standard.site/">standard.site</a>, and <a href="https://claude.com/">Claude Code</a>. It is not meant for actual use. Any documents you create will be visible to anyone with the URL and may be deleted at any time.</p> 6 + <p><strong>Note:</strong> This app is a toy I built to learn <a href="https://atproto.com/">AT Protocol</a>, lexicons, and <a href="https://claude.com/">Claude Code</a>. It is not meant for actual use. Any documents you create will be visible to anyone with the URL and may be deleted at any time.</p> 7 7 <div class="landing-actions"> 8 8 <a href="/auth/register" class="btn btn-lg">Get Started</a> 9 9 <a href="/auth/login" class="btn btn-lg btn-outline">Log In</a>