Files
calendar/biome.json
T
MorganGitHubunknown <>Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
9ad8aa981a chore: deploy api v2 on vercel (#26735)
* 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>
2026-01-13 11:31:21 -03:00

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."
}
]
}
}
}
}
}
}
]
}