@gen3/core 0.11.62 → 0.12.0

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.
@@ -7,8 +7,10 @@ const GEN3_DOMAIN = process.env.NEXT_PUBLIC_GEN3_DOMAIN || '';
7
7
  const GEN3_MDS_API = process.env.NEXT_PUBLIC_GEN3_MDS_API || `${GEN3_API}/mds`;
8
8
  const GEN3_DOWNLOADS_ENDPOINT = process.env.NEXT_PUBLIC_GEN3_DOWNLOADS_ENDPOINT || 'downloads';
9
9
  const GEN3_FENCE_API = process.env.NEXT_PUBLIC_GEN3_FENCE_API || `${GEN3_API}/user`;
10
+ const GEN3_FENCE_SERVICE = process.env.GEN3_FENCE_SERVICE || 'http://fence-service';
10
11
  process.env.NEXT_PUBLIC_GEN3_AI_SEARCH_API || `${GEN3_API}/ai-search`;
11
12
  const GEN3_AUTHZ_API = process.env.NEXT_PUBLIC_GEN3_AUTHZ_API || `${GEN3_API}/authz`;
13
+ const GEN3_AUTHZ_SERVICE = process.env.GEN3_AUTHZ_SERVICE || 'http://arborist-service';
12
14
  const GEN3_REDIRECT_URL = process.env.NEXT_PUBLIC_GEN3_REDIRECT_URL || GEN3_API;
13
15
  const GEN3_WORKSPACE_API = process.env.NEXT_PUBLIC_GEN3_WORKSPACE_STATUS_API || `${GEN3_API}/lw-workspace`;
14
16
  const GEN3_SUBMISSION_API = process.env.NEXT_PUBLIC_GEN3_SUBMISSION_API || `${GEN3_API}/api/v0/submission`;
@@ -25,5 +27,92 @@ var Accessibility = /*#__PURE__*/ function(Accessibility) {
25
27
  return Accessibility;
26
28
  }({});
27
29
 
