@macroforge/svelte-language-server 0.1.3
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/README.md +331 -0
- package/bin/server.js +5 -0
- package/dist/src/importPackage.d.ts +16 -0
- package/dist/src/importPackage.js +76 -0
- package/dist/src/importPackage.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +23 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/DiagnosticsManager.d.ts +20 -0
- package/dist/src/lib/DiagnosticsManager.js +71 -0
- package/dist/src/lib/DiagnosticsManager.js.map +1 -0
- package/dist/src/lib/FallbackWatcher.d.ts +15 -0
- package/dist/src/lib/FallbackWatcher.js +66 -0
- package/dist/src/lib/FallbackWatcher.js.map +1 -0
- package/dist/src/lib/documentHighlight/wordHighlight.d.ts +3 -0
- package/dist/src/lib/documentHighlight/wordHighlight.js +62 -0
- package/dist/src/lib/documentHighlight/wordHighlight.js.map +1 -0
- package/dist/src/lib/documents/Document.d.ts +63 -0
- package/dist/src/lib/documents/Document.js +138 -0
- package/dist/src/lib/documents/Document.js.map +1 -0
- package/dist/src/lib/documents/DocumentBase.d.ts +65 -0
- package/dist/src/lib/documents/DocumentBase.js +69 -0
- package/dist/src/lib/documents/DocumentBase.js.map +1 -0
- package/dist/src/lib/documents/DocumentManager.d.ts +28 -0
- package/dist/src/lib/documents/DocumentManager.js +122 -0
- package/dist/src/lib/documents/DocumentManager.js.map +1 -0
- package/dist/src/lib/documents/DocumentMapper.d.ts +88 -0
- package/dist/src/lib/documents/DocumentMapper.js +258 -0
- package/dist/src/lib/documents/DocumentMapper.js.map +1 -0
- package/dist/src/lib/documents/configLoader.d.ts +80 -0
- package/dist/src/lib/documents/configLoader.js +265 -0
- package/dist/src/lib/documents/configLoader.js.map +1 -0
- package/dist/src/lib/documents/fileCollection.d.ts +41 -0
- package/dist/src/lib/documents/fileCollection.js +87 -0
- package/dist/src/lib/documents/fileCollection.js.map +1 -0
- package/dist/src/lib/documents/index.d.ts +5 -0
- package/dist/src/lib/documents/index.js +22 -0
- package/dist/src/lib/documents/index.js.map +1 -0
- package/dist/src/lib/documents/parseHtml.d.ts +13 -0
- package/dist/src/lib/documents/parseHtml.js +160 -0
- package/dist/src/lib/documents/parseHtml.js.map +1 -0
- package/dist/src/lib/documents/utils.d.ts +105 -0
- package/dist/src/lib/documents/utils.js +410 -0
- package/dist/src/lib/documents/utils.js.map +1 -0
- package/dist/src/lib/foldingRange/indentFolding.d.ts +26 -0
- package/dist/src/lib/foldingRange/indentFolding.js +142 -0
- package/dist/src/lib/foldingRange/indentFolding.js.map +1 -0
- package/dist/src/lib/semanticToken/semanticTokenLegend.d.ts +33 -0
- package/dist/src/lib/semanticToken/semanticTokenLegend.js +37 -0
- package/dist/src/lib/semanticToken/semanticTokenLegend.js.map +1 -0
- package/dist/src/logger.d.ts +9 -0
- package/dist/src/logger.js +28 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/ls-config.d.ts +326 -0
- package/dist/src/ls-config.js +386 -0
- package/dist/src/ls-config.js.map +1 -0
- package/dist/src/plugins/PluginHost.d.ts +68 -0
- package/dist/src/plugins/PluginHost.js +447 -0
- package/dist/src/plugins/PluginHost.js.map +1 -0
- package/dist/src/plugins/css/CSSDocument.d.ts +46 -0
- package/dist/src/plugins/css/CSSDocument.js +78 -0
- package/dist/src/plugins/css/CSSDocument.js.map +1 -0
- package/dist/src/plugins/css/CSSPlugin.d.ts +35 -0
- package/dist/src/plugins/css/CSSPlugin.js +407 -0
- package/dist/src/plugins/css/CSSPlugin.js.map +1 -0
- package/dist/src/plugins/css/FileSystemProvider.d.ts +10 -0
- package/dist/src/plugins/css/FileSystemProvider.js +75 -0
- package/dist/src/plugins/css/FileSystemProvider.js.map +1 -0
- package/dist/src/plugins/css/StyleAttributeDocument.d.ts +41 -0
- package/dist/src/plugins/css/StyleAttributeDocument.js +65 -0
- package/dist/src/plugins/css/StyleAttributeDocument.js.map +1 -0
- package/dist/src/plugins/css/features/getIdClassCompletion.d.ts +19 -0
- package/dist/src/plugins/css/features/getIdClassCompletion.js +56 -0
- package/dist/src/plugins/css/features/getIdClassCompletion.js.map +1 -0
- package/dist/src/plugins/css/features/svelte-selectors.d.ts +2 -0
- package/dist/src/plugins/css/features/svelte-selectors.js +18 -0
- package/dist/src/plugins/css/features/svelte-selectors.js.map +1 -0
- package/dist/src/plugins/css/global-vars.d.ts +16 -0
- package/dist/src/plugins/css/global-vars.js +82 -0
- package/dist/src/plugins/css/global-vars.js.map +1 -0
- package/dist/src/plugins/css/service.d.ts +5 -0
- package/dist/src/plugins/css/service.js +66 -0
- package/dist/src/plugins/css/service.js.map +1 -0
- package/dist/src/plugins/documentContext.d.ts +3 -0
- package/dist/src/plugins/documentContext.js +36 -0
- package/dist/src/plugins/documentContext.js.map +1 -0
- package/dist/src/plugins/html/HTMLPlugin.d.ts +36 -0
- package/dist/src/plugins/html/HTMLPlugin.js +363 -0
- package/dist/src/plugins/html/HTMLPlugin.js.map +1 -0
- package/dist/src/plugins/html/dataProvider.d.ts +1 -0
- package/dist/src/plugins/html/dataProvider.js +481 -0
- package/dist/src/plugins/html/dataProvider.js.map +1 -0
- package/dist/src/plugins/index.d.ts +7 -0
- package/dist/src/plugins/index.js +24 -0
- package/dist/src/plugins/index.js.map +1 -0
- package/dist/src/plugins/interfaces.d.ts +132 -0
- package/dist/src/plugins/interfaces.js +3 -0
- package/dist/src/plugins/interfaces.js.map +1 -0
- package/dist/src/plugins/svelte/SvelteDocument.d.ts +98 -0
- package/dist/src/plugins/svelte/SvelteDocument.js +318 -0
- package/dist/src/plugins/svelte/SvelteDocument.js.map +1 -0
- package/dist/src/plugins/svelte/SveltePlugin.d.ts +24 -0
- package/dist/src/plugins/svelte/SveltePlugin.js +306 -0
- package/dist/src/plugins/svelte/SveltePlugin.js.map +1 -0
- package/dist/src/plugins/svelte/features/SvelteTags.d.ts +28 -0
- package/dist/src/plugins/svelte/features/SvelteTags.js +136 -0
- package/dist/src/plugins/svelte/features/SvelteTags.js.map +1 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.d.ts +11 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.js +140 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.js.map +1 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.d.ts +9 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.js +140 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.js.map +1 -0
- package/dist/src/plugins/svelte/features/getCodeActions/index.d.ts +4 -0
- package/dist/src/plugins/svelte/features/getCodeActions/index.js +19 -0
- package/dist/src/plugins/svelte/features/getCodeActions/index.js.map +1 -0
- package/dist/src/plugins/svelte/features/getCompletions.d.ts +4 -0
- package/dist/src/plugins/svelte/features/getCompletions.js +184 -0
- package/dist/src/plugins/svelte/features/getCompletions.js.map +1 -0
- package/dist/src/plugins/svelte/features/getDiagnostics.d.ts +9 -0
- package/dist/src/plugins/svelte/features/getDiagnostics.js +284 -0
- package/dist/src/plugins/svelte/features/getDiagnostics.js.map +1 -0
- package/dist/src/plugins/svelte/features/getHoverInfo.d.ts +7 -0
- package/dist/src/plugins/svelte/features/getHoverInfo.js +93 -0
- package/dist/src/plugins/svelte/features/getHoverInfo.js.map +1 -0
- package/dist/src/plugins/svelte/features/getModifierData.d.ts +7 -0
- package/dist/src/plugins/svelte/features/getModifierData.js +56 -0
- package/dist/src/plugins/svelte/features/getModifierData.js.map +1 -0
- package/dist/src/plugins/svelte/features/getSelectionRanges.d.ts +3 -0
- package/dist/src/plugins/svelte/features/getSelectionRanges.js +46 -0
- package/dist/src/plugins/svelte/features/getSelectionRanges.js.map +1 -0
- package/dist/src/plugins/svelte/features/utils.d.ts +5 -0
- package/dist/src/plugins/svelte/features/utils.js +18 -0
- package/dist/src/plugins/svelte/features/utils.js.map +1 -0
- package/dist/src/plugins/typescript/ComponentInfoProvider.d.ts +27 -0
- package/dist/src/plugins/typescript/ComponentInfoProvider.js +116 -0
- package/dist/src/plugins/typescript/ComponentInfoProvider.js.map +1 -0
- package/dist/src/plugins/typescript/DocumentMapper.d.ts +10 -0
- package/dist/src/plugins/typescript/DocumentMapper.js +25 -0
- package/dist/src/plugins/typescript/DocumentMapper.js.map +1 -0
- package/dist/src/plugins/typescript/DocumentSnapshot.d.ts +173 -0
- package/dist/src/plugins/typescript/DocumentSnapshot.js +623 -0
- package/dist/src/plugins/typescript/DocumentSnapshot.js.map +1 -0
- package/dist/src/plugins/typescript/LSAndTSDocResolver.d.ts +100 -0
- package/dist/src/plugins/typescript/LSAndTSDocResolver.js +301 -0
- package/dist/src/plugins/typescript/LSAndTSDocResolver.js.map +1 -0
- package/dist/src/plugins/typescript/SnapshotManager.d.ts +59 -0
- package/dist/src/plugins/typescript/SnapshotManager.js +238 -0
- package/dist/src/plugins/typescript/SnapshotManager.js.map +1 -0
- package/dist/src/plugins/typescript/TypeScriptPlugin.d.ts +65 -0
- package/dist/src/plugins/typescript/TypeScriptPlugin.js +332 -0
- package/dist/src/plugins/typescript/TypeScriptPlugin.js.map +1 -0
- package/dist/src/plugins/typescript/features/CallHierarchyProvider.d.ts +24 -0
- package/dist/src/plugins/typescript/features/CallHierarchyProvider.js +325 -0
- package/dist/src/plugins/typescript/features/CallHierarchyProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/CodeActionsProvider.d.ts +72 -0
- package/dist/src/plugins/typescript/features/CodeActionsProvider.js +1030 -0
- package/dist/src/plugins/typescript/features/CodeActionsProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/CodeLensProvider.d.ts +28 -0
- package/dist/src/plugins/typescript/features/CodeLensProvider.js +205 -0
- package/dist/src/plugins/typescript/features/CodeLensProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/CompletionProvider.d.ts +57 -0
- package/dist/src/plugins/typescript/features/CompletionProvider.js +791 -0
- package/dist/src/plugins/typescript/features/CompletionProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/DiagnosticsProvider.d.ts +36 -0
- package/dist/src/plugins/typescript/features/DiagnosticsProvider.js +497 -0
- package/dist/src/plugins/typescript/features/DiagnosticsProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/DocumentHighlightProvider.d.ts +17 -0
- package/dist/src/plugins/typescript/features/DocumentHighlightProvider.js +211 -0
- package/dist/src/plugins/typescript/features/DocumentHighlightProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.d.ts +9 -0
- package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.js +66 -0
- package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/FindFileReferencesProvider.d.ts +9 -0
- package/dist/src/plugins/typescript/features/FindFileReferencesProvider.js +38 -0
- package/dist/src/plugins/typescript/features/FindFileReferencesProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/FindReferencesProvider.d.ts +20 -0
- package/dist/src/plugins/typescript/features/FindReferencesProvider.js +149 -0
- package/dist/src/plugins/typescript/features/FindReferencesProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/FoldingRangeProvider.d.ts +28 -0
- package/dist/src/plugins/typescript/features/FoldingRangeProvider.js +247 -0
- package/dist/src/plugins/typescript/features/FoldingRangeProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/HoverProvider.d.ts +11 -0
- package/dist/src/plugins/typescript/features/HoverProvider.js +75 -0
- package/dist/src/plugins/typescript/features/HoverProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/ImplementationProvider.d.ts +9 -0
- package/dist/src/plugins/typescript/features/ImplementationProvider.js +47 -0
- package/dist/src/plugins/typescript/features/ImplementationProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/InlayHintProvider.d.ts +22 -0
- package/dist/src/plugins/typescript/features/InlayHintProvider.js +225 -0
- package/dist/src/plugins/typescript/features/InlayHintProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/RenameProvider.d.ts +53 -0
- package/dist/src/plugins/typescript/features/RenameProvider.js +423 -0
- package/dist/src/plugins/typescript/features/RenameProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/SelectionRangeProvider.d.ts +18 -0
- package/dist/src/plugins/typescript/features/SelectionRangeProvider.js +62 -0
- package/dist/src/plugins/typescript/features/SelectionRangeProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/SemanticTokensProvider.d.ts +15 -0
- package/dist/src/plugins/typescript/features/SemanticTokensProvider.js +116 -0
- package/dist/src/plugins/typescript/features/SemanticTokensProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/SignatureHelpProvider.d.ts +22 -0
- package/dist/src/plugins/typescript/features/SignatureHelpProvider.js +110 -0
- package/dist/src/plugins/typescript/features/SignatureHelpProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/TypeDefinitionProvider.d.ts +9 -0
- package/dist/src/plugins/typescript/features/TypeDefinitionProvider.js +35 -0
- package/dist/src/plugins/typescript/features/TypeDefinitionProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/UpdateImportsProvider.d.ts +11 -0
- package/dist/src/plugins/typescript/features/UpdateImportsProvider.js +109 -0
- package/dist/src/plugins/typescript/features/UpdateImportsProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.d.ts +25 -0
- package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.js +176 -0
- package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.d.ts +13 -0
- package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.js +58 -0
- package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.js.map +1 -0
- package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.d.ts +4 -0
- package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.js +57 -0
- package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.js.map +1 -0
- package/dist/src/plugins/typescript/features/utils.d.ts +81 -0
- package/dist/src/plugins/typescript/features/utils.js +331 -0
- package/dist/src/plugins/typescript/features/utils.js.map +1 -0
- package/dist/src/plugins/typescript/macroforgeAugmenter.d.ts +23 -0
- package/dist/src/plugins/typescript/macroforgeAugmenter.js +41 -0
- package/dist/src/plugins/typescript/macroforgeAugmenter.js.map +1 -0
- package/dist/src/plugins/typescript/module-loader.d.ts +28 -0
- package/dist/src/plugins/typescript/module-loader.js +254 -0
- package/dist/src/plugins/typescript/module-loader.js.map +1 -0
- package/dist/src/plugins/typescript/previewer.d.ts +7 -0
- package/dist/src/plugins/typescript/previewer.js +120 -0
- package/dist/src/plugins/typescript/previewer.js.map +1 -0
- package/dist/src/plugins/typescript/service.d.ts +105 -0
- package/dist/src/plugins/typescript/service.js +1073 -0
- package/dist/src/plugins/typescript/service.js.map +1 -0
- package/dist/src/plugins/typescript/serviceCache.d.ts +90 -0
- package/dist/src/plugins/typescript/serviceCache.js +50 -0
- package/dist/src/plugins/typescript/serviceCache.js.map +1 -0
- package/dist/src/plugins/typescript/svelte-ast-utils.d.ts +77 -0
- package/dist/src/plugins/typescript/svelte-ast-utils.js +100 -0
- package/dist/src/plugins/typescript/svelte-ast-utils.js.map +1 -0
- package/dist/src/plugins/typescript/svelte-sys.d.ts +9 -0
- package/dist/src/plugins/typescript/svelte-sys.js +79 -0
- package/dist/src/plugins/typescript/svelte-sys.js.map +1 -0
- package/dist/src/plugins/typescript/utils.d.ts +48 -0
- package/dist/src/plugins/typescript/utils.js +334 -0
- package/dist/src/plugins/typescript/utils.js.map +1 -0
- package/dist/src/server.d.ts +19 -0
- package/dist/src/server.js +434 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/svelte-check.d.ts +65 -0
- package/dist/src/svelte-check.js +288 -0
- package/dist/src/svelte-check.js.map +1 -0
- package/dist/src/utils.d.ts +111 -0
- package/dist/src/utils.js +337 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FileSet = exports.FileMap = void 0;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const utils_1 = require("../../utils");
|
|
9
|
+
/**
|
|
10
|
+
* wrapper around Map<string, T> for case insensitive file systems
|
|
11
|
+
*/
|
|
12
|
+
class FileMap {
|
|
13
|
+
constructor(useCaseSensitiveFileNames = typescript_1.default.sys.useCaseSensitiveFileNames) {
|
|
14
|
+
this.map = new Map();
|
|
15
|
+
this.getCanonicalFileName = (0, utils_1.createGetCanonicalFileName)(useCaseSensitiveFileNames);
|
|
16
|
+
}
|
|
17
|
+
get(filePath) {
|
|
18
|
+
return this.map.get(this.getCanonicalFileName(filePath));
|
|
19
|
+
}
|
|
20
|
+
set(filePath, value) {
|
|
21
|
+
const canonicalFileName = this.getCanonicalFileName(filePath);
|
|
22
|
+
return this.map.set(canonicalFileName, value);
|
|
23
|
+
}
|
|
24
|
+
has(filePath) {
|
|
25
|
+
return this.map.has(this.getCanonicalFileName(filePath));
|
|
26
|
+
}
|
|
27
|
+
delete(filePath) {
|
|
28
|
+
return this.map.delete(this.getCanonicalFileName(filePath));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns an iterable of key, value pairs for every entry in the map.
|
|
32
|
+
* In case insensitive file system the key in the key-value pairs is in lowercase
|
|
33
|
+
*/
|
|
34
|
+
entries() {
|
|
35
|
+
return this.map.entries();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
*
|
|
39
|
+
* @param callbackfn In case insensitive file system the key parameter for the callback is in lowercase
|
|
40
|
+
*/
|
|
41
|
+
forEach(callbackfn) {
|
|
42
|
+
return this.map.forEach(callbackfn);
|
|
43
|
+
}
|
|
44
|
+
values() {
|
|
45
|
+
return this.map.values();
|
|
46
|
+
}
|
|
47
|
+
clear() {
|
|
48
|
+
this.map.clear();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Returns an iterable of values in the map.
|
|
52
|
+
* In case insensitive file system the key is in lowercase
|
|
53
|
+
*/
|
|
54
|
+
keys() {
|
|
55
|
+
return this.map.keys();
|
|
56
|
+
}
|
|
57
|
+
get size() {
|
|
58
|
+
return this.map.size;
|
|
59
|
+
}
|
|
60
|
+
[Symbol.iterator]() {
|
|
61
|
+
return this.map[Symbol.iterator]();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.FileMap = FileMap;
|
|
65
|
+
class FileSet {
|
|
66
|
+
constructor(useCaseSensitiveFileNames = typescript_1.default.sys.useCaseSensitiveFileNames) {
|
|
67
|
+
this.set = new Set();
|
|
68
|
+
this.getCanonicalFileName = (0, utils_1.createGetCanonicalFileName)(useCaseSensitiveFileNames);
|
|
69
|
+
}
|
|
70
|
+
add(filePath) {
|
|
71
|
+
this.set.add(this.getCanonicalFileName(filePath));
|
|
72
|
+
}
|
|
73
|
+
has(filePath) {
|
|
74
|
+
return this.set.has(this.getCanonicalFileName(filePath));
|
|
75
|
+
}
|
|
76
|
+
delete(filePath) {
|
|
77
|
+
return this.set.delete(this.getCanonicalFileName(filePath));
|
|
78
|
+
}
|
|
79
|
+
clear() {
|
|
80
|
+
this.set.clear();
|
|
81
|
+
}
|
|
82
|
+
[Symbol.iterator]() {
|
|
83
|
+
return this.set[Symbol.iterator]();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.FileSet = FileSet;
|
|
87
|
+
//# sourceMappingURL=fileCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileCollection.js","sourceRoot":"","sources":["../../../../src/lib/documents/fileCollection.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAC5B,uCAA+E;AAE/E;;GAEG;AACH,MAAa,OAAO;IAIhB,YAAY,yBAAyB,GAAG,oBAAE,CAAC,GAAG,CAAC,yBAAyB;QAFvD,QAAG,GAAG,IAAI,GAAG,EAAa,CAAC;QAGxC,IAAI,CAAC,oBAAoB,GAAG,IAAA,kCAA0B,EAAC,yBAAyB,CAAC,CAAC;IACtF,CAAC;IAED,GAAG,CAAC,QAAgB;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG,CAAC,QAAgB,EAAE,KAAQ;QAC1B,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,GAAG,CAAC,QAAgB;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,QAAgB;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACH,OAAO;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,UAA2C;QAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI;QACA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,CAAC;CACJ;AAjED,0BAiEC;AAED,MAAa,OAAO;IAIhB,YAAY,yBAAyB,GAAG,oBAAE,CAAC,GAAG,CAAC,yBAAyB;QAFvD,QAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAGrC,IAAI,CAAC,oBAAoB,GAAG,IAAA,kCAA0B,EAAC,yBAAyB,CAAC,CAAC;IACtF,CAAC;IAED,GAAG,CAAC,QAAgB;QAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,GAAG,CAAC,QAAgB;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,QAAgB;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,CAAC;CACJ;AA3BD,0BA2BC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./DocumentManager"), exports);
|
|
18
|
+
__exportStar(require("./Document"), exports);
|
|
19
|
+
__exportStar(require("./DocumentBase"), exports);
|
|
20
|
+
__exportStar(require("./DocumentMapper"), exports);
|
|
21
|
+
__exportStar(require("./utils"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/documents/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,6CAA2B;AAC3B,iDAA+B;AAC/B,mDAAiC;AACjC,0CAAwB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HTMLDocument, Node, Position } from 'vscode-html-languageservice';
|
|
2
|
+
import { Document } from './Document';
|
|
3
|
+
/**
|
|
4
|
+
* Parses text as HTML
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseHtml(text: string): HTMLDocument;
|
|
7
|
+
export interface AttributeContext {
|
|
8
|
+
name: string;
|
|
9
|
+
inValue: boolean;
|
|
10
|
+
elementTag: Node;
|
|
11
|
+
valueRange?: [number, number];
|
|
12
|
+
}
|
|
13
|
+
export declare function getAttributeContextAtPosition(document: Document, position: Position): AttributeContext | null;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseHtml = parseHtml;
|
|
4
|
+
exports.getAttributeContextAtPosition = getAttributeContextAtPosition;
|
|
5
|
+
const vscode_html_languageservice_1 = require("vscode-html-languageservice");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const parser = (0, vscode_html_languageservice_1.getLanguageService)();
|
|
8
|
+
/**
|
|
9
|
+
* Parses text as HTML
|
|
10
|
+
*/
|
|
11
|
+
function parseHtml(text) {
|
|
12
|
+
const preprocessed = preprocess(text);
|
|
13
|
+
// We can safely only set getText because only this is used for parsing
|
|
14
|
+
const parsedDoc = parser.parseHTMLDocument({ getText: () => preprocessed });
|
|
15
|
+
return parsedDoc;
|
|
16
|
+
}
|
|
17
|
+
const createScanner = parser.createScanner;
|
|
18
|
+
/**
|
|
19
|
+
* scan the text and remove any `>` or `<` that cause the tag to end short,
|
|
20
|
+
*/
|
|
21
|
+
function preprocess(text) {
|
|
22
|
+
let scanner = createScanner(text);
|
|
23
|
+
let token = scanner.scan();
|
|
24
|
+
let currentStartTagStart = null;
|
|
25
|
+
let moustacheCheckStart = 0;
|
|
26
|
+
let moustacheCheckEnd = 0;
|
|
27
|
+
let lastToken = token;
|
|
28
|
+
while (token !== vscode_html_languageservice_1.TokenType.EOS) {
|
|
29
|
+
const offset = scanner.getTokenOffset();
|
|
30
|
+
let blanked = false;
|
|
31
|
+
switch (token) {
|
|
32
|
+
case vscode_html_languageservice_1.TokenType.StartTagOpen:
|
|
33
|
+
if (shouldBlankStartOrEndTagLike(offset)) {
|
|
34
|
+
blankStartOrEndTagLike(offset);
|
|
35
|
+
blanked = true;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
currentStartTagStart = offset;
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
case vscode_html_languageservice_1.TokenType.StartTagClose:
|
|
42
|
+
if (shouldBlankStartOrEndTagLike(offset)) {
|
|
43
|
+
blankStartOrEndTagLike(offset);
|
|
44
|
+
blanked = true;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
currentStartTagStart = null;
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
case vscode_html_languageservice_1.TokenType.StartTagSelfClose:
|
|
51
|
+
currentStartTagStart = null;
|
|
52
|
+
break;
|
|
53
|
+
// <Foo checked={a < 1}>
|
|
54
|
+
// https://github.com/microsoft/vscode-html-languageservice/blob/71806ef57be07e1068ee40900ef8b0899c80e68a/src/parser/htmlScanner.ts#L327
|
|
55
|
+
case vscode_html_languageservice_1.TokenType.Unknown:
|
|
56
|
+
if (scanner.getScannerState() === vscode_html_languageservice_1.ScannerState.WithinTag &&
|
|
57
|
+
scanner.getTokenText() === '<' &&
|
|
58
|
+
shouldBlankStartOrEndTagLike(offset)) {
|
|
59
|
+
blankStartOrEndTagLike(offset);
|
|
60
|
+
blanked = true;
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
63
|
+
case vscode_html_languageservice_1.TokenType.Content: {
|
|
64
|
+
moustacheCheckEnd = scanner.getTokenEnd();
|
|
65
|
+
if (token !== lastToken) {
|
|
66
|
+
moustacheCheckStart = offset;
|
|
67
|
+
}
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// blanked, so the token type is invalid
|
|
72
|
+
if (!blanked) {
|
|
73
|
+
lastToken = token;
|
|
74
|
+
}
|
|
75
|
+
token = scanner.scan();
|
|
76
|
+
}
|
|
77
|
+
return text;
|
|
78
|
+
function shouldBlankStartOrEndTagLike(offset) {
|
|
79
|
+
if (currentStartTagStart != null) {
|
|
80
|
+
return (0, utils_1.isInsideMoustacheTag)(text, currentStartTagStart, offset);
|
|
81
|
+
}
|
|
82
|
+
const index = text
|
|
83
|
+
.substring(moustacheCheckStart, moustacheCheckEnd)
|
|
84
|
+
.lastIndexOf('{', offset);
|
|
85
|
+
const lastMustacheTagStart = index === -1 ? null : moustacheCheckStart + index;
|
|
86
|
+
if (lastMustacheTagStart == null) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return (0, utils_1.isInsideMoustacheTag)(text.substring(lastMustacheTagStart), null, offset - lastMustacheTagStart);
|
|
90
|
+
}
|
|
91
|
+
function blankStartOrEndTagLike(offset) {
|
|
92
|
+
text = text.substring(0, offset) + ' ' + text.substring(offset + 1);
|
|
93
|
+
scanner = createScanner(text, offset, currentStartTagStart != null ? vscode_html_languageservice_1.ScannerState.WithinTag : vscode_html_languageservice_1.ScannerState.WithinContent);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function getAttributeContextAtPosition(document, position) {
|
|
97
|
+
const offset = document.offsetAt(position);
|
|
98
|
+
const { html } = document;
|
|
99
|
+
const tag = html.findNodeAt(offset);
|
|
100
|
+
if (!inStartTag(offset, tag) || !tag.attributes) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const text = document.getText();
|
|
104
|
+
const beforeStartTagEnd = text.substring(0, tag.start) + preprocess(text.substring(tag.start, tag.startTagEnd));
|
|
105
|
+
const scanner = createScanner(beforeStartTagEnd, tag.start);
|
|
106
|
+
let token = scanner.scan();
|
|
107
|
+
let currentAttributeName;
|
|
108
|
+
const inTokenRange = () => scanner.getTokenOffset() <= offset && offset <= scanner.getTokenEnd();
|
|
109
|
+
while (token != vscode_html_languageservice_1.TokenType.EOS) {
|
|
110
|
+
// adopted from https://github.com/microsoft/vscode-html-languageservice/blob/2f7ae4df298ac2c299a40e9024d118f4a9dc0c68/src/services/htmlCompletion.ts#L402
|
|
111
|
+
if (token === vscode_html_languageservice_1.TokenType.AttributeName) {
|
|
112
|
+
currentAttributeName = scanner.getTokenText();
|
|
113
|
+
if (inTokenRange()) {
|
|
114
|
+
return {
|
|
115
|
+
elementTag: tag,
|
|
116
|
+
name: currentAttributeName,
|
|
117
|
+
inValue: false
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else if (token === vscode_html_languageservice_1.TokenType.DelimiterAssign) {
|
|
122
|
+
if (scanner.getTokenEnd() === offset && currentAttributeName) {
|
|
123
|
+
const nextToken = scanner.scan();
|
|
124
|
+
return {
|
|
125
|
+
elementTag: tag,
|
|
126
|
+
name: currentAttributeName,
|
|
127
|
+
inValue: true,
|
|
128
|
+
valueRange: [
|
|
129
|
+
offset,
|
|
130
|
+
nextToken === vscode_html_languageservice_1.TokenType.AttributeValue ? scanner.getTokenEnd() : offset
|
|
131
|
+
]
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else if (token === vscode_html_languageservice_1.TokenType.AttributeValue) {
|
|
136
|
+
if (inTokenRange() && currentAttributeName) {
|
|
137
|
+
let start = scanner.getTokenOffset();
|
|
138
|
+
let end = scanner.getTokenEnd();
|
|
139
|
+
const char = text[start];
|
|
140
|
+
if (char === '"' || char === "'") {
|
|
141
|
+
start++;
|
|
142
|
+
end--;
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
elementTag: tag,
|
|
146
|
+
name: currentAttributeName,
|
|
147
|
+
inValue: true,
|
|
148
|
+
valueRange: [start, end]
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
currentAttributeName = undefined;
|
|
152
|
+
}
|
|
153
|
+
token = scanner.scan();
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
function inStartTag(offset, node) {
|
|
158
|
+
return offset > node.start && node.startTagEnd != undefined && offset < node.startTagEnd;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=parseHtml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseHtml.js","sourceRoot":"","sources":["../../../../src/lib/documents/parseHtml.ts"],"names":[],"mappings":";;AAiBA,8BAOC;AAmHD,sEAwEC;AAnND,6EAQqC;AAErC,mCAA+C;AAE/C,MAAM,MAAM,GAAG,IAAA,gDAAkB,GAAE,CAAC;AAEpC;;GAEG;AACH,SAAgB,SAAS,CAAC,IAAY;IAClC,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEtC,uEAAuE;IACvE,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IAEjF,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,aAIjB,CAAC;AAEb;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC5B,IAAI,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,oBAAoB,GAAkB,IAAI,CAAC;IAC/C,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,OAAO,KAAK,KAAK,uCAAS,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QACxC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,QAAQ,KAAK,EAAE,CAAC;YACZ,KAAK,uCAAS,CAAC,YAAY;gBACvB,IAAI,4BAA4B,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvC,sBAAsB,CAAC,MAAM,CAAC,CAAC;oBAC/B,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACJ,oBAAoB,GAAG,MAAM,CAAC;gBAClC,CAAC;gBACD,MAAM;YAEV,KAAK,uCAAS,CAAC,aAAa;gBACxB,IAAI,4BAA4B,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvC,sBAAsB,CAAC,MAAM,CAAC,CAAC;oBAC/B,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACJ,oBAAoB,GAAG,IAAI,CAAC;gBAChC,CAAC;gBACD,MAAM;YAEV,KAAK,uCAAS,CAAC,iBAAiB;gBAC5B,oBAAoB,GAAG,IAAI,CAAC;gBAC5B,MAAM;YAEV,wBAAwB;YACxB,wIAAwI;YACxI,KAAK,uCAAS,CAAC,OAAO;gBAClB,IACI,OAAO,CAAC,eAAe,EAAE,KAAK,0CAAY,CAAC,SAAS;oBACpD,OAAO,CAAC,YAAY,EAAE,KAAK,GAAG;oBAC9B,4BAA4B,CAAC,MAAM,CAAC,EACtC,CAAC;oBACC,sBAAsB,CAAC,MAAM,CAAC,CAAC;oBAC/B,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBACD,MAAM;YAEV,KAAK,uCAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBACrB,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACtB,mBAAmB,GAAG,MAAM,CAAC;gBACjC,CAAC;gBACD,MAAM;YACV,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,SAAS,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;IAEZ,SAAS,4BAA4B,CAAC,MAAc;QAChD,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAA,4BAAoB,EAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,KAAK,GAAG,IAAI;aACb,SAAS,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;aACjD,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE9B,MAAM,oBAAoB,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAC/E,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,IAAA,4BAAoB,EACvB,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EACpC,IAAI,EACJ,MAAM,GAAG,oBAAoB,CAChC,CAAC;IACN,CAAC;IAED,SAAS,sBAAsB,CAAC,MAAc;QAC1C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpE,OAAO,GAAG,aAAa,CACnB,IAAI,EACJ,MAAM,EACN,oBAAoB,IAAI,IAAI,CAAC,CAAC,CAAC,0CAAY,CAAC,SAAS,CAAC,CAAC,CAAC,0CAAY,CAAC,aAAa,CACrF,CAAC;IACN,CAAC;AACL,CAAC;AASD,SAAgB,6BAA6B,CACzC,QAAkB,EAClB,QAAkB;IAElB,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEpC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,MAAM,iBAAiB,GACnB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1F,MAAM,OAAO,GAAG,aAAa,CAAC,iBAAiB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAE5D,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,oBAAwC,CAAC;IAC7C,MAAM,YAAY,GAAG,GAAG,EAAE,CACtB,OAAO,CAAC,cAAc,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1E,OAAO,KAAK,IAAI,uCAAS,CAAC,GAAG,EAAE,CAAC;QAC5B,0JAA0J;QAC1J,IAAI,KAAK,KAAK,uCAAS,CAAC,aAAa,EAAE,CAAC;YACpC,oBAAoB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAE9C,IAAI,YAAY,EAAE,EAAE,CAAC;gBACjB,OAAO;oBACH,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,KAAK;iBACjB,CAAC;YACN,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,KAAK,uCAAS,CAAC,eAAe,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,oBAAoB,EAAE,CAAC;gBAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;gBAEjC,OAAO;oBACH,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE;wBACR,MAAM;wBACN,SAAS,KAAK,uCAAS,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM;qBAC1E;iBACJ,CAAC;YACN,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,KAAK,uCAAS,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,YAAY,EAAE,IAAI,oBAAoB,EAAE,CAAC;gBACzC,IAAI,KAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;gBACrC,IAAI,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEzB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;oBAC/B,KAAK,EAAE,CAAC;oBACR,GAAG,EAAE,CAAC;gBACV,CAAC;gBAED,OAAO;oBACH,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;iBAC3B,CAAC;YACN,CAAC;YACD,oBAAoB,GAAG,SAAS,CAAC;QACrC,CAAC;QACD,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,IAAU;IAC1C,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Position, Range } from 'vscode-languageserver';
|
|
2
|
+
import { Node, HTMLDocument } from 'vscode-html-languageservice';
|
|
3
|
+
import { Document } from './Document';
|
|
4
|
+
export interface TagInformation {
|
|
5
|
+
content: string;
|
|
6
|
+
attributes: Record<string, string>;
|
|
7
|
+
start: number;
|
|
8
|
+
end: number;
|
|
9
|
+
startPos: Position;
|
|
10
|
+
endPos: Position;
|
|
11
|
+
container: {
|
|
12
|
+
start: number;
|
|
13
|
+
end: number;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare function extractScriptTags(source: string, html?: HTMLDocument): {
|
|
17
|
+
script?: TagInformation;
|
|
18
|
+
moduleScript?: TagInformation;
|
|
19
|
+
} | null;
|
|
20
|
+
export declare function extractStyleTag(source: string, html?: HTMLDocument): TagInformation | null;
|
|
21
|
+
export declare function extractTemplateTag(source: string, html?: HTMLDocument): TagInformation | null;
|
|
22
|
+
/**
|
|
23
|
+
* Get the line and character based on the offset
|
|
24
|
+
* @param offset The index of the position
|
|
25
|
+
* @param text The text for which the position should be retrived
|
|
26
|
+
* @param lineOffsets number Array with offsets for each line. Computed if not given
|
|
27
|
+
*/
|
|
28
|
+
export declare function positionAt(offset: number, text: string, lineOffsets?: number[]): Position;
|
|
29
|
+
/**
|
|
30
|
+
* Get the offset of the line and character position
|
|
31
|
+
* @param position Line and character position
|
|
32
|
+
* @param text The text for which the offset should be retrived
|
|
33
|
+
* @param lineOffsets number Array with offsets for each line. Computed if not given
|
|
34
|
+
*/
|
|
35
|
+
export declare function offsetAt(position: Position, text: string, lineOffsets?: number[]): number;
|
|
36
|
+
export declare function getLineOffsets(text: string): number[];
|
|
37
|
+
export declare function isInTag(position: Position, tagInfo: TagInformation | null): tagInfo is TagInformation;
|
|
38
|
+
export declare function isRangeInTag(range: Range, tagInfo: TagInformation | null): tagInfo is TagInformation;
|
|
39
|
+
export declare function getTextInRange(range: Range, text: string): string;
|
|
40
|
+
export declare function getLineAtPosition(position: Position, text: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Assumption: Is called with a line. A line does only contain line break characters
|
|
43
|
+
* at its end.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isAtEndOfLine(line: string, offset: number): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Updates a relative import
|
|
48
|
+
*
|
|
49
|
+
* @param oldPath Old absolute path
|
|
50
|
+
* @param newPath New absolute path
|
|
51
|
+
* @param relativeImportPath Import relative to the old path
|
|
52
|
+
*/
|
|
53
|
+
export declare function updateRelativeImport(oldPath: string, newPath: string, relativeImportPath: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Returns the node if offset is inside a component's starttag
|
|
56
|
+
*/
|
|
57
|
+
export declare function getNodeIfIsInComponentStartTag(html: HTMLDocument, document: Document, offset: number): Node | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Returns the node if offset is inside a HTML starttag
|
|
60
|
+
*/
|
|
61
|
+
export declare function getNodeIfIsInHTMLStartTag(html: HTMLDocument, offset: number): Node | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Returns the node if offset is inside a starttag (HTML or component)
|
|
64
|
+
*/
|
|
65
|
+
export declare function getNodeIfIsInStartTag(html: HTMLDocument, offset: number): Node | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Returns `true` if `offset` is a html tag and within the name of the start tag or end tag
|
|
68
|
+
*/
|
|
69
|
+
export declare function isInHTMLTagRange(html: HTMLDocument, offset: number): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Gets word range at position.
|
|
72
|
+
* Delimiter is by default a whitespace, but can be adjusted.
|
|
73
|
+
*/
|
|
74
|
+
export declare function getWordRangeAt(str: string, pos: number, delimiterRegex?: {
|
|
75
|
+
left: RegExp;
|
|
76
|
+
right: RegExp;
|
|
77
|
+
}): {
|
|
78
|
+
start: number;
|
|
79
|
+
end: number;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Gets word at position.
|
|
83
|
+
* Delimiter is by default a whitespace, but can be adjusted.
|
|
84
|
+
*/
|
|
85
|
+
export declare function getWordAt(str: string, pos: number, delimiterRegex?: {
|
|
86
|
+
left: RegExp;
|
|
87
|
+
right: RegExp;
|
|
88
|
+
}): string;
|
|
89
|
+
/**
|
|
90
|
+
* Returns start/end offset of a text into a range
|
|
91
|
+
*/
|
|
92
|
+
export declare function toRange(str: string, start: number, end: number): Range;
|
|
93
|
+
export declare function toRange(str: Document, start: number, end: number): Range;
|
|
94
|
+
/**
|
|
95
|
+
* Returns the language from the given tags, return the first from which a language is found.
|
|
96
|
+
* Searches inside lang and type and removes leading 'text/'
|
|
97
|
+
*/
|
|
98
|
+
export declare function getLangAttribute(...tags: Array<TagInformation | null>): string | null;
|
|
99
|
+
/**
|
|
100
|
+
* Checks whether given position is inside a moustache tag (which includes control flow tags)
|
|
101
|
+
* using a simple bracket matching heuristic which might fail under conditions like
|
|
102
|
+
* `{#if {a: true}.a}`
|
|
103
|
+
*/
|
|
104
|
+
export declare function isInsideMoustacheTag(html: string, tagStart: number | null, position: number): boolean;
|
|
105
|
+
export declare function inStyleOrScript(document: Document, position: Position): boolean;
|