@marko/language-server 0.12.10 → 0.12.11
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 +41 -39
- package/dist/index.js.map +2 -2
- package/dist/index.mjs +41 -39
- package/dist/index.mjs.map +2 -2
- package/dist/utils/file-system.d.ts +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -843,7 +843,7 @@ function AttrName({
|
|
|
843
843
|
}
|
|
844
844
|
|
|
845
845
|
// src/service/marko/complete/AttrValue.ts
|
|
846
|
-
var
|
|
846
|
+
var import_path3 = __toESM(require("path"));
|
|
847
847
|
var import_vscode_languageserver4 = require("vscode-languageserver");
|
|
848
848
|
|
|
849
849
|
// src/service/marko/util/is-document-link-attr.ts
|
|
@@ -872,20 +872,20 @@ function isDocumentLinkAttr(doc, tag, attr) {
|
|
|
872
872
|
}
|
|
873
873
|
|
|
874
874
|
// src/utils/file-system.ts
|
|
875
|
-
var import_path3 = __toESM(require("path"));
|
|
876
875
|
var import_promises = __toESM(require("fs/promises"));
|
|
877
876
|
var import_vscode_css_languageservice = require("vscode-css-languageservice");
|
|
877
|
+
var import_url = require("url");
|
|
878
878
|
var file_system_default = {
|
|
879
879
|
stat,
|
|
880
880
|
readDirectory
|
|
881
881
|
};
|
|
882
|
-
async function stat(
|
|
883
|
-
const stat2 = await import_promises.default.stat(fileName).catch(() => null);
|
|
882
|
+
async function stat(uri) {
|
|
884
883
|
let type = import_vscode_css_languageservice.FileType.Unknown;
|
|
885
|
-
let ctime =
|
|
886
|
-
let mtime =
|
|
887
|
-
let size =
|
|
888
|
-
|
|
884
|
+
let ctime = -1;
|
|
885
|
+
let mtime = -1;
|
|
886
|
+
let size = -1;
|
|
887
|
+
try {
|
|
888
|
+
const stat2 = await import_promises.default.stat((0, import_url.fileURLToPath)(uri));
|
|
889
889
|
if (stat2.isDirectory())
|
|
890
890
|
type = import_vscode_css_languageservice.FileType.Directory;
|
|
891
891
|
else if (stat2.isFile())
|
|
@@ -893,6 +893,7 @@ async function stat(fileName) {
|
|
|
893
893
|
ctime = stat2.ctimeMs;
|
|
894
894
|
mtime = stat2.mtimeMs;
|
|
895
895
|
size = stat2.size;
|
|
896
|
+
} catch {
|
|
896
897
|
}
|
|
897
898
|
return {
|
|
898
899
|
type,
|
|
@@ -901,20 +902,22 @@ async function stat(fileName) {
|
|
|
901
902
|
size
|
|
902
903
|
};
|
|
903
904
|
}
|
|
904
|
-
async function readDirectory(
|
|
905
|
-
|
|
905
|
+
async function readDirectory(uri) {
|
|
906
|
+
try {
|
|
907
|
+
const entries = await import_promises.default.readdir((0, import_url.fileURLToPath)(uri));
|
|
908
|
+
const base = uri.at(-1) === "/" ? uri : `${uri}/`;
|
|
909
|
+
return (await Promise.all(entries.map(async (entry) => [entry, (await stat(new URL(entry, base).toString())).type]))).filter(([, type]) => type !== import_vscode_css_languageservice.FileType.Unknown);
|
|
910
|
+
} catch {
|
|
911
|
+
return [];
|
|
912
|
+
}
|
|
906
913
|
}
|
|
907
914
|
|
|
908
915
|
// src/utils/resolve-url.ts
|
|
909
916
|
function resolveUrl(to, base) {
|
|
910
917
|
try {
|
|
911
|
-
const
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
if (resolved.origin === origin && resolved.protocol === protocol) {
|
|
915
|
-
return resolved.pathname + resolved.search + resolved.hash;
|
|
916
|
-
}
|
|
917
|
-
return resolved.toString();
|
|
918
|
+
const url = new URL(to, base);
|
|
919
|
+
if (url.protocol === "file:")
|
|
920
|
+
return url.toString();
|
|
918
921
|
} catch {
|
|
919
922
|
return void 0;
|
|
920
923
|
}
|
|
@@ -939,28 +942,29 @@ async function AttrValue({
|
|
|
939
942
|
start,
|
|
940
943
|
end
|
|
941
944
|
});
|
|
942
|
-
|
|
945
|
+
const segmentStart = rawValue.lastIndexOf("/", relativeOffset);
|
|
943
946
|
if (segmentStart === -1)
|
|
944
|
-
|
|
945
|
-
const
|
|
946
|
-
const
|
|
947
|
-
if (
|
|
947
|
+
return;
|
|
948
|
+
const req = rawValue.slice(0, segmentStart);
|
|
949
|
+
const uri = resolveUrl(req, document.uri);
|
|
950
|
+
if (uri) {
|
|
948
951
|
const result = [];
|
|
949
|
-
const
|
|
950
|
-
const curFile = curDir === dir ? import_path4.default.basename(document.uri) : void 0;
|
|
952
|
+
const curFile = req === "." ? import_path3.default.basename(document.uri) : void 0;
|
|
951
953
|
const replaceRange = import_vscode_languageserver4.Range.create(document.positionAt(start + segmentStart + 1), document.positionAt(start + rawValue.length));
|
|
952
|
-
for (const [entry, type] of await file_system_default.readDirectory(
|
|
954
|
+
for (const [entry, type] of await file_system_default.readDirectory(uri)) {
|
|
953
955
|
if (entry[0] !== "." && entry !== curFile) {
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
textEdit: import_vscode_languageserver4.TextEdit.replace(replaceRange, label),
|
|
960
|
-
command: isDir ? {
|
|
956
|
+
result.push(type === import_vscode_css_languageservice.FileType.Directory ? {
|
|
957
|
+
label: `${entry}/`,
|
|
958
|
+
kind: import_vscode_languageserver4.CompletionItemKind.Folder,
|
|
959
|
+
textEdit: import_vscode_languageserver4.TextEdit.replace(replaceRange, `${entry}/`),
|
|
960
|
+
command: {
|
|
961
961
|
title: "Suggest",
|
|
962
962
|
command: "editor.action.triggerSuggest"
|
|
963
|
-
}
|
|
963
|
+
}
|
|
964
|
+
} : {
|
|
965
|
+
label: entry,
|
|
966
|
+
kind: import_vscode_languageserver4.CompletionItemKind.File,
|
|
967
|
+
textEdit: import_vscode_languageserver4.TextEdit.replace(replaceRange, entry)
|
|
964
968
|
});
|
|
965
969
|
}
|
|
966
970
|
}
|
|
@@ -1020,7 +1024,7 @@ var doValidate = (doc) => {
|
|
|
1020
1024
|
};
|
|
1021
1025
|
|
|
1022
1026
|
// src/service/marko/definition/OpenTagName.ts
|
|
1023
|
-
var
|
|
1027
|
+
var import_path4 = __toESM(require("path"));
|
|
1024
1028
|
var import_vscode_uri4 = require("vscode-uri");
|
|
1025
1029
|
var import_vscode_languageserver8 = require("vscode-languageserver");
|
|
1026
1030
|
|
|
@@ -1081,7 +1085,7 @@ function OpenTagName2({
|
|
|
1081
1085
|
return;
|
|
1082
1086
|
}
|
|
1083
1087
|
const tagEntryFile = tagDef.template || tagDef.renderer || tagDef.filePath;
|
|
1084
|
-
if (!
|
|
1088
|
+
if (!import_path4.default.isAbsolute(tagEntryFile)) {
|
|
1085
1089
|
return;
|
|
1086
1090
|
}
|
|
1087
1091
|
if (/\/marko(?:-tag)?\.json$/.test(tagEntryFile)) {
|
|
@@ -1509,15 +1513,13 @@ var StyleSheetService = {
|
|
|
1509
1513
|
return result.length ? result : void 0;
|
|
1510
1514
|
}
|
|
1511
1515
|
},
|
|
1512
|
-
findDocumentLinks(doc) {
|
|
1516
|
+
async findDocumentLinks(doc) {
|
|
1513
1517
|
const infoByExt = getStyleSheetInfo(doc);
|
|
1514
1518
|
const result = [];
|
|
1515
1519
|
for (const ext in infoByExt) {
|
|
1516
1520
|
const info = infoByExt[ext];
|
|
1517
1521
|
const { service: service2, virtualDoc } = info;
|
|
1518
|
-
for (const link of service2.
|
|
1519
|
-
resolveReference: resolveUrl
|
|
1520
|
-
})) {
|
|
1522
|
+
for (const link of await service2.findDocumentLinks2(virtualDoc, info.parsed, { resolveReference: resolveUrl })) {
|
|
1521
1523
|
const range = getSourceRange(doc, info, link.range);
|
|
1522
1524
|
if (range) {
|
|
1523
1525
|
result.push({
|