* chore: deploy api v2 on vercel * fix: replace console.log with logger.log in Vercel handler Address Cubic AI review feedback to use the logging framework consistently instead of console.log in the serverless handler. Co-Authored-By: unknown <> * chore: enable esModuleInterop * chore: deploy api v2 on vercel * chore: deploy api v2 on vercel * Update apps/api/v2/src/bootstrap.ts Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * fixup! Merge branch 'main' into deploy-api-v2-vercel * Revert "chore: deploy api v2 on vercel" This reverts commit 45c704a48e8396c46118069e1a25d8d7a5ee84be. * chore: deploy api v2 on vercel * fix: address Cubic AI review feedback in main.ts - Replace console.log with logger.log for consistent logging - Replace console.error with logger.error for consistent error logging - Restore comma: true option in qs.parse to support comma-separated arrays Co-Authored-By: unknown <> * fix: remove comma: true from qs.parse to maintain backward compatibility The main branch does not have comma: true in the query parser, so adding it would be a breaking change for existing API consumers. Removing it to maintain consistency with the current production behavior. Co-Authored-By: unknown <> * chore: deploy api v2 on vercel * small fixes * chore: add try catch around bootstrap.ts * fix: use NestJS Logger and throw error instead of process.exit in bootstrap - Replace console.error with logger.error for consistent logging - Replace process.exit(1) with throw error to avoid breaking Vercel serverless instance reuse Addresses Cubic AI review feedback (confidence 10/10 for both issues) Co-Authored-By: unknown <> * chore: try log redis url * fix: sanitize REDIS_URL logging to avoid exposing credentials Replace full REDIS_URL logging with a boolean check that only indicates whether Redis is configured, without exposing the connection string. Addresses Cubic AI review feedback (confidence 9/10) Co-Authored-By: unknown <> * chore: remove unnecessary logs * fix: prisma adapter * chore: handle USE_POOL platform libraries * fix: use JSON.stringify for Vite define value Wrap usePool with JSON.stringify() to properly serialize the string value. Without this, Vite injects the raw value as an identifier instead of a string literal, breaking runtime behavior. Addresses Cubic AI review feedback (confidence 9/10) Co-Authored-By: unknown <> * fix: docker file builds * fix: correct Dockerfile build order for platform packages Reorder builds to match the dependency graph from dev:build script: constants → enums → utils → types → libraries → trpc → api-v2 platform-libraries depends on the other platform packages, so they must be built first. Addresses Cubic AI review feedback (confidence 9/10) Co-Authored-By: unknown <> * fix: docker file builds * chore: add docker build * chore: upgrade nest/bull --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
389 lines
11 KiB
JSON
389 lines
11 KiB
JSON
{
|
|
"$schema": "https://biomejs.dev/schemas/2.3.10/schema.json",
|
|
"root": true,
|
|
"css": {
|
|
"parser": {
|
|
"tailwindDirectives": true
|
|
}
|
|
},
|
|
"formatter": {
|
|
"includes": [
|
|
"**/*",
|
|
"!packages/ui/components/icon/dynamicIconImports.tsx",
|
|
"!apps/api/v1/tests",
|
|
"!apps/api/v1/templates"
|
|
],
|
|
"lineWidth": 110,
|
|
"indentStyle": "space",
|
|
"indentWidth": 2,
|
|
"lineEnding": "lf"
|
|
},
|
|
"files": {
|
|
"includes": [
|
|
"**/*",
|
|
"!!**/node_modules",
|
|
"!!**/.next",
|
|
"!!**/.turbo",
|
|
"!!**/dist",
|
|
"!!**/build",
|
|
"!!**/public",
|
|
"!!**/*.d.ts",
|
|
"!!public",
|
|
"!!apps/web/public/embed",
|
|
"!!packages/prisma/zod",
|
|
"!!packages/prisma/enums",
|
|
"!!*.lock",
|
|
"!!*.log",
|
|
"!!.gitignore",
|
|
"!!.npmignore",
|
|
"!!.prettierignore",
|
|
"!!.eslintignore",
|
|
"!!.DS_Store",
|
|
"!!coverage",
|
|
"!!lint-results",
|
|
"!!test-results",
|
|
"!!packages/lib/raqb/resolveQueryValue.test.ts",
|
|
"!!packages/ui/components/editor/plugins/ToolbarPlugin.tsx",
|
|
"!!packages/embeds/embed-core/src/lib/domUtils.ts"
|
|
]
|
|
},
|
|
"javascript": {
|
|
"parser": {
|
|
"unsafeParameterDecoratorsEnabled": true
|
|
},
|
|
"formatter": {
|
|
"arrowParentheses": "always",
|
|
"bracketSpacing": true,
|
|
"bracketSameLine": true,
|
|
"quoteStyle": "double",
|
|
"jsxQuoteStyle": "double",
|
|
"semicolons": "always",
|
|
"trailingCommas": "es5"
|
|
}
|
|
},
|
|
"linter": {
|
|
"enabled": true,
|
|
"domains": {
|
|
"next": "recommended",
|
|
"react": "recommended"
|
|
},
|
|
"rules": {
|
|
"recommended": true,
|
|
"a11y": "off"
|
|
}
|
|
},
|
|
"overrides": [
|
|
{
|
|
"includes": ["docs/api-reference/v2/openapi.json"],
|
|
"linter": { "enabled": false },
|
|
"formatter": { "enabled": false }
|
|
},
|
|
{
|
|
"includes": ["**/*.tsx"],
|
|
"javascript": {
|
|
"jsxRuntime": "transparent"
|
|
}
|
|
},
|
|
{
|
|
"includes": ["apps/web/app/**/page.tsx", "apps/web/app/**/layout.tsx", "apps/web/app/pages/**/*.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noDefaultExport": "off"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["**/*"],
|
|
"linter": {
|
|
"rules": {
|
|
"nursery": {
|
|
"useQwikValidLexicalScope": "off",
|
|
"useExplicitType": "info",
|
|
"noReactForwardRef": "warn",
|
|
"noTernary": "info",
|
|
"noUnresolvedImports": "warn"
|
|
},
|
|
"correctness": {
|
|
"useImportExtensions": "warn",
|
|
"noProcessGlobal": "warn",
|
|
"useExhaustiveDependencies": "warn",
|
|
"noUnknownProperty": "warn",
|
|
"noUnreachable": "warn",
|
|
"noEmptyPattern": "warn",
|
|
"noSwitchDeclarations": "warn",
|
|
"useHookAtTopLevel": "warn",
|
|
"useJsxKeyInIterable": "warn",
|
|
"noUnsafeOptionalChaining": "warn"
|
|
},
|
|
"style": {
|
|
"useExportsLast": "warn",
|
|
"noProcessEnv": "warn",
|
|
"useNodejsImportProtocol": "error",
|
|
"noNestedTernary": "warn"
|
|
},
|
|
"complexity": {
|
|
"noExcessiveLinesPerFunction": "warn"
|
|
},
|
|
"performance": {
|
|
"noImgElement": "warn"
|
|
},
|
|
"suspicious": {
|
|
"noDoubleEquals": "warn",
|
|
"noAssignInExpressions": "warn",
|
|
"noExplicitAny": "warn",
|
|
"useIterableCallbackReturn": "warn",
|
|
"noImplicitAnyLet": "warn",
|
|
"noRedeclare": "warn",
|
|
"noControlCharactersInRegex": "warn",
|
|
"noArrayIndexKey": "warn",
|
|
"noShadowRestrictedNames": "warn",
|
|
"noAsyncPromiseExecutor": "warn"
|
|
},
|
|
"security": {
|
|
"noBlankTarget": "warn",
|
|
"noDangerouslySetInnerHtml": "warn"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["apps/api/v2/**/*.ts", "apps/api/v2/**/*.controller.ts"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"useImportType": "off"
|
|
},
|
|
"correctness": {
|
|
"noProcessGlobal": "off"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": [
|
|
"apps/api/v2/src/config/app.ts",
|
|
"apps/api/v2/src/main.ts",
|
|
"apps/api/v2/src/bootstrap.ts",
|
|
"apps/api/v2/src/config/env.ts",
|
|
"apps/api/v2/src/env.ts",
|
|
"apps/api/v2/test/setEnvVars.ts"
|
|
],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noProcessEnv": "off"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["**/*.test.ts", "**/*.test.tsx", "**/*.e2e-spec.ts"],
|
|
"linter": {
|
|
"rules": {
|
|
"complexity": {
|
|
"useArrowFunction": "off",
|
|
"noExcessiveLinesPerFunction": "off"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["packages/lib/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noRestrictedImports": {
|
|
"level": "error",
|
|
"options": {
|
|
"patterns": [
|
|
{
|
|
"group": ["../app-store/**"],
|
|
"message": "lib package should not import from app-store to avoid circular dependencies."
|
|
},
|
|
{
|
|
"group": ["../features/**"],
|
|
"message": "lib package should not import from features to avoid circular dependencies."
|
|
},
|
|
{
|
|
"group": ["../trpc/**"],
|
|
"message": "lib package should not import from trpc to avoid circular dependencies."
|
|
},
|
|
{
|
|
"group": ["@trpc/server"],
|
|
"message": "lib package should not import from @trpc/server to avoid circular dependencies."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["packages/app-store/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noRestrictedImports": {
|
|
"level": "error",
|
|
"options": {
|
|
"patterns": [
|
|
{
|
|
"group": ["../features/**"],
|
|
"message": "app-store package should not import from features to avoid circular dependencies."
|
|
},
|
|
{
|
|
"group": ["../trpc/**"],
|
|
"message": "app-store package should not import from trpc to avoid circular dependencies."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["packages/features/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noRestrictedImports": {
|
|
"level": "error",
|
|
"options": {
|
|
"patterns": [
|
|
{
|
|
"group": ["../trpc/**"],
|
|
"message": "features package should not import from trpc to avoid circular dependencies."
|
|
},
|
|
{
|
|
"group": ["@calcom/web", "@calcom/web/**"],
|
|
"message": "features package should not import from @calcom/web to avoid circular dependencies."
|
|
},
|
|
{
|
|
"group": ["../../apps/web/**"],
|
|
"message": "features package should not import from apps/web to avoid circular dependencies."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["packages/trpc/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noRestrictedImports": {
|
|
"level": "error",
|
|
"options": {
|
|
"patterns": [
|
|
{
|
|
"group": ["../apps/web/**"],
|
|
"message": "trpc package should not import from apps/web to avoid circular dependencies."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["packages/testing/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noRestrictedImports": {
|
|
"level": "error",
|
|
"options": {
|
|
"patterns": [
|
|
{
|
|
"group": ["@calcom/web", "@calcom/web/**"],
|
|
"message": "testing package should not import from @calcom/web to avoid circular dependencies."
|
|
},
|
|
{
|
|
"group": ["@calcom/features", "@calcom/features/**"],
|
|
"message": "testing package should not import from @calcom/features to avoid circular dependencies."
|
|
},
|
|
{
|
|
"group": ["../../apps/web/**"],
|
|
"message": "testing package should not import from apps/web to avoid circular dependencies."
|
|
},
|
|
{
|
|
"group": ["../features/**"],
|
|
"message": "testing package should not import from features to avoid circular dependencies."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["packages/platform/atoms/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noRestrictedImports": {
|
|
"level": "error",
|
|
"options": {
|
|
"patterns": [
|
|
{
|
|
"group": ["@calcom/trpc", "@calcom/trpc/**"],
|
|
"message": "atoms package should not import from @calcom/trpc."
|
|
},
|
|
{
|
|
"group": ["../../trpc", "../../trpc/**"],
|
|
"message": "atoms package should not import from trpc."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["apps/api/v2/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noRestrictedImports": {
|
|
"level": "error",
|
|
"options": {
|
|
"patterns": [
|
|
{
|
|
"group": [
|
|
"@calcom/*",
|
|
"@calcom/**",
|
|
"!@calcom/platform-constants",
|
|
"!@calcom/platform-constants/**",
|
|
"!@calcom/platform-enums",
|
|
"!@calcom/platform-enums/**",
|
|
"!@calcom/platform-libraries",
|
|
"!@calcom/platform-libraries/**",
|
|
"!@calcom/platform-types",
|
|
"!@calcom/platform-types/**",
|
|
"!@calcom/platform-utils",
|
|
"!@calcom/platform-utils/**",
|
|
"!@calcom/prisma",
|
|
"!@calcom/prisma/**"
|
|
],
|
|
"message": "API v2 should only import from @calcom/platform-constants, @calcom/platform-enums, @calcom/platform-libraries, @calcom/platform-types, @calcom/platform-utils, and @calcom/prisma. Other @calcom packages are not allowed."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|