@parcel/lsp 2.12.1-dev.3171 → 2.12.1-dev.3238
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/LspServer.js +78 -78
- package/package.json +4 -4
package/lib/LspServer.js
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
var $
|
2
|
-
var $
|
3
|
-
var $
|
4
|
-
var $
|
5
|
-
var $
|
6
|
-
var $
|
7
|
-
var $
|
8
|
-
var $
|
9
|
-
var $
|
10
|
-
var $
|
1
|
+
var $ke4eu$path = require("path");
|
2
|
+
var $ke4eu$fs = require("fs");
|
3
|
+
var $ke4eu$os = require("os");
|
4
|
+
var $ke4eu$vscodelanguageservernode = require("vscode-languageserver/node");
|
5
|
+
var $ke4eu$vscodejsonrpcnode = require("vscode-jsonrpc/node");
|
6
|
+
var $ke4eu$assert = require("assert");
|
7
|
+
var $ke4eu$url = require("url");
|
8
|
+
var $ke4eu$commonpathprefix = require("common-path-prefix");
|
9
|
+
var $ke4eu$parcelwatcher = require("@parcel/watcher");
|
10
|
+
var $ke4eu$parcellspprotocol = require("@parcel/lsp-protocol");
|
11
11
|
|
12
12
|
|
13
13
|
|
@@ -19,31 +19,31 @@ var $98p6W$parcellspprotocol = require("@parcel/lsp-protocol");
|
|
19
19
|
|
20
20
|
|
21
21
|
|
22
|
-
const $
|
23
|
-
const $
|
24
|
-
const $
|
22
|
+
const $7c07d6b46fb9c242$var$connection = (0, $ke4eu$vscodelanguageservernode.createConnection)((0, $ke4eu$vscodelanguageservernode.ProposedFeatures).all);
|
23
|
+
const $7c07d6b46fb9c242$var$WORKSPACE_ROOT = process.cwd();
|
24
|
+
const $7c07d6b46fb9c242$var$LSP_SENTINEL_FILENAME = "lsp-server";
|
25
25
|
// Create a simple text document manager.
|
26
26
|
// const documents: TextDocuments<TextDocument> = new TextDocuments(TextDocument);
|
27
|
-
let $
|
28
|
-
let $
|
27
|
+
let $7c07d6b46fb9c242$var$hasConfigurationCapability = false;
|
28
|
+
let $7c07d6b46fb9c242$var$hasWorkspaceFolderCapability = false;
|
29
29
|
// let hasDiagnosticRelatedInformationCapability = false;
|
30
|
-
let $
|
31
|
-
$
|
30
|
+
let $7c07d6b46fb9c242$var$hasDiagnosticsRefreshSupport = false;
|
31
|
+
$7c07d6b46fb9c242$var$connection.onInitialize((params)=>{
|
32
32
|
var _capabilities_workspace_diagnostics, _capabilities_workspace;
|
33
33
|
const capabilities = params.capabilities;
|
34
34
|
// Does the client support the `workspace/configuration` request?
|
35
35
|
// If not, we fall back using global settings.
|
36
|
-
$
|
37
|
-
$
|
36
|
+
$7c07d6b46fb9c242$var$hasConfigurationCapability = !!(capabilities.workspace && !!capabilities.workspace.configuration);
|
37
|
+
$7c07d6b46fb9c242$var$hasWorkspaceFolderCapability = !!(capabilities.workspace && !!capabilities.workspace.workspaceFolders);
|
38
38
|
// hasDiagnosticRelatedInformationCapability = !!(
|
39
39
|
// capabilities.textDocument &&
|
40
40
|
// capabilities.textDocument.publishDiagnostics &&
|
41
41
|
// capabilities.textDocument.publishDiagnostics.relatedInformation
|
42
42
|
// );
|
43
|
-
$
|
43
|
+
$7c07d6b46fb9c242$var$hasDiagnosticsRefreshSupport = Boolean((_capabilities_workspace = capabilities.workspace) === null || _capabilities_workspace === void 0 ? void 0 : (_capabilities_workspace_diagnostics = _capabilities_workspace.diagnostics) === null || _capabilities_workspace_diagnostics === void 0 ? void 0 : _capabilities_workspace_diagnostics.refreshSupport);
|
44
44
|
const result = {
|
45
45
|
capabilities: {
|
46
|
-
textDocumentSync: (0, $
|
46
|
+
textDocumentSync: (0, $ke4eu$vscodelanguageservernode.TextDocumentSyncKind).Incremental,
|
47
47
|
// Tell the client that this server supports code completion.
|
48
48
|
diagnosticProvider: {
|
49
49
|
workspaceDiagnostics: false,
|
@@ -51,31 +51,31 @@ $4a2bb8c4d55a3a92$var$connection.onInitialize((params)=>{
|
|
51
51
|
}
|
52
52
|
}
|
53
53
|
};
|
54
|
-
if ($
|
54
|
+
if ($7c07d6b46fb9c242$var$hasWorkspaceFolderCapability) result.capabilities.workspace = {
|
55
55
|
workspaceFolders: {
|
56
56
|
supported: true
|
57
57
|
}
|
58
58
|
};
|
59
59
|
return result;
|
60
60
|
});
|
61
|
-
$
|
62
|
-
if ($
|
63
|
-
$
|
64
|
-
if ($
|
65
|
-
$
|
61
|
+
$7c07d6b46fb9c242$var$connection.onInitialized(()=>{
|
62
|
+
if ($7c07d6b46fb9c242$var$hasConfigurationCapability) // Register for all configuration changes.
|
63
|
+
$7c07d6b46fb9c242$var$connection.client.register((0, $ke4eu$vscodelanguageservernode.DidChangeConfigurationNotification).type, undefined);
|
64
|
+
if ($7c07d6b46fb9c242$var$hasWorkspaceFolderCapability) $7c07d6b46fb9c242$var$connection.workspace.onDidChangeWorkspaceFolders(()=>{
|
65
|
+
$7c07d6b46fb9c242$var$connection.console.log("Workspace folder change event received.");
|
66
66
|
});
|
67
67
|
});
|
68
68
|
// Proxy
|
69
|
-
$
|
70
|
-
let client = $
|
69
|
+
$7c07d6b46fb9c242$var$connection.onRequest((0, $ke4eu$parcellspprotocol.RequestImporters), async (params)=>{
|
70
|
+
let client = $7c07d6b46fb9c242$var$findClient(params);
|
71
71
|
if (client) {
|
72
|
-
let result = await client.connection.sendRequest((0, $
|
72
|
+
let result = await client.connection.sendRequest((0, $ke4eu$parcellspprotocol.RequestImporters), params);
|
73
73
|
return result;
|
74
74
|
}
|
75
75
|
return null;
|
76
76
|
});
|
77
|
-
$
|
78
|
-
let client = $
|
77
|
+
$7c07d6b46fb9c242$var$connection.onRequest((0, $ke4eu$vscodelanguageservernode.DocumentDiagnosticRequest).type, async (params)=>{
|
78
|
+
let client = $7c07d6b46fb9c242$var$findClient(params.textDocument.uri);
|
79
79
|
let result;
|
80
80
|
if (client) {
|
81
81
|
// console.log(
|
@@ -84,23 +84,23 @@ $4a2bb8c4d55a3a92$var$connection.onRequest((0, $98p6W$vscodelanguageservernode.D
|
|
84
84
|
// params.previousResultId === client.lastBuild,
|
85
85
|
// );
|
86
86
|
if (params.previousResultId === client.lastBuild) return {
|
87
|
-
kind: (0, $
|
87
|
+
kind: (0, $ke4eu$vscodelanguageservernode.DocumentDiagnosticReportKind).Unchanged,
|
88
88
|
resultId: client.lastBuild
|
89
89
|
};
|
90
|
-
result = await client.connection.sendRequest((0, $
|
90
|
+
result = await client.connection.sendRequest((0, $ke4eu$parcellspprotocol.RequestDocumentDiagnostics), params.textDocument.uri);
|
91
91
|
if (result) client.uris.add(params.textDocument.uri);
|
92
92
|
}
|
93
93
|
return {
|
94
|
-
kind: (0, $
|
94
|
+
kind: (0, $ke4eu$vscodelanguageservernode.DocumentDiagnosticReportKind).Full,
|
95
95
|
resultId: client === null || client === void 0 ? void 0 : client.lastBuild,
|
96
96
|
items: result !== null && result !== void 0 ? result : []
|
97
97
|
};
|
98
98
|
});
|
99
|
-
$
|
100
|
-
class $
|
99
|
+
$7c07d6b46fb9c242$var$connection.listen();
|
100
|
+
class $7c07d6b46fb9c242$var$ProgressReporter {
|
101
101
|
begin() {
|
102
102
|
this.progressReporterPromise = (async ()=>{
|
103
|
-
let reporter = await $
|
103
|
+
let reporter = await $7c07d6b46fb9c242$var$connection.window.createWorkDoneProgress();
|
104
104
|
reporter.begin("Parcel");
|
105
105
|
return reporter;
|
106
106
|
})();
|
@@ -110,7 +110,7 @@ class $4a2bb8c4d55a3a92$var$ProgressReporter {
|
|
110
110
|
}
|
111
111
|
async done() {
|
112
112
|
if (this.progressReporterPromise == null) this.begin();
|
113
|
-
$
|
113
|
+
$ke4eu$assert(this.progressReporterPromise != null);
|
114
114
|
(await this.progressReporterPromise).done();
|
115
115
|
this.progressReporterPromise = null;
|
116
116
|
}
|
@@ -124,17 +124,17 @@ class $4a2bb8c4d55a3a92$var$ProgressReporter {
|
|
124
124
|
}
|
125
125
|
}
|
126
126
|
}
|
127
|
-
function $
|
128
|
-
if ($
|
127
|
+
function $7c07d6b46fb9c242$var$sendDiagnosticsRefresh() {
|
128
|
+
if ($7c07d6b46fb9c242$var$hasDiagnosticsRefreshSupport) $7c07d6b46fb9c242$var$connection.sendRequest((0, $ke4eu$vscodelanguageservernode.DiagnosticRefreshRequest).type);
|
129
129
|
}
|
130
|
-
let $
|
131
|
-
let $
|
132
|
-
function $
|
133
|
-
let filepath = $
|
130
|
+
let $7c07d6b46fb9c242$var$progressReporter = new $7c07d6b46fb9c242$var$ProgressReporter();
|
131
|
+
let $7c07d6b46fb9c242$var$clients = new Map();
|
132
|
+
function $7c07d6b46fb9c242$var$findClient(document) {
|
133
|
+
let filepath = $ke4eu$url.fileURLToPath(document);
|
134
134
|
let longestPrefix = 0;
|
135
135
|
let bestClient;
|
136
|
-
for (let [, client] of $
|
137
|
-
let prefix = $
|
136
|
+
for (let [, client] of $7c07d6b46fb9c242$var$clients){
|
137
|
+
let prefix = $ke4eu$commonpathprefix([
|
138
138
|
client.projectRoot,
|
139
139
|
filepath
|
140
140
|
]).length;
|
@@ -145,14 +145,14 @@ function $4a2bb8c4d55a3a92$var$findClient(document) {
|
|
145
145
|
}
|
146
146
|
return bestClient;
|
147
147
|
}
|
148
|
-
function $
|
149
|
-
const file = $
|
148
|
+
function $7c07d6b46fb9c242$var$loadMetafile(filepath) {
|
149
|
+
const file = $ke4eu$fs.readFileSync(filepath, "utf-8");
|
150
150
|
return JSON.parse(file);
|
151
151
|
}
|
152
|
-
function $
|
152
|
+
function $7c07d6b46fb9c242$var$createClient(metafilepath, metafile) {
|
153
153
|
let socketfilepath = metafilepath.slice(0, -5);
|
154
|
-
let [reader, writer] = (0, $
|
155
|
-
let client = (0, $
|
154
|
+
let [reader, writer] = (0, $ke4eu$vscodejsonrpcnode.createServerPipeTransport)(socketfilepath);
|
155
|
+
let client = (0, $ke4eu$vscodejsonrpcnode.createMessageConnection)(reader, writer);
|
156
156
|
client.listen();
|
157
157
|
let uris = new Set();
|
158
158
|
let result = {
|
@@ -161,71 +161,71 @@ function $4a2bb8c4d55a3a92$var$createClient(metafilepath, metafile) {
|
|
161
161
|
projectRoot: metafile.projectRoot,
|
162
162
|
lastBuild: "0"
|
163
163
|
};
|
164
|
-
client.onNotification((0, $
|
164
|
+
client.onNotification((0, $ke4eu$parcellspprotocol.NotificationBuildStatus), (state, message)=>{
|
165
165
|
// console.log('got NotificationBuildStatus', state, message);
|
166
166
|
if (state === "start") {
|
167
|
-
$
|
168
|
-
for (let uri of uris)$
|
167
|
+
$7c07d6b46fb9c242$var$progressReporter.begin();
|
168
|
+
for (let uri of uris)$7c07d6b46fb9c242$var$connection.sendDiagnostics({
|
169
169
|
uri: uri,
|
170
170
|
diagnostics: []
|
171
171
|
});
|
172
|
-
} else if (state === "progress" && message != null) $
|
172
|
+
} else if (state === "progress" && message != null) $7c07d6b46fb9c242$var$progressReporter.report(message);
|
173
173
|
else if (state === "end") {
|
174
174
|
result.lastBuild = String(Date.now());
|
175
|
-
$
|
176
|
-
$
|
177
|
-
$
|
175
|
+
$7c07d6b46fb9c242$var$sendDiagnosticsRefresh();
|
176
|
+
$7c07d6b46fb9c242$var$progressReporter.done();
|
177
|
+
$7c07d6b46fb9c242$var$connection.sendNotification((0, $ke4eu$parcellspprotocol.NotificationBuild));
|
178
178
|
}
|
179
179
|
});
|
180
|
-
client.onNotification((0, $
|
180
|
+
client.onNotification((0, $ke4eu$parcellspprotocol.NotificationWorkspaceDiagnostics), (diagnostics)=>{
|
181
181
|
// console.log('got NotificationWorkspaceDiagnostics', diagnostics);
|
182
182
|
for (let d of diagnostics){
|
183
183
|
uris.add(d.uri);
|
184
|
-
$
|
184
|
+
$7c07d6b46fb9c242$var$connection.sendDiagnostics(d);
|
185
185
|
}
|
186
186
|
});
|
187
187
|
client.onClose(()=>{
|
188
|
-
$
|
189
|
-
$
|
188
|
+
$7c07d6b46fb9c242$var$clients.delete(JSON.stringify(metafile));
|
189
|
+
$7c07d6b46fb9c242$var$sendDiagnosticsRefresh();
|
190
190
|
return Promise.all([
|
191
191
|
...uris
|
192
|
-
].map((uri)=>$
|
192
|
+
].map((uri)=>$7c07d6b46fb9c242$var$connection.sendDiagnostics({
|
193
193
|
uri: uri,
|
194
194
|
diagnostics: []
|
195
195
|
})));
|
196
196
|
});
|
197
|
-
$
|
198
|
-
$
|
197
|
+
$7c07d6b46fb9c242$var$sendDiagnosticsRefresh();
|
198
|
+
$7c07d6b46fb9c242$var$clients.set(JSON.stringify(metafile), result);
|
199
199
|
}
|
200
200
|
// Take realpath because to have consistent cache keys on macOS (/var -> /private/var)
|
201
|
-
const $
|
202
|
-
$
|
201
|
+
const $7c07d6b46fb9c242$var$BASEDIR = $ke4eu$path.join($ke4eu$fs.realpathSync($ke4eu$os.tmpdir()), "parcel-lsp");
|
202
|
+
$ke4eu$fs.mkdirSync($7c07d6b46fb9c242$var$BASEDIR, {
|
203
203
|
recursive: true
|
204
204
|
});
|
205
|
-
$
|
205
|
+
$ke4eu$fs.writeFileSync($ke4eu$path.join($7c07d6b46fb9c242$var$BASEDIR, $7c07d6b46fb9c242$var$LSP_SENTINEL_FILENAME), "");
|
206
206
|
// Search for currently running Parcel processes in the parcel-lsp dir.
|
207
207
|
// Create an IPC client connection for each running process.
|
208
|
-
for (let filename of $
|
208
|
+
for (let filename of $ke4eu$fs.readdirSync($7c07d6b46fb9c242$var$BASEDIR)){
|
209
209
|
if (!filename.endsWith(".json")) continue;
|
210
|
-
let filepath = $
|
211
|
-
const contents = $
|
210
|
+
let filepath = $ke4eu$path.join($7c07d6b46fb9c242$var$BASEDIR, filename);
|
211
|
+
const contents = $7c07d6b46fb9c242$var$loadMetafile(filepath);
|
212
212
|
const { projectRoot: projectRoot } = contents;
|
213
|
-
if ($
|
213
|
+
if ($7c07d6b46fb9c242$var$WORKSPACE_ROOT === projectRoot) $7c07d6b46fb9c242$var$createClient(filepath, contents);
|
214
214
|
}
|
215
215
|
// Watch for new Parcel processes in the parcel-lsp dir, and disconnect the
|
216
216
|
// client for each corresponding connection when a Parcel process ends
|
217
|
-
$
|
217
|
+
$ke4eu$parcelwatcher.subscribe($7c07d6b46fb9c242$var$BASEDIR, async (err, events)=>{
|
218
218
|
if (err) throw err;
|
219
219
|
for (let event of events){
|
220
220
|
if (event.type === "create" && event.path.endsWith(".json")) {
|
221
|
-
const contents = $
|
221
|
+
const contents = $7c07d6b46fb9c242$var$loadMetafile(event.path);
|
222
222
|
const { projectRoot: projectRoot } = contents;
|
223
|
-
if ($
|
223
|
+
if ($7c07d6b46fb9c242$var$WORKSPACE_ROOT === projectRoot) $7c07d6b46fb9c242$var$createClient(event.path, contents);
|
224
224
|
} else if (event.type === "delete" && event.path.endsWith(".json")) {
|
225
|
-
let existing = $
|
225
|
+
let existing = $7c07d6b46fb9c242$var$clients.get(event.path);
|
226
226
|
console.log("existing", event.path, existing);
|
227
227
|
if (existing) {
|
228
|
-
$
|
228
|
+
$7c07d6b46fb9c242$var$clients.delete(event.path);
|
229
229
|
existing.connection.end();
|
230
230
|
}
|
231
231
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@parcel/lsp",
|
3
|
-
"version": "2.12.1-dev.
|
3
|
+
"version": "2.12.1-dev.3238+7f6b4dbbc",
|
4
4
|
"license": "MIT",
|
5
5
|
"publishConfig": {
|
6
6
|
"access": "public"
|
@@ -22,10 +22,10 @@
|
|
22
22
|
},
|
23
23
|
"engines": {
|
24
24
|
"node": ">= 12.0.0",
|
25
|
-
"parcel": "^2.0.0-dev.
|
25
|
+
"parcel": "^2.0.0-dev.1422+7f6b4dbbc"
|
26
26
|
},
|
27
27
|
"dependencies": {
|
28
|
-
"@parcel/lsp-protocol": "2.12.1-dev.
|
28
|
+
"@parcel/lsp-protocol": "2.12.1-dev.3238+7f6b4dbbc",
|
29
29
|
"@parcel/watcher": "^2.0.7",
|
30
30
|
"common-path-prefix": "^3.0.0",
|
31
31
|
"nullthrows": "^1.1.1",
|
@@ -44,5 +44,5 @@
|
|
44
44
|
"targets": {
|
45
45
|
"types": false
|
46
46
|
},
|
47
|
-
"gitHead": "
|
47
|
+
"gitHead": "7f6b4dbbc56a203e0fce8794856c03598c4f6708"
|
48
48
|
}
|