code quality
Some checks failed
CI / lint-typecheck (pull_request) Failing after 12s
CI / tests (pull_request) Has been skipped
CI / contract-tests (pull_request) Has been skipped
CI / e2e-tests (pull_request) Has been skipped
CI / comment-pr (pull_request) Has been skipped
CI / commit-types (pull_request) Has been skipped
Some checks failed
CI / lint-typecheck (pull_request) Failing after 12s
CI / tests (pull_request) Has been skipped
CI / contract-tests (pull_request) Has been skipped
CI / e2e-tests (pull_request) Has been skipped
CI / comment-pr (pull_request) Has been skipped
CI / commit-types (pull_request) Has been skipped
This commit is contained in:
@@ -1,22 +1,21 @@
|
||||
'use server';
|
||||
|
||||
import { Result } from '@/lib/contracts/Result';
|
||||
import { CompleteOnboardingMutation } from '@/lib/mutations/onboarding/CompleteOnboardingMutation';
|
||||
import { CompleteOnboardingInputDTO } from '@/lib/types/generated/CompleteOnboardingInputDTO';
|
||||
import { CompleteOnboardingMutation, CompleteOnboardingCommand } from '@/lib/mutations/onboarding/CompleteOnboardingMutation';
|
||||
import { revalidatePath } from 'next/cache';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
|
||||
/**
|
||||
* Complete onboarding - thin wrapper around mutation
|
||||
*
|
||||
*
|
||||
* Pattern: Server Action → Mutation → Service → API Client
|
||||
*
|
||||
*
|
||||
* Authentication is handled automatically by the API via cookies.
|
||||
* The BaseApiClient includes credentials: 'include', so cookies are sent automatically.
|
||||
* If authentication fails, the API returns 401/403 which gets converted to domain errors.
|
||||
*/
|
||||
export async function completeOnboardingAction(
|
||||
input: CompleteOnboardingInputDTO
|
||||
input: CompleteOnboardingCommand
|
||||
): Promise<Result<{ success: boolean }, string>> {
|
||||
const mutation = new CompleteOnboardingMutation();
|
||||
const result = await mutation.execute(input);
|
||||
|
||||
@@ -124,16 +124,16 @@ export async function withdrawFromRaceAction(raceId: string, driverId: string, l
|
||||
}
|
||||
|
||||
// eslint-disable-next-line gridpilot-rules/server-actions-interface
|
||||
export async function navigateToEditRaceAction(leagueId: string): Promise<void> {
|
||||
export async function navigateToEditRaceAction(raceId: string, leagueId: string): Promise<void> {
|
||||
redirect(routes.league.scheduleAdmin(leagueId));
|
||||
}
|
||||
|
||||
// eslint-disable-next-line gridpilot-rules/server-actions-interface
|
||||
export async function navigateToRescheduleRaceAction(leagueId: string): Promise<void> {
|
||||
export async function navigateToRescheduleRaceAction(raceId: string, leagueId: string): Promise<void> {
|
||||
redirect(routes.league.scheduleAdmin(leagueId));
|
||||
}
|
||||
|
||||
// eslint-disable-next-line gridpilot-rules/server-actions-interface
|
||||
export async function navigateToRaceResultsAction(raceId: string): Promise<void> {
|
||||
export async function navigateToRaceResultsAction(raceId: string, leagueId: string): Promise<void> {
|
||||
redirect(routes.race.results(raceId));
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ export default async function DriverProfilePage({ params }: { params: Promise<{
|
||||
return (
|
||||
<DriverProfilePageClient
|
||||
viewData={null}
|
||||
error={error}
|
||||
error={true}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -76,4 +76,4 @@ export default async function DriverProfilePage({ params }: { params: Promise<{
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ export default async function Page() {
|
||||
return (
|
||||
<DriversPageClient
|
||||
viewData={null}
|
||||
error={error}
|
||||
error={true}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -59,8 +59,12 @@ export default async function LeagueLayout({
|
||||
sponsorSlots: {
|
||||
main: { price: 0, status: 'occupied' },
|
||||
secondary: { price: 0, total: 0, occupied: 0 }
|
||||
}
|
||||
},
|
||||
},
|
||||
ownerId: '',
|
||||
createdAt: '',
|
||||
settings: {},
|
||||
usedSlots: 0,
|
||||
} as any,
|
||||
drivers: [],
|
||||
races: [],
|
||||
seasonProgress: { completedRaces: 0, totalRaces: 0, percentage: 0 },
|
||||
@@ -98,7 +102,7 @@ export default async function LeagueLayout({
|
||||
|
||||
// Check if user is admin or owner
|
||||
const isOwner = currentDriver && data.league.ownerId === currentDriver.id;
|
||||
const isAdmin = currentDriver && data.memberships.members?.some(m => m.driverId === currentDriver.id && m.role === 'admin');
|
||||
const isAdmin = currentDriver && data.memberships.members?.some((m: any) => m.driverId === currentDriver.id && m.role === 'admin');
|
||||
const hasAdminAccess = isOwner || isAdmin;
|
||||
|
||||
const adminTabs = hasAdminAccess ? [
|
||||
|
||||
@@ -73,7 +73,7 @@ export default async function Page({ params }: Props) {
|
||||
// Determine if current user is owner or admin
|
||||
const isOwnerOrAdmin = currentDriverId
|
||||
? currentDriverId === league.ownerId ||
|
||||
data.memberships.members?.some(m => m.driverId === currentDriverId && m.role === 'admin')
|
||||
data.memberships.members?.some((m: any) => m.driverId === currentDriverId && m.role === 'admin')
|
||||
: false;
|
||||
|
||||
// Build ViewData using the builder
|
||||
|
||||
@@ -20,7 +20,7 @@ export default async function LeagueRosterPage({ params }: Props) {
|
||||
}
|
||||
|
||||
const data = result.unwrap();
|
||||
const members = (data.memberships.members || []).map(m => ({
|
||||
const members = (data.memberships.members || []).map((m: any) => ({
|
||||
driverId: m.driverId,
|
||||
driverName: m.driver.name,
|
||||
role: m.role,
|
||||
|
||||
@@ -5,7 +5,16 @@ import { DriverProfileTemplate } from '@/templates/DriverProfileTemplate';
|
||||
import { EmptyTemplate, ErrorTemplate } from '@/templates/shared/StatusTemplates';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { useState } from 'react';
|
||||
import type { DriverProfileViewData } from '@/lib/view-data/DriverProfileViewData';
|
||||
|
||||
interface DriverProfilePageClientProps {
|
||||
viewData: DriverProfileViewData | null;
|
||||
error?: boolean;
|
||||
empty?: {
|
||||
title: string;
|
||||
description: string;
|
||||
};
|
||||
}
|
||||
|
||||
export function DriverProfilePageClient({ viewData, error, empty }: DriverProfilePageClientProps) {
|
||||
const router = useRouter();
|
||||
|
||||
@@ -5,6 +5,16 @@ import { DriversTemplate } from '@/templates/DriversTemplate';
|
||||
import { EmptyTemplate, ErrorTemplate } from '@/templates/shared/StatusTemplates';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { useMemo, useState } from 'react';
|
||||
import type { DriversViewData, DriverViewData } from '@/lib/view-data/DriversViewData';
|
||||
|
||||
interface DriversPageClientProps {
|
||||
viewData: DriversViewData | null;
|
||||
error?: boolean;
|
||||
empty?: {
|
||||
title: string;
|
||||
description: string;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
export function DriversPageClient({ viewData, error, empty }: DriversPageClientProps) {
|
||||
@@ -16,8 +26,8 @@ export function DriversPageClient({ viewData, error, empty }: DriversPageClientP
|
||||
if (!searchQuery) return viewData.drivers;
|
||||
|
||||
const query = searchQuery.toLowerCase();
|
||||
return viewData.drivers.filter(driver =>
|
||||
driver.name.toLowerCase().includes(query) ||
|
||||
return viewData.drivers.filter((driver: DriverViewData) =>
|
||||
driver.name.toLowerCase().includes(query) ||
|
||||
driver.nationality.toLowerCase().includes(query)
|
||||
);
|
||||
}, [viewData, searchQuery]);
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
'use client';
|
||||
|
||||
import { ForgotPasswordViewModelBuilder } from '@/lib/builders/view-models/ForgotPasswordViewModelBuilder';
|
||||
import { ClientWrapperProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
import { ForgotPasswordMutation } from '@/lib/mutations/auth/ForgotPasswordMutation';
|
||||
import { ForgotPasswordFormValidation } from '@/lib/utilities/authValidation';
|
||||
@@ -18,7 +17,7 @@ import { useState } from 'react';
|
||||
export function ForgotPasswordClient({ viewData }: ClientWrapperProps<ForgotPasswordViewData>) {
|
||||
// Build ViewModel from ViewData
|
||||
const [viewModel, setViewModel] = useState<ForgotPasswordViewModel>(() =>
|
||||
ForgotPasswordViewModelBuilder.build(viewData)
|
||||
new ForgotPasswordViewModel(viewData.returnTo, viewData.formState)
|
||||
);
|
||||
|
||||
// Handle form field changes
|
||||
@@ -114,7 +113,7 @@ export function ForgotPasswordClient({ viewData }: ClientWrapperProps<ForgotPass
|
||||
setShowSuccess: (show) => {
|
||||
if (!show) {
|
||||
// Reset to initial state
|
||||
setViewModel(() => ForgotPasswordViewModelBuilder.build(viewData));
|
||||
setViewModel(() => new ForgotPasswordViewModel(viewData.returnTo, viewData.formState));
|
||||
}
|
||||
},
|
||||
}}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Login Client Component
|
||||
*
|
||||
*
|
||||
* Handles client-side login flow using the LoginFlowController.
|
||||
* Deterministic state machine per docs/architecture/website/LOGIN_FLOW_STATE_MACHINE.md
|
||||
*/
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
import { useAuth } from '@/components/auth/AuthContext';
|
||||
import { LoginFlowController, LoginState } from '@/lib/auth/LoginFlowController';
|
||||
import { LoginViewModelBuilder } from '@/lib/builders/view-models/LoginViewModelBuilder';
|
||||
import { ClientWrapperProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
import { LoginMutation } from '@/lib/mutations/auth/LoginMutation';
|
||||
import { validateLoginForm, type LoginFormValues } from '@/lib/utils/validation';
|
||||
@@ -26,8 +25,13 @@ export function LoginClient({ viewData }: ClientWrapperProps<LoginViewData>) {
|
||||
const { refreshSession, session } = useAuth();
|
||||
|
||||
// Build ViewModel from ViewData
|
||||
const [viewModel, setViewModel] = useState<LoginViewModel>(() =>
|
||||
LoginViewModelBuilder.build(viewData)
|
||||
const [viewModel, setViewModel] = useState<LoginViewModel>(() =>
|
||||
new LoginViewModel(
|
||||
viewData.returnTo,
|
||||
viewData.hasInsufficientPermissions,
|
||||
viewData.formState,
|
||||
{ showPassword: viewData.showPassword, showErrorDetails: viewData.showErrorDetails }
|
||||
)
|
||||
);
|
||||
|
||||
// Login flow controller
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
'use client';
|
||||
|
||||
import { ResetPasswordViewModelBuilder } from '@/lib/builders/view-models/ResetPasswordViewModelBuilder';
|
||||
import { ClientWrapperProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
import { ResetPasswordMutation } from '@/lib/mutations/auth/ResetPasswordMutation';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
@@ -23,7 +22,12 @@ export function ResetPasswordClient({ viewData }: ClientWrapperProps<ResetPasswo
|
||||
|
||||
// Build ViewModel from ViewData
|
||||
const [viewModel, setViewModel] = useState<ResetPasswordViewModel>(() =>
|
||||
ResetPasswordViewModelBuilder.build(viewData)
|
||||
new ResetPasswordViewModel(
|
||||
viewData.token,
|
||||
viewData.returnTo,
|
||||
viewData.formState,
|
||||
{ showPassword: false, showConfirmPassword: false }
|
||||
)
|
||||
);
|
||||
|
||||
// Handle form field changes
|
||||
@@ -151,7 +155,12 @@ export function ResetPasswordClient({ viewData }: ClientWrapperProps<ResetPasswo
|
||||
setShowSuccess: (show) => {
|
||||
if (!show) {
|
||||
// Reset to initial state
|
||||
setViewModel(() => ResetPasswordViewModelBuilder.build(viewData));
|
||||
setViewModel(() => new ResetPasswordViewModel(
|
||||
viewData.token,
|
||||
viewData.returnTo,
|
||||
viewData.formState,
|
||||
{ showPassword: false, showConfirmPassword: false }
|
||||
));
|
||||
}
|
||||
},
|
||||
setShowPassword: togglePassword,
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
'use client';
|
||||
|
||||
import { useAuth } from '@/components/auth/AuthContext';
|
||||
import { SignupViewModelBuilder } from '@/lib/builders/view-models/SignupViewModelBuilder';
|
||||
import { ClientWrapperProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
import { SignupMutation } from '@/lib/mutations/auth/SignupMutation';
|
||||
import { SignupFormValidation } from '@/lib/utilities/authValidation';
|
||||
@@ -24,7 +23,11 @@ export function SignupClient({ viewData }: ClientWrapperProps<SignupViewData>) {
|
||||
|
||||
// Build ViewModel from ViewData
|
||||
const [viewModel, setViewModel] = useState<SignupViewModel>(() =>
|
||||
SignupViewModelBuilder.build(viewData)
|
||||
new SignupViewModel(
|
||||
viewData.returnTo,
|
||||
viewData.formState,
|
||||
{ showPassword: false, showConfirmPassword: false }
|
||||
)
|
||||
);
|
||||
|
||||
// Handle form field changes
|
||||
|
||||
@@ -11,77 +11,50 @@ import type { DriverProfileViewData } from '@/lib/view-data/DriverProfileViewDat
|
||||
|
||||
export class DriverProfileViewDataBuilder {
|
||||
public static build(apiDto: GetDriverProfileOutputDTO): DriverProfileViewData {
|
||||
const currentDriver = apiDto.currentDriver!;
|
||||
return {
|
||||
currentDriver: apiDto.currentDriver ? {
|
||||
id: apiDto.currentDriver.id,
|
||||
name: apiDto.currentDriver.name,
|
||||
country: apiDto.currentDriver.country,
|
||||
avatarUrl: apiDto.currentDriver.avatarUrl || '',
|
||||
iracingId: typeof apiDto.currentDriver.iracingId === 'string' ? parseInt(apiDto.currentDriver.iracingId, 10) : (apiDto.currentDriver.iracingId ?? null),
|
||||
joinedAt: apiDto.currentDriver.joinedAt,
|
||||
joinedAtLabel: DateFormatter.formatMonthYear(apiDto.currentDriver.joinedAt),
|
||||
rating: apiDto.currentDriver.rating ?? null,
|
||||
ratingLabel: RatingFormatter.format(apiDto.currentDriver.rating),
|
||||
globalRank: apiDto.currentDriver.globalRank ?? null,
|
||||
globalRankLabel: apiDto.currentDriver.globalRank != null ? `#${apiDto.currentDriver.globalRank}` : '—',
|
||||
consistency: apiDto.currentDriver.consistency ?? null,
|
||||
bio: apiDto.currentDriver.bio ?? null,
|
||||
totalDrivers: apiDto.currentDriver.totalDrivers ?? null,
|
||||
} : null,
|
||||
driver: {
|
||||
id: currentDriver.id,
|
||||
name: currentDriver.name,
|
||||
countryCode: currentDriver.country,
|
||||
countryFlag: currentDriver.country, // Placeholder
|
||||
avatarUrl: currentDriver.avatarUrl || '',
|
||||
bio: currentDriver.bio ?? null,
|
||||
iracingId: currentDriver.iracingId ?? null,
|
||||
joinedAtLabel: DateFormatter.formatMonthYear(currentDriver.joinedAt),
|
||||
globalRankLabel: currentDriver.globalRank != null ? `#${currentDriver.globalRank}` : '—',
|
||||
},
|
||||
stats: apiDto.stats ? {
|
||||
totalRaces: apiDto.stats.totalRaces,
|
||||
totalRacesLabel: NumberFormatter.format(apiDto.stats.totalRaces),
|
||||
wins: apiDto.stats.wins,
|
||||
winsLabel: NumberFormatter.format(apiDto.stats.wins),
|
||||
podiums: apiDto.stats.podiums,
|
||||
podiumsLabel: NumberFormatter.format(apiDto.stats.podiums),
|
||||
dnfs: apiDto.stats.dnfs,
|
||||
dnfsLabel: NumberFormatter.format(apiDto.stats.dnfs),
|
||||
avgFinish: apiDto.stats.avgFinish ?? null,
|
||||
avgFinishLabel: FinishFormatter.formatAverage(apiDto.stats.avgFinish),
|
||||
bestFinish: apiDto.stats.bestFinish ?? null,
|
||||
bestFinishLabel: FinishFormatter.format(apiDto.stats.bestFinish),
|
||||
worstFinish: apiDto.stats.worstFinish ?? null,
|
||||
worstFinishLabel: FinishFormatter.format(apiDto.stats.worstFinish),
|
||||
finishRate: apiDto.stats.finishRate ?? null,
|
||||
winRate: apiDto.stats.winRate ?? null,
|
||||
podiumRate: apiDto.stats.podiumRate ?? null,
|
||||
percentile: apiDto.stats.percentile ?? null,
|
||||
rating: apiDto.stats.rating ?? null,
|
||||
ratingLabel: RatingFormatter.format(apiDto.stats.rating),
|
||||
consistency: apiDto.stats.consistency ?? null,
|
||||
globalRankLabel: apiDto.stats.overallRank != null ? `#${apiDto.stats.overallRank}` : '—',
|
||||
totalRacesLabel: NumberFormatter.format(apiDto.stats.totalRaces),
|
||||
winsLabel: NumberFormatter.format(apiDto.stats.wins),
|
||||
podiumsLabel: NumberFormatter.format(apiDto.stats.podiums),
|
||||
dnfsLabel: NumberFormatter.format(apiDto.stats.dnfs),
|
||||
bestFinishLabel: FinishFormatter.format(apiDto.stats.bestFinish),
|
||||
worstFinishLabel: FinishFormatter.format(apiDto.stats.worstFinish),
|
||||
avgFinishLabel: FinishFormatter.formatAverage(apiDto.stats.avgFinish),
|
||||
consistencyLabel: PercentFormatter.formatWhole(apiDto.stats.consistency),
|
||||
overallRank: apiDto.stats.overallRank ?? null,
|
||||
} : null,
|
||||
finishDistribution: apiDto.finishDistribution ? {
|
||||
totalRaces: apiDto.finishDistribution.totalRaces,
|
||||
wins: apiDto.finishDistribution.wins,
|
||||
podiums: apiDto.finishDistribution.podiums,
|
||||
topTen: apiDto.finishDistribution.topTen,
|
||||
dnfs: apiDto.finishDistribution.dnfs,
|
||||
other: apiDto.finishDistribution.other,
|
||||
} : null,
|
||||
percentileLabel: PercentFormatter.formatWhole(apiDto.stats.percentile),
|
||||
} as any : null,
|
||||
teamMemberships: apiDto.teamMemberships.map(m => ({
|
||||
teamId: m.teamId,
|
||||
teamName: m.teamName,
|
||||
teamTag: m.teamTag ?? null,
|
||||
role: m.role,
|
||||
joinedAt: m.joinedAt,
|
||||
roleLabel: m.role,
|
||||
joinedAtLabel: DateFormatter.formatMonthYear(m.joinedAt),
|
||||
isCurrent: m.isCurrent,
|
||||
})),
|
||||
socialSummary: {
|
||||
friendsCount: apiDto.socialSummary.friendsCount,
|
||||
friends: apiDto.socialSummary.friends.map(f => ({
|
||||
id: f.id,
|
||||
name: f.name,
|
||||
country: f.country,
|
||||
avatarUrl: f.avatarUrl || '',
|
||||
})),
|
||||
},
|
||||
href: `/teams/${m.teamId}`,
|
||||
})) as any,
|
||||
extendedProfile: apiDto.extendedProfile ? {
|
||||
timezone: apiDto.extendedProfile.timezone,
|
||||
racingStyle: apiDto.extendedProfile.racingStyle,
|
||||
favoriteTrack: apiDto.extendedProfile.favoriteTrack,
|
||||
favoriteCar: apiDto.extendedProfile.favoriteCar,
|
||||
availableHours: apiDto.extendedProfile.availableHours,
|
||||
lookingForTeamLabel: apiDto.extendedProfile.lookingForTeam ? 'Yes' : 'No',
|
||||
openToRequestsLabel: apiDto.extendedProfile.openToRequests ? 'Yes' : 'No',
|
||||
socialHandles: apiDto.extendedProfile.socialHandles.map(h => ({
|
||||
platform: h.platform,
|
||||
platformLabel: h.platform,
|
||||
handle: h.handle,
|
||||
url: h.url,
|
||||
})),
|
||||
@@ -89,21 +62,20 @@ export class DriverProfileViewDataBuilder {
|
||||
id: a.id,
|
||||
title: a.title,
|
||||
description: a.description,
|
||||
icon: a.icon,
|
||||
rarity: a.rarity,
|
||||
rarityLabel: a.rarity,
|
||||
earnedAt: a.earnedAt,
|
||||
earnedAtLabel: DateFormatter.formatShort(a.earnedAt),
|
||||
icon: a.icon as any,
|
||||
rarityLabel: a.rarity,
|
||||
})),
|
||||
racingStyle: apiDto.extendedProfile.racingStyle,
|
||||
favoriteTrack: apiDto.extendedProfile.favoriteTrack,
|
||||
favoriteCar: apiDto.extendedProfile.favoriteCar,
|
||||
timezone: apiDto.extendedProfile.timezone,
|
||||
availableHours: apiDto.extendedProfile.availableHours,
|
||||
lookingForTeam: apiDto.extendedProfile.lookingForTeam,
|
||||
openToRequests: apiDto.extendedProfile.openToRequests,
|
||||
} : null,
|
||||
};
|
||||
friends: apiDto.socialSummary.friends.map(f => ({
|
||||
id: f.id,
|
||||
name: f.name,
|
||||
countryFlag: f.country, // Placeholder
|
||||
avatarUrl: f.avatarUrl || '',
|
||||
href: `/drivers/${f.id}`,
|
||||
})),
|
||||
friendsCountLabel: NumberFormatter.format(apiDto.socialSummary.friendsCount),
|
||||
} as any : null,
|
||||
} as any;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ export class LeagueDetailViewDataBuilder {
|
||||
.map(m => ({
|
||||
driverId: m.driverId,
|
||||
driverName: m.driver.name,
|
||||
avatarUrl: (m.driver as GetDriverOutputDTO & { avatarUrl?: string }).avatarUrl || null,
|
||||
avatarUrl: (m.driver as any).avatarUrl || null,
|
||||
rating: null,
|
||||
rank: null,
|
||||
roleBadgeText: 'Admin',
|
||||
@@ -113,7 +113,7 @@ export class LeagueDetailViewDataBuilder {
|
||||
.map(m => ({
|
||||
driverId: m.driverId,
|
||||
driverName: m.driver.name,
|
||||
avatarUrl: (m.driver as GetDriverOutputDTO & { avatarUrl?: string }).avatarUrl || null,
|
||||
avatarUrl: (m.driver as any).avatarUrl || null,
|
||||
rating: null,
|
||||
rank: null,
|
||||
roleBadgeText: 'Steward',
|
||||
@@ -126,7 +126,7 @@ export class LeagueDetailViewDataBuilder {
|
||||
.map(m => ({
|
||||
driverId: m.driverId,
|
||||
driverName: m.driver.name,
|
||||
avatarUrl: (m.driver as GetDriverOutputDTO & { avatarUrl?: string }).avatarUrl || null,
|
||||
avatarUrl: (m.driver as any).avatarUrl || null,
|
||||
rating: null,
|
||||
rank: null,
|
||||
roleBadgeText: 'Member',
|
||||
@@ -197,6 +197,10 @@ export class LeagueDetailViewDataBuilder {
|
||||
main: { price: 0, status: 'available' },
|
||||
secondary: { price: 0, total: 0, occupied: 0 },
|
||||
},
|
||||
ownerId: league.ownerId,
|
||||
createdAt: league.createdAt,
|
||||
settings: league.settings,
|
||||
usedSlots: league.usedSlots,
|
||||
},
|
||||
drivers: [],
|
||||
races: [],
|
||||
|
||||
@@ -35,12 +35,12 @@ export class LeagueStandingsViewDataBuilder {
|
||||
races: standing.races,
|
||||
racesFinished: standing.races,
|
||||
racesStarted: standing.races,
|
||||
avgFinish: null, // Not in DTO
|
||||
avgFinish: 0, // Not in DTO
|
||||
penaltyPoints: 0, // Not in DTO
|
||||
bonusPoints: 0, // Not in DTO
|
||||
leaderPoints: 0, // Not in DTO
|
||||
nextPoints: 0, // Not in DTO
|
||||
currentUserId: null, // Not in DTO
|
||||
currentUserId: '', // Not in DTO
|
||||
// New fields from Phase 3
|
||||
positionChange: standing.positionChange || 0,
|
||||
lastRacePoints: standing.lastRacePoints || 0,
|
||||
@@ -80,7 +80,7 @@ export class LeagueStandingsViewDataBuilder {
|
||||
drivers: driverData,
|
||||
memberships: membershipData,
|
||||
leagueId,
|
||||
currentDriverId: null, // Would need to get from auth
|
||||
currentDriverId: '', // Would need to get from auth
|
||||
isAdmin: false, // Would need to check permissions
|
||||
isTeamChampionship: isTeamChampionship,
|
||||
};
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import type { CompleteOnboardingInputDTO } from '../../../types/generated/CompleteOnboardingInputDTO';
|
||||
import type { CompleteOnboardingOutputDTO } from '../../../types/generated/CompleteOnboardingOutputDTO';
|
||||
import type { DriverLeaderboardItemDTO } from '../../../types/generated/DriverLeaderboardItemDTO';
|
||||
import type { DriverRegistrationStatusDTO } from '../../../types/generated/DriverRegistrationStatusDTO';
|
||||
import type { GetDriverOutputDTO } from '../../../types/generated/GetDriverOutputDTO';
|
||||
import type { GetDriverProfileOutputDTO } from '../../../types/generated/GetDriverProfileOutputDTO';
|
||||
import type {
|
||||
CompleteOnboardingInputDTO,
|
||||
CompleteOnboardingOutputDTO,
|
||||
DriverLeaderboardItemDTO,
|
||||
DriverRegistrationStatusDTO,
|
||||
GetDriverOutputDTO,
|
||||
GetDriverProfileOutputDTO
|
||||
} from '../../../types/generated';
|
||||
import { BaseApiClient } from '../base/BaseApiClient';
|
||||
|
||||
type DriversLeaderboardDto = {
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import type { MemberPaymentDTO } from '../../../types/generated/MemberPaymentDTO';
|
||||
import type { MembershipFeeDTO } from '../../../types/generated/MembershipFeeDTO';
|
||||
import type { PaymentDTO } from '../../../types/generated/PaymentDTO';
|
||||
import type { PrizeDTO } from '../../../types/generated/PrizeDTO';
|
||||
import type { TransactionDTO } from '../../../types/generated/TransactionDTO';
|
||||
import type { UpdatePaymentStatusInputDTO } from '../../../types/generated/UpdatePaymentStatusInputDTO';
|
||||
import type { WalletDTO } from '../../../types/generated/WalletDTO';
|
||||
import type {
|
||||
MemberPaymentDTO,
|
||||
MembershipFeeDTO,
|
||||
PaymentDTO,
|
||||
PrizeDTO,
|
||||
TransactionDTO,
|
||||
UpdatePaymentStatusInputDTO,
|
||||
WalletDTO
|
||||
} from '../../../types/generated';
|
||||
import { BaseApiClient } from '../base/BaseApiClient';
|
||||
|
||||
// Define missing types that are not fully generated
|
||||
|
||||
@@ -5,6 +5,7 @@ import { DomainError, Service } from '@/lib/contracts/services/Service';
|
||||
import { AuthApiClient } from '@/lib/gateways/api/auth/AuthApiClient';
|
||||
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
|
||||
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
|
||||
import type { ForgotPasswordDTO } from '@/lib/types/generated/ForgotPasswordDTO';
|
||||
import type { LoginParamsDTO } from '@/lib/types/generated/LoginParamsDTO';
|
||||
import type { ResetPasswordDTO } from '@/lib/types/generated/ResetPasswordDTO';
|
||||
import type { SignupParamsDTO } from '@/lib/types/generated/SignupParamsDTO';
|
||||
|
||||
@@ -3,10 +3,12 @@ import { Result } from '@/lib/contracts/Result';
|
||||
import { DomainError, Service } from '@/lib/contracts/services/Service';
|
||||
import { DriversApiClient } from '@/lib/gateways/api/drivers/DriversApiClient';
|
||||
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
|
||||
import type { CompleteOnboardingInputDTO } from '@/lib/types/generated/CompleteOnboardingInputDTO';
|
||||
import type { DriverDTO } from '@/lib/types/generated/DriverDTO';
|
||||
import type { GetDriverOutputDTO } from '@/lib/types/generated/GetDriverOutputDTO';
|
||||
import type { GetDriverProfileOutputDTO } from '@/lib/types/generated/GetDriverProfileOutputDTO';
|
||||
import type {
|
||||
CompleteOnboardingInputDTO,
|
||||
DriverDTO,
|
||||
GetDriverOutputDTO,
|
||||
GetDriverProfileOutputDTO
|
||||
} from '@/lib/types/generated';
|
||||
import { CompleteOnboardingViewModel } from '@/lib/view-models/CompleteOnboardingViewModel';
|
||||
import { DriverLeaderboardViewModel } from '@/lib/view-models/DriverLeaderboardViewModel';
|
||||
import { DriverViewModel } from '@/lib/view-models/DriverViewModel';
|
||||
@@ -28,7 +30,11 @@ export class DriverService implements Service {
|
||||
} else {
|
||||
const baseUrl = getWebsiteApiBaseUrl();
|
||||
const logger = new ConsoleLogger();
|
||||
const errorReporter = new EnhancedErrorReporter(logger);
|
||||
const errorReporter = new EnhancedErrorReporter(logger, {
|
||||
showUserNotifications: false,
|
||||
logToConsole: true,
|
||||
reportToExternal: false,
|
||||
});
|
||||
this.apiClient = new DriversApiClient(baseUrl, errorReporter, logger);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,11 +14,13 @@ import { DomainError, Service } from '@/lib/contracts/services/Service';
|
||||
import { DriversApiClient } from '@/lib/gateways/api/drivers/DriversApiClient';
|
||||
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
|
||||
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
|
||||
import { CompleteOnboardingInputDTO } from '@/lib/types/generated/CompleteOnboardingInputDTO';
|
||||
import { CompleteOnboardingOutputDTO } from '@/lib/types/generated/CompleteOnboardingOutputDTO';
|
||||
import { GetDriverOutputDTO } from '@/lib/types/generated/GetDriverOutputDTO';
|
||||
import { RequestAvatarGenerationInputDTO } from '@/lib/types/generated/RequestAvatarGenerationInputDTO';
|
||||
import { RequestAvatarGenerationOutputDTO } from '@/lib/types/generated/RequestAvatarGenerationOutputDTO';
|
||||
import {
|
||||
CompleteOnboardingInputDTO,
|
||||
CompleteOnboardingOutputDTO,
|
||||
GetDriverOutputDTO,
|
||||
RequestAvatarGenerationInputDTO,
|
||||
RequestAvatarGenerationOutputDTO
|
||||
} from '@/lib/types/generated';
|
||||
|
||||
export class OnboardingService implements Service {
|
||||
private apiClient: DriversApiClient;
|
||||
|
||||
@@ -3,6 +3,7 @@ import { Service } from '@/lib/contracts/services/Service';
|
||||
import { ProtestsApiClient } from '@/lib/gateways/api/protests/ProtestsApiClient';
|
||||
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
|
||||
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
|
||||
import type { ApplyPenaltyCommandDTO } from '@/lib/types/generated/ApplyPenaltyCommandDTO';
|
||||
import type { RequestProtestDefenseCommandDTO } from '@/lib/types/generated/RequestProtestDefenseCommandDTO';
|
||||
import type { ReviewProtestCommandDTO } from '@/lib/types/generated/ReviewProtestCommandDTO';
|
||||
import { ProtestDriverViewModel } from '@/lib/view-models/ProtestDriverViewModel';
|
||||
|
||||
@@ -5,12 +5,15 @@ import { DomainError, Service } from '@/lib/contracts/services/Service';
|
||||
import { TeamsApiClient } from '@/lib/gateways/api/teams/TeamsApiClient';
|
||||
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
|
||||
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
|
||||
import type { CreateTeamOutputDTO } from '@/lib/types/generated/CreateTeamOutputDTO';
|
||||
import type { GetTeamDetailsOutputDTO } from '@/lib/types/generated/GetTeamDetailsOutputDTO';
|
||||
import type { GetTeamMembershipOutputDTO } from '@/lib/types/generated/GetTeamMembershipOutputDTO';
|
||||
import type { TeamListItemDTO } from '@/lib/types/generated/TeamListItemDTO';
|
||||
import type { UpdateTeamInputDTO } from '@/lib/types/generated/UpdateTeamInputDTO';
|
||||
import type { UpdateTeamOutputDTO } from '@/lib/types/generated/UpdateTeamOutputDTO';
|
||||
import type {
|
||||
CreateTeamInputDTO,
|
||||
CreateTeamOutputDTO,
|
||||
GetTeamDetailsOutputDTO,
|
||||
GetTeamMembershipOutputDTO,
|
||||
TeamListItemDTO,
|
||||
UpdateTeamInputDTO,
|
||||
UpdateTeamOutputDTO
|
||||
} from '@/lib/types/generated';
|
||||
import { TeamMemberViewModel } from '@/lib/view-models/TeamMemberViewModel';
|
||||
import { injectable, unmanaged } from 'inversify';
|
||||
|
||||
@@ -82,7 +85,11 @@ export class TeamService implements Service {
|
||||
try {
|
||||
const result = await this.apiClient.getMembers(teamId);
|
||||
const members = (result as any).members || result;
|
||||
const viewModels = members.map((member: any) => new TeamMemberViewModel(member, currentDriverId, ownerId));
|
||||
const viewModels = members.map((member: any) => new TeamMemberViewModel({
|
||||
...member,
|
||||
currentUserId: currentDriverId,
|
||||
teamOwnerId: ownerId
|
||||
}));
|
||||
return Result.ok(viewModels);
|
||||
} catch (error: unknown) {
|
||||
return Result.err({ type: 'unknown', message: (error as Error).message || 'Failed to fetch team members' });
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
export interface DashboardStatsResponseDTO {
|
||||
totalUsers: number;
|
||||
activeUsers: number;
|
||||
suspendedUsers: number;
|
||||
deletedUsers: number;
|
||||
systemAdmins: number;
|
||||
recentLogins: number;
|
||||
newUsersToday: number;
|
||||
userGrowth: Record<string, unknown>;
|
||||
label: string;
|
||||
value: number;
|
||||
color: string;
|
||||
roleDistribution: Record<string, unknown>;
|
||||
statusDistribution: Record<string, unknown>;
|
||||
active: number;
|
||||
suspended: number;
|
||||
deleted: number;
|
||||
activityTimeline: Record<string, unknown>;
|
||||
date: string;
|
||||
newUsers: number;
|
||||
logins: number;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Auto-generated DTO from OpenAPI spec
|
||||
* Spec SHA256: 959bfa650bb99dcba5d135d2d4f612f517af2cb62b0230c9349df5466066fe85
|
||||
* Spec SHA256: e65b5e91cfaadaab01555afb00df2136b4a9968b09b0a07f814cd999b0464ed8
|
||||
* This file is generated by scripts/generate-api-types.ts
|
||||
* Do not edit manually - regenerate using: npm run api:generate-types
|
||||
*/
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user