163c7ff791
* refactor: replace i18n HTTP requests with build-time bundling - Create translationBundler.ts for build-time translation loading - Replace HTTP fetch in loadTranslations with file system reads - Add CalComVersion cache invalidation to prevent stale translations - Fix TypeScript errors in booking page components - Eliminate 60s timeout issues by removing network dependency Resolves translation timeout issues by bundling translations at build time instead of making runtime HTTP requests to /static/locales/ endpoints. Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: move i18n files back to packages/lib/server with proper imports - Move i18n.ts and translationBundler.ts back to packages/lib/server/ - Replace all relative imports with @calcom/lib/server/i18n pattern - Fix LOCALES_PATH to point to correct directory - Maintain optimized serverless-friendly translation loading Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * refactor: move locale files to packages/lib/server to eliminate circular deps - Move all locale files from apps/web/public/static/locales to packages/lib/server/locales - Create copy-locales-static.js script to copy files during build - Update all references to use new location for build-time access - Maintain public folder copying for Next.js runtime access - Update platform atoms, scripts, and config files - Fix copy script relative path issue Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: update test imports after locale refactor - Fix import paths in test files updated by pre-commit hooks - Ensure all tests use correct locale import paths Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: revert import paths from @calcom/web/lib/i18n to @calcom/lib/server/i18n - Revert all test file imports back to @calcom/lib/server/i18n as requested - Addresses GitHub comment feedback to stick with packages/lib/server location - Fixes import paths in 6 test files that were incorrectly changed Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: update vite config alias to use new locale path - Update @calcom/web/public/static/locales/en/common.json to @calcom/lib/server/locales/en/common.json - Addresses GitHub comment about updating platform atoms vite config - Maintains correct path resolution after locale files moved to packages/lib/server Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: update translationBundler path resolution for production builds - Use process.cwd() instead of __dirname for locale file path resolution - Ensures locale files can be found in both development and production environments - Fixes E2E test failures caused by missing locale files in .next/server/chunks/ Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: use relative path resolution for locale files in translationBundler - Change from process.cwd() to __dirname with relative paths - Ensures locale files can be found in both development and production environments - Fixes E2E test failures caused by incorrect path resolution in Next.js builds Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: use process.cwd() for locale path resolution in production builds - Change from __dirname to process.cwd() with relative paths - Ensures locale files can be found when bundled into Next.js server chunks - Fixes E2E test failures caused by incorrect path resolution in production environment - Follows same pattern used in getStaticProps.tsx for cross-package file access Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: use path.resolve pattern from sendVerificationRequest for locale access - Change from process.cwd() to path.resolve(process.cwd(), '..', '..', 'packages/lib/server/locales') - Follows same pattern used in sendVerificationRequest.ts for cross-environment file access - Should resolve E2E test failures by ensuring locale files can be found when bundled into Next.js server chunks - Pattern navigates up from current working directory to reach packages directory consistently Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: use dynamic monorepo root detection for locale path resolution - Replace relative path resolution with dynamic monorepo root finder - Ensures locale files can be found from any working directory (root, apps/web, apps/api/v2) - Update API v2 i18n config to use new locale path - Fixes remaining E2E test failures in API v2 and E2E (1/4) test suites Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * fix: use require.resolve(__filename) for robust path resolution in all contexts - Replace __dirname with require.resolve(__filename) in monorepo root detection - Ensures locale files can be found when running from any working directory - Fixes E2E API v2 test failures where __dirname resolves to '.' instead of actual file path Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * Revert "fix: use require.resolve(__filename) for robust path resolution in all contexts" This reverts commit b37d8226000da8f7d5fb98b83dd0e95a53d45372. * fix: update copied locale files after translationBundler path resolution fix - Copy script updated all locale files in public directory - Ensures E2E tests have access to latest locale files - Fixes regression where all E2E tests were failing Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * feat: remove existing locale files to establish copy script as single source of truth - Delete all common.json files from apps/web/public/static/locales/ - Eliminates developer confusion about which files are authoritative - copy-locales-static.js script now clearly the only mechanism for populating public folder - packages/lib/server/locales/ remains the definitive source of truth for translations Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * add comment * refactor: simplify findMonorepoRoot by removing redundant fallback loop - Remove unnecessary second while loop using process.cwd() - The first loop from __dirname will always find the monorepo root - Add clear error message for fail-fast behavior if repo structure is corrupted - Improves code clarity and maintainability Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * feat: integrate updated translations from main branch - Restore all common.json files from main branch to apps/web/public/static/locales/ - Overwrite packages/lib/server/locales/ with up-to-date translation content - Resolve merge conflicts using Benny's safer 2-step approach - Ensure translation source of truth remains in packages/lib/server/locales/ - Complete safer conflict resolution to eliminate merge conflicts on PR #22422 Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * chore: update package.json and yarn.lock after translation integration - Update dependencies after ts-node installation for pre-commit hooks - Ensure yarn.lock reflects current dependency state - Complete translation integration process Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * feat: remove duplicate locale files from apps/web to establish single source of truth - Delete all common.json files from apps/web/public/static/locales/ - Maintain packages/lib/server/locales/ as the single source of truth for translations - copy-locales-static.js script will populate public folder during build process - Complete Benny's safer 2-step approach: restore from main, then remove duplicates - Resolve merge conflicts and eliminate developer confusion about translation file locations Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: hbjORbj <sldisek783@gmail.com>
206 lines
6.8 KiB
JSON
206 lines
6.8 KiB
JSON
{
|
|
"name": "@calcom/web",
|
|
"version": "5.4.19",
|
|
"private": true,
|
|
"scripts": {
|
|
"analyze": "ANALYZE=true next build",
|
|
"analyze:server": "BUNDLE_ANALYZE=server next build",
|
|
"analyze:browser": "BUNDLE_ANALYZE=browser next build",
|
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next",
|
|
"dev": "yarn copy-static && next dev --turbopack",
|
|
"dev:cron": "ts-node cron-tester.ts",
|
|
"dev-https": "NODE_TLS_REJECT_UNAUTHORIZED=0 next dev --experimental-https",
|
|
"dx": "yarn dev",
|
|
"test-codegen": "yarn playwright codegen http://localhost:3000",
|
|
"type-check": "tsc --pretty --noEmit",
|
|
"type-check:ci": "tsc-absolute --pretty --noEmit",
|
|
"sentry:release": "NODE_OPTIONS='--max-old-space-size=6144' node scripts/create-sentry-release.js",
|
|
"copy-static": "node scripts/copy-app-store-static.js && node scripts/copy-locales-static.js",
|
|
"build": "yarn copy-static && next build && yarn sentry:release",
|
|
"start": "next start",
|
|
"lint": "eslint . --ignore-path .gitignore",
|
|
"lint:fix": "eslint . --ext .ts,.js,.tsx,.jsx --fix",
|
|
"lint:report": "eslint . --format json --output-file ../../lint-results/web.json",
|
|
"check-changed-files": "ts-node scripts/ts-check-changed-files.ts",
|
|
"translate-locales": "ts-node scripts/check-missing-translations.ts",
|
|
"stripe:listen": "stripe listen --forward-to http://localhost:3000/api/stripe/webhook"
|
|
},
|
|
"engines": {
|
|
"yarn": "3.4.1"
|
|
},
|
|
"dependencies": {
|
|
"@boxyhq/saml-jackson": "1.42.0",
|
|
"@calcom/app-store": "*",
|
|
"@calcom/app-store-cli": "*",
|
|
"@calcom/dayjs": "*",
|
|
"@calcom/embed-core": "workspace:*",
|
|
"@calcom/embed-react": "workspace:*",
|
|
"@calcom/embed-snippet": "workspace:*",
|
|
"@calcom/features": "*",
|
|
"@calcom/lib": "*",
|
|
"@calcom/platform-enums": "*",
|
|
"@calcom/platform-types": "*",
|
|
"@calcom/prisma": "*",
|
|
"@calcom/trpc": "*",
|
|
"@calcom/tsconfig": "*",
|
|
"@calcom/ui": "*",
|
|
"@daily-co/daily-js": "^0.76.0",
|
|
"@daily-co/daily-react": "^0.22.0",
|
|
"@dub/analytics": "^0.0.27",
|
|
"@dub/embed-core": "^0.0.10",
|
|
"@dub/embed-react": "^0.0.10",
|
|
"@formkit/auto-animate": "1.0.0-beta.5",
|
|
"@glidejs/glide": "^3.5.2",
|
|
"@googleapis/admin": "^23.0.0",
|
|
"@googleapis/calendar": "^9.7.9",
|
|
"@googleapis/oauth2": "^1.0.7",
|
|
"@hookform/error-message": "^2.0.0",
|
|
"@hookform/resolvers": "^2.9.7",
|
|
"@lingo.dev/_sdk": "^0.7.27",
|
|
"@next-auth/prisma-adapter": "^1.0.4",
|
|
"@next/bundle-analyzer": "^13.1.6",
|
|
"@radix-ui/react-avatar": "^1.0.4",
|
|
"@radix-ui/react-collapsible": "^1.0.0",
|
|
"@radix-ui/react-dialog": "^1.0.4",
|
|
"@radix-ui/react-dropdown-menu": "^2.0.5",
|
|
"@radix-ui/react-hover-card": "^1.0.7",
|
|
"@radix-ui/react-id": "^1.0.0",
|
|
"@radix-ui/react-popover": "^1.0.2",
|
|
"@radix-ui/react-radio-group": "^1.0.0",
|
|
"@radix-ui/react-slider": "^1.0.0",
|
|
"@radix-ui/react-switch": "^1.0.0",
|
|
"@radix-ui/react-toggle-group": "^1.0.0",
|
|
"@radix-ui/react-tooltip": "^1.0.0",
|
|
"@sentry/nextjs": "^9.15.0",
|
|
"@stripe/react-stripe-js": "^1.10.0",
|
|
"@stripe/stripe-js": "^1.35.0",
|
|
"@tanstack/react-query": "^5.17.15",
|
|
"@tremor/react": "^2.11.0",
|
|
"@types/turndown": "^5.0.1",
|
|
"@unkey/ratelimit": "^0.1.1",
|
|
"@upstash/redis": "^1.21.0",
|
|
"@vercel/edge-config": "^0.1.1",
|
|
"@vercel/edge-functions-ui": "^0.2.1",
|
|
"@vercel/og": "^0.6.3",
|
|
"accept-language-parser": "^1.5.0",
|
|
"async": "^3.2.4",
|
|
"bcp-47-match": "^2.0.3",
|
|
"bcryptjs": "^2.4.3",
|
|
"classnames": "^2.3.1",
|
|
"dompurify": "^3.1.7",
|
|
"dotenv-cli": "^6.0.0",
|
|
"entities": "^4.4.0",
|
|
"gray-matter": "^4.0.3",
|
|
"handlebars": "^4.7.7",
|
|
"ical.js": "^1.4.0",
|
|
"ics": "^2.37.0",
|
|
"jose": "^4.13.1",
|
|
"jotai": "^2.12.2",
|
|
"jsdom": "^22.0.0",
|
|
"kbar": "^0.1.0-beta.36",
|
|
"libphonenumber-js": "^1.11.18",
|
|
"lodash": "^4.17.21",
|
|
"lottie-react": "^2.3.1",
|
|
"markdown-it": "^13.0.1",
|
|
"md5": "^2.3.0",
|
|
"memory-cache": "^0.2.0",
|
|
"micro": "^10.0.1",
|
|
"mime-types": "^2.1.35",
|
|
"next": "^15.3.0",
|
|
"next-auth": "^4.22.1",
|
|
"next-axiom": "^0.17.0",
|
|
"next-collect": "^0.2.1",
|
|
"next-i18next": "^15.4.2",
|
|
"next-seo": "^6.0.0",
|
|
"next-themes": "^0.2.0",
|
|
"nodemailer": "^6.7.8",
|
|
"nuqs": "^1.20.0",
|
|
"otplib": "^12.0.1",
|
|
"posthog-js": "^1.164.1",
|
|
"posthog-node": "^4.2.0",
|
|
"qrcode": "^1.5.1",
|
|
"raw-body": "^2.5.1",
|
|
"react": "^18.2.0",
|
|
"react-colorful": "^5.6.0",
|
|
"react-date-picker": "^8.3.6",
|
|
"react-digit-input": "^2.1.0",
|
|
"react-dom": "^18.2.0",
|
|
"react-easy-crop": "^3.5.2",
|
|
"react-hook-form": "^7.43.3",
|
|
"react-live-chat-loader": "^2.8.1",
|
|
"react-multi-email": "^0.5.3",
|
|
"react-phone-input-2": "^2.15.1",
|
|
"react-phone-number-input": "^3.2.7",
|
|
"react-schemaorg": "^2.0.0",
|
|
"react-select": "^5.7.0",
|
|
"react-timezone-select": "^1.4.0",
|
|
"react-turnstile": "^1.1.3",
|
|
"react-use-intercom": "1.5.1",
|
|
"recoil": "^0.7.7",
|
|
"remove-markdown": "^0.5.0",
|
|
"rrule": "^2.7.1",
|
|
"sanitize-html": "^2.10.0",
|
|
"schema-dts": "^1.1.0",
|
|
"sharp": "0.33.5",
|
|
"short-uuid": "^4.2.0",
|
|
"sonner": "^1.7.4",
|
|
"stripe": "^9.16.0",
|
|
"superjson": "1.9.1",
|
|
"tailwindcss-radix": "^2.6.0",
|
|
"turndown": "^7.1.3",
|
|
"uuid": "^8.3.2",
|
|
"zod": "^3.22.4"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/core": "^7.19.6",
|
|
"@calcom/config": "*",
|
|
"@calcom/types": "*",
|
|
"@microsoft/microsoft-graph-types-beta": "0.15.0-preview",
|
|
"@playwright/test": "^1.45.3",
|
|
"@testing-library/react": "^13.3.0",
|
|
"@types/accept-language-parser": "1.5.2",
|
|
"@types/async": "^3.2.15",
|
|
"@types/bcryptjs": "^2.4.2",
|
|
"@types/detect-port": "^1.3.2",
|
|
"@types/dompurify": "^3.0.5",
|
|
"@types/glidejs__glide": "^3.4.2",
|
|
"@types/jsdom": "^21.1.3",
|
|
"@types/lodash": "^4.14.182",
|
|
"@types/markdown-it": "^12.2.3",
|
|
"@types/md5": "^2.3.2",
|
|
"@types/memory-cache": "^0.2.2",
|
|
"@types/micro": "7.3.7",
|
|
"@types/mime-types": "^2.1.1",
|
|
"@types/module-alias": "^2.0.1",
|
|
"@types/nodemailer": "^6.4.5",
|
|
"@types/qrcode": "^1.4.3",
|
|
"@types/react": "18.0.26",
|
|
"@types/react-phone-number-input": "^3.0.14",
|
|
"@types/remove-markdown": "^0.3.1",
|
|
"@types/sanitize-html": "^2.9.0",
|
|
"@types/stripe": "^8.0.417",
|
|
"@types/uuid": "8.3.1",
|
|
"autoprefixer": "^10.4.12",
|
|
"cron": "^3.1.7",
|
|
"detect-port": "^1.3.0",
|
|
"env-cmd": "^10.1.0",
|
|
"glob": "^10.3.10",
|
|
"google-auth-library": "^9.15.0",
|
|
"module-alias": "^2.2.2",
|
|
"msw": "^0.42.3",
|
|
"node-html-parser": "^6.1.10",
|
|
"node-mocks-http": "^1.11.0",
|
|
"postcss": "^8.4.18",
|
|
"tailwindcss": "^3.3.3",
|
|
"tailwindcss-animate": "^1.0.6",
|
|
"ts-node": "^10.9.1",
|
|
"typescript": "^5.7.2"
|
|
},
|
|
"nextBundleAnalysis": {
|
|
"budget": 358400,
|
|
"budgetPercentIncreaseRed": 20,
|
|
"minimumChangeThreshold": 500,
|
|
"showDetails": true
|
|
}
|
|
}
|