{
  "name": "metoyou",
  "version": "1.0.0",
  "description": "P2P Discord-like chat application",
  "author": "Myxelium Name <info@azaaxin.com>",
  "url": "https://git.azaaxin.com/myxelium/Toju",
  "homepage": "https://git.azaaxin.com/myxelium/Toju",
  "main": "dist/electron/main.js",
  "scripts": {
    "ng": "cd \"toju-app\" && ng",
    "prebuild": "npm run bundle:rnnoise",
    "prestart": "npm run bundle:rnnoise",
    "bundle:rnnoise": "esbuild node_modules/@timephy/rnnoise-wasm/dist/NoiseSuppressorWorklet.js --bundle --format=esm --outfile=toju-app/public/rnnoise-worklet.js",
    "start": "cd \"toju-app\" && ng serve",
    "build": "cd \"toju-app\" && ng build",
    "build:docs": "cd docs-site && npm run build",
    "build:electron": "tsc -p tsconfig.electron.json",
    "build:all": "npm run build && npm run build:docs && npm run build:electron && cd server && npm run build",
    "build:prod": "cd \"toju-app\" && ng build --configuration production --base-href='./'",
    "watch": "cd \"toju-app\" && ng build --watch --configuration development",
    "test": "cd \"toju-app\" && vitest run",
    "server:build": "cd server && npm run build",
    "server:start": "cd server && npm start",
    "server:dev": "cd server && npm run dev",
    "electron": "npm run build && npm run build:electron && node tools/launch-electron.js . --no-sandbox --disable-dev-shm-usage",
    "electron:dev": "concurrently \"npm run start\" \"wait-on http://localhost:4200 && npm run build:electron && cross-env NODE_ENV=development node tools/launch-electron.js . --no-sandbox --disable-dev-shm-usage\"",
    "electron:full": "./dev.sh",
    "electron:full:build": "npm run build:all && concurrently --kill-others \"cd server && npm start\" \"cross-env NODE_ENV=production node tools/launch-electron.js . --no-sandbox --disable-dev-shm-usage\"",
    "migration:generate": "typeorm migration:generate electron/migrations/Auto -d dist/electron/data-source.js",
    "migration:create": "typeorm migration:create electron/migrations/New",
    "migration:run": "typeorm migration:run -d dist/electron/data-source.js",
    "migration:revert": "typeorm migration:revert -d dist/electron/data-source.js",
    "electron:build": "npm run build:prod && npm run build:docs && npm run build:electron && electron-builder",
    "electron:build:win": "npm run build:prod && npm run build:docs && npm run build:electron && electron-builder --win",
    "electron:build:mac": "npm run build:prod && npm run build:docs && npm run build:electron && electron-builder --mac",
    "electron:build:linux": "npm run build:prod && npm run build:docs && npm run build:electron && electron-builder --linux",
    "electron:build:all": "npm run build:prod && npm run build:docs && npm run build:electron && electron-builder --win --mac --linux",
    "build:prod:all": "npm run build:prod && npm run build:docs && npm run build:electron && cd server && npm run build",
    "build:prod:win": "npm run build:prod:all && electron-builder --win",
    "dev": "npm run build:electron && npm run electron:full",
    "dev:app": "npm run electron:dev",
    "lint": "eslint .",
    "lint:fix": "npm run format && npm run sort:props && eslint . --fix",
    "format": "prettier --write \"toju-app/src/app/**/*.html\"",
    "format:check": "prettier --check \"toju-app/src/app/**/*.html\"",
    "release:build:linux": "npm run build:prod:all && electron-builder --linux && npm run server:bundle:linux",
    "release:build:win": "npm run build:prod:all && electron-builder --win && npm run server:bundle:win",
    "release:manifest": "node tools/generate-release-manifest.js",
    "release:set-version": "node tools/set-release-version.js",
    "release:version": "node tools/resolve-release-version.js",
    "server:bundle:linux": "node tools/package-server-executable.js --target node18-linux-x64 --output metoyou-server-linux-x64",
    "server:bundle:win": "node tools/package-server-executable.js --target node18-win-x64 --output metoyou-server-win-x64.exe",
    "sort:props": "node tools/sort-template-properties.js",
    "i18n:sync": "node tools/sync-app-i18n-catalog.mjs",
    "test:e2e": "node e2e/run-playwright.mjs test",
    "test:e2e:ui": "node e2e/run-playwright.mjs test --ui",
    "test:e2e:debug": "node e2e/run-playwright.mjs test --debug",
    "test:e2e:report": "node e2e/run-playwright.mjs show-report ../test-results/html-report",
    "perf:diag:view": "node tools/perf-diag-viewer.js",
    "perf:diag:tail": "node tools/perf-diag-viewer.js --tail",
    "cap:sync": "cd toju-app && npx cap sync",
    "cap:open:android": "node tools/cap-open-android.js",
    "cap:open:ios": "cd toju-app && npx cap open ios",
    "cap:apk:android": "bash tools/build-android-apk.sh",
    "cap:build:android": "npm run build:prod && npm run cap:sync && npm run cap:open:android",
    "cap:build:ios": "npm run build:prod && npm run cap:sync && npm run cap:open:ios"
  },
  "private": true,
  "packageManager": "npm@10.9.2",
  "dependencies": {
    "@angular/common": "^21.0.0",
    "@angular/compiler": "^21.0.0",
    "@angular/core": "^21.0.0",
    "@angular/forms": "^21.0.0",
    "@angular/platform-browser": "^21.0.0",
    "@angular/router": "^21.0.0",
    "@capacitor-community/sqlite": "^8.1.0",
    "@capacitor/app": "^8.1.0",
    "@capacitor/camera": "^8.2.0",
    "@capacitor/core": "^8.4.0",
    "@capacitor/device": "^8.0.2",
    "@capacitor/filesystem": "^8.1.2",
    "@capacitor/local-notifications": "^8.2.0",
    "@capacitor/push-notifications": "^8.1.1",
    "@capawesome/capacitor-app-update": "^8.0.3",
    "@capgo/capacitor-audio-session": "^8.0.40",
    "@codemirror/commands": "^6.10.3",
    "@codemirror/lang-css": "^6.3.1",
    "@codemirror/lang-json": "^6.0.2",
    "@codemirror/language": "^6.12.3",
    "@codemirror/lint": "^6.9.5",
    "@codemirror/state": "^6.6.0",
    "@codemirror/theme-one-dark": "^6.1.3",
    "@codemirror/view": "^6.41.0",
    "@ng-icons/core": "^33.0.0",
    "@ng-icons/lucide": "^33.0.0",
    "@ngrx/effects": "^21.0.1",
    "@ngrx/entity": "^21.0.1",
    "@ngrx/store": "^21.0.1",
    "@ngrx/store-devtools": "^21.0.1",
    "@ngx-translate/core": "^17.0.0",
    "@scalar/api-reference": "^1.53.1",
    "@spartan-ng/brain": "^0.0.1-alpha.589",
    "@spartan-ng/cli": "^0.0.1-alpha.589",
    "@spartan-ng/ui-core": "^0.0.1-alpha.380",
    "@tanstack/angular-virtual": "^5.0.0",
    "@timephy/rnnoise-wasm": "^1.0.0",
    "auto-launch": "^5.0.6",
    "class-variance-authority": "^0.7.1",
    "clsx": "^2.1.1",
    "codemirror": "^6.0.2",
    "cytoscape": "^3.33.1",
    "electron-updater": "^6.6.2",
    "get-windows": "^9.3.0",
    "mermaid": "^11.12.3",
    "ngx-remark": "^0.2.2",
    "prismjs": "^1.30.0",
    "reflect-metadata": "^0.2.2",
    "remark": "^15.0.1",
    "remark-breaks": "^4.0.0",
    "remark-gfm": "^4.0.1",
    "rxjs": "~7.8.0",
    "simple-peer": "^9.11.1",
    "sql.js": "^1.13.0",
    "swiper": "^12.1.4",
    "tslib": "^2.3.0",
    "typeorm": "^0.3.28",
    "uuid": "^13.0.0",
    "wavesurfer.js": "^7.12.1"
  },
  "devDependencies": {
    "@angular/build": "^21.0.4",
    "@angular/cli": "^21.0.4",
    "@angular/compiler-cli": "^21.0.0",
    "@capacitor/android": "^8.4.0",
    "@capacitor/cli": "^8.4.0",
    "@capacitor/ios": "^8.4.0",
    "@eslint/js": "^9.39.3",
    "@playwright/test": "^1.59.1",
    "@stylistic/eslint-plugin-js": "^4.4.1",
    "@stylistic/eslint-plugin-ts": "^4.4.1",
    "@types/auto-launch": "^5.0.5",
    "@types/mocha": "^10.0.10",
    "@types/simple-peer": "^9.11.9",
    "@types/uuid": "^10.0.0",
    "angular-eslint": "21.2.0",
    "autoprefixer": "^10.4.23",
    "concurrently": "^8.2.2",
    "cross-env": "^10.1.0",
    "electron": "^39.2.7",
    "electron-builder": "^26.0.12",
    "eslint": "^9.39.2",
    "eslint-config-prettier": "^10.1.8",
    "eslint-plugin-import-newlines": "^1.4.1",
    "eslint-plugin-prettier": "^5.5.5",
    "glob": "^10.5.0",
    "pkg": "^5.8.1",
    "postcss": "^8.5.6",
    "prettier": "^3.8.1",
    "tailwindcss": "^3.4.19",
    "typescript": "~5.9.2",
    "typescript-eslint": "8.50.1",
    "vitest": "^4.1.4",
    "wait-on": "^7.2.0"
  },
  "build": {
    "appId": "com.metoyou.app",
    "productName": "Toju",
    "protocols": [
      {
        "name": "Toju Invite Links",
        "schemes": [
          "toju"
        ]
      }
    ],
    "directories": {
      "output": "dist-electron"
    },
    "files": [
      "!node_modules",
      "dist/client/**/*",
      "dist/electron/**/*",
      "node_modules/{abbrev,agent-base,ansi-regex,ansi-styles,ansis,app-root-path,applescript,aproba,are-we-there-yet,argparse,auto-launch,available-typed-arrays,balanced-match,base64-js,brace-expansion,buffer,builder-util-runtime,cacache,call-bind,call-bind-apply-helpers,call-bound,chownr,cliui,color-support,concat-map,console-control-strings,cross-spawn,dayjs,debug,dedent,define-data-property,delegates,detect-libc,dotenv,dunder-proto,electron-updater,emoji-regex,env-paths,es-define-property,es-errors,es-object-atoms,escalade,exponential-backoff,fdir,for-each,foreground-child,fs-extra,fs-minipass,function-bind,gauge,get-caller-file,get-east-asian-width,get-intrinsic,get-proto,get-windows,glob,gopd,graceful-fs,has-property-descriptors,has-symbols,has-tostringtag,has-unicode,hasown,http-cache-semantics,http-proxy-agent,https-proxy-agent,iconv-lite,ieee754,imurmurhash,inherits,ip-address,is-callable,is-fullwidth-code-point,is-typed-array,isarray,isexe,jackspeak,js-yaml,jsonfile,lazy-val,lodash.escaperegexp,lodash.isequal,lru-cache,make-dir,make-fetch-happen,math-intrinsics,minimatch,minimist,minipass,minipass-collect,minipass-fetch,minipass-flush,minipass-pipeline,minipass-sized,minizlib,mkdirp,ms,negotiator,node-addon-api,node-fetch,node-gyp,nopt,npmlog,object-assign,p-map,package-json-from-dist,path-is-absolute,path-key,path-scurry,picomatch,pify,possible-typed-array-names,proc-log,readable-stream,reflect-metadata,retry,rimraf,safe-buffer,safer-buffer,sax,semver,set-blocking,set-function-length,sha.js,shebang-command,shebang-regex,signal-exit,smart-buffer,socks,socks-proxy-agent,sql-highlight,sql.js,ssri,string-width,string-width-cjs,string_decoder,strip-ansi,strip-ansi-cjs,tar,tiny-typed-emitter,tinyglobby,to-buffer,tr46,tslib,typed-array-buffer,typeorm,unique-filename,unique-slug,universalify,untildify,util-deprecate,uuid,webidl-conversions,whatwg-url,which,which-typed-array,wide-align,winreg,wrap-ansi,wrap-ansi-cjs,y18n,yallist,yargs,yargs-parser}/**/*",
      "node_modules/@gar/promise-retry/**/*",
      "node_modules/@isaacs/cliui/**/*",
      "node_modules/@isaacs/fs-minipass/**/*",
      "node_modules/@mapbox/node-pre-gyp/**/*",
      "node_modules/@npmcli/agent/**/*",
      "node_modules/@npmcli/fs/**/*",
      "node_modules/@pkgjs/parseargs/**/*",
      "node_modules/@sqltools/formatter/**/*",
      "!node_modules/**/test/**/*",
      "!node_modules/**/tests/**/*",
      "!node_modules/**/*.d.ts",
      "!node_modules/**/*.map"
    ],
    "extraResources": [
      {
        "from": "images",
        "to": "images",
        "filter": [
          "**/*"
        ]
      },
      {
        "from": "node_modules/@scalar/api-reference/dist/browser/standalone.js",
        "to": "scalar/api-reference.js"
      },
      {
        "from": "docs-site/build",
        "to": "docusaurus",
        "filter": [
          "**/*"
        ]
      }
    ],
    "nodeGypRebuild": false,
    "buildDependenciesFromSource": false,
    "npmRebuild": false,
    "publish": [
      {
        "provider": "generic",
        "url": "https://tojusignal.azaaxin.com"
      }
    ],
    "mac": {
      "category": "public.app-category.social-networking",
      "target": [
        "dmg",
        "zip"
      ],
      "icon": "images/macos/icon.icns"
    },
    "win": {
      "target": "nsis",
      "artifactName": "${productName}-${version}-${arch}.${ext}",
      "executableName": "toju",
      "icon": "images/windows/icon.ico"
    },
    "nsis": {
      "oneClick": false,
      "allowToChangeInstallationDirectory": true
    },
    "linux": {
      "target": [
        "AppImage",
        "deb"
      ],
      "category": "Network;Chat",
      "executableName": "toju",
      "executableArgs": [
        "--no-sandbox"
      ],
      "icon": "images/linux/icons"
    }
  }
}
