Path: blob/main/src/vs/workbench/contrib/notebook/common/notebookService.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';6import { URI } from '../../../../base/common/uri.js';7import { NotebookProviderInfo } from './notebookProvider.js';8import { Event } from '../../../../base/common/event.js';9import { INotebookRendererInfo, NotebookData, TransientOptions, IOrderedMimeType, IOutputDto, INotebookContributionData, NotebookExtensionDescription, INotebookStaticPreloadInfo } from './notebookCommon.js';10import { NotebookTextModel } from './model/notebookTextModel.js';11import { CancellationToken } from '../../../../base/common/cancellation.js';12import { NotebookCellTextModel } from './model/notebookCellTextModel.js';13import { IDisposable } from '../../../../base/common/lifecycle.js';14import { VSBuffer, VSBufferReadableStream } from '../../../../base/common/buffer.js';15import { ConfigurationTarget } from '../../../../platform/configuration/common/configuration.js';16import { IFileStatWithMetadata, IWriteFileOptions } from '../../../../platform/files/common/files.js';17import { ITextQuery } from '../../../services/search/common/search.js';18import { NotebookPriorityInfo } from '../../search/common/search.js';19import { INotebookFileMatchNoModel } from '../../search/common/searchNotebookHelpers.js';20import { SnapshotContext } from '../../../services/workingCopy/common/fileWorkingCopy.js';212223export const INotebookService = createDecorator<INotebookService>('notebookService');2425export interface INotebookContentProvider {26options: TransientOptions;2728open(uri: URI, backupId: string | VSBuffer | undefined, untitledDocumentData: VSBuffer | undefined, token: CancellationToken): Promise<{ data: NotebookData; transientOptions: TransientOptions }>;29backup(uri: URI, token: CancellationToken): Promise<string | VSBuffer>;30}3132export interface INotebookSerializer {33options: TransientOptions;34dataToNotebook(data: VSBuffer): Promise<NotebookData>;35notebookToData(data: NotebookData): Promise<VSBuffer>;36save(uri: URI, versionId: number, options: IWriteFileOptions, token: CancellationToken): Promise<IFileStatWithMetadata>;37searchInNotebooks(textQuery: ITextQuery, token: CancellationToken, allPriorityInfo: Map<string, NotebookPriorityInfo[]>): Promise<{ results: INotebookFileMatchNoModel<URI>[]; limitHit: boolean }>;38}3940export interface INotebookRawData {41data: NotebookData;42transientOptions: TransientOptions;43}4445export class SimpleNotebookProviderInfo {46constructor(47readonly viewType: string,48readonly serializer: INotebookSerializer,49readonly extensionData: NotebookExtensionDescription50) { }51}5253export interface INotebookService {54readonly _serviceBrand: undefined;55canResolve(viewType: string): Promise<boolean>;5657readonly onAddViewType: Event<string>;58readonly onWillRemoveViewType: Event<string>;59readonly onDidChangeOutputRenderers: Event<void>;60readonly onWillAddNotebookDocument: Event<NotebookTextModel>;61readonly onDidAddNotebookDocument: Event<NotebookTextModel>;6263readonly onWillRemoveNotebookDocument: Event<NotebookTextModel>;64readonly onDidRemoveNotebookDocument: Event<NotebookTextModel>;6566registerNotebookSerializer(viewType: string, extensionData: NotebookExtensionDescription, serializer: INotebookSerializer): IDisposable;67withNotebookDataProvider(viewType: string): Promise<SimpleNotebookProviderInfo>;68tryGetDataProviderSync(viewType: string): SimpleNotebookProviderInfo | undefined;6970getOutputMimeTypeInfo(textModel: NotebookTextModel, kernelProvides: readonly string[] | undefined, output: IOutputDto): readonly IOrderedMimeType[];7172getViewTypeProvider(viewType: string): string | undefined;73getRendererInfo(id: string): INotebookRendererInfo | undefined;74getRenderers(): INotebookRendererInfo[];7576getStaticPreloads(viewType: string): Iterable<INotebookStaticPreloadInfo>;7778/** Updates the preferred renderer for the given mimetype in the workspace. */79updateMimePreferredRenderer(viewType: string, mimeType: string, rendererId: string, otherMimetypes: readonly string[]): void;80saveMimeDisplayOrder(target: ConfigurationTarget): void;8182createNotebookTextModel(viewType: string, uri: URI, stream?: VSBufferReadableStream): Promise<NotebookTextModel>;83createNotebookTextDocumentSnapshot(uri: URI, context: SnapshotContext, token: CancellationToken): Promise<VSBufferReadableStream>;84restoreNotebookTextModelFromSnapshot(uri: URI, viewType: string, snapshot: VSBufferReadableStream): Promise<NotebookTextModel>;85getNotebookTextModel(uri: URI): NotebookTextModel | undefined;86getNotebookTextModels(): Iterable<NotebookTextModel>;87listNotebookDocuments(): readonly NotebookTextModel[];8889/** Register a notebook type that we will handle. The notebook editor will be registered for notebook types contributed by extensions */90registerContributedNotebookType(viewType: string, data: INotebookContributionData): IDisposable;91getContributedNotebookType(viewType: string): NotebookProviderInfo | undefined;92getContributedNotebookTypes(resource?: URI): readonly NotebookProviderInfo[];93hasSupportedNotebooks(resource: URI): boolean;94getNotebookProviderResourceRoots(): URI[];9596setToCopy(items: NotebookCellTextModel[], isCopy: boolean): void;97getToCopy(): { items: NotebookCellTextModel[]; isCopy: boolean } | undefined;98clearEditorCache(): void;99}100101102