28
- export { Accessibility, GEN3_API, GEN3_AUTHZ_API, GEN3_COMMONS_NAME, GEN3_CROSSWALK_API, GEN3_DOMAIN, GEN3_DOWNLOADS_ENDPOINT, GEN3_FENCE_API, GEN3_GUPPY_API, GEN3_MANIFEST_API, GEN3_MDS_API, GEN3_REDIRECT_URL, GEN3_SOWER_API, GEN3_SUBMISSION_API, GEN3_WORKSPACE_API };
30
+ /**
31
+ * Low-level helper to fetch Arborist resources for the current user.
32
+ * Adds an Authorization header when a token is provided and normalizes the response
33
+ * to a simple string[] of resource paths.
34
+ *
35
+ * token { string | null } - access token to use for authorization
36
+ * useService { boolean } - use the arborist service endpoint instead of the public arborist API
37
+ */ async function fetchArboristResources(token, useService = false) {
38
+ const headers = {};
39
+ if (token) {
40
+ headers.Authorization = `Bearer ${token}`;
41
+ }
42
+ const url = useService ? `${GEN3_AUTHZ_SERVICE}/resource` : `${GEN3_AUTHZ_API}/resources`;
43
+ const res = await fetch(url, {
44
+ headers
45
+ });
46
+ if (!res.ok) {
47
+ console.error('@gen3/core:fetchArboristResources /resource failed:', res.status, await res.text());
48
+ return [];
49
+ }
50
+ const data = await res.json();
51
+ return data.resources ?? [];
52
+ }
53
+
54
+ const isFetchError = (obj)=>{
55
+ if (typeof obj !== 'object' || obj === null) {
56
+ return false;
57
+ }
58
+ const { url, status, statusText, text } = obj;
59
+ return typeof url === 'string' && typeof status === 'number' && typeof statusText === 'string' && typeof text === 'string';
60
+ };
61
+ /**
62
+ * Template for fence error response dict
63
+ * @returns: An error dict response from a RESTFUL API request
64
+ */ const buildFetchError = async (res, request)=>{
65
+ return {
66
+ url: res.url,
67
+ status: res.status,
68
+ statusText: res.statusText,
69
+ text: await res.text(),
70
+ request: request
71
+ };
72
+ };
73
+
74
+ /**
75
+ * Performs an asynchronous HTTP request to the Gen3 Fence API and processes the response.
76
+ *
77
+ * @template T The expected type of the response data.
78
+ * @param {FetchRequest} options The options for the fetch request.
79
+ * @param {string} options.endpoint The API endpoint to which the request will be sent.
80
+ * @param {Record<string, string>} options.headers An object representing the HTTP headers to include in the request.
81
+ * @param {Record<string, any>} [options.body={}] The request body to send with the fetch, used if the HTTP method is POST.
82
+ * @param {string} [options.method='GET'] The HTTP method for the request (e.g., 'GET', 'POST').
83
+ * @param {boolean} [options.isJSON=true] Determines if the response should be parsed as JSON or returned as plain text.
84
+ * @param useService { boolean } Uses fence_service instead of public fence API
85
+ * @returns {Promise<Gen3FenceResponse<T>>} A promise that resolves to the parsed data and response status
86
+ * or rejects with an error if the request fails.
87
+ * @throws {Error} Throws an error if the fetch request fails or the response is not successful.
88
+ */ const fetchFence = async ({ endpoint, headers, body = {}, method = 'GET', isJSON = true }, useService = false)=>{
89
+ let url = `${GEN3_FENCE_API}${endpoint}`;
90
+ if (useService) {
91
+ url = `${GEN3_FENCE_SERVICE}/${endpoint}`;
92
+ }
93
+ const res = await fetch(url, {
94
+ method: method,
95
+ credentials: 'include',
96
+ headers: {
97
+ // Ensure Content-Type is set for JSON POSTs, but allow overrides via 'headers'
98
+ ...method === 'POST' ? {
99
+ 'Content-Type': 'application/json'
100
+ } : {},
101
+ ...headers
102
+ },
103
+ body: 'POST' === method ? JSON.stringify(body) : null
104
+ });
105
+ if (res.ok) return {
106
+ data: isJSON ? await res.json() : await res.text(),
107
+ status: res.status
108
+ };
109
+ throw await buildFetchError(res, {
110
+ endpoint,
111
+ method,
112
+ headers,
113
+ body
114
+ });
115
+ };
116
+
117
+ export { Accessibility, GEN3_API, GEN3_AUTHZ_API, GEN3_AUTHZ_SERVICE, GEN3_COMMONS_NAME, GEN3_CROSSWALK_API, GEN3_DOMAIN, GEN3_DOWNLOADS_ENDPOINT, GEN3_FENCE_API, GEN3_FENCE_SERVICE, GEN3_GUPPY_API, GEN3_MANIFEST_API, GEN3_MDS_API, GEN3_REDIRECT_URL, GEN3_SOWER_API, GEN3_SUBMISSION_API, GEN3_WORKSPACE_API, buildFetchError, fetchArboristResources, fetchFence, isFetchError };
29
118
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sources":["../../src/constants.ts"],"sourcesContent":["export const GEN3_COMMONS_NAME =\n process.env.NEXT_PUBLIC_GEN3_COMMONS_NAME || 'gen3';\nexport const GEN3_API = process.env.NEXT_PUBLIC_GEN3_API || '';\nexport const GEN3_DOMAIN = process.env.NEXT_PUBLIC_GEN3_DOMAIN || '';\nexport const GUID_PREFIX_PATTERN = /^dg.[a-zA-Z0-9]+\\//;\n\n/**\n * Service Specific Constants\n */\nexport const GEN3_GUPPY_API =\n process.env.NEXT_PUBLIC_GEN3_GUPPY_API || `${GEN3_API}/guppy`;\nexport const GEN3_MDS_API =\n process.env.NEXT_PUBLIC_GEN3_MDS_API || `${GEN3_API}/mds`;\nexport const GEN3_DOWNLOADS_ENDPOINT =\n process.env.NEXT_PUBLIC_GEN3_DOWNLOADS_ENDPOINT || 'downloads';\nexport const GEN3_FENCE_API =\n process.env.NEXT_PUBLIC_GEN3_FENCE_API || `${GEN3_API}/user`;\nexport const GEN3_AI_SEARCH_API =\n process.env.NEXT_PUBLIC_GEN3_AI_SEARCH_API || `${GEN3_API}/ai-search`;\nexport const GEN3_AUTHZ_API =\n process.env.NEXT_PUBLIC_GEN3_AUTHZ_API || `${GEN3_API}/authz`;\nexport const GEN3_REDIRECT_URL =\n process.env.NEXT_PUBLIC_GEN3_REDIRECT_URL || GEN3_API;\nexport const GEN3_WORKSPACE_API =\n process.env.NEXT_PUBLIC_GEN3_WORKSPACE_STATUS_API ||\n `${GEN3_API}/lw-workspace`;\nexport const GEN3_SUBMISSION_API =\n process.env.NEXT_PUBLIC_GEN3_SUBMISSION_API ||\n `${GEN3_API}/api/v0/submission`;\nexport const GEN3_WTS_API =\n process.env.NEXT_PUBLIC_GEN3_WTS_API || `${GEN3_API}/wts`;\nexport const GEN3_DATA_LIBRARY_API =\n process.env.NEXT_PUBLIC_GEN3_DATA_LIBRARY_API || `${GEN3_API}/library/lists`;\nexport const GEN3_CROSSWALK_API =\n process.env.NEXT_PUBLIC_GEN3_CROSSWALK_API || `${GEN3_API}/mds`;\nexport const GEN3_SOWER_API =\n process.env.NEXT_PUBLIC_GEN3_SOWER_API || `${GEN3_API}/jobs`;\nexport const GEN3_MANIFEST_API =\n process.env.NEXT_PUBLIC_GEN3_MANIFEST_API || `${GEN3_API}/manifests`;\nexport const GEN3_REQUESTOR_API =\n process.env.NEXT_PUBLIC_GEN3_REQUESTOR_API || `${GEN3_API}/requestor`;\n\nexport enum Accessibility {\n ACCESSIBLE = 'accessible',\n UNACCESSIBLE = 'unaccessible',\n ALL = 'all',\n}\n\nexport const FILE_FORMATS = {\n JSON: 'json',\n TSV: 'tsv',\n CSV: 'csv',\n};\n\nexport const FILE_DELIMITERS = {\n tsv: '\\t',\n csv: ',',\n};\n\nexport const CART_LIMIT = 80000;\n"],"names":["GEN3_COMMONS_NAME","process","env","NEXT_PUBLIC_GEN3_COMMONS_NAME","GEN3_API","NEXT_PUBLIC_GEN3_API","GEN3_DOMAIN","NEXT_PUBLIC_GEN3_DOMAIN","GEN3_GUPPY_API","NEXT_PUBLIC_GEN3_GUPPY_API","GEN3_MDS_API","NEXT_PUBLIC_GEN3_MDS_API","GEN3_DOWNLOADS_ENDPOINT","NEXT_PUBLIC_GEN3_DOWNLOADS_ENDPOINT","GEN3_FENCE_API","NEXT_PUBLIC_GEN3_FENCE_API","NEXT_PUBLIC_GEN3_AI_SEARCH_API","GEN3_AUTHZ_API","NEXT_PUBLIC_GEN3_AUTHZ_API","GEN3_REDIRECT_URL","NEXT_PUBLIC_GEN3_REDIRECT_URL","GEN3_WORKSPACE_API","NEXT_PUBLIC_GEN3_WORKSPACE_STATUS_API","GEN3_SUBMISSION_API","NEXT_PUBLIC_GEN3_SUBMISSION_API","NEXT_PUBLIC_GEN3_WTS_API","NEXT_PUBLIC_GEN3_DATA_LIBRARY_API","GEN3_CROSSWALK_API","NEXT_PUBLIC_GEN3_CROSSWALK_API","GEN3_SOWER_API","NEXT_PUBLIC_GEN3_SOWER_API","GEN3_MANIFEST_API","NEXT_PUBLIC_GEN3_MANIFEST_API","NEXT_PUBLIC_GEN3_REQUESTOR_API","Accessibility"],"mappings":"MAAaA,iBAAAA,GACXC,OAAAA,CAAQC,GAAG,CAACC,6BAA6B,IAAI;MAClCC,QAAAA,GAAWH,OAAAA,CAAQC,GAAG,CAACG,oBAAoB,IAAI;MAC/CC,WAAAA,GAAcL,OAAAA,CAAQC,GAAG,CAACK,uBAAuB,IAAI;AAGlE;;AAEC,IACM,MAAMC,cAAAA,GACXP,OAAAA,CAAQC,GAAG,CAACO,0BAA0B,IAAI,CAAA,EAAGL,QAAAA,CAAS,MAAM;AACvD,MAAMM,YAAAA,GACXT,OAAAA,CAAQC,GAAG,CAACS,wBAAwB,IAAI,CAAA,EAAGP,QAAAA,CAAS,IAAI;MAC7CQ,uBAAAA,GACXX,OAAAA,CAAQC,GAAG,CAACW,mCAAmC,IAAI;AAC9C,MAAMC,cAAAA,GACXb,OAAAA,CAAQC,GAAG,CAACa,0BAA0B,IAAI,CAAA,EAAGX,QAAAA,CAAS,KAAK;AAE3DH,OAAAA,CAAQC,GAAG,CAACc,8BAA8B,IAAI,CAAA,EAAGZ,QAAAA,CAAS,UAAU;AAC/D,MAAMa,cAAAA,GACXhB,OAAAA,CAAQC,GAAG,CAACgB,0BAA0B,IAAI,CAAA,EAAGd,QAAAA,CAAS,MAAM;MACjDe,iBAAAA,GACXlB,OAAAA,CAAQC,GAAG,CAACkB,6BAA6B,IAAIhB;AACxC,MAAMiB,kBAAAA,GACXpB,OAAAA,CAAQC,GAAG,CAACoB,qCAAqC,IACjD,CAAA,EAAGlB,QAAAA,CAAS,aAAa;AACpB,MAAMmB,mBAAAA,GACXtB,OAAAA,CAAQC,GAAG,CAACsB,+BAA+B,IAC3C,CAAA,EAAGpB,QAAAA,CAAS,kBAAkB;AAE9BH,OAAAA,CAAQC,GAAG,CAACuB,wBAAwB,IAAI,CAAA,EAAGrB,QAAAA,CAAS,IAAI;AAExDH,OAAAA,CAAQC,GAAG,CAACwB,iCAAiC,IAAI,CAAA,EAAGtB,QAAAA,CAAS,cAAc;AACtE,MAAMuB,kBAAAA,GACX1B,OAAAA,CAAQC,GAAG,CAAC0B,8BAA8B,IAAI,CAAA,EAAGxB,QAAAA,CAAS,IAAI;AACzD,MAAMyB,cAAAA,GACX5B,OAAAA,CAAQC,GAAG,CAAC4B,0BAA0B,IAAI,CAAA,EAAG1B,QAAAA,CAAS,KAAK;AACtD,MAAM2B,iBAAAA,GACX9B,OAAAA,CAAQC,GAAG,CAAC8B,6BAA6B,IAAI,CAAA,EAAG5B,QAAAA,CAAS,UAAU;AAEnEH,OAAAA,CAAQC,GAAG,CAAC+B,8BAA8B,IAAI,CAAA,EAAG7B,QAAAA,CAAS,UAAU;AAE/D,IAAA,aAAK8B,iBAAAA,SAAAA,aAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,aAAAA;AAIX,CAAA,CAAA,EAAA;;;;"}
1
+ {"version":3,"file":"server.js","sources":["../../src/constants.ts","../../src/features/authz/fetchAuthz.ts","../../src/features/fence/utils.ts","../../src/features/fence/fetchFence.ts"],"sourcesContent":["export const GEN3_COMMONS_NAME =\n process.env.NEXT_PUBLIC_GEN3_COMMONS_NAME || 'gen3';\nexport const GEN3_API = process.env.NEXT_PUBLIC_GEN3_API || '';\nexport const GEN3_DOMAIN = process.env.NEXT_PUBLIC_GEN3_DOMAIN || '';\nexport const GUID_PREFIX_PATTERN = /^dg.[a-zA-Z0-9]+\\//;\n\n/**\n * Service Specific Constants\n */\nexport const GEN3_GUPPY_API =\n process.env.NEXT_PUBLIC_GEN3_GUPPY_API || `${GEN3_API}/guppy`;\nexport const GEN3_MDS_API =\n process.env.NEXT_PUBLIC_GEN3_MDS_API || `${GEN3_API}/mds`;\nexport const GEN3_DOWNLOADS_ENDPOINT =\n process.env.NEXT_PUBLIC_GEN3_DOWNLOADS_ENDPOINT || 'downloads';\nexport const GEN3_FENCE_API =\n process.env.NEXT_PUBLIC_GEN3_FENCE_API || `${GEN3_API}/user`;\nexport const GEN3_FENCE_SERVICE =\n process.env.GEN3_FENCE_SERVICE || 'http://fence-service';\nexport const GEN3_AI_SEARCH_API =\n process.env.NEXT_PUBLIC_GEN3_AI_SEARCH_API || `${GEN3_API}/ai-search`;\nexport const GEN3_AUTHZ_API =\n process.env.NEXT_PUBLIC_GEN3_AUTHZ_API || `${GEN3_API}/authz`;\nexport const GEN3_AUTHZ_SERVICE =\n process.env.GEN3_AUTHZ_SERVICE || 'http://arborist-service';\nexport const GEN3_REDIRECT_URL =\n process.env.NEXT_PUBLIC_GEN3_REDIRECT_URL || GEN3_API;\nexport const GEN3_WORKSPACE_API =\n process.env.NEXT_PUBLIC_GEN3_WORKSPACE_STATUS_API ||\n `${GEN3_API}/lw-workspace`;\nexport const GEN3_SUBMISSION_API =\n process.env.NEXT_PUBLIC_GEN3_SUBMISSION_API ||\n `${GEN3_API}/api/v0/submission`;\nexport const GEN3_WTS_API =\n process.env.NEXT_PUBLIC_GEN3_WTS_API || `${GEN3_API}/wts`;\nexport const GEN3_DATA_LIBRARY_API =\n process.env.NEXT_PUBLIC_GEN3_DATA_LIBRARY_API || `${GEN3_API}/library/lists`;\nexport const GEN3_CROSSWALK_API =\n process.env.NEXT_PUBLIC_GEN3_CROSSWALK_API || `${GEN3_API}/mds`;\nexport const GEN3_SOWER_API =\n process.env.NEXT_PUBLIC_GEN3_SOWER_API || `${GEN3_API}/jobs`;\nexport const GEN3_MANIFEST_API =\n process.env.NEXT_PUBLIC_GEN3_MANIFEST_API || `${GEN3_API}/manifests`;\nexport const GEN3_REQUESTOR_API =\n process.env.NEXT_PUBLIC_GEN3_REQUESTOR_API || `${GEN3_API}/requestor`;\n\nexport enum Accessibility {\n ACCESSIBLE = 'accessible',\n UNACCESSIBLE = 'unaccessible',\n ALL = 'all',\n}\n\nexport const FILE_FORMATS = {\n JSON: 'json',\n TSV: 'tsv',\n CSV: 'csv',\n};\n\nexport const FILE_DELIMITERS = {\n tsv: '\\t',\n csv: ',',\n};\n\nexport const CART_LIMIT = 80000;\n","import { GEN3_AUTHZ_API, GEN3_AUTHZ_SERVICE } from '../../constants';\nimport { AuthzResourceResponse } from './types';\n\n/**\n * Low-level helper to fetch Arborist resources for the current user.\n * Adds an Authorization header when a token is provided and normalizes the response\n * to a simple string[] of resource paths.\n *\n * token { string | null } - access token to use for authorization\n * useService { boolean } - use the arborist service endpoint instead of the public arborist API\n */\nexport async function fetchArboristResources(\n token: string | null,\n useService: boolean = false,\n): Promise<string[]> {\n const headers: Record<string, string> = {};\n\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n\n const url = useService\n ? `${GEN3_AUTHZ_SERVICE}/resource`\n : `${GEN3_AUTHZ_API}/resources`;\n const res = await fetch(url, { headers });\n\n if (!res.ok) {\n console.error(\n '@gen3/core:fetchArboristResources /resource failed:',\n res.status,\n await res.text(),\n );\n return [];\n }\n\n const data = (await res.json()) as AuthzResourceResponse;\n return data.resources ?? [];\n}\n","import { FetchError } from './types';\n\nexport const isFetchError = <T>(obj: unknown): obj is FetchError<T> => {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n const { url, status, statusText, text } = obj as Partial<FetchError<T>>;\n\n return (\n typeof url === 'string' &&\n typeof status === 'number' &&\n typeof statusText === 'string' &&\n typeof text === 'string'\n );\n};\n\n/**\n * Template for fence error response dict\n * @returns: An error dict response from a RESTFUL API request\n */\nexport const buildFetchError = async <T>(\n res: Response,\n request?: T,\n): Promise<FetchError<T>> => {\n return {\n url: res.url,\n status: res.status,\n statusText: res.statusText,\n text: await res.text(),\n request: request,\n };\n};\n","import { type FetchRequest, type Gen3FenceResponse } from './types';\nimport { GEN3_FENCE_API, GEN3_FENCE_SERVICE } from '../../constants';\nimport { buildFetchError } from './utils';\n\n/**\n * Performs an asynchronous HTTP request to the Gen3 Fence API and processes the response.\n *\n * @template T The expected type of the response data.\n * @param {FetchRequest} options The options for the fetch request.\n * @param {string} options.endpoint The API endpoint to which the request will be sent.\n * @param {Record<string, string>} options.headers An object representing the HTTP headers to include in the request.\n * @param {Record<string, any>} [options.body={}] The request body to send with the fetch, used if the HTTP method is POST.\n * @param {string} [options.method='GET'] The HTTP method for the request (e.g., 'GET', 'POST').\n * @param {boolean} [options.isJSON=true] Determines if the response should be parsed as JSON or returned as plain text.\n * @param useService { boolean } Uses fence_service instead of public fence API\n * @returns {Promise<Gen3FenceResponse<T>>} A promise that resolves to the parsed data and response status\n * or rejects with an error if the request fails.\n * @throws {Error} Throws an error if the fetch request fails or the response is not successful.\n */\nexport const fetchFence = async <T>(\n { endpoint, headers, body = {}, method = 'GET', isJSON = true }: FetchRequest,\n useService: boolean = false,\n): Promise<Gen3FenceResponse<T>> => {\n let url = `${GEN3_FENCE_API}${endpoint}`;\n if (useService) {\n url = `${GEN3_FENCE_SERVICE}/${endpoint}`;\n }\n\n const res = await fetch(url, {\n method: method,\n credentials: 'include',\n headers: {\n // Ensure Content-Type is set for JSON POSTs, but allow overrides via 'headers'\n ...(method === 'POST' ? { 'Content-Type': 'application/json' } : {}),\n ...headers,\n },\n body: 'POST' === method ? JSON.stringify(body) : null,\n // REMOVED: next: { revalidate: 360 } - Auth requests should not be cached by default\n });\n\n if (res.ok)\n return {\n data: isJSON ? await res.json() : await res.text(),\n status: res.status,\n };\n throw await buildFetchError(res, {\n endpoint,\n method,\n headers,\n body,\n });\n};\n"],"names":["GEN3_COMMONS_NAME","process","env","NEXT_PUBLIC_GEN3_COMMONS_NAME","GEN3_API","NEXT_PUBLIC_GEN3_API","GEN3_DOMAIN","NEXT_PUBLIC_GEN3_DOMAIN","GEN3_GUPPY_API","NEXT_PUBLIC_GEN3_GUPPY_API","GEN3_MDS_API","NEXT_PUBLIC_GEN3_MDS_API","GEN3_DOWNLOADS_ENDPOINT","NEXT_PUBLIC_GEN3_DOWNLOADS_ENDPOINT","GEN3_FENCE_API","NEXT_PUBLIC_GEN3_FENCE_API","GEN3_FENCE_SERVICE","NEXT_PUBLIC_GEN3_AI_SEARCH_API","GEN3_AUTHZ_API","NEXT_PUBLIC_GEN3_AUTHZ_API","GEN3_AUTHZ_SERVICE","GEN3_REDIRECT_URL","NEXT_PUBLIC_GEN3_REDIRECT_URL","GEN3_WORKSPACE_API","NEXT_PUBLIC_GEN3_WORKSPACE_STATUS_API","GEN3_SUBMISSION_API","NEXT_PUBLIC_GEN3_SUBMISSION_API","NEXT_PUBLIC_GEN3_WTS_API","NEXT_PUBLIC_GEN3_DATA_LIBRARY_API","GEN3_CROSSWALK_API","NEXT_PUBLIC_GEN3_CROSSWALK_API","GEN3_SOWER_API","NEXT_PUBLIC_GEN3_SOWER_API","GEN3_MANIFEST_API","NEXT_PUBLIC_GEN3_MANIFEST_API","NEXT_PUBLIC_GEN3_REQUESTOR_API","Accessibility","fetchArboristResources","token","useService","headers","Authorization","url","res","fetch","ok","console","error","status","text","data","json","resources","isFetchError","obj","statusText","buildFetchError","request","fetchFence","endpoint","body","method","isJSON","credentials","JSON","stringify"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -27,7 +27,9 @@ declare const GEN3_GUPPY_API: string;
27
27
  declare const GEN3_MDS_API: string;
28
28
  declare const GEN3_DOWNLOADS_ENDPOINT: string;
29
29
  declare const GEN3_FENCE_API: string;
30
+ declare const GEN3_FENCE_SERVICE: string;
30
31
  declare const GEN3_AUTHZ_API: string;
32
+ declare const GEN3_AUTHZ_SERVICE: string;
31
33
  declare const GEN3_REDIRECT_URL: string;
32
34
  declare const GEN3_WORKSPACE_API: string;
33
35
  declare const GEN3_SUBMISSION_API: string;
@@ -1191,6 +1193,16 @@ declare const selectAuthzMappingData: ((state: _reduxjs_toolkit_query.RootState<
1191
1193
  memoize: typeof reselect.weakMapMemoize;
1192
1194
  };
1193
1195
 
1196
+ /**
1197
+ * Low-level helper to fetch Arborist resources for the current user.
1198
+ * Adds an Authorization header when a token is provided and normalizes the response
1199
+ * to a simple string[] of resource paths.
1200
+ *
1201
+ * token { string | null } - access token to use for authorization
1202
+ * useService { boolean } - use the arborist service endpoint instead of the public arborist API
1203
+ */
1204
+ declare function fetchArboristResources(token: string | null, useService?: boolean): Promise<string[]>;
1205
+
1194
1206
  interface NamedURL {
1195
1207
  name: string;
1196
1208
  url: string;
@@ -1365,6 +1377,13 @@ interface Gen3FenceResponse<H = JSONObject | string> {
1365
1377
  readonly data: H;
1366
1378
  readonly status: number;
1367
1379
  }
1380
+ interface FetchRequest {
1381
+ readonly endpoint: string;
1382
+ readonly method?: 'GET' | 'POST';
1383
+ readonly body?: object;
1384
+ readonly headers?: Record<string, string>;
1385
+ readonly isJSON?: boolean;
1386
+ }
1368
1387
 
1369
1388
  interface NameUrl {
1370
1389
  readonly name: string;
@@ -1937,13 +1956,6 @@ declare const useLazyGetDownloadQuery: <R extends Record<string, any> = _reduxjs
1937
1956
  }, {
1938
1957
  lastArg: string;
1939
1958
  }];
1940
- interface FetchRequest {
1941
- readonly endpoint: string;
1942
- readonly method?: 'GET' | 'POST';
1943
- readonly body?: object;
1944
- readonly headers?: Record<string, string>;
1945
- readonly isJSON?: boolean;
1946
- }
1947
1959
  /**
1948
1960
  * Logout from fence
1949
1961
  */
@@ -2826,11 +2838,23 @@ declare const useGetJWKKeysQuery: <R extends Record<string, any> = _reduxjs_tool
2826
2838
  };
2827
2839
 
2828
2840
  declare const isFetchError: <T>(obj: unknown) => obj is FetchError<T>;
2841
+
2829
2842
  /**
2830
- * Template for a standard fence request
2831
- * @returns: response data
2843
+ * Performs an asynchronous HTTP request to the Gen3 Fence API and processes the response.
2844
+ *
2845
+ * @template T The expected type of the response data.
2846
+ * @param {FetchRequest} options The options for the fetch request.
2847
+ * @param {string} options.endpoint The API endpoint to which the request will be sent.
2848
+ * @param {Record<string, string>} options.headers An object representing the HTTP headers to include in the request.
2849
+ * @param {Record<string, any>} [options.body={}] The request body to send with the fetch, used if the HTTP method is POST.
2850
+ * @param {string} [options.method='GET'] The HTTP method for the request (e.g., 'GET', 'POST').
2851
+ * @param {boolean} [options.isJSON=true] Determines if the response should be parsed as JSON or returned as plain text.
2852
+ * @param useService { boolean } Uses fence_service instead of public fence API
2853
+ * @returns {Promise<Gen3FenceResponse<T>>} A promise that resolves to the parsed data and response status
2854
+ * or rejects with an error if the request fails.
2855
+ * @throws {Error} Throws an error if the fetch request fails or the response is not successful.
2832
2856
  */
2833
- declare const fetchFence: <T>({ endpoint, headers, body, method, isJSON, }: FetchRequest) => Promise<Gen3FenceResponse<T>>;
2857
+ declare const fetchFence: <T>({ endpoint, headers, body, method, isJSON }: FetchRequest, useService?: boolean) => Promise<Gen3FenceResponse<T>>;
2834
2858
 
2835
2859
  interface PayModel {
2836
2860
  bmh_workspace_id: string;
@@ -22889,5 +22913,5 @@ declare class ConfigRegistry<T = Record<string, RegistryTypes>> {
22889
22913
  }
22890
22914
  declare const configRegistry: ConfigRegistry<Record<string, RegistryTypes>>;
22891
22915
 
22892
- export { Accessibility, CART_LIMIT, CohortStorage, CoreProvider, DAYS_IN_YEAR, DataLibraryStoreMode, EmptyFilterSet, EmptyWorkspaceStatusResponse, EnumValueExtractorHandler, ExtractValueFromObject, FILE_DELIMITERS, FILE_FORMATS, GEN3_API, GEN3_AUTHZ_API, GEN3_COMMONS_NAME, GEN3_CROSSWALK_API, GEN3_DOMAIN, GEN3_DOWNLOADS_ENDPOINT, GEN3_FENCE_API, GEN3_GUPPY_API, GEN3_MANIFEST_API, GEN3_MDS_API, GEN3_REDIRECT_URL, GEN3_SOWER_API, GEN3_SUBMISSION_API, GEN3_WORKSPACE_API, HTTPError, HTTPErrorMessages, HttpMethod, MissingServiceConfigurationError, Modals, PodConditionType, PodStatus, RequestedWorkspaceStatus, ToGqlHandler, ValueExtractorHandler, WorkspaceStatus, addItemsToCart, ageDisplay, appendFilterToOperation, buildGetAggregationQuery, buildGetStatsAggregationQuery, buildListItemsGroupedByDataset, buildNestedFilterForOperation, buildNestedGQLFilter, buildRangeQuery, calculatePercentageAsNumber, calculatePercentageAsString, capitalize, cartReducer, cartReducerPath, clearActiveWorkspaceId, clearCohortFilters, cohortReducer, configRegistry, conversion, convertFilterSetToGqlFilter, convertFilterToGqlFilter, convertGqlFilterToFilter, convertToHistogramDataAsStringKey, convertToQueryString, coreStore, createAppApiForRTKQ, createAppStore, createGen3App, createGen3AppWithOwnStore, createNewCohort, createUseCoreDataHook, customQueryStrForField, defaultCohortNameGenerator, downloadFromGuppyToBlob, downloadJSONDataFromGuppy, drsHostnamesReducer, duplicateCohort, explorerApi, explorerTags, extractEnumFilterValue, extractFieldNameFromFullFieldName, extractFileDatasetsInRecords, extractFilterValue, extractFiltersWithPrefixFromFilterSet, extractIndexAndFieldNameFromFullFieldName, extractIndexFromDataLibraryCohort, extractIndexFromFullFieldName, fetchFence, fetchFencePresignedURL, fetchJSONDataFromURL, fetchJson, fetchUserState, fieldNameToTitle, filterSetToOperation, gen3Api, generateUniqueName, getCurrentTimestamp, getFederatedLoginStatus, getGen3AppId, getNumberOfItemsInDatalist, getRemoteSupportServiceRegistry, getTimestamp, graphQLAPI, graphQLWithTags, groupSharedFields, guppyAPISliceMiddleware, guppyApi, guppyApiReducer, guppyApiSliceReducerPath, guppyDownloadApi, handleGqlOperation, handleOperation, hideModal, histogramQueryStrForEachField, humanify, ifOperationWithField, isAdditionalDataItem, isArray, isAuthenticated, isCohortItem, isDataLibraryAPIResponse, isDatalistAPI, isErrorWithMessage, isFetchBaseQueryError, isFetchError, isFetchParseError, isFileItem, isFilterEmpty, isFilterSet, isGQLIntersection, isGQLUnion, isGuppyAggregationData, isHistogramData, isHistogramDataAArray, isHistogramDataAnEnum, isHistogramDataArray, isHistogramDataArrayARange, isHistogramDataArrayAnEnum, isHistogramDataCollection, isHistogramRangeData, isHttpStatusError, isIncludes, isIndexedFilterSetEmpty, isIntersection, isIntersectionOrUnion, isJSONObject, isJSONValue, isJSONValueArray, isNameUnique, isNestedFilter, isNotDefined, isObject, isOperandsType, isOperationWithField, isOperatorWithFieldAndArrayOfOperands, isPending, isProgramUrl, isRootUrl, isStatsValue, isStatsValuesArray, isString, isTimeGreaterThan, isUnion, isWorkspaceActive, isWorkspaceRunningOrStopping, jsonToFormat, listifyMethodsFromMapping, logoutFence, manifestApi, manifestTags, nestedHistogramQueryStrForEachField, prepareUrl, prependIndexToFieldName, processHistogramResponse, projectCodeFromResourcePath, queryMultipleMDSRecords, rawDataQueryStrForEachField, registerDefaultRemoteSupport, removeCohort, removeCohortFilter, removeItemsFromCart, requestorApi, resetUserState, resourcePathFromProjectID, roundHistogramResponse, selectActiveWorkspaceId, selectActiveWorkspaceStatus, selectAllCohortFiltersCollapsed, selectAllCohorts, selectAuthzMappingData, selectAvailableCohortByName, selectAvailableCohorts, selectCSRFToken, selectCSRFTokenData, selectCart, selectCartCount, selectCartItem, selectCartItems, selectCohortById, selectCohortFilterCombineMode, selectCohortFilterExpanded, selectCohortFilters, selectCohortIds, selectCurrentCohort, selectCurrentCohortFilters, selectCurrentCohortId, selectCurrentCohortModified, selectCurrentCohortName, selectCurrentCohortSaved, selectCurrentMessage, selectCurrentModal, selectGen3AppByName, selectGen3AppMetadataByName, selectHeadersWithCSRFToken, selectIndexFilters, selectIndexedFilterByName, selectPaymodelStatus, selectRequestedWorkspaceStatus, selectRequestedWorkspaceStatusTimestamp, selectSharedFilters, selectSharedFiltersForFields, selectShouldShareFilters, selectTotalCohorts, selectUser, selectUserAuthStatus, selectUserData, selectUserDetails, selectUserLoginStatus, selectWorkspaceStatus, selectWorkspaceStatusFromService, setActiveWorkspace, setActiveWorkspaceId, setActiveWorkspaceStatus, setCohortFilter, setCohortFilterCombineMode, setCohortIndexFilters, setCohortList, setCurrentCohortId, setDRSHostnames, setRequestedWorkspaceStatus, setSharedFilters, setShouldShareFilters, setupCoreStore, showModal, statsQueryStrForEachField, stringifyJSONParam, submissionApi, toggleCohortBuilderAllFilters, toggleCohortBuilderCategoryFilter, trimFirstFieldNameToTitle, updateCohortFilter, updateCohortName, useAddCohortManifestMutation, useAddFileManifestMutation, useAddMetadataManifestMutation, useAddNewCredentialMutation, useAskQuestionMutation, useAuthorizeFromCredentialsMutation, useCoreDispatch, useCoreSelector, useCreateAuthzResourceMutation, useCreateRequestMutation, useCustomRangeQuery, useDataLibrary, useDownloadFromGuppyQuery, useFetchUserDetailsQuery, useGeneralGQLQuery, useGetAISearchStatusQuery, useGetAISearchVersionQuery, useGetAccessibleDataQuery, useGetActivePayModelQuery, useGetAggMDSQuery, useGetAggsQuery, useGetAllFieldsForTypeQuery, useGetArrayTypes, useGetAuthzMappingsQuery, useGetAuthzResourcesQuery, useGetCSRFQuery, useGetCohortManifestQuery, useGetCountsQuery, useGetCredentialsQuery, useGetCrosswalkDataQuery, useGetDataQuery, useGetDictionaryQuery, useGetDownloadQuery, useGetExternalLoginsQuery, useGetFederatedLoginStatus, useGetFieldCountSummaryQuery, useGetFieldsForIndexQuery, useGetFileFromManifestQuery, useGetFileManifestQuery, useGetIndexAggMDSQuery, useGetIndexFields, useGetJWKKeysQuery, useGetLoginProvidersQuery, useGetMDSQuery, useGetManifestServiceStatusQuery, useGetMetadataByIdQuery, useGetMetadataFromManifestQuery, useGetMetadataManifestQuery, useGetProjectsDetailsQuery, useGetProjectsQuery, useGetRawDataAndTotalCountsQuery, useGetSharedFieldsForIndexQuery, useGetSowerJobListQuery, useGetSowerJobStatusQuery, useGetSowerOutputQuery, useGetSowerServiceStatusQuery, useGetStatsAggregationsQuery, useGetStatus, useGetSubAggsQuery, useGetSubmissionGraphQLQuery, useGetSubmissionsQuery, useGetTagsQuery, useGetWorkspaceOptionsQuery, useGetWorkspacePayModelsQuery, useGetWorkspaceStatusQuery, useGraphQLQuery, useIsExternalConnectedQuery, useIsUserLoggedIn, useLaunchWorkspaceMutation, useLazyCustomRangeQuery, useLazyDownloadFromGuppyQuery, useLazyFetchUserDetailsQuery, useLazyGeneralGQLQuery, useLazyGetAggsQuery, useLazyGetAuthzMappingsQuery, useLazyGetAuthzResourcesQuery, useLazyGetCSRFQuery, useLazyGetCountsQuery, useLazyGetCrosswalkDataQuery, useLazyGetDownloadQuery, useLazyGetExternalLoginsQuery, useLazyGetManifestServiceStatusQuery, useLazyGetProjectsQuery, useLazyGetSowerJobListQuery, useLazyGetStatsAggregationsQuery, useLazyGetSubmissionGraphQLQuery, useLazyIsExternalConnectedQuery, useLazyRequestQuery, usePrevious, useRemoveCredentialMutation, useRequestByIdQuery, useRequestQuery, useRequestorStatusQuery, useSetCurrentPayModelMutation, useSubmitSowerJobMutation, useTerminateWorkspaceMutation, useUserAuth, useUserRequestQuery, userHasCreateOrUpdateOnAnyProject, userHasDataUpload, userHasMethodForServiceOnProject, userHasMethodForServiceOnResource, userHasMethodOnAnyProject, userHasSheepdogProgramAdmin, userHasSheepdogProjectAdmin };
22893
- export type { APIKey, AdditionalDataItem, AggregationResponse, AggregationsData, AiSearchResponse, AllowableRange, AppDataSelectorResponse, AuthZAccess, AuthzMapping, BooleanFilterValue, CSRFToken, CartItem, Cohort, CohortId, CohortItem, CombineMode, Comparison, CoreDataSelector, CoreDataSelectorResponse, CoreDataValueSelector, CoreDispatch, CoreState, CoreStore, CrosswalkEntry, CrosswalkInfo, DataFetchingHook, DataFetchingResult, DataFetchingStatus, DataLibrary, DataLibraryAPI, DataLibraryAPIResponse, DataLibraryDataset, DataListUpdate, DataSetMembers, DataStatus, Datalist, DatalistAPI, DatalistAsAPIItems, DatalistBase, DatalistWithIdAPI, DatasetOrCohort, DownloadFromGuppyParams, EnumFilterValue, Equals, ExcludeIfAny, Excludes, Exists, ExportDatasetFields, ExternalProvider, FacetBucket, FacetDefinition, FacetType, FetchDataActionCreator, FetchError, FetchRequest, FileItem, FileItemAPI, FilterGroup, FilterSet, FilterValue, FromToRange, FromToRangeValues, GQLEqual, GQLExcludeIfAny, GQLExcludes, GQLExists, GQLFilter, GQLGreaterThan, GQLGreaterThanOrEquals, GQLIncludes, GQLIntersection, GQLLessThan, GQLLessThanOrEquals, GQLMissing, GQLNestedFilter, GQLNotEqual, GQLRange, GQLUnion, Gen3FenceCredentials, Gen3FenceResponse, Gen3LoginProvider, Gen3Response, Gen3User, GqlOperationHandler, GraphQLQuery, GreaterThan, GreaterThanOrEquals, GuppyActionFunction, GuppyActionFunctionParams, GuppyActionParams, GuppyAggregationData, GuppyAggregationsResponse, GuppyDownloadActionFunctionParams, GuppyDownloadDataParams, GuppyDownloadDataRequest, HistogramBucket, HistogramData, HistogramDataArray, HistogramDataAsStringKey, HistogramDataCollection, HttpError, Includes, IndexAndField, IndexedFilterSet, IndexedMetadataFilters, Intersection, ItemValue, JSONArray, JSONObject, JSONValue, JWTSessionStatus, LessThan, LessThanOrEquals, LibraryListItemsAPI, LibraryListItemsGroupedByDataset, ListItem, LoginStatus, ManifestItem, MetadataPaginationParams, MetadataRequestParams, MetadataResponse, Missing, NameUrl, NamedURL, NestedFilter, NotEquals, NumericFromTo, Operation, OperationHandler, OperationWithField, OperatorWithFieldAndArrayOfOperands, PayModel, Project, ProjectDetailsParams, ProjectDetailsQueryResponse, ProjectDetailsResponse, ProjectResponse, ProjectsListRequestParams, RangeFilterValue, RangeFromOp, RangeQueryRequest, RangeToOp, RawDataAndTotalCountsParams, RegistryTypes, RemoteSupportConfiguration, RemoteSupportRequestAction, RequestListQuery, RequestQueryBody, RequestorResponse, ResourceAuthzMapping, ServiceAndMethod, SetFilterValue, SharedFieldMapping, SortOption, StatValues, StatsData, StatsValuesArray, StorageEntity, StorageOperationResults, SubmissionDocument, SubmissionGraphqlParams, SubmissionGraphqlResponse, SubmissionInfo, TablePageOffsetProps, Union, UnionOrIntersection, UnknownJson, UpdateDataLibraryListParams, UseAppDataHook, UseAppDataResponse, UseCoreDataHook, UseCoreDataResponse, UserProfile, WorkspaceContainerState, WorkspaceId, WorkspaceInfo, WorkspaceInfoResponse, WorkspaceOptions, WorkspaceOptionsResponse, WorkspacePayModelResponse, WorkspacePodCondition, WorkspaceStatusResponse, guppyApiResponse, guppyApiSliceRequest, guppyFetchError };
22916
+ export { Accessibility, CART_LIMIT, CohortStorage, CoreProvider, DAYS_IN_YEAR, DataLibraryStoreMode, EmptyFilterSet, EmptyWorkspaceStatusResponse, EnumValueExtractorHandler, ExtractValueFromObject, FILE_DELIMITERS, FILE_FORMATS, GEN3_API, GEN3_AUTHZ_API, GEN3_AUTHZ_SERVICE, GEN3_COMMONS_NAME, GEN3_CROSSWALK_API, GEN3_DOMAIN, GEN3_DOWNLOADS_ENDPOINT, GEN3_FENCE_API, GEN3_FENCE_SERVICE, GEN3_GUPPY_API, GEN3_MANIFEST_API, GEN3_MDS_API, GEN3_REDIRECT_URL, GEN3_SOWER_API, GEN3_SUBMISSION_API, GEN3_WORKSPACE_API, HTTPError, HTTPErrorMessages, HttpMethod, MissingServiceConfigurationError, Modals, PodConditionType, PodStatus, RequestedWorkspaceStatus, ToGqlHandler, ValueExtractorHandler, WorkspaceStatus, addItemsToCart, ageDisplay, appendFilterToOperation, buildGetAggregationQuery, buildGetStatsAggregationQuery, buildListItemsGroupedByDataset, buildNestedFilterForOperation, buildNestedGQLFilter, buildRangeQuery, calculatePercentageAsNumber, calculatePercentageAsString, capitalize, cartReducer, cartReducerPath, clearActiveWorkspaceId, clearCohortFilters, cohortReducer, configRegistry, conversion, convertFilterSetToGqlFilter, convertFilterToGqlFilter, convertGqlFilterToFilter, convertToHistogramDataAsStringKey, convertToQueryString, coreStore, createAppApiForRTKQ, createAppStore, createGen3App, createGen3AppWithOwnStore, createNewCohort, createUseCoreDataHook, customQueryStrForField, defaultCohortNameGenerator, downloadFromGuppyToBlob, downloadJSONDataFromGuppy, drsHostnamesReducer, duplicateCohort, explorerApi, explorerTags, extractEnumFilterValue, extractFieldNameFromFullFieldName, extractFileDatasetsInRecords, extractFilterValue, extractFiltersWithPrefixFromFilterSet, extractIndexAndFieldNameFromFullFieldName, extractIndexFromDataLibraryCohort, extractIndexFromFullFieldName, fetchArboristResources, fetchFence, fetchFencePresignedURL, fetchJSONDataFromURL, fetchJson, fetchUserState, fieldNameToTitle, filterSetToOperation, gen3Api, generateUniqueName, getCurrentTimestamp, getFederatedLoginStatus, getGen3AppId, getNumberOfItemsInDatalist, getRemoteSupportServiceRegistry, getTimestamp, graphQLAPI, graphQLWithTags, groupSharedFields, guppyAPISliceMiddleware, guppyApi, guppyApiReducer, guppyApiSliceReducerPath, guppyDownloadApi, handleGqlOperation, handleOperation, hideModal, histogramQueryStrForEachField, humanify, ifOperationWithField, isAdditionalDataItem, isArray, isAuthenticated, isCohortItem, isDataLibraryAPIResponse, isDatalistAPI, isErrorWithMessage, isFetchBaseQueryError, isFetchError, isFetchParseError, isFileItem, isFilterEmpty, isFilterSet, isGQLIntersection, isGQLUnion, isGuppyAggregationData, isHistogramData, isHistogramDataAArray, isHistogramDataAnEnum, isHistogramDataArray, isHistogramDataArrayARange, isHistogramDataArrayAnEnum, isHistogramDataCollection, isHistogramRangeData, isHttpStatusError, isIncludes, isIndexedFilterSetEmpty, isIntersection, isIntersectionOrUnion, isJSONObject, isJSONValue, isJSONValueArray, isNameUnique, isNestedFilter, isNotDefined, isObject, isOperandsType, isOperationWithField, isOperatorWithFieldAndArrayOfOperands, isPending, isProgramUrl, isRootUrl, isStatsValue, isStatsValuesArray, isString, isTimeGreaterThan, isUnion, isWorkspaceActive, isWorkspaceRunningOrStopping, jsonToFormat, listifyMethodsFromMapping, logoutFence, manifestApi, manifestTags, nestedHistogramQueryStrForEachField, prepareUrl, prependIndexToFieldName, processHistogramResponse, projectCodeFromResourcePath, queryMultipleMDSRecords, rawDataQueryStrForEachField, registerDefaultRemoteSupport, removeCohort, removeCohortFilter, removeItemsFromCart, requestorApi, resetUserState, resourcePathFromProjectID, roundHistogramResponse, selectActiveWorkspaceId, selectActiveWorkspaceStatus, selectAllCohortFiltersCollapsed, selectAllCohorts, selectAuthzMappingData, selectAvailableCohortByName, selectAvailableCohorts, selectCSRFToken, selectCSRFTokenData, selectCart, selectCartCount, selectCartItem, selectCartItems, selectCohortById, selectCohortFilterCombineMode, selectCohortFilterExpanded, selectCohortFilters, selectCohortIds, selectCurrentCohort, selectCurrentCohortFilters, selectCurrentCohortId, selectCurrentCohortModified, selectCurrentCohortName, selectCurrentCohortSaved, selectCurrentMessage, selectCurrentModal, selectGen3AppByName, selectGen3AppMetadataByName, selectHeadersWithCSRFToken, selectIndexFilters, selectIndexedFilterByName, selectPaymodelStatus, selectRequestedWorkspaceStatus, selectRequestedWorkspaceStatusTimestamp, selectSharedFilters, selectSharedFiltersForFields, selectShouldShareFilters, selectTotalCohorts, selectUser, selectUserAuthStatus, selectUserData, selectUserDetails, selectUserLoginStatus, selectWorkspaceStatus, selectWorkspaceStatusFromService, setActiveWorkspace, setActiveWorkspaceId, setActiveWorkspaceStatus, setCohortFilter, setCohortFilterCombineMode, setCohortIndexFilters, setCohortList, setCurrentCohortId, setDRSHostnames, setRequestedWorkspaceStatus, setSharedFilters, setShouldShareFilters, setupCoreStore, showModal, statsQueryStrForEachField, stringifyJSONParam, submissionApi, toggleCohortBuilderAllFilters, toggleCohortBuilderCategoryFilter, trimFirstFieldNameToTitle, updateCohortFilter, updateCohortName, useAddCohortManifestMutation, useAddFileManifestMutation, useAddMetadataManifestMutation, useAddNewCredentialMutation, useAskQuestionMutation, useAuthorizeFromCredentialsMutation, useCoreDispatch, useCoreSelector, useCreateAuthzResourceMutation, useCreateRequestMutation, useCustomRangeQuery, useDataLibrary, useDownloadFromGuppyQuery, useFetchUserDetailsQuery, useGeneralGQLQuery, useGetAISearchStatusQuery, useGetAISearchVersionQuery, useGetAccessibleDataQuery, useGetActivePayModelQuery, useGetAggMDSQuery, useGetAggsQuery, useGetAllFieldsForTypeQuery, useGetArrayTypes, useGetAuthzMappingsQuery, useGetAuthzResourcesQuery, useGetCSRFQuery, useGetCohortManifestQuery, useGetCountsQuery, useGetCredentialsQuery, useGetCrosswalkDataQuery, useGetDataQuery, useGetDictionaryQuery, useGetDownloadQuery, useGetExternalLoginsQuery, useGetFederatedLoginStatus, useGetFieldCountSummaryQuery, useGetFieldsForIndexQuery, useGetFileFromManifestQuery, useGetFileManifestQuery, useGetIndexAggMDSQuery, useGetIndexFields, useGetJWKKeysQuery, useGetLoginProvidersQuery, useGetMDSQuery, useGetManifestServiceStatusQuery, useGetMetadataByIdQuery, useGetMetadataFromManifestQuery, useGetMetadataManifestQuery, useGetProjectsDetailsQuery, useGetProjectsQuery, useGetRawDataAndTotalCountsQuery, useGetSharedFieldsForIndexQuery, useGetSowerJobListQuery, useGetSowerJobStatusQuery, useGetSowerOutputQuery, useGetSowerServiceStatusQuery, useGetStatsAggregationsQuery, useGetStatus, useGetSubAggsQuery, useGetSubmissionGraphQLQuery, useGetSubmissionsQuery, useGetTagsQuery, useGetWorkspaceOptionsQuery, useGetWorkspacePayModelsQuery, useGetWorkspaceStatusQuery, useGraphQLQuery, useIsExternalConnectedQuery, useIsUserLoggedIn, useLaunchWorkspaceMutation, useLazyCustomRangeQuery, useLazyDownloadFromGuppyQuery, useLazyFetchUserDetailsQuery, useLazyGeneralGQLQuery, useLazyGetAggsQuery, useLazyGetAuthzMappingsQuery, useLazyGetAuthzResourcesQuery, useLazyGetCSRFQuery, useLazyGetCountsQuery, useLazyGetCrosswalkDataQuery, useLazyGetDownloadQuery, useLazyGetExternalLoginsQuery, useLazyGetManifestServiceStatusQuery, useLazyGetProjectsQuery, useLazyGetSowerJobListQuery, useLazyGetStatsAggregationsQuery, useLazyGetSubmissionGraphQLQuery, useLazyIsExternalConnectedQuery, useLazyRequestQuery, usePrevious, useRemoveCredentialMutation, useRequestByIdQuery, useRequestQuery, useRequestorStatusQuery, useSetCurrentPayModelMutation, useSubmitSowerJobMutation, useTerminateWorkspaceMutation, useUserAuth, useUserRequestQuery, userHasCreateOrUpdateOnAnyProject, userHasDataUpload, userHasMethodForServiceOnProject, userHasMethodForServiceOnResource, userHasMethodOnAnyProject, userHasSheepdogProgramAdmin, userHasSheepdogProjectAdmin };
22917
+ export type { APIKey, AdditionalDataItem, AggregationResponse, AggregationsData, AiSearchResponse, AllowableRange, AppDataSelectorResponse, AuthZAccess, AuthzMapping, AuthzResourceResponse, BooleanFilterValue, CSRFToken, CartItem, Cohort, CohortId, CohortItem, CombineMode, Comparison, CoreDataSelector, CoreDataSelectorResponse, CoreDataValueSelector, CoreDispatch, CoreState, CoreStore, CrosswalkEntry, CrosswalkInfo, DataFetchingHook, DataFetchingResult, DataFetchingStatus, DataLibrary, DataLibraryAPI, DataLibraryAPIResponse, DataLibraryDataset, DataListUpdate, DataSetMembers, DataStatus, Datalist, DatalistAPI, DatalistAsAPIItems, DatalistBase, DatalistWithIdAPI, DatasetOrCohort, DownloadFromGuppyParams, EnumFilterValue, Equals, ExcludeIfAny, Excludes, Exists, ExportDatasetFields, ExternalProvider, FacetBucket, FacetDefinition, FacetType, FetchDataActionCreator, FetchError, FetchRequest, FileItem, FileItemAPI, FilterGroup, FilterSet, FilterValue, FromToRange, FromToRangeValues, GQLEqual, GQLExcludeIfAny, GQLExcludes, GQLExists, GQLFilter, GQLGreaterThan, GQLGreaterThanOrEquals, GQLIncludes, GQLIntersection, GQLLessThan, GQLLessThanOrEquals, GQLMissing, GQLNestedFilter, GQLNotEqual, GQLRange, GQLUnion, Gen3FenceCredentials, Gen3FenceResponse, Gen3LoginProvider, Gen3Response, Gen3User, GqlOperationHandler, GraphQLQuery, GreaterThan, GreaterThanOrEquals, GuppyActionFunction, GuppyActionFunctionParams, GuppyActionParams, GuppyAggregationData, GuppyAggregationsResponse, GuppyDownloadActionFunctionParams, GuppyDownloadDataParams, GuppyDownloadDataRequest, HistogramBucket, HistogramData, HistogramDataArray, HistogramDataAsStringKey, HistogramDataCollection, HttpError, Includes, IndexAndField, IndexedFilterSet, IndexedMetadataFilters, Intersection, ItemValue, JSONArray, JSONObject, JSONValue, JWTSessionStatus, LessThan, LessThanOrEquals, LibraryListItemsAPI, LibraryListItemsGroupedByDataset, ListItem, LoginStatus, ManifestItem, MetadataPaginationParams, MetadataRequestParams, MetadataResponse, Missing, NameUrl, NamedURL, NestedFilter, NotEquals, NumericFromTo, Operation, OperationHandler, OperationWithField, OperatorWithFieldAndArrayOfOperands, PayModel, Project, ProjectDetailsParams, ProjectDetailsQueryResponse, ProjectDetailsResponse, ProjectResponse, ProjectsListRequestParams, RangeFilterValue, RangeFromOp, RangeQueryRequest, RangeToOp, RawDataAndTotalCountsParams, RegistryTypes, RemoteSupportConfiguration, RemoteSupportRequestAction, RequestListQuery, RequestQueryBody, RequestorResponse, ResourceAuthzMapping, ServiceAndMethod, SetFilterValue, SharedFieldMapping, SortOption, StatValues, StatsData, StatsValuesArray, StorageEntity, StorageOperationResults, SubmissionDocument, SubmissionGraphqlParams, SubmissionGraphqlResponse, SubmissionInfo, TablePageOffsetProps, Union, UnionOrIntersection, UnknownJson, UpdateDataLibraryListParams, UseAppDataHook, UseAppDataResponse, UseCoreDataHook, UseCoreDataResponse, UserProfile, WorkspaceContainerState, WorkspaceId, WorkspaceInfo, WorkspaceInfoResponse, WorkspaceOptions, WorkspaceOptionsResponse, WorkspacePayModelResponse, WorkspacePodCondition, WorkspaceStatusResponse, guppyApiResponse, guppyApiSliceRequest, guppyFetchError };
package/dist/server.d.ts CHANGED
@@ -14,7 +14,9 @@ declare const GEN3_GUPPY_API: string;
14
14
  declare const GEN3_MDS_API: string;
15
15
  declare const GEN3_DOWNLOADS_ENDPOINT: string;
16
16
  declare const GEN3_FENCE_API: string;
17
+ declare const GEN3_FENCE_SERVICE: string;
17
18
  declare const GEN3_AUTHZ_API: string;
19
+ declare const GEN3_AUTHZ_SERVICE: string;
18
20
  declare const GEN3_REDIRECT_URL: string;
19
21
  declare const GEN3_WORKSPACE_API: string;
20
22
  declare const GEN3_SUBMISSION_API: string;
@@ -27,5 +29,62 @@ declare enum Accessibility {
27
29
  ALL = "all"
28
30
  }
29
31
 
30
- export { Accessibility, GEN3_API, GEN3_AUTHZ_API, GEN3_COMMONS_NAME, GEN3_CROSSWALK_API, GEN3_DOMAIN, GEN3_DOWNLOADS_ENDPOINT, GEN3_FENCE_API, GEN3_GUPPY_API, GEN3_MANIFEST_API, GEN3_MDS_API, GEN3_REDIRECT_URL, GEN3_SOWER_API, GEN3_SUBMISSION_API, GEN3_WORKSPACE_API };
31
- export type { JSONObject, JSONValue };
32
+ /**
33
+ * Low-level helper to fetch Arborist resources for the current user.
34
+ * Adds an Authorization header when a token is provided and normalizes the response
35
+ * to a simple string[] of resource paths.
36
+ *
37
+ * token { string | null } - access token to use for authorization
38
+ * useService { boolean } - use the arborist service endpoint instead of the public arborist API
39
+ */
40
+ declare function fetchArboristResources(token: string | null, useService?: boolean): Promise<string[]>;
41
+
42
+ interface AuthzResourceResponse {
43
+ resources: Array<string>;
44
+ }
45
+
46
+ interface FetchError<T> {
47
+ readonly url: string;
48
+ readonly status: number;
49
+ readonly statusText: string;
50
+ readonly text: string;
51
+ readonly request?: T;
52
+ }
53
+ interface Gen3FenceResponse<H = JSONObject | string> {
54
+ readonly data: H;
55
+ readonly status: number;
56
+ }
57
+ interface FetchRequest {
58
+ readonly endpoint: string;
59
+ readonly method?: 'GET' | 'POST';
60
+ readonly body?: object;
61
+ readonly headers?: Record<string, string>;
62
+ readonly isJSON?: boolean;
63
+ }
64
+
65
+ /**
66
+ * Performs an asynchronous HTTP request to the Gen3 Fence API and processes the response.
67
+ *
68
+ * @template T The expected type of the response data.
69
+ * @param {FetchRequest} options The options for the fetch request.
70
+ * @param {string} options.endpoint The API endpoint to which the request will be sent.
71
+ * @param {Record<string, string>} options.headers An object representing the HTTP headers to include in the request.
72
+ * @param {Record<string, any>} [options.body={}] The request body to send with the fetch, used if the HTTP method is POST.
73
+ * @param {string} [options.method='GET'] The HTTP method for the request (e.g., 'GET', 'POST').
74
+ * @param {boolean} [options.isJSON=true] Determines if the response should be parsed as JSON or returned as plain text.
75
+ * @param useService { boolean } Uses fence_service instead of public fence API
76
+ * @returns {Promise<Gen3FenceResponse<T>>} A promise that resolves to the parsed data and response status
77
+ * or rejects with an error if the request fails.
78
+ * @throws {Error} Throws an error if the fetch request fails or the response is not successful.
79
+ */
80
+ declare const fetchFence: <T>({ endpoint, headers, body, method, isJSON }: FetchRequest, useService?: boolean) => Promise<Gen3FenceResponse<T>>;
81
+
82
+ declare const isFetchError: <T>(obj: unknown) => obj is FetchError<T>;
83
+ /**
84
+ * Template for fence error response dict
85
+ * @returns: An error dict response from a RESTFUL API request
86
+ */
87
+ declare const buildFetchError: <T>(res: Response, request?: T) => Promise<FetchError<T>>;
88
+
89
+ export { Accessibility, GEN3_API, GEN3_AUTHZ_API, GEN3_AUTHZ_SERVICE, GEN3_COMMONS_NAME, GEN3_CROSSWALK_API, GEN3_DOMAIN, GEN3_DOWNLOADS_ENDPOINT, GEN3_FENCE_API, GEN3_FENCE_SERVICE, GEN3_GUPPY_API, GEN3_MANIFEST_API, GEN3_MDS_API, GEN3_REDIRECT_URL, GEN3_SOWER_API, GEN3_SUBMISSION_API, GEN3_WORKSPACE_API, buildFetchError, fetchArboristResources, fetchFence, isFetchError };
90
+ export type { AuthzResourceResponse, FetchRequest, Gen3FenceResponse, JSONObject, JSONValue };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gen3/core",
3
- "version": "0.11.62",
3
+ "version": "0.12.0",
4
4
  "author": "CTDS",
5
5
  "description": "Core module for Gen3.2. Packages provides an interface for interacting with the gen3 API, various types, and a redux store for managing state.",
6
6
  "license": "Apache-2.0",
@@ -63,6 +63,7 @@
63
63
  "@reduxjs/toolkit": "^2.5.0",
64
64
  "cookies-next": "^6.1.0",
65
65
  "flat": "^6.0.1",
66
+ "node-fetch": "^3.3.2",
66
67
  "papaparse": "^5.4.1",
67
68
  "queue": "6.0.2",
68
69
  "react-redux": "^9.2.0",
@@ -74,5 +75,5 @@
74
75
  "files": [
75
76
  "dist"
76
77
  ],
77
- "gitHead": "08e5874746d099789029c57076594f41f9485442"
78
+ "gitHead": "30d16b6669730c3aa152c9ceba34eab710c61a51"
78
79
  }