synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
88 lines (87 loc) • 3.56 kB
JavaScript
import { useMemo as m } from "react";
import { useQuery as a, skipToken as u } from "@tanstack/react-query";
import { ColumnSingleValueFilterOperator as c, COLUMN_SINGLE_VALUE_QUERY_FILTER_CONCRETE_TYPE_VALUE as l } from "@sage-bionetworks/synapse-types";
import "../../../../synapse-client/SynapseClient.js";
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
import "@sage-bionetworks/synapse-client/util/SynapseClientError";
import "../../../../utils/functions/EntityTypeUtils.js";
import { BUNDLE_MASK_QUERY_RESULTS as y } from "../../../../utils/SynapseConstants.js";
import "lodash-es";
import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
import "../../../../utils/PermissionLevelToAccessType.js";
import "../../../../utils/context/SynapseContext.js";
import "use-deep-compare-effect";
import "react/jsx-runtime";
import "@mui/material";
import "../../../../utils/hooks/useCookiePreferences.js";
import "../../../../utils/hooks/useSourceAppConfigs.js";
import "universal-cookie";
import "../../../../utils/AppUtils/session/ApplicationSessionContext.js";
import "../../../../utils/context/FullContextProvider.js";
import "../../../../utils/context/DocumentMetadataContext.js";
import '../../../../style/components/_spinner.css';/* empty css */
import "@tanstack/query-core";
import "lodash-es/isEmpty";
import "lodash-es/isEqual";
import "lodash-es/xorWith";
import "react-router";
import "@sage-bionetworks/synapse-client";
import "../../../../utils/types/IsType.js";
import { useGetQueryResultBundleWithAsyncStatus as E } from "../../../../synapse-queries/entity/useGetQueryResultBundle.js";
const d = "syn66047339", f = (r) => ["europepmc", r];
async function w(r, t) {
if (t.length === 0) return [];
const p = t.map((n) => `PMCID:${n}`).join(" OR "), e = new URL("https://www.ebi.ac.uk/europepmc/webservices/rest/search");
e.searchParams.set("query", p), e.searchParams.set("format", "json"), e.searchParams.set("pageSize", String(t.length));
const o = await fetch(e.toString(), {
headers: { Accept: "application/json" },
signal: r
});
if (!o.ok)
throw new Error(`Europe PMC error ${o.status}: ${await o.text()}`);
const s = await o.json();
return h(s);
}
function h(r) {
return r.resultList.result.map(
(t) => ({
id: t.pmcid,
title: t.title ?? "(Untitled)",
doi: t.doi,
publisher: t.journalTitle,
publicationYear: t.pubYear ? Number(t.pubYear) : void 0
// authors: r.authorList?.author?.map((a: EuropePMCAuthor) => a.fullName ?? `${a.firstName ?? ""} ${a.lastName ?? ""}`.trim()) ?? [],
})
);
}
function J(r, t) {
const p = {
sql: `select pmcid from ${d}`,
additionalFilters: [
{
concreteType: l,
columnName: "synid",
operator: c.EQUAL,
values: [r]
}
]
}, { data: e } = E({
entityId: r,
query: p,
partMask: y,
concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest"
}), s = e?.responseBody?.queryResult?.queryResults?.rows?.map((i) => i.values[0]?.toString().replace(/^pmc:/i, "")).filter((i) => i != null), n = m(() => f(r), [r]);
return a({
...t,
queryKey: n,
queryFn: s ? ({ signal: i }) => w(i, s) : u
});
}
export {
w as fetchMetadataForPMCIDs,
f as getMentionsQueryKey,
h as mapEuropePMCResponseToCitingWorks,
J as useGetMentions
};
//# sourceMappingURL=useGetMentions.js.map