import { SolidLeafUri } from "../types.mjs"; import { DeleteSuccess } from "../requester/results/success/DeleteSuccess.mjs"; import { CheckRootResultError } from "../requester/requests/checkRootContainer.mjs"; import { BinaryReadSuccess, DataReadSuccess } from "../requester/results/success/SolidReadSuccess.mjs"; import { ReadLeafResult } from "../requester/requests/readResource.mjs"; import { NoRootContainerError } from "../requester/results/error/NoRootContainerError.mjs"; import { UpdateResult } from "../requester/requests/updateDataResource.mjs"; import { SharedStatuses, SolidResource } from "./SolidResource.mjs"; import { SolidContainer } from "./SolidContainer.mjs"; import { DeleteResult } from "../requester/requests/deleteResource.mjs"; import { LeafCreateAndOverwriteResult, LeafCreateIfAbsentResult } from "../requester/requests/createDataResource.mjs"; import { LeafBatchedRequester } from "../requester/LeafBatchedRequester.mjs"; import { SolidConnectedPlugin } from "../SolidConnectedPlugin.mjs"; import { AbsentReadSuccess, ConnectedContext, ResourceSuccess } from "@ldo/connected"; import { DatasetChanges } from "@ldo/rdf-utils"; import { Quad } from "@rdfjs/types"; //#region src/resources/SolidLeaf.d.ts /** * Represents the current status of a specific Leaf on a Pod as known by LDO. * * @example * ```typescript * const leaf = solidLdoDataset * .getResource("https://example.com/container/resource.ttl"); * ``` */ declare class SolidLeaf extends SolidResource { /** * The URI of the leaf */ readonly uri: SolidLeafUri; /** * @internal * Batched Requester for the Leaf */ protected requester: LeafBatchedRequester; /** * Indicates that this resource is a leaf resource */ readonly type: "SolidLeaf"; /** * Indicates that this resource is not an error */ readonly isError: false; /** * The status of the last request made for this leaf */ status: SharedStatuses | ReadLeafResult | LeafCreateAndOverwriteResult | LeafCreateIfAbsentResult | UpdateResult; /** * @internal * The raw binary data if this leaf is a Binary resource */ protected binaryData: { blob: Blob; mimeType: string; } | undefined; /** * @param uri - The uri of the leaf * @param context - SolidLdoDatasetContext for the parent dataset */ constructor(uri: SolidLeafUri, context: ConnectedContext); /** * =========================================================================== * GETTERS * =========================================================================== */ /** * Checks to see if the resource is currently uploading data * @returns true if the current resource is uploading * * @example * ```typescript * leaf.uploadAndOverwrite(new Blob("some text"), "text/txt").then(() => { * // Logs "false" * console.log(leaf.isUploading()) * }); * // Logs "true" * console.log(leaf.isUploading()); * ``` */ isUploading(): boolean; /** * Checks to see if the resource is currently updating data * @returns true if the current resource is updating * * @example * ```typescript * leaf.update(datasetChanges).then(() => { * // Logs "false" * console.log(leaf.isUpdating()) * }); * // Logs "true" * console.log(leaf.isUpdating()); * ``` */ isUpdating(): boolean; /** * If this resource is a binary resource, returns the mime type * @returns The mime type if this resource is a binary resource, undefined * otherwise * * @example * ```typescript * // Logs "text/txt" * console.log(leaf.getMimeType()); * ``` */ getMimeType(): string | undefined; /** * If this resource is a binary resource, returns the Blob * @returns The Blob if this resource is a binary resource, undefined * otherwise * * @example * ```typescript * // Logs "some text." * console.log(leaf.getBlob()?.toString()); * ``` */ getBlob(): Blob | undefined; /** * Check if this resource is a binary resource * @returns True if this resource is a binary resource, false if not, * undefined if unknown * * @example * ```typescript * // Logs "undefined" * console.log(leaf.isBinary()); * const result = await leaf.read(); * if (!result.isError) { * // Logs "true" * console.log(leaf.isBinary()); * } * ``` */ isBinary(): boolean | undefined; /** * Check if this resource is a data (RDF) resource * @returns True if this resource is a data resource, false if not, undefined * if unknown * * @example * ```typescript * // Logs "undefined" * console.log(leaf.isDataResource()); * const result = await leaf.read(); * if (!result.isError) { * // Logs "true" * console.log(leaf.isDataResource()); * } * ``` */ isDataResource(): boolean | undefined; /** * =========================================================================== * READ METHODS * =========================================================================== */ /** * @internal * A helper method updates this leaf's internal state upon read success * @param result - the result of the read success */ protected updateWithReadSuccess(result: BinaryReadSuccess | DataReadSuccess | AbsentReadSuccess): void; /** * Reads the leaf by making a request * @returns A read result * * @example * ```typescript * const result = await leaf.read(); * if (result.isError) { * // Do something * } * ``` */ read(): Promise; /** * @internal * Converts the current state of this leaf to a readResult * @returns a ReadLeafResult */ protected toReadResult(): ReadLeafResult; /** * Makes a request to read this leaf if it hasn't been fetched yet. If it has, * return the cached informtation * @returns a ReadLeafResult * * @example * ```typescript * const result = await leaf.read(); * if (!result.isError) { * // Will execute without making a request * const result2 = await leaf.readIfUnfetched(); * } * ``` */ readIfUnfetched(): Promise; /** * =========================================================================== * PARENT CONTAINER METHODS * =========================================================================== */ /** * Gets the parent container for this leaf by making a request * @returns The parent container * * @example * ```typescript * const leaf = solidLdoDataset * .getResource("https://example.com/container/resource.ttl"); * const leafParent = await leaf.getParentContainer(); * if (!leafParent.isError) { * // Logs "https://example.com/container/" * console.log(leafParent.uri); * } * ``` */ getParentContainer(): Promise; /** * Gets the root container for this leaf. * @returns The root container for this leaf * * @example * Suppose the root container is at `https://example.com/` * * ```typescript * const leaf = ldoSolidDataset * .getResource("https://example.com/container/resource.ttl"); * const rootContainer = await leaf.getRootContainerByTraversal(); * if (!rootContainer.isError) { * // logs "https://example.com/" * console.log(rootContainer.uri); * } * ``` */ getRootContainerByTraversal(): Promise>; /** * =========================================================================== * DELETE METHODS * =========================================================================== */ /** * @internal * A helper method updates this leaf's internal state upon delete success * @param result - the result of the delete success */ updateWithDeleteSuccess(result: DeleteSuccess): void; /** * Deletes this leaf and all its contents * @returns A Delete result for this leaf * * ```typescript * const result = await container.leaf(); * if (!result.isError) { * // Do something * } * ``` */ delete(): Promise>; /** * @internal */ protected handleDelete(): Promise>; /** * =========================================================================== * CREATE METHODS * =========================================================================== */ /** * A helper method updates this leaf's internal state upon create success * @param _result - the result of the create success */ protected updateWithCreateSuccess(_result: ResourceSuccess): void; /** * Creates a leaf at this URI and overwrites any that already exists * @returns LeafCreateAndOverwriteResult * * @example * ```typescript * const result = await leaf.createAndOverwrite(); * if (!result.isError) { * // Do something * } * ``` */ createAndOverwrite(): Promise; /** * Creates a leaf at this URI if the leaf doesn't already exist * @returns LeafCreateIfAbsentResult * * @example * ```typescript * const result = await leaf.createIfAbsent(); * if (!result.isError) { * // Do something * } * ``` */ createIfAbsent(): Promise; /** * =========================================================================== * UPLOAD METHODS * =========================================================================== */ /** * Uploads a binary resource to this URI. If there is already a resource * present at this URI, it will be overwritten * * @param blob - the Blob of the binary * @param mimeType - the MimeType of the binary * @returns A LeafCreateAndOverwriteResult * * @example * ```typescript * const result = await leaf.uploadAndOverwrite( * new Blob("some text."), * "text/txt", * ); * if (!result.isError) { * // Do something * } * ``` */ uploadAndOverwrite(blob: Blob, mimeType: string): Promise; /** * Uploads a binary resource to this URI tf there not is already a resource * present at this URI. * * @param blob - the Blob of the binary * @param mimeType - the MimeType of the binary * @returns A LeafCreateIfAbsentResult * * @example * ```typescript * const result = await leaf.uploadIfAbsent( * new Blob("some text."), * "text/txt", * ); * if (!result.isError) { * // Do something * } * ``` */ uploadIfAbsent(blob: Blob, mimeType: string): Promise; /** * =========================================================================== * UPDATE METHODS * =========================================================================== */ /** * Updates a data resource with the changes provided * @param changes - Dataset changes that will be applied to the resoruce * @returns An UpdateResult * * @example * ```typescript * import { * updateDataResource, * transactionChanges, * changeData, * createSolidLdoDataset, * } from "@ldo/solid"; * * //... * * // Get a Linked Data Object * const profile = solidLdoDataset * .usingType(ProfileShapeType) * .fromSubject("https://example.com/profile#me"); * cosnt resource = solidLdoDataset * .getResource("https://example.com/profile"); * // Create a transaction to change data * const cProfile = changeData(profile, resource); * cProfile.name = "John Doe"; * // Get data in "DatasetChanges" form * const datasetChanges = transactionChanges(someLinkedDataObject); * // Use "update" to apply the changes * cosnt result = resource.update(datasetChanges); * ``` */ update(changes: DatasetChanges): Promise>; } //#endregion export { SolidLeaf }; //# sourceMappingURL=SolidLeaf.d.mts.map