Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
288 lines
11 KiB
JSON
288 lines
11 KiB
JSON
{
|
|
"name": "server",
|
|
"version": "1.2.1",
|
|
"private": true,
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=20.0.0",
|
|
"npm": ">=10.0.0"
|
|
},
|
|
"scripts": {
|
|
"dev": "cd .. && npx nx build-deps server && NX_LOAD_DOT_ENV_FILES=false NODE_ENV=development NX_DAEMON=false npx nx next:dev server",
|
|
"dev:turbo": "cd .. && npx nx build-deps server && NX_LOAD_DOT_ENV_FILES=false NODE_ENV=development npx nx next:dev server -- --turbo",
|
|
"dev:express": "NODE_OPTIONS='--max-old-space-size=8192' NODE_ENV=development nodemon --watch index.ts --watch src/middleware --ext ts --exec tsx index.ts",
|
|
"dev:ngrok": "node scripts/dev-with-ngrok-instructions.js",
|
|
"ngrok:start": "ngrok http 3000 --subdomain=alga-psa-dev",
|
|
"ngrok:tunnel": "ngrok http 3000",
|
|
"test:webhook": "node scripts/test-webhook.js",
|
|
"dev:with-ngrok": "echo 'Set NGROK_URL and run: NGROK_URL=https://your-url.ngrok.io npm run dev'",
|
|
"build": "NODE_OPTIONS=\"${NODE_OPTIONS:---max-old-space-size=8192}\" NODE_ENV=production next build --webpack",
|
|
"build:turbo": "NODE_OPTIONS=\"${NODE_OPTIONS:---max-old-space-size=8192}\" NODE_ENV=production next build --turbo",
|
|
"build:enterprise": "NODE_OPTIONS=\"${NODE_OPTIONS:---max-old-space-size=8192}\" NODE_ENV=production next build --webpack",
|
|
"build:enterprise:turbo": "NODE_OPTIONS=\"${NODE_OPTIONS:---max-old-space-size=8192}\" NODE_ENV=production NEXT_PUBLIC_EDITION=enterprise next build --turbo",
|
|
"build:enterprise-script": "../scripts/build-enterprise.sh",
|
|
"analyze": "NODE_OPTIONS=\"${NODE_OPTIONS:---max-old-space-size=8192}\" NODE_ENV=production ANALYZE=true next build --webpack",
|
|
"start": "next start -p 3000",
|
|
"start:next": "next start -p 3000",
|
|
"start:express": "tsx index.ts",
|
|
"lint": "next lint",
|
|
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
"test": "vitest run src/test/unit --coverage.enabled=false",
|
|
"test:watch": "vitest --watch",
|
|
"test:unit": "vitest src/test/unit",
|
|
"test:integration": "vitest src/test/integration",
|
|
"test:integration:ci": "vitest run src/test/integration --coverage.enabled=false",
|
|
"test:integration:tier1": "vitest run src/test/integration/billing src/test/integration/accounting src/test/integration/authorization src/test/integration/billingInvoiceTiming.integration.test.ts --coverage.enabled=false",
|
|
"test:infrastructure": "vitest src/test/infrastructure",
|
|
"test:e2e": "vitest src/test/e2e",
|
|
"test:e2e:email": "vitest src/test/e2e/email-processing.test.ts",
|
|
"test:e2e:workflow": "vitest src/test/e2e/workflow-integration.test.ts",
|
|
"test:e2e:pipeline": "vitest src/test/e2e/full-pipeline.test.ts",
|
|
"test:e2e:email-settings": "vitest src/test/e2e/email-settings",
|
|
"test:local": "vitest --config vitest.config.ts",
|
|
"test:harness:start": "node scripts/test-harness.js start",
|
|
"test:harness:stop": "node scripts/test-harness.js stop",
|
|
"test:harness:restart": "node scripts/test-harness.js restart",
|
|
"test:harness:status": "node scripts/test-harness.js status",
|
|
"test:harness:logs": "node scripts/test-harness.js logs",
|
|
"test:harness:reset": "node scripts/test-harness.js reset-data",
|
|
"workflow-worker": "ts-node --esm src/bin/workflow-worker.ts",
|
|
"workflow-worker:dev": "nodemon --watch src --ext ts --exec \"ts-node --esm src/bin/workflow-worker.ts\"",
|
|
"workflow-worker:build": "tsc --project tsconfig.json --outDir dist src/bin/workflow-worker.ts",
|
|
"workflow-worker:start": "node dist/bin/workflow-worker.js",
|
|
"unified-inbound-email-consumer": "ts-node --esm src/bin/unifiedInboundEmailQueueConsumer.ts",
|
|
"create-tenant": "tsx scripts/create-tenant.ts",
|
|
"rollback-tenant": "tsx scripts/rollback-tenant.ts",
|
|
"migrate:ee": "node scripts/run-ee-migrations.js",
|
|
"migrate:ee:down": "node scripts/run-ee-migrations.js down",
|
|
"migrate:ee:status": "node scripts/run-ee-migrations.js status"
|
|
},
|
|
"nx": {
|
|
"targets": {
|
|
"build": {
|
|
"dependsOn": []
|
|
}
|
|
}
|
|
},
|
|
"dependencies": {
|
|
"@alga-psa/authorization": "*",
|
|
"@alga-psa/workflow-streams": "*",
|
|
"@alga-psa/workflows": "*",
|
|
"@anthropic-ai/sdk": "^0.36.3",
|
|
"@assemblyscript/loader": "^0.27.36",
|
|
"@asteasolutions/zod-to-openapi": "^6.3.1",
|
|
"@aws-sdk/client-s3": "^3.984.0",
|
|
"@aws-sdk/s3-request-presigner": "^3.984.0",
|
|
"@blocknote/core": "^0.47.3",
|
|
"@blocknote/mantine": "^0.47.3",
|
|
"@blocknote/react": "^0.47.3",
|
|
"@blocknote/server-util": "^0.47.3",
|
|
"@eslint/plugin-kit": "^0.3.5",
|
|
"@hocuspocus/provider": "^2.15.2",
|
|
"@hookform/resolvers": "^5.0.1",
|
|
"@huggingface/inference": "^3.3.3",
|
|
"@js-temporal/polyfill": "^0.4.4",
|
|
"@mantine/form": "^8.0.0",
|
|
"@monaco-editor/react": "^4.7.0",
|
|
"@nestjs/common": "^11.0.4",
|
|
"@nestjs/core": "^11.1.18",
|
|
"@opentelemetry/api": "^1.9.0",
|
|
"@opentelemetry/auto-instrumentations-node": "^0.75.0",
|
|
"@opentelemetry/auto-instrumentations-web": "^0.48.0",
|
|
"@opentelemetry/exporter-jaeger": "^2.0.1",
|
|
"@opentelemetry/exporter-trace-otlp-http": "^0.217.0",
|
|
"@opentelemetry/instrumentation-document-load": "^0.47.0",
|
|
"@opentelemetry/instrumentation-http": "^0.217.0",
|
|
"@opentelemetry/instrumentation-pg": "^0.54.0",
|
|
"@opentelemetry/instrumentation-redis": "^0.49.1",
|
|
"@opentelemetry/instrumentation-user-interaction": "^0.47.0",
|
|
"@opentelemetry/resources": "^2.0.1",
|
|
"@opentelemetry/sdk-node": "^0.217.0",
|
|
"@opentelemetry/sdk-trace-base": "^2.0.1",
|
|
"@opentelemetry/sdk-trace-web": "^2.0.1",
|
|
"@opentelemetry/semantic-conventions": "^1.34.0",
|
|
"@opentelemetry/winston-transport": "^0.13.0",
|
|
"@radix-ui/react-dialog": "^1.0.5",
|
|
"@radix-ui/react-form": "^0.1.2",
|
|
"@radix-ui/react-label": "^2.1.2",
|
|
"@radix-ui/react-progress": "^1.1.1",
|
|
"@radix-ui/react-select": "^2.0.0",
|
|
"@radix-ui/react-slot": "^1.0.2",
|
|
"@radix-ui/react-switch": "^1.0.3",
|
|
"@radix-ui/react-tabs": "^1.1.3",
|
|
"@radix-ui/themes": "^3.2.0",
|
|
"@rjsf/core": "^6.0.0-beta.11",
|
|
"@rjsf/validator-ajv8": "^6.0.0-beta.11",
|
|
"@stripe/react-stripe-js": "^5.2.0",
|
|
"@stripe/stripe-js": "^8.0.0",
|
|
"@tailwindcss/postcss": "^4.0.6",
|
|
"@tanstack/react-table": "^8.20.6",
|
|
"@tiptap/extension-collaboration": "^3.12.0",
|
|
"@tiptap/extension-collaboration-caret": "^3.0.0",
|
|
"@tiptap/extension-table": "^3.22.5",
|
|
"@tiptap/extension-table-cell": "^3.22.5",
|
|
"@tiptap/extension-table-header": "^3.22.5",
|
|
"@tiptap/extension-table-row": "^3.22.5",
|
|
"@tiptap/react": "^3.0.7",
|
|
"@tiptap/starter-kit": "^3.0.7",
|
|
"@tiptap/y-tiptap": "^3.0.2",
|
|
"@types/cookie-parser": "^1.4.9",
|
|
"@types/express": "^5.0.3",
|
|
"@types/nodemailer": "^7.0.9",
|
|
"@types/papaparse": "^5.3.16",
|
|
"@types/redis": "^4.0.10",
|
|
"@types/uuid": "^10.0.0",
|
|
"@types/ws": "^8.5.13",
|
|
"@wasmer/sdk": "^0.9.0",
|
|
"archiver": "^7.0.1",
|
|
"autoprefixer": "^10.4.21",
|
|
"axios": "^1.16.0",
|
|
"class-variance-authority": "^0.7.0",
|
|
"clean": "^4.0.2",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.0.4",
|
|
"cookie-parser": "^1.4.7",
|
|
"cookies-next": "^6.1.0",
|
|
"date-fns": "^4.1.0",
|
|
"date-fns-tz": "^3.2.0",
|
|
"dotenv": "^16.4.7",
|
|
"elkjs": "^0.10.0",
|
|
"expo-server-sdk": "^6.1.0",
|
|
"express": "^5.1.0",
|
|
"file-type": "^21.3.2",
|
|
"fluent-ffmpeg": "^2.1.3",
|
|
"formdata-node": "^6.0.3",
|
|
"fractional-indexing": "^3.2.0",
|
|
"fzstd": "^0.1.1",
|
|
"google-auth-library": "^10.1.0",
|
|
"googleapis": "^152.0.0",
|
|
"handlebars": "^4.7.9",
|
|
"i18next": "^25.5.2",
|
|
"i18next-browser-languagedetector": "^8.2.0",
|
|
"i18next-http-backend": "^3.0.6",
|
|
"imapflow": "^1.3.1",
|
|
"jsondiffpatch": "^0.7.3",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"lodash": "^4.18.1",
|
|
"lucide-react": "^0.475.0",
|
|
"marked": "^15.0.7",
|
|
"mkdirp": "^3.0.1",
|
|
"monaco-editor": "^0.52.2",
|
|
"nestjs-knex": "^2.0.0",
|
|
"next": "^16.2.6",
|
|
"next-auth": "^5.0.0-beta.30",
|
|
"next-i18next": "^15.4.2",
|
|
"next-themes": "^0.4.6",
|
|
"node-vault": "^0.10.2",
|
|
"nodemailer": "^8.0.4",
|
|
"papaparse": "^5.5.3",
|
|
"parsimmon": "^1.18.1",
|
|
"pdf-lib": "^1.17.1",
|
|
"pdf2pic": "^3.1.3",
|
|
"pg-boss": "^10.1.6",
|
|
"pg-query-stream": "^4.10.3",
|
|
"pg-types": "^4.0.2",
|
|
"postcss": "^8.5.10",
|
|
"postcss-import": "^16.1.0",
|
|
"posthog-js": "^1.255.1",
|
|
"posthog-node": "^4.18.0",
|
|
"prosemirror-view": "^1.30.2",
|
|
"puppeteer": "^24.2.0",
|
|
"qrcode": "^1.5.4",
|
|
"querystring-es3": "^0.2.1",
|
|
"rate-limiter-flexible": "^5.0.5",
|
|
"react": "^19.2.3",
|
|
"react-big-calendar": "^1.17.1",
|
|
"react-day-picker": "^9.5.0",
|
|
"react-dom": "^19.2.3",
|
|
"react-error-boundary": "^5.0.0",
|
|
"react-hook-form": "^7.54.2",
|
|
"react-hot-toast": "^2.5.1",
|
|
"react-i18next": "^15.7.3",
|
|
"react-markdown": "^9.0.3",
|
|
"react-resizable-panels": "^3.0.6",
|
|
"reactflow": "^11.11.4",
|
|
"recharts": "^2.15.1",
|
|
"redis": "^4.7.0",
|
|
"rrule": "^2.8.1",
|
|
"sharp": "^0.33.5",
|
|
"simple-swizzle": "^0.2.4",
|
|
"socket.io-client": "^4.8.1",
|
|
"speakeasy": "^2.0.0",
|
|
"stripe": "^19.1.0",
|
|
"swr": "^2.2.5",
|
|
"tailwind-merge": "^2.6.0",
|
|
"tailwindcss": "^3.3.0",
|
|
"tar": "^7.5.12",
|
|
"tinycolor2": "^1.6.0",
|
|
"ts-command-line-args": "^2.5.1",
|
|
"ts-morph": "^26.0.0",
|
|
"ua-parser-js": "^2.0.6",
|
|
"uuid": "^11.1.1",
|
|
"web-vitals": "^5.0.3",
|
|
"winston": "^3.17.0",
|
|
"winston-daily-rotate-file": "^5.0.0",
|
|
"ws": "^8.20.1",
|
|
"xlsx": "^0.18.5",
|
|
"zod": "^3.25.67",
|
|
"zod-to-json-schema": "^3.24.6"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.18.0",
|
|
"@faker-js/faker": "^9.9.0",
|
|
"@tailwindcss/container-queries": "^0.1.1",
|
|
"@tailwindcss/typography": "^0.5.19",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.2.0",
|
|
"@types/archiver": "^6.0.3",
|
|
"@types/fluent-ffmpeg": "^2.1.27",
|
|
"@types/jsonwebtoken": "^9.0.8",
|
|
"@types/lodash": "^4.17.20",
|
|
"@types/node": "^20.11.0",
|
|
"@types/parsimmon": "^1.10.9",
|
|
"@types/qrcode": "^1.5.5",
|
|
"@types/react-big-calendar": "^1.16.2",
|
|
"@types/speakeasy": "^2.0.10",
|
|
"@types/tinycolor2": "^1.4.6",
|
|
"@types/ua-parser-js": "^0.7.39",
|
|
"@typescript-eslint/eslint-plugin": "^8.19.1",
|
|
"@typescript-eslint/parser": "^8.19.1",
|
|
"@vitest/coverage-v8": "3.2.4",
|
|
"as-json": "^1.0.2",
|
|
"assemblyscript": "^0.27.36",
|
|
"copy-webpack-plugin": "^13.0.0",
|
|
"empty-module": "^0.0.2",
|
|
"eslint": "^9.18.0",
|
|
"eslint-plugin-react": "^7.37.3",
|
|
"globals": "^15.14.0",
|
|
"nodemon": "^3.1.10",
|
|
"null-loader": "^4.0.1",
|
|
"tsx": "^4.20.3",
|
|
"typescript-eslint": "^8.19.1",
|
|
"vitest": "^3.2.4"
|
|
},
|
|
"optionalDependencies": {
|
|
"ngrok": "^4.3.3"
|
|
},
|
|
"main": "eslint.config.js",
|
|
"keywords": [],
|
|
"author": "",
|
|
"license": "ISC",
|
|
"description": "",
|
|
"overrides": {
|
|
"protobufjs": "^7.5.8",
|
|
"@protobufjs/utf8": ">=1.1.1",
|
|
"fast-uri": ">=3.1.2",
|
|
"fast-xml-parser": ">=5.7.0",
|
|
"fast-xml-builder": ">=1.1.7",
|
|
"basic-ftp": ">=5.3.1",
|
|
"picomatch": ">=2.3.2",
|
|
"dompurify": ">=3.4.0",
|
|
"follow-redirects": ">=1.16.0",
|
|
"ip-address": ">=10.1.1",
|
|
"vite": ">=6.4.2",
|
|
"path-to-regexp@0.1": "0.1.12",
|
|
"brace-expansion": ">=1.1.13"
|
|
}
|
|
}
|