synapse-react-client 4.0.44 → 4.0.45

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.
Files changed (102) hide show
  1. package/dist/SWC.index.d.ts +1 -1
  2. package/dist/SWC.index.js +2 -2
  3. package/dist/SWC.index.js.map +1 -1
  4. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +2 -1
  5. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  6. package/dist/components/AccessRequirementList/AccessRequirementList.js +126 -125
  7. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  8. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts +1 -1
  9. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts.map +1 -1
  10. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +28 -16
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +99 -97
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
  17. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts +1 -1
  18. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts.map +1 -1
  19. package/dist/components/AccessRequirementList/RequestDataStep.d.ts +1 -4
  20. package/dist/components/AccessRequirementList/RequestDataStep.d.ts.map +1 -1
  21. package/dist/components/AccessRequirementList/RequestDataStep.js +15 -18
  22. package/dist/components/AccessRequirementList/RequestDataStep.js.map +1 -1
  23. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.d.ts.map +1 -1
  24. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +52 -49
  25. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  26. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -1
  27. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -1
  28. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.d.ts +9 -0
  29. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.d.ts.map +1 -0
  30. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.js +45 -0
  31. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.js.map +1 -0
  32. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.d.ts +22 -0
  33. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.d.ts.map +1 -0
  34. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.js +139 -0
  35. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.js.map +1 -0
  36. package/dist/components/Forum/ForumTable.d.ts +17 -5
  37. package/dist/components/Forum/ForumTable.d.ts.map +1 -1
  38. package/dist/components/Forum/ForumTable.js +94 -77
  39. package/dist/components/Forum/ForumTable.js.map +1 -1
  40. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.d.ts.map +1 -1
  41. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +142 -108
  42. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  43. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.d.ts.map +1 -1
  44. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js +15 -15
  45. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  46. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts.map +1 -1
  47. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js +57 -55
  48. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  49. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  50. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +4 -1
  51. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  52. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +5 -0
  53. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -1
  54. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +37 -26
  55. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -1
  56. package/dist/mocks/msw/handlers/discussionHandlers.d.ts.map +1 -1
  57. package/dist/mocks/msw/handlers/discussionHandlers.js +40 -33
  58. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  59. package/dist/synapse-client/SynapseClient.d.ts +10 -0
  60. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  61. package/dist/synapse-client/SynapseClient.js +486 -482
  62. package/dist/synapse-client/SynapseClient.js.map +1 -1
  63. package/dist/synapse-client/index.js +3 -3
  64. package/dist/synapse-queries/KeyFactory.d.ts +13 -1
  65. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  66. package/dist/synapse-queries/KeyFactory.js +11 -1
  67. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  68. package/dist/synapse-queries/dataaccess/index.js +4 -4
  69. package/dist/synapse-queries/dataaccess/useAccessRequirements.d.ts.map +1 -1
  70. package/dist/synapse-queries/dataaccess/useAccessRequirements.js +4 -1
  71. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  72. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +19 -5
  73. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  74. package/dist/synapse-queries/dataaccess/useEDuc.js +29 -21
  75. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  76. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts +12 -0
  77. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts.map +1 -1
  78. package/dist/synapse-queries/dataaccess/useFormTemplate.js +52 -30
  79. package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
  80. package/dist/synapse-queries/forum/useForum.d.ts +5 -1
  81. package/dist/synapse-queries/forum/useForum.d.ts.map +1 -1
  82. package/dist/synapse-queries/forum/useForum.js +23 -1
  83. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  84. package/dist/synapse-queries/index.js +185 -184
  85. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +5 -3
  86. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -1
  87. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +12 -15
  88. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -1
  89. package/dist/tsconfig.build.tsbuildinfo +1 -1
  90. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  91. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  92. package/dist/utils/functions/getEndpoint.d.ts +1 -0
  93. package/dist/utils/functions/getEndpoint.d.ts.map +1 -1
  94. package/dist/utils/functions/getEndpoint.js +3 -3
  95. package/dist/utils/functions/getEndpoint.js.map +1 -1
  96. package/dist/utils/types/RequestableAccessRequirement.d.ts +8 -0
  97. package/dist/utils/types/RequestableAccessRequirement.d.ts.map +1 -0
  98. package/dist/utils/types/RequestableAccessRequirement.js +9 -0
  99. package/dist/utils/types/RequestableAccessRequirement.js.map +1 -0
  100. package/package.json +2 -2
  101. package/dist/testutils/ReactQueryMockUtils.js +0 -676
  102. package/dist/testutils/ReactQueryMockUtils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useAccessRequirements.js","names":[],"sources":["../../../src/synapse-queries/dataaccess/useAccessRequirements.ts"],"sourcesContent":["import { sortAccessRequirementsByCompletion } from '@/components/AccessRequirementList/AccessRequirementListUtils'\nimport SynapseClient, {\n createAccessRequirement,\n createAccessRequirementAcl,\n deleteAccessRequirementAcl,\n updateAccessRequirement,\n updateAccessRequirementAcl,\n} from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n AccessApproval,\n AccessControlList,\n AccessRequirement,\n AccessRequirementSearchRequest,\n AccessRequirementSearchResponse,\n AccessRequirementStatus,\n ACTSubmissionStatus,\n CreateAccessApprovalRequest,\n ManagedACTAccessRequirementStatus,\n Renewal,\n Request,\n ResearchProject,\n WikiPageKey,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQueries,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { KeyFactory } from '../KeyFactory'\nimport { getAllActionsRequiredQueryFilters } from '../QueryFilterUtils'\n\nexport function useGetAccessRequirements<T extends AccessRequirement>(\n accessRequirementId: string | number,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementQueryKey(\n String(accessRequirementId),\n ),\n queryFn: () =>\n SynapseClient.getAccessRequirementById<T>(\n accessToken,\n accessRequirementId,\n ),\n })\n}\n\nexport function useGetAccessRequirementsForEntity(\n entityId: string,\n options?: Partial<UseQueryOptions<AccessRequirement[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityAccessRequirementsQueryKey(entityId),\n queryFn: () =>\n SynapseClient.getAllAccessRequirements(accessToken, entityId),\n })\n}\n\nexport function useGetAccessRequirementsForTeam(\n teamId: string,\n options?: Partial<UseQueryOptions<AccessRequirement[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTeamAccessRequirementsQueryKey(teamId),\n queryFn: () => SynapseClient.getTeamAccessRequirements(accessToken, teamId),\n })\n}\n\nexport function useGetAccessRequirementWikiPageKey(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<WikiPageKey, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementWikiPageKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getWikiPageKeyForAccessRequirement(\n accessToken,\n accessRequirementId,\n ),\n })\n}\n\nexport function useCreateAccessRequirement<T extends AccessRequirement>(\n options?: UseMutationOptions<T, SynapseClientError, Partial<T>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<T, SynapseClientError, Partial<T>>({\n ...options,\n mutationFn: ar => createAccessRequirement<T>(accessToken, ar),\n onSuccess: async (newAr, ar, ctx) => {\n const accessRequirementQueryKey = keyFactory.getAccessRequirementQueryKey(\n newAr.id.toString(),\n )\n queryClient.setQueryData(accessRequirementQueryKey, newAr)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAr, ar, ctx)\n }\n return\n },\n })\n}\n\nexport function useUpdateAccessRequirement<T extends AccessRequirement>(\n options?: UseMutationOptions<T, SynapseClientError, T>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<T, SynapseClientError, T>({\n ...options,\n mutationFn: ar => updateAccessRequirement<T>(accessToken, ar),\n onSuccess: async (newAr, ar, ctx) => {\n const accessRequirementQueryKey = keyFactory.getAccessRequirementQueryKey(\n newAr.id.toString(),\n )\n queryClient.setQueryData(accessRequirementQueryKey, newAr)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAr, ar, ctx)\n }\n return\n },\n })\n}\n\nexport function useGetAccessRequirementACL(\n accessRequirementId: string,\n options?: Partial<\n UseQueryOptions<AccessControlList | null, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementAclQueryKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getAccessRequirementAcl(accessToken, accessRequirementId),\n })\n}\n\nexport function useDeleteAccessRequirementACL(\n options?: UseMutationOptions<void, SynapseClientError, string>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, string>({\n ...options,\n mutationFn: accessRequirementId =>\n deleteAccessRequirementAcl(accessToken, accessRequirementId),\n onSuccess: async (data, accessRequirementId, ctx) => {\n await queryClient.invalidateQueries({\n queryKey:\n keyFactory.getAccessRequirementAclQueryKey(accessRequirementId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(data, accessRequirementId, ctx)\n }\n },\n })\n}\n\nexport function useCreateAccessRequirementACL(\n options?: UseMutationOptions<\n AccessControlList,\n SynapseClientError,\n AccessControlList\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: acl => createAccessRequirementAcl(accessToken, acl),\n onSuccess: async (newAcl, acl, ctx) => {\n const accessRequirementAclQueryKey =\n keyFactory.getAccessRequirementAclQueryKey(newAcl.id)\n queryClient.setQueryData(accessRequirementAclQueryKey, newAcl)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAcl, acl, ctx)\n }\n return\n },\n })\n}\n\nexport function useUpdateAccessRequirementACL(\n options?: UseMutationOptions<\n AccessControlList,\n SynapseClientError,\n AccessControlList\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: acl => updateAccessRequirementAcl(accessToken, acl),\n onSuccess: async (newAcl, acl, ctx) => {\n const accessRequirementAclQueryKey =\n keyFactory.getAccessRequirementAclQueryKey(newAcl.id)\n queryClient.setQueryData(accessRequirementAclQueryKey, newAcl)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAcl, acl, ctx)\n }\n return\n },\n })\n}\n\nexport function useSearchAccessRequirementsInfinite<\n TData = InfiniteData<AccessRequirementSearchResponse>,\n>(\n params: Omit<AccessRequirementSearchRequest, 'nextPageToken'>,\n options?: UseInfiniteQueryOptions<\n AccessRequirementSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n AccessRequirementSearchResponse['nextPageToken']\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n AccessRequirementSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n AccessRequirementSearchResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.searchAccessRequirementsQueryKey(params),\n queryFn: async context => {\n return await SynapseClient.searchAccessRequirements(accessToken, {\n ...params,\n nextPageToken: context.pageParam,\n })\n },\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\nexport function useCreateLockAccessRequirement(\n options?: Partial<\n UseMutationOptions<AccessRequirement, SynapseClientError, string>\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<AccessRequirement, SynapseClientError, string>({\n ...options,\n mutationFn: (entityId: string) =>\n SynapseClient.createLockAccessRequirement(entityId, accessToken),\n mutationKey: ['createLockAccessRequirement'],\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate all access requirement queries\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementQueryKey(),\n }),\n // Invalidate all entity queries (not just the current entity because the new AR may apply to this entity's children)\n // this also invalidates entity actions required\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllEntityDataQueryKey(),\n }),\n ...getAllActionsRequiredQueryFilters(keyFactory).map(filter =>\n queryClient.invalidateQueries(filter),\n ),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nfunction getAccessRequirementStatusQueryOptions<\n T extends AccessRequirementStatus | ManagedACTAccessRequirementStatus =\n AccessRequirementStatus,\n>(\n keyFactory: KeyFactory,\n accessToken: string,\n accessRequirementId: string,\n): UseQueryOptions<T, SynapseClientError> {\n return {\n queryKey:\n keyFactory.getAccessRequirementStatusQueryKey(accessRequirementId),\n queryFn: () =>\n SynapseClient.getAccessRequirementStatus<T>(\n accessToken,\n accessRequirementId,\n ),\n }\n}\n\nexport function useGetAccessRequirementStatus<\n T extends AccessRequirementStatus | ManagedACTAccessRequirementStatus =\n AccessRequirementStatus,\n>(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n ...getAccessRequirementStatusQueryOptions<T>(\n keyFactory,\n accessToken!,\n accessRequirementId,\n ),\n })\n}\n\nexport function useGetAccessRequirementStatuses<\n T extends AccessRequirementStatus | ManagedACTAccessRequirementStatus =\n AccessRequirementStatus,\n>(accessRequirementIds: string[]) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQueries({\n queries: accessRequirementIds.map(id =>\n getAccessRequirementStatusQueryOptions<T>(keyFactory, accessToken!, id),\n ),\n })\n}\n\nexport function useSortAccessRequirementIdsByCompletion(\n accessRequirementIds: string[],\n options?: Partial<UseQueryOptions<string[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getSortedAccessRequirementsAndStatusQueryKey(\n accessRequirementIds,\n ),\n\n queryFn: () =>\n sortAccessRequirementsByCompletion(accessToken, accessRequirementIds),\n })\n}\n\nexport function useGetResearchProject(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<ResearchProject, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getAccessRequirementResearchProjectQueryKey(\n accessRequirementId,\n ),\n queryFn: () =>\n SynapseClient.getResearchProject(accessRequirementId, accessToken!),\n })\n}\n\nexport function useUpdateResearchProject(\n options?: Partial<\n UseMutationOptions<ResearchProject, SynapseClientError, ResearchProject>\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<ResearchProject, SynapseClientError, ResearchProject>({\n ...options,\n mutationFn: (researchProject: ResearchProject) =>\n SynapseClient.updateResearchProject(researchProject, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n // Invalidate the research project query\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementResearchProjectQueryKey(\n data.accessRequirementId,\n ),\n })\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useGetDataAccessRequestForUpdate(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<Request | Renewal, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getDataAccessRequestForUpdateQueryKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getDataAccessRequestForUpdate(\n accessRequirementId,\n accessToken!,\n ),\n })\n}\n\nexport function useUpdateDataAccessRequest(\n options?: UseMutationOptions<\n Request | Renewal,\n SynapseClientError,\n Request | Renewal\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<Request | Renewal, SynapseClientError, Request | Renewal>({\n ...options,\n mutationFn: (requestInterface: Request | Renewal) =>\n SynapseClient.updateDataAccessRequest(requestInterface, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n // Invalidate the data access request query\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestForUpdateQueryKey(\n data.accessRequirementId,\n ),\n })\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useCreateAccessApproval(\n options?: UseMutationOptions<\n AccessApproval,\n SynapseClientError,\n CreateAccessApprovalRequest\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<\n AccessApproval,\n SynapseClientError,\n CreateAccessApprovalRequest\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.createAccessApproval(accessToken, request),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate query for AR status\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementStatusQueryKey(\n String(variables.requirementId),\n ),\n }),\n // changes to access requirement eligibility may impact entity actions required\n ...getAllActionsRequiredQueryFilters(keyFactory).map(filter =>\n queryClient.invalidateQueries(filter),\n ),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useCancelDataAccessRequest(\n options?: UseMutationOptions<\n ACTSubmissionStatus,\n SynapseClientError,\n { submissionId: string; accessRequirementId: string }\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<\n ACTSubmissionStatus,\n SynapseClientError,\n { submissionId: string; accessRequirementId: string }\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.cancelDataAccessRequest(request.submissionId, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate data access submission queries\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessSubmissionQueryKey(),\n }),\n // Invalidate query for AR status\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementStatusQueryKey(\n String(variables.accessRequirementId),\n ),\n }),\n ])\n\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useAccessRequirements.js","names":[],"sources":["../../../src/synapse-queries/dataaccess/useAccessRequirements.ts"],"sourcesContent":["import { sortAccessRequirementsByCompletion } from '@/components/AccessRequirementList/AccessRequirementListUtils'\nimport SynapseClient, {\n createAccessRequirement,\n createAccessRequirementAcl,\n deleteAccessRequirementAcl,\n updateAccessRequirement,\n updateAccessRequirementAcl,\n} from '@/synapse-client'\nimport { SynapseClientError, useSynapseContext } from '@/utils'\nimport {\n AccessApproval,\n AccessControlList,\n AccessRequirement,\n AccessRequirementSearchRequest,\n AccessRequirementSearchResponse,\n AccessRequirementStatus,\n ACTSubmissionStatus,\n CreateAccessApprovalRequest,\n ManagedACTAccessRequirementStatus,\n Renewal,\n Request,\n ResearchProject,\n WikiPageKey,\n} from '@sage-bionetworks/synapse-types'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQueries,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { KeyFactory } from '../KeyFactory'\nimport { getAllActionsRequiredQueryFilters } from '../QueryFilterUtils'\n\nexport function useGetAccessRequirements<T extends AccessRequirement>(\n accessRequirementId: string | number,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementQueryKey(\n String(accessRequirementId),\n ),\n queryFn: () =>\n SynapseClient.getAccessRequirementById<T>(\n accessToken,\n accessRequirementId,\n ),\n })\n}\n\nexport function useGetAccessRequirementsForEntity(\n entityId: string,\n options?: Partial<UseQueryOptions<AccessRequirement[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getEntityAccessRequirementsQueryKey(entityId),\n queryFn: () =>\n SynapseClient.getAllAccessRequirements(accessToken, entityId),\n })\n}\n\nexport function useGetAccessRequirementsForTeam(\n teamId: string,\n options?: Partial<UseQueryOptions<AccessRequirement[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getTeamAccessRequirementsQueryKey(teamId),\n queryFn: () => SynapseClient.getTeamAccessRequirements(accessToken, teamId),\n })\n}\n\nexport function useGetAccessRequirementWikiPageKey(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<WikiPageKey, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementWikiPageKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getWikiPageKeyForAccessRequirement(\n accessToken,\n accessRequirementId,\n ),\n })\n}\n\nexport function useCreateAccessRequirement<T extends AccessRequirement>(\n options?: UseMutationOptions<T, SynapseClientError, Partial<T>>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<T, SynapseClientError, Partial<T>>({\n ...options,\n mutationFn: ar => createAccessRequirement<T>(accessToken, ar),\n onSuccess: async (newAr, ar, ctx) => {\n const accessRequirementQueryKey = keyFactory.getAccessRequirementQueryKey(\n newAr.id.toString(),\n )\n queryClient.setQueryData(accessRequirementQueryKey, newAr)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAr, ar, ctx)\n }\n return\n },\n })\n}\n\nexport function useUpdateAccessRequirement<T extends AccessRequirement>(\n options?: UseMutationOptions<T, SynapseClientError, T>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n return useMutation<T, SynapseClientError, T>({\n ...options,\n mutationFn: ar => updateAccessRequirement<T>(accessToken, ar),\n onSuccess: async (newAr, ar, ctx) => {\n const accessRequirementQueryKey = keyFactory.getAccessRequirementQueryKey(\n newAr.id.toString(),\n )\n queryClient.setQueryData(accessRequirementQueryKey, newAr)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAr, ar, ctx)\n }\n return\n },\n })\n}\n\nexport function useGetAccessRequirementACL(\n accessRequirementId: string,\n options?: Partial<\n UseQueryOptions<AccessControlList | null, SynapseClientError>\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getAccessRequirementAclQueryKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getAccessRequirementAcl(accessToken, accessRequirementId),\n })\n}\n\nexport function useDeleteAccessRequirementACL(\n options?: UseMutationOptions<void, SynapseClientError, string>,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, string>({\n ...options,\n mutationFn: accessRequirementId =>\n deleteAccessRequirementAcl(accessToken, accessRequirementId),\n onSuccess: async (data, accessRequirementId, ctx) => {\n await queryClient.invalidateQueries({\n queryKey:\n keyFactory.getAccessRequirementAclQueryKey(accessRequirementId),\n })\n if (options?.onSuccess) {\n await options.onSuccess(data, accessRequirementId, ctx)\n }\n },\n })\n}\n\nexport function useCreateAccessRequirementACL(\n options?: UseMutationOptions<\n AccessControlList,\n SynapseClientError,\n AccessControlList\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: acl => createAccessRequirementAcl(accessToken, acl),\n onSuccess: async (newAcl, acl, ctx) => {\n const accessRequirementAclQueryKey =\n keyFactory.getAccessRequirementAclQueryKey(newAcl.id)\n queryClient.setQueryData(accessRequirementAclQueryKey, newAcl)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAcl, acl, ctx)\n }\n return\n },\n })\n}\n\nexport function useUpdateAccessRequirementACL(\n options?: UseMutationOptions<\n AccessControlList,\n SynapseClientError,\n AccessControlList\n >,\n) {\n const queryClient = useQueryClient()\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useMutation<AccessControlList, SynapseClientError, AccessControlList>({\n ...options,\n mutationFn: acl => updateAccessRequirementAcl(accessToken, acl),\n onSuccess: async (newAcl, acl, ctx) => {\n const accessRequirementAclQueryKey =\n keyFactory.getAccessRequirementAclQueryKey(newAcl.id)\n queryClient.setQueryData(accessRequirementAclQueryKey, newAcl)\n\n if (options?.onSuccess) {\n return await options.onSuccess(newAcl, acl, ctx)\n }\n return\n },\n })\n}\n\nexport function useSearchAccessRequirementsInfinite<\n TData = InfiniteData<AccessRequirementSearchResponse>,\n>(\n params: Omit<AccessRequirementSearchRequest, 'nextPageToken'>,\n options?: UseInfiniteQueryOptions<\n AccessRequirementSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n AccessRequirementSearchResponse['nextPageToken']\n >,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n return useInfiniteQuery<\n AccessRequirementSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n AccessRequirementSearchResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.searchAccessRequirementsQueryKey(params),\n queryFn: async context => {\n return await SynapseClient.searchAccessRequirements(accessToken, {\n ...params,\n nextPageToken: context.pageParam,\n })\n },\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\nexport function useCreateLockAccessRequirement(\n options?: Partial<\n UseMutationOptions<AccessRequirement, SynapseClientError, string>\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<AccessRequirement, SynapseClientError, string>({\n ...options,\n mutationFn: (entityId: string) =>\n SynapseClient.createLockAccessRequirement(entityId, accessToken),\n mutationKey: ['createLockAccessRequirement'],\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate all access requirement queries\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementQueryKey(),\n }),\n // Invalidate all entity queries (not just the current entity because the new AR may apply to this entity's children)\n // this also invalidates entity actions required\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAllEntityDataQueryKey(),\n }),\n ...getAllActionsRequiredQueryFilters(keyFactory).map(filter =>\n queryClient.invalidateQueries(filter),\n ),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nfunction getAccessRequirementStatusQueryOptions<\n T extends AccessRequirementStatus | ManagedACTAccessRequirementStatus =\n AccessRequirementStatus,\n>(\n keyFactory: KeyFactory,\n accessToken: string,\n accessRequirementId: string,\n): UseQueryOptions<T, SynapseClientError> {\n return {\n queryKey:\n keyFactory.getAccessRequirementStatusQueryKey(accessRequirementId),\n queryFn: () =>\n SynapseClient.getAccessRequirementStatus<T>(\n accessToken,\n accessRequirementId,\n ),\n }\n}\n\nexport function useGetAccessRequirementStatus<\n T extends AccessRequirementStatus | ManagedACTAccessRequirementStatus =\n AccessRequirementStatus,\n>(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<T, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n ...getAccessRequirementStatusQueryOptions<T>(\n keyFactory,\n accessToken!,\n accessRequirementId,\n ),\n })\n}\n\nexport function useGetAccessRequirementStatuses<\n T extends AccessRequirementStatus | ManagedACTAccessRequirementStatus =\n AccessRequirementStatus,\n>(accessRequirementIds: string[]) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQueries({\n queries: accessRequirementIds.map(id =>\n getAccessRequirementStatusQueryOptions<T>(keyFactory, accessToken!, id),\n ),\n })\n}\n\nexport function useSortAccessRequirementIdsByCompletion(\n accessRequirementIds: string[],\n options?: Partial<UseQueryOptions<string[], SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getSortedAccessRequirementsAndStatusQueryKey(\n accessRequirementIds,\n ),\n\n queryFn: () =>\n sortAccessRequirementsByCompletion(accessToken, accessRequirementIds),\n })\n}\n\nexport function useGetResearchProject(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<ResearchProject, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getAccessRequirementResearchProjectQueryKey(\n accessRequirementId,\n ),\n queryFn: () =>\n SynapseClient.getResearchProject(accessRequirementId, accessToken!),\n })\n}\n\nexport function useUpdateResearchProject(\n options?: Partial<\n UseMutationOptions<ResearchProject, SynapseClientError, ResearchProject>\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<ResearchProject, SynapseClientError, ResearchProject>({\n ...options,\n mutationFn: (researchProject: ResearchProject) =>\n SynapseClient.updateResearchProject(researchProject, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n // Invalidate the research project query\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementResearchProjectQueryKey(\n data.accessRequirementId,\n ),\n })\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useGetDataAccessRequestForUpdate(\n accessRequirementId: string,\n options?: Partial<UseQueryOptions<Request | Renewal, SynapseClientError>>,\n) {\n const { accessToken, keyFactory } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getDataAccessRequestForUpdateQueryKey(accessRequirementId),\n\n queryFn: () =>\n SynapseClient.getDataAccessRequestForUpdate(\n accessRequirementId,\n accessToken!,\n ),\n })\n}\n\nexport function useUpdateDataAccessRequest(\n options?: UseMutationOptions<\n Request | Renewal,\n SynapseClientError,\n Request | Renewal\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<Request | Renewal, SynapseClientError, Request | Renewal>({\n ...options,\n mutationFn: (requestInterface: Request | Renewal) =>\n SynapseClient.updateDataAccessRequest(requestInterface, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate the data access request query\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestForUpdateQueryKey(\n data.accessRequirementId,\n ),\n }),\n // The eDUC preview renders this request's content, so any edit makes the cached document\n // obsolete. Marked stale rather than refetched: regenerating it costs a server-side PDF\n // render, and callers await this mutation for a fresh etag before submitting.\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestPreviewQueryKey(data.id),\n refetchType: 'none',\n }),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useCreateAccessApproval(\n options?: UseMutationOptions<\n AccessApproval,\n SynapseClientError,\n CreateAccessApprovalRequest\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<\n AccessApproval,\n SynapseClientError,\n CreateAccessApprovalRequest\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.createAccessApproval(accessToken, request),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate query for AR status\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementStatusQueryKey(\n String(variables.requirementId),\n ),\n }),\n // changes to access requirement eligibility may impact entity actions required\n ...getAllActionsRequiredQueryFilters(keyFactory).map(filter =>\n queryClient.invalidateQueries(filter),\n ),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\nexport function useCancelDataAccessRequest(\n options?: UseMutationOptions<\n ACTSubmissionStatus,\n SynapseClientError,\n { submissionId: string; accessRequirementId: string }\n >,\n) {\n const { accessToken } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<\n ACTSubmissionStatus,\n SynapseClientError,\n { submissionId: string; accessRequirementId: string }\n >({\n ...options,\n mutationFn: request =>\n SynapseClient.cancelDataAccessRequest(request.submissionId, accessToken!),\n onSuccess: async (data, variables, ctx) => {\n await Promise.all([\n // Invalidate data access submission queries\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessSubmissionQueryKey(),\n }),\n // Invalidate query for AR status\n queryClient.invalidateQueries({\n queryKey: keyFactory.getAccessRequirementStatusQueryKey(\n String(variables.accessRequirementId),\n ),\n }),\n ])\n\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n"],"mappings":"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"}
@@ -29,7 +29,10 @@ export declare function useListUserDataAccessRequests(request?: AccessRequestLis
29
29
  */
30
30
  export declare function useListAllUserDataAccessRequests(request?: Omit<AccessRequestListRequest, 'nextPageToken'>, options?: Partial<UseQueryOptions<AccessRequestSummary[], SynapseClientError>>): import("@tanstack/react-query").UseQueryResult<AccessRequestSummary[], SynapseClientError>;
31
31
  /**
32
- * Retrieve the pre-signing preview of the eDUC for a data access request.
32
+ * Retrieve the pre-signing preview of the eDUC for a data access request. The document is rendered
33
+ * from the request as it stands, via an envelope the service discards once the PDF exists, so
34
+ * reading it neither routes anything for signature nor alters the request.
35
+ *
33
36
  * @see GET /repo/v1/dataAccessRequest/{requestId}/preview
34
37
  */
35
38
  export declare function useGetDataAccessRequestPreview(requestId: string, options?: Partial<UseQueryOptions<EDucFileHandleId, SynapseClientError>>): import("@tanstack/react-query").UseQueryResult<EDucFileHandleId, SynapseClientError>;
@@ -51,10 +54,21 @@ export declare function useGetDataAccessRequestSignedFileHandleId(requestId: str
51
54
  */
52
55
  export declare function useGetDataAccessRequestSignatureQuota(requestId: string, options?: Partial<UseQueryOptions<EDucSignatureQuota, SynapseClientError>>): import("@tanstack/react-query").UseQueryResult<EDucSignatureQuota, SynapseClientError>;
53
56
  /**
54
- * Initiate the DocuSign routing for a data access request's eDUC.
57
+ * Identifies the data access request a signature mutation acts on. The access requirement is
58
+ * carried alongside the request id because these mutations all change `eDucSignatureEnvelopeId`
59
+ * on the request itself, and the cache entry holding that field is keyed by access requirement
60
+ * rather than by request.
61
+ */
62
+ export type DataAccessRequestSignatureVariables = {
63
+ requestId: string;
64
+ accessRequirementId: string;
65
+ };
66
+ /**
67
+ * Initiate the DocuSign routing for a data access request's eDUC, creating the envelope and
68
+ * sending it to the signers.
55
69
  * @see POST /repo/v1/dataAccessRequest/{requestId}/signature
56
70
  */
57
- export declare function useInitiateDataAccessRequestSignature(options?: UseMutationOptions<EDucSignatureQuota, SynapseClientError, string>): import("@tanstack/react-query").UseMutationResult<EDucSignatureQuota, SynapseClientError, string, unknown>;
71
+ export declare function useInitiateDataAccessRequestSignature(options?: UseMutationOptions<EDucSignatureQuota, SynapseClientError, DataAccessRequestSignatureVariables>): import("@tanstack/react-query").UseMutationResult<EDucSignatureQuota, SynapseClientError, DataAccessRequestSignatureVariables, unknown>;
58
72
  /**
59
73
  * {@link fetchSignaturePrecheck} as a mutation, for the moment a user commits to sending. Modeled
60
74
  * as a mutation despite being a GET because the answer decides which irreversible call follows, so
@@ -72,10 +86,10 @@ export declare function useGetDataAccessRequestSignatureUpdatable(requestId: str
72
86
  * signatures that have already been collected.
73
87
  * @see PUT /repo/v1/dataAccessRequest/{requestId}/signature
74
88
  */
75
- export declare function useUpdateDataAccessRequestSignature(options?: UseMutationOptions<EDucSignatureStatus, SynapseClientError, string>): import("@tanstack/react-query").UseMutationResult<EDucSignatureStatus, SynapseClientError, string, unknown>;
89
+ export declare function useUpdateDataAccessRequestSignature(options?: UseMutationOptions<EDucSignatureStatus, SynapseClientError, DataAccessRequestSignatureVariables>): import("@tanstack/react-query").UseMutationResult<EDucSignatureStatus, SynapseClientError, DataAccessRequestSignatureVariables, unknown>;
76
90
  /**
77
91
  * Void the eDUC routing for a data access request, reverting the DAR to trad-DUC mode.
78
92
  * @see DELETE /repo/v1/dataAccessRequest/{requestId}/signature
79
93
  */
80
- export declare function useVoidDataAccessRequestSignature(options?: UseMutationOptions<void, SynapseClientError, string>): import("@tanstack/react-query").UseMutationResult<void, SynapseClientError, string, unknown>;
94
+ export declare function useVoidDataAccessRequestSignature(options?: UseMutationOptions<void, SynapseClientError, DataAccessRequestSignatureVariables>): import("@tanstack/react-query").UseMutationResult<void, SynapseClientError, DataAccessRequestSignatureVariables, unknown>;
81
95
  //# sourceMappingURL=useEDuc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEDuc.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/dataaccess/useEDuc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useEDuc.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/dataaccess/useEDuc.ts"],"names":[],"mappings":"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"}
@@ -80,59 +80,67 @@ function p(e, n) {
80
80
  queryFn: () => a.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignatureQuota({ requestId: e })
81
81
  });
82
82
  }
83
- function m(e) {
84
- let { synapseClient: n } = t(), i = a(), { keyFactory: o } = t();
83
+ function m() {
84
+ let { keyFactory: e } = t(), n = a();
85
+ return ({ requestId: t, accessRequirementId: r }) => Promise.all([
86
+ n.invalidateQueries({ queryKey: e.getDataAccessRequestSignatureQueryKey(t) }),
87
+ n.invalidateQueries({ queryKey: e.getDataAccessRequestListQueryKey() }),
88
+ n.invalidateQueries({ queryKey: e.getDataAccessRequestForUpdateQueryKey(r) })
89
+ ]);
90
+ }
91
+ function h(e) {
92
+ let { synapseClient: n } = t(), i = m();
85
93
  return r({
86
94
  ...e,
87
- mutationFn: (e) => n.dataAccessServicesClient.postRepoV1DataAccessRequestRequestIdSignature({ requestId: e }),
95
+ mutationFn: ({ requestId: e }) => n.dataAccessServicesClient.postRepoV1DataAccessRequestRequestIdSignature({ requestId: e }),
88
96
  onSuccess: async (t, n, r) => {
89
- if (await Promise.all([i.invalidateQueries({ queryKey: o.getDataAccessRequestSignatureQueryKey(n) }), i.invalidateQueries({ queryKey: o.getDataAccessRequestQueryKey() })]), e?.onSuccess) return e.onSuccess(t, n, r);
97
+ if (await i(n), e?.onSuccess) return e.onSuccess(t, n, r);
90
98
  }
91
99
  });
92
100
  }
93
- function h(e) {
101
+ function g(e) {
94
102
  let t = typeof e == "object" && e && "result" in e ? e.result : e;
95
103
  return t === !0 || t === "true";
96
104
  }
97
- async function g(e, t) {
98
- return h(await e.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignaturePrecheck({ requestId: t }));
105
+ async function _(e, t) {
106
+ return g(await e.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignaturePrecheck({ requestId: t }));
99
107
  }
100
- function _(e) {
108
+ function v(e) {
101
109
  let { synapseClient: n } = t();
102
110
  return r({
103
111
  ...e,
104
- mutationFn: (e) => g(n, e)
112
+ mutationFn: (e) => _(n, e)
105
113
  });
106
114
  }
107
- function v(e, n) {
115
+ function y(e, n) {
108
116
  let { keyFactory: r, synapseClient: a } = t();
109
117
  return i({
110
118
  ...n,
111
119
  queryKey: r.getDataAccessRequestSignaturePrecheckQueryKey(e),
112
- queryFn: () => g(a, e)
120
+ queryFn: () => _(a, e)
113
121
  });
114
122
  }
115
- function y(e) {
116
- let { keyFactory: n, synapseClient: i } = t(), o = a();
123
+ function b(e) {
124
+ let { synapseClient: n } = t(), i = m();
117
125
  return r({
118
126
  ...e,
119
- mutationFn: (e) => i.dataAccessServicesClient.putRepoV1DataAccessRequestRequestIdSignature({ requestId: e }),
120
- onSuccess: async (t, r, i) => {
121
- if (await Promise.all([o.invalidateQueries({ queryKey: n.getDataAccessRequestSignatureQueryKey(r) }), o.invalidateQueries({ queryKey: n.getDataAccessRequestQueryKey() })]), e?.onSuccess) return e.onSuccess(t, r, i);
127
+ mutationFn: ({ requestId: e }) => n.dataAccessServicesClient.putRepoV1DataAccessRequestRequestIdSignature({ requestId: e }),
128
+ onSuccess: async (t, n, r) => {
129
+ if (await i(n), e?.onSuccess) return e.onSuccess(t, n, r);
122
130
  }
123
131
  });
124
132
  }
125
- function b(e) {
126
- let { synapseClient: n } = t(), i = a(), { keyFactory: o } = t();
133
+ function x(e) {
134
+ let { synapseClient: n } = t(), i = m();
127
135
  return r({
128
136
  ...e,
129
- mutationFn: (e) => n.dataAccessServicesClient.deleteRepoV1DataAccessRequestRequestIdSignature({ requestId: e }),
137
+ mutationFn: ({ requestId: e }) => n.dataAccessServicesClient.deleteRepoV1DataAccessRequestRequestIdSignature({ requestId: e }),
130
138
  onSuccess: async (t, n, r) => {
131
- if (await Promise.all([i.invalidateQueries({ queryKey: o.getDataAccessRequestSignatureQueryKey(n) }), i.invalidateQueries({ queryKey: o.getDataAccessRequestQueryKey() })]), e?.onSuccess) return e.onSuccess(t, n, r);
139
+ if (await i(n), e?.onSuccess) return e.onSuccess(t, n, r);
132
140
  }
133
141
  });
134
142
  }
135
143
  //#endregion
136
- export { _ as useCheckDataAccessRequestSignatureUpdatable, u as useGetDataAccessRequestPreview, p as useGetDataAccessRequestSignatureQuota, d as useGetDataAccessRequestSignatureStatus, v as useGetDataAccessRequestSignatureUpdatable, f as useGetDataAccessRequestSignedFileHandleId, s as useGetEDucTemplateValidation, m as useInitiateDataAccessRequestSignature, l as useListAllUserDataAccessRequests, o as useListEDucTemplates, c as useListUserDataAccessRequests, y as useUpdateDataAccessRequestSignature, b as useVoidDataAccessRequestSignature };
144
+ export { v as useCheckDataAccessRequestSignatureUpdatable, u as useGetDataAccessRequestPreview, p as useGetDataAccessRequestSignatureQuota, d as useGetDataAccessRequestSignatureStatus, y as useGetDataAccessRequestSignatureUpdatable, f as useGetDataAccessRequestSignedFileHandleId, s as useGetEDucTemplateValidation, h as useInitiateDataAccessRequestSignature, l as useListAllUserDataAccessRequests, o as useListEDucTemplates, c as useListUserDataAccessRequests, b as useUpdateDataAccessRequestSignature, x as useVoidDataAccessRequestSignature };
137
145
 
138
146
  //# sourceMappingURL=useEDuc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEDuc.js","names":[],"sources":["../../../src/synapse-queries/dataaccess/useEDuc.ts"],"sourcesContent":["import { getAllOfNextPageTokenPaginatedService } from '@/synapse-client/SynapseClient'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n AccessRequestList,\n AccessRequestListRequest,\n AccessRequestSummary,\n EDucFileHandleId,\n EDucSignatureQuota,\n EDucSignatureStatus,\n EDucTemplateListRequest,\n EDucTemplatePage,\n EDucTemplateValidationResult,\n} from '@sage-bionetworks/synapse-client'\nimport { SynapseClient } from '@sage-bionetworks/synapse-client/SynapseClient'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\n/**\n * List the eDUC templates registered in DocuSign (all pages).\n * @see POST /repo/v1/eDuc/template\n */\nexport function useListEDucTemplates<TData = InfiniteData<EDucTemplatePage>>(\n request: Omit<EDucTemplateListRequest, 'nextPageToken'> = {},\n options?: Partial<\n UseInfiniteQueryOptions<\n EDucTemplatePage,\n SynapseClientError,\n TData,\n QueryKey,\n EDucTemplatePage['nextPageToken']\n >\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useInfiniteQuery<\n EDucTemplatePage,\n SynapseClientError,\n TData,\n QueryKey,\n EDucTemplatePage['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.listEDucTemplatesQueryKey(request),\n queryFn: context =>\n synapseClient.dataAccessServicesClient.postRepoV1EDucTemplate({\n eDucTemplateListRequest: {\n ...request,\n nextPageToken: context.pageParam,\n },\n }),\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\n/**\n * Validate a single eDUC template by ID (ACT-only).\n * @see GET /repo/v1/eDuc/template/{templateId}/validation\n */\nexport function useGetEDucTemplateValidation(\n templateId: string,\n options?: Partial<\n UseQueryOptions<EDucTemplateValidationResult, SynapseClientError>\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getEDucTemplateValidationQueryKey(templateId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1EDucTemplateTemplateIdValidation(\n { templateId },\n ),\n })\n}\n\n/**\n * List the data access requests that the calling user created or participates in.\n * @see POST /repo/v1/dataAccessRequest/list\n */\nexport function useListUserDataAccessRequests(\n request: AccessRequestListRequest = {},\n options?: Partial<UseQueryOptions<AccessRequestList, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.listDataAccessRequestsQueryKey(request),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.postRepoV1DataAccessRequestList({\n accessRequestListRequest: request,\n }),\n })\n}\n\n/**\n * List _all_ data access requests that the calling user created or participates in, walking every\n * page of `POST /repo/v1/dataAccessRequest/list` via `nextPageToken` inside the queryFn. Returns\n * the flattened list of {@link AccessRequestSummary}.\n *\n * Prefer this hook over {@link useListUserDataAccessRequests} when the caller needs the complete\n * list (for example, to filter results client-side). This avoids the render-per-page cascade of\n * `useInfiniteQuery` at the cost of a slightly longer initial load.\n *\n * @see POST /repo/v1/dataAccessRequest/list\n */\nexport function useListAllUserDataAccessRequests(\n request: Omit<AccessRequestListRequest, 'nextPageToken'> = {},\n options?: Partial<\n UseQueryOptions<AccessRequestSummary[], SynapseClientError>\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.listAllDataAccessRequestsQueryKey(request),\n queryFn: () =>\n getAllOfNextPageTokenPaginatedService<AccessRequestSummary>(\n async nextPageToken => {\n const response =\n await synapseClient.dataAccessServicesClient.postRepoV1DataAccessRequestList(\n {\n accessRequestListRequest: {\n ...request,\n nextPageToken: nextPageToken ?? undefined,\n },\n },\n )\n return {\n results: response.results ?? [],\n nextPageToken: response.nextPageToken,\n }\n },\n ),\n })\n}\n\n/**\n * Retrieve the pre-signing preview of the eDUC for a data access request.\n * @see GET /repo/v1/dataAccessRequest/{requestId}/preview\n */\nexport function useGetDataAccessRequestPreview(\n requestId: string,\n options?: Partial<UseQueryOptions<EDucFileHandleId, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getDataAccessRequestPreviewQueryKey(requestId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdPreview(\n { requestId },\n ),\n })\n}\n\n/**\n * Retrieve the current signature status of a data access request's routed eDUC.\n * @see GET /repo/v1/dataAccessRequest/{requestId}/signature/status\n */\nexport function useGetDataAccessRequestSignatureStatus(\n requestId: string,\n options?: Partial<UseQueryOptions<EDucSignatureStatus, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getDataAccessRequestSignatureStatusQueryKey(requestId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignatureStatus(\n { requestId },\n ),\n })\n}\n\n/**\n * Retrieve the file handle ID of the signed eDUC document for a data access request.\n * @see GET /repo/v1/dataAccessRequest/{requestId}/signature/filehandleId\n */\nexport function useGetDataAccessRequestSignedFileHandleId(\n requestId: string,\n options?: Partial<UseQueryOptions<EDucFileHandleId, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getDataAccessRequestSignatureFileHandleIdQueryKey(requestId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignatureFilehandleId(\n { requestId },\n ),\n })\n}\n\n/**\n * Retrieve the current eDUC signature quota (total allowed and remaining) for a data access\n * request. Used to preflight the \"send for signature\" action so it can be disabled when the\n * user is at or over quota.\n * @see GET /repo/v1/dataAccessRequest/{requestId}/signature/quota\n */\nexport function useGetDataAccessRequestSignatureQuota(\n requestId: string,\n options?: Partial<UseQueryOptions<EDucSignatureQuota, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getDataAccessRequestSignatureQuotaQueryKey(requestId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignatureQuota(\n { requestId },\n ),\n })\n}\n\n/**\n * Initiate the DocuSign routing for a data access request's eDUC.\n * @see POST /repo/v1/dataAccessRequest/{requestId}/signature\n */\nexport function useInitiateDataAccessRequestSignature(\n options?: UseMutationOptions<EDucSignatureQuota, SynapseClientError, string>,\n) {\n const { synapseClient } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<EDucSignatureQuota, SynapseClientError, string>({\n ...options,\n mutationFn: (requestId: string) =>\n synapseClient.dataAccessServicesClient.postRepoV1DataAccessRequestRequestIdSignature(\n { requestId },\n ),\n onSuccess: async (data, requestId, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestSignatureQueryKey(requestId),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestQueryKey(),\n }),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, requestId, ctx)\n }\n return\n },\n })\n}\n\n/**\n * Reads the precheck's answer out of whichever shape it arrives in. The generated client types this\n * endpoint as a bare `boolean` because that is what the OpenAPI spec declares, but neither the\n * declared type nor the runtime value can be trusted directly: the deployed service answers with a\n * `{ result }` wrapper, and the client falls back to handing back the raw response text whenever\n * the content type isn't JSON. Every shape is therefore compared explicitly -- a truthiness check\n * would read both the object `{ result: false }` and the string `\"false\"` as `true`.\n *\n * The spec is what is wrong here, not this endpoint: it declares a bare `boolean` for every\n * BooleanResult-returning service (`GET /entity/{id}/access` and `GET /evaluation/{evalId}/access`\n * are the others), so the generated types misdescribe all of them. Tracked by PLFM-10007 --\n * delete this shim and read the generated type directly once the spec is corrected.\n */\nfunction parseSignaturePrecheckResponse(response: unknown): boolean {\n const answer =\n typeof response === 'object' && response !== null && 'result' in response\n ? (response as { result: unknown }).result\n : response\n return answer === true || answer === 'true'\n}\n\n/**\n * Ask the server whether the data access request's pending changes can be applied to the envelope\n * that is already in flight. The service owns every reason an envelope might be uncorrectable --\n * completed, voided, cancelled, declined -- so the answer is never inferred from its status here.\n *\n * @see GET /repo/v1/dataAccessRequest/{requestId}/signature/precheck\n */\nasync function fetchSignaturePrecheck(\n synapseClient: SynapseClient,\n requestId: string,\n): Promise<boolean> {\n const response: unknown =\n await synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignaturePrecheck(\n { requestId },\n )\n return parseSignaturePrecheckResponse(response)\n}\n\n/**\n * {@link fetchSignaturePrecheck} as a mutation, for the moment a user commits to sending. Modeled\n * as a mutation despite being a GET because the answer decides which irreversible call follows, so\n * it must never be served from cache.\n */\nexport function useCheckDataAccessRequestSignatureUpdatable(\n options?: UseMutationOptions<boolean, SynapseClientError, string>,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<boolean, SynapseClientError, string>({\n ...options,\n mutationFn: (requestId: string) =>\n fetchSignaturePrecheck(synapseClient, requestId),\n })\n}\n\n/**\n * {@link fetchSignaturePrecheck} as a query, for screens that describe what sending *would* do\n * rather than acting on it. Use {@link useCheckDataAccessRequestSignatureUpdatable} at the point\n * of action, where a cached answer would be unsafe.\n */\nexport function useGetDataAccessRequestSignatureUpdatable(\n requestId: string,\n options?: Partial<UseQueryOptions<boolean, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getDataAccessRequestSignaturePrecheckQueryKey(requestId),\n queryFn: () => fetchSignaturePrecheck(synapseClient, requestId),\n })\n}\n\n/**\n * Apply the data access request's pending changes to its in-flight eDUC envelope, preserving the\n * signatures that have already been collected.\n * @see PUT /repo/v1/dataAccessRequest/{requestId}/signature\n */\nexport function useUpdateDataAccessRequestSignature(\n options?: UseMutationOptions<EDucSignatureStatus, SynapseClientError, string>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n const queryClient = useQueryClient()\n\n return useMutation<EDucSignatureStatus, SynapseClientError, string>({\n ...options,\n mutationFn: (requestId: string) =>\n synapseClient.dataAccessServicesClient.putRepoV1DataAccessRequestRequestIdSignature(\n { requestId },\n ),\n onSuccess: async (data, requestId, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestSignatureQueryKey(requestId),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestQueryKey(),\n }),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, requestId, ctx)\n }\n return\n },\n })\n}\n\n/**\n * Void the eDUC routing for a data access request, reverting the DAR to trad-DUC mode.\n * @see DELETE /repo/v1/dataAccessRequest/{requestId}/signature\n */\nexport function useVoidDataAccessRequestSignature(\n options?: UseMutationOptions<void, SynapseClientError, string>,\n) {\n const { synapseClient } = useSynapseContext()\n const queryClient = useQueryClient()\n const { keyFactory } = useSynapseContext()\n\n return useMutation<void, SynapseClientError, string>({\n ...options,\n mutationFn: (requestId: string) =>\n synapseClient.dataAccessServicesClient.deleteRepoV1DataAccessRequestRequestIdSignature(\n { requestId },\n ),\n onSuccess: async (data, requestId, ctx) => {\n await Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestSignatureQueryKey(requestId),\n }),\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestQueryKey(),\n }),\n ])\n if (options?.onSuccess) {\n return options.onSuccess(data, requestId, ctx)\n }\n return\n },\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useEDuc.js","names":[],"sources":["../../../src/synapse-queries/dataaccess/useEDuc.ts"],"sourcesContent":["import { getAllOfNextPageTokenPaginatedService } from '@/synapse-client/SynapseClient'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n AccessRequestList,\n AccessRequestListRequest,\n AccessRequestSummary,\n EDucFileHandleId,\n EDucSignatureQuota,\n EDucSignatureStatus,\n EDucTemplateListRequest,\n EDucTemplatePage,\n EDucTemplateValidationResult,\n} from '@sage-bionetworks/synapse-client'\nimport { SynapseClient } from '@sage-bionetworks/synapse-client/SynapseClient'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n InfiniteData,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\n/**\n * List the eDUC templates registered in DocuSign (all pages).\n * @see POST /repo/v1/eDuc/template\n */\nexport function useListEDucTemplates<TData = InfiniteData<EDucTemplatePage>>(\n request: Omit<EDucTemplateListRequest, 'nextPageToken'> = {},\n options?: Partial<\n UseInfiniteQueryOptions<\n EDucTemplatePage,\n SynapseClientError,\n TData,\n QueryKey,\n EDucTemplatePage['nextPageToken']\n >\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useInfiniteQuery<\n EDucTemplatePage,\n SynapseClientError,\n TData,\n QueryKey,\n EDucTemplatePage['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.listEDucTemplatesQueryKey(request),\n queryFn: context =>\n synapseClient.dataAccessServicesClient.postRepoV1EDucTemplate({\n eDucTemplateListRequest: {\n ...request,\n nextPageToken: context.pageParam,\n },\n }),\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\n/**\n * Validate a single eDUC template by ID (ACT-only).\n * @see GET /repo/v1/eDuc/template/{templateId}/validation\n */\nexport function useGetEDucTemplateValidation(\n templateId: string,\n options?: Partial<\n UseQueryOptions<EDucTemplateValidationResult, SynapseClientError>\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getEDucTemplateValidationQueryKey(templateId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1EDucTemplateTemplateIdValidation(\n { templateId },\n ),\n })\n}\n\n/**\n * List the data access requests that the calling user created or participates in.\n * @see POST /repo/v1/dataAccessRequest/list\n */\nexport function useListUserDataAccessRequests(\n request: AccessRequestListRequest = {},\n options?: Partial<UseQueryOptions<AccessRequestList, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.listDataAccessRequestsQueryKey(request),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.postRepoV1DataAccessRequestList({\n accessRequestListRequest: request,\n }),\n })\n}\n\n/**\n * List _all_ data access requests that the calling user created or participates in, walking every\n * page of `POST /repo/v1/dataAccessRequest/list` via `nextPageToken` inside the queryFn. Returns\n * the flattened list of {@link AccessRequestSummary}.\n *\n * Prefer this hook over {@link useListUserDataAccessRequests} when the caller needs the complete\n * list (for example, to filter results client-side). This avoids the render-per-page cascade of\n * `useInfiniteQuery` at the cost of a slightly longer initial load.\n *\n * @see POST /repo/v1/dataAccessRequest/list\n */\nexport function useListAllUserDataAccessRequests(\n request: Omit<AccessRequestListRequest, 'nextPageToken'> = {},\n options?: Partial<\n UseQueryOptions<AccessRequestSummary[], SynapseClientError>\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.listAllDataAccessRequestsQueryKey(request),\n queryFn: () =>\n getAllOfNextPageTokenPaginatedService<AccessRequestSummary>(\n async nextPageToken => {\n const response =\n await synapseClient.dataAccessServicesClient.postRepoV1DataAccessRequestList(\n {\n accessRequestListRequest: {\n ...request,\n nextPageToken: nextPageToken ?? undefined,\n },\n },\n )\n return {\n results: response.results ?? [],\n nextPageToken: response.nextPageToken,\n }\n },\n ),\n })\n}\n\n/**\n * Retrieve the pre-signing preview of the eDUC for a data access request. The document is rendered\n * from the request as it stands, via an envelope the service discards once the PDF exists, so\n * reading it neither routes anything for signature nor alters the request.\n *\n * @see GET /repo/v1/dataAccessRequest/{requestId}/preview\n */\nexport function useGetDataAccessRequestPreview(\n requestId: string,\n options?: Partial<UseQueryOptions<EDucFileHandleId, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getDataAccessRequestPreviewQueryKey(requestId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdPreview(\n { requestId },\n ),\n })\n}\n\n/**\n * Retrieve the current signature status of a data access request's routed eDUC.\n * @see GET /repo/v1/dataAccessRequest/{requestId}/signature/status\n */\nexport function useGetDataAccessRequestSignatureStatus(\n requestId: string,\n options?: Partial<UseQueryOptions<EDucSignatureStatus, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getDataAccessRequestSignatureStatusQueryKey(requestId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignatureStatus(\n { requestId },\n ),\n })\n}\n\n/**\n * Retrieve the file handle ID of the signed eDUC document for a data access request.\n * @see GET /repo/v1/dataAccessRequest/{requestId}/signature/filehandleId\n */\nexport function useGetDataAccessRequestSignedFileHandleId(\n requestId: string,\n options?: Partial<UseQueryOptions<EDucFileHandleId, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getDataAccessRequestSignatureFileHandleIdQueryKey(requestId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignatureFilehandleId(\n { requestId },\n ),\n })\n}\n\n/**\n * Retrieve the current eDUC signature quota (total allowed and remaining) for a data access\n * request. Used to preflight the \"send for signature\" action so it can be disabled when the\n * user is at or over quota.\n * @see GET /repo/v1/dataAccessRequest/{requestId}/signature/quota\n */\nexport function useGetDataAccessRequestSignatureQuota(\n requestId: string,\n options?: Partial<UseQueryOptions<EDucSignatureQuota, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getDataAccessRequestSignatureQuotaQueryKey(requestId),\n queryFn: () =>\n synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignatureQuota(\n { requestId },\n ),\n })\n}\n\n/**\n * Identifies the data access request a signature mutation acts on. The access requirement is\n * carried alongside the request id because these mutations all change `eDucSignatureEnvelopeId`\n * on the request itself, and the cache entry holding that field is keyed by access requirement\n * rather than by request.\n */\nexport type DataAccessRequestSignatureVariables = {\n requestId: string\n accessRequirementId: string\n}\n\n/**\n * Invalidates everything a change to the eDUC envelope makes obsolete.\n *\n * The preview is deliberately absent: it renders the request's own content, which routing does\n * not touch, and regenerating it costs a server-side PDF render.\n */\nfunction useInvalidateOnSignatureChange() {\n const { keyFactory } = useSynapseContext()\n const queryClient = useQueryClient()\n\n return ({\n requestId,\n accessRequirementId,\n }: DataAccessRequestSignatureVariables) =>\n Promise.all([\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestSignatureQueryKey(requestId),\n }),\n // The listings report envelope status, so they move with every routing change.\n queryClient.invalidateQueries({\n queryKey: keyFactory.getDataAccessRequestListQueryKey(),\n }),\n // `eDucSignatureEnvelopeId` is how callers tell a first send from a re-send, so the request\n // must not stay cached from before the routing changed.\n queryClient.invalidateQueries({\n queryKey:\n keyFactory.getDataAccessRequestForUpdateQueryKey(accessRequirementId),\n }),\n ])\n}\n\n/**\n * Initiate the DocuSign routing for a data access request's eDUC, creating the envelope and\n * sending it to the signers.\n * @see POST /repo/v1/dataAccessRequest/{requestId}/signature\n */\nexport function useInitiateDataAccessRequestSignature(\n options?: UseMutationOptions<\n EDucSignatureQuota,\n SynapseClientError,\n DataAccessRequestSignatureVariables\n >,\n) {\n const { synapseClient } = useSynapseContext()\n const invalidateOnSignatureChange = useInvalidateOnSignatureChange()\n\n return useMutation<\n EDucSignatureQuota,\n SynapseClientError,\n DataAccessRequestSignatureVariables\n >({\n ...options,\n mutationFn: ({ requestId }) =>\n synapseClient.dataAccessServicesClient.postRepoV1DataAccessRequestRequestIdSignature(\n { requestId },\n ),\n onSuccess: async (data, variables, ctx) => {\n await invalidateOnSignatureChange(variables)\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\n/**\n * Reads the precheck's answer out of whichever shape it arrives in. The generated client types this\n * endpoint as a bare `boolean` because that is what the OpenAPI spec declares, but neither the\n * declared type nor the runtime value can be trusted directly: the deployed service answers with a\n * `{ result }` wrapper, and the client falls back to handing back the raw response text whenever\n * the content type isn't JSON. Every shape is therefore compared explicitly -- a truthiness check\n * would read both the object `{ result: false }` and the string `\"false\"` as `true`.\n *\n * The spec is what is wrong here, not this endpoint: it declares a bare `boolean` for every\n * BooleanResult-returning service (`GET /entity/{id}/access` and `GET /evaluation/{evalId}/access`\n * are the others), so the generated types misdescribe all of them. Tracked by PLFM-10007 --\n * delete this shim and read the generated type directly once the spec is corrected.\n */\nfunction parseSignaturePrecheckResponse(response: unknown): boolean {\n const answer =\n typeof response === 'object' && response !== null && 'result' in response\n ? (response as { result: unknown }).result\n : response\n return answer === true || answer === 'true'\n}\n\n/**\n * Ask the server whether the data access request's pending changes can be applied to the envelope\n * that is already in flight. The service owns every reason an envelope might be uncorrectable --\n * completed, voided, cancelled, declined -- so the answer is never inferred from its status here.\n *\n * @see GET /repo/v1/dataAccessRequest/{requestId}/signature/precheck\n */\nasync function fetchSignaturePrecheck(\n synapseClient: SynapseClient,\n requestId: string,\n): Promise<boolean> {\n const response: unknown =\n await synapseClient.dataAccessServicesClient.getRepoV1DataAccessRequestRequestIdSignaturePrecheck(\n { requestId },\n )\n return parseSignaturePrecheckResponse(response)\n}\n\n/**\n * {@link fetchSignaturePrecheck} as a mutation, for the moment a user commits to sending. Modeled\n * as a mutation despite being a GET because the answer decides which irreversible call follows, so\n * it must never be served from cache.\n */\nexport function useCheckDataAccessRequestSignatureUpdatable(\n options?: UseMutationOptions<boolean, SynapseClientError, string>,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<boolean, SynapseClientError, string>({\n ...options,\n mutationFn: (requestId: string) =>\n fetchSignaturePrecheck(synapseClient, requestId),\n })\n}\n\n/**\n * {@link fetchSignaturePrecheck} as a query, for screens that describe what sending *would* do\n * rather than acting on it. Use {@link useCheckDataAccessRequestSignatureUpdatable} at the point\n * of action, where a cached answer would be unsafe.\n */\nexport function useGetDataAccessRequestSignatureUpdatable(\n requestId: string,\n options?: Partial<UseQueryOptions<boolean, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey:\n keyFactory.getDataAccessRequestSignaturePrecheckQueryKey(requestId),\n queryFn: () => fetchSignaturePrecheck(synapseClient, requestId),\n })\n}\n\n/**\n * Apply the data access request's pending changes to its in-flight eDUC envelope, preserving the\n * signatures that have already been collected.\n * @see PUT /repo/v1/dataAccessRequest/{requestId}/signature\n */\nexport function useUpdateDataAccessRequestSignature(\n options?: UseMutationOptions<\n EDucSignatureStatus,\n SynapseClientError,\n DataAccessRequestSignatureVariables\n >,\n) {\n const { synapseClient } = useSynapseContext()\n const invalidateOnSignatureChange = useInvalidateOnSignatureChange()\n\n return useMutation<\n EDucSignatureStatus,\n SynapseClientError,\n DataAccessRequestSignatureVariables\n >({\n ...options,\n mutationFn: ({ requestId }) =>\n synapseClient.dataAccessServicesClient.putRepoV1DataAccessRequestRequestIdSignature(\n { requestId },\n ),\n onSuccess: async (data, variables, ctx) => {\n await invalidateOnSignatureChange(variables)\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n\n/**\n * Void the eDUC routing for a data access request, reverting the DAR to trad-DUC mode.\n * @see DELETE /repo/v1/dataAccessRequest/{requestId}/signature\n */\nexport function useVoidDataAccessRequestSignature(\n options?: UseMutationOptions<\n void,\n SynapseClientError,\n DataAccessRequestSignatureVariables\n >,\n) {\n const { synapseClient } = useSynapseContext()\n const invalidateOnSignatureChange = useInvalidateOnSignatureChange()\n\n return useMutation<\n void,\n SynapseClientError,\n DataAccessRequestSignatureVariables\n >({\n ...options,\n mutationFn: ({ requestId }) =>\n synapseClient.dataAccessServicesClient.deleteRepoV1DataAccessRequestRequestIdSignature(\n { requestId },\n ),\n onSuccess: async (data, variables, ctx) => {\n await invalidateOnSignatureChange(variables)\n if (options?.onSuccess) {\n return options.onSuccess(data, variables, ctx)\n }\n return\n },\n })\n}\n"],"mappings":"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"}
@@ -12,6 +12,18 @@ export declare function useGetFormTemplate(templateId: string | undefined, optio
12
12
  * @see GET /repo/v1/accessRequirement/formTemplate/{templateId}/version/{versionNumber}
13
13
  */
14
14
  export declare function useGetFormTemplateVersion(templateId: string | undefined, versionNumber: number | undefined, options?: Partial<UseQueryOptions<FormTemplate, SynapseClientError>>): import("@tanstack/react-query").UseQueryResult<FormTemplate, SynapseClientError>;
15
+ /**
16
+ * Retrieve every version of a FormTemplate. The API has no endpoint to list versions (PLFM-10045),
17
+ * so this fetches the latest version and then each earlier version number in turn. `versions` is
18
+ * ordered newest first and omits any version that has not loaded; `latestVersion` is always the
19
+ * template's actual latest version. Disabled while templateId is undefined.
20
+ */
21
+ export declare function useGetFormTemplateVersions(templateId: string | undefined): {
22
+ latestVersion: FormTemplate | undefined;
23
+ versions: FormTemplate[];
24
+ isLoading: boolean;
25
+ error: Error | null | undefined;
26
+ };
15
27
  /**
16
28
  * Search FormTemplates by name (all pages, via useInfiniteQuery). Only the latest version of each
17
29
  * matching template is returned.
@@ -1 +1 @@
1
- {"version":3,"file":"useFormTemplate.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/dataaccess/useFormTemplate.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,YAAY,EACZ,QAAQ,EAGR,uBAAuB,EAEvB,kBAAkB,EAGlB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,oFAcrE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,oFAkBrE;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,GAAG,YAAY,CAAC,0BAA0B,CAAC,EAEhD,OAAO,GAAE,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAM,EAC9D,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,0BAA0B,EAC1B,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,0BAA0B,CAAC,eAAe,CAAC,CAC5C,CACF,qFAyBF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,IAAI,CACZ,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAClE,YAAY,CACb,8GAwBF;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,YAAY,EAAE,YAAY,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,IAAI,CACZ,kBAAkB,CAChB,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,CAC1B,EACD,YAAY,CACb,2HA4BF"}
1
+ {"version":3,"file":"useFormTemplate.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/dataaccess/useFormTemplate.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,YAAY,EACZ,QAAQ,EAGR,uBAAuB,EAEvB,kBAAkB,EAIlB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,oFAcrE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,oFAkBrE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS;;;;;EAyCxE;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,GAAG,YAAY,CAAC,0BAA0B,CAAC,EAEhD,OAAO,GAAE,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAM,EAC9D,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,0BAA0B,EAC1B,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,0BAA0B,CAAC,eAAe,CAAC,CAC5C,CACF,qFAyBF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,IAAI,CACZ,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAClE,YAAY,CACb,8GAwBF;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,YAAY,EAAE,YAAY,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,IAAI,CACZ,kBAAkB,CAChB,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,CAC1B,EACD,YAAY,CACb,2HA4BF"}
@@ -1,30 +1,52 @@
1
1
  import { useSynapseContext as e } from "../../utils/context/SynapseContext.js";
2
2
  import "../../utils/index.js";
3
- import { skipToken as t, useInfiniteQuery as n, useMutation as r, useQuery as i, useQueryClient as a } from "@tanstack/react-query";
3
+ import { useMemo as t } from "react";
4
+ import { skipToken as n, useInfiniteQuery as r, useMutation as i, useQueries as a, useQuery as o, useQueryClient as s } from "@tanstack/react-query";
4
5
  //#region src/synapse-queries/dataaccess/useFormTemplate.ts
5
- function o(n, r) {
6
- let { keyFactory: a, synapseClient: o } = e();
7
- return i({
6
+ function c(t, r) {
7
+ let { keyFactory: i, synapseClient: a } = e();
8
+ return o({
8
9
  ...r,
9
- queryKey: a.getFormTemplateByIdQueryKey(n ?? ""),
10
- queryFn: n ? () => o.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateId({ templateId: n }) : t
10
+ queryKey: i.getFormTemplateByIdQueryKey(t ?? ""),
11
+ queryFn: t ? () => a.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateId({ templateId: t }) : n
11
12
  });
12
13
  }
13
- function s(n, r, a) {
14
- let { keyFactory: o, synapseClient: s } = e();
15
- return i({
16
- ...a,
17
- queryKey: o.getFormTemplateVersionQueryKey(n ?? "", r ?? 0),
18
- queryFn: n != null && r != null ? () => s.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateIdVersionVersionNumber({
19
- templateId: n,
14
+ function l(t, r, i) {
15
+ let { keyFactory: a, synapseClient: s } = e();
16
+ return o({
17
+ ...i,
18
+ queryKey: a.getFormTemplateVersionQueryKey(t ?? "", r ?? 0),
19
+ queryFn: t != null && r != null ? () => s.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateIdVersionVersionNumber({
20
+ templateId: t,
20
21
  versionNumber: r
21
- }) : t
22
+ }) : n
22
23
  });
23
24
  }
24
- function c(t = {}, r) {
25
+ function u(n) {
26
+ let { keyFactory: r, synapseClient: i } = e(), { data: o, error: s } = c(n);
27
+ return a({
28
+ queries: t(() => {
29
+ let e = Math.max((o?.versionNumber ?? 0) - 1, 0);
30
+ return Array.from({ length: e }, (t, n) => e - n);
31
+ }, [o?.versionNumber]).map((e) => ({
32
+ queryKey: r.getFormTemplateVersionQueryKey(n ?? "", e),
33
+ queryFn: () => i.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateIdVersionVersionNumber({
34
+ templateId: n,
35
+ versionNumber: e
36
+ })
37
+ })),
38
+ combine: (e) => ({
39
+ latestVersion: o,
40
+ versions: [...o ? [o] : [], ...e.flatMap((e) => e.data ? [e.data] : [])],
41
+ isLoading: n != null && (o == null ? s == null : e.some((e) => e.isLoading)),
42
+ error: s ?? e.find((e) => e.error)?.error
43
+ })
44
+ });
45
+ }
46
+ function d(t = {}, n) {
25
47
  let { keyFactory: i, synapseClient: a } = e();
26
- return n({
27
- ...r,
48
+ return r({
49
+ ...n,
28
50
  queryKey: i.searchFormTemplatesQueryKey(t),
29
51
  queryFn: (e) => a.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplateSearch({ formTemplateSearchRequest: {
30
52
  ...t,
@@ -34,30 +56,30 @@ function c(t = {}, r) {
34
56
  getNextPageParam: (e) => e.nextPageToken
35
57
  });
36
58
  }
37
- function l(t) {
38
- let n = a(), { keyFactory: i, synapseClient: o } = e();
39
- return r({
59
+ function f(t) {
60
+ let n = s(), { keyFactory: r, synapseClient: a } = e();
61
+ return i({
40
62
  ...t,
41
- mutationFn: (e) => o.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplate({ formTemplate: e }),
42
- onSuccess: async (e, r, a) => {
43
- n.setQueryData(i.getFormTemplateByIdQueryKey(e.id), e), await n.invalidateQueries({ queryKey: i.getFormTemplateQueryKey() }), t?.onSuccess && await t.onSuccess(e, r, a);
63
+ mutationFn: (e) => a.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplate({ formTemplate: e }),
64
+ onSuccess: async (e, i, a) => {
65
+ n.setQueryData(r.getFormTemplateByIdQueryKey(e.id), e), await n.invalidateQueries({ queryKey: r.getFormTemplateQueryKey() }), t?.onSuccess && await t.onSuccess(e, i, a);
44
66
  }
45
67
  });
46
68
  }
47
- function u(t) {
48
- let n = a(), { keyFactory: i, synapseClient: o } = e();
49
- return r({
69
+ function p(t) {
70
+ let n = s(), { keyFactory: r, synapseClient: a } = e();
71
+ return i({
50
72
  ...t,
51
- mutationFn: ({ templateId: e, formTemplate: t }) => o.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplateTemplateId({
73
+ mutationFn: ({ templateId: e, formTemplate: t }) => a.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplateTemplateId({
52
74
  templateId: e,
53
75
  formTemplate: t
54
76
  }),
55
- onSuccess: async (e, r, a) => {
56
- n.setQueryData(i.getFormTemplateByIdQueryKey(r.templateId), e), await n.invalidateQueries({ queryKey: i.getFormTemplateQueryKey() }), t?.onSuccess && await t.onSuccess(e, r, a);
77
+ onSuccess: async (e, i, a) => {
78
+ n.setQueryData(r.getFormTemplateByIdQueryKey(i.templateId), e), await n.invalidateQueries({ queryKey: r.getFormTemplateQueryKey() }), t?.onSuccess && await t.onSuccess(e, i, a);
57
79
  }
58
80
  });
59
81
  }
60
82
  //#endregion
61
- export { l as useCreateFormTemplate, o as useGetFormTemplate, s as useGetFormTemplateVersion, c as useSearchFormTemplatesInfinite, u as useUpdateFormTemplate };
83
+ export { f as useCreateFormTemplate, c as useGetFormTemplate, l as useGetFormTemplateVersion, u as useGetFormTemplateVersions, d as useSearchFormTemplatesInfinite, p as useUpdateFormTemplate };
62
84
 
63
85
  //# sourceMappingURL=useFormTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormTemplate.js","names":[],"sources":["../../../src/synapse-queries/dataaccess/useFormTemplate.ts"],"sourcesContent":["/*\n * Hooks for authoring and retrieving FormTemplates, which define how a JSON Schema is rendered\n * to a requester as a multi-step form.\n */\nimport { useSynapseContext } from '@/utils'\nimport {\n FormTemplate,\n FormTemplateSearchRequest,\n FormTemplateSearchResponse,\n} from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n InfiniteData,\n QueryKey,\n skipToken,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\n\n/**\n * Retrieve the latest version of a FormTemplate by its ID. Disabled while templateId is undefined.\n * @see GET /repo/v1/accessRequirement/formTemplate/{templateId}\n */\nexport function useGetFormTemplate(\n templateId: string | undefined,\n options?: Partial<UseQueryOptions<FormTemplate, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getFormTemplateByIdQueryKey(templateId ?? ''),\n queryFn: templateId\n ? () =>\n synapseClient.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateId(\n { templateId },\n )\n : skipToken,\n })\n}\n\n/**\n * Retrieve a specific version of a FormTemplate. Disabled while templateId or versionNumber is\n * undefined.\n * @see GET /repo/v1/accessRequirement/formTemplate/{templateId}/version/{versionNumber}\n */\nexport function useGetFormTemplateVersion(\n templateId: string | undefined,\n versionNumber: number | undefined,\n options?: Partial<UseQueryOptions<FormTemplate, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getFormTemplateVersionQueryKey(\n templateId ?? '',\n versionNumber ?? 0,\n ),\n queryFn:\n templateId != null && versionNumber != null\n ? () =>\n synapseClient.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateIdVersionVersionNumber(\n { templateId, versionNumber },\n )\n : skipToken,\n })\n}\n\n/**\n * Search FormTemplates by name (all pages, via useInfiniteQuery). Only the latest version of each\n * matching template is returned.\n * @see POST /repo/v1/accessRequirement/formTemplate/search\n */\nexport function useSearchFormTemplatesInfinite<\n TData = InfiniteData<FormTemplateSearchResponse>,\n>(\n request: Omit<FormTemplateSearchRequest, 'nextPageToken'> = {},\n options?: Partial<\n UseInfiniteQueryOptions<\n FormTemplateSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n FormTemplateSearchResponse['nextPageToken']\n >\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useInfiniteQuery<\n FormTemplateSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n FormTemplateSearchResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.searchFormTemplatesQueryKey(request),\n queryFn: context =>\n synapseClient.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplateSearch(\n {\n formTemplateSearchRequest: {\n ...request,\n nextPageToken: context.pageParam,\n },\n },\n ),\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\n/**\n * Create a new FormTemplate. Creating a template issues its first version.\n * @see POST /repo/v1/accessRequirement/formTemplate\n */\nexport function useCreateFormTemplate(\n options?: Omit<\n UseMutationOptions<FormTemplate, SynapseClientError, FormTemplate>,\n 'mutationFn'\n >,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<FormTemplate, SynapseClientError, FormTemplate>({\n ...options,\n mutationFn: formTemplate =>\n synapseClient.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplate(\n { formTemplate },\n ),\n onSuccess: async (createdTemplate, variables, ctx) => {\n queryClient.setQueryData(\n keyFactory.getFormTemplateByIdQueryKey(createdTemplate.id!),\n createdTemplate,\n )\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getFormTemplateQueryKey(),\n })\n if (options?.onSuccess) {\n await options.onSuccess(createdTemplate, variables, ctx)\n }\n },\n })\n}\n\nexport type UpdateFormTemplateRequest = {\n templateId: string\n /**\n * The new version's content. Must carry the `etag` of the version this update was based on so\n * the server can reject the write if the template was concurrently modified.\n */\n formTemplate: FormTemplate\n}\n\n/**\n * Add a new version to an existing FormTemplate. The server uses the `etag` on `formTemplate` to\n * detect concurrent modification; if the template has since changed, the mutation's error will\n * reflect the conflict rather than silently overwriting the newer version.\n * @see POST /repo/v1/accessRequirement/formTemplate/{templateId}\n */\nexport function useUpdateFormTemplate(\n options?: Omit<\n UseMutationOptions<\n FormTemplate,\n SynapseClientError,\n UpdateFormTemplateRequest\n >,\n 'mutationFn'\n >,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<\n FormTemplate,\n SynapseClientError,\n UpdateFormTemplateRequest\n >({\n ...options,\n mutationFn: ({ templateId, formTemplate }) =>\n synapseClient.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplateTemplateId(\n { templateId, formTemplate },\n ),\n onSuccess: async (updatedTemplate, variables, ctx) => {\n queryClient.setQueryData(\n keyFactory.getFormTemplateByIdQueryKey(variables.templateId),\n updatedTemplate,\n )\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getFormTemplateQueryKey(),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedTemplate, variables, ctx)\n }\n },\n })\n}\n"],"mappings":";;;;AA4BA,SAAgB,EACd,GACA,GACA;CACA,IAAM,EAAE,eAAY,qBAAkB,EAAkB;CAExD,OAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,4BAA4B,KAAc,EAAE;EACjE,SAAS,UAEH,EAAc,gCAAgC,iDAC5C,EAAE,cAAW,CACf,IACF;CACN,CAAC;AACH;AAOA,SAAgB,EACd,GACA,GACA,GACA;CACA,IAAM,EAAE,eAAY,qBAAkB,EAAkB;CAExD,OAAO,EAAS;EACd,GAAG;EACH,UAAU,EAAW,+BACnB,KAAc,IACd,KAAiB,CACnB;EACA,SACE,KAAc,QAAQ,KAAiB,aAEjC,EAAc,gCAAgC,qEAC5C;GAAE;GAAY;EAAc,CAC9B,IACF;CACR,CAAC;AACH;AAOA,SAAgB,EAGd,IAA4D,CAAC,GAC7D,GASA;CACA,IAAM,EAAE,eAAY,qBAAkB,EAAkB;CAExD,OAAO,EAML;EACA,GAAG;EACH,UAAU,EAAW,4BAA4B,CAAO;EACxD,UAAS,MACP,EAAc,gCAAgC,8CAC5C,EACE,2BAA2B;GACzB,GAAG;GACH,eAAe,EAAQ;EACzB,EACF,CACF;EACF,kBAAkB,KAAA;EAClB,mBAAkB,MAAQ,EAAK;CACjC,CAAC;AACH;AAMA,SAAgB,EACd,GAIA;CACA,IAAM,IAAc,EAAe,GAC7B,EAAE,eAAY,qBAAkB,EAAkB;CAExD,OAAO,EAA4D;EACjE,GAAG;EACH,aAAY,MACV,EAAc,gCAAgC,wCAC5C,EAAE,gBAAa,CACjB;EACF,WAAW,OAAO,GAAiB,GAAW,MAAQ;GAQpD,AAPA,EAAY,aACV,EAAW,4BAA4B,EAAgB,EAAG,GAC1D,CACF,GACA,MAAM,EAAY,kBAAkB,EAClC,UAAU,EAAW,wBAAwB,EAC/C,CAAC,GACG,GAAS,aACX,MAAM,EAAQ,UAAU,GAAiB,GAAW,CAAG;EAE3D;CACF,CAAC;AACH;AAiBA,SAAgB,EACd,GAQA;CACA,IAAM,IAAc,EAAe,GAC7B,EAAE,eAAY,qBAAkB,EAAkB;CAExD,OAAO,EAIL;EACA,GAAG;EACH,aAAa,EAAE,eAAY,sBACzB,EAAc,gCAAgC,kDAC5C;GAAE;GAAY;EAAa,CAC7B;EACF,WAAW,OAAO,GAAiB,GAAW,MAAQ;GAQpD,AAPA,EAAY,aACV,EAAW,4BAA4B,EAAU,UAAU,GAC3D,CACF,GACA,MAAM,EAAY,kBAAkB,EAClC,UAAU,EAAW,wBAAwB,EAC/C,CAAC,GACG,GAAS,aACX,MAAM,EAAQ,UAAU,GAAiB,GAAW,CAAG;EAE3D;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"useFormTemplate.js","names":[],"sources":["../../../src/synapse-queries/dataaccess/useFormTemplate.ts"],"sourcesContent":["/*\n * Hooks for authoring and retrieving FormTemplates, which define how a JSON Schema is rendered\n * to a requester as a multi-step form.\n */\nimport { useSynapseContext } from '@/utils'\nimport {\n FormTemplate,\n FormTemplateSearchRequest,\n FormTemplateSearchResponse,\n} from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n InfiniteData,\n QueryKey,\n skipToken,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useMutation,\n UseMutationOptions,\n useQueries,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { useMemo } from 'react'\n\n/**\n * Retrieve the latest version of a FormTemplate by its ID. Disabled while templateId is undefined.\n * @see GET /repo/v1/accessRequirement/formTemplate/{templateId}\n */\nexport function useGetFormTemplate(\n templateId: string | undefined,\n options?: Partial<UseQueryOptions<FormTemplate, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getFormTemplateByIdQueryKey(templateId ?? ''),\n queryFn: templateId\n ? () =>\n synapseClient.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateId(\n { templateId },\n )\n : skipToken,\n })\n}\n\n/**\n * Retrieve a specific version of a FormTemplate. Disabled while templateId or versionNumber is\n * undefined.\n * @see GET /repo/v1/accessRequirement/formTemplate/{templateId}/version/{versionNumber}\n */\nexport function useGetFormTemplateVersion(\n templateId: string | undefined,\n versionNumber: number | undefined,\n options?: Partial<UseQueryOptions<FormTemplate, SynapseClientError>>,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useQuery({\n ...options,\n queryKey: keyFactory.getFormTemplateVersionQueryKey(\n templateId ?? '',\n versionNumber ?? 0,\n ),\n queryFn:\n templateId != null && versionNumber != null\n ? () =>\n synapseClient.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateIdVersionVersionNumber(\n { templateId, versionNumber },\n )\n : skipToken,\n })\n}\n\n/**\n * Retrieve every version of a FormTemplate. The API has no endpoint to list versions (PLFM-10045),\n * so this fetches the latest version and then each earlier version number in turn. `versions` is\n * ordered newest first and omits any version that has not loaded; `latestVersion` is always the\n * template's actual latest version. Disabled while templateId is undefined.\n */\nexport function useGetFormTemplateVersions(templateId: string | undefined) {\n const { keyFactory, synapseClient } = useSynapseContext()\n const { data: latestVersion, error: latestVersionError } =\n useGetFormTemplate(templateId)\n\n const earlierVersionNumbers = useMemo(() => {\n const earlierVersionCount = Math.max(\n (latestVersion?.versionNumber ?? 0) - 1,\n 0,\n )\n return Array.from(\n { length: earlierVersionCount },\n (_, index) => earlierVersionCount - index,\n )\n }, [latestVersion?.versionNumber])\n\n return useQueries({\n queries: earlierVersionNumbers.map(versionNumber => ({\n queryKey: keyFactory.getFormTemplateVersionQueryKey(\n templateId ?? '',\n versionNumber,\n ),\n queryFn: () =>\n synapseClient.accessRequirementServicesClient.getRepoV1AccessRequirementFormTemplateTemplateIdVersionVersionNumber(\n { templateId: templateId!, versionNumber },\n ),\n })),\n combine: results => ({\n latestVersion,\n versions: [\n ...(latestVersion ? [latestVersion] : []),\n ...results.flatMap(result => (result.data ? [result.data] : [])),\n ],\n isLoading:\n templateId != null &&\n (latestVersion == null\n ? latestVersionError == null\n : results.some(result => result.isLoading)),\n error: latestVersionError ?? results.find(result => result.error)?.error,\n }),\n })\n}\n\n/**\n * Search FormTemplates by name (all pages, via useInfiniteQuery). Only the latest version of each\n * matching template is returned.\n * @see POST /repo/v1/accessRequirement/formTemplate/search\n */\nexport function useSearchFormTemplatesInfinite<\n TData = InfiniteData<FormTemplateSearchResponse>,\n>(\n request: Omit<FormTemplateSearchRequest, 'nextPageToken'> = {},\n options?: Partial<\n UseInfiniteQueryOptions<\n FormTemplateSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n FormTemplateSearchResponse['nextPageToken']\n >\n >,\n) {\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useInfiniteQuery<\n FormTemplateSearchResponse,\n SynapseClientError,\n TData,\n QueryKey,\n FormTemplateSearchResponse['nextPageToken']\n >({\n ...options,\n queryKey: keyFactory.searchFormTemplatesQueryKey(request),\n queryFn: context =>\n synapseClient.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplateSearch(\n {\n formTemplateSearchRequest: {\n ...request,\n nextPageToken: context.pageParam,\n },\n },\n ),\n initialPageParam: undefined,\n getNextPageParam: page => page.nextPageToken,\n })\n}\n\n/**\n * Create a new FormTemplate. Creating a template issues its first version.\n * @see POST /repo/v1/accessRequirement/formTemplate\n */\nexport function useCreateFormTemplate(\n options?: Omit<\n UseMutationOptions<FormTemplate, SynapseClientError, FormTemplate>,\n 'mutationFn'\n >,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<FormTemplate, SynapseClientError, FormTemplate>({\n ...options,\n mutationFn: formTemplate =>\n synapseClient.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplate(\n { formTemplate },\n ),\n onSuccess: async (createdTemplate, variables, ctx) => {\n queryClient.setQueryData(\n keyFactory.getFormTemplateByIdQueryKey(createdTemplate.id!),\n createdTemplate,\n )\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getFormTemplateQueryKey(),\n })\n if (options?.onSuccess) {\n await options.onSuccess(createdTemplate, variables, ctx)\n }\n },\n })\n}\n\nexport type UpdateFormTemplateRequest = {\n templateId: string\n /**\n * The new version's content. Must carry the `etag` of the version this update was based on so\n * the server can reject the write if the template was concurrently modified.\n */\n formTemplate: FormTemplate\n}\n\n/**\n * Add a new version to an existing FormTemplate. The server uses the `etag` on `formTemplate` to\n * detect concurrent modification; if the template has since changed, the mutation's error will\n * reflect the conflict rather than silently overwriting the newer version.\n * @see POST /repo/v1/accessRequirement/formTemplate/{templateId}\n */\nexport function useUpdateFormTemplate(\n options?: Omit<\n UseMutationOptions<\n FormTemplate,\n SynapseClientError,\n UpdateFormTemplateRequest\n >,\n 'mutationFn'\n >,\n) {\n const queryClient = useQueryClient()\n const { keyFactory, synapseClient } = useSynapseContext()\n\n return useMutation<\n FormTemplate,\n SynapseClientError,\n UpdateFormTemplateRequest\n >({\n ...options,\n mutationFn: ({ templateId, formTemplate }) =>\n synapseClient.accessRequirementServicesClient.postRepoV1AccessRequirementFormTemplateTemplateId(\n { templateId, formTemplate },\n ),\n onSuccess: async (updatedTemplate, variables, ctx) => {\n queryClient.setQueryData(\n keyFactory.getFormTemplateByIdQueryKey(variables.templateId),\n updatedTemplate,\n )\n await queryClient.invalidateQueries({\n queryKey: keyFactory.getFormTemplateQueryKey(),\n })\n if (options?.onSuccess) {\n await options.onSuccess(updatedTemplate, variables, ctx)\n }\n },\n })\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DiscussionSearchRequest, DiscussionSearchResponse } from '@sage-bionetworks/synapse-client';
1
+ import { DiscussionSearchRequest, DiscussionSearchResponse, DiscussionThreadBundle as DiscussionThreadBundleGenerated, DiscussionThreadOrder as DiscussionThreadOrderGenerated } from '@sage-bionetworks/synapse-client';
2
2
  import { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError';
3
3
  import { DiscussionFilter, DiscussionThreadBundle, DiscussionThreadOrder, Forum, PaginatedResults } from '@sage-bionetworks/synapse-types';
4
4
  import { InfiniteData, QueryKey, UseInfiniteQueryOptions, UseQueryOptions } from '@tanstack/react-query';
@@ -6,4 +6,8 @@ export declare function useGetModerators(forumId: string, options?: Partial<UseQ
6
6
  export declare function useGetForumMetadata(forumId: string, options?: Partial<UseQueryOptions<Forum, SynapseClientError>>): import("@tanstack/react-query").UseQueryResult<Forum, SynapseClientError>;
7
7
  export declare function useGetForumThreadsInfinite<TData = InfiniteData<PaginatedResults<DiscussionThreadBundle>>>(forumId: string, limit: number, sort: DiscussionThreadOrder, ascending: boolean, filter?: DiscussionFilter, options?: Partial<UseInfiniteQueryOptions<PaginatedResults<DiscussionThreadBundle>, SynapseClientError, TData, QueryKey, number | undefined>>): import("@tanstack/react-query").UseInfiniteQueryResult<TData, SynapseClientError>;
8
8
  export declare function useSearchForumInfinite<TData = InfiniteData<DiscussionSearchResponse>>(forumId: string, discussionSearchRequest: Omit<DiscussionSearchRequest, 'nextPageToken'>, options?: Partial<UseInfiniteQueryOptions<DiscussionSearchResponse, SynapseClientError, TData, QueryKey, DiscussionSearchRequest['nextPageToken']>>): import("@tanstack/react-query").UseInfiniteQueryResult<TData, SynapseClientError>;
9
+ /**
10
+ * Get the discussion threads that reference an entity, across all projects.
11
+ */
12
+ export declare function useGetEntityThreadsInfinite<TData = InfiniteData<PaginatedResults<DiscussionThreadBundleGenerated>>>(entityId: string, limit: number, sort: DiscussionThreadOrderGenerated, ascending: boolean, options?: Partial<UseInfiniteQueryOptions<PaginatedResults<DiscussionThreadBundleGenerated>, SynapseClientError, TData, QueryKey, number | undefined>>): import("@tanstack/react-query").UseInfiniteQueryResult<TData, SynapseClientError>;
9
13
  //# sourceMappingURL=useForum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useForum.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/forum/useForum.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,EACL,gBAAgB,EACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,gFAQjE;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,6EAQ9D;AAED,wBAAgB,0BAA0B,CACxC,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,EAE9D,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,qBAAqB,EAC3B,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,gBAAgB,CAAC,sBAAsB,CAAC,EACxC,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,SAAS,CACnB,CACF,qFAgCF;AAED,wBAAgB,sBAAsB,CACpC,KAAK,GAAG,YAAY,CAAC,wBAAwB,CAAC,EAE9C,OAAO,EAAE,MAAM,EACf,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,eAAe,CAAC,EACvE,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,uBAAuB,CAAC,eAAe,CAAC,CACzC,CACF,qFA0BF"}
1
+ {"version":3,"file":"useForum.d.ts","sourceRoot":"","sources":["../../../src/synapse-queries/forum/useForum.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,IAAI,+BAA+B,EACzD,qBAAqB,IAAI,8BAA8B,EACxD,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,EACL,gBAAgB,EACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,QAAQ,EAER,uBAAuB,EAEvB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,gFAQjE;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,6EAQ9D;AAED,wBAAgB,0BAA0B,CACxC,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,EAE9D,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,qBAAqB,EAC3B,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,gBAAgB,CAAC,sBAAsB,CAAC,EACxC,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,SAAS,CACnB,CACF,qFAgCF;AAED,wBAAgB,sBAAsB,CACpC,KAAK,GAAG,YAAY,CAAC,wBAAwB,CAAC,EAE9C,OAAO,EAAE,MAAM,EACf,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,eAAe,CAAC,EACvE,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,uBAAuB,CAAC,eAAe,CAAC,CACzC,CACF,qFA0BF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC,EAEvE,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,8BAA8B,EACpC,SAAS,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,OAAO,CACf,uBAAuB,CACrB,gBAAgB,CAAC,+BAA+B,CAAC,EACjD,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,SAAS,CACnB,CACF,qFA+BF"}