Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
71dc3a5
upgrate ts target
volnei Jan 2, 2026
0c77238
Merge branch 'main' into chore/updated-ts-target
volnei Jan 2, 2026
d75b98c
fix: add declare modifier to class properties for ES2022 target compa…
devin-ai-integration[bot] Jan 2, 2026
3003c6a
fix: add declare modifier to remaining class properties for ES2022 ta…
devin-ai-integration[bot] Jan 2, 2026
7292652
fix: use import type for SortOrderType to fix TS1272 errors
devin-ai-integration[bot] Jan 2, 2026
a02a6a0
Merge branch 'main' into chore/updated-ts-target
volnei Jan 2, 2026
d6cda53
fix: add module: CommonJS to platform/constants tsconfig for ES2022 c…
devin-ai-integration[bot] Jan 2, 2026
b8d35d0
fix: add module: CommonJS to platform packages for ES2022 compatibility
devin-ai-integration[bot] Jan 2, 2026
f4b8cfd
fix: move config-dependent field initializations to constructor for E…
devin-ai-integration[bot] Jan 2, 2026
038541a
fix: add null coalescing for config values in stripe.service.ts for E…
devin-ai-integration[bot] Jan 2, 2026
276f752
fix: move config-dependent field initializations to constructor for E…
devin-ai-integration[bot] Jan 2, 2026
488fc7c
fix: add declare modifier to FloatingButton dataset property for ES20…
devin-ai-integration[bot] Jan 2, 2026
1d3f0a7
Merge branch 'main' into chore/updated-ts-target
volnei Jan 2, 2026
d159218
fix: update RequiresAtLeastOnePropertyWhenNotDisabled validator for E…
devin-ai-integration[bot] Jan 2, 2026
7a9385a
refactor: remove explicit CommonJS module setting from platform packages
devin-ai-integration[bot] Jan 2, 2026
41fec39
Merge branch 'main' into chore/updated-ts-target
volnei Jan 2, 2026
d01dac4
feat: add type=module to platform packages for ESM migration (#26401)
volnei Jan 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions apps/api/v2/src/ee/calendars/services/gcal.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const CALENDAR_SCOPES = [

@Injectable()
export class GoogleCalendarService implements OAuthCalendarApp {
public readonly redirectUri = `${this.config.get("api.url")}/gcal/oauth/save`;
public readonly redirectUri: string;
private gcalResponseSchema = z.object({ client_id: z.string(), client_secret: z.string() });
private logger = new Logger("GcalService");

Expand All @@ -35,7 +35,9 @@ export class GoogleCalendarService implements OAuthCalendarApp {
private readonly calendarsService: CalendarsService,
private readonly tokensRepository: TokensRepository,
private readonly selectedCalendarsRepository: SelectedCalendarsRepository
) {}
) {
this.redirectUri = `${this.config.get("api.url") ?? ""}/gcal/oauth/save`;
}

async connect(
authorization: string,
Expand Down
6 changes: 4 additions & 2 deletions apps/api/v2/src/ee/calendars/services/outlook.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,17 @@ import {

@Injectable()
export class OutlookService implements OAuthCalendarApp {
private redirectUri = `${this.config.get("api.url")}/calendars/${OFFICE_365_CALENDAR}/save`;
private redirectUri: string;

constructor(
private readonly config: ConfigService,
private readonly calendarsService: CalendarsService,
private readonly credentialRepository: CredentialsRepository,
private readonly tokensRepository: TokensRepository,
private readonly selectedCalendarsRepository: SelectedCalendarsRepository
) {}
) {
this.redirectUri = `${this.config.get("api.url") ?? ""}/calendars/${OFFICE_365_CALENDAR}/save`;
}

async connect(
authorization: string,
Expand Down
7 changes: 4 additions & 3 deletions apps/api/v2/src/ee/gcal/gcal.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,16 @@ const CALENDAR_SCOPES = [
@ApiExcludeController(true)
export class GcalController {
private readonly logger = new Logger("Platform Gcal Provider");
private redirectUri: string;

constructor(
private readonly credentialRepository: CredentialsRepository,
private readonly config: ConfigService,
private readonly gcalService: GCalService,
private readonly calendarsService: CalendarsService
) {}

private redirectUri = `${this.config.get("api.url")}/gcal/oauth/save`;
) {
this.redirectUri = `${this.config.get("api.url") ?? ""}/gcal/oauth/save`;
}

@Get("/oauth/auth-url")
@HttpCode(HttpStatus.OK)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ const zoomAppKeysSchema = z.object({
@Injectable()
export class Office365VideoService {
private logger = new Logger("Office365VideoService");
private redirectUri = `${this.config.get("api.url")}/conferencing/${OFFICE_365_VIDEO}/oauth/callback`;
private redirectUri: string;
private scopes = ["OnlineMeetings.ReadWrite", "offline_access"];

constructor(
private readonly config: ConfigService,
private readonly appsRepository: AppsRepository,
private readonly credentialsRepository: CredentialsRepository
) {}
) {
this.redirectUri = `${this.config.get("api.url") ?? ""}/conferencing/${OFFICE_365_VIDEO}/oauth/callback`;
}

async getOffice365AppKeys() {
const app = await this.appsRepository.getAppBySlug(OFFICE_365_VIDEO);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@ const zoomAppKeysSchema = z.object({
@Injectable()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 HIGH - CommonJS require() import for qs-stringify
Agent: react

Category: quality

Description:
Using TypeScript's import = require() syntax which compiles to CommonJS. While valid, this pattern may cause issues in pure ESM contexts.

Suggestion:
Convert to ES Module import: 'import stringify from "qs-stringify";' if the package supports ESM.

Confidence: 75%
Rule: ts_use_es_modules_import_export
Review ID: 0d8706e4-cb4f-47ad-8896-885907bfafa3
Rate it 👍 or 👎 to improve future reviews | Powered by diffray

export class ZoomVideoService {
private logger = new Logger("ZoomVideoService");
private redirectUri = `${this.config.get("api.url")}/conferencing/${ZOOM}/oauth/callback`;
private redirectUri: string;

constructor(
private readonly config: ConfigService,
private readonly appsRepository: AppsRepository,
private readonly credentialsRepository: CredentialsRepository
) {}
) {
this.redirectUri = `${this.config.get("api.url") ?? ""}/conferencing/${ZOOM}/oauth/callback`;
}

async getZoomAppKeys() {
const app = await this.appsRepository.getAppBySlug(ZOOM);
Expand Down
12 changes: 8 additions & 4 deletions apps/api/v2/src/modules/stripe/stripe.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ export type OAuthCallbackState = {
@Injectable()
export class StripeService {
private stripe: Stripe;
private redirectUri = `${this.config.get("api.url")}/stripe/save`;
private webAppUrl = this.config.get("app.baseUrl");
private environment = this.config.get("env.type");
private teamMonthlyPriceId = this.config.get("stripe.teamMonthlyPriceId");
private redirectUri: string;
private webAppUrl: string;
private environment: string;
private teamMonthlyPriceId: string;

constructor(
configService: ConfigService<AppConfig>,
Expand All @@ -51,6 +51,10 @@ export class StripeService {
this.stripe = new Stripe(configService.get("stripe.apiKey", { infer: true }) ?? "", {
apiVersion: "2020-08-27",
});
this.redirectUri = `${this.config.get("api.url") ?? ""}/stripe/save`;
this.webAppUrl = this.config.get("app.baseUrl") ?? "";
this.environment = this.config.get("env.type") ?? "";
this.teamMonthlyPriceId = this.config.get("stripe.teamMonthlyPriceId") ?? "";
}

getStripe() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { Roles } from "@/modules/auth/decorators/roles/roles.decorator";
import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard";
import { RolesGuard } from "@/modules/auth/guards/roles/roles.guard";
import { UpdateOrgTeamDto } from "@/modules/organizations/teams/index/inputs/update-organization-team.input";
import { OrgTeamOutputResponseDto } from "@/modules/organizations/teams/index/outputs/organization-team.output";
import { CreateTeamInput } from "@/modules/teams/teams/inputs/create-team.input";
import { CreateTeamOutput } from "@/modules/teams/teams/outputs/teams/create-team.output";
import { GetTeamOutput } from "@/modules/teams/teams/outputs/teams/get-team.output";
Expand Down Expand Up @@ -97,7 +96,7 @@ export class TeamsController {
@Delete("/:teamId")
@ApiOperation({ summary: "Delete a team" })
@Roles("TEAM_OWNER")
async deleteTeam(@Param("teamId", ParseIntPipe) teamId: number): Promise<OrgTeamOutputResponseDto> {
async deleteTeam(@Param("teamId", ParseIntPipe) teamId: number): Promise<UpdateTeamOutput> {
const team = await this.teamsRepository.delete(teamId);
return {
status: SUCCESS_STATUS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ import { slugify } from "@calcom/platform-libraries";

@Injectable()
export class TeamsService {
private isTeamBillingEnabled = this.configService.get("stripe.isTeamBillingEnabled");
private isTeamBillingEnabled: boolean;

constructor(
private readonly teamsRepository: TeamsRepository,
private readonly teamsMembershipsRepository: TeamsMembershipsRepository,
private readonly stripeService: StripeService,
private readonly configService: ConfigService
) {}
) {
this.isTeamBillingEnabled = this.configService.get("stripe.isTeamBillingEnabled") ?? false;
}

async createTeam(input: CreateTeamInput, ownerId: number) {
const { autoAcceptCreator, ...teamData } = input;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ export class BaseFormWorkflowStepDto extends BaseWorkflowStepDto {
@ApiProperty({ description: "Action to perform", example: EMAIL_HOST, enum: STEP_ACTIONS })
@IsString()
@IsIn(FORM_ALLOWED_STEP_ACTIONS)
action!: FormAllowedStepAction;
declare action: FormAllowedStepAction;
}

export class WorkflowEmailHostStepDto extends BaseWorkflowStepDto {
Expand Down
2 changes: 1 addition & 1 deletion apps/api/v2/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "ES2021",
"target": "ES2022",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": ".",
Expand Down
3 changes: 3 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@
]
},
"javascript": {
"parser": {
"unsafeParameterDecoratorsEnabled": true
},
"formatter": {
"arrowParentheses": "always",
"bracketSpacing": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/app-store-cli/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"esModuleInterop": true,
"outDir": "dist",
"noEmitOnError": false,
"target": "ES2020",
"target": "ES2022",
"baseUrl": ".",
"resolveJsonModule": true
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export class FloatingButton extends HTMLElement {
}

// Button added here triggers the modal on click. So, it has to have the same data attributes as the modal target as well
dataset!: DOMStringMap & FloatingButtonDataset & ModalTargetDatasetProps;
declare dataset: DOMStringMap & FloatingButtonDataset & ModalTargetDatasetProps;
buttonWrapperStyleDisplay!: HTMLElement["style"]["display"];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 HIGH - Uninitialized property access on toggle callback
Agent: bugs

Category: bug

Description:
Property buttonWrapperStyleDisplay declared with ! assertion at line 46 but never initialized. When data-toggle-off callback triggers with off=false before first toggle-off=true event, this.buttonWrapperStyleDisplay is undefined at line 84.

Suggestion:
Initialize buttonWrapperStyleDisplay in constructor or provide fallback: buttonWrapperEl.style.display = off ? 'none' : (this.buttonWrapperStyleDisplay ?? 'block');

Confidence: 85%
Rule: ts_validate_nullable_before_use
Review ID: 0d8706e4-cb4f-47ad-8896-885907bfafa3
Rate it 👍 or 👎 to improve future reviews | Powered by diffray

// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
Expand Down
2 changes: 1 addition & 1 deletion packages/embeds/embed-core/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"extends": "@calcom/tsconfig/base.json",
"compilerOptions": {
"jsx": "react",
"target": "ES2015",
"target": "ES2022",
"module": "esnext",
"moduleResolution": "Node",
"baseUrl": ".",
Expand Down
2 changes: 1 addition & 1 deletion packages/embeds/embed-react/test/packaged/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"extends": "@calcom/tsconfig/base.json",
"compilerOptions": {
"module": "ESNext",
"target": "ES2015",
"target": "ES2022",
"moduleResolution": "Node",
"baseUrl": ".",
"declaration": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/embeds/embed-react/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"extends": "@calcom/tsconfig/base.json",
"compilerOptions": {
"module": "ESNext",
"target": "ES2015",
"target": "ES2022",
"moduleResolution": "Node",
"baseUrl": ".",
"declaration": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/embeds/embed-snippet/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"extends": "@calcom/tsconfig/base.json",
"compilerOptions": {
"jsx": "react",
"target": "ES2015",
"target": "ES2022",
"baseUrl": ".",
"module": "ESNext",
"declaration": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/lib/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"extends": "@calcom/tsconfig/base.json",
"compilerOptions": {
"target": "es5",
"target": "ES2022",
"jsx": "preserve",
"resolveJsonModule": true
},
Expand Down
2 changes: 1 addition & 1 deletion packages/lib/tsconfig.test.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"extends": "@calcom/tsconfig/base.json",
"compilerOptions": {
"esModuleInterop": true,
"target": "es5",
"target": "es2022",
"jsx": "react-jsx",
"resolveJsonModule": true
},
Expand Down
1 change: 1 addition & 0 deletions packages/platform/constants/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@calcom/platform-constants",
"version": "0.0.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"private": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/platform/constants/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"extends": "@calcom/tsconfig/base.json",
"compilerOptions": {
"target": "ES5",
"target": "ES2022",
"resolveJsonModule": true,
"baseUrl": "./",
"outDir": "./dist"
Expand Down
1 change: 1 addition & 0 deletions packages/platform/enums/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@calcom/platform-enums",
"version": "0.0.0",
"type": "module",
"main": "./dist/index.ts",
"types": "./dist/index.ts",
Comment on lines 5 to 6

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 HIGH - Incorrect main and types entry points with TS source files
Agent: Delegated (nodejs, performance, quality, react)

Category: bug

Description:
package.json specifies main and types pointing to './dist/index.ts' (TypeScript source file) instead of compiled output. However, exports field at lines 8-13 correctly points to .js and .d.ts.map files, which may override these.

Suggestion:
Update package.json entries: main: './dist/index.js', types: './dist/index.d.ts' for consistency with exports field.

Confidence: 75%
Review ID: 0d8706e4-cb4f-47ad-8896-885907bfafa3
Rate it 👍 or 👎 to improve future reviews | Powered by diffray

"private": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/platform/enums/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"extends": "@calcom/tsconfig/base.json",
"compilerOptions": {
"target": "ES5",
"target": "ES2022",
"resolveJsonModule": true,
"experimentalDecorators": true,
"baseUrl": "./",
Comment on lines 1 to 7

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 HIGH - Missing TypeScript project reference configuration
Agent: react

Category: quality

Description:
tsconfig.json is missing composite, declaration, and declarationMap settings. Package depends on @calcom/platform-constants (line 26 in package.json) but lacks proper project reference configuration for monorepo builds.

Suggestion:
Add to compilerOptions: "composite": true, "declaration": true, "declarationMap": true, and add 'references' array.

Confidence: 70%
Rule: ts_enable_ts_project_references_for_depende
Review ID: 0d8706e4-cb4f-47ad-8896-885907bfafa3
Rate it 👍 or 👎 to improve future reviews | Powered by diffray

Expand Down
2 changes: 1 addition & 1 deletion packages/platform/examples/base/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"compilerOptions": {
"target": "es5",
"target": "ES2022",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
Expand Down
12 changes: 8 additions & 4 deletions packages/platform/libraries/i18n.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
import { createInstance } from "i18next";
import type { i18n as I18nInstance } from "i18next";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { createRequire } from "node:module";

import { WEBAPP_URL } from "@calcom/lib/constants";
import { fetchWithTimeout } from "@calcom/lib/fetchWithTimeout";
import logger from "@calcom/lib/logger";

/* eslint-disable @typescript-eslint/no-require-imports */
const { i18n } = require("@calcom/config/next-i18next.config");
const path = require("node:path");
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const require = createRequire(import.meta.url);
const i18nConfig = require("@calcom/config/next-i18next.config");
const { i18n } = i18nConfig;
const translationsPath = path.resolve(__dirname, "../../../../apps/web/public/static/locales/en/common.json");
const englishTranslations: Record<string, string> = require(translationsPath);
Comment on lines +5 to 17

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 HIGH - Using createRequire for CommonJS require() in ESM context
Agent: react

Category: quality

Description:
File uses createRequire to load CommonJS modules (next-i18next.config and translation JSON). While valid in Node.js, this may cause issues if full ESM migration is desired.

Suggestion:
Consider using dynamic imports or ensuring config files support ESM. However, this pattern is sometimes necessary for JSON imports in ESM.

Confidence: 65%
Rule: ts_use_es_modules_import_export
Review ID: 0d8706e4-cb4f-47ad-8896-885907bfafa3
Rate it 👍 or 👎 to improve future reviews | Powered by diffray

/* eslint-enable @typescript-eslint/no-require-imports */

const translationCache = new Map<string, Record<string, string>>([["en-common", englishTranslations]]);
const i18nInstanceCache = new Map<string, I18nInstance>();
Comment on lines 19 to 20

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 HIGH - Module-level mutable caches without cleanup strategy
Agent: nodejs

Category: bug

Description:
Two module-level Maps (translationCache, i18nInstanceCache) accumulate data indefinitely. translationCache.set() called at line 55, i18nInstanceCache.set() at line 90. No size limits, no TTL, no cleanup mechanism.

Suggestion:
Implement cache management with LRU eviction, TTL-based expiration, or document maximum size limits. Use lru-cache package or add periodic cleanup mechanism.

Confidence: 85%
Rule: node_module_level_state
Review ID: 0d8706e4-cb4f-47ad-8896-885907bfafa3
Rate it 👍 or 👎 to improve future reviews | Powered by diffray

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 MEDIUM - Hardcoded locale transformation without configuration
Agent: quality

Category: quality

Description:
Locale transformation for 'zh' to 'zh-CN' is hardcoded. Should be configurable for maintainability.

Suggestion:
Define const LOCALE_TRANSFORMATIONS = { 'zh': 'zh-CN' } and use it.

Why this matters: Simpler code is easier to understand, test, and maintain. Reducing unnecessary abstraction lowers cognitive load and reduces places where bugs can hide. Standard library functions are well-tested and familiar to most developers.

Confidence: 60%
Rule: quality_prefer_simple_readable_code
Review ID: 0d8706e4-cb4f-47ad-8896-885907bfafa3
Rate it 👍 or 👎 to improve future reviews | Powered by diffray

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 MEDIUM - Potential null dereference without validation
Agent: typescript

Category: quality

Description:
Map.get() returns T | undefined even after has() check. TypeScript doesn't narrow the type after has() because of potential race conditions.

Suggestion:
Use: const cached = translationCache.get(cacheKey); if (cached) { return cached; }

Confidence: 70%
Rule: ts_strict_null_checks
Review ID: 0d8706e4-cb4f-47ad-8896-885907bfafa3
Rate it 👍 or 👎 to improve future reviews | Powered by diffray

Expand Down
3 changes: 1 addition & 2 deletions packages/platform/libraries/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
{
"extends": "@calcom/tsconfig/base.json",
"compilerOptions": {
"module": "CommonJS",
"target": "ES2021",
"target": "ES2022",
"jsx": "react-jsx",
"resolveJsonModule": true,
"types": ["jest"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ export class RecurringBookingOutput_2024_08_13 extends BookingOutput_2024_08_13
})
@IsObject()
@Expose()
bookingFieldsResponses!: Record<string, unknown>;
declare bookingFieldsResponses: Record<string, unknown>;
}

export class GetSeatedBookingOutput_2024_08_13 extends BaseBookingOutput_2024_08_13 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import { ApiPropertyOptional } from "@nestjs/swagger";
import { Transform } from "class-transformer";
import { IsEnum, IsNumber, IsOptional, IsString } from "class-validator";

import { SkipTakePagination, SortOrder, SortOrderType } from "../../../pagination/pagination.input";
import type { SortOrderType } from "../../../pagination/pagination.input";
import { SkipTakePagination, SortOrder } from "../../../pagination/pagination.input";

export class GetEventTypesQuery_2024_06_14 {
@IsOptional()
Expand Down
Loading
Loading