{ "lock": true, "tasks": { "execute-with-permissions": "deno run --allow-env --allow-net --allow-sys=networkInterfaces,hostname,cpus,homedir --allow-read=.,/ --allow-write=data-files,/ --allow-run", "check": "deno fmt --check && deno lint && deno check .", "build": "make build", "preview": "deno task execute-with-permissions ./main.ts", "test": "IS_TESTING=true deno test --allow-all --check", "migrate-db": "deno task execute-with-permissions ./migrate-db.ts", "watch-app": "deno task execute-with-permissions --watch --watch-exclude=./public/css/tailwind.css,./public/components ./main.ts", "watch-babel": "make watch-babel", "watch-tailwind": "make watch-tailwind", "download-frontend-imports": "deno run --allow-read=./deno.json,./public/js --allow-write=./public/js --allow-net=esm.sh ./download-frontend-imports.ts", "start": { "dependencies": ["watch-tailwind", "watch-babel", "watch-app"] } }, "fmt": { "useTabs": false, "lineWidth": 120, "indentWidth": 2, "singleQuote": true, "proseWrap": "preserve", "exclude": ["README.md", "lib/models/dav.js", "public/css/tailwind.css"] }, "lint": { "rules": { "tags": ["recommended"], "exclude": ["no-explicit-any", "no-window"] }, "exclude": ["lib/models/dav.js"] }, "exclude": ["./node_modules/*", "./public/js/*", "./public/components/*"], "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "preact", "lib": [ "dom", "dom.iterable", "dom.asynciterable", "deno.ns" ] }, "nodeModulesDir": "auto", "imports": { "/": "./", "./": "./", "sass": "https://deno.land/x/denosass@1.0.6/mod.ts", "@libs/xml": "https://deno.land/x/xml@2.1.3/mod.ts", "chart.js": "https://esm.sh/chart.js@4.5.1", "chart.js/auto": "https://esm.sh/chart.js@4.5.1/auto", "preact": "https://esm.sh/preact@10.28.4", "preact/jsx-runtime": "https://esm.sh/preact@10.28.4/jsx-runtime", "preact/hooks": "https://esm.sh/preact@10.28.4/hooks", "preact-render-to-string": "https://esm.sh/preact-render-to-string@6.6.5?deps=preact@10.28.4", "@preact/signals": "https://esm.sh/*@preact/signals@2.8.1?deps=preact@10.28.4", "@preact/signals-core": "https://esm.sh/*@preact/signals-core@1.13.0?deps=preact@10.28.4", "@simplewebauthn/browser": "https://esm.sh/@simplewebauthn/browser@13.2.2", "@std/path": "https://esm.sh/jsr/@std/path@1.1.4", "deno/emit": "jsr:@deno/emit@0.46.0", "postgres": "jsr:@db/postgres@0.19.5", "@b-fuze/deno-dom": "jsr:@b-fuze/deno-dom@0.1.56", "@hexagon/croner": "jsr:@hexagon/croner@10.0.1", "@mikaelporttila/rss": "jsr:@mikaelporttila/rss@1.1.3", "@libs/qrcode": "jsr:@libs/qrcode@3.0.1", "@simplewebauthn/server": "jsr:@simplewebauthn/server@13.2.2", "@std/assert": "jsr:@std/assert@1.0.18", "@std/dotenv": "jsr:@std/dotenv@0.225.6", "@std/encoding": "jsr:@std/encoding@1.0.10", "@std/http": "jsr:@std/http@1.0.24", "jimp": "npm:jimp@1.6.0", "mrmime": "npm:mrmime@2.0.1", "nodemailer": "npm:nodemailer@8.0.1", "openid-client": "npm:openid-client@6.8.2", "otpauth": "npm:otpauth@9.5.0", "tailwindcss": "npm:tailwindcss@4.2.0", "@tailwindcss/cli": "npm:@tailwindcss/cli@4.2.0", "@babel/cli": "npm:@babel/cli@7.28.6", "@babel/core": "npm:@babel/core@7.29.0", "@babel/plugin-transform-react-jsx": "npm:@babel/plugin-transform-react-jsx@7.28.6", "@babel/preset-react": "npm:@babel/preset-react@7.28.5", "@babel/preset-typescript": "npm:@babel/preset-typescript@7.28.5" }, "frontendImports": [ "chart.js", "chart.js/auto", "preact", "preact/hooks", "@preact/signals", "@preact/signals-core", "@simplewebauthn/browser", "@std/path" ] }