import type { ComponentData, PageData, PageExtras } from '@dosgato/templating'; import { BaseService, ValidatedResponse, PaginationResponse } from '@txstate-mws/graphql-server'; import { ManyJoinedLoader } from 'dataloader-factory'; import { DateTime } from 'luxon'; import type { Queryable } from 'mysql2-async'; import { DosGatoService, type Page, type PageFilter, PageResponse, PagesResponse, type TemplateFilter, type CreatePageExtras, type Template, type PageRuleGrants, type DGRestrictOperations, type AssetFilter, type AssetFolderFilter, type ScheduledPublish } from '../internal.js'; export declare const pagesByTagIdLoader: ManyJoinedLoader; export declare class PageServiceInternal extends BaseService { find(filter: PageFilter, pageInfo?: PaginationResponse): Promise; findById(id: string): Promise; findByIds(ids: string[]): Promise; findByInternalId(id: number): Promise; findByPagetreeId(id: string, filter?: PageFilter): Promise; findByTemplate(key: string, filter?: PageFilter): Promise; findByTag(tagId: string, filter?: PageFilter): Promise; getPageChildren(page: Page, recursive?: boolean, filter?: PageFilter): Promise; getPageAncestors(page: Page): Promise; getRootPage(page: Page): Promise; /** * @deprecated use page.resolvedPath instead */ getPath(page: Page): string; getData(page: Page, version?: number, published?: boolean, toSchemaVersion?: DateTime): Promise; reindex(page: Page, tdb?: Queryable): Promise; static reindexAll(filter?: PageFilter, batchSize?: number): Promise; pageExtras(page: Page): PageExtras; processFilters(filter: PageFilter): Promise; } export declare class PageService extends DosGatoService { raw: PageServiceInternal; postFilter(pages: Page[], filter?: PageFilter, pageInfo?: PaginationResponse): Page[]; find(filter: PageFilter, pageInfo?: PaginationResponse): Promise; findById(id: string): Promise; findByIds(ids: string[]): Promise; findByInternalId(internalId: number): Promise; findByPagetreeId(id: string, filter?: PageFilter): Promise; findByTemplate(key: string, filter?: PageFilter): Promise; findByTag(tagId: string, filter?: PageFilter): Promise; getPageChildren(page: Page, recursive?: boolean, filter?: PageFilter): Promise; getPageAncestors(page: Page): Promise; getApprovedTemplates(page: Page, filter?: TemplateFilter): Promise; getRootPage(page: Page): Promise; getPath(page: Page): string; getTags(page: Page, published?: boolean): Promise; getReferencedAssets(page: Page, published?: boolean, filter?: AssetFilter): Promise; getReferencedAssetFolders(page: Page, published?: boolean, filter?: AssetFolderFilter): Promise; getData(page: Page, version?: number, published?: boolean, toSchemaVersion?: DateTime): Promise; hasPathBasedPageRulesForSite(siteId: string): any; mayView(page: Page): boolean; mayViewIndividual(page: Page): boolean; mayViewForEdit(page: Page): boolean; mayViewForAudit(page: Page): boolean; mayViewLatest(page: Page): boolean; mayViewManagerUI(): boolean; /** @deprecated use page.published */ isPublished(page: Page): boolean; isLive(page: Page): Promise; isOrphanedOrDeleted(page: Page, acceptPendingDelete?: boolean): boolean; checkPerm(page: Page, perm: keyof PageRuleGrants, acceptPendingDelete: boolean): boolean; opRestricted(page: Page, operation: DGRestrictOperations): boolean | undefined; mayCreate(page: Page): boolean; mayUpdate(page: Page): boolean; mayPublish(page: Page, parentBeingPublished?: boolean): Promise; mayUnpublish(page: Page, parentBeingUnpublished?: boolean): Promise; mayMove(page: Page): boolean; mayDelete(page: Page): boolean; mayUndelete(page: Page): boolean; maySchedulePublish(page: Page, excludeScheduleId?: number): Promise; mayScheduleUnpublish(page: Page, excludeScheduleId?: number): Promise; mayScheduleEdit(page: Page): boolean; /** * MUTATIONS */ movePages(dataIds: string[], targetId: string, above?: boolean): Promise; copyPages(dataIds: string[], targetId: string, above?: boolean, includeChildren?: boolean): Promise; validatePageTemplates(data: PageData, placement: { page?: Page; parent?: Page; }): Promise; checkAvailableTemplates(data: ComponentData, templateByKey: Record): void; validatePageData(data: PageData, extras: PageExtras): Promise; createPage(name: string, data: PageData, targetId: string, above?: boolean, validateOnly?: boolean, extra?: CreatePageExtras): Promise; updatePage(dataId: string, dataVersion: number, data: PageData, comment?: string, validateOnly?: boolean): Promise; restorePage(dataId: string, restoreVersion: number, validateOnly?: boolean): Promise; checkLatestVersion(dataId: string, dataVersion: number): Promise; updatePageProperties(dataId: string, dataVersion: number, editedSchemaVersion: DateTime, data: ComponentData, comment?: string, validateOnly?: boolean): Promise; updateComponent(dataId: string, dataVersion: number, editedSchemaVersion: DateTime, path: string, data: ComponentData, comment?: string, validateOnly?: boolean): Promise; addComponent(dataId: string, dataVersion: number, editedSchemaVersion: DateTime, path: string, data: ComponentData, isCopy?: boolean, comment?: string, validateOnly?: boolean, addToTop?: boolean): Promise; moveComponent(dataId: string, dataVersion: number, editedSchemaVersion: DateTime, fromPath: string, toPath: string, comment?: string): Promise; deleteComponent(dataId: string, dataVersion: number, editedSchemaVersion: DateTime, path: string, comment?: string): Promise; changePageTemplate(dataId: string, templateKey: string, dataVersion?: number, comment?: string, validateOnly?: boolean): Promise; renamePage(dataId: string, name: string, validateOnly?: boolean): Promise; deletePages(dataIds: string[]): Promise; publishPageDeletions(dataIds: string[]): Promise; undeletePages(dataIds: string[], includeChildren?: boolean): Promise; publishPages(dataIds: string[], includeChildren?: boolean, parentSchedule?: ScheduledPublish): Promise; unpublishPages(dataIds: string[], parentSchedule?: ScheduledPublish): Promise; /** * Mutation Helpers */ protected resolveTarget(targetId: string, above?: boolean): Promise<{ parent: Page; aboveTarget: Page | undefined; }>; }