@theia/search-in-workspace 1.67.0-next.56 → 1.67.0-next.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/components/search-in-workspace-input.d.ts +40 -0
- package/lib/browser/components/search-in-workspace-input.d.ts.map +1 -0
- package/lib/browser/components/search-in-workspace-input.js +124 -0
- package/lib/browser/components/search-in-workspace-input.js.map +1 -0
- package/lib/browser/components/search-in-workspace-textarea.d.ts +40 -0
- package/lib/browser/components/search-in-workspace-textarea.d.ts.map +1 -0
- package/lib/browser/components/search-in-workspace-textarea.js +136 -0
- package/lib/browser/components/search-in-workspace-textarea.js.map +1 -0
- package/lib/browser/search-in-workspace-context-key-service.d.ts +24 -0
- package/lib/browser/search-in-workspace-context-key-service.d.ts.map +1 -0
- package/lib/browser/search-in-workspace-context-key-service.js +83 -0
- package/lib/browser/search-in-workspace-context-key-service.js.map +1 -0
- package/lib/browser/search-in-workspace-factory.d.ts +11 -0
- package/lib/browser/search-in-workspace-factory.d.ts.map +1 -0
- package/lib/browser/search-in-workspace-factory.js +61 -0
- package/lib/browser/search-in-workspace-factory.js.map +1 -0
- package/lib/browser/search-in-workspace-frontend-contribution.d.ts +58 -0
- package/lib/browser/search-in-workspace-frontend-contribution.d.ts.map +1 -0
- package/lib/browser/search-in-workspace-frontend-contribution.js +509 -0
- package/lib/browser/search-in-workspace-frontend-contribution.js.map +1 -0
- package/lib/browser/search-in-workspace-frontend-module.d.ts +7 -0
- package/lib/browser/search-in-workspace-frontend-module.d.ts.map +1 -0
- package/lib/browser/search-in-workspace-frontend-module.js +73 -0
- package/lib/browser/search-in-workspace-frontend-module.js.map +1 -0
- package/lib/browser/search-in-workspace-label-provider.d.ts +10 -0
- package/lib/browser/search-in-workspace-label-provider.d.ts.map +1 -0
- package/lib/browser/search-in-workspace-label-provider.js +50 -0
- package/lib/browser/search-in-workspace-label-provider.js.map +1 -0
- package/lib/browser/search-in-workspace-result-tree-widget.d.ts +262 -0
- package/lib/browser/search-in-workspace-result-tree-widget.d.ts.map +1 -0
- package/lib/browser/search-in-workspace-result-tree-widget.js +1164 -0
- package/lib/browser/search-in-workspace-result-tree-widget.js.map +1 -0
- package/lib/browser/search-in-workspace-service.d.ts +36 -0
- package/lib/browser/search-in-workspace-service.d.ts.map +1 -0
- package/lib/browser/search-in-workspace-service.js +151 -0
- package/lib/browser/search-in-workspace-service.js.map +1 -0
- package/lib/browser/search-in-workspace-widget.d.ts +123 -0
- package/lib/browser/search-in-workspace-widget.d.ts.map +1 -0
- package/lib/browser/search-in-workspace-widget.js +624 -0
- package/lib/browser/search-in-workspace-widget.js.map +1 -0
- package/lib/browser/search-layout-migrations.d.ts +6 -0
- package/lib/browser/search-layout-migrations.d.ts.map +1 -0
- package/lib/browser/search-layout-migrations.js +60 -0
- package/lib/browser/search-layout-migrations.js.map +1 -0
- package/lib/browser-only/browser-only-search-in-workspace-service.d.ts +5 -0
- package/lib/browser-only/browser-only-search-in-workspace-service.d.ts.map +1 -0
- package/lib/browser-only/browser-only-search-in-workspace-service.js +40 -0
- package/lib/browser-only/browser-only-search-in-workspace-service.js.map +1 -0
- package/lib/browser-only/browser-search-in-workspace-server.d.ts +80 -0
- package/lib/browser-only/browser-search-in-workspace-server.d.ts.map +1 -0
- package/lib/browser-only/browser-search-in-workspace-server.js +378 -0
- package/lib/browser-only/browser-search-in-workspace-server.js.map +1 -0
- package/lib/browser-only/search-in-workspace-frontend-only-module.d.ts +4 -0
- package/lib/browser-only/search-in-workspace-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/search-in-workspace-frontend-only-module.js +37 -0
- package/lib/browser-only/search-in-workspace-frontend-only-module.js.map +1 -0
- package/lib/common/search-in-workspace-interface.d.ts +117 -0
- package/lib/common/search-in-workspace-interface.d.ts.map +1 -0
- package/lib/common/search-in-workspace-interface.js +36 -0
- package/lib/common/search-in-workspace-interface.js.map +1 -0
- package/lib/common/search-in-workspace-preferences.d.ts +19 -0
- package/lib/common/search-in-workspace-preferences.d.ts.map +1 -0
- package/lib/common/search-in-workspace-preferences.js +89 -0
- package/lib/common/search-in-workspace-preferences.js.map +1 -0
- package/lib/node/ripgrep-search-in-workspace-server.d.ts +95 -0
- package/lib/node/ripgrep-search-in-workspace-server.d.ts.map +1 -0
- package/lib/node/ripgrep-search-in-workspace-server.js +420 -0
- package/lib/node/ripgrep-search-in-workspace-server.js.map +1 -0
- package/lib/node/ripgrep-search-in-workspace-server.slow-spec.d.ts +2 -0
- package/lib/node/ripgrep-search-in-workspace-server.slow-spec.d.ts.map +1 -0
- package/lib/node/ripgrep-search-in-workspace-server.slow-spec.js +900 -0
- package/lib/node/ripgrep-search-in-workspace-server.slow-spec.js.map +1 -0
- package/lib/node/search-in-workspace-backend-module.d.ts +4 -0
- package/lib/node/search-in-workspace-backend-module.d.ts.map +1 -0
- package/lib/node/search-in-workspace-backend-module.js +35 -0
- package/lib/node/search-in-workspace-backend-module.js.map +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2017-2021 Ericsson and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.RipgrepSearchInWorkspaceServer = exports.RgPath = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const fs = require("@theia/core/shared/fs-extra");
|
|
21
|
+
const path = require("path");
|
|
22
|
+
const core_1 = require("@theia/core");
|
|
23
|
+
const node_1 = require("@theia/process/lib/node");
|
|
24
|
+
const file_uri_1 = require("@theia/core/lib/common/file-uri");
|
|
25
|
+
const uri_1 = require("@theia/core/lib/common/uri");
|
|
26
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
27
|
+
exports.RgPath = Symbol('RgPath');
|
|
28
|
+
function bytesOrTextToString(obj) {
|
|
29
|
+
return 'bytes' in obj ?
|
|
30
|
+
Buffer.from(obj.bytes, 'base64').toString() :
|
|
31
|
+
obj.text;
|
|
32
|
+
}
|
|
33
|
+
let RipgrepSearchInWorkspaceServer = class RipgrepSearchInWorkspaceServer {
|
|
34
|
+
constructor(logger, rawProcessFactory) {
|
|
35
|
+
this.logger = logger;
|
|
36
|
+
this.rawProcessFactory = rawProcessFactory;
|
|
37
|
+
// List of ongoing searches, maps search id to a the started rg process.
|
|
38
|
+
this.ongoingSearches = new Map();
|
|
39
|
+
// Each incoming search is given a unique id, returned to the client. This is the next id we will assigned.
|
|
40
|
+
this.nextSearchId = 1;
|
|
41
|
+
}
|
|
42
|
+
setClient(client) {
|
|
43
|
+
this.client = client;
|
|
44
|
+
}
|
|
45
|
+
getArgs(options) {
|
|
46
|
+
const args = new Set();
|
|
47
|
+
args.add('--hidden');
|
|
48
|
+
args.add('--json');
|
|
49
|
+
if (options === null || options === void 0 ? void 0 : options.multiline) {
|
|
50
|
+
args.add('--multiline');
|
|
51
|
+
}
|
|
52
|
+
if (options === null || options === void 0 ? void 0 : options.matchCase) {
|
|
53
|
+
args.add('--case-sensitive');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
args.add('--ignore-case');
|
|
57
|
+
}
|
|
58
|
+
if (options === null || options === void 0 ? void 0 : options.includeIgnored) {
|
|
59
|
+
args.add('--no-ignore');
|
|
60
|
+
}
|
|
61
|
+
if (options === null || options === void 0 ? void 0 : options.maxFileSize) {
|
|
62
|
+
args.add('--max-filesize=' + options.maxFileSize.trim());
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
args.add('--max-filesize=20M');
|
|
66
|
+
}
|
|
67
|
+
if (options === null || options === void 0 ? void 0 : options.include) {
|
|
68
|
+
this.addGlobArgs(args, options.include, false);
|
|
69
|
+
}
|
|
70
|
+
if (options === null || options === void 0 ? void 0 : options.exclude) {
|
|
71
|
+
this.addGlobArgs(args, options.exclude, true);
|
|
72
|
+
}
|
|
73
|
+
if (options === null || options === void 0 ? void 0 : options.followSymlinks) {
|
|
74
|
+
args.add('--follow');
|
|
75
|
+
}
|
|
76
|
+
if ((options === null || options === void 0 ? void 0 : options.useRegExp) || (options === null || options === void 0 ? void 0 : options.matchWholeWord)) {
|
|
77
|
+
args.add('--regexp');
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
args.add('--fixed-strings');
|
|
81
|
+
args.add('--');
|
|
82
|
+
}
|
|
83
|
+
return Array.from(args);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Add glob patterns to ripgrep's arguments
|
|
87
|
+
* @param args ripgrep set of arguments
|
|
88
|
+
* @param patterns patterns to include as globs
|
|
89
|
+
* @param exclude whether to negate the glob pattern or not
|
|
90
|
+
*/
|
|
91
|
+
addGlobArgs(args, patterns, exclude = false) {
|
|
92
|
+
const sanitizedPatterns = patterns.map(pattern => pattern.trim()).filter(pattern => pattern.length > 0);
|
|
93
|
+
for (let pattern of sanitizedPatterns) {
|
|
94
|
+
// make sure the pattern always starts with `**/`
|
|
95
|
+
if (pattern.startsWith('/')) {
|
|
96
|
+
pattern = '**' + pattern;
|
|
97
|
+
}
|
|
98
|
+
else if (!pattern.startsWith('**/')) {
|
|
99
|
+
pattern = '**/' + pattern;
|
|
100
|
+
}
|
|
101
|
+
// add the exclusion prefix
|
|
102
|
+
if (exclude) {
|
|
103
|
+
pattern = '!' + pattern;
|
|
104
|
+
}
|
|
105
|
+
args.add(`--glob=${pattern}`);
|
|
106
|
+
// add a generic glob cli argument entry to include files inside a given directory
|
|
107
|
+
if (!pattern.endsWith('*')) {
|
|
108
|
+
// ensure the new pattern ends with `/*`
|
|
109
|
+
pattern += pattern.endsWith('/') ? '*' : '/*';
|
|
110
|
+
args.add(`--glob=${pattern}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Transforms relative patterns to absolute paths, one for each given search path.
|
|
116
|
+
* The resulting paths are not validated in the file system as the pattern keeps glob information.
|
|
117
|
+
*
|
|
118
|
+
* @returns The resulting list may be larger than the received patterns as a relative pattern may
|
|
119
|
+
* resolve to multiple absolute patterns up to the number of search paths.
|
|
120
|
+
*/
|
|
121
|
+
replaceRelativeToAbsolute(roots, patterns = []) {
|
|
122
|
+
const expandedPatterns = new Set();
|
|
123
|
+
for (const pattern of patterns) {
|
|
124
|
+
if (this.isPatternRelative(pattern)) {
|
|
125
|
+
// create new patterns using the absolute form for each root
|
|
126
|
+
for (const root of roots) {
|
|
127
|
+
expandedPatterns.add(path.resolve(root, pattern));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
expandedPatterns.add(pattern);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return Array.from(expandedPatterns);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Tests if the pattern is relative and should/can be made absolute.
|
|
138
|
+
*/
|
|
139
|
+
isPatternRelative(pattern) {
|
|
140
|
+
return pattern.replace(/\\/g, '/').startsWith('./');
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* By default, sets the search directories for the string WHAT to the provided ROOTURIS directories
|
|
144
|
+
* and returns the assigned search id.
|
|
145
|
+
*
|
|
146
|
+
* The include / exclude (options in SearchInWorkspaceOptions) are lists of patterns for files to
|
|
147
|
+
* include / exclude during search (glob characters are allowed).
|
|
148
|
+
*
|
|
149
|
+
* include patterns successfully recognized as absolute paths will override the default search and set
|
|
150
|
+
* the search directories to the ones provided as includes.
|
|
151
|
+
* Relative paths are allowed, the application will attempt to translate them to valid absolute paths
|
|
152
|
+
* based on the applicable search directories.
|
|
153
|
+
*/
|
|
154
|
+
async search(what, rootUris, options = {}) {
|
|
155
|
+
// Start the rg process. Use --vimgrep to get one result per
|
|
156
|
+
// line, --color=always to get color control characters that
|
|
157
|
+
// we'll use to parse the lines.
|
|
158
|
+
const searchId = this.nextSearchId++;
|
|
159
|
+
const rootPaths = rootUris.map(root => file_uri_1.FileUri.fsPath(root));
|
|
160
|
+
// If there are absolute paths in `include` we will remove them and use
|
|
161
|
+
// those as paths to search from.
|
|
162
|
+
const searchPaths = await this.extractSearchPathsFromIncludes(rootPaths, options);
|
|
163
|
+
options.include = this.replaceRelativeToAbsolute(searchPaths, options.include);
|
|
164
|
+
options.exclude = this.replaceRelativeToAbsolute(searchPaths, options.exclude);
|
|
165
|
+
const rgArgs = this.getArgs(options);
|
|
166
|
+
// If we use matchWholeWord we use regExp internally, so we need
|
|
167
|
+
// to escape regexp characters if we actually not set regexp true in UI.
|
|
168
|
+
if ((options === null || options === void 0 ? void 0 : options.matchWholeWord) && !options.useRegExp) {
|
|
169
|
+
what = what.replace(/[\-\\\{\}\*\+\?\|\^\$\.\[\]\(\)\#]/g, '\\$&');
|
|
170
|
+
if (!/\B/.test(what.charAt(0))) {
|
|
171
|
+
what = '\\b' + what;
|
|
172
|
+
}
|
|
173
|
+
if (!/\B/.test(what.charAt(what.length - 1))) {
|
|
174
|
+
what = what + '\\b';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const args = [...rgArgs, what, ...searchPaths];
|
|
178
|
+
const processOptions = {
|
|
179
|
+
command: this.rgPath,
|
|
180
|
+
args
|
|
181
|
+
};
|
|
182
|
+
// TODO: Use child_process directly instead of rawProcessFactory?
|
|
183
|
+
const rgProcess = this.rawProcessFactory(processOptions);
|
|
184
|
+
this.ongoingSearches.set(searchId, rgProcess);
|
|
185
|
+
rgProcess.onError(error => {
|
|
186
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
187
|
+
let errorCode = error.code;
|
|
188
|
+
// Try to provide somewhat clearer error messages, if possible.
|
|
189
|
+
if (errorCode === 'ENOENT') {
|
|
190
|
+
errorCode = 'could not find the ripgrep (rg) binary';
|
|
191
|
+
}
|
|
192
|
+
else if (errorCode === 'EACCES') {
|
|
193
|
+
errorCode = 'could not execute the ripgrep (rg) binary';
|
|
194
|
+
}
|
|
195
|
+
const errorStr = `An error happened while searching (${errorCode}).`;
|
|
196
|
+
this.wrapUpSearch(searchId, errorStr);
|
|
197
|
+
});
|
|
198
|
+
// Running counter of results.
|
|
199
|
+
let numResults = 0;
|
|
200
|
+
// Buffer to accumulate incoming output.
|
|
201
|
+
let databuf = '';
|
|
202
|
+
let currentSearchResult;
|
|
203
|
+
rgProcess.outputStream.on('data', (chunk) => {
|
|
204
|
+
// We might have already reached the max number of
|
|
205
|
+
// results, sent a TERM signal to rg, but we still get
|
|
206
|
+
// the data that was already output in the mean time.
|
|
207
|
+
// It's not necessary to return early here (the check
|
|
208
|
+
// for maxResults below would avoid sending extra
|
|
209
|
+
// results), but it avoids doing unnecessary work.
|
|
210
|
+
if ((options === null || options === void 0 ? void 0 : options.maxResults) && numResults >= options.maxResults) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
databuf += chunk;
|
|
214
|
+
while (1) {
|
|
215
|
+
// Check if we have a complete line.
|
|
216
|
+
const eolIdx = databuf.indexOf('\n');
|
|
217
|
+
if (eolIdx < 0) {
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
// Get and remove the line from the data buffer.
|
|
221
|
+
const lineBuf = databuf.slice(0, eolIdx);
|
|
222
|
+
databuf = databuf.slice(eolIdx + 1);
|
|
223
|
+
const obj = JSON.parse(lineBuf);
|
|
224
|
+
if (obj.type === 'begin') {
|
|
225
|
+
const file = bytesOrTextToString(obj.data.path);
|
|
226
|
+
if (file) {
|
|
227
|
+
currentSearchResult = {
|
|
228
|
+
fileUri: file_uri_1.FileUri.create(file).toString(),
|
|
229
|
+
root: this.getRoot(file, rootUris).toString(),
|
|
230
|
+
matches: []
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
this.logger.error('Begin message without path. ' + JSON.stringify(obj));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
else if (obj.type === 'end') {
|
|
238
|
+
if (currentSearchResult && this.client) {
|
|
239
|
+
this.client.onResult(searchId, currentSearchResult);
|
|
240
|
+
}
|
|
241
|
+
currentSearchResult = undefined;
|
|
242
|
+
}
|
|
243
|
+
else if (obj.type === 'match') {
|
|
244
|
+
if (!currentSearchResult) {
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
const data = obj.data;
|
|
248
|
+
const file = bytesOrTextToString(data.path);
|
|
249
|
+
const line = data.line_number;
|
|
250
|
+
const lineText = bytesOrTextToString(data.lines);
|
|
251
|
+
if (file === undefined || lineText === undefined) {
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
const lineInBytes = Buffer.from(lineText);
|
|
255
|
+
for (const submatch of data.submatches) {
|
|
256
|
+
const startOffset = lineInBytes.slice(0, submatch.start).toString().length;
|
|
257
|
+
const match = bytesOrTextToString(submatch.match);
|
|
258
|
+
let lineInfo = lineText.trimRight();
|
|
259
|
+
if (lineInfo.length > 300) {
|
|
260
|
+
const prefixLength = 25;
|
|
261
|
+
const start = Math.max(startOffset - prefixLength, 0);
|
|
262
|
+
const length = prefixLength + match.length + 70;
|
|
263
|
+
let prefix = '';
|
|
264
|
+
if (start >= prefixLength) {
|
|
265
|
+
prefix = '...';
|
|
266
|
+
}
|
|
267
|
+
const character = (start < prefixLength ? start : prefixLength) + prefix.length + 1;
|
|
268
|
+
lineInfo = {
|
|
269
|
+
text: prefix + lineInfo.substring(start, start + length),
|
|
270
|
+
character
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
currentSearchResult.matches.push({
|
|
274
|
+
line,
|
|
275
|
+
character: startOffset + 1,
|
|
276
|
+
length: match.length,
|
|
277
|
+
lineText: lineInfo
|
|
278
|
+
});
|
|
279
|
+
numResults++;
|
|
280
|
+
// Did we reach the maximum number of results?
|
|
281
|
+
if ((options === null || options === void 0 ? void 0 : options.maxResults) && numResults >= options.maxResults) {
|
|
282
|
+
rgProcess.kill();
|
|
283
|
+
if (currentSearchResult && this.client) {
|
|
284
|
+
this.client.onResult(searchId, currentSearchResult);
|
|
285
|
+
}
|
|
286
|
+
currentSearchResult = undefined;
|
|
287
|
+
this.wrapUpSearch(searchId);
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
rgProcess.outputStream.on('end', () => {
|
|
295
|
+
// If we reached maxResults, we should have already
|
|
296
|
+
// wrapped up the search. Returning early avoids
|
|
297
|
+
// logging a warning message in wrapUpSearch.
|
|
298
|
+
if ((options === null || options === void 0 ? void 0 : options.maxResults) && numResults >= options.maxResults) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
this.wrapUpSearch(searchId);
|
|
302
|
+
});
|
|
303
|
+
return searchId;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* The default search paths are set to be the root paths associated to a workspace
|
|
307
|
+
* however the search scope can be further refined with the include paths available in the search options.
|
|
308
|
+
* This method will replace the searching paths to the ones specified in the 'include' options but as long
|
|
309
|
+
* as the 'include' paths can be successfully validated as existing.
|
|
310
|
+
*
|
|
311
|
+
* Therefore the returned array of paths can be either the workspace root paths or a set of validated paths
|
|
312
|
+
* derived from the include options which can be used to perform the search.
|
|
313
|
+
*
|
|
314
|
+
* Any pattern that resulted in a valid search path will be removed from the 'include' list as it is
|
|
315
|
+
* provided as an equivalent search path instead.
|
|
316
|
+
*/
|
|
317
|
+
async extractSearchPathsFromIncludes(rootPaths, options) {
|
|
318
|
+
if (!options.include) {
|
|
319
|
+
return rootPaths;
|
|
320
|
+
}
|
|
321
|
+
const resolvedPaths = new Set();
|
|
322
|
+
const include = [];
|
|
323
|
+
for (const pattern of options.include) {
|
|
324
|
+
let keep = true;
|
|
325
|
+
for (const root of rootPaths) {
|
|
326
|
+
const absolutePath = await this.getAbsolutePathFromPattern(root, pattern);
|
|
327
|
+
// undefined means the pattern cannot be converted into an absolute path
|
|
328
|
+
if (absolutePath) {
|
|
329
|
+
resolvedPaths.add(absolutePath);
|
|
330
|
+
keep = false;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
if (keep) {
|
|
334
|
+
include.push(pattern);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
options.include = include;
|
|
338
|
+
return resolvedPaths.size > 0
|
|
339
|
+
? Array.from(resolvedPaths)
|
|
340
|
+
: rootPaths;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Transform include/exclude option patterns from relative patterns to absolute patterns.
|
|
344
|
+
* E.g. './abc/foo.*' to '${root}/abc/foo.*', the transformation does not validate the
|
|
345
|
+
* pattern against the file system as glob suffixes remain.
|
|
346
|
+
*
|
|
347
|
+
* @returns undefined if the pattern cannot be converted into an absolute path.
|
|
348
|
+
*/
|
|
349
|
+
async getAbsolutePathFromPattern(root, pattern) {
|
|
350
|
+
pattern = pattern.replace(/\\/g, '/');
|
|
351
|
+
// The pattern is not referring to a single file or folder, i.e. not to be converted
|
|
352
|
+
if (!path.isAbsolute(pattern) && !pattern.startsWith('./')) {
|
|
353
|
+
return undefined;
|
|
354
|
+
}
|
|
355
|
+
// remove the `/**` suffix if present
|
|
356
|
+
if (pattern.endsWith('/**')) {
|
|
357
|
+
pattern = pattern.substring(0, pattern.length - 3);
|
|
358
|
+
}
|
|
359
|
+
// if `pattern` is absolute then `root` will be ignored by `path.resolve()`
|
|
360
|
+
const targetPath = path.resolve(root, pattern);
|
|
361
|
+
if (await fs.pathExists(targetPath)) {
|
|
362
|
+
return targetPath;
|
|
363
|
+
}
|
|
364
|
+
return undefined;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Returns the root folder uri that a file belongs to.
|
|
368
|
+
* In case that a file belongs to more than one root folders, returns the root folder that is closest to the file.
|
|
369
|
+
* If the file is not from the current workspace, returns empty string.
|
|
370
|
+
* @param filePath string path of the file
|
|
371
|
+
* @param rootUris string URIs of the root folders in the current workspace
|
|
372
|
+
*/
|
|
373
|
+
getRoot(filePath, rootUris) {
|
|
374
|
+
const roots = rootUris.filter(root => new uri_1.default(root).withScheme('file').isEqualOrParent(file_uri_1.FileUri.create(filePath).withScheme('file')));
|
|
375
|
+
if (roots.length > 0) {
|
|
376
|
+
return file_uri_1.FileUri.create(file_uri_1.FileUri.fsPath(roots.sort((r1, r2) => r2.length - r1.length)[0]));
|
|
377
|
+
}
|
|
378
|
+
return new uri_1.default();
|
|
379
|
+
}
|
|
380
|
+
// Cancel an ongoing search. Trying to cancel a search that doesn't exist isn't an
|
|
381
|
+
// error, otherwise we'd have to deal with race conditions, where a client cancels a
|
|
382
|
+
// search that finishes normally at the same time.
|
|
383
|
+
cancel(searchId) {
|
|
384
|
+
const process = this.ongoingSearches.get(searchId);
|
|
385
|
+
if (process) {
|
|
386
|
+
process.kill();
|
|
387
|
+
this.wrapUpSearch(searchId);
|
|
388
|
+
}
|
|
389
|
+
return Promise.resolve();
|
|
390
|
+
}
|
|
391
|
+
// Send onDone to the client and clean up what we know about search searchId.
|
|
392
|
+
wrapUpSearch(searchId, error) {
|
|
393
|
+
if (this.ongoingSearches.delete(searchId)) {
|
|
394
|
+
if (this.client) {
|
|
395
|
+
this.logger.debug('Sending onDone for ' + searchId, error);
|
|
396
|
+
this.client.onDone(searchId, error);
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
this.logger.debug('Wrapping up search ' + searchId + ' but no client');
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
this.logger.debug("Trying to wrap up a search we don't know about " + searchId);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
dispose() {
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
exports.RipgrepSearchInWorkspaceServer = RipgrepSearchInWorkspaceServer;
|
|
410
|
+
tslib_1.__decorate([
|
|
411
|
+
(0, inversify_1.inject)(exports.RgPath),
|
|
412
|
+
tslib_1.__metadata("design:type", String)
|
|
413
|
+
], RipgrepSearchInWorkspaceServer.prototype, "rgPath", void 0);
|
|
414
|
+
exports.RipgrepSearchInWorkspaceServer = RipgrepSearchInWorkspaceServer = tslib_1.__decorate([
|
|
415
|
+
(0, inversify_1.injectable)(),
|
|
416
|
+
tslib_1.__param(0, (0, inversify_1.inject)(core_1.ILogger)),
|
|
417
|
+
tslib_1.__param(1, (0, inversify_1.inject)(node_1.RawProcessFactory)),
|
|
418
|
+
tslib_1.__metadata("design:paramtypes", [Object, Function])
|
|
419
|
+
], RipgrepSearchInWorkspaceServer);
|
|
420
|
+
//# sourceMappingURL=ripgrep-search-in-workspace-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ripgrep-search-in-workspace-server.js","sourceRoot":"","sources":["../../src/node/ripgrep-search-in-workspace-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ripgrep-search-in-workspace-server.slow-spec.d.ts","sourceRoot":"","sources":["../../src/node/ripgrep-search-in-workspace-server.slow-spec.ts"],"names":[],"mappings":""}
|