Ctrl K
ComunidadGuías…

package.json

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
{
  "name": "superProductivity",
  "version": "20.0.0",
  "description": "A to-do list, time tracker and daily planner for focused personal work",
  "keywords": [
    "ToDo",
    "Task Management",
    "Jira",
    "GitHub",
    "Time Tracking"
  ],
  "homepage": "https://super-productivity.com",
  "repository": {
    "type": "git",
    "url": "git://github.com/super-productivity/super-productivity.git"
  },
  "license": "MIT",
  "author": "Johannes Millan <contact@super-productivity.com> (http://super-productivity.com)",
  "main": "./electron/main.js",
  "scripts": {
    "env": "node ./tools/load-env.js",
    "assemble:android:prod": "cd android && ./gradlew assembleRelease && cd ..",
    "assemble:android:stage": "cd android && ./gradlew assembleDebug && cd ..",
    "prebuild": "npm run env && node ./tools/git-version.js && npm run build:packages",
    "postinstall": "patch-package",
    "prepare": "husky && ts-patch install && npm run env && npm run sync-core:build && npm run sync-providers:build && npm run shared-schema:build && npm run plugin-api:build",
    "build": "npm run buildAllElectron:noTests:prod",
    "build:packages": "node ./packages/build-packages.js",
    "buildAllElectron:noTests:prod": "npm run lint && npm run buildFrontend:prod:es6 && npm run electron:build",
    "buildAllElectron:prod": "npm run env && npm run preCheck && npm run buildFrontend:prod:es6 && npm run electron:build",
    "buildAllElectron:stage": "npm run preCheck && npm run buildFrontend:stage:es6 && npm run electron:build",
    "buildFrontend:dev": "npm run env && ng build --configuration development",
    "buildFrontend:prod:es6": "npm run prebuild && cross-env BROWSERSLIST_ENV='modern' ng build --configuration production && npm run removeWOFF1",
    "buildFrontend:prod:watch": "npm run prebuild && ng build --configuration production --watch",
    "buildFrontend:prodWeb": "npm run prebuild && ng build  --configuration productionWeb",
    "buildFrontend:stage:es6": "npm run prebuild && cross-env BROWSERSLIST_ENV='modern' ng build --configuration stage && npm run removeWOFF1",
    "buildFrontend:stageWeb": "npm run prebuild && ng build --configuration stageWeb",
    "buildFrontend:stageWeb:unminified": "npm run prebuild && ng build --configuration stageWeb --optimization=false --aot=false",
    "dist": "npm run buildAllElectron:prod && electron-builder",
    "dist:android": "npm run buildFrontend:stageWeb:unminified && npm run sync:android && npm run assemble:android:stage && echo 'Staging Android APK generated at android/app/build/outputs/apk/debug/'",
    "dist:android:prod": "npm run buildFrontend:prodWeb && npm run sync:android && npm run assemble:android:prod && echo 'Production Android APK generated at android/app/build/outputs/apk/release/'",
    "dist:linuxAndWin": "npm run buildAllElectron:prod && electron-builder --linux --win",
    "dist:mac:dl": "cp tools/mac-profiles/dl.provisionprofile embedded.provisionprofile && electron-builder --mac",
    "dist:mac:mas": "cp tools/mac-profiles/mas.provisionprofile embedded.provisionprofile; electron-builder --mac mas --config=build/electron-builder.mas.yaml",
    "dist:mac:mas:buildOnly": "electron-builder --config=build/electron-builder.mas.yaml",
    "dist:mac:mas:dev": "cp tools/mac-profiles/mas-dev.provisionprofile embedded.provisionprofile; electron-builder --mac mas-dev --config=build/electron-builder.mas-dev.yaml",
    "dist:mac:mas:x64": "cp tools/mac-profiles/mas.provisionprofile embedded.provisionprofile; electron-builder --mac mas --config=build/electron-builder.mas.yaml --x64",
    "dist:only": "electron-builder",
    "dist:win": "npm run buildAllElectron:noTests:prod && electron-builder --win",
    "dist:win:appx": "npm run buildAllElectron:prod && electron-builder --win --config=build/electron-builder.appx.yaml",
    "dist:win:only": "electron-builder --win",
    "dist:win:store": "git pull && npm run && copy electron-builder.win-store.yaml electron-builder.yaml && npm run dist:win && git checkout electron-builder.yaml || git checkout electron-builder.yaml",
    "droid": "npm run buildFrontend:stageWeb:unminified && npm run sync:android",
    "buildFrontend:e2e": "npm run plugins:build && npm run env && ng build",
    "serveFrontend:e2e:prod": "npx http-server .tmp/angular-dist/browser -p 4242 -c-1 --proxy http://localhost:4242?",
    "serveFrontend:e2e:pwa": "node e2e/pwa/pwa-test-server.cjs",
    "e2e": "npm run e2e:all -- --grep-invert \"@supersync|@webdav\"",
    "e2e:all": "npx playwright test --config e2e/playwright.config.ts --reporter=line",
    "e2e:ci": "npm run e2e",
    "e2e:pwa": "npm run buildFrontend:prodWeb && npx playwright test --config e2e/playwright.pwa.config.ts --reporter=line",
    "e2e:ui": "npx playwright test --config e2e/playwright.config.ts --ui",
    "e2e:file": "npx playwright test --config e2e/playwright.config.ts --reporter=list",
    "e2e:debug": "npx playwright test --config e2e/playwright.config.ts --debug",
    "e2e:headed": "npx playwright test --config e2e/playwright.config.ts --headed",
    "e2e:show-report": "npx playwright show-report .tmp/e2e-test-results/playwright-report",
    "e2e:report": "PLAYWRIGHT_HTML_REPORT=1 npx playwright test --config e2e/playwright.config.ts",
    "e2e:webdav": "sh -c 'docker compose up -d --build webdav-e2e && ./scripts/wait-for-webdav.sh && E2E_REQUIRE_WEBDAV=true npm run e2e:all -- --grep @webdav \"$@\"; EXIT_CODE=$?; docker compose down; exit $EXIT_CODE' --",
    "e2e:webdav:file": "sh -c 'docker compose up -d --build webdav-e2e && ./scripts/wait-for-webdav.sh && E2E_REQUIRE_WEBDAV=true E2E_VERBOSE=true npx playwright test --config e2e/playwright.config.ts --reporter=list \"$@\"; EXIT_CODE=$?; docker compose down; exit $EXIT_CODE' --",
    "e2e:supersync": "sh -c 'docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml up -d --build supersync && ./scripts/wait-for-supersync.sh && E2E_REQUIRE_SUPERSYNC=true npm run e2e:all -- --grep @supersync --workers=3 \"$@\"; EXIT_CODE=$?; docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml down db supersync; exit $EXIT_CODE' --",
    "e2e:supersync:file": "sh -c 'docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml up -d --build supersync && ./scripts/wait-for-supersync.sh && E2E_REQUIRE_SUPERSYNC=true E2E_VERBOSE=true npx playwright test --config e2e/playwright.config.ts --reporter=list --workers=3 \"$@\"; EXIT_CODE=$?; docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml down db supersync; exit $EXIT_CODE' --",
    "supersync:up": "docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml up -d --build supersync && ./scripts/wait-for-supersync.sh",
    "supersync:down": "docker compose -f docker-compose.yaml -f docker-compose.supersync.yaml down db supersync",
    "supersync:db": "DB_PORT=55432 docker compose up -d --wait db && cd packages/super-sync-server && DATABASE_URL=postgresql://supersync:superpassword@localhost:55432/supersync_db npx prisma db push --accept-data-loss",
    "e2e:docker": "docker compose -f docker-compose.e2e.yaml up -d app && ./scripts/wait-for-app.sh && E2E_BASE_URL=http://localhost:${APP_PORT:-4242} npm run e2e; EXIT_CODE=$?; docker compose -f docker-compose.e2e.yaml down; exit $EXIT_CODE",
    "e2e:docker:webdav": "docker compose -f docker-compose.e2e.yaml up -d --build app webdav-e2e && ./scripts/wait-for-app.sh && ./scripts/wait-for-webdav.sh && E2E_REQUIRE_WEBDAV=true E2E_BASE_URL=http://localhost:${APP_PORT:-4242} npm run e2e:all -- --grep @webdav; EXIT_CODE=$?; docker compose -f docker-compose.e2e.yaml down; exit $EXIT_CODE",
    "e2e:docker:all": "docker compose -f docker-compose.e2e.yaml -f docker-compose.yaml -f docker-compose.supersync.yaml up -d --build app webdav-e2e db supersync && ./scripts/wait-for-app.sh && ./scripts/wait-for-webdav.sh && ./scripts/wait-for-supersync.sh && E2E_REQUIRE_WEBDAV=true E2E_REQUIRE_SUPERSYNC=true E2E_BASE_URL=http://localhost:${APP_PORT:-4242} npm run e2e:all -- --workers=6; EXIT_CODE=$?; docker compose -f docker-compose.e2e.yaml -f docker-compose.yaml -f docker-compose.supersync.yaml down; exit $EXIT_CODE",
    "screenshots": "npm run screenshots:capture && npm run screenshots:build",
    "screenshots:capture": "npx playwright test --config e2e/playwright.store-screenshots.config.ts",
    "screenshots:capture:desktop": "npx playwright test --config e2e/playwright.store-screenshots.config.ts --project=desktopMaster",
    "screenshots:capture:mobile": "npx playwright test --config e2e/playwright.store-screenshots.config.ts --project=iphone69 --project=ipad13 --project=androidPhone --project=android7Tablet --project=android10Tablet",
    "screenshots:build": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\",\"moduleResolution\":\"node\",\"ignoreDeprecations\":\"6.0\",\"rootDir\":\".\"}' npx ts-node --transpile-only e2e/store-screenshots/build-store-assets.ts",
    "screenshots:build:flathub": "SP_SCREENSHOTS_STORE=flathub npm run screenshots:build",
    "screenshots:capture:electron": "npm run electron:build && SCREENSHOT_MODE=electron npx playwright test --config e2e/playwright.store-screenshots.electron.config.ts",
    "screenshots:capture:flathub": "SP_SCREENSHOT_BG_DISABLE=1 npm run screenshots:capture:electron",
    "screenshots:electron": "npm run screenshots:capture:electron && npm run screenshots:build",
    "screenshots:flathub": "npm run screenshots:capture:flathub && npm run screenshots:build:flathub",
    "screenshots:flathub:native": "node -e \"require('fs').rmSync('dist/screenshots/_master_electron',{recursive:true,force:true})\" && SP_SCREENSHOT_NATIVE=1 SP_SCREENSHOT_FORCE_THEME=light npm run screenshots:capture:flathub && SP_SCREENSHOT_NATIVE=1 npm run screenshots:build:flathub",
    "video": "npm run video:capture && npm run video:build && npm run video:open",
    "video:capture": "npx playwright test --config e2e/playwright.store-video.config.ts",
    "video:kit-test": "npx playwright test --config e2e/playwright.video-kit.config.ts",
    "video:build": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\",\"moduleResolution\":\"node\"}' npx ts-node --transpile-only e2e/store-video/build-video.ts",
    "video:open": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\",\"moduleResolution\":\"node\"}' npx ts-node --transpile-only e2e/store-video/open-video.ts",
    "video:full": "cross-env REEL_VARIANT=full npm run video",
    "video:ms-store": "cross-env REEL_VARIANT=ms-store npm run video",
    "video:shorts": "cross-env REEL_VARIANT=shorts npm run video",
    "video:keyboard": "cross-env REEL_VARIANT=keyboard npm run video",
    "video:mobile": "cross-env REEL_VARIANT=mobile npm run video",
    "video:updates": "cross-env REEL_VARIANT=updates SP_SCREENSHOT_BG_DISABLE=1 npm run video",
    "video:time": "cross-env REEL_VARIANT=time npm run video",
    "video:hero": "cross-env REEL_VARIANT=hero npm run video",
    "video:hero-light": "cross-env REEL_VARIANT=hero-light npm run video",
    "electron": "NODE_ENV=PROD electron .",
    "electron:build": "node ./tools/build-wayland-idle-helper.js && tsc -p electron/tsconfig.electron.json && node electron/scripts/bundle-preload.js",
    "electron:verify-asar": "node tools/verify-electron-requires.js .tmp/app-builds/linux-unpacked/resources/app.asar",
    "electron:watch": "tsc -p electron/tsconfig.electron.json --watch",
    "electronBuilderOnly": "electron-builder",
    "empty": "echo 'EMPTY YEAH'",
    "install:android": "adb install -r android/app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk && echo 'Staging APK installed successfully.'",
    "install:android:prod": "adb install -r android/app/build/outputs/apk/fdroid/release/app-fdroid-release.apk && echo 'Production APK installed successfully.'",
    "int": "node ./tools/extract-i18n-single.js",
    "int:clean": "ngx-translate-extract --input ./src --output ./src/assets/i18n/*.json --clean --sort --format namespaced-json --marker _",
    "int:find": "ngx-translate-extract --input ./src --output ./src/assets/i18n/*.json  --sort --format namespaced-json --marker _",
    "int:test": "node --test --test-reporter=dot ./tools/test-lng-files.test.js && node ./tools/test-lng-files.js",
    "int:unused": "node ./tools/find-unused-translations.js",
    "int:watch": "node ./tools/extract-i18n-watch.js",
    "lint": "npm run lint:ts && npm run lint:scss && npm run lint:css-vars && npm run test:lint-rules && npm run test:tools && npm run test:mac-icon",
    "sync-fuzz:compare": "node tools/sync-fuzz-compare.js",
    "test:lint-rules": "node eslint-local-rules/run-specs.js",
    "test:tools": "node --test --test-reporter=dot tools/verify-electron-test-exclusion.test.js tools/theme-assets.test.js tools/check-css-vars.test.js tools/verify-linux-wm-class.test.js tools/verify-linux-rpm-exec.test.js tools/verify-windows-artifact-contract.test.js tools/verify-appx-config.test.js tools/strip-service-worker-assets.test.js tools/verify-ios-quick-actions.test.js tools/verify-android-url-hosts.test.js tools/verify-android-shortcuts.test.js tools/check-file.test.js tools/pre-check.test.js tools/sync-fuzz-compare.test.js tools/ios-testflight-version.test.js tools/test-affected.test.js tools/verify-community-plugins.test.js tools/quiet.test.js tools/test-shards.test.js",
    "test:mac-icon": "node --test --test-reporter=dot tools/verify-mac-icon.test.js",
    "lint:ts": "ng lint",
    "lint:scss": "stylelint \"**/*.scss\" \"src/assets/themes/*.css\" -- --custom-formatter @csstools/stylelint-formatter-github",
    "lint:css-vars": "node tools/check-css-vars.js",
    "localInstall": "sudo echo 'Starting local install' && rm -Rf ./.tmp/angular-dist/ && rm -Rf ./.tmp/app-builds/ && npm run buildAllElectron:stage && electron-builder --linux deb && sudo dpkg -i .tmp/app-builds/superProductivity*.deb",
    "localInstall:mac": "sudo echo 'Starting local install MAC. Don`t forget APPLEID & APPLEIDPASS !!' && npm run buildAllElectron:noTests:prod && sudo echo '' && electron-builder && sudo cp -rf .tmp/app-builds/mac/superProductivity.app/ /Applications/superProductivity.app",
    "localInstall:prod": "sudo echo 'Starting local install PROD' && rm -Rf ./.tmp/angular-dist/ && rm -Rf ./.tmp/app-builds/ && npm run buildAllElectron:prod && electron-builder --linux deb && sudo dpkg -i .tmp/app-builds/superProductivity*.deb",
    "localInstall:quick": "sudo echo 'Starting local install QUICK' && rm -Rf ./.tmp/angular-dist/ && rm -Rf ./.tmp/app-builds/ && npm run buildFrontend:stage:es6 && npm run electron:build && electron-builder --linux deb && sudo dpkg -i .tmp/app-builds/superProductivity*.deb",
    "localInstall:test:snap": "sudo echo 'Starting local install SNAP QUICK' && rm -Rf ./.tmp/angular-dist/ && rm -Rf ./.tmp/app-builds/ && npm run buildFrontend:stage:es6 && npm run electron:build && electron-builder --linux snap && sudo snap install --dangerous .tmp/app-builds/superProductivity*.snap",
    "ng": "ng",
    "pack": "electron-builder --dir",
    "preCheck": "npm run lint && npm run test:ci && npm run int:test && npm run e2e",
    "release": "npm run dist",
    "removeWOFF1": "node ./tools/remove-woff.js",
    "serveProd": "node ./tools/load-env.js --ensure && ng serve --configuration production",
    "start": "npm run electron:build && cross-env NODE_ENV=DEV electron .",
    "serve": "node ./tools/load-env.js --ensure && ng serve",
    "startFrontend": "npm run env && ng serve",
    "startFrontend:e2e": "npm run env && ng serve --port=4242",
    "startFrontend:prod": "npm run env && ng serve --configuration production",
    "startFrontend:stage": "npm run env && ng serve --configuration stage",
    "generate:mac-icon": "node tools/generate-mac-icon.js",
    "generate:ios-icon": "node tools/generate-ios-icon.js",
    "sync:android": "npx cap sync android && npm run strip:sw:android",
    "strip:sw:android": "node ./tools/strip-service-worker-assets.js android/app/src/main/assets/public",
    "sync:ios": "npx cap sync ios",
    "dist:ios:prod": "npm run buildFrontend:prodWeb && npm run sync:ios",
    "stats": "ng build --configuration production --source-map --stats-json && npx esbuild-visualizer --metadata .tmp/angular-dist/stats.json && xdg-open stats.html",
    "test": "npm run packages:test && npm run release-notes:test && node tools/test-shards.js berlin la-subset",
    "test:ci": "npm run packages:test && npm run release-notes:test && node tools/test-shards.js berlin la",
    "test:berlin": "npm run packages:test && npm run release-notes:test && cross-env TZ='Europe/Berlin' ng test --watch=false",
    "test:once": "cross-env TZ='Europe/Berlin' ng test --watch=false",
    "test:watch": "cross-env TZ='Europe/Berlin' ng test --browsers ChromeHeadless",
    "test:tz:la": "cross-env TZ='America/Los_Angeles' ng test --watch=false --include='**/*.spec.ts'",
    "test:tz:la:subset": "cross-env TZ='America/Los_Angeles' ng test --watch=false --include='**/*.tz.spec.ts' --include='**/*timezone*.spec.ts' --include='src/app/util/**/*.spec.ts' --include='src/app/core/date/**/*.spec.ts' --include='src/app/core/date-time-format/**/*.spec.ts' --include='src/app/features/schedule/**/*.spec.ts' --include='src/app/features/planner/**/*.spec.ts' --include='src/app/features/task-repeat-cfg/**/*.spec.ts' --include='src/app/features/worklog/**/*.spec.ts' --include='src/app/features/tasks/**/*.spec.ts' --include='src/app/features/work-context/**/*.spec.ts' --include='src/app/features/time-tracking/**/*.spec.ts' --include='src/app/root-store/meta/**/*.spec.ts' --include='src/app/**/*day*.spec.ts' --include='src/app/features/simple-counter/**/*.spec.ts' --include='src/app/features/add-tasks-for-tomorrow/**/*.spec.ts' --include='src/app/features/task-view-customizer/**/*.spec.ts' --include='src/app/ui/pipes/**/*.spec.ts' --include='src/app/ui/datetime-picker/**/*.spec.ts' --include='src/app/ui/date-picker-input/**/*.spec.ts'",
    "test:tz:tokyo": "cross-env TZ='Asia/Tokyo' ng test --watch=false --include='**/*.spec.ts'",
    "test:tz:sydney": "cross-env TZ='Australia/Sydney' ng test --watch=false --include='**/*.spec.ts'",
    "test:tz:utc": "cross-env TZ='UTC' ng test --watch=false --include='**/*.spec.ts'",
    "test:tz:all": "npm run test:berlin && npm run test:tz:la && npm run test:tz:tokyo && npm run test:tz:sydney && npm run test:tz:utc",
    "test:date-utils": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/util/**/format-*.spec.ts' --include='src/app/util/**/date-*.spec.ts'",
    "test:date-utils:tz": "npm run test:date-utils && cross-env TZ='America/Los_Angeles' npm run test:date-utils && cross-env TZ='Asia/Tokyo' npm run test:date-utils",
    "version": "npm run prebuild && node ./tools/bump-android-version.js && git add -A",
    "version:ai:codex": "cross-env SP_RELEASE_NOTES_AI=codex npm version",
    "version:ai:claude": "cross-env SP_RELEASE_NOTES_AI=claude npm version",
    "prettier": "pretty-quick",
    "prettier:file": "prettier --write",
    "lint:file": "ng lint --lint-file-patterns",
    "test:affected": "node tools/test-affected.js",
    "test:file": "cross-env TZ='Europe/Berlin' ng test --watch=false --include",
    "test:electron": "node --test --test-reporter=dot electron/*.test.cjs",
    "test:fast": "cross-env TZ='Europe/Berlin' NODE_OPTIONS='--max-old-space-size=4096' ng test --watch=false --no-code-coverage --source-map=false",
    "test:fast:watch": "cross-env TZ='Europe/Berlin' NODE_OPTIONS='--max-old-space-size=4096' ng test --browsers ChromeHeadless --no-code-coverage --source-map=false",
    "test:shard:features": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/features/**/*.spec.ts'",
    "test:shard:ui": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/ui/**/*.spec.ts'",
    "test:shard:core": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/core/**/*.spec.ts'",
    "test:shard:util": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/util/**/*.spec.ts'",
    "checkFile": "node tools/check-file.js",
    "typecheck": "ngc -p src/tsconfig.app.json --noEmit --rootDir . && tsc -p src/tsconfig.spec.json --noEmit --rootDir . && tsc -p electron/tsconfig.electron.json --noEmit",
    "quiet": "node tools/quiet.js",
    "docs:check-links": "node ./tools/check-doc-links.js docs",
    "release-notes:generate": "node ./tools/release-notes.js generate",
    "release-notes:generate:codex": "cross-env SP_RELEASE_NOTES_AI=codex node ./tools/release-notes.js generate",
    "release-notes:generate:claude": "cross-env SP_RELEASE_NOTES_AI=claude node ./tools/release-notes.js generate",
    "release-notes:prepare-play-store": "node ./tools/release-notes.js prepare-play-store",
    "release-notes:test": "node --test --test-reporter=dot tools/release-notes.test.js tools/prepare-appstore-release-notes.test.js tools/android-dev-version-code.test.js",
    "clean:translations": "node ./tools/clean-translations.js",
    "plugin-api:build": "cd packages/plugin-api && npm run build",
    "packages:test": "npm run sync-core:test && npm run shared-schema:test && npm run sync-providers:test",
    "sync-core:build": "cd packages/sync-core && npm run build",
    "sync-core:test": "cd packages/sync-core && npm test",
    "sync-providers:build": "cd packages/sync-providers && npm run build",
    "sync-providers:test": "cd packages/sync-providers && npm test",
    "shared-schema:build": "cd packages/shared-schema && npm run build",
    "shared-schema:test": "cd packages/shared-schema && npm test",
    "plugin-api:build:watch": "cd packages/plugin-api && npm run build:watch",
    "vite-plugin:build": "cd packages/vite-plugin && npm run build",
    "plugins:build": "npm run plugin-api:build && npm run vite-plugin:build && cd packages/plugin-dev && npm run build:all",
    "plugins:build:silent": "npm run vite-plugin:build && cd packages/plugin-dev && npm run build:all:silent",
    "plugin-starter:check": "node tools/check-plugin-starter.js"
  },
  "dependencies": {
    "@capacitor/browser": "^8.0.5",
    "@capacitor/ios": "^8.5.3",
    "@capacitor/keyboard": "^8.0.6",
    "@capacitor/status-bar": "^8.0.4",
    "@material-symbols/font-400": "^0.45.5",
    "@noble/ciphers": "^2.2.0",
    "capacitor-plugin-safe-area": "^5.0.0",
    "electron-dl": "^3.5.2",
    "electron-localshortcut": "^3.2.1",
    "electron-log": "^5.4.3",
    "electron-window-state": "^5.0.3",
    "hash-wasm": "^4.12.0",
    "https-proxy-agent": "^7.0.0",
    "node-fetch": "^2.7.0",
    "uuidv7": "^1.2.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^22.2.5",
    "@angular-eslint/builder": "^22.6.0",
    "@angular-eslint/eslint-plugin": "^22.6.0",
    "@angular-eslint/eslint-plugin-template": "^22.6.0",
    "@angular-eslint/schematics": "^22.6.0",
    "@angular-eslint/template-parser": "^22.6.0",
    "@angular/animations": "^22.2.4",
    "@angular/cdk": "^22.2.5",
    "@angular/cli": "^22.2.5",
    "@angular/common": "^22.2.4",
    "@angular/compiler": "^22.2.4",
    "@angular/compiler-cli": "^22.2.4",
    "@angular/core": "^22.2.4",
    "@angular/forms": "^22.2.4",
    "@angular/language-service": "^22.2.4",
    "@angular/material": "^22.2.5",
    "@angular/platform-browser": "^22.2.4",
    "@angular/platform-browser-dynamic": "^22.2.4",
    "@angular/platform-server": "^22.2.4",
    "@angular/router": "^22.2.4",
    "@angular/service-worker": "^22.2.4",
    "@capacitor/android": "^8.5.3",
    "@capacitor/app": "^8.1.2",
    "@capacitor/cli": "^8.6.0",
    "@capacitor/core": "^8.5.3",
    "@capacitor/filesystem": "^8.1.5",
    "@capacitor/local-notifications": "^8.3.1",
    "@capacitor/share": "^8.0.3",
    "@capawesome/capacitor-android-dark-mode-support": "^8.0.1",
    "@capawesome/capacitor-background-task": "^8.0.3",
    "@codemirror/commands": "^6.11.0",
    "@codemirror/language": "^6.12.4",
    "@codemirror/state": "^6.7.4",
    "@codemirror/view": "^6.43.11",
    "@csstools/stylelint-formatter-github": "^2.0.0",
    "@dotenv-run/cli": "^1.3.6",
    "@electron/notarize": "^3.1.1",
    "@eslint/js": "^9.39.2",
    "@fontsource/open-sans": "^5.2.7",
    "@lezer/markdown": "^1.7.2",
    "@nextcloud/cdav-library": "^1.5.3",
    "@ngrx/effects": "^22.0.1",
    "@ngrx/entity": "^22.0.1",
    "@ngrx/schematics": "^22.0.1",
    "@ngrx/store": "22.0.1",
    "@ngrx/store-devtools": "^22.0.1",
    "@ngx-formly/core": "^7.1.0",
    "@ngx-formly/material": "^7.1.0",
    "@ngx-translate/core": "^17.0.0",
    "@ngx-translate/http-loader": "^17.0.0",
    "@playwright/test": "^1.59.1",
    "@schematics/angular": "^22.2.5",
    "@types/electron": "^1.6.12",
    "@types/electron-localshortcut": "^3.1.3",
    "@types/file-saver": "^2.0.7",
    "@types/jasmine": "^6.0.0",
    "@types/jasminewd2": "~2.0.13",
    "@types/node": "^22.19.17",
    "@types/node-fetch": "^2.6.13",
    "@types/object-path": "^0.11.4",
    "@typescript-eslint/types": "^8.72.1",
    "@typescript-eslint/utils": "^8.72.1",
    "angular-eslint": "^22.6.0",
    "angular-material-css-vars": "^11.0.0",
    "baseline-browser-mapping": "^2.10.24",
    "canvas-confetti": "^1.9.4",
    "chai": "^6.2.2",
    "chart.js": "^4.5.1",
    "chrono-node": "^2.9.0",
    "clipboard": "^2.0.11",
    "core-js": "^3.49.0",
    "cross-env": "^10.1.0",
    "detect-it": "^4.0.1",
    "dotenv": "^17.4.2",
    "electron": "44.10.0",
    "electron-builder": "^26.16.1",
    "eslint": "^9.39.2",
    "eslint-config-prettier": "^10.1.8",
    "eslint-plugin-import": "^2.32.0",
    "eslint-plugin-jsdoc": "63.0.10",
    "eslint-plugin-local-rules": "^3.0.2",
    "eslint-plugin-prefer-arrow": "1.2.3",
    "eslint-plugin-prettier": "^5.5.7",
    "fake-indexeddb": "^6.2.7",
    "fflate": "^0.8.2",
    "file-saver": "^2.0.5",
    "fs-extra": "^11.3.4",
    "glob": "^14.0.3",
    "http-server": "^14.1.1",
    "husky": "^9.1.7",
    "ical.js": "^2.2.1",
    "idb": "^8.0.3",
    "jasmine-core": "^6.2.0",
    "jasmine-marbles": "^0.9.2",
    "jasmine-spec-reporter": "~7.0.0",
    "karma": "~6.4.4",
    "karma-chrome-launcher": "~3.2.0",
    "karma-cli": "^2.0.0",
    "karma-coverage-istanbul-reporter": "~3.0.3",
    "karma-jasmine": "~5.1.0",
    "karma-jasmine-html-reporter": "^2.2.0",
    "karma-spec-reporter": "^0.0.36",
    "marked": "^18.0.5",
    "nanoid": "^5.1.11",
    "new-github-issue-url": "^1.1.0",
    "ng2-charts": "^11.0.0",
    "ngx-markdown": "^22.1.0",
    "patch-package": "^8.0.0",
    "playwright": "^1.59.1",
    "prettier": "^3.8.3",
    "pretty-quick": "^4.2.2",
    "query-string": "^10.0.0",
    "rxjs": "^7.8.2",
    "shepherd.js": "^11.2.0",
    "stacktrace-js": "^2.0.2",
    "start-server-and-test": "^2.1.3",
    "stylelint": "^17.9.1",
    "stylelint-config-recommended-scss": "^17.0.1",
    "ts-node": "~10.9.2",
    "ts-patch": "^3.3.0",
    "tslib": "^2.8.1",
    "typescript": "~6.0.3",
    "typescript-eslint": "^8.72.1",
    "typia": "^12.0.2",
    "zone.js": "^0.16.3"
  },
  "overrides": {
    "app-builder-lib": {
      "minimatch": "10.2.5"
    },
    "@electron/asar": {
      "minimatch": "3.1.5"
    },
    "@angular/build": {
      "undici": "7.29.1"
    },
    "node-gyp": {
      "undici": "6.29.1"
    },
    "sockjs": {
      "uuid": "11.1.1"
    },
    "ws": "8.21.0",
    "esbuild": "0.28.2",
    "karma": {
      "qs": "6.16.2"
    }
  },
  "optionalDependencies": {
    "@lmdb/lmdb-darwin-x64": "^3.5.4",
    "@lmdb/lmdb-linux-x64": "^3.5.9",
    "@lmdb/lmdb-win32-x64": "^3.5.4",
    "@rollup/rollup-darwin-x64": "4.66.0",
    "@rollup/rollup-linux-x64-gnu": "4.66.0",
    "@rollup/rollup-win32-x64-msvc": "4.66.0"
  },
  "workspaces": [
    "packages/*",
    "!packages/plugin-dev",
    "!packages/plugin-starter"
  ],
  "publish": [
    {
      "provider": "github",
      "repo": "super-productivity",
      "owner": "johannesjo"
    }
  ],
  "packageManager": "npm@11.18.0",
  "volta": {
    "node": "22.23.3",
    "npm": "11.18.0"
  }
}