@pelicanplatform/components 1.0.14 → 1.0.15

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 (67) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/package.json +1 -1
  6. package/dist/CollectionShortcuts/CollectionShortcuts.d.ts +0 -13
  7. package/dist/CollectionShortcuts/CollectionShortcuts.d.ts.map +0 -1
  8. package/dist/CollectionShortcuts/CollectionShortcuts.js +0 -22
  9. package/dist/CollectionShortcuts/CollectionShortcuts.js.map +0 -1
  10. package/dist/CollectionShortcuts/index.d.ts +0 -3
  11. package/dist/CollectionShortcuts/index.d.ts.map +0 -1
  12. package/dist/CollectionShortcuts/index.js +0 -3
  13. package/dist/CollectionShortcuts/index.js.map +0 -1
  14. package/dist/PelicanClientProvider/PelicanClientContext.d.ts +0 -27
  15. package/dist/PelicanClientProvider/PelicanClientContext.d.ts.map +0 -1
  16. package/dist/PelicanClientProvider/PelicanClientContext.js +0 -4
  17. package/dist/PelicanClientProvider/PelicanClientContext.js.map +0 -1
  18. package/dist/PelicanClientProvider/PelicanClientProvider.d.ts +0 -15
  19. package/dist/PelicanClientProvider/PelicanClientProvider.d.ts.map +0 -1
  20. package/dist/PelicanClientProvider/PelicanClientProvider.js +0 -383
  21. package/dist/PelicanClientProvider/PelicanClientProvider.js.map +0 -1
  22. package/dist/PelicanClientProvider/index.d.ts +0 -6
  23. package/dist/PelicanClientProvider/index.d.ts.map +0 -1
  24. package/dist/PelicanClientProvider/index.js +0 -4
  25. package/dist/PelicanClientProvider/index.js.map +0 -1
  26. package/dist/PelicanClientProvider/usePelicanClient.d.ts +0 -21
  27. package/dist/PelicanClientProvider/usePelicanClient.d.ts.map +0 -1
  28. package/dist/PelicanClientProvider/usePelicanClient.js +0 -29
  29. package/dist/PelicanClientProvider/usePelicanClient.js.map +0 -1
  30. package/dist/README.md +0 -0
  31. package/dist/package.json +0 -49
  32. package/dist/usePelicanClient/index.d.ts +0 -3
  33. package/dist/usePelicanClient/index.d.ts.map +0 -1
  34. package/dist/usePelicanClient/index.js +0 -3
  35. package/dist/usePelicanClient/index.js.map +0 -1
  36. package/dist/usePelicanClient/useAuthExchange.d.ts +0 -41
  37. package/dist/usePelicanClient/useAuthExchange.d.ts.map +0 -1
  38. package/dist/usePelicanClient/useAuthExchange.js +0 -88
  39. package/dist/usePelicanClient/useAuthExchange.js.map +0 -1
  40. package/dist/usePelicanClient/useCodeVerifier.d.ts +0 -12
  41. package/dist/usePelicanClient/useCodeVerifier.d.ts.map +0 -1
  42. package/dist/usePelicanClient/useCodeVerifier.js +0 -37
  43. package/dist/usePelicanClient/useCodeVerifier.js.map +0 -1
  44. package/dist/usePelicanClient/useEventCallback.d.ts +0 -18
  45. package/dist/usePelicanClient/useEventCallback.d.ts.map +0 -1
  46. package/dist/usePelicanClient/useEventCallback.js +0 -12
  47. package/dist/usePelicanClient/useEventCallback.js.map +0 -1
  48. package/dist/usePelicanClient/useEventListener.d.ts +0 -7
  49. package/dist/usePelicanClient/useEventListener.d.ts.map +0 -1
  50. package/dist/usePelicanClient/useEventListener.js +0 -57
  51. package/dist/usePelicanClient/useEventListener.js.map +0 -1
  52. package/dist/usePelicanClient/useIsomorphicLayoutEffect.d.ts +0 -16
  53. package/dist/usePelicanClient/useIsomorphicLayoutEffect.d.ts.map +0 -1
  54. package/dist/usePelicanClient/useIsomorphicLayoutEffect.js +0 -16
  55. package/dist/usePelicanClient/useIsomorphicLayoutEffect.js.map +0 -1
  56. package/dist/usePelicanClient/usePelicanClient.d.ts +0 -27
  57. package/dist/usePelicanClient/usePelicanClient.d.ts.map +0 -1
  58. package/dist/usePelicanClient/usePelicanClient.js +0 -245
  59. package/dist/usePelicanClient/usePelicanClient.js.map +0 -1
  60. package/dist/usePelicanClient/useSessionStorage.d.ts +0 -39
  61. package/dist/usePelicanClient/useSessionStorage.d.ts.map +0 -1
  62. package/dist/usePelicanClient/useSessionStorage.js +0 -121
  63. package/dist/usePelicanClient/useSessionStorage.js.map +0 -1
  64. package/dist/usePelicanClient/util.d.ts +0 -1
  65. package/dist/usePelicanClient/util.d.ts.map +0 -1
  66. package/dist/usePelicanClient/util.js +0 -2
  67. package/dist/usePelicanClient/util.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from "@pelicanplatform/hooks";
