import { Catalog } from "../search/Catalog"; import type { IArcGISContext } from "../types/IArcGISContext"; import { HubItemEntity } from "../core/HubItemEntity"; import { IEditorConfig } from "../core/schemas/types"; import { IWithEditorBehavior } from "../core/behaviors/IWithEditorBehavior"; import { IEntityEditorContext } from "../core/types/HubEntityEditor"; import { SiteEditorType } from "./_internal/siteEditorTypes"; import { IVersionMetadata } from "../versioning/types/IVersionMetadata"; import { IVersion } from "../versioning/types/IVersion"; import { ICreateVersionOptions } from "../versioning/types/ICreateVersionOptions"; import { IHubSite, IHubSiteEditor } from "../core/types/IHubSite"; import { IWithStoreBehavior } from "../core/behaviors/IWithStoreBehavior"; import { IWithPermissionBehavior } from "../core/behaviors/IWithPermissionBehavior"; import { IWithCatalogBehavior } from "../core/behaviors/IWithCatalogBehavior"; import { IWithSharingBehavior } from "../core/behaviors/IWithSharingBehavior"; import { IWithVersioningBehavior } from "../core/behaviors/IWithVersioningBehavior"; import { IContainsResponse, IDeepCatalogInfo } from "../search/types/types"; /** * Hub Site Class * NOTE: This is a minimal implementation. Create operations are not supported at this time */ export declare class HubSite extends HubItemEntity implements IWithStoreBehavior, IWithPermissionBehavior, IWithCatalogBehavior, IWithSharingBehavior, IWithVersioningBehavior, IWithEditorBehavior { private _catalog; private _catalogCache; /** * Private constructor so we don't have `new` all over the place. Allows for * more flexibility in how we create the HubSiteManager over time. * @param context */ private constructor(); /** * Catalog instance for this site. Note: Do not hold direct references to this object; always access it from the site. * @returns */ get catalog(): Catalog; /** * Create an instance from an IHubSite object * @param json - JSON object to create a HubSite from * @param context - ArcGIS context * @returns */ static fromJson(json: Partial, context: IArcGISContext): HubSite; /** * * NOT IMPLEMENTED YET: Create a new HubSite, returning a HubSite instance. * By default, this does not save the site to the backing store. * @param partialSite * @param context * @returns */ static create(partialSite: Partial, context: IArcGISContext, save?: boolean): Promise; /** * Fetch a Site from the backing store and return a HubSite instance. * @param identifier - Identifier of the site to load * @param context * @returns */ static fetch(identifier: string, context: IArcGISContext): Promise; /** * Ensure the Site has the baseline set of properties * that are required for a HubSite. * @param partialSite * @param context * @returns */ private static applyDefaults; /** * Apply a new state to the instance * @param changes */ update(changes: Partial): void; /** * Save the HubSite to the backing store. * Currently Sites are stored as Items in Portal * @returns */ save(): Promise; /** * Delete the HubSite from the store * set a flag to indicate that it is destroyed * @returns */ delete(): Promise; /** * Check if a particular entity is contained is this HubSite. * * By default, this checks the Site catalog for the entity, by executing a search. * * Transitive containment is supported by passing in an array of `IDeepCatalogInfo` * objects, in the order of the containment hierarchy. * * Scenario: * - Site `00a`'s Catalog contains Initiative `00b`. * - Initiative `00b`'s Catalog contains Site `00c`. * - Site `00c`'s catalog contains Dataset `00d`. * * Check if Dataset `00d` can be displayed in Site `00a`, pass in the following * ```js * [ * {id: '00c', entityType:"item"}, // site * {id: '00b', entityType:"item"}, // initiative * ] * ``` * The site catalog and id will be added in automatically. * * If you already have the `IHubCatalog` for the site or initiative, you can * pass that in as well, and it will save a request. * * This function will also build a cache of the catalogs so subsequent calls * will be faster. * @param identifier * @param hierarchy * @returns */ contains(identifier: string, hierarchy?: IDeepCatalogInfo[]): Promise; /** * Gets all the versions of the site * @returns */ searchVersions(): Promise; /** * Gets the specified version of the site * @param versionId * @returns */ getVersion(versionId: string): Promise; /** * Creates a new version of the site * @param options * @returns */ createVersion(options?: ICreateVersionOptions): Promise; /** * Updates the specified version of the site * @param version * @returns */ updateVersion(version: IVersion): Promise; /** * Updates the specified version's metadata * @param version * @returns */ updateVersionMetadata(version: IVersionMetadata): Promise; /** * Deletes the specified version of the entity * @returns */ deleteVersion(versionId: string): Promise<{ success: boolean; }>; getEditorConfig(i18nScope: string, type: SiteEditorType): Promise; /** * Return the project as an editor object * @param editorContext * @returns */ toEditor(_editorContext?: IEntityEditorContext, include?: string[]): Promise; /** * Load the project from the editor object * @param editor * @returns */ fromEditor(editor: IHubSiteEditor): Promise; }