studiocms
Version:
Astro Native CMS for AstroDB. Built from the ground up by the Astro community.
44 lines (43 loc) • 2.33 kB
TypeScript
import { Effect } from '../../../effect.js';
import { SDKCoreError } from '../errors.js';
import type { FolderListItem, FolderNode, tsPageFolderSelect } from '../types/index.js';
import { AstroDB } from './db.js';
declare const SDKCore_FolderTree_base: Effect.Service.Class<SDKCore_FolderTree, "studiocms/sdk/SDKCore_FolderTree", {
readonly effect: Effect.Effect<{
generateFolderTree: (folders: tsPageFolderSelect[]) => Effect.Effect<FolderNode[], SDKCoreError, never>;
getFullPath: (tree: FolderNode[], path: string[]) => Effect.Effect<string[], SDKCoreError, never>;
findNodeByPath: (tree: FolderNode[], path: string[]) => Effect.Effect<FolderNode | null, SDKCoreError, never>;
findNodesAlongPath: (tree: FolderNode[], path: string[]) => Effect.Effect<FolderNode[], SDKCoreError, never>;
findNodesAlongPathToId: (tree: FolderNode[], id: string) => Effect.Effect<FolderNode[], SDKCoreError, never>;
findNodeById: (tree: FolderNode[], id: string) => Effect.Effect<FolderNode | null, SDKCoreError, never>;
addPageToFolderTree: (tree: FolderNode[], folderId: string, newPage: FolderNode) => Effect.Effect<FolderNode[], SDKCoreError, never>;
buildFolderTree: Effect.Effect<FolderNode[], import("@withstudiocms/effect/drizzle").LibSQLClientError | SDKCoreError, never>;
getAvailableFolders: Effect.Effect<FolderListItem[], import("@withstudiocms/effect/drizzle").LibSQLClientError, never>;
}, never, AstroDB>;
readonly dependencies: readonly [import("effect/Layer").Layer<AstroDB, never, never>];
}>;
/**
* Service class for managing and manipulating folder trees in the StudioCMS SDK.
*
* Provides methods to:
* - Build a folder tree structure from raw folder data.
* - Find nodes and paths within the folder tree by name or ID.
* - Add new pages to the folder tree.
* - Retrieve folder structures and lists from the database.
*
* @remarks
* All methods are effectful and return `Effect.Effect` instances for error handling and composability.
*
* @example
* ```typescript
* const folderTreeService = SDKCore_FolderTree;
* const tree = yield* folderTreeService.buildFolderTree;
* ```
*
* @see FolderNode
* @see SDKCoreError
* @see Effect
*/
export declare class SDKCore_FolderTree extends SDKCore_FolderTree_base {
}
export {};