HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/.vscode/extensions/mhutchie.git-graph-1.30.0/out/diffDocProvider.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeDiffDocUri = exports.encodeDiffDocUri = exports.DiffDocProvider = void 0;
const path = require("path");
const vscode = require("vscode");
const utils_1 = require("./utils");
const disposable_1 = require("./utils/disposable");
class DiffDocProvider extends disposable_1.Disposable {
    constructor(dataSource) {
        super();
        this.docs = new Map();
        this.onDidChangeEventEmitter = new vscode.EventEmitter();
        this.dataSource = dataSource;
        this.registerDisposables(vscode.workspace.onDidCloseTextDocument((doc) => this.docs.delete(doc.uri.toString())), this.onDidChangeEventEmitter, disposable_1.toDisposable(() => this.docs.clear()));
    }
    get onDidChange() {
        return this.onDidChangeEventEmitter.event;
    }
    provideTextDocumentContent(uri) {
        const document = this.docs.get(uri.toString());
        if (document) {
            return document.value;
        }
        const request = decodeDiffDocUri(uri);
        if (!request.exists) {
            return '';
        }
        return this.dataSource.getCommitFile(request.repo, request.commit, request.filePath).then((contents) => {
            const document = new DiffDocument(contents);
            this.docs.set(uri.toString(), document);
            return document.value;
        }, (errorMessage) => {
            utils_1.showErrorMessage('Unable to retrieve file: ' + errorMessage);
            return '';
        });
    }
}
exports.DiffDocProvider = DiffDocProvider;
DiffDocProvider.scheme = 'git-graph';
class DiffDocument {
    constructor(body) {
        this.body = body;
    }
    get value() {
        return this.body;
    }
}
function encodeDiffDocUri(repo, filePath, commit, type, diffSide) {
    if (commit === utils_1.UNCOMMITTED && type !== "D") {
        return vscode.Uri.file(path.join(repo, filePath));
    }
    const fileDoesNotExist = (diffSide === 0 && type === "A") || (diffSide === 1 && type === "D");
    const data = {
        filePath: utils_1.getPathFromStr(filePath),
        commit: commit,
        repo: repo,
        exists: !fileDoesNotExist
    };
    let extension;
    if (fileDoesNotExist) {
        extension = '';
    }
    else {
        const extIndex = data.filePath.indexOf('.', data.filePath.lastIndexOf('/') + 1);
        extension = extIndex > -1 ? data.filePath.substring(extIndex) : '';
    }
    return vscode.Uri.file('file' + extension).with({
        scheme: DiffDocProvider.scheme,
        query: Buffer.from(JSON.stringify(data)).toString('base64')
    });
}
exports.encodeDiffDocUri = encodeDiffDocUri;
function decodeDiffDocUri(uri) {
    return JSON.parse(Buffer.from(uri.query, 'base64').toString());
}
exports.decodeDiffDocUri = decodeDiffDocUri;
//# sourceMappingURL=diffDocProvider.js.map