@marko/language-server 1.3.8 → 1.3.10

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/dist/index.js CHANGED
@@ -22,17 +22,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
22
  mod
23
23
  ));
24
24
 
25
- // src/index.ts
26
- var import_util2 = require("util");
27
- var import_node = require("vscode-languageserver/node");
28
- var import_language_tools19 = require("@marko/language-tools");
29
-
30
25
  // src/utils/project-defaults.ts
31
- var import_path = __toESM(require("path"));
32
26
  var defaultCompiler = __toESM(require("@marko/compiler"));
33
27
  var import_config = __toESM(require("@marko/compiler/config"));
34
- var defaultTranslator = __toESM(require("@marko/translator-default"));
35
28
  var import_language_tools = require("@marko/language-tools");
29
+ var defaultTranslator = __toESM(require("@marko/translator-default"));
30
+ var import_path = __toESM(require("path"));
36
31
  import_language_tools.Project.setDefaultTypePaths({
37
32
  internalTypesFile: import_path.default.join(__dirname, "marko.internal.d.ts"),
38
33
  markoTypesFile: import_path.default.join(__dirname, "marko.runtime.d.ts")
@@ -42,72 +37,19 @@ import_language_tools.Project.setDefaultCompilerMeta(defaultCompiler, {
42
37
  translator: defaultTranslator
43
38
  });
44
39
 
45
- // src/utils/file.ts
46
- var import_path2 = __toESM(require("path"));
47
- var import_language_tools2 = require("@marko/language-tools");
48
- var import_vscode_uri = require("vscode-uri");
49
- var processorCaches = /* @__PURE__ */ new WeakMap();
50
- function getFSDir(doc) {
51
- const filename = getFSPath(doc);
52
- return filename && import_path2.default.dirname(filename);
53
- }
54
- function getFSPath(doc) {
55
- const parsed = import_vscode_uri.URI.parse(doc.uri);
56
- return parsed.scheme === "file" ? parsed.fsPath : void 0;
57
- }
58
- function getMarkoFile(doc) {
59
- const { uri } = doc;
60
- const { fsPath, scheme } = import_vscode_uri.URI.parse(uri);
61
- const filename = scheme === "file" ? fsPath : void 0;
62
- const dirname = filename ? import_path2.default.dirname(filename) : process.cwd();
63
- const cache = import_language_tools2.Project.getCache(dirname);
64
- let file = cache.get(doc);
65
- if (!file) {
66
- const { version } = doc;
67
- const code = doc.getText();
68
- const parsed = (0, import_language_tools2.parse)(code, filename);
69
- const lookup = import_language_tools2.Project.getTagLookup(dirname);
70
- cache.set(
71
- doc,
72
- file = {
73
- uri,
74
- scheme,
75
- version,
76
- lookup,
77
- filename,
78
- dirname,
79
- parsed,
80
- code
81
- }
82
- );
83
- }
84
- return file;
85
- }
86
- function clearMarkoCacheForFile(doc) {
87
- import_language_tools2.Project.getCache(getFSDir(doc)).delete(doc);
88
- }
89
- function processDoc(doc, process2) {
90
- const file = getMarkoFile(doc);
91
- const cache = processorCaches.get(file.parsed);
92
- let result;
93
- if (cache) {
94
- result = cache.get(process2);
95
- if (!result) {
96
- result = process2(file);
97
- cache.set(process2, result);
98
- }
99
- } else {
100
- result = process2(file);
101
- processorCaches.set(file.parsed, /* @__PURE__ */ new Map([[process2, result]]));
102
- }
103
- return result;
104
- }
40
+ // src/index.ts
41
+ var import_language_tools19 = require("@marko/language-tools");
42
+ var import_util2 = require("util");
43
+ var import_node = require("vscode-languageserver/node");
44
+
45
+ // src/service/index.ts
46
+ var import_vscode_languageserver12 = require("vscode-languageserver");
105
47
 
106
48
  // src/utils/text-documents.ts
107
49
  var import_fs = __toESM(require("fs"));
108
- var import_vscode_uri2 = require("vscode-uri");
109
50
  var import_vscode_languageserver = require("vscode-languageserver");
110
51
  var import_vscode_languageserver_textdocument = require("vscode-languageserver-textdocument");
52
+ var import_vscode_uri = require("vscode-uri");
111
53
  var docs = /* @__PURE__ */ new Map();
112
54
  var openDocs = /* @__PURE__ */ new Set();
113
55
  var fileExists = /* @__PURE__ */ new Map();
@@ -122,7 +64,7 @@ function getAllOpen() {
122
64
  function get(uri) {
123
65
  const doc = docs.get(uri);
124
66
  if (doc) return doc;
125
- const { fsPath, scheme } = import_vscode_uri2.URI.parse(uri);
67
+ const { fsPath, scheme } = import_vscode_uri.URI.parse(uri);
126
68
  if (scheme === "file") {
127
69
  if (fileExists.get(uri) === false) return void 0;
128
70
  try {
@@ -143,7 +85,7 @@ function get(uri) {
143
85
  function exists(uri) {
144
86
  const cached = fileExists.get(uri);
145
87
  if (cached !== void 0) return cached;
146
- const { fsPath, scheme } = import_vscode_uri2.URI.parse(uri);
88
+ const { fsPath, scheme } = import_vscode_uri.URI.parse(uri);
147
89
  if (scheme === "file") {
148
90
  try {
149
91
  import_fs.default.accessSync(fsPath);
@@ -196,7 +138,7 @@ function doClose(params) {
196
138
  if (doc) {
197
139
  projectVersion++;
198
140
  openDocs.delete(doc);
199
- if (import_vscode_uri2.URI.parse(ref.uri).scheme !== "file") {
141
+ if (import_vscode_uri.URI.parse(ref.uri).scheme !== "file") {
200
142
  docs.delete(ref.uri);
201
143
  }
202
144
  }
@@ -241,75 +183,72 @@ function emitFileChange(doc) {
241
183
  }
242
184
  }
243
185
 
244
- // src/utils/workspace.ts
245
- var isInitialized = false;
246
- var connection;
247
- var configChangeHandlers = /* @__PURE__ */ new Set();
248
- var settingsCache = /* @__PURE__ */ new Map();
249
- async function getConfig(section) {
250
- let cached = settingsCache.get(section);
251
- if (!cached) {
252
- try {
253
- cached = await connection.workspace.getConfiguration(section) || {};
254
- settingsCache.set(section, cached);
255
- } catch {
256
- }
257
- }
258
- return cached;
259
- }
260
- function onConfigChange(handler) {
261
- configChangeHandlers.add(handler);
186
+ // src/service/html/index.ts
187
+ var import_language_tools3 = require("@marko/language-tools");
188
+ var import_axe_core = __toESM(require("axe-core"));
189
+ var import_jsdom = require("jsdom");
190
+
191
+ // src/utils/file.ts
192
+ var import_language_tools2 = require("@marko/language-tools");
193
+ var import_path2 = __toESM(require("path"));
194
+ var import_vscode_uri2 = require("vscode-uri");
195
+ var processorCaches = /* @__PURE__ */ new WeakMap();
196
+ function getFSDir(doc) {
197
+ const filename = getFSPath(doc);
198
+ return filename && import_path2.default.dirname(filename);
262
199
  }
263
- function setup(_) {
264
- connection = _;
265
- connection.onDidChangeConfiguration(() => {
266
- if (isInitialized) {
267
- settingsCache.clear();
268
- emitConfigChange();
269
- } else {
270
- isInitialized = true;
271
- }
272
- });
200
+ function getFSPath(doc) {
201
+ const parsed = import_vscode_uri2.URI.parse(doc.uri);
202
+ return parsed.scheme === "file" ? parsed.fsPath : void 0;
273
203
  }
274
- function emitConfigChange() {
275
- for (const handler of configChangeHandlers) {
276
- handler();
204
+ function getMarkoFile(doc) {
205
+ const { uri } = doc;
206
+ const { fsPath, scheme } = import_vscode_uri2.URI.parse(uri);
207
+ const filename = scheme === "file" ? fsPath : void 0;
208
+ const dirname = filename ? import_path2.default.dirname(filename) : process.cwd();
209
+ const cache = import_language_tools2.Project.getCache(dirname);
210
+ let file = cache.get(doc);
211
+ if (!file) {
212
+ const { version } = doc;
213
+ const code = doc.getText();
214
+ const parsed = (0, import_language_tools2.parse)(code, filename);
215
+ const lookup = import_language_tools2.Project.getTagLookup(dirname);
216
+ cache.set(
217
+ doc,
218
+ file = {
219
+ uri,
220
+ scheme,
221
+ version,
222
+ lookup,
223
+ filename,
224
+ dirname,
225
+ parsed,
226
+ code
227
+ }
228
+ );
277
229
  }
230
+ return file;
278
231
  }
279
-
280
- // src/utils/messages.ts
281
- var import_util = require("util");
282
- var connection2;
283
- var previousMessagesByType = /* @__PURE__ */ new Map();
284
- function setup2(_) {
285
- connection2 = _;
286
- }
287
- function displayError(data) {
288
- display("showError", data);
232
+ function clearMarkoCacheForFile(doc) {
233
+ import_language_tools2.Project.getCache(getFSDir(doc)).delete(doc);
289
234
  }
290
- function display(type, data) {
291
- const msg = typeof data === "string" ? data : (0, import_util.inspect)(data, { colors: false });
292
- const previousMessages = previousMessagesByType.get(type);
293
- if (previousMessages) {
294
- if (previousMessages.includes(msg)) return;
295
- previousMessages.push(msg);
296
- if (previousMessages.length > 3) {
297
- previousMessages.unshift();
235
+ function processDoc(doc, process2) {
236
+ const file = getMarkoFile(doc);
237
+ const cache = processorCaches.get(file.parsed);
238
+ let result;
239
+ if (cache) {
240
+ result = cache.get(process2);
241
+ if (!result) {
242
+ result = process2(file);
243
+ cache.set(process2, result);
298
244
  }
299
245
  } else {
300
- previousMessagesByType.set(type, [msg]);
246
+ result = process2(file);
247
+ processorCaches.set(file.parsed, /* @__PURE__ */ new Map([[process2, result]]));
301
248
  }
302
- setImmediate(() => connection2.sendNotification(type, msg));
249
+ return result;
303
250
  }
304
251
 
305
- // src/service/index.ts
306
- var import_vscode_languageserver12 = require("vscode-languageserver");
307
-
308
- // src/service/html/index.ts
309
- var import_axe_core = __toESM(require("axe-core"));
310
- var import_language_tools3 = require("@marko/language-tools");
311
- var import_jsdom = require("jsdom");
312
-
313
252
  // src/service/html/axe-rules/axe-rules.ts
314
253
  var keyboard = {
315
254
  /**
@@ -853,7 +792,7 @@ var ruleExceptions = {
853
792
  [aria.ariaInputFieldName]: { unknownBody: true, attrSpread: true },
854
793
  [aria.ariaMeterName]: { unknownBody: true, attrSpread: true },
855
794
  [aria.ariaProgressbarName]: { unknownBody: true, attrSpread: true },
856
- [aria.ariaProhibitedAttr]: {},
795
+ [aria.ariaProhibitedAttr]: { dynamicAttrs: ["role"] },
857
796
  [aria.ariaRequiredAttr]: { attrSpread: true },
858
797
  [aria.ariaRequiredChildren]: { unknownBody: true },
859
798
  [aria.ariaRoles]: { dynamicAttrs: ["role"] },
@@ -1107,31 +1046,6 @@ function isExternalModule(file) {
1107
1046
  var import_path3 = __toESM(require("path"));
1108
1047
  var import_vscode_languageserver3 = require("vscode-languageserver");
1109
1048
 
1110
- // src/service/marko/util/is-document-link-attr.ts
1111
- var import_language_tools4 = require("@marko/language-tools");
1112
- var linkedAttrs = /* @__PURE__ */ new Map([
1113
- [
1114
- "src",
1115
- /* @__PURE__ */ new Set([
1116
- "audio",
1117
- "embed",
1118
- "iframe",
1119
- "img",
1120
- "input",
1121
- "script",
1122
- "source",
1123
- "track",
1124
- "video"
1125
- ])
1126
- ],
1127
- ["href", /* @__PURE__ */ new Set(["a", "area", "link"])],
1128
- ["data", /* @__PURE__ */ new Set(["object"])],
1129
- ["poster", /* @__PURE__ */ new Set(["video"])]
1130
- ]);
1131
- function isDocumentLinkAttr(code, tag, attr) {
1132
- return tag.nameText && attr.type === import_language_tools4.NodeType.AttrNamed && attr.value?.type === import_language_tools4.NodeType.AttrValue && /^['"]$/.test(code[attr.value.value.start]) && linkedAttrs.get(code.slice(attr.name.start, attr.name.end))?.has(tag.nameText) || false;
1133
- }
1134
-
1135
1049
  // src/utils/file-system.ts
1136
1050
  var import_promises = __toESM(require("fs/promises"));
1137
1051
  var import_url = require("url");
@@ -1186,6 +1100,31 @@ function resolveUrl(to, base) {
1186
1100
  }
1187
1101
  }
1188
1102
 
1103
+ // src/service/marko/util/is-document-link-attr.ts
1104
+ var import_language_tools4 = require("@marko/language-tools");
1105
+ var linkedAttrs = /* @__PURE__ */ new Map([
1106
+ [
1107
+ "src",
1108
+ /* @__PURE__ */ new Set([
1109
+ "audio",
1110
+ "embed",
1111
+ "iframe",
1112
+ "img",
1113
+ "input",
1114
+ "script",
1115
+ "source",
1116
+ "track",
1117
+ "video"
1118
+ ])
1119
+ ],
1120
+ ["href", /* @__PURE__ */ new Set(["a", "area", "link"])],
1121
+ ["data", /* @__PURE__ */ new Set(["object"])],
1122
+ ["poster", /* @__PURE__ */ new Set(["video"])]
1123
+ ]);
1124
+ function isDocumentLinkAttr(code, tag, attr) {
1125
+ return tag.nameText && attr.type === import_language_tools4.NodeType.AttrNamed && attr.value?.type === import_language_tools4.NodeType.AttrValue && /^['"]$/.test(code[attr.value.value.start]) && linkedAttrs.get(code.slice(attr.name.start, attr.name.end))?.has(tag.nameText) || false;
1126
+ }
1127
+
1189
1128
  // src/service/marko/complete/AttrValue.ts
1190
1129
  async function AttrValue({
1191
1130
  offset,
@@ -1376,8 +1315,8 @@ function OpenTagName({
1376
1315
  }
1377
1316
 
1378
1317
  // src/service/marko/complete/Tag.ts
1379
- var import_vscode_languageserver6 = require("vscode-languageserver");
1380
1318
  var import_language_tools6 = require("@marko/language-tools");
1319
+ var import_vscode_languageserver6 = require("vscode-languageserver");
1381
1320
  var partialCloseTagReg = /<\/(?:[^><]*>)?/iy;
1382
1321
  function Tag({
1383
1322
  node,
@@ -1447,9 +1386,19 @@ var doComplete = async (doc, params) => {
1447
1386
  var import_language_tools10 = require("@marko/language-tools");
1448
1387
 
1449
1388
  // src/service/marko/definition/AttrName.ts
1389
+ var import_language_tools8 = require("@marko/language-tools");
1450
1390
  var import_fs2 = __toESM(require("fs"));
1451
1391
  var import_vscode_uri4 = require("vscode-uri");
1452
- var import_language_tools8 = require("@marko/language-tools");
1392
+
1393
+ // src/utils/constants.ts
1394
+ var START_POSITION = {
1395
+ line: 0,
1396
+ character: 0
1397
+ };
1398
+ var START_LOCATION = {
1399
+ start: START_POSITION,
1400
+ end: START_POSITION
1401
+ };
1453
1402
 
1454
1403
  // src/utils/regexp-builder.ts
1455
1404
  function RegExpBuilder(strings, ...expressions) {
@@ -1475,16 +1424,6 @@ function escape(val) {
1475
1424
  return String(val).replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
1476
1425
  }
1477
1426
 
1478
- // src/utils/constants.ts
1479
- var START_POSITION = {
1480
- line: 0,
1481
- character: 0
1482
- };
1483
- var START_LOCATION = {
1484
- start: START_POSITION,
1485
- end: START_POSITION
1486
- };
1487
-
1488
1427
  // src/service/marko/definition/AttrName.ts
1489
1428
  function AttrName2({
1490
1429
  node,
@@ -1526,10 +1465,10 @@ function AttrName2({
1526
1465
  }
1527
1466
 
1528
1467
  // src/service/marko/definition/OpenTagName.ts
1468
+ var import_language_tools9 = require("@marko/language-tools");
1529
1469
  var import_fs3 = __toESM(require("fs"));
1530
1470
  var import_path5 = __toESM(require("path"));
1531
1471
  var import_vscode_uri5 = require("vscode-uri");
1532
- var import_language_tools9 = require("@marko/language-tools");
1533
1472
  function OpenTagName2({
1534
1473
  node,
1535
1474
  file: { parsed, lookup }
@@ -1671,8 +1610,8 @@ function extractDocumentLinks({
1671
1610
  }
1672
1611
 
1673
1612
  // src/service/marko/document-symbols.ts
1674
- var import_vscode_languageserver7 = require("vscode-languageserver");
1675
1613
  var import_language_tools12 = require("@marko/language-tools");
1614
+ var import_vscode_languageserver7 = require("vscode-languageserver");
1676
1615
  var findDocumentSymbols = async (doc) => processDoc(doc, extractDocumentSymbols);
1677
1616
  function extractDocumentSymbols({
1678
1617
  uri,
@@ -1716,6 +1655,33 @@ var import_language_tools13 = require("@marko/language-tools");
1716
1655
  var prettier = __toESM(require("prettier"));
1717
1656
  var markoPrettier = __toESM(require("prettier-plugin-marko"));
1718
1657
  var import_vscode_languageserver8 = require("vscode-languageserver");
1658
+
1659
+ // src/utils/messages.ts
1660
+ var import_util = require("util");
1661
+ var connection;
1662
+ var previousMessagesByType = /* @__PURE__ */ new Map();
1663
+ function setup(_) {
1664
+ connection = _;
1665
+ }
1666
+ function displayError(data) {
1667
+ display("showError", data);
1668
+ }
1669
+ function display(type, data) {
1670
+ const msg = typeof data === "string" ? data : (0, import_util.inspect)(data, { colors: false });
1671
+ const previousMessages = previousMessagesByType.get(type);
1672
+ if (previousMessages) {
1673
+ if (previousMessages.includes(msg)) return;
1674
+ previousMessages.push(msg);
1675
+ if (previousMessages.length > 3) {
1676
+ previousMessages.unshift();
1677
+ }
1678
+ } else {
1679
+ previousMessagesByType.set(type, [msg]);
1680
+ }
1681
+ setImmediate(() => connection.sendNotification(type, msg));
1682
+ }
1683
+
1684
+ // src/service/marko/format.ts
1719
1685
  async function formatDocument(doc, formatOptions, cancel) {
1720
1686
  try {
1721
1687
  const dir = getFSDir(doc);
@@ -1794,10 +1760,10 @@ var doHover = async (doc, params) => {
1794
1760
  };
1795
1761
 
1796
1762
  // src/service/marko/validate.ts
1797
- var import_path6 = __toESM(require("path"));
1763
+ var import_babel_utils = require("@marko/babel-utils");
1798
1764
  var import_language_tools15 = require("@marko/language-tools");
1765
+ var import_path6 = __toESM(require("path"));
1799
1766
  var import_vscode_languageserver9 = require("vscode-languageserver");
1800
- var import_babel_utils = require("@marko/babel-utils");
1801
1767
  var markoErrorRegExp = /^(.+?)\.marko(?:\((\d+)(?:\s*,\s*(\d+))?\))?: (.*)$/gm;
1802
1768
  var compilerConfig = {
1803
1769
  code: false,
@@ -1958,17 +1924,17 @@ var marko_default = {
1958
1924
  };
1959
1925
 
1960
1926
  // src/service/script/index.ts
1927
+ var import_language_tools17 = require("@marko/language-tools");
1961
1928
  var import_path8 = __toESM(require("path"));
1929
+ var prettier2 = __toESM(require("prettier"));
1962
1930
  var import_relative_import_path = require("relative-import-path");
1963
1931
  var import_tsserverlibrary = __toESM(require("typescript/lib/tsserverlibrary"));
1964
1932
  var import_vscode_languageserver10 = require("vscode-languageserver");
1965
1933
  var import_vscode_uri6 = require("vscode-uri");
1966
- var prettier2 = __toESM(require("prettier"));
1967
- var import_language_tools17 = require("@marko/language-tools");
1968
1934
 
1969
1935
  // src/ts-plugin/host.ts
1970
- var import_path7 = __toESM(require("path"));
1971
1936
  var import_language_tools16 = require("@marko/language-tools");
1937
+ var import_path7 = __toESM(require("path"));
1972
1938
  var fsPathReg = /^(?:[./\\]|[A-Z]:)/i;
1973
1939
  var modulePartsReg = /^((?:@(?:[^/]+)\/)?(?:[^/]+))(.*)$/;
1974
1940
  function patch(ts2, configFile, extractCache3, resolutionCache, host, ps) {
@@ -2139,6 +2105,42 @@ function patch(ts2, configFile, extractCache3, resolutionCache, host, ps) {
2139
2105
  }
2140
2106
  }
2141
2107
 
2108
+ // src/utils/workspace.ts
2109
+ var isInitialized = false;
2110
+ var connection2;
2111
+ var configChangeHandlers = /* @__PURE__ */ new Set();
2112
+ var settingsCache = /* @__PURE__ */ new Map();
2113
+ async function getConfig(section) {
2114
+ let cached = settingsCache.get(section);
2115
+ if (!cached) {
2116
+ try {
2117
+ cached = await connection2.workspace.getConfiguration(section) || {};
2118
+ settingsCache.set(section, cached);
2119
+ } catch {
2120
+ }
2121
+ }
2122
+ return cached;
2123
+ }
2124
+ function onConfigChange(handler) {
2125
+ configChangeHandlers.add(handler);
2126
+ }
2127
+ function setup2(_) {
2128
+ connection2 = _;
2129
+ connection2.onDidChangeConfiguration(() => {
2130
+ if (isInitialized) {
2131
+ settingsCache.clear();
2132
+ emitConfigChange();
2133
+ } else {
2134
+ isInitialized = true;
2135
+ }
2136
+ });
2137
+ }
2138
+ function emitConfigChange() {
2139
+ for (const handler of configChangeHandlers) {
2140
+ handler();
2141
+ }
2142
+ }
2143
+
2142
2144
  // src/service/script/util/print-jsdoc-tag.ts
2143
2145
  var REG_BACK_TICK = /`/g;
2144
2146
  var REG_LINE = /\r\n|\n/;
@@ -3053,10 +3055,10 @@ function getCanonicalFileName(fileName) {
3053
3055
  }
3054
3056
 
3055
3057
  // src/service/style/index.ts
3058
+ var import_language_tools18 = require("@marko/language-tools");
3056
3059
  var import_vscode_css_languageservice2 = require("vscode-css-languageservice");
3057
3060
  var import_vscode_languageserver11 = require("vscode-languageserver");
3058
3061
  var import_vscode_languageserver_textdocument2 = require("vscode-languageserver-textdocument");
3059
- var import_language_tools18 = require("@marko/language-tools");
3060
3062
  var services = {
3061
3063
  ".css": import_vscode_css_languageservice2.getCSSLanguageService,
3062
3064
  ".less": import_vscode_css_languageservice2.getLESSLanguageService,
@@ -3724,7 +3726,7 @@ console.error = (...args) => {
3724
3726
  process.on("uncaughtException", console.error);
3725
3727
  process.on("unhandledRejection", console.error);
3726
3728
  connection3.onInitialize(async (params) => {
3727
- setup2(connection3);
3729
+ setup(connection3);
3728
3730
  await service.initialize(params);
3729
3731
  return {
3730
3732
  capabilities: {
@@ -3766,7 +3768,7 @@ connection3.onInitialize(async (params) => {
3766
3768
  }
3767
3769
  };
3768
3770
  });
3769
- setup(connection3);
3771
+ setup2(connection3);
3770
3772
  onConfigChange(validateDocs);
3771
3773
  connection3.onDidOpenTextDocument(async (params) => {
3772
3774
  doOpen(params);