@inrupt/solid-client
Version:
Make your web apps work with Solid Pods.
168 lines (167 loc) • 9.39 kB
TypeScript
import type { UrlString, WebId, WithServerResourceInfo } from "../interfaces";
import type { WithResourceAcl } from "../acl/acl";
interface Access {
read: boolean;
append: boolean;
write: boolean;
controlRead: boolean;
controlWrite: boolean;
}
export type WacAccess = ({
controlRead: true;
controlWrite: true;
} | {
controlRead: false;
controlWrite: false;
}) & {
read: boolean;
append: boolean;
write: boolean;
};
/**
* For a given Resource, look up its metadata, and read the Access permissions
* granted to the given Agent.
*
* Note that this only lists permissions granted to the given Agent individually,
* and will not exhaustively list modes the given Agent may have access to because
* they apply to everyone, or because they apply to the Agent through a group for
* instance.
*
* @param resource The URL of the Resource for which we want to list Access
* @param agent The Agent for which the Access is granted
* @param options Optional parameter `options.fetch`: An alternative `fetch` function to make the HTTP request, compatible with the browser-native [fetch API](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/fetch#parameters).
* @returns What Access modes are granted to the given Agent explicitly, or null if it could not be determined.
*/
export declare function getAgentAccess(resource: WithServerResourceInfo, agent: WebId, options?: {
fetch?: typeof fetch;
}): Promise<Access | null>;
/**
* For a given Resource, look up its metadata, and read the Access permissions
* granted to the given Group.
*
* Note that this only lists permissions granted to the given Group individually,
* and will not exhaustively list modes the given Group may have access to because
* they apply to everyone, or because they apply to the Group through another
* Group that may contain it for instance.
*
* @param resource The URL of the Resource for which we want to list Access
* @param group The Group for which the Access is granted
* @param options Optional parameter `options.fetch`: An alternative `fetch` function to make the HTTP request, compatible with the browser-native [fetch API](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/fetch#parameters).
* @returns What Access modes are granted to the given Group explicitly, or null if it could not be determined.
*/
export declare function getGroupAccess(resource: WithServerResourceInfo, group: UrlString, options?: {
fetch?: typeof fetch;
}): Promise<Access | null>;
/**
* For a given Resource, look up its metadata, and read the Access permissions
* granted to everyone.
*
* Note that this only lists permissions explicitly granted to everyone as a whole,
* and will not exhaustively list modes any individual Agent or Group may have
* access to because they specifically apply to them only.
*
* @param resource The URL of the Resource for which we want to list public Access
* @param options Optional parameter `options.fetch`: An alternative `fetch` function to make the HTTP request, compatible with the browser-native [fetch API](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/fetch#parameters).
* @returns What Access modes are granted to the everyone explicitly, or null if it could not be determined.
*/
export declare function getPublicAccess(resource: WithServerResourceInfo, options?: {
fetch?: typeof fetch;
}): Promise<Access | null>;
/**
* For a given Resource, look up its metadata, and read the Access permissions
* granted explicitly to each individual Agent.
*
* Note that this only lists permissions granted to each Agent individually,
* and will not exhaustively list modes any Agent may have access to because
* they apply to everyone, or because they apply to an Agent through a group for
* instance.
*
* @param resource The URL of the Resource for which we want to list Agents Access
* @param options Optional parameter `options.fetch`: An alternative `fetch` function to make the HTTP request, compatible with the browser-native [fetch API](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/fetch#parameters).
* @returns A map of Agent WebIDs and the access granted to them, or null if it could not be determined.
*/
export declare function getAgentAccessAll(resource: WithServerResourceInfo, options?: {
fetch?: typeof fetch;
}): Promise<Record<WebId, WacAccess> | null>;
/**
* For a given Resource, look up its metadata, and read the Access permissions
* granted explicitly to each individual Group.
*
* Note that this only lists permissions granted to each Group individually,
* and will not exhaustively list modes any Group may have access to because
* they apply individually to all of the Agents in the Group, or to everyone
* for instance.
*
* @param resource The URL of the Resource for which we want to list Agents Access
* @param options Optional parameter `options.fetch`: An alternative `fetch` function to make the HTTP request, compatible with the browser-native [fetch API](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/fetch#parameters).
* @returns A map of Group URLs and the access granted to them, or null if it could not be determined.
*/
export declare function getGroupAccessAll(resource: WithServerResourceInfo, options?: {
fetch?: typeof fetch;
}): Promise<Record<WebId, WacAccess> | null>;
/**
* Set the Access modes for a given Agent to a given Resource.
*
* Important note: if the target resource did not have a Resource ACL, and its
* Access was regulated by its Fallback ACL, said Fallback ACL is copied to create
* a new Resource ACL. This has the side effect that the next time the Fallback
* ACL is updated, the changes _will not impact_ the target resource.
*
* If the target Resource's Access mode cannot be determined, e.g. the user does
* not have Read and Write access to the target Resource's ACL, or to its
* fallback ACL if it does not have a Resource ACL, then `null` is returned.
*
* @param resource The Resource for which Access is being set
* @param agent The Agent for whom Access is being set
* @param access The Access being set
* @param options Optional parameter `options.fetch`: An alternative `fetch` function to make the HTTP request, compatible with the browser-native [fetch API](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/fetch#parameters).
* @returns The Resource, with its ACL updated, or null if the new Access could not
* be set.
*/
export declare function setAgentResourceAccess<T extends WithServerResourceInfo>(resource: T, agent: WebId, access: Partial<WacAccess>, options?: {
fetch?: typeof fetch;
}): Promise<(T & WithResourceAcl) | null>;
/**
* Set the Access modes for a given Group to a given Resource.
*
* Important note: if the target resource did not have a Resource ACL, and its
* Access was regulated by its Fallback ACL, said Fallback ACL is copied to create
* a new Resource ACL. This has the side effect that the next time the Fallback
* ACL is updated, the changes _will not impact_ the target resource.
*
* If the target Resource's Access mode cannot be determined, e.g. the user does
* not have Read and Write access to the target Resource's ACL, or to its
* fallback ACL if it does not have a Resource ACL, then `null` is returned.
*
* @param resource The Resource for which Access is being set
* @param agent The Group for which Access is being set
* @param access The Access being set
* @param options Optional parameter `options.fetch`: An alternative `fetch` function to make the HTTP request, compatible with the browser-native [fetch API](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/fetch#parameters).
* @returns The Resource, with its ACL updated, or null if the new Access could not
* be set.
*/
export declare function setGroupResourceAccess<T extends WithServerResourceInfo>(resource: T, group: UrlString, access: Partial<WacAccess>, options?: {
fetch?: typeof fetch;
}): Promise<(T & WithResourceAcl) | null>;
/**
* Set the Access modes for everyone to a given Resource.
*
* Important note: if the target resource did not have a Resource ACL, and its
* Access was regulated by its Fallback ACL, said Fallback ACL is copied to create
* a new Resource ACL. This has the side effect that the next time the Fallback
* ACL is updated, the changes _will not impact_ the target resource.
*
* If the target Resource's Access mode cannot be determined, e.g. the user does
* not have Read and Write access to the target Resource's ACL, or to its
* fallback ACL if it does not have a Resource ACL, then `null` is returned.
*
* @param resource The Resource for which Access is being set
* @param access The Access being set
* @param options Optional parameter `options.fetch`: An alternative `fetch` function to make the HTTP request, compatible with the browser-native [fetch API](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/fetch#parameters).
* @returns The Resource, with its ACL updated, or null if the new Access could not
* be set.
*/
export declare function setPublicResourceAccess<T extends WithServerResourceInfo>(resource: T, access: Partial<WacAccess>, options?: {
fetch?: typeof fetch;
}): Promise<(T & WithResourceAcl) | null>;
export {};