@burdenoff/microfe-eventfullymanaged 2026.723.1 → 2026.728.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/eventfullymanaged/api/eventApi.d.ts +22 -0
- package/dist/eventfullymanaged/api/eventApi.d.ts.map +1 -1
- package/dist/eventfullymanaged/api/eventApi.js +74 -54
- package/dist/eventfullymanaged/api/eventApi.js.map +1 -1
- package/dist/eventfullymanaged/lib/offlineCheckInQueue.d.ts +54 -0
- package/dist/eventfullymanaged/lib/offlineCheckInQueue.d.ts.map +1 -0
- package/dist/eventfullymanaged/lib/offlineCheckInQueue.js +68 -0
- package/dist/eventfullymanaged/lib/offlineCheckInQueue.js.map +1 -0
- package/dist/eventfullymanaged/lib/useOfflineCheckInSync.d.ts +29 -0
- package/dist/eventfullymanaged/lib/useOfflineCheckInSync.d.ts.map +1 -0
- package/dist/eventfullymanaged/lib/useOfflineCheckInSync.js +73 -0
- package/dist/eventfullymanaged/lib/useOfflineCheckInSync.js.map +1 -0
- package/dist/eventfullymanaged/pages/modules/KioskPage.d.ts.map +1 -1
- package/dist/eventfullymanaged/pages/modules/KioskPage.js +381 -311
- package/dist/eventfullymanaged/pages/modules/KioskPage.js.map +1 -1
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.d.ts.map +1 -1
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js +236 -182
- package/dist/eventfullymanaged/pages/modules/RegistrationPage.js.map +1 -1
- package/dist/eventfullymanaged/types/index.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventApi.js","names":[],"sources":["../../../src/eventfullymanaged/api/eventApi.ts"],"sourcesContent":["import { gql, type ErrorLike } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nimport { notify } from '../lib/toast';\n\n/**\n * Shared mutation error sink. The gateway client runs with `errorPolicy: 'all'`,\n * so in-band GraphQL errors also invoke `onError`; wiring this on every write\n * mutation guarantees a failure is always surfaced to the user even if a caller\n * forgets to inspect the resolved result.\n */\nconst onMutationError = (error: ErrorLike): void => {\n notify.error('Something went wrong', error.message || 'Please try again.');\n};\n\ntype DashboardSummaryResponse = {\n dashboardSummary: {\n totalEvents: number;\n activeEvents: number;\n totalRegistrations: number;\n totalAttendees: number;\n totalVenues: number;\n totalSponsors: number;\n upcomingSessions: number;\n };\n};\n\nexport type EventGql = {\n id: string;\n name: string;\n};\n\nexport type VenueGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n addressLine1?: string | null;\n city?: string | null;\n state?: string | null;\n country?: string | null;\n postalCode?: string | null;\n capacity?: number | null;\n amenities: string[];\n pricing?: Record<string, unknown> | null;\n openingHours?: Record<string, unknown> | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type FloorPlanGql = {\n id: string;\n venueId: string;\n name: string;\n imageUrl?: string | null;\n dimensions?: Record<string, unknown> | null;\n interactiveAreas?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type TicketTypeGql = {\n id: string;\n eventId: string;\n name: string;\n description?: string | null;\n price: string;\n currency: string;\n capacity?: number | null;\n soldCount: number;\n salesStartAt?: string | null;\n salesEndAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type PromoCodeGql = {\n id: string;\n eventId: string;\n code: string;\n description?: string | null;\n discountType: string;\n discountValue: string;\n maxUses?: number | null;\n usedCount: number;\n startsAt?: string | null;\n endsAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type ExhibitorGql = {\n id: string;\n eventId: string;\n name: string;\n boothCode?: string | null;\n category?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type LeadGql = {\n id: string;\n eventId: string;\n sponsorId?: string | null;\n exhibitorId?: string | null;\n attendeeName: string;\n attendeeEmail: string;\n score?: number | null;\n status: string;\n notes?: string | null;\n capturedAt: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInRecordGql = {\n id: string;\n eventId: string;\n stationId?: string | null;\n attendeeId?: string | null;\n registrationId?: string | null;\n method: string;\n status: string;\n direction: string;\n recordedAt: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingProfileGql = {\n id: string;\n eventId: string;\n attendeeId: string;\n interests: string[];\n lookingFor: string[];\n industry?: string | null;\n role?: string | null;\n visibility: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SponsorGql = {\n id: string;\n eventId: string;\n name: string;\n level: string;\n logoUrl?: string | null;\n website?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n contactPhone?: string | null;\n metrics?: { value?: number; leads?: number } | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventDetailGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n type: string;\n status: string;\n timezone: string;\n startAt: string;\n endAt: string;\n visibility: string;\n capacity?: number | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventSessionGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n venueId?: string | null;\n title: string;\n description?: string | null;\n sessionType: string;\n track?: string | null;\n startsAt: string;\n endsAt: string;\n capacity?: number | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SpeakerGql = {\n id: string;\n workspaceId: string;\n fullName: string;\n title?: string | null;\n organization?: string | null;\n email?: string | null;\n phone?: string | null;\n bio?: string | null;\n avatarUrl?: string | null;\n socialLinks?: Record<string, unknown> | null;\n};\n\nexport type RegistrationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n attendeeId?: string | null;\n ticketTypeId?: string | null;\n status: string;\n quantity: number;\n totalAmount?: string | null;\n promoCodeId?: string | null;\n currency: string;\n registeredAt: string;\n checkedInAt?: string | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type AttendeeGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n fullName: string;\n email: string;\n phone?: string | null;\n company?: string | null;\n role?: string | null;\n profile?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInStationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n name: string;\n code: string;\n location?: string | null;\n isActive: boolean;\n kioskConfig?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type MeetingGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n title: string;\n startsAt: string;\n endsAt: string;\n location?: string | null;\n notes?: string | null;\n sourceProfileId?: string | null;\n targetProfileId?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingMatchGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n sourceProfileId: string;\n targetProfileId: string;\n score: number;\n reason?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SimpleEntityGql = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type EntityTagInfoGql = {\n id: string;\n key?: string | null;\n label?: string | null;\n color?: string | null;\n};\n\nexport type EntityTagAssignmentGql = {\n id: string;\n tagId: string;\n entityId: string;\n entityType: string;\n source: string;\n tagInfo?: EntityTagInfoGql | null;\n};\n\nexport type AvailableTagGql = {\n id: string;\n key: string;\n label: string;\n color?: string | null;\n};\n\ntype EventsResponse = { events: { total: number; items: EventGql[] } };\ntype VenuesResponse = { venues: { total: number; items: VenueGql[] } };\ntype VenueResponse = { venue: VenueGql | null; floorPlans: { total: number; items: FloorPlanGql[] } };\ntype SponsorsResponse = { sponsors: { total: number; items: SponsorGql[] } };\ntype CreateVenueResponse = { createVenue: VenueGql };\ntype UpdateVenueResponse = { updateVenue: VenueGql };\ntype CreateSponsorResponse = { createSponsor: SponsorGql };\ntype UpdateSponsorResponse = { updateSponsor: SponsorGql };\ntype CreateFloorPlanResponse = { createFloorPlan: FloorPlanGql };\ntype UpdateFloorPlanResponse = { updateFloorPlan: FloorPlanGql };\ntype DeleteFloorPlanResponse = { deleteFloorPlan: boolean };\ntype TicketTypesResponse = { ticketTypes: { total: number; items: TicketTypeGql[] } };\ntype PromoCodesResponse = { promoCodes: { total: number; items: PromoCodeGql[] } };\ntype ExhibitorsResponse = { exhibitors: { total: number; items: ExhibitorGql[] } };\ntype LeadsResponse = { leads: { total: number; items: LeadGql[] } };\ntype CheckInRecordsResponse = { checkInRecords: { total: number; items: CheckInRecordGql[] } };\ntype NetworkingProfilesResponse = { networkingProfiles: { total: number; items: NetworkingProfileGql[] } };\ntype RegistrationsResponse = { registrations: { total: number; items: RegistrationGql[] } };\ntype AttendeesResponse = { attendees: { total: number; items: AttendeeGql[] } };\ntype EventSessionsResponse = { eventSessions: { total: number; items: EventSessionGql[] } };\ntype SpeakersResponse = { speakers: { total: number; items: SpeakerGql[] } };\ntype SimpleEntity = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\ntype SimpleEntityResponse = { total: number; items: SimpleEntity[] };\ntype CheckInStationsResponse = { checkInStations: SimpleEntityResponse };\ntype NetworkingMatchesResponse = { networkingMatches: SimpleEntityResponse };\ntype MeetingsResponse = { meetings: SimpleEntityResponse };\ntype AnnouncementsResponse = { announcements: SimpleEntityResponse };\ntype WorkflowTemplatesResponse = { workflowTemplates: SimpleEntityResponse };\ntype AutomationRulesResponse = { automationRules: SimpleEntityResponse };\ntype CommunicationCampaignsResponse = { communicationCampaigns: SimpleEntityResponse };\ntype AnalyticsSnapshotsResponse = { analyticsSnapshots: SimpleEntityResponse };\ntype UpsertSimpleEntityResponse = { [key: string]: SimpleEntity };\n\nexport const DASHBOARD_SUMMARY_QUERY = gql`\n query EventfullymanagedDashboardSummary {\n dashboardSummary: eventfullyManagedDashboardSummary {\n totalEvents\n activeEvents\n totalRegistrations\n totalAttendees\n totalVenues\n totalSponsors\n upcomingSessions\n }\n }\n`;\n\nexport const EVENTS_QUERY = gql`\n query EventfullymanagedEvents($search: String, $limit: Int, $offset: Int) {\n events: eventfullyManagedEvents(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n }\n`;\n\nexport const VENUES_QUERY = gql`\n query EventfullymanagedVenues($search: String, $limit: Int, $offset: Int) {\n venues: eventfullyManagedVenues(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n }\n }\n }\n`;\n\nexport const VENUE_QUERY = gql`\n query EventfullymanagedVenue($id: ID!) {\n venue: eventfullyManagedVenue(id: $id) {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n createdAt\n updatedAt\n }\n floorPlans: eventfullyManagedFloorPlans(venueId: $id, limit: 100, offset: 0) {\n total\n items {\n id\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n }\n }\n }\n`;\n\nexport const SPONSORS_QUERY = gql`\n query EventfullymanagedSponsors($search: String, $limit: Int, $offset: Int) {\n sponsors: eventfullyManagedSponsors(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n createdAt\n }\n }\n }\n`;\n\nexport const REGISTRATIONS_QUERY = gql`\n query EventfullymanagedRegistrations($eventId: ID, $limit: Int, $offset: Int) {\n registrations: eventfullyManagedRegistrations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n currency\n registeredAt\n checkedInAt\n }\n }\n }\n`;\n\nexport const ATTENDEES_QUERY = gql`\n query EventfullymanagedAttendees($eventId: ID, $limit: Int, $offset: Int) {\n attendees: eventfullyManagedAttendees(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n fullName\n email\n phone\n company\n role\n metadata\n }\n }\n }\n`;\n\nexport const EVENT_SESSIONS_QUERY = gql`\n query EventfullymanagedEventSessions($eventId: ID, $limit: Int, $offset: Int) {\n eventSessions: eventfullyManagedEventSessions(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n venueId\n title\n sessionType\n track\n startsAt\n endsAt\n status\n }\n }\n }\n`;\n\nexport const SPEAKERS_QUERY = gql`\n query EventfullymanagedSpeakers($limit: Int, $offset: Int) {\n speakers: eventfullyManagedSpeakers(limit: $limit, offset: $offset) {\n total\n items {\n id\n fullName\n title\n organization\n email\n }\n }\n }\n`;\n\nexport const TICKET_TYPES_QUERY = gql`\n query EventfullymanagedTicketTypes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n ticketTypes: eventfullyManagedTicketTypes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const PROMO_CODES_QUERY = gql`\n query EventfullymanagedPromoCodes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n promoCodes: eventfullyManagedPromoCodes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const EXHIBITORS_QUERY = gql`\n query EventfullymanagedExhibitors($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n exhibitors: eventfullyManagedExhibitors(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n }\n }\n }\n`;\n\nexport const LEADS_QUERY = gql`\n query EventfullymanagedLeads($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n leads: eventfullyManagedLeads(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_RECORDS_QUERY = gql`\n query EventfullymanagedCheckInRecords($eventId: ID, $limit: Int, $offset: Int) {\n checkInRecords: eventfullyManagedCheckInRecords(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n stationId\n attendeeId\n registrationId\n sessionId\n method\n status\n direction\n recordedAt\n metadata\n }\n }\n }\n`;\n\n// BOFF-3999 — hourly check-in throughput for one event.\nexport const CHECK_IN_THROUGHPUT_QUERY = gql`\n query EventfullymanagedCheckInThroughput($eventId: ID!, $date: DateTime) {\n checkInThroughput: eventfullyManagedCheckInThroughput(eventId: $eventId, date: $date) {\n hour\n count\n }\n }\n`;\n\n// BOFF-4331 — agenda-conflict detection for one event.\nexport const SESSION_CONFLICTS_QUERY = gql`\n query EventfullymanagedSessionConflicts($eventId: ID!) {\n sessionConflicts: eventfullyManagedSessionConflicts(eventId: $eventId) {\n type\n sessionAId\n sessionATitle\n sessionBId\n sessionBTitle\n venueId\n speakerId\n message\n }\n }\n`;\n\nexport const NETWORKING_PROFILES_QUERY = gql`\n query EventfullymanagedNetworkingProfiles($eventId: ID, $limit: Int, $offset: Int) {\n networkingProfiles: eventfullyManagedNetworkingProfiles(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_STATIONS_QUERY = gql`\n query EventfullymanagedCheckInStations($eventId: ID, $limit: Int, $offset: Int) {\n checkInStations: eventfullyManagedCheckInStations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const NETWORKING_MATCHES_QUERY = gql`\n query EventfullymanagedNetworkingMatches($eventId: ID, $limit: Int, $offset: Int) {\n networkingMatches: eventfullyManagedNetworkingMatches(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const MEETINGS_QUERY = gql`\n query EventfullymanagedMeetings($eventId: ID, $limit: Int, $offset: Int) {\n meetings: eventfullyManagedMeetings(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANNOUNCEMENTS_QUERY = gql`\n query EventfullymanagedAnnouncements($eventId: ID, $limit: Int, $offset: Int) {\n announcements: eventfullyManagedAnnouncements(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const WORKFLOW_TEMPLATES_QUERY = gql`\n query EventfullymanagedWorkflowTemplates($eventId: ID, $limit: Int, $offset: Int) {\n workflowTemplates: eventfullyManagedWorkflowTemplates(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const AUTOMATION_RULES_QUERY = gql`\n query EventfullymanagedAutomationRules($eventId: ID, $limit: Int, $offset: Int) {\n automationRules: eventfullyManagedAutomationRules(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const COMMUNICATION_CAMPAIGNS_QUERY = gql`\n query EventfullymanagedCommunicationCampaigns($eventId: ID, $limit: Int, $offset: Int) {\n communicationCampaigns: eventfullyManagedCommunicationCampaigns(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANALYTICS_SNAPSHOTS_QUERY = gql`\n query EventfullymanagedAnalyticsSnapshots($eventId: ID, $limit: Int, $offset: Int) {\n analyticsSnapshots: eventfullyManagedAnalyticsSnapshots(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const CREATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedCreateVenue($input: EventfullyManagedVenueInput!) {\n createVenue: eventfullyManagedCreateVenue(input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const UPDATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedUpdateVenue($id: ID!, $input: EventfullyManagedVenueInput!) {\n updateVenue: eventfullyManagedUpdateVenue(id: $id, input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const CREATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedCreateSponsor($input: EventfullyManagedSponsorInput!) {\n createSponsor: eventfullyManagedCreateSponsor(input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const UPDATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedUpdateSponsor($id: ID!, $input: EventfullyManagedSponsorInput!) {\n updateSponsor: eventfullyManagedUpdateSponsor(id: $id, input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const CREATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedCreateFloorPlan($input: EventfullyManagedFloorPlanInput!) {\n createFloorPlan: eventfullyManagedCreateFloorPlan(input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPDATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedUpdateFloorPlan($id: ID!, $input: EventfullyManagedFloorPlanInput!) {\n updateFloorPlan: eventfullyManagedUpdateFloorPlan(id: $id, input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const DELETE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedDeleteFloorPlan($id: ID!) {\n deleteFloorPlan: eventfullyManagedDeleteFloorPlan(id: $id)\n }\n`;\n\nexport const CREATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedCreateEvent($input: EventfullyManagedEventInput!) {\n createEvent: eventfullyManagedCreateEvent(input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPDATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedUpdateEvent($id: ID!, $input: EventfullyManagedEventInput!) {\n updateEvent: eventfullyManagedUpdateEvent(id: $id, input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPSERT_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnnouncement($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnnouncement: eventfullyManagedUpsertAnnouncement(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_WORKFLOW_TEMPLATE_MUTATION = gql`\n mutation EventfullymanagedUpsertWorkflowTemplate($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertWorkflowTemplate: eventfullyManagedUpsertWorkflowTemplate(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_AUTOMATION_RULE_MUTATION = gql`\n mutation EventfullymanagedUpsertAutomationRule($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAutomationRule: eventfullyManagedUpsertAutomationRule(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedUpsertCommunicationCampaign($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertCommunicationCampaign: eventfullyManagedUpsertCommunicationCampaign(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_ANALYTICS_SNAPSHOT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnalyticsSnapshot($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnalyticsSnapshot: eventfullyManagedUpsertAnalyticsSnapshot(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const useDashboardSummaryQuery = () => useQuery<DashboardSummaryResponse>(DASHBOARD_SUMMARY_QUERY);\nexport const useEventsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<EventsResponse, { search?: string; limit?: number; offset?: number }>(EVENTS_QUERY, { variables });\nexport const useVenuesQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<VenuesResponse, { search?: string; limit?: number; offset?: number }>(VENUES_QUERY, { variables });\nexport const useVenueQuery = (id: string) =>\n useQuery<VenueResponse, { id: string }>(VENUE_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<SponsorsResponse, { search?: string; limit?: number; offset?: number }>(SPONSORS_QUERY, { variables });\nexport const useRegistrationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<RegistrationsResponse, { eventId?: string; limit?: number; offset?: number }>(REGISTRATIONS_QUERY, {\n variables,\n });\nexport const useAttendeesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AttendeesResponse, { eventId?: string; limit?: number; offset?: number }>(ATTENDEES_QUERY, { variables });\nexport const useEventSessionsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<EventSessionsResponse, { eventId?: string; limit?: number; offset?: number }>(EVENT_SESSIONS_QUERY, {\n variables,\n });\nexport const useSpeakersQuery = (variables: { limit?: number; offset?: number }) =>\n useQuery<SpeakersResponse, { limit?: number; offset?: number }>(SPEAKERS_QUERY, { variables });\nexport const useTicketTypesQuery = (variables: {\n eventId?: string;\n search?: string;\n limit?: number;\n offset?: number;\n}) =>\n useQuery<TicketTypesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n TICKET_TYPES_QUERY,\n {\n variables,\n }\n );\nexport const usePromoCodesQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<PromoCodesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n PROMO_CODES_QUERY,\n {\n variables,\n }\n );\nexport const useExhibitorsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<ExhibitorsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n EXHIBITORS_QUERY,\n {\n variables,\n }\n );\nexport const useLeadsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<LeadsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(LEADS_QUERY, {\n variables,\n });\nexport const useCheckInStationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInStationsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_STATIONS_QUERY, {\n variables,\n });\nexport const useCheckInRecordsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInRecordsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_RECORDS_QUERY, {\n variables,\n });\n\nexport type CheckInThroughputPointGql = { hour: string; count: number };\ntype CheckInThroughputResponse = { checkInThroughput: CheckInThroughputPointGql[] };\nexport const useCheckInThroughputQuery = (variables: { eventId?: string; date?: string }) =>\n useQuery<CheckInThroughputResponse, { eventId: string; date?: string }>(CHECK_IN_THROUGHPUT_QUERY, {\n variables: { eventId: variables.eventId ?? '', date: variables.date },\n skip: !variables.eventId,\n });\n\nexport type SessionConflictGql = {\n type: string;\n sessionAId: string;\n sessionATitle: string;\n sessionBId: string;\n sessionBTitle: string;\n venueId?: string | null;\n speakerId?: string | null;\n message: string;\n};\ntype SessionConflictsResponse = { sessionConflicts: SessionConflictGql[] };\nexport const useSessionConflictsQuery = (variables: { eventId?: string }) =>\n useQuery<SessionConflictsResponse, { eventId: string }>(SESSION_CONFLICTS_QUERY, {\n variables: { eventId: variables.eventId ?? '' },\n skip: !variables.eventId,\n });\nexport const useNetworkingProfilesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingProfilesResponse, { eventId?: string; limit?: number; offset?: number }>(\n NETWORKING_PROFILES_QUERY,\n {\n variables,\n }\n );\nexport const useNetworkingMatchesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingMatchesResponse, { eventId?: string; limit?: number; offset?: number }>(NETWORKING_MATCHES_QUERY, {\n variables,\n });\nexport const useMeetingsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<MeetingsResponse, { eventId?: string; limit?: number; offset?: number }>(MEETINGS_QUERY, { variables });\nexport const useAnnouncementsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnnouncementsResponse, { eventId?: string; limit?: number; offset?: number }>(ANNOUNCEMENTS_QUERY, {\n variables,\n });\nexport const useWorkflowTemplatesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<WorkflowTemplatesResponse, { eventId?: string; limit?: number; offset?: number }>(WORKFLOW_TEMPLATES_QUERY, {\n variables,\n });\nexport const useAutomationRulesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AutomationRulesResponse, { eventId?: string; limit?: number; offset?: number }>(AUTOMATION_RULES_QUERY, {\n variables,\n });\nexport const useCommunicationCampaignsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CommunicationCampaignsResponse, { eventId?: string; limit?: number; offset?: number }>(\n COMMUNICATION_CAMPAIGNS_QUERY,\n {\n variables,\n }\n );\nexport const useAnalyticsSnapshotsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnalyticsSnapshotsResponse, { eventId?: string; limit?: number; offset?: number }>(\n ANALYTICS_SNAPSHOTS_QUERY,\n {\n variables,\n }\n );\n\nexport const useCreateVenueMutation = () =>\n useMutation<CreateVenueResponse, { input: Record<string, unknown> }>(CREATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useUpdateVenueMutation = () =>\n useMutation<UpdateVenueResponse, { id: string; input: Record<string, unknown> }>(UPDATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useCreateSponsorMutation = () =>\n useMutation<CreateSponsorResponse, { input: Record<string, unknown> }>(CREATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useUpdateSponsorMutation = () =>\n useMutation<UpdateSponsorResponse, { id: string; input: Record<string, unknown> }>(UPDATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useCreateFloorPlanMutation = () =>\n useMutation<CreateFloorPlanResponse, { input: Record<string, unknown> }>(CREATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUpdateFloorPlanMutation = () =>\n useMutation<UpdateFloorPlanResponse, { id: string; input: Record<string, unknown> }>(UPDATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useDeleteFloorPlanMutation = () =>\n useMutation<DeleteFloorPlanResponse, IdVar>(DELETE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEventMutation = () =>\n useMutation<{ createEvent: EventGql }, { input: Record<string, unknown> }>(CREATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateEventMutation = () =>\n useMutation<{ updateEvent: EventGql }, { id: string; input: Record<string, unknown> }>(UPDATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpsertAnnouncementMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANNOUNCEMENT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n }\n );\nexport const useUpsertWorkflowTemplateMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_WORKFLOW_TEMPLATE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: WORKFLOW_TEMPLATES_QUERY }],\n }\n );\nexport const useUpsertAutomationRuleMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_AUTOMATION_RULE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AUTOMATION_RULES_QUERY }],\n }\n );\nexport const useUpsertCommunicationCampaignMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_COMMUNICATION_CAMPAIGN_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n }\n );\nexport const useUpsertAnalyticsSnapshotMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANALYTICS_SNAPSHOT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANALYTICS_SNAPSHOTS_QUERY }],\n }\n );\n\n// ---------------------------------------------------------------------------\n// Single-entity fetch queries (edit-form hydration).\n//\n// The supergraph only exposes single-entity reads for Event, Sponsor and Venue\n// (`eventfullyManagedEvent` / `eventfullyManagedSponsor` / `eventfullyManagedVenue`).\n// Edit forms for every OTHER entity derive their initial state from the matching\n// LIST query (see SponsorFormPage for the `.items.find(id)` pattern) because the\n// backend has no by-id resolver for them.\n// ---------------------------------------------------------------------------\n\nexport const EVENT_QUERY = gql`\n query EventfullymanagedEvent($id: ID!) {\n event: eventfullyManagedEvent(id: $id) {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const SPONSOR_QUERY = gql`\n query EventfullymanagedSponsor($id: ID!) {\n sponsor: eventfullyManagedSponsor(id: $id) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Entity tags (inline tagInfo, NOT the federated `tag {}` field).\n// ---------------------------------------------------------------------------\n\nexport const ENTITY_TAGS_QUERY = gql`\n query EventfullymanagedEntityTags($input: EventfullyManagedGetEntityTagsInput!) {\n eventfullyManagedEntityTags(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const AVAILABLE_TAGS_QUERY = gql`\n query EventfullymanagedAvailableTags($limit: Int) {\n availableEventfullyManagedTags(limit: $limit) {\n id\n key\n label\n color\n }\n }\n`;\n\nexport const TAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedTagEntity($input: EventfullyManagedTagEntityInput!) {\n tagEventfullyManagedEntity(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const UNTAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedUntagEntity($input: EventfullyManagedUntagEntityInput!) {\n untagEventfullyManagedEntity(input: $input)\n }\n`;\n\nexport const CREATE_ENTITY_TAG_MUTATION = gql`\n mutation EventfullymanagedCreateEntityTag($input: EventfullyManagedCreateEntityTagInput!) {\n createEventfullyManagedEntityTag(input: $input) {\n id\n key\n label\n color\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// EventSession — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst EVENT_SESSION_FIELDS = `\n id\n workspaceId\n eventId\n venueId\n title\n description\n sessionType\n track\n startsAt\n endsAt\n capacity\n status\n metadata\n`;\n\nexport const CREATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedCreateEventSession($input: EventfullyManagedEventSessionInput!) {\n createEventSession: eventfullyManagedCreateEventSession(input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedUpdateEventSession($id: ID!, $input: EventfullyManagedEventSessionInput!) {\n updateEventSession: eventfullyManagedUpdateEventSession(id: $id, input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedDeleteEventSession($id: ID!) {\n deleteEventSession: eventfullyManagedDeleteEventSession(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Speaker — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst SPEAKER_FIELDS = `\n id\n workspaceId\n fullName\n title\n organization\n email\n phone\n bio\n avatarUrl\n socialLinks\n`;\n\nexport const CREATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedCreateSpeaker($input: EventfullyManagedSpeakerInput!) {\n createSpeaker: eventfullyManagedCreateSpeaker(input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedUpdateSpeaker($id: ID!, $input: EventfullyManagedSpeakerInput!) {\n updateSpeaker: eventfullyManagedUpdateSpeaker(id: $id, input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\nexport const DELETE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedDeleteSpeaker($id: ID!) {\n deleteSpeaker: eventfullyManagedDeleteSpeaker(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// TicketType — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst TICKET_TYPE_FIELDS = `\n id\n workspaceId\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n`;\n\nexport const CREATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedCreateTicketType($input: EventfullyManagedTicketTypeInput!) {\n createTicketType: eventfullyManagedCreateTicketType(input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedUpdateTicketType($id: ID!, $input: EventfullyManagedTicketTypeInput!) {\n updateTicketType: eventfullyManagedUpdateTicketType(id: $id, input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedDeleteTicketType($id: ID!) {\n deleteTicketType: eventfullyManagedDeleteTicketType(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// PromoCode — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst PROMO_CODE_FIELDS = `\n id\n workspaceId\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n`;\n\nexport const CREATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedCreatePromoCode($input: EventfullyManagedPromoCodeInput!) {\n createPromoCode: eventfullyManagedCreatePromoCode(input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedUpdatePromoCode($id: ID!, $input: EventfullyManagedPromoCodeInput!) {\n updatePromoCode: eventfullyManagedUpdatePromoCode(id: $id, input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedDeletePromoCode($id: ID!) {\n deletePromoCode: eventfullyManagedDeletePromoCode(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Registration — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst REGISTRATION_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n promoCodeId\n currency\n registeredAt\n checkedInAt\n metadata\n`;\n\nexport const CREATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedCreateRegistration($input: EventfullyManagedRegistrationInput!) {\n createRegistration: eventfullyManagedCreateRegistration(input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedUpdateRegistration($id: ID!, $input: EventfullyManagedRegistrationInput!) {\n updateRegistration: eventfullyManagedUpdateRegistration(id: $id, input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedDeleteRegistration($id: ID!) {\n deleteRegistration: eventfullyManagedDeleteRegistration(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Attendee — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst ATTENDEE_FIELDS = `\n id\n workspaceId\n eventId\n fullName\n email\n phone\n company\n role\n profile\n metadata\n`;\n\nexport const CREATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedCreateAttendee($input: EventfullyManagedAttendeeInput!) {\n createAttendee: eventfullyManagedCreateAttendee(input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedUpdateAttendee($id: ID!, $input: EventfullyManagedAttendeeInput!) {\n updateAttendee: eventfullyManagedUpdateAttendee(id: $id, input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedDeleteAttendee($id: ID!) {\n deleteAttendee: eventfullyManagedDeleteAttendee(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Exhibitor — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst EXHIBITOR_FIELDS = `\n id\n workspaceId\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n`;\n\nexport const CREATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedCreateExhibitor($input: EventfullyManagedExhibitorInput!) {\n createExhibitor: eventfullyManagedCreateExhibitor(input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedUpdateExhibitor($id: ID!, $input: EventfullyManagedExhibitorInput!) {\n updateExhibitor: eventfullyManagedUpdateExhibitor(id: $id, input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const DELETE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedDeleteExhibitor($id: ID!) {\n deleteExhibitor: eventfullyManagedDeleteExhibitor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Lead — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst LEAD_FIELDS = `\n id\n workspaceId\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n`;\n\nexport const CREATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedCreateLead($input: EventfullyManagedLeadInput!) {\n createLead: eventfullyManagedCreateLead(input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedUpdateLead($id: ID!, $input: EventfullyManagedLeadInput!) {\n updateLead: eventfullyManagedUpdateLead(id: $id, input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_LEAD_MUTATION = gql`\n mutation EventfullymanagedDeleteLead($id: ID!) {\n deleteLead: eventfullyManagedDeleteLead(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInStation — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_STATION_FIELDS = `\n id\n workspaceId\n eventId\n name\n code\n location\n isActive\n kioskConfig\n metadata\n`;\n\nexport const CREATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInStation($input: EventfullyManagedCheckInStationInput!) {\n createCheckInStation: eventfullyManagedCreateCheckInStation(input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInStation($id: ID!, $input: EventfullyManagedCheckInStationInput!) {\n updateCheckInStation: eventfullyManagedUpdateCheckInStation(id: $id, input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInStation($id: ID!) {\n deleteCheckInStation: eventfullyManagedDeleteCheckInStation(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInRecord — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_RECORD_FIELDS = `\n id\n workspaceId\n eventId\n stationId\n attendeeId\n registrationId\n method\n status\n direction\n recordedAt\n metadata\n`;\n\nexport const CREATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInRecord($input: EventfullyManagedCheckInRecordInput!) {\n createCheckInRecord: eventfullyManagedCreateCheckInRecord(input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInRecord($id: ID!, $input: EventfullyManagedCheckInRecordInput!) {\n updateCheckInRecord: eventfullyManagedUpdateCheckInRecord(id: $id, input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInRecord($id: ID!) {\n deleteCheckInRecord: eventfullyManagedDeleteCheckInRecord(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingProfile — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_PROFILE_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n`;\n\nexport const CREATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingProfile($input: EventfullyManagedNetworkingProfileInput!) {\n createNetworkingProfile: eventfullyManagedCreateNetworkingProfile(input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingProfile($id: ID!, $input: EventfullyManagedNetworkingProfileInput!) {\n updateNetworkingProfile: eventfullyManagedUpdateNetworkingProfile(id: $id, input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingProfile($id: ID!) {\n deleteNetworkingProfile: eventfullyManagedDeleteNetworkingProfile(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingMatch — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_MATCH_FIELDS = `\n id\n workspaceId\n eventId\n sourceProfileId\n targetProfileId\n score\n reason\n status\n metadata\n`;\n\nexport const CREATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingMatch($input: EventfullyManagedNetworkingMatchInput!) {\n createNetworkingMatch: eventfullyManagedCreateNetworkingMatch(input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingMatch($id: ID!, $input: EventfullyManagedNetworkingMatchInput!) {\n updateNetworkingMatch: eventfullyManagedUpdateNetworkingMatch(id: $id, input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingMatch($id: ID!) {\n deleteNetworkingMatch: eventfullyManagedDeleteNetworkingMatch(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Meeting — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst MEETING_FIELDS = `\n id\n workspaceId\n eventId\n title\n startsAt\n endsAt\n location\n notes\n sourceProfileId\n targetProfileId\n status\n metadata\n`;\n\nexport const CREATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedCreateMeeting($input: EventfullyManagedMeetingInput!) {\n createMeeting: eventfullyManagedCreateMeeting(input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedUpdateMeeting($id: ID!, $input: EventfullyManagedMeetingInput!) {\n updateMeeting: eventfullyManagedUpdateMeeting(id: $id, input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const DELETE_MEETING_MUTATION = gql`\n mutation EventfullymanagedDeleteMeeting($id: ID!) {\n deleteMeeting: eventfullyManagedDeleteMeeting(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Delete-only for existing create/update entities (Event, Venue, Sponsor).\n// ---------------------------------------------------------------------------\n\nexport const DELETE_EVENT_MUTATION = gql`\n mutation EventfullymanagedDeleteEvent($id: ID!) {\n deleteEvent: eventfullyManagedDeleteEvent(id: $id)\n }\n`;\n\nexport const DELETE_VENUE_MUTATION = gql`\n mutation EventfullymanagedDeleteVenue($id: ID!) {\n deleteVenue: eventfullyManagedDeleteVenue(id: $id)\n }\n`;\n\nexport const DELETE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedDeleteSponsor($id: ID!) {\n deleteSponsor: eventfullyManagedDeleteSponsor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Communications — publish announcement / send campaign.\n// ---------------------------------------------------------------------------\n\nexport const PUBLISH_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedPublishAnnouncement($id: ID!) {\n publishAnnouncement: eventfullyManagedPublishAnnouncement(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const SEND_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedSendCommunicationCampaign($id: ID!) {\n sendCommunicationCampaign: eventfullyManagedSendCommunicationCampaign(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\n// ===========================================================================\n// Response type aliases\n// ===========================================================================\n\ntype EventDetailResponse = { event: EventDetailGql | null };\ntype SponsorDetailResponse = { sponsor: SponsorGql | null };\ntype EntityTagsResponse = { eventfullyManagedEntityTags: EntityTagAssignmentGql[] };\ntype AvailableTagsResponse = { availableEventfullyManagedTags: AvailableTagGql[] };\ntype TagEntityResponse = { tagEventfullyManagedEntity: EntityTagAssignmentGql };\ntype UntagEntityResponse = { untagEventfullyManagedEntity: boolean };\ntype CreateEntityTagResponse = { createEventfullyManagedEntityTag: AvailableTagGql };\n\ntype CreateEventSessionResponse = { createEventSession: EventSessionGql };\ntype UpdateEventSessionResponse = { updateEventSession: EventSessionGql };\ntype DeleteEventSessionResponse = { deleteEventSession: boolean };\ntype CreateSpeakerResponse = { createSpeaker: SpeakerGql };\ntype UpdateSpeakerResponse = { updateSpeaker: SpeakerGql };\ntype DeleteSpeakerResponse = { deleteSpeaker: boolean };\ntype CreateTicketTypeResponse = { createTicketType: TicketTypeGql };\ntype UpdateTicketTypeResponse = { updateTicketType: TicketTypeGql };\ntype DeleteTicketTypeResponse = { deleteTicketType: boolean };\ntype CreatePromoCodeResponse = { createPromoCode: PromoCodeGql };\ntype UpdatePromoCodeResponse = { updatePromoCode: PromoCodeGql };\ntype DeletePromoCodeResponse = { deletePromoCode: boolean };\ntype CreateRegistrationResponse = { createRegistration: RegistrationGql };\ntype UpdateRegistrationResponse = { updateRegistration: RegistrationGql };\ntype DeleteRegistrationResponse = { deleteRegistration: boolean };\ntype CreateAttendeeResponse = { createAttendee: AttendeeGql };\ntype UpdateAttendeeResponse = { updateAttendee: AttendeeGql };\ntype DeleteAttendeeResponse = { deleteAttendee: boolean };\ntype CreateExhibitorResponse = { createExhibitor: ExhibitorGql };\ntype UpdateExhibitorResponse = { updateExhibitor: ExhibitorGql };\ntype DeleteExhibitorResponse = { deleteExhibitor: boolean };\ntype CreateLeadResponse = { createLead: LeadGql };\ntype UpdateLeadResponse = { updateLead: LeadGql };\ntype DeleteLeadResponse = { deleteLead: boolean };\ntype CreateCheckInStationResponse = { createCheckInStation: CheckInStationGql };\ntype UpdateCheckInStationResponse = { updateCheckInStation: CheckInStationGql };\ntype DeleteCheckInStationResponse = { deleteCheckInStation: boolean };\ntype CreateCheckInRecordResponse = { createCheckInRecord: CheckInRecordGql };\ntype UpdateCheckInRecordResponse = { updateCheckInRecord: CheckInRecordGql };\ntype DeleteCheckInRecordResponse = { deleteCheckInRecord: boolean };\ntype CreateNetworkingProfileResponse = { createNetworkingProfile: NetworkingProfileGql };\ntype UpdateNetworkingProfileResponse = { updateNetworkingProfile: NetworkingProfileGql };\ntype DeleteNetworkingProfileResponse = { deleteNetworkingProfile: boolean };\ntype CreateNetworkingMatchResponse = { createNetworkingMatch: NetworkingMatchGql };\ntype UpdateNetworkingMatchResponse = { updateNetworkingMatch: NetworkingMatchGql };\ntype DeleteNetworkingMatchResponse = { deleteNetworkingMatch: boolean };\ntype CreateMeetingResponse = { createMeeting: MeetingGql };\ntype UpdateMeetingResponse = { updateMeeting: MeetingGql };\ntype DeleteMeetingResponse = { deleteMeeting: boolean };\ntype DeleteEventResponse = { deleteEvent: boolean };\ntype DeleteVenueResponse = { deleteVenue: boolean };\ntype DeleteSponsorResponse = { deleteSponsor: boolean };\ntype PublishAnnouncementResponse = { publishAnnouncement: SimpleEntityGql };\ntype SendCommunicationCampaignResponse = { sendCommunicationCampaign: SimpleEntityGql };\n\ntype CreateVars = { input: Record<string, unknown> };\ntype UpdateVars = { id: string; input: Record<string, unknown> };\ntype IdVar = { id: string };\n\n// ===========================================================================\n// Single-entity + tag query hooks\n// ===========================================================================\n\nexport const useEventQuery = (id: string) =>\n useQuery<EventDetailResponse, IdVar>(EVENT_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorQuery = (id: string) =>\n useQuery<SponsorDetailResponse, IdVar>(SPONSOR_QUERY, { variables: { id }, skip: !id });\n\nexport const useEntityTagsQuery = (variables: { input: { entityType: string; entityId: string } }) =>\n useQuery<EntityTagsResponse, { input: { entityType: string; entityId: string } }>(ENTITY_TAGS_QUERY, {\n variables,\n skip: !variables.input.entityId,\n });\nexport const useAvailableTagsQuery = (variables: { limit?: number } = {}) =>\n useQuery<AvailableTagsResponse, { limit?: number }>(AVAILABLE_TAGS_QUERY, { variables });\n\n// ===========================================================================\n// Tag mutation hooks\n// ===========================================================================\n\nexport const useTagEntityMutation = () =>\n useMutation<TagEntityResponse, { input: Record<string, unknown> }>(TAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUntagEntityMutation = () =>\n useMutation<UntagEntityResponse, { input: Record<string, unknown> }>(UNTAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEntityTagMutation = () =>\n useMutation<CreateEntityTagResponse, { input: Record<string, unknown> }>(CREATE_ENTITY_TAG_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AVAILABLE_TAGS_QUERY }],\n });\n\n// ===========================================================================\n// CRUD mutation hooks\n// ===========================================================================\n\nexport const useCreateEventSessionMutation = () =>\n useMutation<CreateEventSessionResponse, CreateVars>(CREATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\nexport const useUpdateEventSessionMutation = () =>\n useMutation<UpdateEventSessionResponse, UpdateVars>(UPDATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\nexport const useDeleteEventSessionMutation = () =>\n useMutation<DeleteEventSessionResponse, IdVar>(DELETE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\n\nexport const useCreateSpeakerMutation = () =>\n useMutation<CreateSpeakerResponse, CreateVars>(CREATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\nexport const useUpdateSpeakerMutation = () =>\n useMutation<UpdateSpeakerResponse, UpdateVars>(UPDATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\nexport const useDeleteSpeakerMutation = () =>\n useMutation<DeleteSpeakerResponse, IdVar>(DELETE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\n\nexport const useCreateTicketTypeMutation = () =>\n useMutation<CreateTicketTypeResponse, CreateVars>(CREATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useUpdateTicketTypeMutation = () =>\n useMutation<UpdateTicketTypeResponse, UpdateVars>(UPDATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useDeleteTicketTypeMutation = () =>\n useMutation<DeleteTicketTypeResponse, IdVar>(DELETE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\n\nexport const useCreatePromoCodeMutation = () =>\n useMutation<CreatePromoCodeResponse, CreateVars>(CREATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useUpdatePromoCodeMutation = () =>\n useMutation<UpdatePromoCodeResponse, UpdateVars>(UPDATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useDeletePromoCodeMutation = () =>\n useMutation<DeletePromoCodeResponse, IdVar>(DELETE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\n\nexport const useCreateRegistrationMutation = () =>\n useMutation<CreateRegistrationResponse, CreateVars>(CREATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateRegistrationMutation = () =>\n useMutation<UpdateRegistrationResponse, UpdateVars>(UPDATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }],\n });\nexport const useDeleteRegistrationMutation = () =>\n useMutation<DeleteRegistrationResponse, IdVar>(DELETE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\n\nexport const useCreateAttendeeMutation = () =>\n useMutation<CreateAttendeeResponse, CreateVars>(CREATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateAttendeeMutation = () =>\n useMutation<UpdateAttendeeResponse, UpdateVars>(UPDATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }],\n });\nexport const useDeleteAttendeeMutation = () =>\n useMutation<DeleteAttendeeResponse, IdVar>(DELETE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\n\nexport const useCreateExhibitorMutation = () =>\n useMutation<CreateExhibitorResponse, CreateVars>(CREATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useUpdateExhibitorMutation = () =>\n useMutation<UpdateExhibitorResponse, UpdateVars>(UPDATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useDeleteExhibitorMutation = () =>\n useMutation<DeleteExhibitorResponse, IdVar>(DELETE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\n\nexport const useCreateLeadMutation = () =>\n useMutation<CreateLeadResponse, CreateVars>(CREATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useUpdateLeadMutation = () =>\n useMutation<UpdateLeadResponse, UpdateVars>(UPDATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useDeleteLeadMutation = () =>\n useMutation<DeleteLeadResponse, IdVar>(DELETE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\n\nexport const useCreateCheckInStationMutation = () =>\n useMutation<CreateCheckInStationResponse, CreateVars>(CREATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useUpdateCheckInStationMutation = () =>\n useMutation<UpdateCheckInStationResponse, UpdateVars>(UPDATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useDeleteCheckInStationMutation = () =>\n useMutation<DeleteCheckInStationResponse, IdVar>(DELETE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\n\nexport const useCreateCheckInRecordMutation = () =>\n useMutation<CreateCheckInRecordResponse, CreateVars>(CREATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useUpdateCheckInRecordMutation = () =>\n useMutation<UpdateCheckInRecordResponse, UpdateVars>(UPDATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useDeleteCheckInRecordMutation = () =>\n useMutation<DeleteCheckInRecordResponse, IdVar>(DELETE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\n\nexport const useCreateNetworkingProfileMutation = () =>\n useMutation<CreateNetworkingProfileResponse, CreateVars>(CREATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useUpdateNetworkingProfileMutation = () =>\n useMutation<UpdateNetworkingProfileResponse, UpdateVars>(UPDATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useDeleteNetworkingProfileMutation = () =>\n useMutation<DeleteNetworkingProfileResponse, IdVar>(DELETE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\n\nexport const useCreateNetworkingMatchMutation = () =>\n useMutation<CreateNetworkingMatchResponse, CreateVars>(CREATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useUpdateNetworkingMatchMutation = () =>\n useMutation<UpdateNetworkingMatchResponse, UpdateVars>(UPDATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useDeleteNetworkingMatchMutation = () =>\n useMutation<DeleteNetworkingMatchResponse, IdVar>(DELETE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\n\nexport const useCreateMeetingMutation = () =>\n useMutation<CreateMeetingResponse, CreateVars>(CREATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useUpdateMeetingMutation = () =>\n useMutation<UpdateMeetingResponse, UpdateVars>(UPDATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useDeleteMeetingMutation = () =>\n useMutation<DeleteMeetingResponse, IdVar>(DELETE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\n\nexport const useDeleteEventMutation = () =>\n useMutation<DeleteEventResponse, IdVar>(DELETE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useDeleteVenueMutation = () =>\n useMutation<DeleteVenueResponse, IdVar>(DELETE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useDeleteSponsorMutation = () =>\n useMutation<DeleteSponsorResponse, IdVar>(DELETE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\n\nexport const usePublishAnnouncementMutation = () =>\n useMutation<PublishAnnouncementResponse, IdVar>(PUBLISH_ANNOUNCEMENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n });\nexport const useSendCommunicationCampaignMutation = () =>\n useMutation<SendCommunicationCampaignResponse, IdVar>(SEND_COMMUNICATION_CAMPAIGN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n });\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eventApi.js","names":[],"sources":["../../../src/eventfullymanaged/api/eventApi.ts"],"sourcesContent":["import { gql, type ErrorLike } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nimport { notify } from '../lib/toast';\n\n/**\n * Shared mutation error sink. The gateway client runs with `errorPolicy: 'all'`,\n * so in-band GraphQL errors also invoke `onError`; wiring this on every write\n * mutation guarantees a failure is always surfaced to the user even if a caller\n * forgets to inspect the resolved result.\n */\nconst onMutationError = (error: ErrorLike): void => {\n notify.error('Something went wrong', error.message || 'Please try again.');\n};\n\ntype DashboardSummaryResponse = {\n dashboardSummary: {\n totalEvents: number;\n activeEvents: number;\n totalRegistrations: number;\n totalAttendees: number;\n totalVenues: number;\n totalSponsors: number;\n upcomingSessions: number;\n };\n};\n\nexport type EventGql = {\n id: string;\n name: string;\n};\n\nexport type VenueGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n addressLine1?: string | null;\n city?: string | null;\n state?: string | null;\n country?: string | null;\n postalCode?: string | null;\n capacity?: number | null;\n amenities: string[];\n pricing?: Record<string, unknown> | null;\n openingHours?: Record<string, unknown> | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type FloorPlanGql = {\n id: string;\n venueId: string;\n name: string;\n imageUrl?: string | null;\n dimensions?: Record<string, unknown> | null;\n interactiveAreas?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type TicketTypeGql = {\n id: string;\n eventId: string;\n name: string;\n description?: string | null;\n price: string;\n currency: string;\n capacity?: number | null;\n soldCount: number;\n salesStartAt?: string | null;\n salesEndAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type PromoCodeGql = {\n id: string;\n eventId: string;\n code: string;\n description?: string | null;\n discountType: string;\n discountValue: string;\n maxUses?: number | null;\n usedCount: number;\n startsAt?: string | null;\n endsAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type ExhibitorGql = {\n id: string;\n eventId: string;\n name: string;\n boothCode?: string | null;\n category?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type LeadGql = {\n id: string;\n eventId: string;\n sponsorId?: string | null;\n exhibitorId?: string | null;\n attendeeName: string;\n attendeeEmail: string;\n score?: number | null;\n status: string;\n notes?: string | null;\n capturedAt: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInRecordGql = {\n id: string;\n eventId: string;\n stationId?: string | null;\n attendeeId?: string | null;\n registrationId?: string | null;\n method: string;\n status: string;\n direction: string;\n recordedAt: string;\n // BOFF-4330 — the offline-queue idempotency key this scan was recorded\n // (or synced) with, if any.\n clientScanId?: string | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingProfileGql = {\n id: string;\n eventId: string;\n attendeeId: string;\n interests: string[];\n lookingFor: string[];\n industry?: string | null;\n role?: string | null;\n visibility: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SponsorGql = {\n id: string;\n eventId: string;\n name: string;\n level: string;\n logoUrl?: string | null;\n website?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n contactPhone?: string | null;\n metrics?: { value?: number; leads?: number } | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventDetailGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n type: string;\n status: string;\n timezone: string;\n startAt: string;\n endAt: string;\n visibility: string;\n capacity?: number | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventSessionGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n venueId?: string | null;\n title: string;\n description?: string | null;\n sessionType: string;\n track?: string | null;\n startsAt: string;\n endsAt: string;\n capacity?: number | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SpeakerGql = {\n id: string;\n workspaceId: string;\n fullName: string;\n title?: string | null;\n organization?: string | null;\n email?: string | null;\n phone?: string | null;\n bio?: string | null;\n avatarUrl?: string | null;\n socialLinks?: Record<string, unknown> | null;\n};\n\nexport type RegistrationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n attendeeId?: string | null;\n ticketTypeId?: string | null;\n status: string;\n quantity: number;\n totalAmount?: string | null;\n promoCodeId?: string | null;\n currency: string;\n registeredAt: string;\n checkedInAt?: string | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type AttendeeGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n fullName: string;\n email: string;\n phone?: string | null;\n company?: string | null;\n role?: string | null;\n profile?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInStationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n name: string;\n code: string;\n location?: string | null;\n isActive: boolean;\n kioskConfig?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type MeetingGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n title: string;\n startsAt: string;\n endsAt: string;\n location?: string | null;\n notes?: string | null;\n sourceProfileId?: string | null;\n targetProfileId?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingMatchGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n sourceProfileId: string;\n targetProfileId: string;\n score: number;\n reason?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SimpleEntityGql = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type EntityTagInfoGql = {\n id: string;\n key?: string | null;\n label?: string | null;\n color?: string | null;\n};\n\nexport type EntityTagAssignmentGql = {\n id: string;\n tagId: string;\n entityId: string;\n entityType: string;\n source: string;\n tagInfo?: EntityTagInfoGql | null;\n};\n\nexport type AvailableTagGql = {\n id: string;\n key: string;\n label: string;\n color?: string | null;\n};\n\ntype EventsResponse = { events: { total: number; items: EventGql[] } };\ntype VenuesResponse = { venues: { total: number; items: VenueGql[] } };\ntype VenueResponse = { venue: VenueGql | null; floorPlans: { total: number; items: FloorPlanGql[] } };\ntype SponsorsResponse = { sponsors: { total: number; items: SponsorGql[] } };\ntype CreateVenueResponse = { createVenue: VenueGql };\ntype UpdateVenueResponse = { updateVenue: VenueGql };\ntype CreateSponsorResponse = { createSponsor: SponsorGql };\ntype UpdateSponsorResponse = { updateSponsor: SponsorGql };\ntype CreateFloorPlanResponse = { createFloorPlan: FloorPlanGql };\ntype UpdateFloorPlanResponse = { updateFloorPlan: FloorPlanGql };\ntype DeleteFloorPlanResponse = { deleteFloorPlan: boolean };\ntype TicketTypesResponse = { ticketTypes: { total: number; items: TicketTypeGql[] } };\ntype PromoCodesResponse = { promoCodes: { total: number; items: PromoCodeGql[] } };\ntype ExhibitorsResponse = { exhibitors: { total: number; items: ExhibitorGql[] } };\ntype LeadsResponse = { leads: { total: number; items: LeadGql[] } };\ntype CheckInRecordsResponse = { checkInRecords: { total: number; items: CheckInRecordGql[] } };\ntype NetworkingProfilesResponse = { networkingProfiles: { total: number; items: NetworkingProfileGql[] } };\ntype RegistrationsResponse = { registrations: { total: number; items: RegistrationGql[] } };\ntype AttendeesResponse = { attendees: { total: number; items: AttendeeGql[] } };\ntype EventSessionsResponse = { eventSessions: { total: number; items: EventSessionGql[] } };\ntype SpeakersResponse = { speakers: { total: number; items: SpeakerGql[] } };\ntype SimpleEntity = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\ntype SimpleEntityResponse = { total: number; items: SimpleEntity[] };\ntype CheckInStationsResponse = { checkInStations: SimpleEntityResponse };\ntype NetworkingMatchesResponse = { networkingMatches: SimpleEntityResponse };\ntype MeetingsResponse = { meetings: SimpleEntityResponse };\ntype AnnouncementsResponse = { announcements: SimpleEntityResponse };\ntype WorkflowTemplatesResponse = { workflowTemplates: SimpleEntityResponse };\ntype AutomationRulesResponse = { automationRules: SimpleEntityResponse };\ntype CommunicationCampaignsResponse = { communicationCampaigns: SimpleEntityResponse };\ntype AnalyticsSnapshotsResponse = { analyticsSnapshots: SimpleEntityResponse };\ntype UpsertSimpleEntityResponse = { [key: string]: SimpleEntity };\n\nexport const DASHBOARD_SUMMARY_QUERY = gql`\n query EventfullymanagedDashboardSummary {\n dashboardSummary: eventfullyManagedDashboardSummary {\n totalEvents\n activeEvents\n totalRegistrations\n totalAttendees\n totalVenues\n totalSponsors\n upcomingSessions\n }\n }\n`;\n\nexport const EVENTS_QUERY = gql`\n query EventfullymanagedEvents($search: String, $limit: Int, $offset: Int) {\n events: eventfullyManagedEvents(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n }\n`;\n\nexport const VENUES_QUERY = gql`\n query EventfullymanagedVenues($search: String, $limit: Int, $offset: Int) {\n venues: eventfullyManagedVenues(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n }\n }\n }\n`;\n\nexport const VENUE_QUERY = gql`\n query EventfullymanagedVenue($id: ID!) {\n venue: eventfullyManagedVenue(id: $id) {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n createdAt\n updatedAt\n }\n floorPlans: eventfullyManagedFloorPlans(venueId: $id, limit: 100, offset: 0) {\n total\n items {\n id\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n }\n }\n }\n`;\n\nexport const SPONSORS_QUERY = gql`\n query EventfullymanagedSponsors($search: String, $limit: Int, $offset: Int) {\n sponsors: eventfullyManagedSponsors(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n createdAt\n }\n }\n }\n`;\n\nexport const REGISTRATIONS_QUERY = gql`\n query EventfullymanagedRegistrations($eventId: ID, $limit: Int, $offset: Int) {\n registrations: eventfullyManagedRegistrations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n currency\n registeredAt\n checkedInAt\n }\n }\n }\n`;\n\nexport const ATTENDEES_QUERY = gql`\n query EventfullymanagedAttendees($eventId: ID, $limit: Int, $offset: Int) {\n attendees: eventfullyManagedAttendees(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n fullName\n email\n phone\n company\n role\n metadata\n }\n }\n }\n`;\n\nexport const EVENT_SESSIONS_QUERY = gql`\n query EventfullymanagedEventSessions($eventId: ID, $limit: Int, $offset: Int) {\n eventSessions: eventfullyManagedEventSessions(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n venueId\n title\n sessionType\n track\n startsAt\n endsAt\n status\n }\n }\n }\n`;\n\nexport const SPEAKERS_QUERY = gql`\n query EventfullymanagedSpeakers($limit: Int, $offset: Int) {\n speakers: eventfullyManagedSpeakers(limit: $limit, offset: $offset) {\n total\n items {\n id\n fullName\n title\n organization\n email\n }\n }\n }\n`;\n\nexport const TICKET_TYPES_QUERY = gql`\n query EventfullymanagedTicketTypes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n ticketTypes: eventfullyManagedTicketTypes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const PROMO_CODES_QUERY = gql`\n query EventfullymanagedPromoCodes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n promoCodes: eventfullyManagedPromoCodes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const EXHIBITORS_QUERY = gql`\n query EventfullymanagedExhibitors($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n exhibitors: eventfullyManagedExhibitors(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n }\n }\n }\n`;\n\nexport const LEADS_QUERY = gql`\n query EventfullymanagedLeads($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n leads: eventfullyManagedLeads(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_RECORDS_QUERY = gql`\n query EventfullymanagedCheckInRecords($eventId: ID, $limit: Int, $offset: Int) {\n checkInRecords: eventfullyManagedCheckInRecords(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n stationId\n attendeeId\n registrationId\n sessionId\n method\n status\n direction\n recordedAt\n metadata\n }\n }\n }\n`;\n\n// BOFF-3999 — hourly check-in throughput for one event.\nexport const CHECK_IN_THROUGHPUT_QUERY = gql`\n query EventfullymanagedCheckInThroughput($eventId: ID!, $date: DateTime) {\n checkInThroughput: eventfullyManagedCheckInThroughput(eventId: $eventId, date: $date) {\n hour\n count\n }\n }\n`;\n\n// BOFF-4331 — agenda-conflict detection for one event.\nexport const SESSION_CONFLICTS_QUERY = gql`\n query EventfullymanagedSessionConflicts($eventId: ID!) {\n sessionConflicts: eventfullyManagedSessionConflicts(eventId: $eventId) {\n type\n sessionAId\n sessionATitle\n sessionBId\n sessionBTitle\n venueId\n speakerId\n message\n }\n }\n`;\n\nexport const NETWORKING_PROFILES_QUERY = gql`\n query EventfullymanagedNetworkingProfiles($eventId: ID, $limit: Int, $offset: Int) {\n networkingProfiles: eventfullyManagedNetworkingProfiles(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_STATIONS_QUERY = gql`\n query EventfullymanagedCheckInStations($eventId: ID, $limit: Int, $offset: Int) {\n checkInStations: eventfullyManagedCheckInStations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const NETWORKING_MATCHES_QUERY = gql`\n query EventfullymanagedNetworkingMatches($eventId: ID, $limit: Int, $offset: Int) {\n networkingMatches: eventfullyManagedNetworkingMatches(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const MEETINGS_QUERY = gql`\n query EventfullymanagedMeetings($eventId: ID, $limit: Int, $offset: Int) {\n meetings: eventfullyManagedMeetings(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANNOUNCEMENTS_QUERY = gql`\n query EventfullymanagedAnnouncements($eventId: ID, $limit: Int, $offset: Int) {\n announcements: eventfullyManagedAnnouncements(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const WORKFLOW_TEMPLATES_QUERY = gql`\n query EventfullymanagedWorkflowTemplates($eventId: ID, $limit: Int, $offset: Int) {\n workflowTemplates: eventfullyManagedWorkflowTemplates(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const AUTOMATION_RULES_QUERY = gql`\n query EventfullymanagedAutomationRules($eventId: ID, $limit: Int, $offset: Int) {\n automationRules: eventfullyManagedAutomationRules(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const COMMUNICATION_CAMPAIGNS_QUERY = gql`\n query EventfullymanagedCommunicationCampaigns($eventId: ID, $limit: Int, $offset: Int) {\n communicationCampaigns: eventfullyManagedCommunicationCampaigns(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANALYTICS_SNAPSHOTS_QUERY = gql`\n query EventfullymanagedAnalyticsSnapshots($eventId: ID, $limit: Int, $offset: Int) {\n analyticsSnapshots: eventfullyManagedAnalyticsSnapshots(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const CREATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedCreateVenue($input: EventfullyManagedVenueInput!) {\n createVenue: eventfullyManagedCreateVenue(input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const UPDATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedUpdateVenue($id: ID!, $input: EventfullyManagedVenueInput!) {\n updateVenue: eventfullyManagedUpdateVenue(id: $id, input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const CREATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedCreateSponsor($input: EventfullyManagedSponsorInput!) {\n createSponsor: eventfullyManagedCreateSponsor(input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const UPDATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedUpdateSponsor($id: ID!, $input: EventfullyManagedSponsorInput!) {\n updateSponsor: eventfullyManagedUpdateSponsor(id: $id, input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const CREATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedCreateFloorPlan($input: EventfullyManagedFloorPlanInput!) {\n createFloorPlan: eventfullyManagedCreateFloorPlan(input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPDATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedUpdateFloorPlan($id: ID!, $input: EventfullyManagedFloorPlanInput!) {\n updateFloorPlan: eventfullyManagedUpdateFloorPlan(id: $id, input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const DELETE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedDeleteFloorPlan($id: ID!) {\n deleteFloorPlan: eventfullyManagedDeleteFloorPlan(id: $id)\n }\n`;\n\nexport const CREATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedCreateEvent($input: EventfullyManagedEventInput!) {\n createEvent: eventfullyManagedCreateEvent(input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPDATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedUpdateEvent($id: ID!, $input: EventfullyManagedEventInput!) {\n updateEvent: eventfullyManagedUpdateEvent(id: $id, input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPSERT_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnnouncement($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnnouncement: eventfullyManagedUpsertAnnouncement(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_WORKFLOW_TEMPLATE_MUTATION = gql`\n mutation EventfullymanagedUpsertWorkflowTemplate($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertWorkflowTemplate: eventfullyManagedUpsertWorkflowTemplate(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_AUTOMATION_RULE_MUTATION = gql`\n mutation EventfullymanagedUpsertAutomationRule($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAutomationRule: eventfullyManagedUpsertAutomationRule(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedUpsertCommunicationCampaign($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertCommunicationCampaign: eventfullyManagedUpsertCommunicationCampaign(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_ANALYTICS_SNAPSHOT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnalyticsSnapshot($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnalyticsSnapshot: eventfullyManagedUpsertAnalyticsSnapshot(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const useDashboardSummaryQuery = () => useQuery<DashboardSummaryResponse>(DASHBOARD_SUMMARY_QUERY);\nexport const useEventsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<EventsResponse, { search?: string; limit?: number; offset?: number }>(EVENTS_QUERY, { variables });\nexport const useVenuesQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<VenuesResponse, { search?: string; limit?: number; offset?: number }>(VENUES_QUERY, { variables });\nexport const useVenueQuery = (id: string) =>\n useQuery<VenueResponse, { id: string }>(VENUE_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<SponsorsResponse, { search?: string; limit?: number; offset?: number }>(SPONSORS_QUERY, { variables });\nexport const useRegistrationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<RegistrationsResponse, { eventId?: string; limit?: number; offset?: number }>(REGISTRATIONS_QUERY, {\n variables,\n });\nexport const useAttendeesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AttendeesResponse, { eventId?: string; limit?: number; offset?: number }>(ATTENDEES_QUERY, { variables });\nexport const useEventSessionsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<EventSessionsResponse, { eventId?: string; limit?: number; offset?: number }>(EVENT_SESSIONS_QUERY, {\n variables,\n });\nexport const useSpeakersQuery = (variables: { limit?: number; offset?: number }) =>\n useQuery<SpeakersResponse, { limit?: number; offset?: number }>(SPEAKERS_QUERY, { variables });\nexport const useTicketTypesQuery = (variables: {\n eventId?: string;\n search?: string;\n limit?: number;\n offset?: number;\n}) =>\n useQuery<TicketTypesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n TICKET_TYPES_QUERY,\n {\n variables,\n }\n );\nexport const usePromoCodesQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<PromoCodesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n PROMO_CODES_QUERY,\n {\n variables,\n }\n );\nexport const useExhibitorsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<ExhibitorsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n EXHIBITORS_QUERY,\n {\n variables,\n }\n );\nexport const useLeadsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<LeadsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(LEADS_QUERY, {\n variables,\n });\nexport const useCheckInStationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInStationsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_STATIONS_QUERY, {\n variables,\n });\nexport const useCheckInRecordsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInRecordsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_RECORDS_QUERY, {\n variables,\n });\n\nexport type CheckInThroughputPointGql = { hour: string; count: number };\ntype CheckInThroughputResponse = { checkInThroughput: CheckInThroughputPointGql[] };\nexport const useCheckInThroughputQuery = (variables: { eventId?: string; date?: string }) =>\n useQuery<CheckInThroughputResponse, { eventId: string; date?: string }>(CHECK_IN_THROUGHPUT_QUERY, {\n variables: { eventId: variables.eventId ?? '', date: variables.date },\n skip: !variables.eventId,\n });\n\nexport type SessionConflictGql = {\n type: string;\n sessionAId: string;\n sessionATitle: string;\n sessionBId: string;\n sessionBTitle: string;\n venueId?: string | null;\n speakerId?: string | null;\n message: string;\n};\ntype SessionConflictsResponse = { sessionConflicts: SessionConflictGql[] };\nexport const useSessionConflictsQuery = (variables: { eventId?: string }) =>\n useQuery<SessionConflictsResponse, { eventId: string }>(SESSION_CONFLICTS_QUERY, {\n variables: { eventId: variables.eventId ?? '' },\n skip: !variables.eventId,\n });\nexport const useNetworkingProfilesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingProfilesResponse, { eventId?: string; limit?: number; offset?: number }>(\n NETWORKING_PROFILES_QUERY,\n {\n variables,\n }\n );\nexport const useNetworkingMatchesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingMatchesResponse, { eventId?: string; limit?: number; offset?: number }>(NETWORKING_MATCHES_QUERY, {\n variables,\n });\nexport const useMeetingsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<MeetingsResponse, { eventId?: string; limit?: number; offset?: number }>(MEETINGS_QUERY, { variables });\nexport const useAnnouncementsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnnouncementsResponse, { eventId?: string; limit?: number; offset?: number }>(ANNOUNCEMENTS_QUERY, {\n variables,\n });\nexport const useWorkflowTemplatesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<WorkflowTemplatesResponse, { eventId?: string; limit?: number; offset?: number }>(WORKFLOW_TEMPLATES_QUERY, {\n variables,\n });\nexport const useAutomationRulesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AutomationRulesResponse, { eventId?: string; limit?: number; offset?: number }>(AUTOMATION_RULES_QUERY, {\n variables,\n });\nexport const useCommunicationCampaignsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CommunicationCampaignsResponse, { eventId?: string; limit?: number; offset?: number }>(\n COMMUNICATION_CAMPAIGNS_QUERY,\n {\n variables,\n }\n );\nexport const useAnalyticsSnapshotsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnalyticsSnapshotsResponse, { eventId?: string; limit?: number; offset?: number }>(\n ANALYTICS_SNAPSHOTS_QUERY,\n {\n variables,\n }\n );\n\nexport const useCreateVenueMutation = () =>\n useMutation<CreateVenueResponse, { input: Record<string, unknown> }>(CREATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useUpdateVenueMutation = () =>\n useMutation<UpdateVenueResponse, { id: string; input: Record<string, unknown> }>(UPDATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useCreateSponsorMutation = () =>\n useMutation<CreateSponsorResponse, { input: Record<string, unknown> }>(CREATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useUpdateSponsorMutation = () =>\n useMutation<UpdateSponsorResponse, { id: string; input: Record<string, unknown> }>(UPDATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useCreateFloorPlanMutation = () =>\n useMutation<CreateFloorPlanResponse, { input: Record<string, unknown> }>(CREATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUpdateFloorPlanMutation = () =>\n useMutation<UpdateFloorPlanResponse, { id: string; input: Record<string, unknown> }>(UPDATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useDeleteFloorPlanMutation = () =>\n useMutation<DeleteFloorPlanResponse, IdVar>(DELETE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEventMutation = () =>\n useMutation<{ createEvent: EventGql }, { input: Record<string, unknown> }>(CREATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateEventMutation = () =>\n useMutation<{ updateEvent: EventGql }, { id: string; input: Record<string, unknown> }>(UPDATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpsertAnnouncementMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANNOUNCEMENT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n }\n );\nexport const useUpsertWorkflowTemplateMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_WORKFLOW_TEMPLATE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: WORKFLOW_TEMPLATES_QUERY }],\n }\n );\nexport const useUpsertAutomationRuleMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_AUTOMATION_RULE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AUTOMATION_RULES_QUERY }],\n }\n );\nexport const useUpsertCommunicationCampaignMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_COMMUNICATION_CAMPAIGN_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n }\n );\nexport const useUpsertAnalyticsSnapshotMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANALYTICS_SNAPSHOT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANALYTICS_SNAPSHOTS_QUERY }],\n }\n );\n\n// ---------------------------------------------------------------------------\n// Single-entity fetch queries (edit-form hydration).\n//\n// The supergraph only exposes single-entity reads for Event, Sponsor and Venue\n// (`eventfullyManagedEvent` / `eventfullyManagedSponsor` / `eventfullyManagedVenue`).\n// Edit forms for every OTHER entity derive their initial state from the matching\n// LIST query (see SponsorFormPage for the `.items.find(id)` pattern) because the\n// backend has no by-id resolver for them.\n// ---------------------------------------------------------------------------\n\nexport const EVENT_QUERY = gql`\n query EventfullymanagedEvent($id: ID!) {\n event: eventfullyManagedEvent(id: $id) {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const SPONSOR_QUERY = gql`\n query EventfullymanagedSponsor($id: ID!) {\n sponsor: eventfullyManagedSponsor(id: $id) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Entity tags (inline tagInfo, NOT the federated `tag {}` field).\n// ---------------------------------------------------------------------------\n\nexport const ENTITY_TAGS_QUERY = gql`\n query EventfullymanagedEntityTags($input: EventfullyManagedGetEntityTagsInput!) {\n eventfullyManagedEntityTags(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const AVAILABLE_TAGS_QUERY = gql`\n query EventfullymanagedAvailableTags($limit: Int) {\n availableEventfullyManagedTags(limit: $limit) {\n id\n key\n label\n color\n }\n }\n`;\n\nexport const TAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedTagEntity($input: EventfullyManagedTagEntityInput!) {\n tagEventfullyManagedEntity(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const UNTAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedUntagEntity($input: EventfullyManagedUntagEntityInput!) {\n untagEventfullyManagedEntity(input: $input)\n }\n`;\n\nexport const CREATE_ENTITY_TAG_MUTATION = gql`\n mutation EventfullymanagedCreateEntityTag($input: EventfullyManagedCreateEntityTagInput!) {\n createEventfullyManagedEntityTag(input: $input) {\n id\n key\n label\n color\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// EventSession — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst EVENT_SESSION_FIELDS = `\n id\n workspaceId\n eventId\n venueId\n title\n description\n sessionType\n track\n startsAt\n endsAt\n capacity\n status\n metadata\n`;\n\nexport const CREATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedCreateEventSession($input: EventfullyManagedEventSessionInput!) {\n createEventSession: eventfullyManagedCreateEventSession(input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedUpdateEventSession($id: ID!, $input: EventfullyManagedEventSessionInput!) {\n updateEventSession: eventfullyManagedUpdateEventSession(id: $id, input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedDeleteEventSession($id: ID!) {\n deleteEventSession: eventfullyManagedDeleteEventSession(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Speaker — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst SPEAKER_FIELDS = `\n id\n workspaceId\n fullName\n title\n organization\n email\n phone\n bio\n avatarUrl\n socialLinks\n`;\n\nexport const CREATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedCreateSpeaker($input: EventfullyManagedSpeakerInput!) {\n createSpeaker: eventfullyManagedCreateSpeaker(input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedUpdateSpeaker($id: ID!, $input: EventfullyManagedSpeakerInput!) {\n updateSpeaker: eventfullyManagedUpdateSpeaker(id: $id, input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\nexport const DELETE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedDeleteSpeaker($id: ID!) {\n deleteSpeaker: eventfullyManagedDeleteSpeaker(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// TicketType — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst TICKET_TYPE_FIELDS = `\n id\n workspaceId\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n`;\n\nexport const CREATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedCreateTicketType($input: EventfullyManagedTicketTypeInput!) {\n createTicketType: eventfullyManagedCreateTicketType(input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedUpdateTicketType($id: ID!, $input: EventfullyManagedTicketTypeInput!) {\n updateTicketType: eventfullyManagedUpdateTicketType(id: $id, input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedDeleteTicketType($id: ID!) {\n deleteTicketType: eventfullyManagedDeleteTicketType(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// PromoCode — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst PROMO_CODE_FIELDS = `\n id\n workspaceId\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n`;\n\nexport const CREATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedCreatePromoCode($input: EventfullyManagedPromoCodeInput!) {\n createPromoCode: eventfullyManagedCreatePromoCode(input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedUpdatePromoCode($id: ID!, $input: EventfullyManagedPromoCodeInput!) {\n updatePromoCode: eventfullyManagedUpdatePromoCode(id: $id, input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedDeletePromoCode($id: ID!) {\n deletePromoCode: eventfullyManagedDeletePromoCode(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Registration — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst REGISTRATION_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n promoCodeId\n currency\n registeredAt\n checkedInAt\n metadata\n`;\n\nexport const CREATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedCreateRegistration($input: EventfullyManagedRegistrationInput!) {\n createRegistration: eventfullyManagedCreateRegistration(input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedUpdateRegistration($id: ID!, $input: EventfullyManagedRegistrationInput!) {\n updateRegistration: eventfullyManagedUpdateRegistration(id: $id, input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedDeleteRegistration($id: ID!) {\n deleteRegistration: eventfullyManagedDeleteRegistration(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Attendee — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst ATTENDEE_FIELDS = `\n id\n workspaceId\n eventId\n fullName\n email\n phone\n company\n role\n profile\n metadata\n`;\n\nexport const CREATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedCreateAttendee($input: EventfullyManagedAttendeeInput!) {\n createAttendee: eventfullyManagedCreateAttendee(input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedUpdateAttendee($id: ID!, $input: EventfullyManagedAttendeeInput!) {\n updateAttendee: eventfullyManagedUpdateAttendee(id: $id, input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedDeleteAttendee($id: ID!) {\n deleteAttendee: eventfullyManagedDeleteAttendee(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Exhibitor — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst EXHIBITOR_FIELDS = `\n id\n workspaceId\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n`;\n\nexport const CREATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedCreateExhibitor($input: EventfullyManagedExhibitorInput!) {\n createExhibitor: eventfullyManagedCreateExhibitor(input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedUpdateExhibitor($id: ID!, $input: EventfullyManagedExhibitorInput!) {\n updateExhibitor: eventfullyManagedUpdateExhibitor(id: $id, input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const DELETE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedDeleteExhibitor($id: ID!) {\n deleteExhibitor: eventfullyManagedDeleteExhibitor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Lead — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst LEAD_FIELDS = `\n id\n workspaceId\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n`;\n\nexport const CREATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedCreateLead($input: EventfullyManagedLeadInput!) {\n createLead: eventfullyManagedCreateLead(input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedUpdateLead($id: ID!, $input: EventfullyManagedLeadInput!) {\n updateLead: eventfullyManagedUpdateLead(id: $id, input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_LEAD_MUTATION = gql`\n mutation EventfullymanagedDeleteLead($id: ID!) {\n deleteLead: eventfullyManagedDeleteLead(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInStation — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_STATION_FIELDS = `\n id\n workspaceId\n eventId\n name\n code\n location\n isActive\n kioskConfig\n metadata\n`;\n\nexport const CREATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInStation($input: EventfullyManagedCheckInStationInput!) {\n createCheckInStation: eventfullyManagedCreateCheckInStation(input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInStation($id: ID!, $input: EventfullyManagedCheckInStationInput!) {\n updateCheckInStation: eventfullyManagedUpdateCheckInStation(id: $id, input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInStation($id: ID!) {\n deleteCheckInStation: eventfullyManagedDeleteCheckInStation(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInRecord — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_RECORD_FIELDS = `\n id\n workspaceId\n eventId\n stationId\n attendeeId\n registrationId\n method\n status\n direction\n recordedAt\n clientScanId\n metadata\n`;\n\nexport const CREATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInRecord($input: EventfullyManagedCheckInRecordInput!) {\n createCheckInRecord: eventfullyManagedCreateCheckInRecord(input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInRecord($id: ID!, $input: EventfullyManagedCheckInRecordInput!) {\n updateCheckInRecord: eventfullyManagedUpdateCheckInRecord(id: $id, input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInRecord($id: ID!) {\n deleteCheckInRecord: eventfullyManagedDeleteCheckInRecord(id: $id)\n }\n`;\n\n// BOFF-4330 — kiosk QR scan path (signed token, offline-queue idempotent).\nexport const SCAN_CHECK_IN_MUTATION = gql`\n mutation EventfullymanagedScanCheckIn($input: EventfullyManagedScanCheckInInput!) {\n scanCheckIn: eventfullyManagedScanCheckIn(input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\n// BOFF-4330 — a registration's signed QR check-in token + rendered PNG.\nexport const CHECK_IN_TOKEN_QUERY = gql`\n query EventfullymanagedCheckInToken($registrationId: ID!) {\n checkInToken: eventfullyManagedCheckInToken(registrationId: $registrationId) {\n registrationId\n token\n qrDataUrl\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingProfile — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_PROFILE_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n`;\n\nexport const CREATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingProfile($input: EventfullyManagedNetworkingProfileInput!) {\n createNetworkingProfile: eventfullyManagedCreateNetworkingProfile(input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingProfile($id: ID!, $input: EventfullyManagedNetworkingProfileInput!) {\n updateNetworkingProfile: eventfullyManagedUpdateNetworkingProfile(id: $id, input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingProfile($id: ID!) {\n deleteNetworkingProfile: eventfullyManagedDeleteNetworkingProfile(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingMatch — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_MATCH_FIELDS = `\n id\n workspaceId\n eventId\n sourceProfileId\n targetProfileId\n score\n reason\n status\n metadata\n`;\n\nexport const CREATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingMatch($input: EventfullyManagedNetworkingMatchInput!) {\n createNetworkingMatch: eventfullyManagedCreateNetworkingMatch(input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingMatch($id: ID!, $input: EventfullyManagedNetworkingMatchInput!) {\n updateNetworkingMatch: eventfullyManagedUpdateNetworkingMatch(id: $id, input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingMatch($id: ID!) {\n deleteNetworkingMatch: eventfullyManagedDeleteNetworkingMatch(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Meeting — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst MEETING_FIELDS = `\n id\n workspaceId\n eventId\n title\n startsAt\n endsAt\n location\n notes\n sourceProfileId\n targetProfileId\n status\n metadata\n`;\n\nexport const CREATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedCreateMeeting($input: EventfullyManagedMeetingInput!) {\n createMeeting: eventfullyManagedCreateMeeting(input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedUpdateMeeting($id: ID!, $input: EventfullyManagedMeetingInput!) {\n updateMeeting: eventfullyManagedUpdateMeeting(id: $id, input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const DELETE_MEETING_MUTATION = gql`\n mutation EventfullymanagedDeleteMeeting($id: ID!) {\n deleteMeeting: eventfullyManagedDeleteMeeting(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Delete-only for existing create/update entities (Event, Venue, Sponsor).\n// ---------------------------------------------------------------------------\n\nexport const DELETE_EVENT_MUTATION = gql`\n mutation EventfullymanagedDeleteEvent($id: ID!) {\n deleteEvent: eventfullyManagedDeleteEvent(id: $id)\n }\n`;\n\nexport const DELETE_VENUE_MUTATION = gql`\n mutation EventfullymanagedDeleteVenue($id: ID!) {\n deleteVenue: eventfullyManagedDeleteVenue(id: $id)\n }\n`;\n\nexport const DELETE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedDeleteSponsor($id: ID!) {\n deleteSponsor: eventfullyManagedDeleteSponsor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Communications — publish announcement / send campaign.\n// ---------------------------------------------------------------------------\n\nexport const PUBLISH_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedPublishAnnouncement($id: ID!) {\n publishAnnouncement: eventfullyManagedPublishAnnouncement(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const SEND_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedSendCommunicationCampaign($id: ID!) {\n sendCommunicationCampaign: eventfullyManagedSendCommunicationCampaign(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\n// ===========================================================================\n// Response type aliases\n// ===========================================================================\n\ntype EventDetailResponse = { event: EventDetailGql | null };\ntype SponsorDetailResponse = { sponsor: SponsorGql | null };\ntype EntityTagsResponse = { eventfullyManagedEntityTags: EntityTagAssignmentGql[] };\ntype AvailableTagsResponse = { availableEventfullyManagedTags: AvailableTagGql[] };\ntype TagEntityResponse = { tagEventfullyManagedEntity: EntityTagAssignmentGql };\ntype UntagEntityResponse = { untagEventfullyManagedEntity: boolean };\ntype CreateEntityTagResponse = { createEventfullyManagedEntityTag: AvailableTagGql };\n\ntype CreateEventSessionResponse = { createEventSession: EventSessionGql };\ntype UpdateEventSessionResponse = { updateEventSession: EventSessionGql };\ntype DeleteEventSessionResponse = { deleteEventSession: boolean };\ntype CreateSpeakerResponse = { createSpeaker: SpeakerGql };\ntype UpdateSpeakerResponse = { updateSpeaker: SpeakerGql };\ntype DeleteSpeakerResponse = { deleteSpeaker: boolean };\ntype CreateTicketTypeResponse = { createTicketType: TicketTypeGql };\ntype UpdateTicketTypeResponse = { updateTicketType: TicketTypeGql };\ntype DeleteTicketTypeResponse = { deleteTicketType: boolean };\ntype CreatePromoCodeResponse = { createPromoCode: PromoCodeGql };\ntype UpdatePromoCodeResponse = { updatePromoCode: PromoCodeGql };\ntype DeletePromoCodeResponse = { deletePromoCode: boolean };\ntype CreateRegistrationResponse = { createRegistration: RegistrationGql };\ntype UpdateRegistrationResponse = { updateRegistration: RegistrationGql };\ntype DeleteRegistrationResponse = { deleteRegistration: boolean };\ntype CreateAttendeeResponse = { createAttendee: AttendeeGql };\ntype UpdateAttendeeResponse = { updateAttendee: AttendeeGql };\ntype DeleteAttendeeResponse = { deleteAttendee: boolean };\ntype CreateExhibitorResponse = { createExhibitor: ExhibitorGql };\ntype UpdateExhibitorResponse = { updateExhibitor: ExhibitorGql };\ntype DeleteExhibitorResponse = { deleteExhibitor: boolean };\ntype CreateLeadResponse = { createLead: LeadGql };\ntype UpdateLeadResponse = { updateLead: LeadGql };\ntype DeleteLeadResponse = { deleteLead: boolean };\ntype CreateCheckInStationResponse = { createCheckInStation: CheckInStationGql };\ntype UpdateCheckInStationResponse = { updateCheckInStation: CheckInStationGql };\ntype DeleteCheckInStationResponse = { deleteCheckInStation: boolean };\ntype CreateCheckInRecordResponse = { createCheckInRecord: CheckInRecordGql };\ntype UpdateCheckInRecordResponse = { updateCheckInRecord: CheckInRecordGql };\ntype DeleteCheckInRecordResponse = { deleteCheckInRecord: boolean };\n// BOFF-4330\ntype ScanCheckInResponse = { scanCheckIn: CheckInRecordGql };\ntype ScanCheckInVars = { input: Record<string, unknown> };\ntype CreateNetworkingProfileResponse = { createNetworkingProfile: NetworkingProfileGql };\ntype UpdateNetworkingProfileResponse = { updateNetworkingProfile: NetworkingProfileGql };\ntype DeleteNetworkingProfileResponse = { deleteNetworkingProfile: boolean };\ntype CreateNetworkingMatchResponse = { createNetworkingMatch: NetworkingMatchGql };\ntype UpdateNetworkingMatchResponse = { updateNetworkingMatch: NetworkingMatchGql };\ntype DeleteNetworkingMatchResponse = { deleteNetworkingMatch: boolean };\ntype CreateMeetingResponse = { createMeeting: MeetingGql };\ntype UpdateMeetingResponse = { updateMeeting: MeetingGql };\ntype DeleteMeetingResponse = { deleteMeeting: boolean };\ntype DeleteEventResponse = { deleteEvent: boolean };\ntype DeleteVenueResponse = { deleteVenue: boolean };\ntype DeleteSponsorResponse = { deleteSponsor: boolean };\ntype PublishAnnouncementResponse = { publishAnnouncement: SimpleEntityGql };\ntype SendCommunicationCampaignResponse = { sendCommunicationCampaign: SimpleEntityGql };\n\ntype CreateVars = { input: Record<string, unknown> };\ntype UpdateVars = { id: string; input: Record<string, unknown> };\ntype IdVar = { id: string };\n\n// ===========================================================================\n// Single-entity + tag query hooks\n// ===========================================================================\n\nexport const useEventQuery = (id: string) =>\n useQuery<EventDetailResponse, IdVar>(EVENT_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorQuery = (id: string) =>\n useQuery<SponsorDetailResponse, IdVar>(SPONSOR_QUERY, { variables: { id }, skip: !id });\n\n// BOFF-4330 — a registration's signed QR check-in token + rendered PNG.\nexport type CheckInTokenGql = { registrationId: string; token: string; qrDataUrl: string };\ntype CheckInTokenResponse = { checkInToken: CheckInTokenGql };\nexport const useCheckInTokenQuery = (registrationId: string) =>\n useQuery<CheckInTokenResponse, { registrationId: string }>(CHECK_IN_TOKEN_QUERY, {\n variables: { registrationId },\n skip: !registrationId,\n });\n\nexport const useEntityTagsQuery = (variables: { input: { entityType: string; entityId: string } }) =>\n useQuery<EntityTagsResponse, { input: { entityType: string; entityId: string } }>(ENTITY_TAGS_QUERY, {\n variables,\n skip: !variables.input.entityId,\n });\nexport const useAvailableTagsQuery = (variables: { limit?: number } = {}) =>\n useQuery<AvailableTagsResponse, { limit?: number }>(AVAILABLE_TAGS_QUERY, { variables });\n\n// ===========================================================================\n// Tag mutation hooks\n// ===========================================================================\n\nexport const useTagEntityMutation = () =>\n useMutation<TagEntityResponse, { input: Record<string, unknown> }>(TAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUntagEntityMutation = () =>\n useMutation<UntagEntityResponse, { input: Record<string, unknown> }>(UNTAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEntityTagMutation = () =>\n useMutation<CreateEntityTagResponse, { input: Record<string, unknown> }>(CREATE_ENTITY_TAG_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AVAILABLE_TAGS_QUERY }],\n });\n\n// ===========================================================================\n// CRUD mutation hooks\n// ===========================================================================\n\nexport const useCreateEventSessionMutation = () =>\n useMutation<CreateEventSessionResponse, CreateVars>(CREATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\nexport const useUpdateEventSessionMutation = () =>\n useMutation<UpdateEventSessionResponse, UpdateVars>(UPDATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\nexport const useDeleteEventSessionMutation = () =>\n useMutation<DeleteEventSessionResponse, IdVar>(DELETE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\n\nexport const useCreateSpeakerMutation = () =>\n useMutation<CreateSpeakerResponse, CreateVars>(CREATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\nexport const useUpdateSpeakerMutation = () =>\n useMutation<UpdateSpeakerResponse, UpdateVars>(UPDATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\nexport const useDeleteSpeakerMutation = () =>\n useMutation<DeleteSpeakerResponse, IdVar>(DELETE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\n\nexport const useCreateTicketTypeMutation = () =>\n useMutation<CreateTicketTypeResponse, CreateVars>(CREATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useUpdateTicketTypeMutation = () =>\n useMutation<UpdateTicketTypeResponse, UpdateVars>(UPDATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useDeleteTicketTypeMutation = () =>\n useMutation<DeleteTicketTypeResponse, IdVar>(DELETE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\n\nexport const useCreatePromoCodeMutation = () =>\n useMutation<CreatePromoCodeResponse, CreateVars>(CREATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useUpdatePromoCodeMutation = () =>\n useMutation<UpdatePromoCodeResponse, UpdateVars>(UPDATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useDeletePromoCodeMutation = () =>\n useMutation<DeletePromoCodeResponse, IdVar>(DELETE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\n\nexport const useCreateRegistrationMutation = () =>\n useMutation<CreateRegistrationResponse, CreateVars>(CREATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateRegistrationMutation = () =>\n useMutation<UpdateRegistrationResponse, UpdateVars>(UPDATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }],\n });\nexport const useDeleteRegistrationMutation = () =>\n useMutation<DeleteRegistrationResponse, IdVar>(DELETE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\n\nexport const useCreateAttendeeMutation = () =>\n useMutation<CreateAttendeeResponse, CreateVars>(CREATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateAttendeeMutation = () =>\n useMutation<UpdateAttendeeResponse, UpdateVars>(UPDATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }],\n });\nexport const useDeleteAttendeeMutation = () =>\n useMutation<DeleteAttendeeResponse, IdVar>(DELETE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\n\nexport const useCreateExhibitorMutation = () =>\n useMutation<CreateExhibitorResponse, CreateVars>(CREATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useUpdateExhibitorMutation = () =>\n useMutation<UpdateExhibitorResponse, UpdateVars>(UPDATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useDeleteExhibitorMutation = () =>\n useMutation<DeleteExhibitorResponse, IdVar>(DELETE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\n\nexport const useCreateLeadMutation = () =>\n useMutation<CreateLeadResponse, CreateVars>(CREATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useUpdateLeadMutation = () =>\n useMutation<UpdateLeadResponse, UpdateVars>(UPDATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useDeleteLeadMutation = () =>\n useMutation<DeleteLeadResponse, IdVar>(DELETE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\n\nexport const useCreateCheckInStationMutation = () =>\n useMutation<CreateCheckInStationResponse, CreateVars>(CREATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useUpdateCheckInStationMutation = () =>\n useMutation<UpdateCheckInStationResponse, UpdateVars>(UPDATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useDeleteCheckInStationMutation = () =>\n useMutation<DeleteCheckInStationResponse, IdVar>(DELETE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\n\nexport const useCreateCheckInRecordMutation = () =>\n useMutation<CreateCheckInRecordResponse, CreateVars>(CREATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useUpdateCheckInRecordMutation = () =>\n useMutation<UpdateCheckInRecordResponse, UpdateVars>(UPDATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useDeleteCheckInRecordMutation = () =>\n useMutation<DeleteCheckInRecordResponse, IdVar>(DELETE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\n\n// BOFF-4330 — kiosk QR scan path. Deliberately has NO `onError` toast: callers\n// (interactive submit AND the background offline-queue sync loop) decide for\n// themselves how to react to a failure — a background sync retry failing\n// because the device is still offline should never pop an error toast.\nexport const useScanCheckInMutation = () =>\n useMutation<ScanCheckInResponse, ScanCheckInVars>(SCAN_CHECK_IN_MUTATION, {\n errorPolicy: 'all',\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\n\nexport const useCreateNetworkingProfileMutation = () =>\n useMutation<CreateNetworkingProfileResponse, CreateVars>(CREATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useUpdateNetworkingProfileMutation = () =>\n useMutation<UpdateNetworkingProfileResponse, UpdateVars>(UPDATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useDeleteNetworkingProfileMutation = () =>\n useMutation<DeleteNetworkingProfileResponse, IdVar>(DELETE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\n\nexport const useCreateNetworkingMatchMutation = () =>\n useMutation<CreateNetworkingMatchResponse, CreateVars>(CREATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useUpdateNetworkingMatchMutation = () =>\n useMutation<UpdateNetworkingMatchResponse, UpdateVars>(UPDATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useDeleteNetworkingMatchMutation = () =>\n useMutation<DeleteNetworkingMatchResponse, IdVar>(DELETE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\n\nexport const useCreateMeetingMutation = () =>\n useMutation<CreateMeetingResponse, CreateVars>(CREATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useUpdateMeetingMutation = () =>\n useMutation<UpdateMeetingResponse, UpdateVars>(UPDATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useDeleteMeetingMutation = () =>\n useMutation<DeleteMeetingResponse, IdVar>(DELETE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\n\nexport const useDeleteEventMutation = () =>\n useMutation<DeleteEventResponse, IdVar>(DELETE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useDeleteVenueMutation = () =>\n useMutation<DeleteVenueResponse, IdVar>(DELETE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useDeleteSponsorMutation = () =>\n useMutation<DeleteSponsorResponse, IdVar>(DELETE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\n\nexport const usePublishAnnouncementMutation = () =>\n useMutation<PublishAnnouncementResponse, IdVar>(PUBLISH_ANNOUNCEMENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n });\nexport const useSendCommunicationCampaignMutation = () =>\n useMutation<SendCommunicationCampaignResponse, IdVar>(SEND_COMMUNICATION_CAMPAIGN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n });\n"],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* offlineCheckInQueue — an offline-first scan queue for kiosk QR check-in
|
|
3
|
+
* (BOFF-4330).
|
|
4
|
+
* @module eventfullymanaged/lib
|
|
5
|
+
*
|
|
6
|
+
* A door scanner may have no connectivity (poor venue Wi-Fi, a dead cell
|
|
7
|
+
* signal) at the exact moment a badge is scanned. Rather than block the
|
|
8
|
+
* kiosk or lose the scan, every QR scan is persisted to IndexedDB the
|
|
9
|
+
* instant it's captured — online or offline — keyed by a client-generated
|
|
10
|
+
* `clientScanId` that is minted once and never regenerated for that scan.
|
|
11
|
+
* The queue is drained automatically once the browser's `online` event
|
|
12
|
+
* fires (and periodically retried while online, in case the network is
|
|
13
|
+
* flaky rather than fully down), replaying the SAME `clientScanId` on every
|
|
14
|
+
* attempt. The backend's `(eventId, clientScanId)` idempotency guarantee
|
|
15
|
+
* (see wspace-eventfullymanaged-svc `checkin-token.ts` / `event.service.ts`
|
|
16
|
+
* `createCheckInRecordTx`) is what makes replaying safe: a scan that
|
|
17
|
+
* actually made it to the server on a previous attempt (but whose response
|
|
18
|
+
* was lost — app killed mid-sync, tab closed) is recognised as a duplicate
|
|
19
|
+
* and returned unchanged rather than double-counted.
|
|
20
|
+
*
|
|
21
|
+
* IndexedDB (not `localStorage`) is used for the same reason the
|
|
22
|
+
* TheCulturePost oral-history offline queue does — see
|
|
23
|
+
* `microfe-theculturepost/src/theculturepost/lib/offlineOralHistoryQueue.ts`
|
|
24
|
+
* for the sibling implementation this one is modeled on. A check-in scan is
|
|
25
|
+
* tiny (no blobs), so `localStorage`'s 5MB cap wouldn't be the concern here,
|
|
26
|
+
* but IndexedDB's async, non-blocking API is still preferable on a kiosk
|
|
27
|
+
* device firing off potentially dozens of scans a minute.
|
|
28
|
+
*/
|
|
29
|
+
export interface PendingScan {
|
|
30
|
+
/** Client-generated idempotency key — stable across retries, used as the IndexedDB key. */
|
|
31
|
+
clientScanId: string;
|
|
32
|
+
/** The signed check-in token decoded from the QR code. */
|
|
33
|
+
token: string;
|
|
34
|
+
stationId: string | null;
|
|
35
|
+
sessionId: string | null;
|
|
36
|
+
method: string;
|
|
37
|
+
direction: string;
|
|
38
|
+
/** When the scan actually happened on-device (ISO), independent of when it syncs. */
|
|
39
|
+
scannedAt: string;
|
|
40
|
+
queuedAt: string;
|
|
41
|
+
attempts: number;
|
|
42
|
+
lastError: string | null;
|
|
43
|
+
}
|
|
44
|
+
/** Persist a new scan to the offline queue. Returns the stored record. */
|
|
45
|
+
export declare function enqueuePendingScan(scan: Omit<PendingScan, 'queuedAt' | 'attempts' | 'lastError'>): Promise<PendingScan>;
|
|
46
|
+
/** List every pending scan, oldest first (so sync replays in capture order). */
|
|
47
|
+
export declare function listPendingScans(): Promise<PendingScan[]>;
|
|
48
|
+
/** Remove a scan once it has synced successfully (or the operator discards it). */
|
|
49
|
+
export declare function removePendingScan(clientScanId: string): Promise<void>;
|
|
50
|
+
/** Record a failed sync attempt so the panel can show why it's still pending. */
|
|
51
|
+
export declare function markPendingScanFailed(clientScanId: string, error: string): Promise<void>;
|
|
52
|
+
/** How many scans are currently queued — powers the kiosk's "pending sync" badge. */
|
|
53
|
+
export declare function countPendingScans(): Promise<number>;
|
|
54
|
+
//# sourceMappingURL=offlineCheckInQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offlineCheckInQueue.d.ts","sourceRoot":"","sources":["../../../src/eventfullymanaged/lib/offlineCheckInQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,MAAM,WAAW,WAAW;IAC1B,2FAA2F;IAC3F,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAmCD,0EAA0E;AAC1E,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC,GAC7D,OAAO,CAAC,WAAW,CAAC,CAStB;AAED,gFAAgF;AAChF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAG/D;AAED,mFAAmF;AACnF,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3E;AAED,iFAAiF;AACjF,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9F;AAED,qFAAqF;AACrF,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEzD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
//#region src/eventfullymanaged/lib/offlineCheckInQueue.ts
|
|
2
|
+
var e = "em-checkin-offline-queue", t = 1, n = "pending-scans";
|
|
3
|
+
function r() {
|
|
4
|
+
return new Promise((r, i) => {
|
|
5
|
+
if (typeof indexedDB > "u") {
|
|
6
|
+
i(/* @__PURE__ */ Error("IndexedDB is not available in this environment."));
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
let a = indexedDB.open(e, t);
|
|
10
|
+
a.onupgradeneeded = () => {
|
|
11
|
+
let e = a.result;
|
|
12
|
+
e.objectStoreNames.contains(n) || e.createObjectStore(n, { keyPath: "clientScanId" });
|
|
13
|
+
}, a.onsuccess = () => r(a.result), a.onerror = () => i(a.error ?? /* @__PURE__ */ Error("Failed to open the offline check-in queue."));
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
async function i(e, t) {
|
|
17
|
+
let i = await r();
|
|
18
|
+
try {
|
|
19
|
+
return await new Promise((r, a) => {
|
|
20
|
+
let o = t(i.transaction(n, e).objectStore(n));
|
|
21
|
+
o.onsuccess = () => r(o.result), o.onerror = () => a(o.error ?? /* @__PURE__ */ Error("Offline check-in queue operation failed."));
|
|
22
|
+
});
|
|
23
|
+
} finally {
|
|
24
|
+
i.close();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function a(e) {
|
|
28
|
+
let t = {
|
|
29
|
+
...e,
|
|
30
|
+
queuedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
31
|
+
attempts: 0,
|
|
32
|
+
lastError: null
|
|
33
|
+
};
|
|
34
|
+
return await i("readwrite", (e) => e.put(t)), t;
|
|
35
|
+
}
|
|
36
|
+
async function o() {
|
|
37
|
+
return [...await i("readonly", (e) => e.getAll())].sort((e, t) => e.queuedAt.localeCompare(t.queuedAt));
|
|
38
|
+
}
|
|
39
|
+
async function s(e) {
|
|
40
|
+
await i("readwrite", (t) => t.delete(e));
|
|
41
|
+
}
|
|
42
|
+
async function c(e, t) {
|
|
43
|
+
let i = await r();
|
|
44
|
+
try {
|
|
45
|
+
await new Promise((r, a) => {
|
|
46
|
+
let o = i.transaction(n, "readwrite").objectStore(n), s = o.get(e);
|
|
47
|
+
s.onsuccess = () => {
|
|
48
|
+
let e = s.result;
|
|
49
|
+
if (!e) {
|
|
50
|
+
r();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
let n = o.put({
|
|
54
|
+
...e,
|
|
55
|
+
attempts: e.attempts + 1,
|
|
56
|
+
lastError: t
|
|
57
|
+
});
|
|
58
|
+
n.onsuccess = () => r(), n.onerror = () => a(n.error ?? /* @__PURE__ */ Error("Failed to record sync failure."));
|
|
59
|
+
}, s.onerror = () => a(s.error ?? /* @__PURE__ */ Error("Failed to load pending scan."));
|
|
60
|
+
});
|
|
61
|
+
} finally {
|
|
62
|
+
i.close();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { a as enqueuePendingScan, o as listPendingScans, c as markPendingScanFailed, s as removePendingScan };
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=offlineCheckInQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offlineCheckInQueue.js","names":[],"sources":["../../../src/eventfullymanaged/lib/offlineCheckInQueue.ts"],"sourcesContent":["/**\n * offlineCheckInQueue — an offline-first scan queue for kiosk QR check-in\n * (BOFF-4330).\n * @module eventfullymanaged/lib\n *\n * A door scanner may have no connectivity (poor venue Wi-Fi, a dead cell\n * signal) at the exact moment a badge is scanned. Rather than block the\n * kiosk or lose the scan, every QR scan is persisted to IndexedDB the\n * instant it's captured — online or offline — keyed by a client-generated\n * `clientScanId` that is minted once and never regenerated for that scan.\n * The queue is drained automatically once the browser's `online` event\n * fires (and periodically retried while online, in case the network is\n * flaky rather than fully down), replaying the SAME `clientScanId` on every\n * attempt. The backend's `(eventId, clientScanId)` idempotency guarantee\n * (see wspace-eventfullymanaged-svc `checkin-token.ts` / `event.service.ts`\n * `createCheckInRecordTx`) is what makes replaying safe: a scan that\n * actually made it to the server on a previous attempt (but whose response\n * was lost — app killed mid-sync, tab closed) is recognised as a duplicate\n * and returned unchanged rather than double-counted.\n *\n * IndexedDB (not `localStorage`) is used for the same reason the\n * TheCulturePost oral-history offline queue does — see\n * `microfe-theculturepost/src/theculturepost/lib/offlineOralHistoryQueue.ts`\n * for the sibling implementation this one is modeled on. A check-in scan is\n * tiny (no blobs), so `localStorage`'s 5MB cap wouldn't be the concern here,\n * but IndexedDB's async, non-blocking API is still preferable on a kiosk\n * device firing off potentially dozens of scans a minute.\n */\n\nconst DB_NAME = 'em-checkin-offline-queue';\nconst DB_VERSION = 1;\nconst STORE_NAME = 'pending-scans';\n\nexport interface PendingScan {\n /** Client-generated idempotency key — stable across retries, used as the IndexedDB key. */\n clientScanId: string;\n /** The signed check-in token decoded from the QR code. */\n token: string;\n stationId: string | null;\n sessionId: string | null;\n method: string;\n direction: string;\n /** When the scan actually happened on-device (ISO), independent of when it syncs. */\n scannedAt: string;\n queuedAt: string;\n attempts: number;\n lastError: string | null;\n}\n\nfunction openDb(): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n if (typeof indexedDB === 'undefined') {\n reject(new Error('IndexedDB is not available in this environment.'));\n return;\n }\n const request = indexedDB.open(DB_NAME, DB_VERSION);\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(STORE_NAME)) {\n db.createObjectStore(STORE_NAME, { keyPath: 'clientScanId' });\n }\n };\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error ?? new Error('Failed to open the offline check-in queue.'));\n });\n}\n\nasync function withStore<T>(mode: IDBTransactionMode, fn: (store: IDBObjectStore) => IDBRequest<T>): Promise<T> {\n const db = await openDb();\n try {\n return await new Promise<T>((resolve, reject) => {\n const tx = db.transaction(STORE_NAME, mode);\n const store = tx.objectStore(STORE_NAME);\n const request = fn(store);\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error ?? new Error('Offline check-in queue operation failed.'));\n });\n } finally {\n db.close();\n }\n}\n\n/** Persist a new scan to the offline queue. Returns the stored record. */\nexport async function enqueuePendingScan(\n scan: Omit<PendingScan, 'queuedAt' | 'attempts' | 'lastError'>\n): Promise<PendingScan> {\n const record: PendingScan = {\n ...scan,\n queuedAt: new Date().toISOString(),\n attempts: 0,\n lastError: null,\n };\n await withStore('readwrite', (store) => store.put(record));\n return record;\n}\n\n/** List every pending scan, oldest first (so sync replays in capture order). */\nexport async function listPendingScans(): Promise<PendingScan[]> {\n const all = await withStore<PendingScan[]>('readonly', (store) => store.getAll());\n return [...all].sort((a, b) => a.queuedAt.localeCompare(b.queuedAt));\n}\n\n/** Remove a scan once it has synced successfully (or the operator discards it). */\nexport async function removePendingScan(clientScanId: string): Promise<void> {\n await withStore('readwrite', (store) => store.delete(clientScanId));\n}\n\n/** Record a failed sync attempt so the panel can show why it's still pending. */\nexport async function markPendingScanFailed(clientScanId: string, error: string): Promise<void> {\n const db = await openDb();\n try {\n await new Promise<void>((resolve, reject) => {\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const store = tx.objectStore(STORE_NAME);\n const getReq = store.get(clientScanId);\n getReq.onsuccess = () => {\n const existing = getReq.result as PendingScan | undefined;\n if (!existing) {\n resolve();\n return;\n }\n const putReq = store.put({ ...existing, attempts: existing.attempts + 1, lastError: error });\n putReq.onsuccess = () => resolve();\n putReq.onerror = () => reject(putReq.error ?? new Error('Failed to record sync failure.'));\n };\n getReq.onerror = () => reject(getReq.error ?? new Error('Failed to load pending scan.'));\n });\n } finally {\n db.close();\n }\n}\n\n/** How many scans are currently queued — powers the kiosk's \"pending sync\" badge. */\nexport async function countPendingScans(): Promise<number> {\n return withStore<number>('readonly', (store) => store.count());\n}\n"],"mappings":";AA6BA,IAAM,IAAU,4BACV,IAAa,GACb,IAAa;AAkBnB,SAAS,IAA+B;AACtC,QAAO,IAAI,SAAS,GAAS,MAAW;AACtC,MAAI,OAAO,YAAc,KAAa;AACpC,KAAO,gBAAI,MAAM,kDAAkD,CAAC;AACpE;;EAEF,IAAM,IAAU,UAAU,KAAK,GAAS,EAAW;AAQnD,EAPA,EAAQ,wBAAwB;GAC9B,IAAM,IAAK,EAAQ;AACnB,GAAK,EAAG,iBAAiB,SAAS,EAAW,IAC3C,EAAG,kBAAkB,GAAY,EAAE,SAAS,gBAAgB,CAAC;KAGjE,EAAQ,kBAAkB,EAAQ,EAAQ,OAAO,EACjD,EAAQ,gBAAgB,EAAO,EAAQ,SAAS,gBAAI,MAAM,6CAA6C,CAAC;GACxG;;AAGJ,eAAe,EAAa,GAA0B,GAA0D;CAC9G,IAAM,IAAK,MAAM,GAAQ;AACzB,KAAI;AACF,SAAO,MAAM,IAAI,SAAY,GAAS,MAAW;GAG/C,IAAM,IAAU,EAFL,EAAG,YAAY,GAAY,EAAK,CAC1B,YAAY,EAAW,CACf;AAEzB,GADA,EAAQ,kBAAkB,EAAQ,EAAQ,OAAO,EACjD,EAAQ,gBAAgB,EAAO,EAAQ,SAAS,gBAAI,MAAM,2CAA2C,CAAC;IACtG;WACM;AACR,IAAG,OAAO;;;AAKd,eAAsB,EACpB,GACsB;CACtB,IAAM,IAAsB;EAC1B,GAAG;EACH,2BAAU,IAAI,MAAM,EAAC,aAAa;EAClC,UAAU;EACV,WAAW;EACZ;AAED,QADA,MAAM,EAAU,cAAc,MAAU,EAAM,IAAI,EAAO,CAAC,EACnD;;AAIT,eAAsB,IAA2C;AAE/D,QAAO,CAAC,GADI,MAAM,EAAyB,aAAa,MAAU,EAAM,QAAQ,CAAC,CAClE,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,cAAc,EAAE,SAAS,CAAC;;AAItE,eAAsB,EAAkB,GAAqC;AAC3E,OAAM,EAAU,cAAc,MAAU,EAAM,OAAO,EAAa,CAAC;;AAIrE,eAAsB,EAAsB,GAAsB,GAA8B;CAC9F,IAAM,IAAK,MAAM,GAAQ;AACzB,KAAI;AACF,QAAM,IAAI,SAAe,GAAS,MAAW;GAE3C,IAAM,IADK,EAAG,YAAY,GAAY,YAAY,CACjC,YAAY,EAAW,EAClC,IAAS,EAAM,IAAI,EAAa;AAWtC,GAVA,EAAO,kBAAkB;IACvB,IAAM,IAAW,EAAO;AACxB,QAAI,CAAC,GAAU;AACb,QAAS;AACT;;IAEF,IAAM,IAAS,EAAM,IAAI;KAAE,GAAG;KAAU,UAAU,EAAS,WAAW;KAAG,WAAW;KAAO,CAAC;AAE5F,IADA,EAAO,kBAAkB,GAAS,EAClC,EAAO,gBAAgB,EAAO,EAAO,SAAS,gBAAI,MAAM,iCAAiC,CAAC;MAE5F,EAAO,gBAAgB,EAAO,EAAO,SAAS,gBAAI,MAAM,+BAA+B,CAAC;IACxF;WACM;AACR,IAAG,OAAO"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PendingScan } from './offlineCheckInQueue';
|
|
2
|
+
|
|
3
|
+
type ScanCheckInMutate = (options: {
|
|
4
|
+
variables: {
|
|
5
|
+
input: Record<string, unknown>;
|
|
6
|
+
};
|
|
7
|
+
}) => Promise<{
|
|
8
|
+
data?: {
|
|
9
|
+
scanCheckIn?: {
|
|
10
|
+
id?: string;
|
|
11
|
+
} | null;
|
|
12
|
+
} | null;
|
|
13
|
+
error?: {
|
|
14
|
+
message: string;
|
|
15
|
+
} | null;
|
|
16
|
+
}>;
|
|
17
|
+
export interface OfflineCheckInSyncState {
|
|
18
|
+
/** Live `navigator.onLine` state (assumes online in non-browser test environments). */
|
|
19
|
+
isOnline: boolean;
|
|
20
|
+
/** How many scans are currently queued, waiting to sync. */
|
|
21
|
+
pendingCount: number;
|
|
22
|
+
/** Manually kick a sync pass (e.g. a "Retry now" button). */
|
|
23
|
+
syncNow: () => void;
|
|
24
|
+
/** Refresh `pendingCount` from IndexedDB without triggering a sync. */
|
|
25
|
+
refreshPendingCount: () => void;
|
|
26
|
+
}
|
|
27
|
+
export declare function useOfflineCheckInSync(scanCheckIn: ScanCheckInMutate, onSynced?: (scan: PendingScan) => void): OfflineCheckInSyncState;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=useOfflineCheckInSync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOfflineCheckInSync.d.ts","sourceRoot":"","sources":["../../../src/eventfullymanaged/lib/useOfflineCheckInSync.ts"],"names":[],"mappings":"AAwBA,OAAO,EAA8D,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIrH,KAAK,iBAAiB,GAAG,CAAC,OAAO,EAAE;IACjC,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC/C,KAAK,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC;AAE9G,MAAM,WAAW,uBAAuB;IACtC,uFAAuF;IACvF,QAAQ,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAcD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,iBAAiB,EAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GACrC,uBAAuB,CA4EzB"}
|