mirror of
https://github.com/bulwarkmail/webmail.git
synced 2026-11-01 16:12:02 +00:00
With `OTEL_EXPORTER_OTLP_ENDPOINT` or `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` set (and neither `OTEL_SDK_DISABLED=true` nor `OTEL_TRACES_EXPORTER=none`), Bulwark loads the OpenTelemetry SDK at startup and exports Next's own spans plus a client span for every call to Stalwart, WOPI, translation, the plugin proxy and OAuth over OTLP/HTTP. Calls to Stalwart carry a `traceparent` header, so Stalwart's spans join the trace. All other settings come from the standard `OTEL_*` variables. Every span is scrubbed before export: URLs keep their origin only, request paths become their route group, query strings, user agents and client addresses are dropped, and addresses or credentials in other attributes are removed. Without an endpoint the SDK is never loaded. The endpoint is listed under the hosts that stay reachable with no third-party traffic, and System > Monitoring shows whether tracing runs.
123 lines
4.1 KiB
JSON
123 lines
4.1 KiB
JSON
{
|
|
"name": "bulwark-webmail",
|
|
"version": "1.19.1",
|
|
"description": "Bulwark Webmail: self-hosted webmail for mail, calendar, contacts and files, built on JMAP",
|
|
"author": "Bulwark Mail <dev@bulwarkmail.org>",
|
|
"license": "AGPL-3.0-only",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/bulwarkmail/webmail.git"
|
|
},
|
|
"homepage": "https://github.com/bulwarkmail/webmail",
|
|
"bugs": {
|
|
"url": "https://github.com/bulwarkmail/webmail/issues"
|
|
},
|
|
"keywords": [
|
|
"jmap",
|
|
"webmail",
|
|
"stalwart",
|
|
"email",
|
|
"nextjs",
|
|
"react",
|
|
"typescript"
|
|
],
|
|
"scripts": {
|
|
"dev": "node scripts/build-plugin-sandbox.mjs --watch -- next dev --turbopack",
|
|
"build": "node scripts/build-plugin-sandbox.mjs && next build --turbopack",
|
|
"build:lite": "node scripts/lite/build.mjs",
|
|
"lite:serve": "node scripts/lite/serve.mjs out 4173",
|
|
"test:lite-smoke": "playwright test -c scripts/lite/smoke/playwright.config.ts",
|
|
"test:lite-smoke:stalwart": "playwright test -c scripts/lite/smoke/playwright.stalwart.config.ts",
|
|
"test:perf-guard": "playwright test -c scripts/perf-guard/playwright.config.ts",
|
|
"test:a11y-guard": "playwright test -c scripts/a11y-guard/playwright.config.ts",
|
|
"start": "node scripts/start.mjs",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"test:translations": "vitest run --no-isolate lib/__tests__/translations.test.ts",
|
|
"test:integration": "bash integration/run-tests.sh",
|
|
"prepare": "husky",
|
|
"typecheck": "next typegen && tsc --noEmit"
|
|
},
|
|
"dependencies": {
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@noble/curves": "^2.4.0",
|
|
"@noble/hashes": "^2.4.0",
|
|
"@opentelemetry/api": "1.9.1",
|
|
"@opentelemetry/core": "2.8.0",
|
|
"@opentelemetry/exporter-trace-otlp-http": "0.219.0",
|
|
"@opentelemetry/resources": "2.8.0",
|
|
"@opentelemetry/sdk-trace-node": "2.8.0",
|
|
"@prometheus-io/client": "0.16.1",
|
|
"@tabler/icons-react": "^3.50.0",
|
|
"@tanstack/react-virtual": "^3.14.23",
|
|
"@tiptap/extension-color": "^3.32.1",
|
|
"@tiptap/extension-heading": "^3.32.1",
|
|
"@tiptap/extension-link": "^3.32.1",
|
|
"@tiptap/extension-paragraph": "^3.32.1",
|
|
"@tiptap/extension-placeholder": "^3.32.1",
|
|
"@tiptap/extension-table": "^3.32.1",
|
|
"@tiptap/extension-table-cell": "^3.32.1",
|
|
"@tiptap/extension-table-header": "^3.32.1",
|
|
"@tiptap/extension-table-row": "^3.32.1",
|
|
"@tiptap/extension-text-align": "^3.32.1",
|
|
"@tiptap/extension-text-style": "^3.32.1",
|
|
"@tiptap/extension-underline": "^3.32.1",
|
|
"@tiptap/pm": "^3.32.1",
|
|
"@tiptap/react": "^3.32.1",
|
|
"@tiptap/starter-kit": "^3.32.1",
|
|
"@tiptap/suggestion": "^3.32.1",
|
|
"clsx": "^2.1.1",
|
|
"date-fns": "^4.4.0",
|
|
"dompurify": "^3.4.12",
|
|
"ioredis": "^5.11.1",
|
|
"jalaali-js": "^2.0.1",
|
|
"jszip": "^3.10.2",
|
|
"next": "^16.4.3",
|
|
"next-intl": "^4.13.3",
|
|
"otpauth": "^9.5.2",
|
|
"pdfjs-dist": "^6.4.299",
|
|
"postal-mime": "^4.1.4",
|
|
"qrcode": "^1.5.4",
|
|
"react": "^19.3.1",
|
|
"react-dom": "^19.3.1",
|
|
"sharp": "^0.35.4",
|
|
"tailwind-merge": "^3.7.0",
|
|
"undici": "^7.30.1",
|
|
"zustand": "^5.0.16"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.5",
|
|
"@playwright/test": "^1.64.1",
|
|
"@tailwindcss/postcss": "^4.3.3",
|
|
"@testing-library/dom": "^10.4.2",
|
|
"@testing-library/jest-dom": "^7.0.1",
|
|
"@testing-library/react": "^16.3.3",
|
|
"@types/node": "^25.9.9",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "^19.3.0",
|
|
"@types/react-dom": "^19.3.0",
|
|
"@typescript-eslint/eslint-plugin": "^8.72.1",
|
|
"@typescript-eslint/parser": "^8.72.1",
|
|
"@vitejs/plugin-react": "^6.1.2",
|
|
"@vitest/ui": "^5.0.5",
|
|
"esbuild": "^0.28.2",
|
|
"eslint": "^9.39.5",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"fake-indexeddb": "^6.2.6",
|
|
"globals": "^17.13.0",
|
|
"husky": "^9.1.7",
|
|
"jsdom": "^30.1.3",
|
|
"tailwindcss": "^4.3.3",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "^6.0.3",
|
|
"vitest": "^5.0.5"
|
|
},
|
|
"overrides": {
|
|
"flatted": "^3.4.2",
|
|
"picomatch": "^4.0.4"
|
|
}
|
|
}
|