mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-12 02:58:31 -05:00
* Fix initial build breaks from 1.67 merge (#2514) * Update yarn lock files * Update build scripts * Fix tsconfig * Build breaks * WIP * Update yarn lock files * Misc breaks * Updates to package.json * Breaks * Update yarn * Fix breaks * Breaks * Build breaks * Breaks * Breaks * Breaks * Breaks * Breaks * Missing file * Breaks * Breaks * Breaks * Breaks * Breaks * Fix several runtime breaks (#2515) * Missing files * Runtime breaks * Fix proxy ordering issue * Remove commented code * Fix breaks with opening query editor * Fix post merge break * Updates related to setup build and other breaks (#2516) * Fix bundle build issues * Update distro * Fix distro merge and update build JS files * Disable pipeline steps * Remove stats call * Update license name * Make new RPM dependencies a warning * Fix extension manager version checks * Update JS file * Fix a few runtime breaks * Fixes * Fix runtime issues * Fix build breaks * Update notebook tests (part 1) * Fix broken tests * Linting errors * Fix hygiene * Disable lint rules * Bump distro * Turn off smoke tests * Disable integration tests * Remove failing "activate" test * Remove failed test assertion * Disable other broken test * Disable query history tests * Disable extension unit tests * Disable failing tasks
62 lines
2.1 KiB
TypeScript
62 lines
2.1 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import * as vscode from 'vscode';
|
|
import { Disposable } from '../util/dispose';
|
|
import { Lazy, lazy } from '../util/lazy';
|
|
import { MdWorkspaceContents, SkinnyTextDocument } from '../workspaceContents';
|
|
|
|
/**
|
|
* Cache of information for markdown files in the workspace.
|
|
*/
|
|
export class MdWorkspaceCache<T> extends Disposable {
|
|
|
|
private readonly _cache = new Map<string, Lazy<Promise<T>>>();
|
|
private _hasPopulatedCache = false;
|
|
|
|
public constructor(
|
|
private readonly workspaceContents: MdWorkspaceContents,
|
|
private readonly getValue: (document: SkinnyTextDocument) => Promise<T>,
|
|
) {
|
|
super();
|
|
}
|
|
|
|
public async getAll(): Promise<T[]> {
|
|
if (!this._hasPopulatedCache) {
|
|
await this.populateCache();
|
|
this._hasPopulatedCache = true;
|
|
|
|
this.workspaceContents.onDidChangeMarkdownDocument(this.onDidChangeDocument, this, this._disposables);
|
|
this.workspaceContents.onDidCreateMarkdownDocument(this.onDidChangeDocument, this, this._disposables);
|
|
this.workspaceContents.onDidDeleteMarkdownDocument(this.onDidDeleteDocument, this, this._disposables);
|
|
}
|
|
|
|
return Promise.all(Array.from(this._cache.values(), x => x.value));
|
|
}
|
|
|
|
private async populateCache(): Promise<void> {
|
|
const markdownDocumentUris = await this.workspaceContents.getAllMarkdownDocuments();
|
|
for (const document of markdownDocumentUris) {
|
|
this.update(document);
|
|
}
|
|
}
|
|
|
|
private key(resource: vscode.Uri): string {
|
|
return resource.toString();
|
|
}
|
|
|
|
private update(document: SkinnyTextDocument): void {
|
|
this._cache.set(this.key(document.uri), lazy(() => this.getValue(document)));
|
|
}
|
|
|
|
private onDidChangeDocument(document: SkinnyTextDocument) {
|
|
this.update(document);
|
|
}
|
|
|
|
private onDidDeleteDocument(resource: vscode.Uri) {
|
|
this._cache.delete(this.key(resource));
|
|
}
|
|
}
|