@marko/language-server 1.0.14 → 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,32 +748,114 @@ 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
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
+ }
772
+ }
773
+ });
774
+ if (meta.diagnostics) {
775
+ for (const diag of meta.diagnostics) {
776
+ const range = diag.loc ? {
777
+ start: {
778
+ line: diag.loc.start.line - 1,
779
+ character: diag.loc.start.column
780
+ },
781
+ end: {
782
+ line: diag.loc.end.line - 1,
783
+ character: diag.loc.end.column
770
784
  }
785
+ } : {
786
+ start: { line: 0, character: 0 },
787
+ end: { line: 0, character: 0 }
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;
771
801
  }
802
+ diagnostics.push({
803
+ range,
804
+ source: "marko",
805
+ code: void 0,
806
+ tags: void 0,
807
+ severity,
808
+ message: diag.label
809
+ });
772
810
  }
773
- );
774
- } catch (e) {
811
+ }
812
+ } catch (err) {
813
+ addDiagnosticsForError(err, diagnostics);
814
+ }
815
+ return diagnostics;
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 {
775
857
  let match;
776
- while (match = markoErrorRegExp.exec(e.message)) {
858
+ while (match = markoErrorRegExp.exec(err.message)) {
777
859
  const [, , rawLine, rawCol, message] = match;
778
860
  const pos = {
779
861
  line: (parseInt(rawLine, 10) || 1) - 1,
@@ -789,8 +871,19 @@ var doValidate = (doc) => {
789
871
  });
790
872
  }
791
873
  }
792
- return diagnostics;
793
- };
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
+ }
881
+ function isErrorWithLoc(err) {
882
+ const loc = err == null ? void 0 : err.loc;
883
+ if (typeof loc !== "object")
884
+ return false;
885
+ return loc !== null && typeof loc === "object" && typeof loc.start === "object" && typeof loc.end === "object" && typeof loc.start.line === "number" && typeof loc.start.column === "number" && typeof loc.end.line === "number" && typeof loc.end.column === "number";
886
+ }
794
887
 
795
888
  // src/service/marko/hover/index.ts
796
889
  var import_language_tools7 = require("@marko/language-tools");