@marko/language-server 1.0.15 → 1.0.16

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
@@ -748,73 +748,136 @@ var doComplete = async (doc, params) => {
748
748
  var import_path4 = __toESM(require("path"));
749
749
  var import_language_tools6 = require("@marko/language-tools");
750
750
  var import_vscode_languageserver7 = require("vscode-languageserver");
751
+ var import_babel_utils = require("@marko/babel-utils");
751
752
  var markoErrorRegExp = /^(.+?)\.marko(?:\((\d+)(?:\s*,\s*(\d+))?\))?: (.*)$/gm;
752
753
  var doValidate = (doc) => {
753
754
  const filename = getFSPath(doc);
754
755
  const diagnostics = [];
755
756
  try {
756
- import_language_tools6.Project.getCompiler(filename && import_path4.default.dirname(filename)).compileSync(
757
- doc.getText(),
758
- filename || "untitled.marko",
759
- {
760
- code: false,
761
- output: "source",
762
- sourceMaps: false,
763
- babelConfig: {
764
- caller: {
765
- name: "@marko/language-server",
766
- supportsStaticESM: true,
767
- supportsDynamicImport: true,
768
- supportsTopLevelAwait: true,
769
- supportsExportNamespaceFrom: true
770
- }
757
+ const { meta } = import_language_tools6.Project.getCompiler(
758
+ filename && import_path4.default.dirname(filename)
759
+ ).compileSync(doc.getText(), filename || "untitled.marko", {
760
+ code: false,
761
+ output: "migrate",
762
+ sourceMaps: false,
763
+ errorRecovery: true,
764
+ babelConfig: {
765
+ caller: {
766
+ name: "@marko/language-server",
767
+ supportsStaticESM: true,
768
+ supportsDynamicImport: true,
769
+ supportsTopLevelAwait: true,
770
+ supportsExportNamespaceFrom: true
771
771
  }
772
772
  }
773
- );
774
- } catch (err) {
775
- if (isErrorWithLoc(err)) {
776
- const message = err.label || err.message || err.stack;
777
- if (!message)
778
- return;
779
- const { loc } = err;
780
- diagnostics.push({
781
- range: {
773
+ });
774
+ if (meta.diagnostics) {
775
+ for (const diag of meta.diagnostics) {
776
+ const range = diag.loc ? {
782
777
  start: {
783
- line: loc.start.line - 1,
784
- character: loc.start.column
778
+ line: diag.loc.start.line - 1,
779
+ character: diag.loc.start.column
785
780
  },
786
781
  end: {
787
- line: loc.end.line - 1,
788
- character: loc.end.column
782
+ line: diag.loc.end.line - 1,
783
+ character: diag.loc.end.column
789
784
  }
790
- },
791
- source: "marko",
792
- code: void 0,
793
- tags: void 0,
794
- severity: import_vscode_languageserver7.DiagnosticSeverity.Error,
795
- message
796
- });
797
- } else {
798
- let match;
799
- while (match = markoErrorRegExp.exec(err.message)) {
800
- const [, , rawLine, rawCol, message] = match;
801
- const pos = {
802
- line: (parseInt(rawLine, 10) || 1) - 1,
803
- character: (parseInt(rawCol, 10) || 1) - 1
785
+ } : {
786
+ start: { line: 0, character: 0 },
787
+ end: { line: 0, character: 0 }
804
788
  };
789
+ let severity;
790
+ switch (diag.type) {
791
+ case import_babel_utils.DiagnosticType.Warning:
792
+ case import_babel_utils.DiagnosticType.Deprecation:
793
+ severity = import_vscode_languageserver7.DiagnosticSeverity.Warning;
794
+ break;
795
+ case import_babel_utils.DiagnosticType.Suggestion:
796
+ severity = import_vscode_languageserver7.DiagnosticSeverity.Hint;
797
+ break;
798
+ default:
799
+ severity = import_vscode_languageserver7.DiagnosticSeverity.Error;
800
+ break;
801
+ }
805
802
  diagnostics.push({
806
- range: { start: pos, end: pos },
803
+ range,
807
804
  source: "marko",
808
805
  code: void 0,
809
806
  tags: void 0,
810
- severity: import_vscode_languageserver7.DiagnosticSeverity.Error,
811
- message
807
+ severity,
808
+ message: diag.label
812
809
  });
813
810
  }
814
811
  }
812
+ } catch (err) {
813
+ addDiagnosticsForError(err, diagnostics);
815
814
  }
816
815
  return diagnostics;
817
816
  };
817
+ function addDiagnosticsForError(err, diagnostics) {
818
+ if (!isError(err)) {
819
+ diagnostics.push({
820
+ range: {
821
+ start: { line: 0, character: 0 },
822
+ end: { line: 0, character: 0 }
823
+ },
824
+ source: "marko",
825
+ code: void 0,
826
+ tags: void 0,
827
+ severity: import_vscode_languageserver7.DiagnosticSeverity.Error,
828
+ message: String(err)
829
+ });
830
+ } else if (isAggregateError(err)) {
831
+ for (const nestedError of err.errors) {
832
+ addDiagnosticsForError(nestedError, diagnostics);
833
+ }
834
+ } else if (isErrorWithLoc(err)) {
835
+ const message = err.label || err.message || err.stack;
836
+ if (!message)
837
+ return;
838
+ const { loc } = err;
839
+ diagnostics.push({
840
+ range: {
841
+ start: {
842
+ line: loc.start.line - 1,
843
+ character: loc.start.column
844
+ },
845
+ end: {
846
+ line: loc.end.line - 1,
847
+ character: loc.end.column
848
+ }
849
+ },
850
+ source: "marko",
851
+ code: void 0,
852
+ tags: void 0,
853
+ severity: import_vscode_languageserver7.DiagnosticSeverity.Error,
854
+ message
855
+ });
856
+ } else {
857
+ let match;
858
+ while (match = markoErrorRegExp.exec(err.message)) {
859
+ const [, , rawLine, rawCol, message] = match;
860
+ const pos = {
861
+ line: (parseInt(rawLine, 10) || 1) - 1,
862
+ character: (parseInt(rawCol, 10) || 1) - 1
863
+ };
864
+ diagnostics.push({
865
+ range: { start: pos, end: pos },
866
+ source: "marko",
867
+ code: void 0,
868
+ tags: void 0,
869
+ severity: import_vscode_languageserver7.DiagnosticSeverity.Error,
870
+ message
871
+ });
872
+ }
873
+ }
874
+ }
875
+ function isError(err) {
876
+ return err != null && typeof err === "object" && typeof err.message === "string";
877
+ }
878
+ function isAggregateError(err) {
879
+ return Array.isArray(err == null ? void 0 : err.errors);
880
+ }
818
881
  function isErrorWithLoc(err) {
819
882
  const loc = err == null ? void 0 : err.loc;
820
883
  if (typeof loc !== "object")