public async translateArtifactToLocal()

in src/extension/uriRebaser.ts [71:143]


    public async translateArtifactToLocal(artifactUri: string) { // Retval is validated.
        if (Uri.parse(artifactUri, true).scheme === 'sarif') return artifactUri; // Sarif-scheme URIs are owned/created by us, so we know they exist.
        const validateUri = async () => {
            // Cache
            if (this.validatedUrisArtifactToLocal.has(artifactUri))
                return this.validatedUrisArtifactToLocal.get(artifactUri)!;

            // File System Exist
            if (await uriExists(artifactUri))
                return artifactUri;

            // Known Bases
            for (const [artifactBase, localBase] of this.basesArtifactToLocal) {
                if (!artifactUri.startsWith(artifactBase)) continue; // Just let it fall through?
                const localUri = artifactUri.replace(artifactBase, localBase);
                if (await uriExists(localUri)) {
                    this.updateValidatedUris(artifactUri, localUri);
                    return localUri;
                }
            }

            { // API-injected baseUris
                const localUri = await this.tryUriBases(artifactUri);
                if (localUri) return localUri;
            }

            // Distinct Project Items
            const {file} = artifactUri;
            if (this.distinctLocalNames.has(file) && this.store.distinctArtifactNames.has(file)) {
                const localUri = this.distinctLocalNames.get(file)!; // Not undefined due to surrounding if.
                this.updateValidatedUris(artifactUri, localUri);
                this.updateBases(splitUri(artifactUri), splitUri(localUri));
                return localUri;
            }

            // Open Docs
            for (const doc of workspace.textDocuments) {
                const localUri = doc.uri.toString();
                if (localUri.file !== artifactUri.file) continue;
                this.updateValidatedUris(artifactUri, localUri);
                this.updateBases(splitUri(artifactUri), splitUri(localUri));
                return localUri;
            }

            return ''; // Signals inability to rebase.
        };

        let validatedUri = await validateUri();
        if (!validatedUri && !this.activeInfoMessages.has(artifactUri)) {
            this.activeInfoMessages.add(artifactUri);
            const choice = await window.showInformationMessage(`Unable to find '${artifactUri.file}'`, 'Locate...');
            this.activeInfoMessages.delete(artifactUri);
            if (choice) {
                const extension = artifactUri.match(/\.([\w]+)$/)?.[1] ?? '';
                const files = await window.showOpenDialog({
                    defaultUri: workspace.workspaceFolders?.[0]?.uri,
                    filters: { 'Matching file' : [extension] },
                    // Consider allowing folders.
                });
                if (!files?.length) return ''; // User cancelled.

                const partsOld = splitUri(artifactUri);
                const partsNew = splitUri(files[0].toString());
                if (partsOld.last !== partsNew.last) {
                    void window.showErrorMessage(`File names must match: "${partsOld.last}" and "${partsNew.last}"`);
                    return '';
                }
                this.updateBases(partsOld, partsNew);
            }
            validatedUri = await validateUri(); // Try again
        }
        return validatedUri;
    }