@marko/language-server 1.1.0 → 1.1.2

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
@@ -25,13 +25,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
  // src/index.ts
26
26
  var import_util2 = require("util");
27
27
  var import_node = require("vscode-languageserver/node");
28
- var import_language_tools17 = require("@marko/language-tools");
28
+ var import_language_tools18 = require("@marko/language-tools");
29
29
 
30
30
  // src/utils/file.ts
31
31
  var import_path = __toESM(require("path"));
32
32
  var import_language_tools = require("@marko/language-tools");
33
33
  var import_vscode_uri = require("vscode-uri");
34
34
  var processorCaches = /* @__PURE__ */ new WeakMap();
35
+ function getFSDir(doc) {
36
+ const filename = getFSPath(doc);
37
+ return filename ? import_path.default.dirname(filename) : void 0;
38
+ }
35
39
  function getFSPath(doc) {
36
40
  return import_vscode_uri.URI.parse(doc.uri).fsPath;
37
41
  }
@@ -1094,7 +1098,7 @@ function AttrName({
1094
1098
  let label = attr.name;
1095
1099
  let snippet = attr.name;
1096
1100
  if (attr.enum) {
1097
- snippet += `="\${1|${attr.enum.join()}|}"$0`;
1101
+ snippet += `="$1"$0`;
1098
1102
  } else {
1099
1103
  switch (type) {
1100
1104
  case "string":
@@ -1950,13 +1954,17 @@ function extractDocumentSymbols({
1950
1954
  var import_vscode_languageserver9 = require("vscode-languageserver");
1951
1955
  var prettier = __toESM(require("prettier"));
1952
1956
  var markoPrettier = __toESM(require("prettier-plugin-marko"));
1957
+ var import_language_tools14 = require("@marko/language-tools");
1953
1958
  var format2 = async (doc, params, cancel) => {
1954
1959
  try {
1960
+ const dir = getFSDir(doc);
1955
1961
  const filepath = getFSPath(doc);
1956
1962
  const text = doc.getText();
1957
1963
  const options = {
1958
1964
  parser: "marko",
1959
1965
  filepath,
1966
+ markoCompiler: import_language_tools14.Project.getCompiler(dir),
1967
+ markoCompilerConfig: import_language_tools14.Project.getConfig(dir),
1960
1968
  plugins: [markoPrettier],
1961
1969
  tabWidth: params.options.tabSize,
1962
1970
  useTabs: params.options.insertSpaces === false,
@@ -1999,20 +2007,20 @@ var import_tsserverlibrary = __toESM(require("typescript/lib/tsserverlibrary"));
1999
2007
  var import_vscode_languageserver10 = require("vscode-languageserver");
2000
2008
  var import_vscode_uri6 = require("vscode-uri");
2001
2009
  var prettier2 = __toESM(require("prettier"));
2002
- var import_language_tools15 = require("@marko/language-tools");
2010
+ var import_language_tools16 = require("@marko/language-tools");
2003
2011
 
2004
2012
  // src/ts-plugin/host.ts
2005
2013
  var import_path6 = __toESM(require("path"));
2006
- var import_language_tools14 = require("@marko/language-tools");
2014
+ var import_language_tools15 = require("@marko/language-tools");
2007
2015
  var fsPathReg = /^(?:[./\\]|[A-Z]:)/i;
2008
2016
  var modulePartsReg = /^((?:@(?:[^/]+)\/)?(?:[^/]+))(.*)$/;
2009
- import_language_tools14.Project.setDefaultTypePaths({
2017
+ import_language_tools15.Project.setDefaultTypePaths({
2010
2018
  internalTypesFile: import_path6.default.join(__dirname, "marko.internal.d.ts"),
2011
2019
  markoTypesFile: import_path6.default.join(__dirname, "marko.runtime.d.ts")
2012
2020
  });
2013
2021
  function patch(ts2, configFile, extractCache3, resolutionCache, host, ps) {
2014
2022
  var _a, _b, _c;
2015
- const processors = import_language_tools14.Processors.create({
2023
+ const processors = import_language_tools15.Processors.create({
2016
2024
  ts: ts2,
2017
2025
  host,
2018
2026
  configFile
@@ -2079,7 +2087,7 @@ function patch(ts2, configFile, extractCache3, resolutionCache, host, ps) {
2079
2087
  host.readDirectory = (path8, extensions, exclude, include, depth) => {
2080
2088
  return readDirectory2(
2081
2089
  path8,
2082
- extensions == null ? void 0 : extensions.concat(import_language_tools14.Processors.extensions),
2090
+ extensions == null ? void 0 : extensions.concat(import_language_tools15.Processors.extensions),
2083
2091
  exclude,
2084
2092
  include,
2085
2093
  depth
@@ -2126,12 +2134,12 @@ function patch(ts2, configFile, extractCache3, resolutionCache, host, ps) {
2126
2134
  }
2127
2135
  }
2128
2136
  if (resolvedFileName) {
2129
- if ((0, import_language_tools14.isDefinitionFile)(resolvedFileName)) {
2137
+ if ((0, import_language_tools15.isDefinitionFile)(resolvedFileName)) {
2130
2138
  if (!host.fileExists(resolvedFileName)) {
2131
2139
  resolvedFileName = void 0;
2132
2140
  }
2133
2141
  } else {
2134
- const ext = (0, import_language_tools14.getExt)(resolvedFileName);
2142
+ const ext = (0, import_language_tools15.getExt)(resolvedFileName);
2135
2143
  const definitionFile = `${resolvedFileName.slice(
2136
2144
  0,
2137
2145
  -ext.length
@@ -2179,7 +2187,7 @@ function patch(ts2, configFile, extractCache3, resolutionCache, host, ps) {
2179
2187
  }
2180
2188
  return host;
2181
2189
  function getProcessor(fileName) {
2182
- const ext = (0, import_language_tools14.getExt)(fileName);
2190
+ const ext = (0, import_language_tools15.getExt)(fileName);
2183
2191
  return ext ? processors[ext] : void 0;
2184
2192
  }
2185
2193
  }
@@ -2385,7 +2393,7 @@ var ScriptService = {
2385
2393
  return;
2386
2394
  const tsProject = getTSProject(filename);
2387
2395
  const extracted = processScript(doc, tsProject);
2388
- const lang = import_language_tools15.Project.getScriptLang(
2396
+ const lang = import_language_tools16.Project.getScriptLang(
2389
2397
  filename,
2390
2398
  tsProject.markoScriptLang,
2391
2399
  import_tsserverlibrary.default,
@@ -2395,14 +2403,14 @@ var ScriptService = {
2395
2403
  const content = (() => {
2396
2404
  try {
2397
2405
  return prettier2.format(generated, {
2398
- parser: lang === import_language_tools15.ScriptLang.ts ? "typescript" : "babel"
2406
+ parser: lang === import_language_tools16.ScriptLang.ts ? "typescript" : "babel"
2399
2407
  });
2400
2408
  } catch {
2401
2409
  return generated;
2402
2410
  }
2403
2411
  })();
2404
2412
  return {
2405
- language: lang === import_language_tools15.ScriptLang.ts ? "typescript" : "javascript",
2413
+ language: lang === import_language_tools16.ScriptLang.ts ? "typescript" : "javascript",
2406
2414
  content
2407
2415
  };
2408
2416
  }
@@ -2765,12 +2773,12 @@ function processScript(doc, tsProject) {
2765
2773
  return processDoc(doc, ({ filename, parsed, lookup }) => {
2766
2774
  var _a;
2767
2775
  const { host, markoScriptLang } = tsProject;
2768
- return (0, import_language_tools15.extractScript)({
2776
+ return (0, import_language_tools16.extractScript)({
2769
2777
  ts: import_tsserverlibrary.default,
2770
2778
  parsed,
2771
2779
  lookup,
2772
- scriptLang: import_language_tools15.Project.getScriptLang(filename, markoScriptLang, import_tsserverlibrary.default, host),
2773
- runtimeTypesCode: (_a = import_language_tools15.Project.getTypeLibs(tsProject.rootDir, import_tsserverlibrary.default, host)) == null ? void 0 : _a.markoTypesCode
2780
+ scriptLang: import_language_tools16.Project.getScriptLang(filename, markoScriptLang, import_tsserverlibrary.default, host),
2781
+ runtimeTypesCode: (_a = import_language_tools16.Project.getTypeLibs(tsProject.rootDir, import_tsserverlibrary.default, host)) == null ? void 0 : _a.markoTypesCode
2774
2782
  });
2775
2783
  });
2776
2784
  }
@@ -2781,9 +2789,9 @@ function getInsertModuleStatementOffset(parsed) {
2781
2789
  let lastImport;
2782
2790
  for (const node of program.static) {
2783
2791
  switch (node.type) {
2784
- case import_language_tools15.NodeType.Export:
2792
+ case import_language_tools16.NodeType.Export:
2785
2793
  return node.start;
2786
- case import_language_tools15.NodeType.Import:
2794
+ case import_language_tools16.NodeType.Import:
2787
2795
  lastImport = node;
2788
2796
  break;
2789
2797
  }
@@ -2824,7 +2832,7 @@ function docLocationAtTextSpan(doc, { start, length }) {
2824
2832
  function getTSProject(docFsPath) {
2825
2833
  var _a;
2826
2834
  let configFile;
2827
- let markoScriptLang = import_language_tools15.ScriptLang.js;
2835
+ let markoScriptLang = import_language_tools16.ScriptLang.js;
2828
2836
  if (docFsPath) {
2829
2837
  configFile = import_tsserverlibrary.default.findConfigFile(
2830
2838
  docFsPath,
@@ -2832,7 +2840,7 @@ function getTSProject(docFsPath) {
2832
2840
  "tsconfig.json"
2833
2841
  );
2834
2842
  if (configFile) {
2835
- markoScriptLang = import_language_tools15.ScriptLang.ts;
2843
+ markoScriptLang = import_language_tools16.ScriptLang.ts;
2836
2844
  } else {
2837
2845
  configFile = import_tsserverlibrary.default.findConfigFile(
2838
2846
  docFsPath,
@@ -2842,7 +2850,7 @@ function getTSProject(docFsPath) {
2842
2850
  }
2843
2851
  }
2844
2852
  const rootDir = configFile && import_path7.default.dirname(configFile) || process.cwd();
2845
- const cache = import_language_tools15.Project.getCache(configFile && rootDir);
2853
+ const cache = import_language_tools16.Project.getCache(configFile && rootDir);
2846
2854
  let projectCache = cache.get(getTSProject);
2847
2855
  let cached;
2848
2856
  if (projectCache) {
@@ -2981,7 +2989,7 @@ function filenameToURI(filename) {
2981
2989
  }
2982
2990
  async function getPreferences(scriptLang) {
2983
2991
  var _a, _b, _c, _d, _e, _f, _g, _h, _i;
2984
- const configName = scriptLang === import_language_tools15.ScriptLang.js ? "javascript" : "typescript";
2992
+ const configName = scriptLang === import_language_tools16.ScriptLang.js ? "javascript" : "typescript";
2985
2993
  const [preferencesConfig, suggestConfig, inlayHintsConfig] = await Promise.all([
2986
2994
  getConfig(`${configName}.preferences`),
2987
2995
  getConfig(`${configName}.suggest`),
@@ -3138,7 +3146,7 @@ function getCanonicalFileName(fileName) {
3138
3146
  var import_vscode_css_languageservice2 = require("vscode-css-languageservice");
3139
3147
  var import_vscode_languageserver11 = require("vscode-languageserver");
3140
3148
  var import_vscode_languageserver_textdocument2 = require("vscode-languageserver-textdocument");
3141
- var import_language_tools16 = require("@marko/language-tools");
3149
+ var import_language_tools17 = require("@marko/language-tools");
3142
3150
  var services = {
3143
3151
  ".css": import_vscode_css_languageservice2.getCSSLanguageService,
3144
3152
  ".less": import_vscode_css_languageservice2.getLESSLanguageService,
@@ -3445,7 +3453,7 @@ function processStyle(doc) {
3445
3453
  return processDoc(doc, ({ uri, version, parsed, lookup }) => {
3446
3454
  var _a;
3447
3455
  const result = [];
3448
- for (const [ext, extracted] of (0, import_language_tools16.extractStyle)({
3456
+ for (const [ext, extracted] of (0, import_language_tools17.extractStyle)({
3449
3457
  parsed,
3450
3458
  lookup
3451
3459
  })) {
@@ -3541,7 +3549,6 @@ var service = {
3541
3549
  );
3542
3550
  },
3543
3551
  async doComplete(doc, params, cancel) {
3544
- let isIncomplete = false;
3545
3552
  const itemsByLabel = /* @__PURE__ */ new Map();
3546
3553
  await Promise.allSettled(
3547
3554
  plugins.map(async (plugin) => {
@@ -3555,7 +3562,6 @@ var service = {
3555
3562
  curItems = cur;
3556
3563
  } else {
3557
3564
  curItems = cur.items;
3558
- isIncomplete ||= cur.isIncomplete;
3559
3565
  }
3560
3566
  for (const item of curItems) {
3561
3567
  const { label } = item;
@@ -3574,7 +3580,7 @@ var service = {
3574
3580
  if (cancel.isCancellationRequested)
3575
3581
  return;
3576
3582
  if (itemsByLabel.size) {
3577
- return { items: [...itemsByLabel.values()], isIncomplete };
3583
+ return { items: [...itemsByLabel.values()], isIncomplete: true };
3578
3584
  }
3579
3585
  },
3580
3586
  async doCompletionResolve(item, cancel) {
@@ -4031,7 +4037,7 @@ for (const command in service.commands) {
4031
4037
  }
4032
4038
  function validateDocs() {
4033
4039
  queueDiagnostic();
4034
- import_language_tools17.Project.clearCaches();
4040
+ import_language_tools18.Project.clearCaches();
4035
4041
  }
4036
4042
  function queueDiagnostic() {
4037
4043
  clearTimeout(diagnosticTimeout);