{ "name": "@triliumnext/server", "version": "0.99.1", "description": "The server-side component of TriliumNext, which exposes the client via the web, allows for sync and provides a REST API for both internal and external use.", "private": true, "main": "./src/main.ts", "scripts": { "dev": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_DATA_DIR=data TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", "start-no-dir": "cross-env NODE_ENV=development TRILIUM_ENV=dev TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", "edit-integration-db": "cross-env NODE_ENV=development TRILIUM_PORT=8086 TRILIUM_ENV=dev TRILIUM_DATA_DIR=spec/db TRILIUM_INTEGRATION_TEST=edit TRILIUM_RESOURCE_DIR=src tsx watch --ignore '../client/node_modules/.vite-temp' ./src/main.ts", "build": "tsx scripts/build.ts", "package": "pnpm build && bash scripts/build-server.sh", "test": "vitest", "test-build": "vitest --config vitest.build.config.mts", "start-prod": "cross-env TRILIUM_DATA_DIR=data pnpm start-prod-no-dir", "start-prod-no-dir": "pnpm build && cross-env TRILIUM_ENV=production TRILIUM_PORT=8082 node dist/main.cjs", "circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular", "docker-build-debian": "pnpm build && docker build . -t triliumnext-debian -f Dockerfile", "docker-build-alpine": "pnpm build && docker build . -t triliumnext-alpine -f Dockerfile.alpine", "docker-build-rootless-debian": "pnpm build && docker build . -t triliumnext-rootless-debian -f Dockerfile.rootless", "docker-build-rootless-alpine": "pnpm build && docker build . -t triliumnext-rootless-alpine -f Dockerfile.alpine.rootless", "docker-start-debian": "pnpm docker-build-debian && docker run -p 8081:8080 triliumnext-debian", "docker-start-alpine": "pnpm docker-build-alpine && docker run -p 8081:8080 triliumnext-alpine", "docker-start-rootless-debian": "pnpm docker-build-rootless-debian && docker run -p 8081:8080 triliumnext-rootless-debian", "docker-start-rootless-alpine": "pnpm docker-build-rootless-alpine && docker run -p 8081:8080 triliumnext-rootless-alpine" }, "dependencies": { "better-sqlite3": "12.4.1", "node-html-parser": "7.0.1" }, "devDependencies": { "@anthropic-ai/sdk": "0.65.0", "@braintree/sanitize-url": "7.1.1", "@electron/remote": "2.1.3", "@preact/preset-vite": "2.10.2", "@triliumnext/commons": "workspace:*", "@triliumnext/express-partial-content": "workspace:*", "@triliumnext/turndown-plugin-gfm": "workspace:*", "@types/archiver": "6.0.3", "@types/better-sqlite3": "7.6.13", "@types/cls-hooked": "4.3.9", "@types/compression": "1.8.1", "@types/cookie-parser": "1.4.9", "@types/debounce": "1.2.4", "@types/ejs": "3.1.5", "@types/escape-html": "1.0.4", "@types/express-http-proxy": "1.6.7", "@types/express-session": "1.18.2", "@types/fs-extra": "11.0.4", "@types/html": "1.0.4", "@types/ini": "4.1.1", "@types/js-yaml": "4.0.9", "@types/mime-types": "3.0.1", "@types/multer": "2.0.0", "@types/safe-compare": "1.1.2", "@types/sanitize-html": "2.16.0", "@types/sax": "1.2.7", "@types/serve-favicon": "2.5.7", "@types/serve-static": "1.15.9", "@types/session-file-store": "1.2.5", "@types/stream-throttle": "0.1.4", "@types/supertest": "6.0.3", "@types/swagger-ui-express": "4.1.8", "@types/tmp": "0.2.6", "@types/turndown": "5.0.5", "@types/ws": "8.18.1", "@types/xml2js": "0.4.14", "archiver": "7.0.1", "async-mutex": "0.5.0", "axios": "1.12.2", "bindings": "1.5.0", "bootstrap": "5.3.8", "chardet": "2.1.0", "cheerio": "1.1.2", "chokidar": "4.0.3", "cls-hooked": "4.2.2", "compression": "1.8.1", "cookie-parser": "1.4.7", "csrf-csrf": "3.2.2", "dayjs": "1.11.18", "debounce": "2.2.0", "debug": "4.4.3", "ejs": "3.1.10", "electron": "38.2.1", "electron-debug": "4.1.0", "electron-window-state": "5.0.3", "escape-html": "1.0.3", "express": "5.1.0", "express-http-proxy": "2.1.2", "express-openid-connect": "2.19.2", "express-rate-limit": "8.1.0", "express-session": "1.18.2", "file-uri-to-path": "2.0.0", "fs-extra": "11.3.2", "helmet": "8.1.0", "html": "1.0.0", "html2plaintext": "2.1.4", "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", "i18next": "25.5.3", "i18next-fs-backend": "2.6.0", "image-type": "6.0.0", "ini": "5.0.0", "is-animated": "2.0.2", "is-svg": "6.1.0", "jimp": "1.6.0", "js-yaml": "4.1.0", "marked": "16.3.0", "mime-types": "3.0.1", "multer": "2.0.2", "normalize-strings": "1.1.1", "ollama": "0.6.0", "openai": "6.2.0", "rand-token": "1.0.1", "safe-compare": "1.1.4", "sanitize-filename": "1.6.3", "sanitize-html": "2.17.0", "sax": "1.4.1", "serve-favicon": "2.5.1", "stream-throttle": "0.1.3", "strip-bom": "5.0.0", "striptags": "3.2.0", "supertest": "7.1.4", "swagger-jsdoc": "6.2.8", "swagger-ui-express": "5.0.1", "time2fa": "1.4.2", "tmp": "0.2.5", "turndown": "7.2.1", "unescape": "1.0.1", "vite": "7.1.9", "ws": "8.18.3", "xml2js": "0.6.2", "yauzl": "3.2.0" } }