@burdenoff/microfe-workspaces 2026.1006.1 → 2026.1013.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/WorkspacesRoot.js +0 -2
- package/dist/WorkspacesRoutes.js +0 -2
- package/dist/components/CreateProjectDialog.js +0 -2
- package/dist/components/CreateWorkspaceDialog.js +0 -2
- package/dist/components/InviteMemberDialog.js +0 -2
- package/dist/components/MemberListItem.js +0 -2
- package/dist/components/ProjectCard.js +0 -2
- package/dist/components/ProjectMemberPickerDialog.js +0 -2
- package/dist/components/RenameProjectDialog.js +0 -2
- package/dist/components/WorkspaceCard.js +0 -2
- package/dist/components/WorkspaceContextPathSync.js +0 -2
- package/dist/components/WorkspacesErrorBoundary.js +0 -2
- package/dist/components/tags/ProjectTagsWidget.js +0 -2
- package/dist/constants/permissions.js +0 -2
- package/dist/generated/global-operations.js +0 -2
- package/dist/generated/wspace-operations.js +0 -2
- package/dist/hooks/useMemberMutations.js +0 -2
- package/dist/hooks/useOrgsWithPermission.js +0 -2
- package/dist/hooks/usePendingInvitations.js +0 -2
- package/dist/hooks/useProjectMemberMutations.js +0 -2
- package/dist/hooks/useProjectMembers.js +0 -2
- package/dist/hooks/useProjectMutations.js +0 -2
- package/dist/hooks/useProjects.js +0 -2
- package/dist/hooks/useScopedNavigation.js +0 -2
- package/dist/hooks/useTenants.js +0 -2
- package/dist/hooks/useTr.js +0 -2
- package/dist/hooks/useWorkspaceActivity.js +0 -2
- package/dist/hooks/useWorkspaceMembers.js +0 -2
- package/dist/hooks/useWorkspaceMutations.js +0 -2
- package/dist/hooks/useWorkspacePermissions.js +0 -2
- package/dist/hooks/useWorkspaceRoles.js +0 -2
- package/dist/hooks/useWorkspaces.js +0 -2
- package/dist/hooks/useWorkspacesEventEmitter.js +0 -2
- package/dist/hooks/useWorkspacesPageView.js +0 -2
- package/dist/pages/ActivityListPage.js +0 -2
- package/dist/pages/CreateWorkspacePage.js +0 -2
- package/dist/pages/InviteAcceptancePage.js +0 -2
- package/dist/pages/MembersListPage.js +0 -2
- package/dist/pages/PendingInvitesPage.js +0 -2
- package/dist/pages/ProjectDetailPage.js +0 -2
- package/dist/pages/ProjectMembersPage.js +0 -2
- package/dist/pages/ProjectsListPage.js +0 -2
- package/dist/pages/WorkspaceDetailPage.js +0 -2
- package/dist/pages/WorkspaceInvitePage.js +0 -2
- package/dist/pages/WorkspaceSettingsPage.js +0 -2
- package/dist/pages/WorkspacesListPage.js +0 -2
- package/dist/pages/dashboard/DashboardCustomizer.js +0 -2
- package/dist/pages/dashboard/DashboardGrid.js +0 -2
- package/dist/pages/dashboard/DashboardPage.js +0 -2
- package/dist/pages/dashboard/WidgetWrapper.js +0 -2
- package/dist/pages/dashboard/config.js +0 -2
- package/dist/pages/dashboard/hooks/useDashboardData.js +0 -2
- package/dist/pages/dashboard/hooks/useDashboardPreferences.js +0 -2
- package/dist/pages/dashboard/reorder.js +0 -2
- package/dist/pages/dashboard/widgets/AgentsWidget.js +0 -2
- package/dist/pages/dashboard/widgets/GroupsWidget.js +0 -2
- package/dist/pages/dashboard/widgets/MembersWidget.js +0 -2
- package/dist/pages/dashboard/widgets/ProjectsWidget.js +0 -2
- package/dist/pages/dashboard/widgets/QuickActionsWidget.js +0 -2
- package/dist/pages/dashboard/widgets/RecentActivityWidget.js +0 -2
- package/dist/pages/dashboard/widgets/SessionsWidget.js +0 -2
- package/dist/pages/dashboard/widgets/StorageWidget.js +0 -2
- package/dist/pages/dashboard/widgets/TagCloudWidget.js +0 -2
- package/dist/pages/dashboard/widgets/TipsWidget.js +0 -2
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js +0 -2
- package/dist/pages/dashboard/widgets/VibesWidget.js +0 -2
- package/dist/pages/dashboard/widgets/WelcomeWidget.js +0 -2
- package/dist/pages/dashboard/widgets/WorkflowRunsWidget.js +0 -2
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js +0 -2
- package/dist/pages/dashboard/widgets/WorkflowsOverviewWidget.js +0 -2
- package/dist/pages/dashboard/widgets/WorkspacesWidget.js +0 -2
- package/dist/providers/WorkspacesProvider.js +0 -2
- package/dist/store/workspacesStore.js +0 -2
- package/dist/translations/en.js +0 -2
- package/dist/utils/formatters.js +0 -2
- package/dist/utils/i18n.js +0 -2
- package/dist/utils/invitationDisplay.js +0 -2
- package/dist/utils/projectTags.js +0 -2
- package/dist/utils/slug.js +0 -2
- package/dist/utils/telemetryError.js +0 -2
- package/dist/utils/tokenHelpers.js +0 -2
- package/dist/utils/workspaceBulkInviteCsv.js +0 -2
- package/package.json +3 -2
- package/dist/WorkspacesRoot.js.map +0 -1
- package/dist/WorkspacesRoutes.js.map +0 -1
- package/dist/components/CreateProjectDialog.js.map +0 -1
- package/dist/components/CreateWorkspaceDialog.js.map +0 -1
- package/dist/components/InviteMemberDialog.js.map +0 -1
- package/dist/components/MemberListItem.js.map +0 -1
- package/dist/components/ProjectCard.js.map +0 -1
- package/dist/components/ProjectMemberPickerDialog.js.map +0 -1
- package/dist/components/RenameProjectDialog.js.map +0 -1
- package/dist/components/WorkspaceCard.js.map +0 -1
- package/dist/components/WorkspaceContextPathSync.js.map +0 -1
- package/dist/components/WorkspacesErrorBoundary.js.map +0 -1
- package/dist/components/tags/ProjectTagsWidget.js.map +0 -1
- package/dist/constants/permissions.js.map +0 -1
- package/dist/generated/global-operations.js.map +0 -1
- package/dist/generated/wspace-operations.js.map +0 -1
- package/dist/hooks/useMemberMutations.js.map +0 -1
- package/dist/hooks/useOrgsWithPermission.js.map +0 -1
- package/dist/hooks/usePendingInvitations.js.map +0 -1
- package/dist/hooks/useProjectMemberMutations.js.map +0 -1
- package/dist/hooks/useProjectMembers.js.map +0 -1
- package/dist/hooks/useProjectMutations.js.map +0 -1
- package/dist/hooks/useProjects.js.map +0 -1
- package/dist/hooks/useScopedNavigation.js.map +0 -1
- package/dist/hooks/useTenants.js.map +0 -1
- package/dist/hooks/useTr.js.map +0 -1
- package/dist/hooks/useWorkspaceActivity.js.map +0 -1
- package/dist/hooks/useWorkspaceMembers.js.map +0 -1
- package/dist/hooks/useWorkspaceMutations.js.map +0 -1
- package/dist/hooks/useWorkspacePermissions.js.map +0 -1
- package/dist/hooks/useWorkspaceRoles.js.map +0 -1
- package/dist/hooks/useWorkspaces.js.map +0 -1
- package/dist/hooks/useWorkspacesEventEmitter.js.map +0 -1
- package/dist/hooks/useWorkspacesPageView.js.map +0 -1
- package/dist/pages/ActivityListPage.js.map +0 -1
- package/dist/pages/CreateWorkspacePage.js.map +0 -1
- package/dist/pages/InviteAcceptancePage.js.map +0 -1
- package/dist/pages/MembersListPage.js.map +0 -1
- package/dist/pages/PendingInvitesPage.js.map +0 -1
- package/dist/pages/ProjectDetailPage.js.map +0 -1
- package/dist/pages/ProjectMembersPage.js.map +0 -1
- package/dist/pages/ProjectsListPage.js.map +0 -1
- package/dist/pages/WorkspaceDetailPage.js.map +0 -1
- package/dist/pages/WorkspaceInvitePage.js.map +0 -1
- package/dist/pages/WorkspaceSettingsPage.js.map +0 -1
- package/dist/pages/WorkspacesListPage.js.map +0 -1
- package/dist/pages/dashboard/DashboardCustomizer.js.map +0 -1
- package/dist/pages/dashboard/DashboardGrid.js.map +0 -1
- package/dist/pages/dashboard/DashboardPage.js.map +0 -1
- package/dist/pages/dashboard/WidgetWrapper.js.map +0 -1
- package/dist/pages/dashboard/config.js.map +0 -1
- package/dist/pages/dashboard/hooks/useDashboardData.js.map +0 -1
- package/dist/pages/dashboard/hooks/useDashboardPreferences.js.map +0 -1
- package/dist/pages/dashboard/reorder.js.map +0 -1
- package/dist/pages/dashboard/widgets/AgentsWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/GroupsWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/MembersWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/ProjectsWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/QuickActionsWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/RecentActivityWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/SessionsWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/StorageWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/TagCloudWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/TipsWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/VibesWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/WelcomeWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/WorkflowRunsWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/WorkflowsOverviewWidget.js.map +0 -1
- package/dist/pages/dashboard/widgets/WorkspacesWidget.js.map +0 -1
- package/dist/providers/WorkspacesProvider.js.map +0 -1
- package/dist/store/workspacesStore.js.map +0 -1
- package/dist/translations/en.js.map +0 -1
- package/dist/utils/formatters.js.map +0 -1
- package/dist/utils/i18n.js.map +0 -1
- package/dist/utils/invitationDisplay.js.map +0 -1
- package/dist/utils/projectTags.js.map +0 -1
- package/dist/utils/slug.js.map +0 -1
- package/dist/utils/telemetryError.js.map +0 -1
- package/dist/utils/tokenHelpers.js.map +0 -1
- package/dist/utils/workspaceBulkInviteCsv.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wspace-operations.js","names":[],"sources":["../../src/generated/wspace-operations.ts"],"sourcesContent":["// @ts-nocheck\nimport * as Types from './wspace-types';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nimport * as ApolloReactHooks from '@apollo/client/react';\nconst defaultOptions = {} as const;\nexport type DashboardProjectsQueryVariables = Types.Exact<{\n filter?: Types.InputMaybe<Types.ProjectFilterInput>;\n}>;\n\n\nexport type DashboardProjectsQuery = { __typename?: 'Query', projects: { __typename?: 'ProjectList', total: number, items: Array<{ __typename?: 'Project', id: string, name: string, key: string, status: Types.ProjectStatus, workspaceId: string, createdAt: string }> } };\n\nexport type DashboardWorkspaceDataQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type DashboardWorkspaceDataQuery = { __typename?: 'Query', getRecentActivities: Array<{ __typename?: 'ActivityLog', id: string, action: string, resourceType?: string | null, resourceId?: string | null, userId: string, description?: string | null, details?: Record<string, unknown> | null, timestamp: string }>, upcomingEvents: Array<{ __typename?: 'CalendarEvent', id: string, title: string, startTime: string, endTime: string, calendarId: string, allDay: boolean }>, getTags: { __typename?: 'TagList', total: number, items: Array<{ __typename?: 'UniversalTag', id: string, label: string, key: string }> }, myGroups: { __typename?: 'GroupConnection', totalCount: number, edges: Array<{ __typename?: 'GroupEdge', node: { __typename?: 'Group', id: string, name: string, description?: string | null } }> }, dashboardSummary: { __typename?: 'DashboardSummary', activeWorkflowsCount: number, archivedWorkflowsCount: number, workflowsCount: number, runsCountTotal: number, runsRunningCount: number, runsFailedLast24h: number, workflowSuccessRate?: number | null, recentWorkflows: Array<{ __typename?: 'RecentWorkflow', workflowKey: string, name: string, version: string, updatedAt: string }>, recentRuns: Array<{ __typename?: 'RecentRun', id: string, status: string, workflowKey: string, startedAt?: string | null }> }, workspaceResourceUsage?: { __typename?: 'WorkspaceResourceUsage', currentStorageGb: number } | null, workspaceResourceLimits?: { __typename?: 'WorkspaceResourceLimits', maxStorageGb?: number | null } | null };\n\nexport type AddWorkspaceMemberMutationVariables = Types.Exact<{\n input: Types.AddWorkspaceMemberInput;\n}>;\n\n\nexport type AddWorkspaceMemberMutation = { __typename?: 'Mutation', addWorkspaceMember: { __typename?: 'WorkspaceMember', id: string, workspaceId: string, userId: string, createdAt: string, updatedAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null } };\n\nexport type RemoveWorkspaceMemberMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type RemoveWorkspaceMemberMutation = { __typename?: 'Mutation', removeWorkspaceMember: boolean };\n\nexport type RemoveUserFromWorkspaceMutationVariables = Types.Exact<{\n userId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type RemoveUserFromWorkspaceMutation = { __typename?: 'Mutation', removeUserFromWorkspace: boolean };\n\nexport type CreateInvitationMutationVariables = Types.Exact<{\n input: Types.CreateInvitationInput;\n}>;\n\n\nexport type CreateInvitationMutation = { __typename?: 'Mutation', createInvitation: { __typename?: 'Invitation', id: string, email: string, status: Types.InviteStatus, roleIds: Array<string>, workspaceId?: string | null, projectId?: string | null, invitedUserId?: string | null, invitedById?: string | null, expiresAt?: string | null, createdAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null } };\n\nexport type UpdateInvitationMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n input: Types.UpdateInvitationInput;\n}>;\n\n\nexport type UpdateInvitationMutation = { __typename?: 'Mutation', updateInvitation: { __typename?: 'Invitation', id: string, email: string, status: Types.InviteStatus, roleIds: Array<string>, expiresAt?: string | null, updatedAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null } };\n\nexport type AcceptInvitationMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type AcceptInvitationMutation = { __typename?: 'Mutation', acceptInvitation: { __typename?: 'Invitation', id: string, status: Types.InviteStatus, updatedAt: string } };\n\nexport type RejectInvitationMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type RejectInvitationMutation = { __typename?: 'Mutation', rejectInvitation: { __typename?: 'Invitation', id: string, status: Types.InviteStatus, updatedAt: string } };\n\nexport type CancelInvitationMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type CancelInvitationMutation = { __typename?: 'Mutation', cancelInvitation: { __typename?: 'Invitation', id: string, status: Types.InviteStatus, updatedAt: string } };\n\nexport type ResendInvitationMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type ResendInvitationMutation = { __typename?: 'Mutation', resendInvitation: { __typename?: 'Invitation', id: string, updatedAt: string } };\n\nexport type DeleteInvitationMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type DeleteInvitationMutation = { __typename?: 'Mutation', deleteInvitation: boolean };\n\nexport type BulkCreateInvitationsMutationVariables = Types.Exact<{\n inputs: Array<Types.CreateInvitationInput> | Types.CreateInvitationInput;\n}>;\n\n\nexport type BulkCreateInvitationsMutation = { __typename?: 'Mutation', bulkCreateInvitations: Array<{ __typename?: 'Invitation', id: string, email: string, status: Types.InviteStatus, workspaceId?: string | null, projectId?: string | null, createdAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null }> };\n\nexport type CreateProjectMutationVariables = Types.Exact<{\n input: Types.CreateProjectInput;\n}>;\n\n\nexport type CreateProjectMutation = { __typename?: 'Mutation', createProject: { __typename?: 'Project', id: string, name: string, key: string, workspaceId: string, creatorId: string, status: Types.ProjectStatus, tags: Record<string, unknown>, createdAt: string } };\n\nexport type UpdateProjectMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n input: Types.UpdateProjectInput;\n}>;\n\n\nexport type UpdateProjectMutation = { __typename?: 'Mutation', updateProject: { __typename?: 'Project', id: string, name: string, key: string, status: Types.ProjectStatus, config?: Record<string, unknown> | null, tags: Record<string, unknown>, archived: boolean, updatedAt: string } };\n\nexport type DeleteProjectMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type DeleteProjectMutation = { __typename?: 'Mutation', deleteProject: boolean };\n\nexport type ArchiveProjectMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type ArchiveProjectMutation = { __typename?: 'Mutation', archiveProject: { __typename?: 'Project', id: string, archived: boolean, updatedAt: string } };\n\nexport type UnarchiveProjectMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type UnarchiveProjectMutation = { __typename?: 'Mutation', unarchiveProject: { __typename?: 'Project', id: string, archived: boolean, updatedAt: string } };\n\nexport type SwitchProjectMutationVariables = Types.Exact<{\n projectId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type SwitchProjectMutation = { __typename?: 'Mutation', switchProject: { __typename?: 'ProjectAuthResponse', token: string, expiresAt: string, project: { __typename?: 'Project', id: string, name: string, key: string, workspaceId: string, status: Types.ProjectStatus, tags: Record<string, unknown>, archived: boolean } } };\n\nexport type TagProjectMutationVariables = Types.Exact<{\n input: Types.TagProjectInput;\n}>;\n\n\nexport type TagProjectMutation = { __typename?: 'Mutation', tagProject: { __typename?: 'ProjectTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabulary: { __typename?: 'TagVocabulary', key: string } } | null } };\n\nexport type UntagProjectMutationVariables = Types.Exact<{\n input: Types.UntagProjectInput;\n}>;\n\n\nexport type UntagProjectMutation = { __typename?: 'Mutation', untagProject: boolean };\n\nexport type ReplaceProjectTagsMutationVariables = Types.Exact<{\n input: Types.ReplaceProjectTagsInput;\n}>;\n\n\nexport type ReplaceProjectTagsMutation = { __typename?: 'Mutation', replaceProjectTags: Array<{ __typename?: 'ProjectTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabulary: { __typename?: 'TagVocabulary', key: string } } | null }> };\n\nexport type CreateWorkspaceMutationVariables = Types.Exact<{\n input: Types.CreateWorkspaceInput;\n}>;\n\n\nexport type CreateWorkspaceMutation = { __typename?: 'Mutation', createWorkspace: { __typename?: 'Workspace', id: string, name: string, type: Types.WorkspaceType, status: Types.WorkspaceStatus, tenantId: string, ownerId: string, createdAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null } };\n\nexport type UpdateWorkspaceMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n input: Types.UpdateWorkspaceInput;\n}>;\n\n\nexport type UpdateWorkspaceMutation = { __typename?: 'Mutation', updateWorkspace: { __typename?: 'Workspace', id: string, name: string, type: Types.WorkspaceType, status: Types.WorkspaceStatus, domain?: string | null, contactEmail?: string | null, website?: string | null, address?: string | null, ownerId: string, updatedAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null } };\n\nexport type DeleteWorkspaceMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type DeleteWorkspaceMutation = { __typename?: 'Mutation', deleteWorkspace: boolean };\n\nexport type ArchiveWorkspaceMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type ArchiveWorkspaceMutation = { __typename?: 'Mutation', updateWorkspace: { __typename?: 'Workspace', id: string, name: string, status: Types.WorkspaceStatus, updatedAt: string } };\n\nexport type ReactivateWorkspaceMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type ReactivateWorkspaceMutation = { __typename?: 'Mutation', updateWorkspace: { __typename?: 'Workspace', id: string, name: string, status: Types.WorkspaceStatus, updatedAt: string } };\n\nexport type InitializeWorkspaceMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type InitializeWorkspaceMutation = { __typename?: 'Mutation', initializeWorkspace: { __typename?: 'Workspace', id: string, status: Types.WorkspaceStatus, updatedAt: string } };\n\nexport type TagWorkspaceMutationVariables = Types.Exact<{\n input: Types.TagWorkspaceInput;\n}>;\n\n\nexport type TagWorkspaceMutation = { __typename?: 'Mutation', tagWorkspace: { __typename?: 'WorkspaceTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null } | null } };\n\nexport type UntagWorkspaceMutationVariables = Types.Exact<{\n input: Types.UntagWorkspaceInput;\n}>;\n\n\nexport type UntagWorkspaceMutation = { __typename?: 'Mutation', untagWorkspace: boolean };\n\nexport type ReplaceWorkspaceTagsMutationVariables = Types.Exact<{\n input: Types.ReplaceWorkspaceTagsInput;\n}>;\n\n\nexport type ReplaceWorkspaceTagsMutation = { __typename?: 'Mutation', replaceWorkspaceTags: Array<{ __typename?: 'WorkspaceTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null } | null }> };\n\nexport type WorkspaceMemberFieldsFragment = { __typename?: 'WorkspaceMember', id: string, workspaceId: string, userId: string, createdAt: string, updatedAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null };\n\nexport type InvitationCardFieldsFragment = { __typename?: 'Invitation', id: string, email: string, status: Types.InviteStatus, roleIds: Array<string>, workspaceId?: string | null, invitedById?: string | null, expiresAt?: string | null, createdAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null };\n\nexport type InvitationFullFieldsFragment = { __typename?: 'Invitation', projectId?: string | null, invitedUserId?: string | null, updatedAt: string, deletedAt?: string | null, id: string, email: string, status: Types.InviteStatus, roleIds: Array<string>, workspaceId?: string | null, invitedById?: string | null, expiresAt?: string | null, createdAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null };\n\nexport type GetWorkspaceMembersQueryVariables = Types.Exact<{\n workspaceId: Types.Scalars['ID']['input'];\n pagination?: Types.InputMaybe<Types.PaginationInput>;\n}>;\n\n\nexport type GetWorkspaceMembersQuery = { __typename?: 'Query', workspaceMembers: { __typename?: 'WorkspaceMemberList', total: number, hasMore: boolean, items: Array<{ __typename?: 'WorkspaceMember', id: string, workspaceId: string, userId: string, createdAt: string, updatedAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null }> } };\n\nexport type GetWorkspaceMemberQueryVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetWorkspaceMemberQuery = { __typename?: 'Query', workspaceMember?: { __typename?: 'WorkspaceMember', id: string, workspaceId: string, userId: string, createdAt: string, updatedAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null } | null };\n\nexport type GetUserWorkspacesQueryVariables = Types.Exact<{\n userId: Types.Scalars['ID']['input'];\n pagination?: Types.InputMaybe<Types.PaginationInput>;\n}>;\n\n\nexport type GetUserWorkspacesQuery = { __typename?: 'Query', userWorkspaces: { __typename?: 'WorkspaceMemberList', total: number, hasMore: boolean, items: Array<{ __typename?: 'WorkspaceMember', id: string, workspaceId: string, userId: string, createdAt: string, updatedAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null }> } };\n\nexport type GetWorkspaceInvitationsQueryVariables = Types.Exact<{\n status?: Types.InputMaybe<Types.InviteStatus>;\n pagination?: Types.InputMaybe<Types.PaginationInput>;\n}>;\n\n\nexport type GetWorkspaceInvitationsQuery = { __typename?: 'Query', workspaceInvitations: { __typename?: 'InvitationList', total: number, hasMore: boolean, items: Array<{ __typename?: 'Invitation', projectId?: string | null, invitedUserId?: string | null, updatedAt: string, deletedAt?: string | null, id: string, email: string, status: Types.InviteStatus, roleIds: Array<string>, workspaceId?: string | null, invitedById?: string | null, expiresAt?: string | null, createdAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null }> } };\n\nexport type GetInvitationQueryVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetInvitationQuery = { __typename?: 'Query', invitation?: { __typename?: 'Invitation', projectId?: string | null, invitedUserId?: string | null, updatedAt: string, deletedAt?: string | null, id: string, email: string, status: Types.InviteStatus, roleIds: Array<string>, workspaceId?: string | null, invitedById?: string | null, expiresAt?: string | null, createdAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null } | null };\n\nexport type GetMyPendingInvitationsQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetMyPendingInvitationsQuery = { __typename?: 'Query', myPendingInvitations: Array<{ __typename?: 'Invitation', deletedAt?: string | null, id: string, email: string, status: Types.InviteStatus, roleIds: Array<string>, workspaceId?: string | null, invitedById?: string | null, expiresAt?: string | null, createdAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null }> };\n\nexport type ProjectCardFieldsFragment = { __typename?: 'Project', id: string, name: string, key: string, workspaceId: string, status: Types.ProjectStatus, tags: Record<string, unknown>, archived: boolean, createdAt: string, updatedAt: string };\n\nexport type ProjectFullFieldsFragment = { __typename?: 'Project', creatorId: string, config?: Record<string, unknown> | null, deletedAt?: string | null, id: string, name: string, key: string, workspaceId: string, status: Types.ProjectStatus, tags: Record<string, unknown>, archived: boolean, createdAt: string, updatedAt: string, tagAssignments?: Array<{ __typename?: 'ProjectTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabulary: { __typename?: 'TagVocabulary', key: string } } | null }> | null };\n\nexport type GetProjectsQueryVariables = Types.Exact<{\n filter?: Types.InputMaybe<Types.ProjectFilterInput>;\n pagination?: Types.InputMaybe<Types.PaginationInput>;\n}>;\n\n\nexport type GetProjectsQuery = { __typename?: 'Query', projects: { __typename?: 'ProjectList', total: number, hasMore: boolean, items: Array<{ __typename?: 'Project', creatorId: string, config?: Record<string, unknown> | null, deletedAt?: string | null, id: string, name: string, key: string, workspaceId: string, status: Types.ProjectStatus, tags: Record<string, unknown>, archived: boolean, createdAt: string, updatedAt: string, tagAssignments?: Array<{ __typename?: 'ProjectTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabulary: { __typename?: 'TagVocabulary', key: string } } | null }> | null }> } };\n\nexport type GetProjectQueryVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetProjectQuery = { __typename?: 'Query', project?: { __typename?: 'Project', creatorId: string, config?: Record<string, unknown> | null, deletedAt?: string | null, id: string, name: string, key: string, workspaceId: string, status: Types.ProjectStatus, tags: Record<string, unknown>, archived: boolean, createdAt: string, updatedAt: string, tagAssignments?: Array<{ __typename?: 'ProjectTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabulary: { __typename?: 'TagVocabulary', key: string } } | null }> | null } | null };\n\nexport type GetMyProjectsQueryVariables = Types.Exact<{\n pagination?: Types.InputMaybe<Types.PaginationInput>;\n}>;\n\n\nexport type GetMyProjectsQuery = { __typename?: 'Query', myProjects: { __typename?: 'ProjectList', total: number, hasMore: boolean, items: Array<{ __typename?: 'Project', id: string, name: string, key: string, workspaceId: string, status: Types.ProjectStatus, tags: Record<string, unknown>, archived: boolean, createdAt: string, updatedAt: string }> } };\n\nexport type ProjectTagAssignmentFieldsFragment = { __typename?: 'ProjectTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabulary: { __typename?: 'TagVocabulary', key: string } } | null };\n\nexport type GetProjectTagsQueryVariables = Types.Exact<{\n input: Types.GetProjectTagsInput;\n}>;\n\n\nexport type GetProjectTagsQuery = { __typename?: 'Query', getProjectTags: Array<{ __typename?: 'ProjectTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabulary: { __typename?: 'TagVocabulary', key: string } } | null }> };\n\nexport type WorkspaceCardFieldsFragment = { __typename?: 'Workspace', id: string, name: string, type: Types.WorkspaceType, status: Types.WorkspaceStatus, domain?: string | null, contactEmail?: string | null, createdAt: string, updatedAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null };\n\nexport type WorkspaceFullFieldsFragment = { __typename?: 'Workspace', website?: string | null, address?: string | null, tenantId: string, orgId?: string | null, createdBy?: string | null, ownerId: string, deletedAt?: string | null, id: string, name: string, type: Types.WorkspaceType, status: Types.WorkspaceStatus, domain?: string | null, contactEmail?: string | null, createdAt: string, updatedAt: string, tagAssignments?: Array<{ __typename?: 'WorkspaceTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null } | null }> | null, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null };\n\nexport type GetWorkspacesQueryVariables = Types.Exact<{\n filter?: Types.InputMaybe<Types.WorkspaceFilterInput>;\n pagination?: Types.InputMaybe<Types.PaginationInput>;\n}>;\n\n\nexport type GetWorkspacesQuery = { __typename?: 'Query', workspaces: { __typename?: 'WorkspaceList', total: number, hasMore: boolean, items: Array<{ __typename?: 'Workspace', website?: string | null, address?: string | null, tenantId: string, orgId?: string | null, createdBy?: string | null, ownerId: string, deletedAt?: string | null, id: string, name: string, type: Types.WorkspaceType, status: Types.WorkspaceStatus, domain?: string | null, contactEmail?: string | null, createdAt: string, updatedAt: string, tagAssignments?: Array<{ __typename?: 'WorkspaceTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null } | null }> | null, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null }> } };\n\nexport type GetWorkspaceQueryVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetWorkspaceQuery = { __typename?: 'Query', workspace?: { __typename?: 'Workspace', website?: string | null, address?: string | null, tenantId: string, orgId?: string | null, createdBy?: string | null, ownerId: string, deletedAt?: string | null, id: string, name: string, type: Types.WorkspaceType, status: Types.WorkspaceStatus, domain?: string | null, contactEmail?: string | null, createdAt: string, updatedAt: string, tagAssignments?: Array<{ __typename?: 'WorkspaceTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null } | null }> | null, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null } | null };\n\nexport type GetMyWorkspacesQueryVariables = Types.Exact<{\n pagination?: Types.InputMaybe<Types.PaginationInput>;\n}>;\n\n\nexport type GetMyWorkspacesQuery = { __typename?: 'Query', myWorkspaces: { __typename?: 'WorkspaceList', total: number, hasMore: boolean, items: Array<{ __typename?: 'Workspace', id: string, name: string, type: Types.WorkspaceType, status: Types.WorkspaceStatus, domain?: string | null, contactEmail?: string | null, createdAt: string, updatedAt: string, context?: { __typename?: 'WorkspaceOperationContext', type?: string | null, metadata?: Record<string, unknown> | null } | null }> } };\n\nexport type WorkspaceTagAssignmentFieldsFragment = { __typename?: 'WorkspaceTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null } | null };\n\nexport type GetWorkspaceTagsQueryVariables = Types.Exact<{\n input: Types.GetWorkspaceTagsInput;\n}>;\n\n\nexport type GetWorkspaceTagsQuery = { __typename?: 'Query', getWorkspaceTags: Array<{ __typename?: 'WorkspaceTagAssignment', id: string, tagId: string, entityType: string, entityId: string, source: string, assignedBy?: string | null, assignedAt?: string | null, validFrom?: string | null, validTo?: string | null, metadata?: Record<string, unknown> | null, tag?: { __typename?: 'UniversalTag', id: string, key: string, label: string, value?: string | null, color?: string | null, icon?: string | null, description?: string | null, vocabularyId: string, parentId?: string | null, hierarchyPath?: string | null } | null }> };\n\nexport const WorkspaceMemberFieldsFragmentDoc = gql`\n fragment WorkspaceMemberFields on WorkspaceMember {\n id\n workspaceId\n userId\n createdAt\n updatedAt\n context {\n type\n metadata\n }\n}\n `;\nexport const InvitationCardFieldsFragmentDoc = gql`\n fragment InvitationCardFields on Invitation {\n id\n email\n status\n roleIds\n workspaceId\n invitedById\n expiresAt\n createdAt\n context {\n type\n metadata\n }\n}\n `;\nexport const InvitationFullFieldsFragmentDoc = gql`\n fragment InvitationFullFields on Invitation {\n ...InvitationCardFields\n projectId\n invitedUserId\n updatedAt\n deletedAt\n}\n ${InvitationCardFieldsFragmentDoc}`;\nexport const ProjectCardFieldsFragmentDoc = gql`\n fragment ProjectCardFields on Project {\n id\n name\n key\n workspaceId\n status\n tags\n archived\n createdAt\n updatedAt\n}\n `;\nexport const ProjectTagAssignmentFieldsFragmentDoc = gql`\n fragment ProjectTagAssignmentFields on ProjectTagAssignment {\n id\n tagId\n entityType\n entityId\n source\n assignedBy\n assignedAt\n validFrom\n validTo\n metadata\n tag {\n id\n key\n label\n value\n vocabularyId\n parentId\n hierarchyPath\n color\n icon\n description\n vocabulary {\n key\n }\n }\n}\n `;\nexport const ProjectFullFieldsFragmentDoc = gql`\n fragment ProjectFullFields on Project {\n ...ProjectCardFields\n creatorId\n config\n deletedAt\n tagAssignments {\n ...ProjectTagAssignmentFields\n }\n}\n ${ProjectCardFieldsFragmentDoc}\n${ProjectTagAssignmentFieldsFragmentDoc}`;\nexport const WorkspaceCardFieldsFragmentDoc = gql`\n fragment WorkspaceCardFields on Workspace {\n id\n name\n type\n status\n domain\n contactEmail\n createdAt\n updatedAt\n context {\n type\n metadata\n }\n}\n `;\nexport const WorkspaceTagAssignmentFieldsFragmentDoc = gql`\n fragment WorkspaceTagAssignmentFields on WorkspaceTagAssignment {\n id\n tagId\n entityType\n entityId\n source\n assignedBy\n assignedAt\n validFrom\n validTo\n metadata\n tag {\n id\n key\n label\n value\n color\n icon\n description\n vocabularyId\n parentId\n hierarchyPath\n }\n}\n `;\nexport const WorkspaceFullFieldsFragmentDoc = gql`\n fragment WorkspaceFullFields on Workspace {\n ...WorkspaceCardFields\n website\n address\n tenantId\n orgId\n createdBy\n ownerId\n deletedAt\n tagAssignments {\n ...WorkspaceTagAssignmentFields\n }\n}\n ${WorkspaceCardFieldsFragmentDoc}\n${WorkspaceTagAssignmentFieldsFragmentDoc}`;\nexport const DashboardProjectsDocument = gql`\n query DashboardProjects($filter: ProjectFilterInput) {\n projects(filter: $filter, pagination: {limit: 10}) {\n items {\n id\n name\n key\n status\n workspaceId\n createdAt\n }\n total\n }\n}\n `;\n\n/**\n * __useDashboardProjectsQuery__\n *\n * To run a query within a React component, call `useDashboardProjectsQuery` and pass it any options that fit your needs.\n * When your component renders, `useDashboardProjectsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useDashboardProjectsQuery({\n * variables: {\n * filter: // value for 'filter'\n * },\n * });\n */\nexport function useDashboardProjectsQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>(DashboardProjectsDocument, options);\n }\nexport function useDashboardProjectsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>(DashboardProjectsDocument, options);\n }\n// @ts-ignore\nexport function useDashboardProjectsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>;\nexport function useDashboardProjectsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.DashboardProjectsQuery | undefined, Types.DashboardProjectsQueryVariables>;\nexport function useDashboardProjectsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>(DashboardProjectsDocument, options);\n }\nexport type DashboardProjectsQueryHookResult = ReturnType<typeof useDashboardProjectsQuery>;\nexport type DashboardProjectsLazyQueryHookResult = ReturnType<typeof useDashboardProjectsLazyQuery>;\nexport type DashboardProjectsSuspenseQueryHookResult = ReturnType<typeof useDashboardProjectsSuspenseQuery>;\nexport type DashboardProjectsQueryResult = Apollo.QueryResult<Types.DashboardProjectsQuery, Types.DashboardProjectsQueryVariables>;\nexport const DashboardWorkspaceDataDocument = gql`\n query DashboardWorkspaceData {\n getRecentActivities(limit: 8) {\n id\n action\n resourceType\n resourceId\n userId\n description\n details\n timestamp\n }\n upcomingEvents(limit: 5) {\n id\n title\n startTime\n endTime\n calendarId\n allDay\n }\n getTags(pagination: {limit: 15, offset: 0}) {\n items {\n id\n label\n key\n }\n total\n }\n myGroups(first: 5) {\n edges {\n node {\n id\n name\n description\n }\n }\n totalCount\n }\n dashboardSummary {\n activeWorkflowsCount\n archivedWorkflowsCount\n workflowsCount\n runsCountTotal\n runsRunningCount\n runsFailedLast24h\n workflowSuccessRate\n recentWorkflows {\n workflowKey\n name\n version\n updatedAt\n }\n recentRuns {\n id\n status\n workflowKey\n startedAt\n }\n }\n workspaceResourceUsage {\n currentStorageGb\n }\n workspaceResourceLimits {\n maxStorageGb\n }\n}\n `;\n\n/**\n * __useDashboardWorkspaceDataQuery__\n *\n * To run a query within a React component, call `useDashboardWorkspaceDataQuery` and pass it any options that fit your needs.\n * When your component renders, `useDashboardWorkspaceDataQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useDashboardWorkspaceDataQuery({\n * variables: {\n * },\n * });\n */\nexport function useDashboardWorkspaceDataQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>(DashboardWorkspaceDataDocument, options);\n }\nexport function useDashboardWorkspaceDataLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>(DashboardWorkspaceDataDocument, options);\n }\n// @ts-ignore\nexport function useDashboardWorkspaceDataSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>;\nexport function useDashboardWorkspaceDataSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.DashboardWorkspaceDataQuery | undefined, Types.DashboardWorkspaceDataQueryVariables>;\nexport function useDashboardWorkspaceDataSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>(DashboardWorkspaceDataDocument, options);\n }\nexport type DashboardWorkspaceDataQueryHookResult = ReturnType<typeof useDashboardWorkspaceDataQuery>;\nexport type DashboardWorkspaceDataLazyQueryHookResult = ReturnType<typeof useDashboardWorkspaceDataLazyQuery>;\nexport type DashboardWorkspaceDataSuspenseQueryHookResult = ReturnType<typeof useDashboardWorkspaceDataSuspenseQuery>;\nexport type DashboardWorkspaceDataQueryResult = Apollo.QueryResult<Types.DashboardWorkspaceDataQuery, Types.DashboardWorkspaceDataQueryVariables>;\nexport const AddWorkspaceMemberDocument = gql`\n mutation AddWorkspaceMember($input: AddWorkspaceMemberInput!) {\n addWorkspaceMember(input: $input) {\n id\n workspaceId\n userId\n createdAt\n updatedAt\n context {\n type\n metadata\n }\n }\n}\n `;\nexport type AddWorkspaceMemberMutationFn = Apollo.MutationFunction<Types.AddWorkspaceMemberMutation, Types.AddWorkspaceMemberMutationVariables>;\n\n/**\n * __useAddWorkspaceMemberMutation__\n *\n * To run a mutation, you first call `useAddWorkspaceMemberMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useAddWorkspaceMemberMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [addWorkspaceMemberMutation, { data, loading, error }] = useAddWorkspaceMemberMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useAddWorkspaceMemberMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.AddWorkspaceMemberMutation, Types.AddWorkspaceMemberMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.AddWorkspaceMemberMutation, Types.AddWorkspaceMemberMutationVariables>(AddWorkspaceMemberDocument, options);\n }\nexport type AddWorkspaceMemberMutationHookResult = ReturnType<typeof useAddWorkspaceMemberMutation>;\nexport type AddWorkspaceMemberMutationResult = Apollo.MutationResult<Types.AddWorkspaceMemberMutation>;\nexport type AddWorkspaceMemberMutationOptions = Apollo.BaseMutationOptions<Types.AddWorkspaceMemberMutation, Types.AddWorkspaceMemberMutationVariables>;\nexport const RemoveWorkspaceMemberDocument = gql`\n mutation RemoveWorkspaceMember($id: ID!) {\n removeWorkspaceMember(id: $id)\n}\n `;\nexport type RemoveWorkspaceMemberMutationFn = Apollo.MutationFunction<Types.RemoveWorkspaceMemberMutation, Types.RemoveWorkspaceMemberMutationVariables>;\n\n/**\n * __useRemoveWorkspaceMemberMutation__\n *\n * To run a mutation, you first call `useRemoveWorkspaceMemberMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useRemoveWorkspaceMemberMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [removeWorkspaceMemberMutation, { data, loading, error }] = useRemoveWorkspaceMemberMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useRemoveWorkspaceMemberMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.RemoveWorkspaceMemberMutation, Types.RemoveWorkspaceMemberMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.RemoveWorkspaceMemberMutation, Types.RemoveWorkspaceMemberMutationVariables>(RemoveWorkspaceMemberDocument, options);\n }\nexport type RemoveWorkspaceMemberMutationHookResult = ReturnType<typeof useRemoveWorkspaceMemberMutation>;\nexport type RemoveWorkspaceMemberMutationResult = Apollo.MutationResult<Types.RemoveWorkspaceMemberMutation>;\nexport type RemoveWorkspaceMemberMutationOptions = Apollo.BaseMutationOptions<Types.RemoveWorkspaceMemberMutation, Types.RemoveWorkspaceMemberMutationVariables>;\nexport const RemoveUserFromWorkspaceDocument = gql`\n mutation RemoveUserFromWorkspace($userId: ID!) {\n removeUserFromWorkspace(userId: $userId)\n}\n `;\nexport type RemoveUserFromWorkspaceMutationFn = Apollo.MutationFunction<Types.RemoveUserFromWorkspaceMutation, Types.RemoveUserFromWorkspaceMutationVariables>;\n\n/**\n * __useRemoveUserFromWorkspaceMutation__\n *\n * To run a mutation, you first call `useRemoveUserFromWorkspaceMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useRemoveUserFromWorkspaceMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [removeUserFromWorkspaceMutation, { data, loading, error }] = useRemoveUserFromWorkspaceMutation({\n * variables: {\n * userId: // value for 'userId'\n * },\n * });\n */\nexport function useRemoveUserFromWorkspaceMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.RemoveUserFromWorkspaceMutation, Types.RemoveUserFromWorkspaceMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.RemoveUserFromWorkspaceMutation, Types.RemoveUserFromWorkspaceMutationVariables>(RemoveUserFromWorkspaceDocument, options);\n }\nexport type RemoveUserFromWorkspaceMutationHookResult = ReturnType<typeof useRemoveUserFromWorkspaceMutation>;\nexport type RemoveUserFromWorkspaceMutationResult = Apollo.MutationResult<Types.RemoveUserFromWorkspaceMutation>;\nexport type RemoveUserFromWorkspaceMutationOptions = Apollo.BaseMutationOptions<Types.RemoveUserFromWorkspaceMutation, Types.RemoveUserFromWorkspaceMutationVariables>;\nexport const CreateInvitationDocument = gql`\n mutation CreateInvitation($input: CreateInvitationInput!) {\n createInvitation(input: $input) {\n id\n email\n status\n roleIds\n workspaceId\n projectId\n invitedUserId\n invitedById\n expiresAt\n createdAt\n context {\n type\n metadata\n }\n }\n}\n `;\nexport type CreateInvitationMutationFn = Apollo.MutationFunction<Types.CreateInvitationMutation, Types.CreateInvitationMutationVariables>;\n\n/**\n * __useCreateInvitationMutation__\n *\n * To run a mutation, you first call `useCreateInvitationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateInvitationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createInvitationMutation, { data, loading, error }] = useCreateInvitationMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useCreateInvitationMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateInvitationMutation, Types.CreateInvitationMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateInvitationMutation, Types.CreateInvitationMutationVariables>(CreateInvitationDocument, options);\n }\nexport type CreateInvitationMutationHookResult = ReturnType<typeof useCreateInvitationMutation>;\nexport type CreateInvitationMutationResult = Apollo.MutationResult<Types.CreateInvitationMutation>;\nexport type CreateInvitationMutationOptions = Apollo.BaseMutationOptions<Types.CreateInvitationMutation, Types.CreateInvitationMutationVariables>;\nexport const UpdateInvitationDocument = gql`\n mutation UpdateInvitation($id: ID!, $input: UpdateInvitationInput!) {\n updateInvitation(id: $id, input: $input) {\n id\n email\n status\n roleIds\n expiresAt\n updatedAt\n context {\n type\n metadata\n }\n }\n}\n `;\nexport type UpdateInvitationMutationFn = Apollo.MutationFunction<Types.UpdateInvitationMutation, Types.UpdateInvitationMutationVariables>;\n\n/**\n * __useUpdateInvitationMutation__\n *\n * To run a mutation, you first call `useUpdateInvitationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateInvitationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateInvitationMutation, { data, loading, error }] = useUpdateInvitationMutation({\n * variables: {\n * id: // value for 'id'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useUpdateInvitationMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UpdateInvitationMutation, Types.UpdateInvitationMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UpdateInvitationMutation, Types.UpdateInvitationMutationVariables>(UpdateInvitationDocument, options);\n }\nexport type UpdateInvitationMutationHookResult = ReturnType<typeof useUpdateInvitationMutation>;\nexport type UpdateInvitationMutationResult = Apollo.MutationResult<Types.UpdateInvitationMutation>;\nexport type UpdateInvitationMutationOptions = Apollo.BaseMutationOptions<Types.UpdateInvitationMutation, Types.UpdateInvitationMutationVariables>;\nexport const AcceptInvitationDocument = gql`\n mutation AcceptInvitation($id: ID!) {\n acceptInvitation(id: $id) {\n id\n status\n updatedAt\n }\n}\n `;\nexport type AcceptInvitationMutationFn = Apollo.MutationFunction<Types.AcceptInvitationMutation, Types.AcceptInvitationMutationVariables>;\n\n/**\n * __useAcceptInvitationMutation__\n *\n * To run a mutation, you first call `useAcceptInvitationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useAcceptInvitationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [acceptInvitationMutation, { data, loading, error }] = useAcceptInvitationMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useAcceptInvitationMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.AcceptInvitationMutation, Types.AcceptInvitationMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.AcceptInvitationMutation, Types.AcceptInvitationMutationVariables>(AcceptInvitationDocument, options);\n }\nexport type AcceptInvitationMutationHookResult = ReturnType<typeof useAcceptInvitationMutation>;\nexport type AcceptInvitationMutationResult = Apollo.MutationResult<Types.AcceptInvitationMutation>;\nexport type AcceptInvitationMutationOptions = Apollo.BaseMutationOptions<Types.AcceptInvitationMutation, Types.AcceptInvitationMutationVariables>;\nexport const RejectInvitationDocument = gql`\n mutation RejectInvitation($id: ID!) {\n rejectInvitation(id: $id) {\n id\n status\n updatedAt\n }\n}\n `;\nexport type RejectInvitationMutationFn = Apollo.MutationFunction<Types.RejectInvitationMutation, Types.RejectInvitationMutationVariables>;\n\n/**\n * __useRejectInvitationMutation__\n *\n * To run a mutation, you first call `useRejectInvitationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useRejectInvitationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [rejectInvitationMutation, { data, loading, error }] = useRejectInvitationMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useRejectInvitationMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.RejectInvitationMutation, Types.RejectInvitationMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.RejectInvitationMutation, Types.RejectInvitationMutationVariables>(RejectInvitationDocument, options);\n }\nexport type RejectInvitationMutationHookResult = ReturnType<typeof useRejectInvitationMutation>;\nexport type RejectInvitationMutationResult = Apollo.MutationResult<Types.RejectInvitationMutation>;\nexport type RejectInvitationMutationOptions = Apollo.BaseMutationOptions<Types.RejectInvitationMutation, Types.RejectInvitationMutationVariables>;\nexport const CancelInvitationDocument = gql`\n mutation CancelInvitation($id: ID!) {\n cancelInvitation(id: $id) {\n id\n status\n updatedAt\n }\n}\n `;\nexport type CancelInvitationMutationFn = Apollo.MutationFunction<Types.CancelInvitationMutation, Types.CancelInvitationMutationVariables>;\n\n/**\n * __useCancelInvitationMutation__\n *\n * To run a mutation, you first call `useCancelInvitationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCancelInvitationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [cancelInvitationMutation, { data, loading, error }] = useCancelInvitationMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useCancelInvitationMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CancelInvitationMutation, Types.CancelInvitationMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CancelInvitationMutation, Types.CancelInvitationMutationVariables>(CancelInvitationDocument, options);\n }\nexport type CancelInvitationMutationHookResult = ReturnType<typeof useCancelInvitationMutation>;\nexport type CancelInvitationMutationResult = Apollo.MutationResult<Types.CancelInvitationMutation>;\nexport type CancelInvitationMutationOptions = Apollo.BaseMutationOptions<Types.CancelInvitationMutation, Types.CancelInvitationMutationVariables>;\nexport const ResendInvitationDocument = gql`\n mutation ResendInvitation($id: ID!) {\n resendInvitation(id: $id) {\n id\n updatedAt\n }\n}\n `;\nexport type ResendInvitationMutationFn = Apollo.MutationFunction<Types.ResendInvitationMutation, Types.ResendInvitationMutationVariables>;\n\n/**\n * __useResendInvitationMutation__\n *\n * To run a mutation, you first call `useResendInvitationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useResendInvitationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [resendInvitationMutation, { data, loading, error }] = useResendInvitationMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useResendInvitationMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.ResendInvitationMutation, Types.ResendInvitationMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.ResendInvitationMutation, Types.ResendInvitationMutationVariables>(ResendInvitationDocument, options);\n }\nexport type ResendInvitationMutationHookResult = ReturnType<typeof useResendInvitationMutation>;\nexport type ResendInvitationMutationResult = Apollo.MutationResult<Types.ResendInvitationMutation>;\nexport type ResendInvitationMutationOptions = Apollo.BaseMutationOptions<Types.ResendInvitationMutation, Types.ResendInvitationMutationVariables>;\nexport const DeleteInvitationDocument = gql`\n mutation DeleteInvitation($id: ID!) {\n deleteInvitation(id: $id)\n}\n `;\nexport type DeleteInvitationMutationFn = Apollo.MutationFunction<Types.DeleteInvitationMutation, Types.DeleteInvitationMutationVariables>;\n\n/**\n * __useDeleteInvitationMutation__\n *\n * To run a mutation, you first call `useDeleteInvitationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteInvitationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteInvitationMutation, { data, loading, error }] = useDeleteInvitationMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDeleteInvitationMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DeleteInvitationMutation, Types.DeleteInvitationMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DeleteInvitationMutation, Types.DeleteInvitationMutationVariables>(DeleteInvitationDocument, options);\n }\nexport type DeleteInvitationMutationHookResult = ReturnType<typeof useDeleteInvitationMutation>;\nexport type DeleteInvitationMutationResult = Apollo.MutationResult<Types.DeleteInvitationMutation>;\nexport type DeleteInvitationMutationOptions = Apollo.BaseMutationOptions<Types.DeleteInvitationMutation, Types.DeleteInvitationMutationVariables>;\nexport const BulkCreateInvitationsDocument = gql`\n mutation BulkCreateInvitations($inputs: [CreateInvitationInput!]!) {\n bulkCreateInvitations(inputs: $inputs) {\n id\n email\n status\n workspaceId\n projectId\n createdAt\n context {\n type\n metadata\n }\n }\n}\n `;\nexport type BulkCreateInvitationsMutationFn = Apollo.MutationFunction<Types.BulkCreateInvitationsMutation, Types.BulkCreateInvitationsMutationVariables>;\n\n/**\n * __useBulkCreateInvitationsMutation__\n *\n * To run a mutation, you first call `useBulkCreateInvitationsMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useBulkCreateInvitationsMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [bulkCreateInvitationsMutation, { data, loading, error }] = useBulkCreateInvitationsMutation({\n * variables: {\n * inputs: // value for 'inputs'\n * },\n * });\n */\nexport function useBulkCreateInvitationsMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.BulkCreateInvitationsMutation, Types.BulkCreateInvitationsMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.BulkCreateInvitationsMutation, Types.BulkCreateInvitationsMutationVariables>(BulkCreateInvitationsDocument, options);\n }\nexport type BulkCreateInvitationsMutationHookResult = ReturnType<typeof useBulkCreateInvitationsMutation>;\nexport type BulkCreateInvitationsMutationResult = Apollo.MutationResult<Types.BulkCreateInvitationsMutation>;\nexport type BulkCreateInvitationsMutationOptions = Apollo.BaseMutationOptions<Types.BulkCreateInvitationsMutation, Types.BulkCreateInvitationsMutationVariables>;\nexport const CreateProjectDocument = gql`\n mutation CreateProject($input: CreateProjectInput!) {\n createProject(input: $input) {\n id\n name\n key\n workspaceId\n creatorId\n status\n tags\n createdAt\n }\n}\n `;\nexport type CreateProjectMutationFn = Apollo.MutationFunction<Types.CreateProjectMutation, Types.CreateProjectMutationVariables>;\n\n/**\n * __useCreateProjectMutation__\n *\n * To run a mutation, you first call `useCreateProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createProjectMutation, { data, loading, error }] = useCreateProjectMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useCreateProjectMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateProjectMutation, Types.CreateProjectMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateProjectMutation, Types.CreateProjectMutationVariables>(CreateProjectDocument, options);\n }\nexport type CreateProjectMutationHookResult = ReturnType<typeof useCreateProjectMutation>;\nexport type CreateProjectMutationResult = Apollo.MutationResult<Types.CreateProjectMutation>;\nexport type CreateProjectMutationOptions = Apollo.BaseMutationOptions<Types.CreateProjectMutation, Types.CreateProjectMutationVariables>;\nexport const UpdateProjectDocument = gql`\n mutation UpdateProject($id: ID!, $input: UpdateProjectInput!) {\n updateProject(id: $id, input: $input) {\n id\n name\n key\n status\n config\n tags\n archived\n updatedAt\n }\n}\n `;\nexport type UpdateProjectMutationFn = Apollo.MutationFunction<Types.UpdateProjectMutation, Types.UpdateProjectMutationVariables>;\n\n/**\n * __useUpdateProjectMutation__\n *\n * To run a mutation, you first call `useUpdateProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateProjectMutation, { data, loading, error }] = useUpdateProjectMutation({\n * variables: {\n * id: // value for 'id'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useUpdateProjectMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UpdateProjectMutation, Types.UpdateProjectMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UpdateProjectMutation, Types.UpdateProjectMutationVariables>(UpdateProjectDocument, options);\n }\nexport type UpdateProjectMutationHookResult = ReturnType<typeof useUpdateProjectMutation>;\nexport type UpdateProjectMutationResult = Apollo.MutationResult<Types.UpdateProjectMutation>;\nexport type UpdateProjectMutationOptions = Apollo.BaseMutationOptions<Types.UpdateProjectMutation, Types.UpdateProjectMutationVariables>;\nexport const DeleteProjectDocument = gql`\n mutation DeleteProject($id: ID!) {\n deleteProject(id: $id)\n}\n `;\nexport type DeleteProjectMutationFn = Apollo.MutationFunction<Types.DeleteProjectMutation, Types.DeleteProjectMutationVariables>;\n\n/**\n * __useDeleteProjectMutation__\n *\n * To run a mutation, you first call `useDeleteProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteProjectMutation, { data, loading, error }] = useDeleteProjectMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDeleteProjectMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DeleteProjectMutation, Types.DeleteProjectMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DeleteProjectMutation, Types.DeleteProjectMutationVariables>(DeleteProjectDocument, options);\n }\nexport type DeleteProjectMutationHookResult = ReturnType<typeof useDeleteProjectMutation>;\nexport type DeleteProjectMutationResult = Apollo.MutationResult<Types.DeleteProjectMutation>;\nexport type DeleteProjectMutationOptions = Apollo.BaseMutationOptions<Types.DeleteProjectMutation, Types.DeleteProjectMutationVariables>;\nexport const ArchiveProjectDocument = gql`\n mutation ArchiveProject($id: ID!) {\n archiveProject(id: $id) {\n id\n archived\n updatedAt\n }\n}\n `;\nexport type ArchiveProjectMutationFn = Apollo.MutationFunction<Types.ArchiveProjectMutation, Types.ArchiveProjectMutationVariables>;\n\n/**\n * __useArchiveProjectMutation__\n *\n * To run a mutation, you first call `useArchiveProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useArchiveProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [archiveProjectMutation, { data, loading, error }] = useArchiveProjectMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useArchiveProjectMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.ArchiveProjectMutation, Types.ArchiveProjectMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.ArchiveProjectMutation, Types.ArchiveProjectMutationVariables>(ArchiveProjectDocument, options);\n }\nexport type ArchiveProjectMutationHookResult = ReturnType<typeof useArchiveProjectMutation>;\nexport type ArchiveProjectMutationResult = Apollo.MutationResult<Types.ArchiveProjectMutation>;\nexport type ArchiveProjectMutationOptions = Apollo.BaseMutationOptions<Types.ArchiveProjectMutation, Types.ArchiveProjectMutationVariables>;\nexport const UnarchiveProjectDocument = gql`\n mutation UnarchiveProject($id: ID!) {\n unarchiveProject(id: $id) {\n id\n archived\n updatedAt\n }\n}\n `;\nexport type UnarchiveProjectMutationFn = Apollo.MutationFunction<Types.UnarchiveProjectMutation, Types.UnarchiveProjectMutationVariables>;\n\n/**\n * __useUnarchiveProjectMutation__\n *\n * To run a mutation, you first call `useUnarchiveProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUnarchiveProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [unarchiveProjectMutation, { data, loading, error }] = useUnarchiveProjectMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useUnarchiveProjectMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UnarchiveProjectMutation, Types.UnarchiveProjectMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UnarchiveProjectMutation, Types.UnarchiveProjectMutationVariables>(UnarchiveProjectDocument, options);\n }\nexport type UnarchiveProjectMutationHookResult = ReturnType<typeof useUnarchiveProjectMutation>;\nexport type UnarchiveProjectMutationResult = Apollo.MutationResult<Types.UnarchiveProjectMutation>;\nexport type UnarchiveProjectMutationOptions = Apollo.BaseMutationOptions<Types.UnarchiveProjectMutation, Types.UnarchiveProjectMutationVariables>;\nexport const SwitchProjectDocument = gql`\n mutation SwitchProject($projectId: ID!) {\n switchProject(projectId: $projectId) {\n token\n expiresAt\n project {\n id\n name\n key\n workspaceId\n status\n tags\n archived\n }\n }\n}\n `;\nexport type SwitchProjectMutationFn = Apollo.MutationFunction<Types.SwitchProjectMutation, Types.SwitchProjectMutationVariables>;\n\n/**\n * __useSwitchProjectMutation__\n *\n * To run a mutation, you first call `useSwitchProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSwitchProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [switchProjectMutation, { data, loading, error }] = useSwitchProjectMutation({\n * variables: {\n * projectId: // value for 'projectId'\n * },\n * });\n */\nexport function useSwitchProjectMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.SwitchProjectMutation, Types.SwitchProjectMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.SwitchProjectMutation, Types.SwitchProjectMutationVariables>(SwitchProjectDocument, options);\n }\nexport type SwitchProjectMutationHookResult = ReturnType<typeof useSwitchProjectMutation>;\nexport type SwitchProjectMutationResult = Apollo.MutationResult<Types.SwitchProjectMutation>;\nexport type SwitchProjectMutationOptions = Apollo.BaseMutationOptions<Types.SwitchProjectMutation, Types.SwitchProjectMutationVariables>;\nexport const TagProjectDocument = gql`\n mutation TagProject($input: TagProjectInput!) {\n tagProject(input: $input) {\n ...ProjectTagAssignmentFields\n }\n}\n ${ProjectTagAssignmentFieldsFragmentDoc}`;\nexport type TagProjectMutationFn = Apollo.MutationFunction<Types.TagProjectMutation, Types.TagProjectMutationVariables>;\n\n/**\n * __useTagProjectMutation__\n *\n * To run a mutation, you first call `useTagProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useTagProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [tagProjectMutation, { data, loading, error }] = useTagProjectMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useTagProjectMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.TagProjectMutation, Types.TagProjectMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.TagProjectMutation, Types.TagProjectMutationVariables>(TagProjectDocument, options);\n }\nexport type TagProjectMutationHookResult = ReturnType<typeof useTagProjectMutation>;\nexport type TagProjectMutationResult = Apollo.MutationResult<Types.TagProjectMutation>;\nexport type TagProjectMutationOptions = Apollo.BaseMutationOptions<Types.TagProjectMutation, Types.TagProjectMutationVariables>;\nexport const UntagProjectDocument = gql`\n mutation UntagProject($input: UntagProjectInput!) {\n untagProject(input: $input)\n}\n `;\nexport type UntagProjectMutationFn = Apollo.MutationFunction<Types.UntagProjectMutation, Types.UntagProjectMutationVariables>;\n\n/**\n * __useUntagProjectMutation__\n *\n * To run a mutation, you first call `useUntagProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUntagProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [untagProjectMutation, { data, loading, error }] = useUntagProjectMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useUntagProjectMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UntagProjectMutation, Types.UntagProjectMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UntagProjectMutation, Types.UntagProjectMutationVariables>(UntagProjectDocument, options);\n }\nexport type UntagProjectMutationHookResult = ReturnType<typeof useUntagProjectMutation>;\nexport type UntagProjectMutationResult = Apollo.MutationResult<Types.UntagProjectMutation>;\nexport type UntagProjectMutationOptions = Apollo.BaseMutationOptions<Types.UntagProjectMutation, Types.UntagProjectMutationVariables>;\nexport const ReplaceProjectTagsDocument = gql`\n mutation ReplaceProjectTags($input: ReplaceProjectTagsInput!) {\n replaceProjectTags(input: $input) {\n ...ProjectTagAssignmentFields\n }\n}\n ${ProjectTagAssignmentFieldsFragmentDoc}`;\nexport type ReplaceProjectTagsMutationFn = Apollo.MutationFunction<Types.ReplaceProjectTagsMutation, Types.ReplaceProjectTagsMutationVariables>;\n\n/**\n * __useReplaceProjectTagsMutation__\n *\n * To run a mutation, you first call `useReplaceProjectTagsMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useReplaceProjectTagsMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [replaceProjectTagsMutation, { data, loading, error }] = useReplaceProjectTagsMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useReplaceProjectTagsMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.ReplaceProjectTagsMutation, Types.ReplaceProjectTagsMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.ReplaceProjectTagsMutation, Types.ReplaceProjectTagsMutationVariables>(ReplaceProjectTagsDocument, options);\n }\nexport type ReplaceProjectTagsMutationHookResult = ReturnType<typeof useReplaceProjectTagsMutation>;\nexport type ReplaceProjectTagsMutationResult = Apollo.MutationResult<Types.ReplaceProjectTagsMutation>;\nexport type ReplaceProjectTagsMutationOptions = Apollo.BaseMutationOptions<Types.ReplaceProjectTagsMutation, Types.ReplaceProjectTagsMutationVariables>;\nexport const CreateWorkspaceDocument = gql`\n mutation CreateWorkspace($input: CreateWorkspaceInput!) {\n createWorkspace(input: $input) {\n id\n name\n type\n status\n tenantId\n ownerId\n createdAt\n context {\n type\n metadata\n }\n }\n}\n `;\nexport type CreateWorkspaceMutationFn = Apollo.MutationFunction<Types.CreateWorkspaceMutation, Types.CreateWorkspaceMutationVariables>;\n\n/**\n * __useCreateWorkspaceMutation__\n *\n * To run a mutation, you first call `useCreateWorkspaceMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateWorkspaceMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createWorkspaceMutation, { data, loading, error }] = useCreateWorkspaceMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useCreateWorkspaceMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateWorkspaceMutation, Types.CreateWorkspaceMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateWorkspaceMutation, Types.CreateWorkspaceMutationVariables>(CreateWorkspaceDocument, options);\n }\nexport type CreateWorkspaceMutationHookResult = ReturnType<typeof useCreateWorkspaceMutation>;\nexport type CreateWorkspaceMutationResult = Apollo.MutationResult<Types.CreateWorkspaceMutation>;\nexport type CreateWorkspaceMutationOptions = Apollo.BaseMutationOptions<Types.CreateWorkspaceMutation, Types.CreateWorkspaceMutationVariables>;\nexport const UpdateWorkspaceDocument = gql`\n mutation UpdateWorkspace($id: ID!, $input: UpdateWorkspaceInput!) {\n updateWorkspace(id: $id, input: $input) {\n id\n name\n type\n status\n domain\n contactEmail\n website\n address\n ownerId\n updatedAt\n context {\n type\n metadata\n }\n }\n}\n `;\nexport type UpdateWorkspaceMutationFn = Apollo.MutationFunction<Types.UpdateWorkspaceMutation, Types.UpdateWorkspaceMutationVariables>;\n\n/**\n * __useUpdateWorkspaceMutation__\n *\n * To run a mutation, you first call `useUpdateWorkspaceMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateWorkspaceMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateWorkspaceMutation, { data, loading, error }] = useUpdateWorkspaceMutation({\n * variables: {\n * id: // value for 'id'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useUpdateWorkspaceMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UpdateWorkspaceMutation, Types.UpdateWorkspaceMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UpdateWorkspaceMutation, Types.UpdateWorkspaceMutationVariables>(UpdateWorkspaceDocument, options);\n }\nexport type UpdateWorkspaceMutationHookResult = ReturnType<typeof useUpdateWorkspaceMutation>;\nexport type UpdateWorkspaceMutationResult = Apollo.MutationResult<Types.UpdateWorkspaceMutation>;\nexport type UpdateWorkspaceMutationOptions = Apollo.BaseMutationOptions<Types.UpdateWorkspaceMutation, Types.UpdateWorkspaceMutationVariables>;\nexport const DeleteWorkspaceDocument = gql`\n mutation DeleteWorkspace($id: ID!) {\n deleteWorkspace(id: $id)\n}\n `;\nexport type DeleteWorkspaceMutationFn = Apollo.MutationFunction<Types.DeleteWorkspaceMutation, Types.DeleteWorkspaceMutationVariables>;\n\n/**\n * __useDeleteWorkspaceMutation__\n *\n * To run a mutation, you first call `useDeleteWorkspaceMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteWorkspaceMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteWorkspaceMutation, { data, loading, error }] = useDeleteWorkspaceMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDeleteWorkspaceMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DeleteWorkspaceMutation, Types.DeleteWorkspaceMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DeleteWorkspaceMutation, Types.DeleteWorkspaceMutationVariables>(DeleteWorkspaceDocument, options);\n }\nexport type DeleteWorkspaceMutationHookResult = ReturnType<typeof useDeleteWorkspaceMutation>;\nexport type DeleteWorkspaceMutationResult = Apollo.MutationResult<Types.DeleteWorkspaceMutation>;\nexport type DeleteWorkspaceMutationOptions = Apollo.BaseMutationOptions<Types.DeleteWorkspaceMutation, Types.DeleteWorkspaceMutationVariables>;\nexport const ArchiveWorkspaceDocument = gql`\n mutation ArchiveWorkspace($id: ID!) {\n updateWorkspace(id: $id, input: {status: ARCHIVED}) {\n id\n name\n status\n updatedAt\n }\n}\n `;\nexport type ArchiveWorkspaceMutationFn = Apollo.MutationFunction<Types.ArchiveWorkspaceMutation, Types.ArchiveWorkspaceMutationVariables>;\n\n/**\n * __useArchiveWorkspaceMutation__\n *\n * To run a mutation, you first call `useArchiveWorkspaceMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useArchiveWorkspaceMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [archiveWorkspaceMutation, { data, loading, error }] = useArchiveWorkspaceMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useArchiveWorkspaceMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.ArchiveWorkspaceMutation, Types.ArchiveWorkspaceMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.ArchiveWorkspaceMutation, Types.ArchiveWorkspaceMutationVariables>(ArchiveWorkspaceDocument, options);\n }\nexport type ArchiveWorkspaceMutationHookResult = ReturnType<typeof useArchiveWorkspaceMutation>;\nexport type ArchiveWorkspaceMutationResult = Apollo.MutationResult<Types.ArchiveWorkspaceMutation>;\nexport type ArchiveWorkspaceMutationOptions = Apollo.BaseMutationOptions<Types.ArchiveWorkspaceMutation, Types.ArchiveWorkspaceMutationVariables>;\nexport const ReactivateWorkspaceDocument = gql`\n mutation ReactivateWorkspace($id: ID!) {\n updateWorkspace(id: $id, input: {status: ACTIVE}) {\n id\n name\n status\n updatedAt\n }\n}\n `;\nexport type ReactivateWorkspaceMutationFn = Apollo.MutationFunction<Types.ReactivateWorkspaceMutation, Types.ReactivateWorkspaceMutationVariables>;\n\n/**\n * __useReactivateWorkspaceMutation__\n *\n * To run a mutation, you first call `useReactivateWorkspaceMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useReactivateWorkspaceMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [reactivateWorkspaceMutation, { data, loading, error }] = useReactivateWorkspaceMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useReactivateWorkspaceMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.ReactivateWorkspaceMutation, Types.ReactivateWorkspaceMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.ReactivateWorkspaceMutation, Types.ReactivateWorkspaceMutationVariables>(ReactivateWorkspaceDocument, options);\n }\nexport type ReactivateWorkspaceMutationHookResult = ReturnType<typeof useReactivateWorkspaceMutation>;\nexport type ReactivateWorkspaceMutationResult = Apollo.MutationResult<Types.ReactivateWorkspaceMutation>;\nexport type ReactivateWorkspaceMutationOptions = Apollo.BaseMutationOptions<Types.ReactivateWorkspaceMutation, Types.ReactivateWorkspaceMutationVariables>;\nexport const InitializeWorkspaceDocument = gql`\n mutation InitializeWorkspace($id: ID!) {\n initializeWorkspace(id: $id) {\n id\n status\n updatedAt\n }\n}\n `;\nexport type InitializeWorkspaceMutationFn = Apollo.MutationFunction<Types.InitializeWorkspaceMutation, Types.InitializeWorkspaceMutationVariables>;\n\n/**\n * __useInitializeWorkspaceMutation__\n *\n * To run a mutation, you first call `useInitializeWorkspaceMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useInitializeWorkspaceMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [initializeWorkspaceMutation, { data, loading, error }] = useInitializeWorkspaceMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useInitializeWorkspaceMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.InitializeWorkspaceMutation, Types.InitializeWorkspaceMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.InitializeWorkspaceMutation, Types.InitializeWorkspaceMutationVariables>(InitializeWorkspaceDocument, options);\n }\nexport type InitializeWorkspaceMutationHookResult = ReturnType<typeof useInitializeWorkspaceMutation>;\nexport type InitializeWorkspaceMutationResult = Apollo.MutationResult<Types.InitializeWorkspaceMutation>;\nexport type InitializeWorkspaceMutationOptions = Apollo.BaseMutationOptions<Types.InitializeWorkspaceMutation, Types.InitializeWorkspaceMutationVariables>;\nexport const TagWorkspaceDocument = gql`\n mutation TagWorkspace($input: TagWorkspaceInput!) {\n tagWorkspace(input: $input) {\n ...WorkspaceTagAssignmentFields\n }\n}\n ${WorkspaceTagAssignmentFieldsFragmentDoc}`;\nexport type TagWorkspaceMutationFn = Apollo.MutationFunction<Types.TagWorkspaceMutation, Types.TagWorkspaceMutationVariables>;\n\n/**\n * __useTagWorkspaceMutation__\n *\n * To run a mutation, you first call `useTagWorkspaceMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useTagWorkspaceMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [tagWorkspaceMutation, { data, loading, error }] = useTagWorkspaceMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useTagWorkspaceMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.TagWorkspaceMutation, Types.TagWorkspaceMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.TagWorkspaceMutation, Types.TagWorkspaceMutationVariables>(TagWorkspaceDocument, options);\n }\nexport type TagWorkspaceMutationHookResult = ReturnType<typeof useTagWorkspaceMutation>;\nexport type TagWorkspaceMutationResult = Apollo.MutationResult<Types.TagWorkspaceMutation>;\nexport type TagWorkspaceMutationOptions = Apollo.BaseMutationOptions<Types.TagWorkspaceMutation, Types.TagWorkspaceMutationVariables>;\nexport const UntagWorkspaceDocument = gql`\n mutation UntagWorkspace($input: UntagWorkspaceInput!) {\n untagWorkspace(input: $input)\n}\n `;\nexport type UntagWorkspaceMutationFn = Apollo.MutationFunction<Types.UntagWorkspaceMutation, Types.UntagWorkspaceMutationVariables>;\n\n/**\n * __useUntagWorkspaceMutation__\n *\n * To run a mutation, you first call `useUntagWorkspaceMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUntagWorkspaceMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [untagWorkspaceMutation, { data, loading, error }] = useUntagWorkspaceMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useUntagWorkspaceMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UntagWorkspaceMutation, Types.UntagWorkspaceMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UntagWorkspaceMutation, Types.UntagWorkspaceMutationVariables>(UntagWorkspaceDocument, options);\n }\nexport type UntagWorkspaceMutationHookResult = ReturnType<typeof useUntagWorkspaceMutation>;\nexport type UntagWorkspaceMutationResult = Apollo.MutationResult<Types.UntagWorkspaceMutation>;\nexport type UntagWorkspaceMutationOptions = Apollo.BaseMutationOptions<Types.UntagWorkspaceMutation, Types.UntagWorkspaceMutationVariables>;\nexport const ReplaceWorkspaceTagsDocument = gql`\n mutation ReplaceWorkspaceTags($input: ReplaceWorkspaceTagsInput!) {\n replaceWorkspaceTags(input: $input) {\n ...WorkspaceTagAssignmentFields\n }\n}\n ${WorkspaceTagAssignmentFieldsFragmentDoc}`;\nexport type ReplaceWorkspaceTagsMutationFn = Apollo.MutationFunction<Types.ReplaceWorkspaceTagsMutation, Types.ReplaceWorkspaceTagsMutationVariables>;\n\n/**\n * __useReplaceWorkspaceTagsMutation__\n *\n * To run a mutation, you first call `useReplaceWorkspaceTagsMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useReplaceWorkspaceTagsMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [replaceWorkspaceTagsMutation, { data, loading, error }] = useReplaceWorkspaceTagsMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useReplaceWorkspaceTagsMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.ReplaceWorkspaceTagsMutation, Types.ReplaceWorkspaceTagsMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.ReplaceWorkspaceTagsMutation, Types.ReplaceWorkspaceTagsMutationVariables>(ReplaceWorkspaceTagsDocument, options);\n }\nexport type ReplaceWorkspaceTagsMutationHookResult = ReturnType<typeof useReplaceWorkspaceTagsMutation>;\nexport type ReplaceWorkspaceTagsMutationResult = Apollo.MutationResult<Types.ReplaceWorkspaceTagsMutation>;\nexport type ReplaceWorkspaceTagsMutationOptions = Apollo.BaseMutationOptions<Types.ReplaceWorkspaceTagsMutation, Types.ReplaceWorkspaceTagsMutationVariables>;\nexport const GetWorkspaceMembersDocument = gql`\n query GetWorkspaceMembers($workspaceId: ID!, $pagination: PaginationInput) {\n workspaceMembers(workspaceId: $workspaceId, pagination: $pagination) {\n items {\n ...WorkspaceMemberFields\n }\n total\n hasMore\n }\n}\n ${WorkspaceMemberFieldsFragmentDoc}`;\n\n/**\n * __useGetWorkspaceMembersQuery__\n *\n * To run a query within a React component, call `useGetWorkspaceMembersQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWorkspaceMembersQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWorkspaceMembersQuery({\n * variables: {\n * workspaceId: // value for 'workspaceId'\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetWorkspaceMembersQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables> & ({ variables: Types.GetWorkspaceMembersQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables>(GetWorkspaceMembersDocument, options);\n }\nexport function useGetWorkspaceMembersLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables>(GetWorkspaceMembersDocument, options);\n }\n// @ts-ignore\nexport function useGetWorkspaceMembersSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables>;\nexport function useGetWorkspaceMembersSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceMembersQuery | undefined, Types.GetWorkspaceMembersQueryVariables>;\nexport function useGetWorkspaceMembersSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables>(GetWorkspaceMembersDocument, options);\n }\nexport type GetWorkspaceMembersQueryHookResult = ReturnType<typeof useGetWorkspaceMembersQuery>;\nexport type GetWorkspaceMembersLazyQueryHookResult = ReturnType<typeof useGetWorkspaceMembersLazyQuery>;\nexport type GetWorkspaceMembersSuspenseQueryHookResult = ReturnType<typeof useGetWorkspaceMembersSuspenseQuery>;\nexport type GetWorkspaceMembersQueryResult = Apollo.QueryResult<Types.GetWorkspaceMembersQuery, Types.GetWorkspaceMembersQueryVariables>;\nexport const GetWorkspaceMemberDocument = gql`\n query GetWorkspaceMember($id: ID!) {\n workspaceMember(id: $id) {\n ...WorkspaceMemberFields\n }\n}\n ${WorkspaceMemberFieldsFragmentDoc}`;\n\n/**\n * __useGetWorkspaceMemberQuery__\n *\n * To run a query within a React component, call `useGetWorkspaceMemberQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWorkspaceMemberQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWorkspaceMemberQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetWorkspaceMemberQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables> & ({ variables: Types.GetWorkspaceMemberQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables>(GetWorkspaceMemberDocument, options);\n }\nexport function useGetWorkspaceMemberLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables>(GetWorkspaceMemberDocument, options);\n }\n// @ts-ignore\nexport function useGetWorkspaceMemberSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables>;\nexport function useGetWorkspaceMemberSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceMemberQuery | undefined, Types.GetWorkspaceMemberQueryVariables>;\nexport function useGetWorkspaceMemberSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables>(GetWorkspaceMemberDocument, options);\n }\nexport type GetWorkspaceMemberQueryHookResult = ReturnType<typeof useGetWorkspaceMemberQuery>;\nexport type GetWorkspaceMemberLazyQueryHookResult = ReturnType<typeof useGetWorkspaceMemberLazyQuery>;\nexport type GetWorkspaceMemberSuspenseQueryHookResult = ReturnType<typeof useGetWorkspaceMemberSuspenseQuery>;\nexport type GetWorkspaceMemberQueryResult = Apollo.QueryResult<Types.GetWorkspaceMemberQuery, Types.GetWorkspaceMemberQueryVariables>;\nexport const GetUserWorkspacesDocument = gql`\n query GetUserWorkspaces($userId: ID!, $pagination: PaginationInput) {\n userWorkspaces(userId: $userId, pagination: $pagination) {\n items {\n ...WorkspaceMemberFields\n }\n total\n hasMore\n }\n}\n ${WorkspaceMemberFieldsFragmentDoc}`;\n\n/**\n * __useGetUserWorkspacesQuery__\n *\n * To run a query within a React component, call `useGetUserWorkspacesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetUserWorkspacesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetUserWorkspacesQuery({\n * variables: {\n * userId: // value for 'userId'\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetUserWorkspacesQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables> & ({ variables: Types.GetUserWorkspacesQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables>(GetUserWorkspacesDocument, options);\n }\nexport function useGetUserWorkspacesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables>(GetUserWorkspacesDocument, options);\n }\n// @ts-ignore\nexport function useGetUserWorkspacesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables>;\nexport function useGetUserWorkspacesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetUserWorkspacesQuery | undefined, Types.GetUserWorkspacesQueryVariables>;\nexport function useGetUserWorkspacesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables>(GetUserWorkspacesDocument, options);\n }\nexport type GetUserWorkspacesQueryHookResult = ReturnType<typeof useGetUserWorkspacesQuery>;\nexport type GetUserWorkspacesLazyQueryHookResult = ReturnType<typeof useGetUserWorkspacesLazyQuery>;\nexport type GetUserWorkspacesSuspenseQueryHookResult = ReturnType<typeof useGetUserWorkspacesSuspenseQuery>;\nexport type GetUserWorkspacesQueryResult = Apollo.QueryResult<Types.GetUserWorkspacesQuery, Types.GetUserWorkspacesQueryVariables>;\nexport const GetWorkspaceInvitationsDocument = gql`\n query GetWorkspaceInvitations($status: InviteStatus, $pagination: PaginationInput) {\n workspaceInvitations(status: $status, pagination: $pagination) {\n items {\n ...InvitationFullFields\n }\n total\n hasMore\n }\n}\n ${InvitationFullFieldsFragmentDoc}`;\n\n/**\n * __useGetWorkspaceInvitationsQuery__\n *\n * To run a query within a React component, call `useGetWorkspaceInvitationsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWorkspaceInvitationsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWorkspaceInvitationsQuery({\n * variables: {\n * status: // value for 'status'\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetWorkspaceInvitationsQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>(GetWorkspaceInvitationsDocument, options);\n }\nexport function useGetWorkspaceInvitationsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>(GetWorkspaceInvitationsDocument, options);\n }\n// @ts-ignore\nexport function useGetWorkspaceInvitationsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>;\nexport function useGetWorkspaceInvitationsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceInvitationsQuery | undefined, Types.GetWorkspaceInvitationsQueryVariables>;\nexport function useGetWorkspaceInvitationsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>(GetWorkspaceInvitationsDocument, options);\n }\nexport type GetWorkspaceInvitationsQueryHookResult = ReturnType<typeof useGetWorkspaceInvitationsQuery>;\nexport type GetWorkspaceInvitationsLazyQueryHookResult = ReturnType<typeof useGetWorkspaceInvitationsLazyQuery>;\nexport type GetWorkspaceInvitationsSuspenseQueryHookResult = ReturnType<typeof useGetWorkspaceInvitationsSuspenseQuery>;\nexport type GetWorkspaceInvitationsQueryResult = Apollo.QueryResult<Types.GetWorkspaceInvitationsQuery, Types.GetWorkspaceInvitationsQueryVariables>;\nexport const GetInvitationDocument = gql`\n query GetInvitation($id: ID!) {\n invitation(id: $id) {\n ...InvitationFullFields\n }\n}\n ${InvitationFullFieldsFragmentDoc}`;\n\n/**\n * __useGetInvitationQuery__\n *\n * To run a query within a React component, call `useGetInvitationQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetInvitationQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetInvitationQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetInvitationQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetInvitationQuery, Types.GetInvitationQueryVariables> & ({ variables: Types.GetInvitationQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetInvitationQuery, Types.GetInvitationQueryVariables>(GetInvitationDocument, options);\n }\nexport function useGetInvitationLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetInvitationQuery, Types.GetInvitationQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetInvitationQuery, Types.GetInvitationQueryVariables>(GetInvitationDocument, options);\n }\n// @ts-ignore\nexport function useGetInvitationSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetInvitationQuery, Types.GetInvitationQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetInvitationQuery, Types.GetInvitationQueryVariables>;\nexport function useGetInvitationSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetInvitationQuery, Types.GetInvitationQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetInvitationQuery | undefined, Types.GetInvitationQueryVariables>;\nexport function useGetInvitationSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetInvitationQuery, Types.GetInvitationQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetInvitationQuery, Types.GetInvitationQueryVariables>(GetInvitationDocument, options);\n }\nexport type GetInvitationQueryHookResult = ReturnType<typeof useGetInvitationQuery>;\nexport type GetInvitationLazyQueryHookResult = ReturnType<typeof useGetInvitationLazyQuery>;\nexport type GetInvitationSuspenseQueryHookResult = ReturnType<typeof useGetInvitationSuspenseQuery>;\nexport type GetInvitationQueryResult = Apollo.QueryResult<Types.GetInvitationQuery, Types.GetInvitationQueryVariables>;\nexport const GetMyPendingInvitationsDocument = gql`\n query GetMyPendingInvitations {\n myPendingInvitations {\n ...InvitationCardFields\n deletedAt\n }\n}\n ${InvitationCardFieldsFragmentDoc}`;\n\n/**\n * __useGetMyPendingInvitationsQuery__\n *\n * To run a query within a React component, call `useGetMyPendingInvitationsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetMyPendingInvitationsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetMyPendingInvitationsQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetMyPendingInvitationsQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>(GetMyPendingInvitationsDocument, options);\n }\nexport function useGetMyPendingInvitationsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>(GetMyPendingInvitationsDocument, options);\n }\n// @ts-ignore\nexport function useGetMyPendingInvitationsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>;\nexport function useGetMyPendingInvitationsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetMyPendingInvitationsQuery | undefined, Types.GetMyPendingInvitationsQueryVariables>;\nexport function useGetMyPendingInvitationsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>(GetMyPendingInvitationsDocument, options);\n }\nexport type GetMyPendingInvitationsQueryHookResult = ReturnType<typeof useGetMyPendingInvitationsQuery>;\nexport type GetMyPendingInvitationsLazyQueryHookResult = ReturnType<typeof useGetMyPendingInvitationsLazyQuery>;\nexport type GetMyPendingInvitationsSuspenseQueryHookResult = ReturnType<typeof useGetMyPendingInvitationsSuspenseQuery>;\nexport type GetMyPendingInvitationsQueryResult = Apollo.QueryResult<Types.GetMyPendingInvitationsQuery, Types.GetMyPendingInvitationsQueryVariables>;\nexport const GetProjectsDocument = gql`\n query GetProjects($filter: ProjectFilterInput, $pagination: PaginationInput) {\n projects(filter: $filter, pagination: $pagination) {\n items {\n ...ProjectFullFields\n }\n total\n hasMore\n }\n}\n ${ProjectFullFieldsFragmentDoc}`;\n\n/**\n * __useGetProjectsQuery__\n *\n * To run a query within a React component, call `useGetProjectsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetProjectsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetProjectsQuery({\n * variables: {\n * filter: // value for 'filter'\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetProjectsQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>(GetProjectsDocument, options);\n }\nexport function useGetProjectsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>(GetProjectsDocument, options);\n }\n// @ts-ignore\nexport function useGetProjectsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>;\nexport function useGetProjectsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProjectsQuery | undefined, Types.GetProjectsQueryVariables>;\nexport function useGetProjectsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>(GetProjectsDocument, options);\n }\nexport type GetProjectsQueryHookResult = ReturnType<typeof useGetProjectsQuery>;\nexport type GetProjectsLazyQueryHookResult = ReturnType<typeof useGetProjectsLazyQuery>;\nexport type GetProjectsSuspenseQueryHookResult = ReturnType<typeof useGetProjectsSuspenseQuery>;\nexport type GetProjectsQueryResult = Apollo.QueryResult<Types.GetProjectsQuery, Types.GetProjectsQueryVariables>;\nexport const GetProjectDocument = gql`\n query GetProject($id: ID!) {\n project(id: $id) {\n ...ProjectFullFields\n }\n}\n ${ProjectFullFieldsFragmentDoc}`;\n\n/**\n * __useGetProjectQuery__\n *\n * To run a query within a React component, call `useGetProjectQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetProjectQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetProjectQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetProjectQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetProjectQuery, Types.GetProjectQueryVariables> & ({ variables: Types.GetProjectQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetProjectQuery, Types.GetProjectQueryVariables>(GetProjectDocument, options);\n }\nexport function useGetProjectLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetProjectQuery, Types.GetProjectQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetProjectQuery, Types.GetProjectQueryVariables>(GetProjectDocument, options);\n }\n// @ts-ignore\nexport function useGetProjectSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProjectQuery, Types.GetProjectQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProjectQuery, Types.GetProjectQueryVariables>;\nexport function useGetProjectSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProjectQuery, Types.GetProjectQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProjectQuery | undefined, Types.GetProjectQueryVariables>;\nexport function useGetProjectSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProjectQuery, Types.GetProjectQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetProjectQuery, Types.GetProjectQueryVariables>(GetProjectDocument, options);\n }\nexport type GetProjectQueryHookResult = ReturnType<typeof useGetProjectQuery>;\nexport type GetProjectLazyQueryHookResult = ReturnType<typeof useGetProjectLazyQuery>;\nexport type GetProjectSuspenseQueryHookResult = ReturnType<typeof useGetProjectSuspenseQuery>;\nexport type GetProjectQueryResult = Apollo.QueryResult<Types.GetProjectQuery, Types.GetProjectQueryVariables>;\nexport const GetMyProjectsDocument = gql`\n query GetMyProjects($pagination: PaginationInput) {\n myProjects(pagination: $pagination) {\n items {\n ...ProjectCardFields\n }\n total\n hasMore\n }\n}\n ${ProjectCardFieldsFragmentDoc}`;\n\n/**\n * __useGetMyProjectsQuery__\n *\n * To run a query within a React component, call `useGetMyProjectsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetMyProjectsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetMyProjectsQuery({\n * variables: {\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetMyProjectsQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>(GetMyProjectsDocument, options);\n }\nexport function useGetMyProjectsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>(GetMyProjectsDocument, options);\n }\n// @ts-ignore\nexport function useGetMyProjectsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>;\nexport function useGetMyProjectsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetMyProjectsQuery | undefined, Types.GetMyProjectsQueryVariables>;\nexport function useGetMyProjectsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>(GetMyProjectsDocument, options);\n }\nexport type GetMyProjectsQueryHookResult = ReturnType<typeof useGetMyProjectsQuery>;\nexport type GetMyProjectsLazyQueryHookResult = ReturnType<typeof useGetMyProjectsLazyQuery>;\nexport type GetMyProjectsSuspenseQueryHookResult = ReturnType<typeof useGetMyProjectsSuspenseQuery>;\nexport type GetMyProjectsQueryResult = Apollo.QueryResult<Types.GetMyProjectsQuery, Types.GetMyProjectsQueryVariables>;\nexport const GetProjectTagsDocument = gql`\n query GetProjectTags($input: GetProjectTagsInput!) {\n getProjectTags(input: $input) {\n ...ProjectTagAssignmentFields\n }\n}\n ${ProjectTagAssignmentFieldsFragmentDoc}`;\n\n/**\n * __useGetProjectTagsQuery__\n *\n * To run a query within a React component, call `useGetProjectTagsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetProjectTagsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetProjectTagsQuery({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useGetProjectTagsQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables> & ({ variables: Types.GetProjectTagsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables>(GetProjectTagsDocument, options);\n }\nexport function useGetProjectTagsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables>(GetProjectTagsDocument, options);\n }\n// @ts-ignore\nexport function useGetProjectTagsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables>;\nexport function useGetProjectTagsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProjectTagsQuery | undefined, Types.GetProjectTagsQueryVariables>;\nexport function useGetProjectTagsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables>(GetProjectTagsDocument, options);\n }\nexport type GetProjectTagsQueryHookResult = ReturnType<typeof useGetProjectTagsQuery>;\nexport type GetProjectTagsLazyQueryHookResult = ReturnType<typeof useGetProjectTagsLazyQuery>;\nexport type GetProjectTagsSuspenseQueryHookResult = ReturnType<typeof useGetProjectTagsSuspenseQuery>;\nexport type GetProjectTagsQueryResult = Apollo.QueryResult<Types.GetProjectTagsQuery, Types.GetProjectTagsQueryVariables>;\nexport const GetWorkspacesDocument = gql`\n query GetWorkspaces($filter: WorkspaceFilterInput, $pagination: PaginationInput) {\n workspaces(filter: $filter, pagination: $pagination) {\n items {\n ...WorkspaceFullFields\n }\n total\n hasMore\n }\n}\n ${WorkspaceFullFieldsFragmentDoc}`;\n\n/**\n * __useGetWorkspacesQuery__\n *\n * To run a query within a React component, call `useGetWorkspacesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWorkspacesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWorkspacesQuery({\n * variables: {\n * filter: // value for 'filter'\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetWorkspacesQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>(GetWorkspacesDocument, options);\n }\nexport function useGetWorkspacesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>(GetWorkspacesDocument, options);\n }\n// @ts-ignore\nexport function useGetWorkspacesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>;\nexport function useGetWorkspacesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspacesQuery | undefined, Types.GetWorkspacesQueryVariables>;\nexport function useGetWorkspacesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>(GetWorkspacesDocument, options);\n }\nexport type GetWorkspacesQueryHookResult = ReturnType<typeof useGetWorkspacesQuery>;\nexport type GetWorkspacesLazyQueryHookResult = ReturnType<typeof useGetWorkspacesLazyQuery>;\nexport type GetWorkspacesSuspenseQueryHookResult = ReturnType<typeof useGetWorkspacesSuspenseQuery>;\nexport type GetWorkspacesQueryResult = Apollo.QueryResult<Types.GetWorkspacesQuery, Types.GetWorkspacesQueryVariables>;\nexport const GetWorkspaceDocument = gql`\n query GetWorkspace($id: ID!) {\n workspace(id: $id) {\n ...WorkspaceFullFields\n }\n}\n ${WorkspaceFullFieldsFragmentDoc}`;\n\n/**\n * __useGetWorkspaceQuery__\n *\n * To run a query within a React component, call `useGetWorkspaceQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWorkspaceQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWorkspaceQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetWorkspaceQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables> & ({ variables: Types.GetWorkspaceQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables>(GetWorkspaceDocument, options);\n }\nexport function useGetWorkspaceLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables>(GetWorkspaceDocument, options);\n }\n// @ts-ignore\nexport function useGetWorkspaceSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables>;\nexport function useGetWorkspaceSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceQuery | undefined, Types.GetWorkspaceQueryVariables>;\nexport function useGetWorkspaceSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables>(GetWorkspaceDocument, options);\n }\nexport type GetWorkspaceQueryHookResult = ReturnType<typeof useGetWorkspaceQuery>;\nexport type GetWorkspaceLazyQueryHookResult = ReturnType<typeof useGetWorkspaceLazyQuery>;\nexport type GetWorkspaceSuspenseQueryHookResult = ReturnType<typeof useGetWorkspaceSuspenseQuery>;\nexport type GetWorkspaceQueryResult = Apollo.QueryResult<Types.GetWorkspaceQuery, Types.GetWorkspaceQueryVariables>;\nexport const GetMyWorkspacesDocument = gql`\n query GetMyWorkspaces($pagination: PaginationInput) {\n myWorkspaces(pagination: $pagination) {\n items {\n ...WorkspaceCardFields\n }\n total\n hasMore\n }\n}\n ${WorkspaceCardFieldsFragmentDoc}`;\n\n/**\n * __useGetMyWorkspacesQuery__\n *\n * To run a query within a React component, call `useGetMyWorkspacesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetMyWorkspacesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetMyWorkspacesQuery({\n * variables: {\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetMyWorkspacesQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>(GetMyWorkspacesDocument, options);\n }\nexport function useGetMyWorkspacesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>(GetMyWorkspacesDocument, options);\n }\n// @ts-ignore\nexport function useGetMyWorkspacesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>;\nexport function useGetMyWorkspacesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetMyWorkspacesQuery | undefined, Types.GetMyWorkspacesQueryVariables>;\nexport function useGetMyWorkspacesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>(GetMyWorkspacesDocument, options);\n }\nexport type GetMyWorkspacesQueryHookResult = ReturnType<typeof useGetMyWorkspacesQuery>;\nexport type GetMyWorkspacesLazyQueryHookResult = ReturnType<typeof useGetMyWorkspacesLazyQuery>;\nexport type GetMyWorkspacesSuspenseQueryHookResult = ReturnType<typeof useGetMyWorkspacesSuspenseQuery>;\nexport type GetMyWorkspacesQueryResult = Apollo.QueryResult<Types.GetMyWorkspacesQuery, Types.GetMyWorkspacesQueryVariables>;\nexport const GetWorkspaceTagsDocument = gql`\n query GetWorkspaceTags($input: GetWorkspaceTagsInput!) {\n getWorkspaceTags(input: $input) {\n ...WorkspaceTagAssignmentFields\n }\n}\n ${WorkspaceTagAssignmentFieldsFragmentDoc}`;\n\n/**\n * __useGetWorkspaceTagsQuery__\n *\n * To run a query within a React component, call `useGetWorkspaceTagsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWorkspaceTagsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWorkspaceTagsQuery({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useGetWorkspaceTagsQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables> & ({ variables: Types.GetWorkspaceTagsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables>(GetWorkspaceTagsDocument, options);\n }\nexport function useGetWorkspaceTagsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables>(GetWorkspaceTagsDocument, options);\n }\n// @ts-ignore\nexport function useGetWorkspaceTagsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables>;\nexport function useGetWorkspaceTagsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceTagsQuery | undefined, Types.GetWorkspaceTagsQueryVariables>;\nexport function useGetWorkspaceTagsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables>(GetWorkspaceTagsDocument, options);\n }\nexport type GetWorkspaceTagsQueryHookResult = ReturnType<typeof useGetWorkspaceTagsQuery>;\nexport type GetWorkspaceTagsLazyQueryHookResult = ReturnType<typeof useGetWorkspaceTagsLazyQuery>;\nexport type GetWorkspaceTagsSuspenseQueryHookResult = ReturnType<typeof useGetWorkspaceTagsSuspenseQuery>;\nexport type GetWorkspaceTagsQueryResult = Apollo.QueryResult<Types.GetWorkspaceTagsQuery, Types.GetWorkspaceTagsQueryVariables>;"],"mappings":";;;AAMA,IAAM,IAAiB,EAAE,EAkVZ,IAAmC,CAAG;;;;;;;;;;;;OAatC,IAAkC,CAAG;;;;;;;;;;;;;;;OAgBrC,IAAkC,CAAG;;;;;;;;MAQ5C,KACO,IAA+B,CAAG;;;;;;;;;;;;OAalC,IAAwC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6B3C,IAA+B,CAAG;;;;;;;;;;MAUzC,EAA6B;EACjC,KACW,IAAiC,CAAG;;;;;;;;;;;;;;;OAgBpC,IAA0C,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;OA0B7C,IAAiC,CAAG;;;;;;;;;;;;;;MAc3C,EAA+B;EACnC,KACW,IAA4B,CAAG;;;;;;;;;;;;;;OAmD/B,IAAiC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsGpC,IAA6B,CAAG;;;;;;;;;;;;;;OAyChC,IAAgC,CAAG;;;;OA+BnC,IAAkC,CAAG;;;;OA+BrC,IAA2B,CAAG;;;;;;;;;;;;;;;;;;;OA8C9B,IAA2B,CAAG;;;;;;;;;;;;;;;OA2C9B,IAA2B,CAAG;;;;;;;;OAmC9B,IAA2B,CAAG;;;;;;;;OAmC9B,IAA2B,CAAG;;;;;;;;OAmC9B,IAA2B,CAAG;;;;;;;OAkC9B,IAA2B,CAAG;;;;OA+B9B,IAAgC,CAAG;;;;;;;;;;;;;;;;AA0CX,CAAG;;;;;;;;;;;;;OAwCH,CAAG;;;;;;;;;;;;;OAyCH,CAAG;;;;OA+BF,CAAG;;;;;;;;OAmCD,CAAG;;;;;;;;OAmCN,CAAG;;;;;;;;;;;;;;;;OA2CN,CAAG;;;;;;MAM/B,KA2B8B,CAAG;;;;OA+BG,CAAG;;;;;;MAMvC,KA2BiC,CAAG;;;;;;;;;;;;;;;;;AA2C1C,IAAa,IAA0B,CAAG;;;;;;;;;;;;;;;;;;;OA+C7B,IAA0B,CAAG;;;;;AA+BF,CAAG;;;;;;;;;OAoCA,CAAG;;;;;;;;;OAoCH,CAAG;;;;;;;;OAmCV,CAAG;;;;;;MAMjC,KA2BgC,CAAG;;;;;AA+BzC,IAAa,IAA+B,CAAG;;;;;;MAMzC;AAoBN,SAAgB,EAAgC,GAAqI;CAC7K,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAA6F,GAA8B,EAAQ;;AAKnK,IAAa,IAA8B,CAAG;;;;;;;;;;MAUxC,KAsCO,IAA6B,CAAG;;;;;;MAMvC,KAqCO,IAA4B,CAAG;;;;;;;;;;MAUtC,KAsCO,IAAkC,CAAG;;;;;;;;;;MAU5C,KAsCO,IAAwB,CAAG;;;;;;MAMlC;AAqCyC,CAAG;;;;;;;MAO5C,KAoC6B,CAAG;;;;;;;;;;MAUhC,KAsC4B,CAAG;;;;;;MAM/B,KAqC+B,CAAG;;;;;;;;;;MAUlC,KAqCgC,CAAG;;;;;;MAMnC;AAqCN,IAAa,IAAwB,CAAG;;;;;;;;;;MAUlC,KAsCO,IAAuB,CAAG;;;;;;MAMjC;AAqCiC,CAAG;;;;;;;;;;MAUpC;AAqCN,IAAa,IAA2B,CAAG;;;;;;MAMrC;AAkBN,SAAgB,EAAyB,GAAkN;CACnP,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,SAA4E,GAA0B,EAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMemberMutations.js","names":[],"sources":["../../src/hooks/useMemberMutations.ts"],"sourcesContent":["import { useMutation, useQueryClient, type QueryClient } from '@tanstack/react-query';\nimport { print } from 'graphql';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\nimport {\n AddWorkspaceMemberDocument,\n RemoveWorkspaceMemberDocument,\n RemoveUserFromWorkspaceDocument,\n CreateInvitationDocument,\n UpdateInvitationDocument,\n AcceptInvitationDocument,\n RejectInvitationDocument,\n CancelInvitationDocument,\n ResendInvitationDocument,\n DeleteInvitationDocument,\n BulkCreateInvitationsDocument,\n} from '../generated/wspace-operations';\nimport type {\n WorkspaceMember,\n WorkspaceInvitation,\n AddWorkspaceMemberInput,\n CreateInvitationInput,\n UpdateInvitationInput,\n} from '../types';\nimport { useWorkspacesEventEmitter } from './useWorkspacesEventEmitter';\nimport { safeTelemetryError } from '../utils/telemetryError';\n\nfunction invalidateMemberViews(queryClient: QueryClient, workspaceId?: string | null) {\n queryClient.invalidateQueries({ queryKey: ['workspaceMembers'] });\n queryClient.invalidateQueries({ queryKey: ['workspaceMembersInfinite'] });\n queryClient.invalidateQueries({ queryKey: ['userWorkspaces'] });\n queryClient.invalidateQueries({ queryKey: ['myWorkspaces'] });\n queryClient.invalidateQueries({ queryKey: ['dashboard', 'global'] });\n if (workspaceId) {\n queryClient.invalidateQueries({ queryKey: ['workspaceMembers', workspaceId] });\n queryClient.invalidateQueries({ queryKey: ['workspaceMembersInfinite', workspaceId] });\n queryClient.invalidateQueries({ queryKey: ['dashboard', 'workspace', workspaceId] });\n }\n}\n\nfunction invalidateInvitationViews(\n queryClient: QueryClient,\n invitationId?: string,\n workspaceId?: string | null,\n // Only TERMINAL actions (accept / reject / cancel / delete) leave the invite\n // no longer pending and should evict it from the recipient's My Invites list.\n // Non-terminal actions (create / update / resend) keep it PENDING and must NOT\n // remove it — otherwise resending/updating a still-pending invite would make\n // it vanish from the recipient's list until a full reload.\n evictFromPending = false\n) {\n // Optimistically drop the invitation from the recipient's pending list so the\n // card disappears immediately after a terminal action. Invalidation alone has\n // proven unreliable at triggering a refetch of `myPendingInvitations` here —\n // the accepted invite stays on screen with no feedback, which leads users to\n // re-click Accept and hit \"Invitation is already accepted\". The cache write\n // is the source of the visible update; the invalidations below still run for\n // eventual consistency. Matches all `['myPendingInvitations', <email>]` keys.\n if (invitationId && evictFromPending) {\n queryClient.setQueriesData<WorkspaceInvitation[] | undefined>(\n { queryKey: ['myPendingInvitations'] },\n (old) => (Array.isArray(old) ? old.filter((invite) => invite.id !== invitationId) : old)\n );\n }\n queryClient.invalidateQueries({ queryKey: ['workspaceInvitations'] });\n queryClient.invalidateQueries({ queryKey: ['myPendingInvitations'] });\n if (invitationId) {\n queryClient.invalidateQueries({ queryKey: ['invitation', invitationId] });\n }\n if (workspaceId) {\n queryClient.invalidateQueries({ queryKey: ['workspaceInvitations', workspaceId] });\n }\n}\n\n/**\n * Hook to add a member to a workspace\n * Requires x-workspace-id header for workspace context\n */\nexport const useAddWorkspaceMember = () => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n\n return useMutation({\n mutationFn: async (input: AddWorkspaceMemberInput): Promise<WorkspaceMember> => {\n const result = await graphqlFetch<{ addWorkspaceMember: WorkspaceMember }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(AddWorkspaceMemberDocument),\n variables: { input },\n workspaceId: workspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.addWorkspaceMember;\n },\n onSuccess: (data) => {\n invalidateMemberViews(queryClient, data.workspaceId);\n emit('workspace-member.added', {\n memberId: data.id,\n workspaceId: data.workspaceId,\n userId: data.userId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, input) => {\n emit('workspace-member.add_failed', {\n workspaceId: workspaceId || undefined,\n userId: input?.userId,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to remove a member from a workspace by member ID\n */\nexport const useRemoveWorkspaceMember = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (id: string): Promise<boolean> => {\n const result = await graphqlFetch<{ removeWorkspaceMember: boolean }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(RemoveWorkspaceMemberDocument),\n variables: { id },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Required by gateway RBAC for wspace-scoped operations\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.removeWorkspaceMember;\n },\n onSuccess: (_, id) => {\n invalidateMemberViews(queryClient, effectiveWorkspaceId);\n emit('workspace-member.removed', { memberId: id, source: 'microfe-workspaces' });\n },\n onError: (err, id) => {\n emit('workspace-member.remove_failed', {\n memberId: id,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to remove a user from a workspace\n * Requires x-workspace-id header for workspace context\n */\nexport const useRemoveUserFromWorkspace = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (userId: string): Promise<boolean> => {\n const result = await graphqlFetch<{ removeUserFromWorkspace: boolean }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(RemoveUserFromWorkspaceDocument),\n variables: { userId },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.removeUserFromWorkspace;\n },\n onSuccess: (_, userId) => {\n invalidateMemberViews(queryClient, effectiveWorkspaceId);\n queryClient.invalidateQueries({ queryKey: ['userWorkspaces', userId] });\n emit('workspace-member.removed', { userId, source: 'microfe-workspaces' });\n },\n onError: (err, userId) => {\n emit('workspace-member.remove_failed', {\n userId,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * NOTE: The updateWorkspaceMemberRoles mutation has been removed from the backend.\n * Role management is now handled via invitations - when creating an invitation,\n * you can specify roleIds that will be assigned when the invitation is accepted.\n *\n * Use CreateInvitationInput.roleIds to assign roles to new members.\n */\n\n/**\n * Hook to create a workspace invitation\n * Uses x-workspace-id header as fallback when input.workspaceId is not provided\n */\nexport const useCreateInvitation = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (input: CreateInvitationInput): Promise<WorkspaceInvitation> => {\n const result = await graphqlFetch<{ createInvitation: WorkspaceInvitation }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(CreateInvitationDocument),\n variables: { input },\n workspaceId: input.workspaceId || effectiveWorkspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header fallback\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.createInvitation;\n },\n onSuccess: (data) => {\n const wsId = data.workspaceId ?? effectiveWorkspaceId;\n invalidateInvitationViews(queryClient, data.id, wsId);\n emit('workspace-invitation.created', {\n invitationId: data.id,\n workspaceId: data.workspaceId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, input) => {\n emit('workspace-invitation.create_failed', {\n workspaceId: input?.workspaceId || effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to update an invitation\n */\nexport const useUpdateInvitation = () => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n\n return useMutation({\n mutationFn: async ({\n id,\n input,\n }: {\n id: string;\n input: UpdateInvitationInput;\n }): Promise<WorkspaceInvitation> => {\n const result = await graphqlFetch<{ updateInvitation: WorkspaceInvitation }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(UpdateInvitationDocument),\n variables: { id, input },\n workspaceId: workspaceId || undefined,\n workspaceToken: true, // Required by gateway RBAC for wspace-scoped operations\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.updateInvitation;\n },\n onSuccess: (data) => {\n invalidateInvitationViews(queryClient, data.id, data.workspaceId);\n emit('workspace-invitation.updated', {\n invitationId: data.id,\n workspaceId: data.workspaceId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, variables) => {\n emit('workspace-invitation.update_failed', {\n invitationId: variables?.id,\n workspaceId: workspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to accept an invitation\n */\nexport const useAcceptInvitation = () => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n\n return useMutation({\n mutationFn: async (id: string): Promise<WorkspaceInvitation> => {\n const result = await graphqlFetch<{ acceptInvitation: WorkspaceInvitation }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(AcceptInvitationDocument),\n variables: { id },\n workspaceId: workspaceId || undefined,\n workspaceToken: true, // Required by gateway RBAC for wspace-scoped operations\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.acceptInvitation;\n },\n onSuccess: (data) => {\n // Terminal: the invite is now accepted — evict it from My Invites.\n invalidateInvitationViews(queryClient, data.id, data.workspaceId, true);\n invalidateMemberViews(queryClient, data.workspaceId);\n emit('workspace-invitation.accepted', {\n invitationId: data.id,\n workspaceId: data.workspaceId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, id) => {\n emit('workspace-invitation.accept_failed', {\n invitationId: id,\n workspaceId: workspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to reject an invitation\n */\nexport const useRejectInvitation = () => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n\n return useMutation({\n mutationFn: async (id: string): Promise<WorkspaceInvitation> => {\n const result = await graphqlFetch<{ rejectInvitation: WorkspaceInvitation }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(RejectInvitationDocument),\n variables: { id },\n workspaceId: workspaceId || undefined,\n workspaceToken: true, // Required by gateway RBAC for wspace-scoped operations\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.rejectInvitation;\n },\n onSuccess: (data) => {\n // Terminal: the invite is now rejected — evict it from My Invites.\n invalidateInvitationViews(queryClient, data.id, data.workspaceId, true);\n emit('workspace-invitation.rejected', {\n invitationId: data.id,\n workspaceId: data.workspaceId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, id) => {\n emit('workspace-invitation.reject_failed', {\n invitationId: id,\n workspaceId: workspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to cancel an invitation\n */\nexport const useCancelInvitation = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (id: string): Promise<WorkspaceInvitation> => {\n const result = await graphqlFetch<{ cancelInvitation: WorkspaceInvitation }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(CancelInvitationDocument),\n variables: { id },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Required by gateway RBAC for wspace-scoped operations\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.cancelInvitation;\n },\n onSuccess: (data) => {\n // Terminal: the invite is cancelled — evict it from My Invites.\n invalidateInvitationViews(\n queryClient,\n data.id,\n data.workspaceId ?? effectiveWorkspaceId,\n true\n );\n emit('workspace-invitation.cancelled', {\n invitationId: data.id,\n workspaceId: data.workspaceId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, id) => {\n emit('workspace-invitation.cancel_failed', {\n invitationId: id,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to resend an invitation\n */\nexport const useResendInvitation = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (id: string): Promise<WorkspaceInvitation> => {\n const result = await graphqlFetch<{ resendInvitation: WorkspaceInvitation }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(ResendInvitationDocument),\n variables: { id },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Required by gateway RBAC for wspace-scoped operations\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.resendInvitation;\n },\n onSuccess: (data) => {\n invalidateInvitationViews(queryClient, data.id, data.workspaceId ?? effectiveWorkspaceId);\n emit('workspace-invitation.resent', {\n invitationId: data.id,\n workspaceId: data.workspaceId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, id) => {\n emit('workspace-invitation.resend_failed', {\n invitationId: id,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to delete an invitation\n */\nexport const useDeleteInvitation = () => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n\n return useMutation({\n mutationFn: async (id: string): Promise<boolean> => {\n const result = await graphqlFetch<{ deleteInvitation: boolean }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(DeleteInvitationDocument),\n variables: { id },\n workspaceId: workspaceId || undefined,\n workspaceToken: true, // Required by gateway RBAC for wspace-scoped operations\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.deleteInvitation;\n },\n onSuccess: (_, id) => {\n // Terminal: the invite is deleted — evict it from My Invites.\n invalidateInvitationViews(queryClient, id, workspaceId, true);\n emit('workspace-invitation.deleted', { invitationId: id, source: 'microfe-workspaces' });\n },\n onError: (err, id) => {\n emit('workspace-invitation.delete_failed', {\n invitationId: id,\n workspaceId: workspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to bulk create invitations\n * Uses x-workspace-id header as fallback when inputs[].workspaceId is not provided\n */\nexport const useBulkCreateInvitations = () => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async (inputs: CreateInvitationInput[]): Promise<WorkspaceInvitation[]> => {\n const result = await graphqlFetch<{ bulkCreateInvitations: WorkspaceInvitation[] }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: print(BulkCreateInvitationsDocument),\n variables: { inputs },\n workspaceId: inputs[0]?.workspaceId || workspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header fallback\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.bulkCreateInvitations;\n },\n onSuccess: (invitations) => {\n queryClient.invalidateQueries({ queryKey: ['workspaceInvitations'] });\n queryClient.invalidateQueries({ queryKey: ['myPendingInvitations'] });\n const workspaceIds = new Set(\n invitations.map((invitation) => invitation.workspaceId).filter(Boolean)\n );\n for (const wsId of workspaceIds) {\n queryClient.invalidateQueries({ queryKey: ['workspaceInvitations', wsId] });\n }\n },\n });\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useOrgsWithPermission.js","names":[],"sources":["../../src/hooks/useOrgsWithPermission.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useAuth } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\n\n/**\n * Filter a set of organization ids down to those where the current user has\n * a specific RBAC permission. Bulk-checks against the rbac service so the\n * result tracks the authoritative permission evaluator — including\n * overrides and future OPA policies — instead of duplicating role→permission\n * logic on the client.\n *\n * The server caps a single bulk call at `CHECK_PERMISSIONS_BATCH_LIMIT`\n * inputs, so when a user has more orgs than that we chunk into multiple\n * parallel calls and merge the results positionally. Most users will fit\n * in one batch; the chunking is just defensive for power users / service\n * accounts with many memberships.\n *\n * Backend `@rbac` directives still enforce on the mutation; this filter is\n * purely UX so users aren't offered options that will 403 on submit.\n *\n * Note: this MFE talks to the gateway via the shared `graphqlFetch` helper\n * + react-query (not Apollo), so we mirror that pattern instead of using\n * the codegen'd Apollo hook. The duplicate `.graphql` file at\n * `src/operations/global/rbac/check-permissions.graphql` is intentionally\n * kept so when this MFE eventually migrates to the codegen'd pattern (see\n * todo.md, \"Issue to address later\"), the operation already exists.\n */\n\n// Matches the server-side limit on `checkPermissions(inputs: [...])` —\n// kept here as a constant so the chunking intent is explicit.\nconst CHECK_PERMISSIONS_BATCH_LIMIT = 50;\n\n// `decisionPath` is intentionally NOT selected — only `allowed` drives\n// the UI here, and `decisionPath` exposes RBAC policy internals (role\n// names, override decisions) that we don't want to leak into network\n// traffic visible in browser devtools just for UX filtering.\nconst CHECK_PERMISSIONS_QUERY = `\n query CheckRbacPermissions($inputs: [PermissionCheckInput!]!) {\n checkPermissions(inputs: $inputs) {\n allowed\n }\n }\n`;\n\ninterface PermissionCheckResult {\n allowed: boolean;\n}\n\nexport interface UseOrgsWithPermissionResult {\n allowedIds: Set<string>;\n loading: boolean;\n isError: boolean;\n}\n\nexport function useOrgsWithPermission(\n orgIds: readonly string[],\n resourceType: string,\n action: string\n): UseOrgsWithPermissionResult {\n const { user } = useAuth();\n const { authToken } = useWorkspacesContext();\n const actorId = user?.id ?? '';\n\n const enabled = Boolean(actorId && orgIds.length > 0);\n\n // `stableIds` only needs to change when the *values* change — a fresh array\n // with identical contents shouldn't bust the query cache or trigger refetch.\n // Use the joined string as the memo key so deep-equal arrays share a memo.\n // Separator MUST be a char that can't appear in an id (',') — joining\n // on '' would collide on adjacency: ['ab','cd'] and ['a','bcd'] would\n // share a cache key.\n const stableKey = useMemo(() => orgIds.join(','), [orgIds]);\n const stableIds = useMemo(() => (stableKey ? stableKey.split(',') : []), [stableKey]);\n\n const { data, isLoading, error } = useQuery({\n queryKey: ['checkPermissions', actorId, resourceType, action, stableKey],\n enabled,\n queryFn: async (): Promise<PermissionCheckResult[]> => {\n // Chunk into <=CHECK_PERMISSIONS_BATCH_LIMIT-sized batches so users\n // with more orgs than the server cap still get a complete answer.\n // Run batches in parallel and concat in input order so the\n // positional contract relied on below holds.\n const chunks: string[][] = [];\n for (let i = 0; i < stableIds.length; i += CHECK_PERMISSIONS_BATCH_LIMIT) {\n chunks.push(stableIds.slice(i, i + CHECK_PERMISSIONS_BATCH_LIMIT));\n }\n\n const batchResults = await Promise.all(\n chunks.map(async (chunk) => {\n const result = await graphqlFetch<{ checkPermissions: PermissionCheckResult[] }>({\n gateway: 'global',\n authToken: authToken || undefined,\n query: CHECK_PERMISSIONS_QUERY,\n variables: {\n inputs: chunk.map((scopeId) => ({\n actorId,\n actorType: 'USER',\n scopeId,\n resourceType,\n action,\n })),\n },\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'Failed to check permissions');\n }\n return result.data?.checkPermissions ?? [];\n })\n );\n\n return batchResults.flat();\n },\n staleTime: 60 * 1000,\n });\n\n const allowedIds = useMemo(() => {\n const out = new Set<string>();\n if (!data) return out;\n // Positional mapping is the documented contract of the bulk\n // `checkPermissions` API — results come back in the same order as\n // inputs. Length-guard against a backend that ever reorders/filters\n // so we never silently mis-attribute a permission to the wrong org.\n const bounded = Math.min(data.length, stableIds.length);\n for (let i = 0; i < bounded; i += 1) {\n if (data[i].allowed && stableIds[i]) out.add(stableIds[i]);\n }\n return out;\n }, [data, stableIds]);\n\n return {\n allowedIds,\n loading: enabled && isLoading,\n // Surface error so callers can decide between \"stay in loading state\"\n // and \"show an error\". Default behavior should be the former — the\n // backend @rbac directive still enforces correctly on submit, so it's\n // safer to keep the form visible than to lock the user out on a\n // transient rbac-svc blip.\n isError: enabled && Boolean(error),\n };\n}\n"],"mappings":";;;;;;AAgCA,IAAM,IAAgC,IAMhC,IAA0B;AAkBhC,SAAgB,EACd,GACA,GACA,GAC6B;CAC7B,IAAM,EAAE,YAAS,GAAS,EACpB,EAAE,iBAAc,GAAsB,EACtC,IAAU,GAAM,MAAM,IAEtB,IAAU,GAAQ,KAAW,EAAO,SAAS,IAQ7C,IAAY,QAAc,EAAO,KAAK,IAAI,EAAE,CAAC,EAAO,CAAC,EACrD,IAAY,QAAe,IAAY,EAAU,MAAM,IAAI,GAAG,EAAE,EAAG,CAAC,EAAU,CAAC,EAE/E,EAAE,SAAM,cAAW,aAAU,EAAS;EAC1C,UAAU;GAAC;GAAoB;GAAS;GAAc;GAAQ;GAAU;EACxE;EACA,SAAS,YAA8C;GAKrD,IAAM,IAAqB,EAAE;AAC7B,QAAK,IAAI,IAAI,GAAG,IAAI,EAAU,QAAQ,KAAK,EACzC,GAAO,KAAK,EAAU,MAAM,GAAG,IAAI,EAA8B,CAAC;AA2BpE,WAxBqB,MAAM,QAAQ,IACjC,EAAO,IAAI,OAAO,MAAU;IAC1B,IAAM,IAAS,MAAM,EAA4D;KAC/E,SAAS;KACT,WAAW,KAAa,KAAA;KACxB,OAAO;KACP,WAAW,EACT,QAAQ,EAAM,KAAK,OAAa;MAC9B;MACA,WAAW;MACX;MACA;MACA;MACD,EAAE,EACJ;KACF,CAAC;AAEF,QAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,8BAA8B;AAE7E,WAAO,EAAO,MAAM,oBAAoB,EAAE;KAC1C,CACH,EAEmB,MAAM;;EAE5B,WAAW,KAAK;EACjB,CAAC;AAgBF,QAAO;EACL,YAfiB,QAAc;GAC/B,IAAM,oBAAM,IAAI,KAAa;AAC7B,OAAI,CAAC,EAAM,QAAO;GAKlB,IAAM,IAAU,KAAK,IAAI,EAAK,QAAQ,EAAU,OAAO;AACvD,QAAK,IAAI,IAAI,GAAG,IAAI,GAAS,KAAK,EAChC,CAAI,EAAK,GAAG,WAAW,EAAU,MAAI,EAAI,IAAI,EAAU,GAAG;AAE5D,UAAO;KACN,CAAC,GAAM,EAAU,CAAC;EAInB,SAAS,KAAW;EAMpB,SAAS,KAAW,EAAQ;EAC7B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePendingInvitations.js","names":[],"sources":["../../src/hooks/usePendingInvitations.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\nimport type { WorkspaceInvitation } from '../types';\n\nconst GET_MY_PENDING_INVITATIONS = `\n query GetMyPendingInvitations {\n myPendingInvitations {\n id\n email\n status\n roleIds\n workspaceId\n invitedById\n expiresAt\n createdAt\n projectId\n invitedUserId\n updatedAt\n deletedAt\n context {\n type\n metadata\n }\n }\n }\n`;\n\n/**\n * Hook to fetch all pending invitations for the authenticated user's email.\n * Kept in its own module so route-level consumers do not depend on the larger\n * workspace-members hook module just to render the invites surfaces.\n */\nexport const useMyPendingInvitations = (email?: string) => {\n const { authToken } = useWorkspacesContext();\n\n return useQuery({\n queryKey: ['myPendingInvitations', email],\n queryFn: async (): Promise<WorkspaceInvitation[]> => {\n if (!email) {\n return [];\n }\n\n const result = await graphqlFetch<{ myPendingInvitations: WorkspaceInvitation[] }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: GET_MY_PENDING_INVITATIONS,\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'Failed to fetch pending invitations');\n }\n\n return result.data?.myPendingInvitations ?? [];\n },\n enabled: Boolean(email),\n staleTime: 60 * 1000,\n });\n};\n"],"mappings":";;;;AAKA,IAAM,IAA6B,+UA4BtB,KAA2B,MAAmB;CACzD,IAAM,EAAE,iBAAc,GAAsB;AAE5C,QAAO,EAAS;EACd,UAAU,CAAC,wBAAwB,EAAM;EACzC,SAAS,YAA4C;AACnD,OAAI,CAAC,EACH,QAAO,EAAE;GAGX,IAAM,IAAS,MAAM,EAA8D;IACjF,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACR,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,sCAAsC;AAGrF,UAAO,EAAO,MAAM,wBAAwB,EAAE;;EAEhD,SAAS,EAAQ;EACjB,WAAW,KAAK;EACjB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useProjectMemberMutations.js","names":[],"sources":["../../src/hooks/useProjectMemberMutations.ts"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\nimport type { AddProjectMemberInput, ProjectMember, RemoveProjectMemberInput } from '../types';\nimport { safeTelemetryError } from '../utils/telemetryError';\nimport { useWorkspacesEventEmitter } from './useWorkspacesEventEmitter';\n\nconst ADD_PROJECT_MEMBER_MUTATION = `\n mutation AddProjectMember($input: AddProjectMemberInput!) {\n addProjectMember(input: $input) {\n id\n projectId\n userId\n createdAt\n updatedAt\n deletedAt\n }\n }\n`;\n\nconst REMOVE_PROJECT_MEMBER_MUTATION = `\n mutation RemoveProjectMember($input: RemoveProjectMemberInput!) {\n removeProjectMember(input: $input)\n }\n`;\n\nexport const useAddProjectMember = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (input: AddProjectMemberInput): Promise<ProjectMember> => {\n const result = await graphqlFetch<{ addProjectMember: ProjectMember }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: ADD_PROJECT_MEMBER_MUTATION,\n variables: { input },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true,\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n if (!result.data?.addProjectMember) {\n throw new Error('No data returned from addProjectMember mutation');\n }\n\n return result.data.addProjectMember;\n },\n onSuccess: (data, input) => {\n queryClient.invalidateQueries({\n queryKey: ['projectMembers', effectiveWorkspaceId, input.projectId],\n });\n queryClient.invalidateQueries({\n queryKey: ['projectMembersInfinite', effectiveWorkspaceId, input.projectId],\n });\n queryClient.invalidateQueries({\n queryKey: ['projectMembersCount', effectiveWorkspaceId, input.projectId],\n });\n emit('project-member.added', {\n memberId: data.id,\n projectId: input.projectId,\n userId: input.userId,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, input) => {\n emit('project-member.add_failed', {\n projectId: input?.projectId,\n userId: input?.userId,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\nexport const useRemoveProjectMember = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (input: RemoveProjectMemberInput): Promise<boolean> => {\n const result = await graphqlFetch<{ removeProjectMember: boolean }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: REMOVE_PROJECT_MEMBER_MUTATION,\n variables: { input },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true,\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n if (typeof result.data?.removeProjectMember !== 'boolean') {\n throw new Error('No data returned from removeProjectMember mutation');\n }\n\n return result.data.removeProjectMember;\n },\n onSuccess: (_, input) => {\n queryClient.invalidateQueries({\n queryKey: ['projectMembers', effectiveWorkspaceId, input.projectId],\n });\n queryClient.invalidateQueries({\n queryKey: ['projectMembersInfinite', effectiveWorkspaceId, input.projectId],\n });\n queryClient.invalidateQueries({\n queryKey: ['projectMembersCount', effectiveWorkspaceId, input.projectId],\n });\n emit('project-member.removed', {\n projectId: input.projectId,\n userId: input.userId,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, input) => {\n emit('project-member.remove_failed', {\n projectId: input?.projectId,\n userId: input?.userId,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n"],"mappings":";;;;;;AAOA,IAAM,IAA8B,oNAa9B,IAAiC,wHAM1B,KAAuB,MAAiC;CACnE,IAAM,EAAE,cAAW,mBAAgB,GAAsB,EACnD,IAAc,GAAgB,EAC9B,EAAE,YAAS,GAA2B,EACtC,IAAuB,KAAuB;AAEpD,QAAO,EAAY;EACjB,YAAY,OAAO,MAAyD;GAC1E,IAAM,IAAS,MAAM,EAAkD;IACrE,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACP,WAAW,EAAE,UAAO;IACpB,aAAa,KAAwB,KAAA;IACrC,gBAAgB;IACjB,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,gBAAgB;AAG/D,OAAI,CAAC,EAAO,MAAM,iBAChB,OAAU,MAAM,kDAAkD;AAGpE,UAAO,EAAO,KAAK;;EAErB,YAAY,GAAM,MAAU;AAU1B,GATA,EAAY,kBAAkB,EAC5B,UAAU;IAAC;IAAkB;IAAsB,EAAM;IAAU,EACpE,CAAC,EACF,EAAY,kBAAkB,EAC5B,UAAU;IAAC;IAA0B;IAAsB,EAAM;IAAU,EAC5E,CAAC,EACF,EAAY,kBAAkB,EAC5B,UAAU;IAAC;IAAuB;IAAsB,EAAM;IAAU,EACzE,CAAC,EACF,EAAK,wBAAwB;IAC3B,UAAU,EAAK;IACf,WAAW,EAAM;IACjB,QAAQ,EAAM;IACd,aAAa,KAAwB,KAAA;IACrC,QAAQ;IACT,CAAC;;EAEJ,UAAU,GAAK,MAAU;AACvB,KAAK,6BAA6B;IAChC,WAAW,GAAO;IAClB,QAAQ,GAAO;IACf,aAAa,KAAwB,KAAA;IACrC,QAAQ;IACR,cAAc,EAAmB,EAAI;IACtC,CAAC;;EAEL,CAAC;GAGS,KAA0B,MAAiC;CACtE,IAAM,EAAE,cAAW,mBAAgB,GAAsB,EACnD,IAAc,GAAgB,EAC9B,EAAE,YAAS,GAA2B,EACtC,IAAuB,KAAuB;AAEpD,QAAO,EAAY;EACjB,YAAY,OAAO,MAAsD;GACvE,IAAM,IAAS,MAAM,EAA+C;IAClE,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACP,WAAW,EAAE,UAAO;IACpB,aAAa,KAAwB,KAAA;IACrC,gBAAgB;IACjB,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,gBAAgB;AAG/D,OAAI,OAAO,EAAO,MAAM,uBAAwB,UAC9C,OAAU,MAAM,qDAAqD;AAGvE,UAAO,EAAO,KAAK;;EAErB,YAAY,GAAG,MAAU;AAUvB,GATA,EAAY,kBAAkB,EAC5B,UAAU;IAAC;IAAkB;IAAsB,EAAM;IAAU,EACpE,CAAC,EACF,EAAY,kBAAkB,EAC5B,UAAU;IAAC;IAA0B;IAAsB,EAAM;IAAU,EAC5E,CAAC,EACF,EAAY,kBAAkB,EAC5B,UAAU;IAAC;IAAuB;IAAsB,EAAM;IAAU,EACzE,CAAC,EACF,EAAK,0BAA0B;IAC7B,WAAW,EAAM;IACjB,QAAQ,EAAM;IACd,aAAa,KAAwB,KAAA;IACrC,QAAQ;IACT,CAAC;;EAEJ,UAAU,GAAK,MAAU;AACvB,KAAK,gCAAgC;IACnC,WAAW,GAAO;IAClB,QAAQ,GAAO;IACf,aAAa,KAAwB,KAAA;IACrC,QAAQ;IACR,cAAc,EAAmB,EAAI;IACtC,CAAC;;EAEL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useProjectMembers.js","names":[],"sources":["../../src/hooks/useProjectMembers.ts"],"sourcesContent":["import { useInfiniteQuery, useQuery } from '@tanstack/react-query';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\nimport type { PaginationInput, ProjectMember, ProjectMemberList } from '../types';\n\nconst GET_PROJECT_MEMBERS_QUERY = `\n query GetProjectMembers($projectId: ID!, $pagination: PaginationInput) {\n projectMembers(filter: { projectId: $projectId }, pagination: $pagination) {\n items {\n id\n projectId\n userId\n createdAt\n updatedAt\n deletedAt\n }\n total\n hasMore\n }\n }\n`;\n\nconst GET_PROJECT_MEMBER_QUERY = `\n query GetProjectMember($id: ID!) {\n projectMember(id: $id) {\n id\n projectId\n userId\n createdAt\n updatedAt\n deletedAt\n }\n }\n`;\n\nexport const useProjectMembers = (\n projectId: string,\n workspaceIdOverride?: string,\n pagination?: PaginationInput,\n enabled = true\n) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useQuery({\n queryKey: ['projectMembers', effectiveWorkspaceId, projectId, pagination],\n queryFn: async (): Promise<ProjectMemberList> => {\n const result = await graphqlFetch<{ projectMembers: ProjectMemberList }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: GET_PROJECT_MEMBERS_QUERY,\n variables: { projectId, pagination },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true,\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n if (!result.data?.projectMembers) {\n throw new Error('Project members query returned no data');\n }\n\n return result.data.projectMembers;\n },\n enabled: enabled && !!projectId && !!effectiveWorkspaceId,\n staleTime: 60 * 1000,\n });\n};\n\nexport const useInfiniteProjectMembers = (\n projectId: string,\n workspaceIdOverride?: string,\n pageSize = 100,\n enabled = true\n) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useInfiniteQuery({\n queryKey: ['projectMembersInfinite', effectiveWorkspaceId, projectId, pageSize],\n initialPageParam: 0,\n queryFn: async ({ pageParam }): Promise<ProjectMemberList> => {\n const result = await graphqlFetch<{ projectMembers: ProjectMemberList }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: GET_PROJECT_MEMBERS_QUERY,\n variables: {\n projectId,\n pagination: {\n limit: pageSize,\n offset: pageParam,\n },\n },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true,\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n if (!result.data?.projectMembers) {\n throw new Error('Project members query returned no data');\n }\n\n return result.data.projectMembers;\n },\n getNextPageParam: (lastPage, _pages, lastPageParam) =>\n lastPage.hasMore ? Number(lastPageParam) + pageSize : undefined,\n enabled: enabled && !!projectId && !!effectiveWorkspaceId,\n staleTime: 60 * 1000,\n });\n};\n\nexport const useProjectMember = (id: string, workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useQuery({\n queryKey: ['projectMember', effectiveWorkspaceId, id],\n queryFn: async (): Promise<ProjectMember> => {\n const result = await graphqlFetch<{ projectMember: ProjectMember }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: GET_PROJECT_MEMBER_QUERY,\n variables: { id },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true,\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n if (!result.data?.projectMember) {\n throw new Error('Project member query returned no data');\n }\n\n return result.data.projectMember;\n },\n enabled: !!id && !!effectiveWorkspaceId,\n staleTime: 60 * 1000,\n });\n};\n"],"mappings":";;;;AAKA,IAAM,IAA4B,4UAkErB,KACX,GACA,GACA,IAAW,KACX,IAAU,OACP;CACH,IAAM,EAAE,cAAW,mBAAgB,GAAsB,EACnD,IAAuB,KAAuB;AAEpD,QAAO,EAAiB;EACtB,UAAU;GAAC;GAA0B;GAAsB;GAAW;GAAS;EAC/E,kBAAkB;EAClB,SAAS,OAAO,EAAE,mBAA4C;GAC5D,IAAM,IAAS,MAAM,EAAoD;IACvE,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACP,WAAW;KACT;KACA,YAAY;MACV,OAAO;MACP,QAAQ;MACT;KACF;IACD,aAAa,KAAwB,KAAA;IACrC,gBAAgB;IACjB,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,gBAAgB;AAG/D,OAAI,CAAC,EAAO,MAAM,eAChB,OAAU,MAAM,yCAAyC;AAG3D,UAAO,EAAO,KAAK;;EAErB,mBAAmB,GAAU,GAAQ,MACnC,EAAS,UAAU,OAAO,EAAc,GAAG,IAAW,KAAA;EACxD,SAAS,KAAW,CAAC,CAAC,KAAa,CAAC,CAAC;EACrC,WAAW,KAAK;EACjB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useProjectMutations.js","names":[],"sources":["../../src/hooks/useProjectMutations.ts"],"sourcesContent":["import { useMutation, useQueryClient, type QueryClient } from '@tanstack/react-query';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\nimport type {\n CreateProjectInput,\n UpdateProjectInput,\n Project,\n ProjectTagAssignment,\n} from '../types';\nimport { useWorkspacesEventEmitter } from './useWorkspacesEventEmitter';\nimport { safeTelemetryError } from '../utils/telemetryError';\n\nconst CREATE_PROJECT_MUTATION = `\n mutation CreateProject($input: CreateProjectInput!) {\n createProject(input: $input) {\n id\n name\n key\n workspaceId\n creatorId\n status\n tags\n createdAt\n }\n }\n`;\n\nconst UPDATE_PROJECT_MUTATION = `\n mutation UpdateProject($id: ID!, $input: UpdateProjectInput!) {\n updateProject(id: $id, input: $input) {\n id\n name\n key\n status\n config\n tags\n archived\n updatedAt\n }\n }\n`;\n\nconst DELETE_PROJECT_MUTATION = `\n mutation DeleteProject($id: ID!) {\n deleteProject(id: $id)\n }\n`;\n\nconst ARCHIVE_PROJECT_MUTATION = `\n mutation ArchiveProject($id: ID!) {\n archiveProject(id: $id) {\n id\n archived\n updatedAt\n }\n }\n`;\n\nconst UNARCHIVE_PROJECT_MUTATION = `\n mutation UnarchiveProject($id: ID!) {\n unarchiveProject(id: $id) {\n id\n archived\n updatedAt\n }\n }\n`;\n\nconst TAG_PROJECT_MUTATION = `\n mutation AssignProjectTag($input: AssignTagInput!) {\n assignTag(input: $input) {\n id\n tagId\n entityType\n entityId\n source\n assignedById\n createdAt\n validFrom\n validTo\n metadata\n }\n }\n`;\n\nconst GET_PROJECT_TAG_ASSIGNMENTS_QUERY = `\n query GetProjectTagAssignments($entityType: String!, $entityId: ID!) {\n getEntityTags(entityType: $entityType, entityId: $entityId) {\n id\n tagId\n }\n }\n`;\n\nconst REMOVE_TAG_ASSIGNMENT_MUTATION = `\n mutation RemoveTagAssignment($id: ID!) {\n removeTagAssignment(id: $id)\n }\n`;\n\nfunction invalidateProjectViews(queryClient: QueryClient) {\n queryClient.invalidateQueries({ queryKey: ['projects'] });\n queryClient.invalidateQueries({ queryKey: ['project'] });\n queryClient.invalidateQueries({ queryKey: ['myProjects'] });\n queryClient.invalidateQueries({ queryKey: ['dashboard', 'projects'] });\n}\n\n/**\n * Hook to create a new project\n */\nexport const useCreateProject = (workspaceIdOverride?: string) => {\n const { authToken, onProjectCreate, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (input: CreateProjectInput): Promise<Project> => {\n const result = await graphqlFetch<{ createProject: Project }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: CREATE_PROJECT_MUTATION,\n variables: { input },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header (required by gateway RBAC)\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.createProject;\n },\n onSuccess: (project) => {\n invalidateProjectViews(queryClient);\n emit('project.created', {\n projectId: project.id,\n workspaceId: project.workspaceId,\n source: 'microfe-workspaces',\n });\n if (onProjectCreate) {\n onProjectCreate(project);\n }\n },\n onError: (err) => {\n emit('project.create_failed', {\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to update an existing project\n */\nexport const useUpdateProject = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async ({\n id,\n input,\n }: {\n id: string;\n input: UpdateProjectInput;\n }): Promise<Project> => {\n const result = await graphqlFetch<{ updateProject: Project }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: UPDATE_PROJECT_MUTATION,\n variables: { id, input },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header (required by gateway RBAC)\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.updateProject;\n },\n onSuccess: (project) => {\n invalidateProjectViews(queryClient);\n emit('project.updated', {\n projectId: project.id,\n workspaceId: project.workspaceId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, variables) => {\n emit('project.update_failed', {\n projectId: variables?.id,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to assign a structured tag to a project.\n */\nexport const useTagProject = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (input: {\n entityId: string;\n tagId: string;\n }): Promise<ProjectTagAssignment> => {\n const result = await graphqlFetch<{\n assignTag: {\n id: string;\n tagId: string;\n entityType: string;\n entityId: string;\n source: string;\n assignedById?: string | null;\n createdAt?: string | null;\n validFrom?: string | null;\n validTo?: string | null;\n metadata?: Record<string, unknown> | null;\n };\n }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: TAG_PROJECT_MUTATION,\n variables: {\n input: {\n tagId: input.tagId,\n entityType: 'WORKSPACE_PROJECT',\n entityId: input.entityId,\n source: 'MANUAL',\n context: {\n workspaceId: effectiveWorkspaceId,\n projectId: input.entityId,\n },\n },\n },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true,\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n if (!result.data?.assignTag) {\n throw new Error('GraphQL error');\n }\n\n return {\n id: result.data.assignTag.id,\n tagId: result.data.assignTag.tagId,\n entityType: result.data.assignTag.entityType,\n entityId: result.data.assignTag.entityId,\n source: result.data.assignTag.source,\n assignedBy: result.data.assignTag.assignedById ?? null,\n assignedAt: result.data.assignTag.createdAt ?? null,\n validFrom: result.data.assignTag.validFrom ?? null,\n validTo: result.data.assignTag.validTo ?? null,\n metadata: result.data.assignTag.metadata ?? null,\n tag: null,\n };\n },\n onSuccess: (_assignment, input) => {\n invalidateProjectViews(queryClient);\n emit('project.updated', {\n projectId: input.entityId,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, input) => {\n emit('project.update_failed', {\n projectId: input.entityId,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to remove a structured tag from a project.\n */\nexport const useUntagProject = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (input: {\n entityId: string;\n tagId: string;\n assignmentId?: string;\n }): Promise<boolean> => {\n let assignmentId = input.assignmentId;\n\n if (!assignmentId) {\n const lookup = await graphqlFetch<{\n getEntityTags: Array<{\n id: string;\n tagId: string;\n }>;\n }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: GET_PROJECT_TAG_ASSIGNMENTS_QUERY,\n variables: {\n entityType: 'WORKSPACE_PROJECT',\n entityId: input.entityId,\n },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true,\n });\n\n if (lookup.errors?.length) {\n throw new Error(lookup.errors[0]?.message || 'GraphQL error');\n }\n\n assignmentId = lookup.data?.getEntityTags.find((entry) => entry.tagId === input.tagId)?.id;\n }\n\n if (!assignmentId) {\n return false;\n }\n\n const result = await graphqlFetch<{ removeTagAssignment: boolean }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: REMOVE_TAG_ASSIGNMENT_MUTATION,\n variables: { id: assignmentId },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true,\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data?.removeTagAssignment ?? false;\n },\n onSuccess: (_ok, input) => {\n invalidateProjectViews(queryClient);\n emit('project.updated', {\n projectId: input.entityId,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, input) => {\n emit('project.update_failed', {\n projectId: input.entityId,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to delete a project\n */\nexport const useDeleteProject = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (id: string): Promise<boolean> => {\n const result = await graphqlFetch<{ deleteProject: boolean }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: DELETE_PROJECT_MUTATION,\n variables: { id },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header (required by gateway RBAC)\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.deleteProject;\n },\n onSuccess: (_, id) => {\n invalidateProjectViews(queryClient);\n emit('project.deleted', { projectId: id, source: 'microfe-workspaces' });\n },\n onError: (err, id) => {\n emit('project.delete_failed', {\n projectId: id,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to archive a project\n */\nexport const useArchiveProject = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (id: string): Promise<Project> => {\n const result = await graphqlFetch<{ archiveProject: Project }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: ARCHIVE_PROJECT_MUTATION,\n variables: { id },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header (required by gateway RBAC)\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.archiveProject;\n },\n onSuccess: (project) => {\n invalidateProjectViews(queryClient);\n emit('project.archived', {\n projectId: project.id,\n workspaceId: project.workspaceId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, id) => {\n emit('project.archive_failed', {\n projectId: id,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n\n/**\n * Hook to unarchive a project\n */\nexport const useUnarchiveProject = (workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const queryClient = useQueryClient();\n const { emit } = useWorkspacesEventEmitter();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useMutation({\n mutationFn: async (id: string): Promise<Project> => {\n const result = await graphqlFetch<{ unarchiveProject: Project }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: UNARCHIVE_PROJECT_MUTATION,\n variables: { id },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header (required by gateway RBAC)\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.unarchiveProject;\n },\n onSuccess: (project) => {\n invalidateProjectViews(queryClient);\n emit('project.unarchived', {\n projectId: project.id,\n workspaceId: project.workspaceId,\n source: 'microfe-workspaces',\n });\n },\n onError: (err, id) => {\n emit('project.unarchive_failed', {\n projectId: id,\n workspaceId: effectiveWorkspaceId || undefined,\n source: 'microfe-workspaces',\n errorMessage: safeTelemetryError(err),\n });\n },\n });\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useProjects.js","names":[],"sources":["../../src/hooks/useProjects.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\nimport type { ProjectFilters, ProjectList, Project, PaginationInput } from '../types';\n\nconst GET_PROJECTS_QUERY = `\n query GetProjects($filter: ProjectFilterInput, $pagination: PaginationInput) {\n projects(filter: $filter, pagination: $pagination) {\n items {\n id\n name\n key\n workspaceId\n creatorId\n status\n config\n tags\n tagAssignments {\n id\n tagId\n entityType\n entityId\n source\n assignedBy\n assignedAt\n validFrom\n validTo\n metadata\n tag {\n id\n key\n label\n value\n vocabularyId\n parentId\n hierarchyPath\n color\n icon\n description\n vocabulary {\n key\n }\n }\n }\n archived\n createdAt\n updatedAt\n deletedAt\n }\n total\n hasMore\n }\n }\n`;\n\nconst GET_PROJECT_QUERY = `\n query GetProject($id: ID!) {\n project(id: $id) {\n id\n name\n key\n workspaceId\n creatorId\n status\n config\n tags\n tagAssignments {\n id\n tagId\n entityType\n entityId\n source\n assignedBy\n assignedAt\n validFrom\n validTo\n metadata\n tag {\n id\n key\n label\n value\n vocabularyId\n parentId\n hierarchyPath\n color\n icon\n description\n vocabulary {\n key\n }\n }\n }\n archived\n createdAt\n updatedAt\n deletedAt\n }\n }\n`;\n\nconst GET_MY_PROJECTS_QUERY = `\n query GetMyProjects($pagination: PaginationInput) {\n myProjects(pagination: $pagination) {\n items {\n id\n name\n key\n workspaceId\n status\n tags\n tagAssignments {\n id\n tagId\n entityType\n entityId\n source\n assignedBy\n assignedAt\n validFrom\n validTo\n metadata\n tag {\n id\n key\n label\n value\n vocabularyId\n parentId\n hierarchyPath\n color\n icon\n description\n vocabulary {\n key\n }\n }\n }\n archived\n createdAt\n updatedAt\n }\n total\n hasMore\n }\n }\n`;\n\nconst GET_PROJECT_MEMBERS_COUNT = `\n query GetProjectMembersCount($projectId: ID!) {\n projectMembers(filter: { projectId: $projectId }, pagination: { limit: 1 }) {\n total\n }\n }\n`;\n\n/**\n * Hook to fetch all projects with filtering and pagination\n */\nexport const useProjects = (\n filters?: ProjectFilters,\n pagination?: PaginationInput,\n workspaceIdOverride?: string\n) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const effectiveWorkspaceId = filters?.workspaceId || workspaceIdOverride || workspaceId;\n\n return useQuery({\n queryKey: ['projects', effectiveWorkspaceId, filters, pagination],\n queryFn: async (): Promise<ProjectList> => {\n const result = await graphqlFetch<{ projects: ProjectList }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: GET_PROJECTS_QUERY,\n variables: {\n filter: {\n ...filters,\n workspaceId: effectiveWorkspaceId,\n },\n pagination,\n },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header (required by gateway RBAC)\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.projects;\n },\n enabled: !!effectiveWorkspaceId,\n staleTime: 5 * 60 * 1000,\n });\n};\n\n/**\n * Hook to fetch a single project by ID\n */\nexport const useProject = (id: string, workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useQuery({\n queryKey: ['project', effectiveWorkspaceId, id],\n queryFn: async (): Promise<Project> => {\n const result = await graphqlFetch<{ project: Project }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: GET_PROJECT_QUERY,\n variables: { id },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header (required by gateway RBAC)\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.project;\n },\n enabled: !!id,\n staleTime: 5 * 60 * 1000,\n });\n};\n\n/**\n * Hook to fetch current user's projects\n */\nexport const useMyProjects = (pagination?: PaginationInput) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n\n return useQuery({\n queryKey: ['myProjects', workspaceId, pagination],\n queryFn: async (): Promise<ProjectList> => {\n const result = await graphqlFetch<{ myProjects: ProjectList }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: GET_MY_PROJECTS_QUERY,\n variables: { pagination },\n workspaceId: workspaceId || undefined,\n workspaceToken: true, // Auto-read from profile context for x-workspace-id header (required by gateway RBAC)\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data!.myProjects;\n },\n staleTime: 5 * 60 * 1000,\n });\n};\n\nexport const useProjectMembersCount = (projectId: string, workspaceIdOverride?: string) => {\n const { authToken, workspaceId } = useWorkspacesContext();\n const effectiveWorkspaceId = workspaceIdOverride || workspaceId;\n\n return useQuery({\n queryKey: ['projectMembersCount', effectiveWorkspaceId, projectId],\n queryFn: async (): Promise<number> => {\n const result = await graphqlFetch<{\n projectMembers: { total: number };\n }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n query: GET_PROJECT_MEMBERS_COUNT,\n variables: { projectId },\n workspaceId: effectiveWorkspaceId || undefined,\n workspaceToken: true,\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'GraphQL error');\n }\n\n return result.data?.projectMembers.total ?? 0;\n },\n enabled: !!projectId && !!effectiveWorkspaceId,\n staleTime: 60 * 1000,\n });\n};\n"],"mappings":";;;;AAKA,IAAM,IAAqB,46BAkDrB,IAAoB,stBA8CpB,IAAwB,40BA+CxB,IAA4B,qKAWrB,KACX,GACA,GACA,MACG;CACH,IAAM,EAAE,cAAW,mBAAgB,GAAsB,EACnD,IAAuB,GAAS,eAAe,KAAuB;AAE5E,QAAO,EAAS;EACd,UAAU;GAAC;GAAY;GAAsB;GAAS;GAAW;EACjE,SAAS,YAAkC;GACzC,IAAM,IAAS,MAAM,EAAwC;IAC3D,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACP,WAAW;KACT,QAAQ;MACN,GAAG;MACH,aAAa;MACd;KACD;KACD;IACD,aAAa,KAAwB,KAAA;IACrC,gBAAgB;IACjB,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,gBAAgB;AAG/D,UAAO,EAAO,KAAM;;EAEtB,SAAS,CAAC,CAAC;EACX,WAAW,MAAS;EACrB,CAAC;GAMS,KAAc,GAAY,MAAiC;CACtE,IAAM,EAAE,cAAW,mBAAgB,GAAsB,EACnD,IAAuB,KAAuB;AAEpD,QAAO,EAAS;EACd,UAAU;GAAC;GAAW;GAAsB;GAAG;EAC/C,SAAS,YAA8B;GACrC,IAAM,IAAS,MAAM,EAAmC;IACtD,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACP,WAAW,EAAE,OAAI;IACjB,aAAa,KAAwB,KAAA;IACrC,gBAAgB;IACjB,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,gBAAgB;AAG/D,UAAO,EAAO,KAAM;;EAEtB,SAAS,CAAC,CAAC;EACX,WAAW,MAAS;EACrB,CAAC;GAMS,KAAiB,MAAiC;CAC7D,IAAM,EAAE,cAAW,mBAAgB,GAAsB;AAEzD,QAAO,EAAS;EACd,UAAU;GAAC;GAAc;GAAa;GAAW;EACjD,SAAS,YAAkC;GACzC,IAAM,IAAS,MAAM,EAA0C;IAC7D,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACP,WAAW,EAAE,eAAY;IACzB,aAAa,KAAe,KAAA;IAC5B,gBAAgB;IACjB,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,gBAAgB;AAG/D,UAAO,EAAO,KAAM;;EAEtB,WAAW,MAAS;EACrB,CAAC;GAGS,KAA0B,GAAmB,MAAiC;CACzF,IAAM,EAAE,cAAW,mBAAgB,GAAsB,EACnD,IAAuB,KAAuB;AAEpD,QAAO,EAAS;EACd,UAAU;GAAC;GAAuB;GAAsB;GAAU;EAClE,SAAS,YAA6B;GACpC,IAAM,IAAS,MAAM,EAElB;IACD,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACP,WAAW,EAAE,cAAW;IACxB,aAAa,KAAwB,KAAA;IACrC,gBAAgB;IACjB,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,gBAAgB;AAG/D,UAAO,EAAO,MAAM,eAAe,SAAS;;EAE9C,SAAS,CAAC,CAAC,KAAa,CAAC,CAAC;EAC1B,WAAW,KAAK;EACjB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useScopedNavigation.js","names":[],"sources":["../../src/hooks/useScopedNavigation.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { useLocation } from 'react-router';\n\nexport function useScopedNavigation() {\n const location = useLocation();\n\n const withCurrentSearch = useCallback(\n (path: string) => `${path}${location.search || ''}`,\n [location.search]\n );\n\n return { withCurrentSearch };\n}\n"],"mappings":";;;AAGA,SAAgB,IAAsB;CACpC,IAAM,IAAW,GAAa;AAO9B,QAAO,EAAE,mBALiB,GACvB,MAAiB,GAAG,IAAO,EAAS,UAAU,MAC/C,CAAC,EAAS,OAAO,CAClB,EAE2B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTenants.js","names":[],"sources":["../../src/hooks/useTenants.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useWorkspacesContext } from '../providers/WorkspacesProvider';\nimport type { TenantList, OrganizationList, PaginationInput } from '../types';\n\n/**\n * GraphQL query to fetch user's accessible tenants\n * This queries the global-tenant-svc via global gateway\n */\nconst GET_MY_TENANTS = `\n query GetMyTenants($limit: Int, $offset: Int) {\n myTenants(limit: $limit, offset: $offset) {\n items {\n id\n name\n slug\n status\n type\n }\n total\n hasMore\n }\n }\n`;\n\n/**\n * GraphQL query to fetch user's organizations\n */\nconst GET_MY_ORGANIZATIONS = `\n query GetMyOrganizations($limit: Int, $offset: Int) {\n myOrganizations(limit: $limit, offset: $offset) {\n items {\n id\n name\n slug\n tenantId\n }\n total\n hasMore\n }\n }\n`;\n\n/**\n * Hook to fetch tenants accessible to the current user\n * Uses the global gateway (tenant supergraph) to query myTenants\n */\nexport const useMyTenants = (pagination?: PaginationInput) => {\n const { authToken } = useWorkspacesContext();\n\n return useQuery({\n queryKey: ['myTenants', pagination],\n queryFn: async (): Promise<TenantList> => {\n const result = await graphqlFetch<{ myTenants: TenantList }>({\n gateway: 'global', // Use global gateway for tenant queries\n authToken: authToken || undefined,\n query: GET_MY_TENANTS,\n variables: {\n limit: pagination?.limit ?? 50,\n offset: pagination?.offset ?? 0,\n },\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'Failed to fetch tenants');\n }\n\n return result.data!.myTenants;\n },\n staleTime: 5 * 60 * 1000, // 5 minutes\n });\n};\n\n/**\n * Hook to fetch organizations accessible to the current user\n * Uses the global gateway to query myOrganizations\n */\nexport const useMyOrganizations = (pagination?: PaginationInput) => {\n const { authToken } = useWorkspacesContext();\n\n return useQuery({\n queryKey: ['myOrganizations', pagination],\n queryFn: async (): Promise<OrganizationList> => {\n const result = await graphqlFetch<{ myOrganizations: OrganizationList }>({\n gateway: 'global',\n authToken: authToken || undefined,\n query: GET_MY_ORGANIZATIONS,\n variables: {\n limit: pagination?.limit ?? 50,\n offset: pagination?.offset ?? 0,\n },\n });\n\n if (result.errors?.length) {\n throw new Error(result.errors[0]?.message || 'Failed to fetch organizations');\n }\n\n return result.data!.myOrganizations;\n },\n staleTime: 5 * 60 * 1000,\n });\n};\n"],"mappings":";;;;AASA,IAAM,IAAiB,gPAmBjB,IAAuB,gPAmBhB,KAAgB,MAAiC;CAC5D,IAAM,EAAE,iBAAc,GAAsB;AAE5C,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,EAAW;EACnC,SAAS,YAAiC;GACxC,IAAM,IAAS,MAAM,EAAwC;IAC3D,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACP,WAAW;KACT,OAAO,GAAY,SAAS;KAC5B,QAAQ,GAAY,UAAU;KAC/B;IACF,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,0BAA0B;AAGzE,UAAO,EAAO,KAAM;;EAEtB,WAAW,MAAS;EACrB,CAAC;GAOS,KAAsB,MAAiC;CAClE,IAAM,EAAE,iBAAc,GAAsB;AAE5C,QAAO,EAAS;EACd,UAAU,CAAC,mBAAmB,EAAW;EACzC,SAAS,YAAuC;GAC9C,IAAM,IAAS,MAAM,EAAoD;IACvE,SAAS;IACT,WAAW,KAAa,KAAA;IACxB,OAAO;IACP,WAAW;KACT,OAAO,GAAY,SAAS;KAC5B,QAAQ,GAAY,UAAU;KAC/B;IACF,CAAC;AAEF,OAAI,EAAO,QAAQ,OACjB,OAAU,MAAM,EAAO,OAAO,IAAI,WAAW,gCAAgC;AAG/E,UAAO,EAAO,KAAM;;EAEtB,WAAW,MAAS;EACrB,CAAC"}
|