mirror of
https://github.com/fosrl/pangolin.git
synced 2025-06-20 20:35:43 +02:00
148 lines
5.8 KiB
JSON
148 lines
5.8 KiB
JSON
{
|
|
"name": "@fosrl/pangolin",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"description": "Tunneled Reverse Proxy Management Server with Identity and Access Control and Dashboard UI",
|
|
"homepage": "https://github.com/fosrl/pangolin",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/fosrl/pangolin"
|
|
},
|
|
"license": "SEE LICENSE IN LICENSE AND README.md",
|
|
"scripts": {
|
|
"dev": "NODE_ENV=development ENVIRONMENT=dev tsx watch server/index.ts",
|
|
"db:pg:generate": "drizzle-kit generate --config=./drizzle.pg.config.ts",
|
|
"db:sqlite:generate": "drizzle-kit generate --config=./drizzle.sqlite.config.ts",
|
|
"db:pg:push": "npx tsx server/db/pg/migrate.ts",
|
|
"db:sqlite:push": "npx tsx server/db/sqlite/migrate.ts",
|
|
"db:sqlite:studio": "drizzle-kit studio --config=./drizzle.sqlite.config.ts",
|
|
"db:pg:studio": "drizzle-kit studio --config=./drizzle.pg.config.ts",
|
|
"db:clear-migrations": "rm -rf server/migrations",
|
|
"build:sqlite": "mkdir -p dist && next build && node esbuild.mjs -e server/index.ts -o dist/server.mjs && node esbuild.mjs -e server/setup/migrationsSqlite.ts -o dist/migrations.mjs",
|
|
"build:pg": "mkdir -p dist && next build && node esbuild.mjs -e server/index.ts -o dist/server.mjs && node esbuild.mjs -e server/setup/migrationsPg.ts -o dist/migrations.mjs",
|
|
"start:sqlite": "DB_TYPE=sqlite NODE_OPTIONS=--enable-source-maps NODE_ENV=development ENVIRONMENT=prod sh -c 'node dist/migrations.mjs && node dist/server.mjs'",
|
|
"start:pg": "DB_TYPE=pg NODE_OPTIONS=--enable-source-maps NODE_ENV=development ENVIRONMENT=prod sh -c 'node dist/migrations.mjs && node dist/server.mjs'",
|
|
"email": "email dev --dir server/emails/templates --port 3005"
|
|
},
|
|
"dependencies": {
|
|
"@asteasolutions/zod-to-openapi": "^7.3.4",
|
|
"@hookform/resolvers": "3.9.1",
|
|
"@node-rs/argon2": "^2.0.2",
|
|
"@oslojs/crypto": "1.0.1",
|
|
"@oslojs/encoding": "1.1.0",
|
|
"@radix-ui/react-avatar": "1.1.10",
|
|
"@radix-ui/react-checkbox": "1.3.2",
|
|
"@radix-ui/react-collapsible": "1.1.11",
|
|
"@radix-ui/react-dialog": "1.1.14",
|
|
"@radix-ui/react-dropdown-menu": "2.1.15",
|
|
"@radix-ui/react-icons": "1.3.2",
|
|
"@radix-ui/react-label": "2.1.7",
|
|
"@radix-ui/react-popover": "1.1.14",
|
|
"@radix-ui/react-progress": "^1.1.7",
|
|
"@radix-ui/react-radio-group": "1.3.7",
|
|
"@radix-ui/react-scroll-area": "^1.2.9",
|
|
"@radix-ui/react-select": "2.2.5",
|
|
"@radix-ui/react-separator": "1.1.7",
|
|
"@radix-ui/react-slot": "1.2.3",
|
|
"@radix-ui/react-switch": "1.2.5",
|
|
"@radix-ui/react-tabs": "1.1.12",
|
|
"@radix-ui/react-toast": "1.2.14",
|
|
"@react-email/components": "0.1.0",
|
|
"@react-email/render": "^1.1.2",
|
|
"@react-email/tailwind": "1.0.5",
|
|
"@tailwindcss/forms": "^0.5.10",
|
|
"@tanstack/react-table": "8.21.3",
|
|
"arctic": "^3.7.0",
|
|
"axios": "1.10.0",
|
|
"better-sqlite3": "11.7.0",
|
|
"canvas-confetti": "1.9.3",
|
|
"class-variance-authority": "0.7.1",
|
|
"clsx": "2.1.1",
|
|
"cmdk": "1.1.1",
|
|
"cookie": "^1.0.2",
|
|
"cookie-parser": "1.4.7",
|
|
"cookies": "^0.9.1",
|
|
"cors": "2.8.5",
|
|
"crypto-js": "^4.2.0",
|
|
"drizzle-orm": "0.44.2",
|
|
"eslint": "9.29.0",
|
|
"eslint-config-next": "15.3.4",
|
|
"express": "4.21.2",
|
|
"express-rate-limit": "7.5.0",
|
|
"glob": "11.0.3",
|
|
"helmet": "8.1.0",
|
|
"http-errors": "2.0.0",
|
|
"i": "^0.3.7",
|
|
"input-otp": "1.4.2",
|
|
"jmespath": "^0.16.0",
|
|
"js-yaml": "4.1.0",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"lucide-react": "0.518.0",
|
|
"moment": "2.30.1",
|
|
"next": "15.3.4",
|
|
"next-themes": "0.4.6",
|
|
"node-cache": "5.1.2",
|
|
"node-fetch": "3.3.2",
|
|
"nodemailer": "7.0.3",
|
|
"npm": "^11.4.2",
|
|
"oslo": "1.2.1",
|
|
"pg": "^8.16.2",
|
|
"qrcode.react": "4.2.0",
|
|
"react": "19.1.0",
|
|
"react-dom": "19.1.0",
|
|
"react-easy-sort": "^1.6.0",
|
|
"react-hook-form": "7.58.1",
|
|
"react-icons": "^5.5.0",
|
|
"rebuild": "0.1.2",
|
|
"semver": "7.7.2",
|
|
"swagger-ui-express": "^5.0.1",
|
|
"tailwind-merge": "3.3.1",
|
|
"tw-animate-css": "^1.3.3",
|
|
"uuid": "^11.1.0",
|
|
"vaul": "1.1.2",
|
|
"winston": "3.17.0",
|
|
"winston-daily-rotate-file": "5.0.0",
|
|
"ws": "8.18.2",
|
|
"zod": "3.25.67",
|
|
"zod-validation-error": "3.5.2"
|
|
},
|
|
"devDependencies": {
|
|
"@dotenvx/dotenvx": "1.44.2",
|
|
"@esbuild-plugins/tsconfig-paths": "0.1.2",
|
|
"@tailwindcss/postcss": "^4.1.10",
|
|
"@types/better-sqlite3": "7.6.12",
|
|
"@types/cookie-parser": "1.4.9",
|
|
"@types/cors": "2.8.19",
|
|
"@types/crypto-js": "^4.2.2",
|
|
"@types/express": "5.0.0",
|
|
"@types/jmespath": "^0.15.2",
|
|
"@types/js-yaml": "4.0.9",
|
|
"@types/jsonwebtoken": "^9.0.10",
|
|
"@types/node": "^24",
|
|
"@types/nodemailer": "6.4.17",
|
|
"@types/react": "19.1.8",
|
|
"@types/react-dom": "19.1.6",
|
|
"@types/semver": "7.7.0",
|
|
"@types/swagger-ui-express": "^4.1.8",
|
|
"@types/ws": "8.18.1",
|
|
"@types/yargs": "17.0.33",
|
|
"drizzle-kit": "0.31.1",
|
|
"esbuild": "0.25.5",
|
|
"esbuild-node-externals": "1.18.0",
|
|
"postcss": "^8",
|
|
"react-email": "4.0.16",
|
|
"tailwindcss": "^4.1.4",
|
|
"tsc-alias": "1.8.16",
|
|
"tsx": "4.20.3",
|
|
"typescript": "^5",
|
|
"typescript-eslint": "^8.34.1",
|
|
"yargs": "18.0.0"
|
|
},
|
|
"overrides": {
|
|
"emblor": {
|
|
"react": "19.0.0",
|
|
"react-dom": "19.0.0"
|
|
}
|
|
}
|
|
}
|