1
>
/*---------------------------------------------------------------------------------------------
queryBuilder.ts
2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
import * as arrays from '../../../../base/common/arrays.js';
7
>
import * as collections from '../../../../base/common/collections.js';
8
>
import * as glob from '../../../../base/common/glob.js';
9
>
import { untildify } from '../../../../base/common/labels.js';
10
>
import { ResourceMap } from '../../../../base/common/map.js';
11
>
import { Schemas } from '../../../../base/common/network.js';
12
>
import * as path from '../../../../base/common/path.js';
13
>
import { isEqual, basename, relativePath, isAbsolutePath } from '../../../../base/common/resources.js';
14
>
import * as strings from '../../../../base/common/strings.js';
15
>
import { assertReturnsDefined, isDefined } from '../../../../base/common/types.js';
16
>
import { URI, URI as uri, UriComponents } from '../../../../base/common/uri.js';
17
>
import { isMultilineRegexSource } from '../../../../editor/common/model/textModelSearch.js';
18
>
import * as nls from '../../../../nls.js';
19
>
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
20
>
import { ILogService } from '../../../../platform/log/common/log.js';
21
>
import { IUriIdentityService } from '../../../../platform/uriIdentity/common/uriIdentity.js';
22
>
import { IWorkspaceContextService, IWorkspaceFolderData, toWorkspaceFolder, WorkbenchState } from '../../../../platform/workspace/common/workspace.js';
23
>
import { IEditorGroupsService } from '../../editor/common/editorGroupsService.js';
24
>
import { IPathService } from '../../path/common/pathService.js';
25
>
import { ExcludeGlobPattern, getExcludes, IAITextQuery, ICommonQueryProps, IFileQuery, IFolderQuery, IPatternInfo, ISearchConfiguration, ITextQuery, ITextSearchPreviewOptions, pathIncludedInQuery, QueryType } from './search.js';
26
>
import { GlobPattern } from './searchExtTypes.js';
27
>
28
>
/**
29
>
* One folder to search and a glob expression that should be applied.
30
>
*/
31
>
interface IOneSearchPathPattern {
32
>
searchPath: uri;
33
>
pattern?: string;
34
>
}
35
>
36
>
/**
37
>
* One folder to search and a set of glob expressions that should be applied.
38
>
*/
39
>
export interface ISearchPathPattern {
40
>
searchPath: uri;
41
>
pattern?: glob.IExpression;
42
>
}
43
>
44
>
type ISearchPathPatternBuilder = string | string[];
45
>
46
>
export interface ISearchPatternBuilder<U extends UriComponents> {
47
>
uri?: U;
48
>
pattern: ISearchPathPatternBuilder;
49
>
}
50
>
51
>
export function isISearchPatternBuilder<U extends UriComponents>(object: ISearchPatternBuilder<U> | ISearchPathPatternBuilder): object is ISearchPatternBuilder<U> {
52
return (typeof object === 'object' && 'uri' in object && 'pattern' in object);
53
}
55
>
export function globPatternToISearchPatternBuilder(globPattern: GlobPattern): ISearchPatternBuilder<URI> {
56
57
if (typeof globPattern === 'string') {