{ "name": "ghostfolio", "version": "1.177.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "scripts": { "affected": "nx affected", "affected:apps": "nx affected:apps", "affected:build": "nx affected:build", "affected:dep-graph": "nx affected:dep-graph", "affected:e2e": "nx affected:e2e", "affected:libs": "nx affected:libs", "affected:lint": "nx affected:lint", "affected:test": "nx affected:test", "angular": "node --max_old_space_size=32768 ./node_modules/@angular/cli/bin/ng", "build:all": "nx run api:build:production && nx run client:build:production && yarn replace-placeholders-in-build", "build:dev": "nx run api:build && nx run client:build && yarn replace-placeholders-in-build", "build:storybook": "nx run ui:build-storybook", "clean": "rimraf dist", "database:baseline": "sh ./prisma/baseline.sh", "database:format-schema": "prisma format", "database:generate-typings": "prisma generate", "database:gui": "prisma studio", "database:gui:prod": "npx dotenv-cli -e .env.prod -- prisma studio", "database:migrate": "prisma migrate deploy", "database:push": "prisma db push", "database:seed": "prisma db seed", "database:setup": "yarn database:push && yarn database:seed && yarn database:baseline", "dep-graph": "nx dep-graph", "e2e": "ng e2e", "format": "nx format:write", "format:check": "nx format:check", "format:write": "nx format:write", "help": "nx help", "import-sort": "import-sort --write '{apps,libs}/**/*.ts'", "lint": "nx workspace-lint && ng lint", "ng": "nx", "nx": "nx", "postinstall": "prisma generate && ngcc --properties es2020 browser module main", "replace-placeholders-in-build": "node ./replace.build.js", "start": "node dist/apps/api/main", "start:client": "ng serve client --hmr -o", "start:prod": "node apps/api/main", "start:server": "nx serve api --watch", "start:storybook": "nx run ui:storybook", "test": "nx test", "test:single": "nx test --test-file portfolio-calculator-novn-buy-and-sell-partially.spec.ts", "ts-node": "ts-node", "update": "nx migrate latest", "watch:server": "nx build api --watch", "watch:test": "nx test --watch", "workspace-generator": "nx workspace-generator" }, "dependencies": { "@angular/animations": "14.1.0", "@angular/cdk": "14.1.0", "@angular/common": "14.1.0", "@angular/compiler": "14.1.0", "@angular/core": "14.1.0", "@angular/forms": "14.1.0", "@angular/material": "14.1.0", "@angular/platform-browser": "14.1.0", "@angular/platform-browser-dynamic": "14.1.0", "@angular/router": "14.1.0", "@codewithdan/observable-store": "2.2.11", "@dfinity/agent": "0.12.1", "@dfinity/auth-client": "0.12.1", "@dfinity/authentication": "0.12.1", "@dfinity/candid": "0.12.1", "@dfinity/identity": "0.12.1", "@dfinity/principal": "0.12.1", "@dinero.js/currencies": "2.0.0-alpha.8", "@nestjs/bull": "0.5.5", "@nestjs/common": "9.0.7", "@nestjs/config": "2.2.0", "@nestjs/core": "9.0.7", "@nestjs/jwt": "9.0.0", "@nestjs/passport": "9.0.0", "@nestjs/platform-express": "9.0.7", "@nestjs/schedule": "2.1.0", "@nestjs/serve-static": "3.0.0", "@nrwl/angular": "14.5.1", "@prisma/client": "4.1.1", "@simplewebauthn/browser": "5.2.1", "@simplewebauthn/server": "5.2.1", "@stripe/stripe-js": "1.22.0", "alphavantage": "2.2.0", "angular-material-css-vars": "3.0.0", "bent": "7.3.12", "big.js": "6.1.1", "bootstrap": "4.6.0", "bull": "4.8.5", "cache-manager": "3.4.3", "cache-manager-redis-store": "2.0.0", "chart.js": "3.8.0", "chartjs-adapter-date-fns": "2.0.0", "chartjs-plugin-annotation": "2.0.0", "chartjs-plugin-datalabels": "2.0.0", "cheerio": "1.0.0-rc.6", "class-transformer": "0.3.2", "class-validator": "0.13.1", "color": "4.0.1", "countries-list": "2.6.1", "countup.js": "2.0.7", "date-fns": "2.28.0", "envalid": "7.3.1", "google-spreadsheet": "3.2.0", "http-status-codes": "2.2.0", "ionicons": "5.5.1", "lodash": "4.17.21", "ms": "3.0.0-canary.1", "ngx-device-detector": "3.0.0", "ngx-markdown": "14.0.1", "ngx-skeleton-loader": "5.0.0", "ngx-stripe": "13.0.0", "papaparse": "5.3.1", "passport": "0.6.0", "passport-google-oauth20": "2.0.0", "passport-jwt": "4.0.0", "prisma": "4.1.1", "reflect-metadata": "0.1.13", "rxjs": "7.4.0", "stripe": "8.199.0", "svgmap": "2.6.0", "twitter-api-v2": "1.10.3", "uuid": "8.3.2", "yahoo-finance2": "2.3.3", "zone.js": "0.11.6" }, "devDependencies": { "@angular-devkit/build-angular": "14.1.0", "@angular-eslint/eslint-plugin": "14.0.2", "@angular-eslint/eslint-plugin-template": "14.0.2", "@angular-eslint/template-parser": "14.0.2", "@angular/cli": "14.1.0", "@angular/compiler-cli": "14.1.0", "@angular/language-service": "14.1.0", "@angular/localize": "14.1.0", "@nestjs/schematics": "9.0.1", "@nestjs/testing": "9.0.7", "@nrwl/cli": "14.5.1", "@nrwl/cypress": "14.5.1", "@nrwl/eslint-plugin-nx": "14.5.1", "@nrwl/jest": "14.5.1", "@nrwl/nest": "14.5.1", "@nrwl/node": "14.5.1", "@nrwl/nx-cloud": "14.2.0", "@nrwl/storybook": "14.5.1", "@nrwl/workspace": "14.5.1", "@simplewebauthn/typescript-types": "5.2.1", "@storybook/addon-essentials": "6.5.9", "@storybook/angular": "6.5.9", "@storybook/builder-webpack5": "6.5.9", "@storybook/core-server": "6.5.9", "@storybook/manager-webpack5": "6.5.9", "@types/big.js": "6.1.2", "@types/bull": "3.15.9", "@types/cache-manager": "3.4.2", "@types/color": "3.0.2", "@types/google-spreadsheet": "3.1.5", "@types/jest": "27.4.1", "@types/lodash": "4.14.174", "@types/node": "16.11.7", "@types/papaparse": "5.2.6", "@types/passport-google-oauth20": "2.0.11", "@typescript-eslint/eslint-plugin": "5.4.0", "@typescript-eslint/parser": "5.4.0", "codelyzer": "6.0.1", "cypress": "6.2.1", "eslint": "8.3.0", "eslint-config-prettier": "8.3.0", "eslint-plugin-cypress": "2.12.1", "eslint-plugin-import": "2.25.3", "import-sort-cli": "6.0.0", "import-sort-parser-typescript": "6.0.0", "import-sort-style-module": "6.0.0", "jest": "27.5.1", "jest-preset-angular": "11.1.2", "nx": "14.5.1", "prettier": "2.7.1", "replace-in-file": "6.2.0", "rimraf": "3.0.2", "ts-jest": "27.1.4", "ts-node": "10.8.1", "tslib": "2.0.0", "typescript": "4.7.3" }, "engines": { "node": ">=14" }, "importSort": { ".ts": { "parser": "typescript", "style": "module" } }, "prisma": { "seed": "node prisma/seed.js" } }