2
- export { default } from "./Client";
2
+ export { default as AuthenticatedClient } from "./AuthenticatedClient";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // Re-export all components and hooks from the respective packages
2
2
  export * from "@pelicanplatform/hooks";
3
- export { default } from "./Client";
3
+ export { default as AuthenticatedClient } from "./AuthenticatedClient";
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pelicanplatform/components",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "homepage": "https://pelicanplatform.org",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,13 +0,0 @@
1
- import type { Collection } from "../usePelicanClient";
2
- interface CollectionShortcutsProps {
3
- /** List of shortcut collections */
4
- collections: Collection[];
5
- /** Callback when a shortcut is clicked */
6
- onClick: (favorite: string) => void;
7
- }
8
- /**
9
- * A sidebar element to view a list of provided shortcuts, used for the user's authenticated routes.
10
- */
11
- declare function CollectionShortcuts({ collections, onClick }: CollectionShortcutsProps): import("react/jsx-runtime").JSX.Element;
12
- export default CollectionShortcuts;
13
- //# sourceMappingURL=CollectionShortcuts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CollectionShortcuts.d.ts","sourceRoot":"","sources":["../../src/CollectionShortcuts/CollectionShortcuts.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAEpD,UAAU,wBAAwB;IAC9B,mCAAmC;IACnC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,0CAA0C;IAC1C,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;GAEG;AACH,iBAAS,mBAAmB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,wBAAwB,2CAqC9E;AAED,eAAe,mBAAmB,CAAC"}
@@ -1,22 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Star } from "@mui/icons-material";
4
- import { Box, Paper, Typography } from "@mui/material";
5
- /**
6
- * A sidebar element to view a list of provided shortcuts, used for the user's authenticated routes.
7
- */
8
- function CollectionShortcuts({ collections, onClick }) {
9
- return (_jsxs(Paper, { variant: "outlined", sx: { width: "fit-content" }, children: [_jsx(Typography, { variant: "h6", sx: { px: 2, py: 1.5, fontWeight: 600 }, children: "Collections" }), collections.length === 0 ? (_jsx(Typography, { variant: "body2", color: "text.secondary", sx: { px: 2, py: 2 }, children: "No shortcuts available." })) : (_jsx(Box, { component: "ul", sx: { listStyle: "none", p: 0, m: 0 }, children: collections.map((favorite, index) => (_jsxs(Box, { component: "li", onClick: () => onClick(favorite.href), sx: {
10
- px: 2,
11
- py: 1,
12
- cursor: "pointer",
13
- display: "flex",
14
- alignItems: "center",
15
- gap: 1,
16
- "&:hover": {
17
- bgcolor: "action.hover",
18
- },
19
- }, children: [_jsx(Star, { fontSize: "small", color: "action" }), _jsx("span", { children: favorite.objectPath })] }, index))) }))] }));
20
- }
21
- export default CollectionShortcuts;
22
- //# sourceMappingURL=CollectionShortcuts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CollectionShortcuts.js","sourceRoot":"","sources":["../../src/CollectionShortcuts/CollectionShortcuts.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAUvD;;GAEG;AACH,SAAS,mBAAmB,CAAC,EAAE,WAAW,EAAE,OAAO,EAA4B;IAC3E,OAAO,CACH,MAAC,KAAK,IAAC,OAAO,EAAC,UAAU,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,aAClD,KAAC,UAAU,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,4BAEnD,EACZ,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACxB,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,gBAAgB,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,wCAE1D,CAChB,CAAC,CAAC,CAAC,CACA,KAAC,GAAG,IAAC,SAAS,EAAC,IAAI,EAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,YACpD,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAClC,MAAC,GAAG,IACA,SAAS,EAAC,IAAI,EAEd,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EACrC,EAAE,EAAE;wBACA,EAAE,EAAE,CAAC;wBACL,EAAE,EAAE,CAAC;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,MAAM;wBACf,UAAU,EAAE,QAAQ;wBACpB,GAAG,EAAE,CAAC;wBACN,SAAS,EAAE;4BACP,OAAO,EAAE,cAAc;yBAC1B;qBACJ,aAED,KAAC,IAAI,IAAC,QAAQ,EAAC,OAAO,EAAC,KAAK,EAAC,QAAQ,GAAG,EACxC,yBAAO,QAAQ,CAAC,UAAU,GAAQ,KAf7B,KAAK,CAgBR,CACT,CAAC,GACA,CACT,IACG,CACX,CAAC;AACN,CAAC;AAED,eAAe,mBAAmB,CAAC"}
@@ -1,3 +0,0 @@
1
- export { default } from "./CollectionShortcuts";
2
- export * from "./CollectionShortcuts";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/CollectionShortcuts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,cAAc,uBAAuB,CAAC"}
@@ -1,3 +0,0 @@
1
- export { default } from "./CollectionShortcuts";
2
- export * from "./CollectionShortcuts";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/CollectionShortcuts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,cAAc,uBAAuB,CAAC"}
@@ -1,27 +0,0 @@
1
- import { Dispatch, SetStateAction } from "react";
2
- import { Federation, Namespace, Collection, ObjectList } from "@pelicanplatform/web-client";
3
- export interface PelicanClientContextValue {
4
- loading: boolean;
5
- error: string | null;
6
- authorizationRequired: boolean;
7
- authorized: boolean;
8
- setError: (error: string | null) => void;
9
- objectUrl: string;
10
- federationHostname: string | null;
11
- objectPath: string | null;
12
- federation: Federation | null;
13
- namespace: Namespace | null;
14
- collections: Collection[];
15
- ensureMetadata: (targetObjectUrl: string) => Promise<{
16
- federation: Federation;
17
- namespace: Namespace | null;
18
- }>;
19
- getObjectList: (targetObjectUrl?: string, forceRefresh?: boolean) => Promise<ObjectList[]>;
20
- invalidateObjectListCache: (targetObjectUrl?: string) => void;
21
- handleDownload: (downloadObjectUrl: string) => Promise<void>;
22
- handleUpload: (file: File, uploadObjectUrl?: string) => Promise<void>;
23
- handleLogin: () => Promise<void>;
24
- setObjectUrl: Dispatch<SetStateAction<string>>;
25
- }
26
- export declare const PelicanClientContext: import("react").Context<PelicanClientContextValue | null>;
27
- //# sourceMappingURL=PelicanClientContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PelicanClientContext.d.ts","sourceRoot":"","sources":["../../src/PelicanClientProvider/PelicanClientContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE5F,MAAM,WAAW,yBAAyB;IAExC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IAGpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAGzC,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;IAG1B,cAAc,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC;QACnD,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;KAC5B,CAAC,CAAC;IAGH,aAAa,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3F,yBAAyB,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,cAAc,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjC,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CAChD;AAED,eAAO,MAAM,oBAAoB,2DAAwD,CAAC"}
@@ -1,4 +0,0 @@
1
- import { createContext } from "react";
2
- export const PelicanClientContext = createContext(null);
3
- PelicanClientContext.displayName = "PelicanClientContext";
4
- //# sourceMappingURL=PelicanClientContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PelicanClientContext.js","sourceRoot":"","sources":["../../src/PelicanClientProvider/PelicanClientContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4B,MAAM,OAAO,CAAC;AAwChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAmC,IAAI,CAAC,CAAC;AAE1F,oBAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAC"}
@@ -1,15 +0,0 @@
1
- import React from "react";
2
- export interface PelicanClientProviderProps {
3
- /** Initial object URL */
4
- initialObjectUrl?: string;
5
- /** Whether to enable authentication features */
6
- enableAuth?: boolean;
7
- /** Child components that will have access to the context */
8
- children: React.ReactNode;
9
- }
10
- /**
11
- * Provider component that manages Pelican client state and provides it to child components.
12
- * Wrap your app or component tree with this provider to enable usePelicanClient hook.
13
- */
14
- export declare function PelicanClientProvider({ initialObjectUrl, enableAuth, children }: PelicanClientProviderProps): import("react/jsx-runtime").JSX.Element;
15
- //# sourceMappingURL=PelicanClientProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PelicanClientProvider.d.ts","sourceRoot":"","sources":["../../src/PelicanClientProvider/PelicanClientProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAyBjF,MAAM,WAAW,0BAA0B;IACzC,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACE,gBAAqB,EACrB,UAAiB,EACjB,QAAQ,EACT,EAAE,0BAA0B,2CA0blE"}
@@ -1,383 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
- import { UnauthenticatedError, downloadResponse, fetchFederation, fetchNamespace, get, list, parseObjectUrl, put, startAuthorizationCodeFlow, verifyToken, getTokenCollections } from "@pelicanplatform/web-client";
5
- import { PelicanClientContext } from "./PelicanClientContext";
6
- import { useSessionStorage } from "../usePelicanClient/useSessionStorage";
7
- import { useCodeVerifier } from "../usePelicanClient/useCodeVerifier";
8
- import { useAuthExchange } from "../usePelicanClient/useAuthExchange";
9
- /**
10
- * Provider component that manages Pelican client state and provides it to child components.
11
- * Wrap your app or component tree with this provider to enable usePelicanClient hook.
12
- */
13
- export function PelicanClientProvider({ initialObjectUrl = "", enableAuth = true, children }) {
14
- const [objectUrl, setObjectUrl] = useState(initialObjectUrl);
15
- const [loading, setLoading] = useState(true);
16
- const [error, setError] = useState(null);
17
- const [federations, setFederations] = useSessionStorage("pelican-wc-federations", {});
18
- const [prefixToNamespace, setPrefixToNamespace] = useSessionStorage("pelican-wc-p2n", {});
19
- const [authorizationRequired, setAuthorizationRequired] = useState(!enableAuth);
20
- // Store in-flight metadata fetch promises to prevent duplicate concurrent requests
21
- const metadataPromises = useRef(new Map());
22
- // Cache for object list responses to avoid redundant requests
23
- const objectListCache = useRef(new Map());
24
- // Cache TTL in milliseconds (5 minutes)
25
- const OBJECT_LIST_CACHE_TTL = 5 * 60 * 1000;
26
- // Handle OAuth authorization code exchange
27
- const [codeVerifier, ensureCodeVerifier] = useCodeVerifier();
28
- const { loading: authLoading } = useAuthExchange({
29
- enabled: enableAuth,
30
- codeVerifier: codeVerifier,
31
- getNamespace: (federationHostname, namespacePrefix) => {
32
- var _a;
33
- return (_a = federations[federationHostname]) === null || _a === void 0 ? void 0 : _a.namespaces[namespacePrefix];
34
- },
35
- onTokenReceived: (result) => {
36
- var _a;
37
- const newNamespace = {
38
- ...(_a = federations[result.federationHostname]) === null || _a === void 0 ? void 0 : _a.namespaces[result.namespacePrefix],
39
- token: result.token
40
- };
41
- setActiveNamespace(newNamespace);
42
- setFederations((f) => {
43
- var _a;
44
- return ({
45
- ...f,
46
- [result.federationHostname]: {
47
- ...f[result.federationHostname],
48
- namespaces: {
49
- ...(_a = f[result.federationHostname]) === null || _a === void 0 ? void 0 : _a.namespaces,
50
- [result.namespacePrefix]: newNamespace,
51
- },
52
- },
53
- });
54
- });
55
- }
56
- });
57
- const { federationHostname, objectPath } = useMemo(() => {
58
- try {
59
- return parseObjectUrl(objectUrl);
60
- }
61
- catch (_a) {
62
- return { federationHostname: null, objectPath: null };
63
- }
64
- }, [objectUrl]);
65
- const federation = federationHostname && federations
66
- ? federations[federationHostname] || null
67
- : null;
68
- /**
69
- * There is a brief blip when the derived namespace is null before metadata is loaded.
70
- * To avoid losing the namespace in that case we keep track of the last active namespace.
71
- */
72
- const [activeNamespace, setActiveNamespace] = useState(null);
73
- const derivedNamespace = useMemo(() => {
74
- var _a, _b;
75
- if (!objectPath || !federation)
76
- return null;
77
- const namespaceKey = (_a = prefixToNamespace === null || prefixToNamespace === void 0 ? void 0 : prefixToNamespace[objectPath]) === null || _a === void 0 ? void 0 : _a.namespace;
78
- if (!namespaceKey)
79
- return null;
80
- return ((_b = federation.namespaces) === null || _b === void 0 ? void 0 : _b[namespaceKey]) || null;
81
- }, [prefixToNamespace, objectPath, federation]);
82
- // On mount, attempt to set activeNamespace from stored federations if possible
83
- useEffect(() => {
84
- if (derivedNamespace) {
85
- setActiveNamespace(derivedNamespace);
86
- }
87
- }, []);
88
- const namespace = derivedNamespace || activeNamespace;
89
- const prevCollectionsRef = useRef([]);
90
- const collections = useMemo(() => {
91
- if ((!verifyToken(namespace === null || namespace === void 0 ? void 0 : namespace.token) && prevCollectionsRef.current.length > 0) || !namespace) {
92
- prevCollectionsRef.current = [];
93
- }
94
- else {
95
- const newCollections = getTokenCollections(namespace);
96
- if (JSON.stringify(prevCollectionsRef.current) !== JSON.stringify(newCollections)) {
97
- prevCollectionsRef.current = newCollections;
98
- }
99
- }
100
- return prevCollectionsRef.current;
101
- }, [namespace]);
102
- const authorized = collections.length > 0 || !authorizationRequired || !enableAuth;
103
- /**
104
- * Helper function to remove expired tokens from state.
105
- */
106
- const cleanExpiredTokens = useCallback(() => {
107
- setFederations((prevFederations) => {
108
- const updatedFederations = {};
109
- for (const [fedKey, federation] of Object.entries(prevFederations)) {
110
- const updatedNamespaces = {};
111
- for (const [nsKey, namespace] of Object.entries(federation.namespaces)) {
112
- const updatedNamespace = { ...namespace };
113
- if (namespace.token && !verifyToken(namespace.token)) {
114
- setError("Cleaned expired authentication token. Please log in again.");
115
- delete updatedNamespace.token;
116
- }
117
- updatedNamespaces[nsKey] = updatedNamespace;
118
- }
119
- updatedFederations[fedKey] = {
120
- ...federation,
121
- namespaces: updatedNamespaces
122
- };
123
- }
124
- return updatedFederations;
125
- });
126
- }, []);
127
- /**
128
- * Helper function to ensure federation and namespace metadata is available.
129
- * Fetches on-demand if not in cache. Deduplicates concurrent requests for the same URL.
130
- */
131
- const ensureMetadata = useCallback(async (targetObjectUrl) => {
132
- var _a;
133
- const { federationHostname, objectPath } = parseObjectUrl(targetObjectUrl);
134
- if (!federationHostname || !objectPath) {
135
- throw new Error(`Invalid object URL: ${targetObjectUrl}`);
136
- }
137
- const cacheKey = `${federationHostname}:${objectPath}`;
138
- // Check if there's already an in-flight request for this URL
139
- const existingPromise = metadataPromises.current.get(cacheKey);
140
- if (existingPromise) {
141
- return existingPromise;
142
- }
143
- // Check if we already have both federation and namespace in cache
144
- const _federation = federations[federationHostname];
145
- const namespaceKey = (_a = prefixToNamespace[objectPath]) === null || _a === void 0 ? void 0 : _a.namespace;
146
- const _namespace = namespaceKey && _federation
147
- ? _federation.namespaces[namespaceKey]
148
- : null;
149
- if (_federation && _namespace) {
150
- return { federation: _federation, namespace: _namespace };
151
- }
152
- // Create a new promise for this fetch operation
153
- const fetchPromise = (async () => {
154
- var _a;
155
- try {
156
- let federation = federations[federationHostname];
157
- if (!federation) {
158
- federation = await fetchFederation(federationHostname);
159
- setFederations((prev) => ({
160
- ...prev,
161
- [federationHostname]: federation
162
- }));
163
- }
164
- // Check if we have already mapped that object prefix to a namespace
165
- const namespaceKey = (_a = prefixToNamespace[objectPath]) === null || _a === void 0 ? void 0 : _a.namespace;
166
- let namespace = namespaceKey ? federation.namespaces[namespaceKey] : null;
167
- // If it is not mapped, fetch the namespace metadata and map it
168
- if (!namespace) {
169
- namespace = await fetchNamespace(objectPath, federation);
170
- setActiveNamespace((p) => {
171
- if (p && p.prefix === namespace.prefix) {
172
- return p;
173
- }
174
- return namespace;
175
- });
176
- setPrefixToNamespace((prev) => ({
177
- ...prev,
178
- [objectPath]: {
179
- federation: federationHostname,
180
- namespace: namespace.prefix
181
- }
182
- }));
183
- // If the namespace doesn't exist in the federation yet, add it
184
- if (namespace && !(namespace.prefix in federation.namespaces)) {
185
- setFederations((prev) => ({
186
- ...prev,
187
- [federationHostname]: {
188
- ...federation,
189
- namespaces: {
190
- ...federation.namespaces,
191
- [namespace.prefix]: namespace
192
- }
193
- }
194
- }));
195
- }
196
- }
197
- return { federation, namespace };
198
- }
199
- catch (e) {
200
- setError("Couldn't fetch metadata: " + e);
201
- throw e;
202
- }
203
- finally {
204
- metadataPromises.current.delete(cacheKey);
205
- }
206
- })();
207
- metadataPromises.current.set(cacheKey, fetchPromise);
208
- return fetchPromise;
209
- }, [federations, prefixToNamespace]);
210
- // Store the latest ensureMetadata function in a ref
211
- const ensureMetadataRef = useRef(ensureMetadata);
212
- useEffect(() => {
213
- ensureMetadataRef.current = ensureMetadata;
214
- }, [ensureMetadata]);
215
- // Pull Federation and Namespace Metadata as needed for the current objectUrl
216
- useEffect(() => {
217
- (async () => {
218
- setLoading(true);
219
- const { federationHostname, objectPath } = parseObjectUrl(objectUrl);
220
- if (!objectUrl || !federationHostname || !objectPath) {
221
- setLoading(false);
222
- return;
223
- }
224
- try {
225
- await ensureMetadataRef.current(objectUrl);
226
- }
227
- catch (e) {
228
- setError(`Failed to fetch metadata for ${objectUrl}: ${e}`);
229
- }
230
- setLoading(false);
231
- })();
232
- }, [objectUrl]);
233
- /**
234
- * Get the list of objects at the specified URL.
235
- * Results are cached with a TTL to avoid redundant requests.
236
- */
237
- const getObjectList = useCallback(async (targetObjectUrl, forceRefresh = false) => {
238
- try {
239
- const urlToFetch = targetObjectUrl || objectUrl;
240
- // Check cache first (unless force refresh is requested)
241
- if (!forceRefresh) {
242
- const cached = objectListCache.current.get(urlToFetch);
243
- if (cached && Date.now() - cached.timestamp < OBJECT_LIST_CACHE_TTL) {
244
- return cached.data;
245
- }
246
- }
247
- const { federationHostname, objectPath } = parseObjectUrl(urlToFetch);
248
- const { federation, namespace } = await ensureMetadataRef.current(objectUrl);
249
- if (!federation || !namespace) {
250
- throw new Error("Federation or Namespace metadata is missing");
251
- }
252
- let objects = await list(urlToFetch, federation, namespace);
253
- // No longer need authorization
254
- setAuthorizationRequired(false);
255
- // Get authenticated collections for the current namespace and filter objects based on permissions
256
- const currentCollections = getTokenCollections(namespace);
257
- // add parent directory entry
258
- const pathParts = objectPath.split("/").filter((p) => p.length > 0);
259
- const parentParts = pathParts.slice(0, -1);
260
- const parentPath = parentParts.length > 0 ? "/" + parentParts.join("/") : "";
261
- // Check if the parent directory is within any of the user's collections before adding it to the list
262
- if (pathParts.length > 0 && currentCollections.some(c => parentPath.startsWith(namespace.prefix + c.objectPath))) {
263
- objects.push({
264
- href: parentPath || "/",
265
- getcontentlength: 0,
266
- getlastmodified: "",
267
- resourcetype: "collection",
268
- iscollection: true,
269
- executable: "",
270
- status: "",
271
- });
272
- }
273
- const objectPathWithoutSlash = objectPath.replace(/\/+$/, "");
274
- objects = objects.filter((obj) => obj.href !== objectPathWithoutSlash && obj.href !== "");
275
- objects.reverse();
276
- // Cache the result
277
- objectListCache.current.set(urlToFetch, {
278
- data: objects,
279
- timestamp: Date.now()
280
- });
281
- return objects;
282
- }
283
- catch (e) {
284
- if (e instanceof UnauthenticatedError) {
285
- setAuthorizationRequired(true);
286
- cleanExpiredTokens();
287
- return [];
288
- }
289
- setError(`Failed to fetch object list for ${targetObjectUrl || objectUrl}: ${e}`);
290
- return [];
291
- }
292
- }, [objectUrl, OBJECT_LIST_CACHE_TTL]);
293
- /**
294
- * Invalidate the object list cache for a specific URL or all URLs.
295
- */
296
- const invalidateObjectListCache = useCallback((targetObjectUrl) => {
297
- if (targetObjectUrl) {
298
- // Delete target cache and parent caches in case of directory changes
299
- const toDelete = targetObjectUrl.replace("pelican://", "").split("/").map((_, idx, arr) => "pelican://" + arr.slice(0, idx + 1).join("/"));
300
- toDelete.forEach(url => {
301
- objectListCache.current.delete(url);
302
- });
303
- }
304
- else {
305
- objectListCache.current.clear();
306
- }
307
- }, []);
308
- const handleDownload = useCallback(async (downloadObjectUrl) => {
309
- try {
310
- const { federation, namespace } = await ensureMetadataRef.current(objectUrl);
311
- if (!federation || !namespace)
312
- return;
313
- const response = await get(downloadObjectUrl, federation, namespace);
314
- downloadResponse(response);
315
- }
316
- catch (e) {
317
- if (e instanceof UnauthenticatedError) {
318
- setAuthorizationRequired(true);
319
- cleanExpiredTokens();
320
- }
321
- setError(`Download failed: ${e}`);
322
- throw e;
323
- }
324
- }, []);
325
- const handleUpload = useCallback(async (file, uploadObjectUrl) => {
326
- try {
327
- const targetUrl = uploadObjectUrl || objectUrl;
328
- const { federation, namespace } = await ensureMetadataRef.current(objectUrl);
329
- if (!federation || !namespace)
330
- return;
331
- const finalUploadUrl = targetUrl.endsWith("/")
332
- ? `${targetUrl}${file.name}`
333
- : `${targetUrl}/${file.name}`;
334
- await put(finalUploadUrl, file, federation, namespace);
335
- // Invalidate cache for the directory after successful upload
336
- invalidateObjectListCache(targetUrl);
337
- }
338
- catch (e) {
339
- if (e instanceof UnauthenticatedError) {
340
- setAuthorizationRequired(true);
341
- cleanExpiredTokens();
342
- }
343
- setError(`Upload failed: ${e}`);
344
- throw e;
345
- }
346
- }, [objectUrl, invalidateObjectListCache]);
347
- const handleLogin = useCallback(async () => {
348
- try {
349
- const { federation, namespace } = await ensureMetadataRef.current(objectUrl);
350
- if (!federation || !namespace)
351
- return;
352
- if (!enableAuth)
353
- return;
354
- await startAuthorizationCodeFlow(ensureCodeVerifier(), namespace, federation, { objectUrl });
355
- }
356
- catch (e) {
357
- setError(`Login failed: ${e}`);
358
- throw e;
359
- }
360
- }, [objectUrl, ensureCodeVerifier, enableAuth]);
361
- const contextValue = {
362
- loading: loading || authLoading,
363
- error,
364
- setError,
365
- authorizationRequired,
366
- authorized,
367
- objectUrl,
368
- federationHostname,
369
- objectPath,
370
- federation,
371
- namespace,
372
- collections,
373
- ensureMetadata,
374
- getObjectList,
375
- invalidateObjectListCache,
376
- handleDownload,
377
- handleUpload,
378
- handleLogin,
379
- setObjectUrl,
380
- };
381
- return (_jsx(PelicanClientContext.Provider, { value: contextValue, children: children }));
382
- }
383
- //# sourceMappingURL=PelicanClientProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PelicanClientProvider.js","sourceRoot":"","sources":["../../src/PelicanClientProvider/PelicanClientProvider.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export { PelicanClientProvider } from "./PelicanClientProvider";
2
- export type { PelicanClientProviderProps } from "./PelicanClientProvider";
3
- export { PelicanClientContext } from "./PelicanClientContext";
4
- export type { PelicanClientContextValue } from "./PelicanClientContext";
5
- export { usePelicanClient } from "./usePelicanClient";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/PelicanClientProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,4 +0,0 @@
1
- export { PelicanClientProvider } from "./PelicanClientProvider";
2
- export { PelicanClientContext } from "./PelicanClientContext";
3
- export { usePelicanClient } from "./usePelicanClient";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/PelicanClientProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,21 +0,0 @@
1
- import { PelicanClientContextValue } from "./PelicanClientContext";
2
- /**
3
- * Hook to access the Pelican client context.
4
- * Must be used within a PelicanClientProvider.
5
- *
6
- * @throws Error if used outside of PelicanClientProvider
7
- * @returns The Pelican client context value with state and actions
8
- *
9
- * @example
10
- * function MyComponent() {
11
- * const { handleDownload, loading, federation } = usePelicanClient();
12
- *
13
- * return (
14
- * <button onClick={() => handleDownload('pelican://...')}>
15
- * Download {loading ? '...' : ''}
16
- * </button>
17
- * );
18
- * }
19
- */
20
- export declare function usePelicanClient(): PelicanClientContextValue;
21
- //# sourceMappingURL=usePelicanClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePelicanClient.d.ts","sourceRoot":"","sources":["../../src/PelicanClientProvider/usePelicanClient.tsx"],"names":[],"mappings":"AACA,OAAO,EAAwB,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEzF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,IAAI,yBAAyB,CAW5D"}