/** * This is written manually & should be kept up to date when the API changes */ export interface SpeckleObject extends Record { totalChildrenCount?: number } type Logger = (...args: unknown[]) => void export type ProgressStage = 'download' | 'construction' /** * ObjectLoader class */ class ObjectLoader { constructor(params: { serverUrl: string streamId: string objectId: string token?: string options?: Partial<{ /** * Whether IndexedDB caching is enabled (disabled by default in node envs where IndexedDB is not available) */ enableCaching: boolean fullyTraverseArrays: boolean excludeProps: Array /** * Override fetch implementation (necessary in node environment) */ fetch: GlobalFetch['fetch'] /** * Optionally provide alternative for console.log */ customLogger: Logger /** * Optionally provide alternative for console.warn */ customWarner: Logger }> }) static createFromObjects(objects: object[]): ObjectLoader static createFromJSON(input: string): ObjectLoader async getRootObject(): Promise async getTotalObjectCount(): Promise async getAndConstructObject( onProgress: (e: { stage: ProgressStage; current: number; total: number }) => void ): SpeckleObject | SpeckleObject[] async *getObjectIterator(): AsyncGenerator async getObject(id: string): Promise> dispose(): void } export default ObjectLoader