{ "name": "janua-monorepo", "version": "0.1.0", "description": "Janua multi-tenant payment platform", "private": true, "packageManager": "pnpm@10.25.0", "workspaces": [ "packages/*", "apps/*" ], "scripts": { "dev": "node scripts/require-local-services.mjs && concurrently \"npm run dev:api\"", "dev:api": "node scripts/require-local-services.mjs && cd apps/api && python -m uvicorn app.main:app --reload", "build": "npm run build:packages", "build:packages": "npm run build:core && npm run build:sdk", "build:core": "cd packages/core && npm run build", "build:sdk": "cd packages/typescript-sdk && npm run build", "build:all": "npm run build:packages && npm run build:react && npm run build:vue && npm run build:python", "build:frontend": "pnpm --filter './apps/*' build", "build:react": "cd packages/react-sdk && npm run build", "build:vue": "cd packages/vue-sdk && npm run build", "build:python": "cd packages/python-sdk && python setup.py sdist bdist_wheel", "test": "npm run test:unit && npm run test:api", "test:unit": "npm run check:test-scripts && npm run test:packages && npm run test:frontend", "test:frontend": "pnpm --filter @janua/ui --filter @janua/dashboard --filter @janua/website --filter @janua/admin test", "check:test-scripts": "node scripts/check-test-scripts.mjs", "test:coverage": "jest --config jest.config.coverage.js", "test:coverage:report": "npm run test:coverage && open coverage/index.html", "test:all": "bash scripts/test-all.sh", "test:integration": "echo 'Integration tests pending' && exit 0", "test:e2e": "npx playwright test tests/e2e || true", "test:packages": "cd packages/core && npm test", "test:api": "cd apps/api && python -m pytest tests/ -v", "lint": "node scripts/lint-workspaces.mjs", "lint:packages": "cd packages/core && npm run lint", "check:ui-barrel": "node scripts/check-ui-barrel-exports.mjs", "typecheck": "npm run typecheck:packages && npm run check:ui-barrel", "typecheck:packages": "cd packages/core && npm run typecheck", "test:cli": "pnpm --filter @janua/cli test", "build:cli": "pnpm --filter @janua/cli build", "db:setup": "node scripts/require-local-db.mjs && npm run db:generate && npm run db:migrate && npm run db:seed", "db:generate": "node scripts/require-local-db.mjs && prisma generate", "db:migrate": "node scripts/require-local-db.mjs && prisma migrate dev", "db:migrate:prod": "node scripts/require-local-db.mjs && prisma migrate deploy", "db:seed": "node scripts/require-local-db.mjs && tsx prisma/seed.ts", "db:studio": "node scripts/require-local-db.mjs && prisma studio", "db:reset": "node scripts/require-local-destructive.mjs && node scripts/require-local-db.mjs && prisma migrate reset --force && npm run db:seed", "db:push": "node scripts/require-local-db.mjs && prisma db push", "clean": "node scripts/require-local-destructive.mjs && bash scripts/cleanup.sh && npm run clean:packages && npm run clean:build", "clean:cache": "node scripts/require-local-destructive.mjs && bash scripts/cleanup.sh", "clean:packages": "node scripts/require-local-destructive.mjs && cd packages/core && npm run clean", "clean:build": "node scripts/require-local-destructive.mjs && rm -rf dist build .next out", "clean:python": "node scripts/require-local-destructive.mjs && find . -type d -name '__pycache__' -exec rm -rf {} + 2>/dev/null; find . -name '*.pyc' -delete", "install:all": "npm install && npm run install:packages", "install:packages": "cd packages/core && npm install", "test:journeys:setup": "node scripts/require-local-services.mjs && docker-compose -f config/docker-compose.test.yml up -d && npm run test:journeys:wait", "test:journeys:wait": "bash scripts/wait-for-services.sh", "test:journeys:teardown": "node scripts/require-local-destructive.mjs && docker-compose -f config/docker-compose.test.yml down -v", "test:journeys": "npm run test:journeys:setup && npx playwright test tests/e2e/journeys && npm run test:journeys:teardown", "test:journeys:local": "npx playwright test tests/e2e/journeys --headed --debug", "test:journeys:ci": "npx playwright test tests/e2e/journeys --reporter=github", "test:journeys:report": "npx playwright show-report", "test:visual": "npx playwright test tests/e2e/visual --headed", "test:visual:ci": "npx playwright test tests/e2e/visual", "test:visual:update": "npx playwright test tests/e2e/visual --update-snapshots", "synthetics:hosted-auth": "node scripts/require-local-identity-ops.mjs && bash scripts/hosted-auth-synthetic.sh" }, "devDependencies": { "@babel/preset-env": "^7.29.7", "@babel/preset-react": "^7.29.7", "@babel/preset-typescript": "^7.29.7", "@eslint/js": "^9.39.5", "@next/eslint-plugin-next": "^16.4.1", "@playwright/test": "^1.62.1", "@storybook/addon-essentials": "^8.6.18", "@storybook/addon-interactions": "^8.6.18", "@storybook/addon-links": "^8.6.15", "@storybook/blocks": "^8.6.18", "@storybook/react-vite": "^10.5.6", "@storybook/test": "^8.6.15", "@types/jest": "^30.0.0", "@types/node": "^22.20.1", "@typescript-eslint/eslint-plugin": "^8.66.0", "@typescript-eslint/parser": "^8.66.0", "babel-jest": "^30.1.2", "concurrently": "^9.2.1", "eslint": "^9.39.2", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "identity-obj-proxy": "^3.0.0", "jest": "^30.2.0", "jest-junit": "^16.0.0", "jest-transform-stub": "^2.0.0", "prisma": "6.1.0", "shadcn": "^4.16.1", "storybook": "^8.6.15", "tsx": "^4.23.5", "typescript": "^5.7.2" }, "dependencies": { "@prisma/client": "6.1.0", "bcryptjs": "^2.4.3", "ioredis": "^5.7.0", "messagebird": "^4.0.1", "prom-client": "^15.1.3", "react": "18.3.1", "react-dom": "18.3.1", "socket.io": "^4.8.3" }, "engines": { "node": ">=18.0.0", "npm": ">=9.0.0" }, "prisma": { "seed": "tsx prisma/seed.ts" }, "pnpm": { "overrides": { "@types/react": "18.2.79", "@types/react-dom": "18.2.25", "tar": ">=7.5.7", "vitest": "^3.2.6", "tinypool": "^2.1.2", "shell-quote": ">=1.11.0", "js-cookie": "^3.0.7", "diff": ">=8.0.3", "next": "16.4.1", "cookie": ">=0.7.0", "cross-spawn": ">=7.0.5", "path-to-regexp": ">=8.4.0", "send": ">=0.19.0", "serve-static": ">=1.16.0", "body-parser": ">=1.20.3", "express": ">=4.21.1", "proxy-addr": "^2.0.8", "ws": ">=8.21.0", "undici": ">=8.10.2", "sharp": "0.35.5", "http-proxy-middleware": ">=3.0.3", "webpack-dev-middleware": ">=7.4.2", "@babel/plugin-transform-modules-systemjs": "7.29.4", "@tootallnate/once": "3.0.1", "browserify-sign": ">=4.2.3", "elliptic": ">=6.6.0", "fast-uri": "3.1.8", "ip-address": "10.7.2", "ip": ">=2.0.1", "jose": ">=4.15.9", "nanoid": ">=3.3.8", "postcss": ">=8.5.18", "source-map-js": "^1.2.2", "semver": ">=7.5.4", "tough-cookie": ">=4.1.4", "preact": ">=10.28.2", "qs": ">=6.16.0", "lodash": ">=4.18.0", "storybook": "8.6.19", "esbuild": ">=0.28.1", "markdown-it": ">=14.2.0", "linkify-it": ">=5.0.1", "minimatch": ">=10.2.3", "brace-expansion": ">=5.0.12", "picomatch": ">=4.0.4", "axios": ">=1.20.0", "follow-redirects": ">=1.16.1", "uuid": ">=14.0.0", "vite": "8.1.6", "@sveltejs/kit": ">=2.60.1", "svelte": ">=5.55.7", "devalue": ">=5.9.2 <6.0.0", "socket.io-parser": ">=4.2.7", "socket.io-parser@>=4.0.0 <4.2.7": ">=4.2.7", "engine.io": ">=6.6.10", "yaml": ">=2.8.3", "dompurify": ">=3.4.17", "protobufjs": ">=7.6.3 <8.0.0", "form-data": ">=4.0.6", "@babel/core": ">=7.29.6 <8", "@opentelemetry/core": ">=2.8.0", "js-yaml@<4.0.0": ">=3.15.2 <4.0.0", "js-yaml@>=4.0.0": ">=4.3.2 <5.0.0", "@modelcontextprotocol/sdk": "^1.31.0", "handlebars": ">=4.7.10" } } }