runescript-lsp 0.0.1
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/LICENSE +21 -0
- package/README.md +15 -0
- package/dist/cache/CompletionCache.d.ts +15 -0
- package/dist/cache/CompletionCache.js +58 -0
- package/dist/cache/CompletionCache.js.map +1 -0
- package/dist/cache/FileCache.d.ts +25 -0
- package/dist/cache/FileCache.js +101 -0
- package/dist/cache/FileCache.js.map +1 -0
- package/dist/cache/IdCache.d.ts +28 -0
- package/dist/cache/IdCache.js +47 -0
- package/dist/cache/IdCache.js.map +1 -0
- package/dist/cache/SymbolCache.d.ts +76 -0
- package/dist/cache/SymbolCache.js +205 -0
- package/dist/cache/SymbolCache.js.map +1 -0
- package/dist/cache/Trie.d.ts +22 -0
- package/dist/cache/Trie.js +122 -0
- package/dist/cache/Trie.js.map +1 -0
- package/dist/cache/WorkspaceCache.d.ts +32 -0
- package/dist/cache/WorkspaceCache.js +60 -0
- package/dist/cache/WorkspaceCache.js.map +1 -0
- package/dist/cache/cacheManager.d.ts +16 -0
- package/dist/cache/cacheManager.js +47 -0
- package/dist/cache/cacheManager.js.map +1 -0
- package/dist/handler/colorProvider.d.ts +2 -0
- package/dist/handler/colorProvider.js +103 -0
- package/dist/handler/colorProvider.js.map +1 -0
- package/dist/handler/commands.d.ts +6 -0
- package/dist/handler/commands.js +25 -0
- package/dist/handler/commands.js.map +1 -0
- package/dist/handler/completion.d.ts +3 -0
- package/dist/handler/completion.js +25 -0
- package/dist/handler/completion.js.map +1 -0
- package/dist/handler/definition.d.ts +2 -0
- package/dist/handler/definition.js +20 -0
- package/dist/handler/definition.js.map +1 -0
- package/dist/handler/fileEvents.d.ts +3 -0
- package/dist/handler/fileEvents.js +107 -0
- package/dist/handler/fileEvents.js.map +1 -0
- package/dist/handler/gitEvents.d.ts +6 -0
- package/dist/handler/gitEvents.js +22 -0
- package/dist/handler/gitEvents.js.map +1 -0
- package/dist/handler/hover.d.ts +2 -0
- package/dist/handler/hover.js +125 -0
- package/dist/handler/hover.js.map +1 -0
- package/dist/handler/references.d.ts +2 -0
- package/dist/handler/references.js +33 -0
- package/dist/handler/references.js.map +1 -0
- package/dist/handler/rename.d.ts +2 -0
- package/dist/handler/rename.js +6 -0
- package/dist/handler/rename.js.map +1 -0
- package/dist/handler/semanticTokens.d.ts +4 -0
- package/dist/handler/semanticTokens.js +40 -0
- package/dist/handler/semanticTokens.js.map +1 -0
- package/dist/handler/settingsEvents.d.ts +2 -0
- package/dist/handler/settingsEvents.js +11 -0
- package/dist/handler/settingsEvents.js.map +1 -0
- package/dist/handler/signatureHelp.d.ts +2 -0
- package/dist/handler/signatureHelp.js +6 -0
- package/dist/handler/signatureHelp.js.map +1 -0
- package/dist/handler/workspaceEvents.d.ts +2 -0
- package/dist/handler/workspaceEvents.js +30 -0
- package/dist/handler/workspaceEvents.js.map +1 -0
- package/dist/manager.d.ts +6 -0
- package/dist/manager.js +126 -0
- package/dist/manager.js.map +1 -0
- package/dist/parser/configParser.d.ts +29 -0
- package/dist/parser/configParser.js +216 -0
- package/dist/parser/configParser.js.map +1 -0
- package/dist/parser/constantParser.d.ts +14 -0
- package/dist/parser/constantParser.js +40 -0
- package/dist/parser/constantParser.js.map +1 -0
- package/dist/parser/dbtableParser.d.ts +18 -0
- package/dist/parser/dbtableParser.js +114 -0
- package/dist/parser/dbtableParser.js.map +1 -0
- package/dist/parser/packParser.d.ts +11 -0
- package/dist/parser/packParser.js +13 -0
- package/dist/parser/packParser.js.map +1 -0
- package/dist/parser/parser.d.ts +44 -0
- package/dist/parser/parser.js +34 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/parser/runescriptParser.d.ts +13 -0
- package/dist/parser/runescriptParser.js +28 -0
- package/dist/parser/runescriptParser.js.map +1 -0
- package/dist/public/commands.d.ts +1 -0
- package/dist/public/commands.js +2 -0
- package/dist/public/commands.js.map +1 -0
- package/dist/public/settings.d.ts +2 -0
- package/dist/public/settings.js +2 -0
- package/dist/public/settings.js.map +1 -0
- package/dist/public/types.d.ts +2 -0
- package/dist/public/types.js +2 -0
- package/dist/public/types.js.map +1 -0
- package/dist/resolver/configResolver.d.ts +2 -0
- package/dist/resolver/configResolver.js +102 -0
- package/dist/resolver/configResolver.js.map +1 -0
- package/dist/resolver/constantResolver.d.ts +2 -0
- package/dist/resolver/constantResolver.js +37 -0
- package/dist/resolver/constantResolver.js.map +1 -0
- package/dist/resolver/dbtableResolver.d.ts +2 -0
- package/dist/resolver/dbtableResolver.js +28 -0
- package/dist/resolver/dbtableResolver.js.map +1 -0
- package/dist/resolver/packResolver.d.ts +2 -0
- package/dist/resolver/packResolver.js +32 -0
- package/dist/resolver/packResolver.js.map +1 -0
- package/dist/resolver/resolver.d.ts +15 -0
- package/dist/resolver/resolver.js +95 -0
- package/dist/resolver/resolver.js.map +1 -0
- package/dist/resolver/runescriptResolver.d.ts +2 -0
- package/dist/resolver/runescriptResolver.js +347 -0
- package/dist/resolver/runescriptResolver.js.map +1 -0
- package/dist/resource/configKeys.d.ts +21 -0
- package/dist/resource/configKeys.js +86 -0
- package/dist/resource/configKeys.js.map +1 -0
- package/dist/resource/enum/displayItems.d.ts +13 -0
- package/dist/resource/enum/displayItems.js +23 -0
- package/dist/resource/enum/displayItems.js.map +1 -0
- package/dist/resource/enum/fileTypes.d.ts +26 -0
- package/dist/resource/enum/fileTypes.js +28 -0
- package/dist/resource/enum/fileTypes.js.map +1 -0
- package/dist/resource/enum/languages.d.ts +25 -0
- package/dist/resource/enum/languages.js +27 -0
- package/dist/resource/enum/languages.js.map +1 -0
- package/dist/resource/enum/regex.d.ts +24 -0
- package/dist/resource/enum/regex.js +25 -0
- package/dist/resource/enum/regex.js.map +1 -0
- package/dist/resource/enum/semanticTokens.d.ts +24 -0
- package/dist/resource/enum/semanticTokens.js +26 -0
- package/dist/resource/enum/semanticTokens.js.map +1 -0
- package/dist/resource/enum/symbolTypes.d.ts +49 -0
- package/dist/resource/enum/symbolTypes.js +51 -0
- package/dist/resource/enum/symbolTypes.js.map +1 -0
- package/dist/resource/enum/types.d.ts +47 -0
- package/dist/resource/enum/types.js +49 -0
- package/dist/resource/enum/types.js.map +1 -0
- package/dist/resource/scriptTriggers.d.ts +8 -0
- package/dist/resource/scriptTriggers.js +72 -0
- package/dist/resource/scriptTriggers.js.map +1 -0
- package/dist/resource/symbolConfig.d.ts +10 -0
- package/dist/resource/symbolConfig.js +234 -0
- package/dist/resource/symbolConfig.js.map +1 -0
- package/dist/resource/symbolPostProcessors.d.ts +15 -0
- package/dist/resource/symbolPostProcessors.js +70 -0
- package/dist/resource/symbolPostProcessors.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +110 -0
- package/dist/server.js.map +1 -0
- package/dist/types.d.ts +214 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cacheUtils.d.ts +12 -0
- package/dist/utils/cacheUtils.js +26 -0
- package/dist/utils/cacheUtils.js.map +1 -0
- package/dist/utils/connectionUtils.d.ts +3 -0
- package/dist/utils/connectionUtils.js +8 -0
- package/dist/utils/connectionUtils.js.map +1 -0
- package/dist/utils/diagnosticsUtils.d.ts +4 -0
- package/dist/utils/diagnosticsUtils.js +11 -0
- package/dist/utils/diagnosticsUtils.js.map +1 -0
- package/dist/utils/documentUtils.d.ts +5 -0
- package/dist/utils/documentUtils.js +14 -0
- package/dist/utils/documentUtils.js.map +1 -0
- package/dist/utils/fileUtils.d.ts +42 -0
- package/dist/utils/fileUtils.js +82 -0
- package/dist/utils/fileUtils.js.map +1 -0
- package/dist/utils/handlerUtils.d.ts +1 -0
- package/dist/utils/handlerUtils.js +5 -0
- package/dist/utils/handlerUtils.js.map +1 -0
- package/dist/utils/highlightUtils.d.ts +7 -0
- package/dist/utils/highlightUtils.js +52 -0
- package/dist/utils/highlightUtils.js.map +1 -0
- package/dist/utils/initUtils.d.ts +3 -0
- package/dist/utils/initUtils.js +18 -0
- package/dist/utils/initUtils.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.js +38 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/progressUtils.d.ts +7 -0
- package/dist/utils/progressUtils.js +31 -0
- package/dist/utils/progressUtils.js.map +1 -0
- package/dist/utils/resolverUtils.d.ts +17 -0
- package/dist/utils/resolverUtils.js +97 -0
- package/dist/utils/resolverUtils.js.map +1 -0
- package/dist/utils/settingsUtils.d.ts +19 -0
- package/dist/utils/settingsUtils.js +88 -0
- package/dist/utils/settingsUtils.js.map +1 -0
- package/dist/utils/symbolBuilder.d.ts +10 -0
- package/dist/utils/symbolBuilder.js +135 -0
- package/dist/utils/symbolBuilder.js.map +1 -0
- package/dist/utils/workspaceUtils.d.ts +11 -0
- package/dist/utils/workspaceUtils.js +52 -0
- package/dist/utils/workspaceUtils.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
let connection;
|
|
2
|
+
export function initProgress(conn) {
|
|
3
|
+
connection = conn;
|
|
4
|
+
}
|
|
5
|
+
export async function startProgress(title, message, percentage = 0, cancellable = false) {
|
|
6
|
+
if (!connection) {
|
|
7
|
+
throw new Error("progressUtils not initialized. Call initProgress(connection) first.");
|
|
8
|
+
}
|
|
9
|
+
const progress = await connection.window.createWorkDoneProgress();
|
|
10
|
+
progress.begin(title, percentage, message, cancellable);
|
|
11
|
+
return wrapProgress(progress);
|
|
12
|
+
}
|
|
13
|
+
function wrapProgress(progress) {
|
|
14
|
+
return {
|
|
15
|
+
report: (percentageOrMessage, message) => {
|
|
16
|
+
if (typeof percentageOrMessage === "number") {
|
|
17
|
+
if (message !== undefined) {
|
|
18
|
+
progress.report(percentageOrMessage, message);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
progress.report(percentageOrMessage);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (typeof percentageOrMessage === "string") {
|
|
25
|
+
progress.report(percentageOrMessage);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
done: () => progress.done(),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=progressUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressUtils.js","sourceRoot":"","sources":["../../src/utils/progressUtils.ts"],"names":[],"mappings":"AAOA,IAAI,UAAkC,CAAC;AAEvC,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,OAAgB,EAAE,UAAU,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK;IACtG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;IAClE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACxD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,YAAY,CAAC,QAAkC;IACtD,OAAO;QACL,MAAM,EAAE,CAAC,mBAAqC,EAAE,OAAgB,EAAE,EAAE;YAClE,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE,CAAC;gBAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;oBAC9C,OAAO;gBACT,CAAC;gBACD,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YACD,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE,CAAC;gBAC5C,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Location, Position, Range } from "vscode-languageserver";
|
|
2
|
+
import { SymbolType } from "../resource/enum/symbolTypes.js";
|
|
3
|
+
import { DataRange, FileInfo, ResolvedData, ResolvedSymbol, RunescriptSymbol } from "../types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Binary search to find the match of a data range list at the index provided, if there is one
|
|
6
|
+
* @param index Index of the item you are looking for
|
|
7
|
+
* @param items List of the DataRanges which hold the data being retrieved
|
|
8
|
+
* @returns The data of the DataRange, if a match is found
|
|
9
|
+
*/
|
|
10
|
+
export declare function findMatchInRange<T>(index: number, items?: DataRange<T>[]): DataRange<T> | undefined;
|
|
11
|
+
export declare function buildLocation(start: number, end: number, line: number, uri: string): Location;
|
|
12
|
+
export declare function buildRange(start: number, end: number, line: number): Range;
|
|
13
|
+
export declare function buildPosition(index: number, line: number): Position;
|
|
14
|
+
export declare function resolveAtHandlerPosition(position: Position, fileInfo: FileInfo): DataRange<ResolvedSymbol> | undefined;
|
|
15
|
+
export declare function resolveRefDataRange(symbolType: SymbolType, start: number, end: number, line: number, name: string, fileType: string, context?: Record<string, any>, extraData?: Record<string, any>): DataRange<ResolvedData>;
|
|
16
|
+
export declare function resolveDefDataRange(start: number, end: number, line: number, symbol: RunescriptSymbol, declaration: boolean, context?: Record<string, any>): DataRange<ResolvedData>;
|
|
17
|
+
export declare function toCoord(n: number): string;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Location, Position, Range } from "vscode-languageserver";
|
|
2
|
+
import { getSymbolConfig } from "../resource/symbolConfig.js";
|
|
3
|
+
import { buildSymbolFromRef } from "./symbolBuilder.js";
|
|
4
|
+
import { getFileCache } from "../cache/cacheManager.js";
|
|
5
|
+
/**
|
|
6
|
+
* Binary search to find the match of a data range list at the index provided, if there is one
|
|
7
|
+
* @param index Index of the item you are looking for
|
|
8
|
+
* @param items List of the DataRanges which hold the data being retrieved
|
|
9
|
+
* @returns The data of the DataRange, if a match is found
|
|
10
|
+
*/
|
|
11
|
+
export function findMatchInRange(index, items) {
|
|
12
|
+
if (!items)
|
|
13
|
+
return undefined;
|
|
14
|
+
let lo = 0;
|
|
15
|
+
let hi = items.length - 1;
|
|
16
|
+
while (lo <= hi) {
|
|
17
|
+
const mid = (lo + hi) >> 1;
|
|
18
|
+
const item = items[mid];
|
|
19
|
+
if (index < item.start)
|
|
20
|
+
hi = mid - 1;
|
|
21
|
+
else if (index > item.end)
|
|
22
|
+
lo = mid + 1;
|
|
23
|
+
else
|
|
24
|
+
return item;
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
export function buildLocation(start, end, line, uri) {
|
|
29
|
+
return Location.create(uri, buildRange(start, end, line));
|
|
30
|
+
}
|
|
31
|
+
export function buildRange(start, end, line) {
|
|
32
|
+
return Range.create(buildPosition(start, line), buildPosition(end, line));
|
|
33
|
+
}
|
|
34
|
+
export function buildPosition(index, line) {
|
|
35
|
+
return Position.create(line, index);
|
|
36
|
+
}
|
|
37
|
+
export function resolveAtHandlerPosition(position, fileInfo) {
|
|
38
|
+
const fileCache = getFileCache(fileInfo.workspace, fileInfo.fsPath);
|
|
39
|
+
if (!fileCache)
|
|
40
|
+
return undefined;
|
|
41
|
+
const resolvedDataRange = fileCache.getAtPosition(position);
|
|
42
|
+
if (!resolvedDataRange)
|
|
43
|
+
return undefined;
|
|
44
|
+
return resolvedDataRange;
|
|
45
|
+
}
|
|
46
|
+
export function resolveRefDataRange(symbolType, start, end, line, name, fileType, context, extraData) {
|
|
47
|
+
const symbolConfig = getSymbolConfig(symbolType);
|
|
48
|
+
if (symbolConfig.cache) {
|
|
49
|
+
return dataRangeFromRef(start, end, line, symbolConfig, name, context, extraData);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return dataRangeFromSymbol(start, end, line, buildSymbolFromRef(name, symbolType, fileType, extraData), false, context);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function resolveDefDataRange(start, end, line, symbol, declaration, context) {
|
|
56
|
+
return dataRangeFromSymbol(start, end, line, symbol, declaration, context);
|
|
57
|
+
}
|
|
58
|
+
function dataRangeFromRef(start, end, line, symbolConfig, name, context, extraData) {
|
|
59
|
+
return {
|
|
60
|
+
start,
|
|
61
|
+
end,
|
|
62
|
+
data: {
|
|
63
|
+
declaration: false,
|
|
64
|
+
symbolConfig,
|
|
65
|
+
line,
|
|
66
|
+
name,
|
|
67
|
+
id: context?.id,
|
|
68
|
+
context,
|
|
69
|
+
extraData
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function dataRangeFromSymbol(start, end, line, symbol, declaration, context) {
|
|
74
|
+
return {
|
|
75
|
+
start,
|
|
76
|
+
end,
|
|
77
|
+
data: {
|
|
78
|
+
declaration,
|
|
79
|
+
symbolConfig: getSymbolConfig(symbol.symbolType),
|
|
80
|
+
line,
|
|
81
|
+
symbol,
|
|
82
|
+
context
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export function toCoord(n) {
|
|
87
|
+
const level = n >>> 28;
|
|
88
|
+
const x = (n >>> 14) & 0x3fff;
|
|
89
|
+
const y = n & 0x3fff;
|
|
90
|
+
const chunkX = x >>> 6;
|
|
91
|
+
const chunkY = y >>> 6;
|
|
92
|
+
const localX = x & 0x3f;
|
|
93
|
+
const localY = y & 0x3f;
|
|
94
|
+
return `${level}_${chunkX}_${chunkY}_${localX}_${localY}`;
|
|
95
|
+
}
|
|
96
|
+
;
|
|
97
|
+
//# sourceMappingURL=resolverUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolverUtils.js","sourceRoot":"","sources":["../../src/utils/resolverUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Connection, DidChangeConfigurationParams } from "vscode-languageserver/node.js";
|
|
2
|
+
export interface Settings {
|
|
3
|
+
enableDiagnostics: boolean;
|
|
4
|
+
enableHover: boolean;
|
|
5
|
+
enableDevMode: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const SETTINGS_SECTION = "runescript";
|
|
8
|
+
export declare const SETTINGS_KEYS: {
|
|
9
|
+
readonly ENABLE_DIAGNOSTICS: "runescript.enableDiagnostics";
|
|
10
|
+
readonly ENABLE_HOVER: "runescript.enableHover";
|
|
11
|
+
readonly ENABLE_DEV_MODE: "runescript.enableDevMode";
|
|
12
|
+
};
|
|
13
|
+
export declare function getSettings(): Settings;
|
|
14
|
+
export declare function setSettings(next: Settings): void;
|
|
15
|
+
export declare function isHoverEnabled(): boolean;
|
|
16
|
+
export declare function isDiagnosticsEnabled(): boolean;
|
|
17
|
+
export declare function isDevMode(): boolean;
|
|
18
|
+
export declare function initSettings(connection: Connection): Promise<void>;
|
|
19
|
+
export declare function handleSettingsChange(change: DidChangeConfigurationParams): void;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { logSettingsChange } from "./logger.js";
|
|
2
|
+
import { rebuildAllWorkspaces } from "../manager.js";
|
|
3
|
+
import { clearAllHighlights } from "./highlightUtils.js";
|
|
4
|
+
export const SETTINGS_SECTION = "runescript";
|
|
5
|
+
export const SETTINGS_KEYS = {
|
|
6
|
+
ENABLE_DIAGNOSTICS: "runescript.enableDiagnostics",
|
|
7
|
+
ENABLE_HOVER: "runescript.enableHover",
|
|
8
|
+
ENABLE_DEV_MODE: "runescript.enableDevMode"
|
|
9
|
+
};
|
|
10
|
+
const defaultSettings = {
|
|
11
|
+
enableDiagnostics: true,
|
|
12
|
+
enableHover: true,
|
|
13
|
+
enableDevMode: false
|
|
14
|
+
};
|
|
15
|
+
let currentSettings = { ...defaultSettings };
|
|
16
|
+
export function getSettings() {
|
|
17
|
+
return currentSettings;
|
|
18
|
+
}
|
|
19
|
+
export function setSettings(next) {
|
|
20
|
+
currentSettings = next;
|
|
21
|
+
}
|
|
22
|
+
export function isHoverEnabled() {
|
|
23
|
+
return currentSettings.enableHover ?? false;
|
|
24
|
+
}
|
|
25
|
+
export function isDiagnosticsEnabled() {
|
|
26
|
+
return currentSettings.enableDiagnostics ?? false;
|
|
27
|
+
}
|
|
28
|
+
export function isDevMode() {
|
|
29
|
+
return currentSettings.enableDevMode ?? false;
|
|
30
|
+
}
|
|
31
|
+
export async function initSettings(connection) {
|
|
32
|
+
const result = await connection.workspace.getConfiguration({ section: SETTINGS_SECTION });
|
|
33
|
+
if (result && typeof result === "object") {
|
|
34
|
+
const partial = result;
|
|
35
|
+
currentSettings = {
|
|
36
|
+
...defaultSettings,
|
|
37
|
+
enableDiagnostics: typeof partial.enableDiagnostics === "boolean" ? partial.enableDiagnostics : defaultSettings.enableDiagnostics,
|
|
38
|
+
enableHover: typeof partial.enableHover === "boolean" ? partial.enableHover : defaultSettings.enableHover,
|
|
39
|
+
enableDevMode: typeof partial.enableDevMode === "boolean" ? partial.enableDevMode : defaultSettings.enableDevMode
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
currentSettings = { ...defaultSettings };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function handleSettingsChange(change) {
|
|
47
|
+
const prevSettings = currentSettings;
|
|
48
|
+
if (change.settings && typeof change.settings === "object") {
|
|
49
|
+
const next = change.settings.runescript;
|
|
50
|
+
if (next && typeof next === "object") {
|
|
51
|
+
const partial = next;
|
|
52
|
+
currentSettings = {
|
|
53
|
+
...defaultSettings,
|
|
54
|
+
enableDiagnostics: typeof partial.enableDiagnostics === "boolean" ? partial.enableDiagnostics : defaultSettings.enableDiagnostics,
|
|
55
|
+
enableHover: typeof partial.enableHover === "boolean" ? partial.enableHover : defaultSettings.enableHover,
|
|
56
|
+
enableDevMode: typeof partial.enableDevMode === "boolean" ? partial.enableDevMode : defaultSettings.enableDevMode
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
diagnosticsToggled(prevSettings.enableDiagnostics, currentSettings.enableDiagnostics);
|
|
61
|
+
hoverToggled(prevSettings.enableHover, currentSettings.enableHover);
|
|
62
|
+
devModeToggled(prevSettings.enableDevMode, currentSettings.enableDevMode);
|
|
63
|
+
}
|
|
64
|
+
function diagnosticsToggled(prevValue, newValue) {
|
|
65
|
+
const changed = prevValue != newValue;
|
|
66
|
+
if (changed) {
|
|
67
|
+
logSettingsChange('enableDiagnostics', newValue);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function hoverToggled(prevValue, newValue) {
|
|
71
|
+
const changed = prevValue != newValue;
|
|
72
|
+
if (changed) {
|
|
73
|
+
logSettingsChange('enableHover', newValue);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function devModeToggled(prevValue, newValue) {
|
|
77
|
+
const changed = prevValue != newValue;
|
|
78
|
+
if (changed) {
|
|
79
|
+
logSettingsChange('enableDevMode', newValue);
|
|
80
|
+
if (newValue) {
|
|
81
|
+
rebuildAllWorkspaces();
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
clearAllHighlights();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=settingsUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settingsUtils.js","sourceRoot":"","sources":["../../src/utils/settingsUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,kBAAkB,EAAE,8BAA8B;IAClD,YAAY,EAAE,wBAAwB;IACtC,eAAe,EAAE,0BAA0B;CACnC,CAAC;AAEX,MAAM,eAAe,GAAa;IAChC,iBAAiB,EAAE,IAAI;IACvB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,KAAK;CACrB,CAAC;AAEF,IAAI,eAAe,GAAa,EAAE,GAAG,eAAe,EAAE,CAAC;AAEvD,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,eAAe,CAAC,WAAW,IAAI,KAAK,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,eAAe,CAAC,iBAAiB,IAAI,KAAK,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,eAAe,CAAC,aAAa,IAAI,KAAK,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAsB;IACvD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC1F,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAiC,CAAC;QAClD,eAAe,GAAG;YAChB,GAAG,eAAe;YAClB,iBAAiB,EAAE,OAAO,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB;YACjI,WAAW,EAAE,OAAO,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW;YACzG,aAAa,EAAE,OAAO,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa;SAClH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAoC;IACvE,MAAM,YAAY,GAAG,eAAe,CAAC;IACrC,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAI,MAAM,CAAC,QAAoC,CAAC,UAAU,CAAC;QACrE,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAA+B,CAAC;YAChD,eAAe,GAAG;gBAChB,GAAG,eAAe;gBAClB,iBAAiB,EAAE,OAAO,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB;gBACjI,WAAW,EAAE,OAAO,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW;gBACzG,aAAa,EAAE,OAAO,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa;aAClH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,kBAAkB,CAAC,YAAY,CAAC,iBAAiB,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACtF,YAAY,CAAC,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACpE,cAAc,CAAC,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAkB,EAAE,QAAiB;IAC/D,MAAM,OAAO,GAAG,SAAS,IAAI,QAAQ,CAAC;IACtC,IAAI,OAAO,EAAE,CAAC;QACZ,iBAAiB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,SAAkB,EAAE,QAAiB;IACzD,MAAM,OAAO,GAAG,SAAS,IAAI,QAAQ,CAAC;IACtC,IAAI,OAAO,EAAE,CAAC;QACZ,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,SAAkB,EAAE,QAAiB;IAC3D,MAAM,OAAO,GAAG,SAAS,IAAI,QAAQ,CAAC;IACtC,IAAI,OAAO,EAAE,CAAC;QACZ,iBAAiB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,oBAAoB,EAAE,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,kBAAkB,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SymbolType } from "../resource/enum/symbolTypes.js";
|
|
2
|
+
import { FileInfo, RunescriptSymbol, Signature, SymbolBuilderExtraItems } from "../types.js";
|
|
3
|
+
export declare function buildSymbolFromDec(name: string, symbolType: SymbolType, fileInfo: FileInfo, lineNum: number, startIndex: number, endIndex: number, extraItems?: SymbolBuilderExtraItems): RunescriptSymbol;
|
|
4
|
+
export declare function buildSymbolFromRef(name: string, symbolType: SymbolType, fileType: string, extraData?: Record<string, any>): RunescriptSymbol;
|
|
5
|
+
export declare function addReference(symbol: RunescriptSymbol, fileKey: string, lineNum: number, startIndex: number, endIndex: number, id?: string): Set<string>;
|
|
6
|
+
export declare function getInfo(line?: string): string | undefined;
|
|
7
|
+
export declare function buildSignature(line: string): Signature;
|
|
8
|
+
export declare function buildModifiedWordContext(original: string, prefix?: string, suffix?: string): {
|
|
9
|
+
modifiedWord: any;
|
|
10
|
+
};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { getDisplayLanguage } from "../resource/enum/displayItems.js";
|
|
2
|
+
import { INFO_MATCHER_REGEX } from "../resource/enum/regex.js";
|
|
3
|
+
import { getSymbolConfig, typeToSymbolType } from "../resource/symbolConfig.js";
|
|
4
|
+
import { encodeReference } from "./cacheUtils.js";
|
|
5
|
+
import { warn } from "./logger.js";
|
|
6
|
+
export function buildSymbolFromDec(name, symbolType, fileInfo, lineNum, startIndex, endIndex, extraItems) {
|
|
7
|
+
const symbol = {
|
|
8
|
+
name,
|
|
9
|
+
symbolType,
|
|
10
|
+
fileType: fileInfo.type,
|
|
11
|
+
language: getDisplayLanguage(symbolType),
|
|
12
|
+
declaration: { fsPath: fileInfo.fsPath, ref: encodeReference(lineNum, startIndex, endIndex) },
|
|
13
|
+
references: {}
|
|
14
|
+
};
|
|
15
|
+
const symbolConfig = getSymbolConfig(symbolType);
|
|
16
|
+
if (symbolConfig.cache) {
|
|
17
|
+
symbol.cacheName = name;
|
|
18
|
+
}
|
|
19
|
+
if (symbolConfig.qualifiedName) {
|
|
20
|
+
if (name.indexOf(':') === -1)
|
|
21
|
+
warn(`Expected qualified name for ${symbolType}, line=${lineNum}, start=${startIndex}, file=${fileInfo.fsPath}`);
|
|
22
|
+
else {
|
|
23
|
+
const split = name.split(':');
|
|
24
|
+
symbol.name = split[1];
|
|
25
|
+
symbol.qualifier = split[0];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (extraItems) {
|
|
29
|
+
if (extraItems.extraData)
|
|
30
|
+
symbol.extraData = extraItems.extraData;
|
|
31
|
+
if (extraItems.info)
|
|
32
|
+
symbol.info = extraItems.info;
|
|
33
|
+
if (extraItems.signature)
|
|
34
|
+
symbol.signature = extraItems.signature;
|
|
35
|
+
if ((extraItems.configLines?.size ?? 0) > 0) {
|
|
36
|
+
symbol.configLines = extraItems.configLines;
|
|
37
|
+
const blockInclusionLines = [];
|
|
38
|
+
extraItems.configLines.forEach((lines, key) => {
|
|
39
|
+
lines.forEach(value => blockInclusionLines.push(`${key}=${value}`));
|
|
40
|
+
});
|
|
41
|
+
symbol.block = blockInclusionLines.join('\n');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (symbolConfig.postProcessor !== undefined) {
|
|
45
|
+
symbolConfig.postProcessor(symbol);
|
|
46
|
+
}
|
|
47
|
+
cleanupSymbol(symbol);
|
|
48
|
+
return symbol;
|
|
49
|
+
}
|
|
50
|
+
export function buildSymbolFromRef(name, symbolType, fileType, extraData) {
|
|
51
|
+
const symbol = {
|
|
52
|
+
name,
|
|
53
|
+
symbolType,
|
|
54
|
+
fileType,
|
|
55
|
+
language: getDisplayLanguage(symbolType),
|
|
56
|
+
references: {}
|
|
57
|
+
};
|
|
58
|
+
const symbolConfig = getSymbolConfig(symbolType);
|
|
59
|
+
if (symbolConfig.qualifiedName) {
|
|
60
|
+
if (name.indexOf(':') === -1) {
|
|
61
|
+
warn(`Expected qualified name for ${symbolType}, name=${name}`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const split = name.split(':');
|
|
65
|
+
symbol.name = split[1];
|
|
66
|
+
symbol.qualifier = split[0];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (extraData)
|
|
70
|
+
symbol.extraData = extraData;
|
|
71
|
+
if (symbolConfig.postProcessor !== undefined && (symbolConfig.referenceOnly || !symbolConfig.cache)) {
|
|
72
|
+
symbolConfig.postProcessor(symbol);
|
|
73
|
+
}
|
|
74
|
+
cleanupSymbol(symbol);
|
|
75
|
+
return symbol;
|
|
76
|
+
}
|
|
77
|
+
export function addReference(symbol, fileKey, lineNum, startIndex, endIndex, id) {
|
|
78
|
+
const fileReferences = symbol.references[fileKey] || new Set();
|
|
79
|
+
fileReferences.add(encodeReference(lineNum, startIndex, endIndex));
|
|
80
|
+
if (id)
|
|
81
|
+
symbol.id = id;
|
|
82
|
+
symbol.references[fileKey] = fileReferences;
|
|
83
|
+
return fileReferences;
|
|
84
|
+
}
|
|
85
|
+
function cleanupSymbol(symbol) {
|
|
86
|
+
delete symbol.configLines;
|
|
87
|
+
}
|
|
88
|
+
export function getInfo(line) {
|
|
89
|
+
if (!line)
|
|
90
|
+
return undefined;
|
|
91
|
+
const infoMatch = INFO_MATCHER_REGEX.exec(line);
|
|
92
|
+
if (infoMatch && infoMatch[2]) {
|
|
93
|
+
return infoMatch[2].trim();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export function buildSignature(line) {
|
|
97
|
+
// Parse input params
|
|
98
|
+
const params = [];
|
|
99
|
+
let openingIndex = line.indexOf('(');
|
|
100
|
+
let closingIndex = line.indexOf(')');
|
|
101
|
+
if (openingIndex >= 0 && closingIndex >= 0 && ++openingIndex !== closingIndex) {
|
|
102
|
+
line.substring(openingIndex, closingIndex).split(',').forEach(param => {
|
|
103
|
+
if (param.startsWith(' '))
|
|
104
|
+
param = param.substring(1);
|
|
105
|
+
const split = param.split(' ');
|
|
106
|
+
if (split.length === 2) {
|
|
107
|
+
params.push({ type: split[0], name: split[1], symbolType: typeToSymbolType(split[0]) });
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
// Parse response type
|
|
112
|
+
let returns = [];
|
|
113
|
+
line = line.substring(closingIndex + 1);
|
|
114
|
+
openingIndex = line.indexOf('(');
|
|
115
|
+
closingIndex = line.indexOf(')');
|
|
116
|
+
if (openingIndex >= 0 && closingIndex >= 0 && ++openingIndex !== closingIndex) {
|
|
117
|
+
returns = line.substring(openingIndex, closingIndex).split(',').map(t => t.trim()).map(t => ({ type: t, symbolType: typeToSymbolType(t) }));
|
|
118
|
+
}
|
|
119
|
+
// Build signature object
|
|
120
|
+
return {
|
|
121
|
+
params,
|
|
122
|
+
returns,
|
|
123
|
+
getParamsDisplayText: () => params.map(param => `${param.type} ${param.name}`).join(', '),
|
|
124
|
+
getReturnsDisplayText: () => returns.map(returnToken => returnToken.type).join(', ')
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export function buildModifiedWordContext(original, prefix, suffix) {
|
|
128
|
+
const modifiedWordContext = { originalWord: original };
|
|
129
|
+
if (prefix)
|
|
130
|
+
modifiedWordContext.originalPrefix = prefix;
|
|
131
|
+
if (suffix)
|
|
132
|
+
modifiedWordContext.originalSuffix = suffix;
|
|
133
|
+
return { modifiedWord: modifiedWordContext };
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=symbolBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbolBuilder.js","sourceRoot":"","sources":["../../src/utils/symbolBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WorkspaceFolder } from "vscode-languageserver/node.js";
|
|
2
|
+
import { FileInfo } from "../types.js";
|
|
3
|
+
export declare function setWorkspaceFolders(folders: WorkspaceFolder[]): void;
|
|
4
|
+
export declare function getWorkspaceFolders(): string[];
|
|
5
|
+
/**
|
|
6
|
+
* Return the workspace folder (as resolved fsPath)
|
|
7
|
+
* @param fsPath The mapped fsPath (should go thru fileUtils.mapUri() before calling this function)
|
|
8
|
+
* @returns The matching workspace folder, if any
|
|
9
|
+
*/
|
|
10
|
+
export declare function findWorkspaceFolder(fsPath: string): string | undefined;
|
|
11
|
+
export declare function getMonitoredWorkspaceFiles(workspace: string): Promise<FileInfo[]>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { fsPathToFileInfo, mapUri, monitoredFileTypes } from "./fileUtils.js";
|
|
3
|
+
import { readdir } from "fs/promises";
|
|
4
|
+
let workspaceFolders = [];
|
|
5
|
+
export function setWorkspaceFolders(folders) {
|
|
6
|
+
workspaceFolders = folders.map((folder) => mapUri(folder.uri));
|
|
7
|
+
}
|
|
8
|
+
export function getWorkspaceFolders() {
|
|
9
|
+
return workspaceFolders;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Return the workspace folder (as resolved fsPath)
|
|
13
|
+
* @param fsPath The mapped fsPath (should go thru fileUtils.mapUri() before calling this function)
|
|
14
|
+
* @returns The matching workspace folder, if any
|
|
15
|
+
*/
|
|
16
|
+
export function findWorkspaceFolder(fsPath) {
|
|
17
|
+
let best;
|
|
18
|
+
let bestLength = -1;
|
|
19
|
+
for (const folderPath of workspaceFolders) {
|
|
20
|
+
if (fsPath === folderPath || fsPath.startsWith(folderPath + path.sep)) {
|
|
21
|
+
if (folderPath.length > bestLength) {
|
|
22
|
+
best = folderPath;
|
|
23
|
+
bestLength = folderPath.length;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return best;
|
|
28
|
+
}
|
|
29
|
+
export async function getMonitoredWorkspaceFiles(workspace) {
|
|
30
|
+
const skipDirs = new Set(['node_modules', '.git', '.vscode', '.idea']); //'maps', 'models', 'songs', 'synth'
|
|
31
|
+
const stack = [workspace];
|
|
32
|
+
const results = [];
|
|
33
|
+
while (stack.length > 0) {
|
|
34
|
+
const dir = stack.pop();
|
|
35
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
36
|
+
for (const entry of entries) {
|
|
37
|
+
if (entry.isDirectory()) {
|
|
38
|
+
if (!skipDirs.has(entry.name)) {
|
|
39
|
+
stack.push(path.join(dir, entry.name));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (entry.isFile()) {
|
|
43
|
+
const ext = path.extname(entry.name).slice(1);
|
|
44
|
+
if (monitoredFileTypes.has(ext)) {
|
|
45
|
+
results.push(path.join(dir, entry.name));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return results.map(fsPathToFileInfo);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=workspaceUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceUtils.js","sourceRoot":"","sources":["../../src/utils/workspaceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,IAAI,gBAAgB,GAAa,EAAE,CAAC;AAEpC,MAAM,UAAU,mBAAmB,CAAC,OAA0B;IAC5D,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,IAAI,IAAwB,CAAC;IAC7B,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IAEpB,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,IAAI,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBACnC,IAAI,GAAG,UAAU,CAAC;gBAClB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,SAAiB;IAChE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA,CAAC,oCAAoC;IAC3G,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;gBAC1D,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACvC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "runescript-lsp",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Language Server Protocol implementation for Runescript",
|
|
6
|
+
"main": "dist/server.js",
|
|
7
|
+
"types": "dist/server.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"clean": "rimraf dist",
|
|
10
|
+
"build": "npm run clean && tsc -p tsconfig.json",
|
|
11
|
+
"dev": "tsc -p tsconfig.json --watch",
|
|
12
|
+
"start": "node dist/server.js",
|
|
13
|
+
"lint": "eslint .",
|
|
14
|
+
"prepublishOnly": "npm run build"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
21
|
+
"exports": {
|
|
22
|
+
".": "./dist/server.js",
|
|
23
|
+
"./commands": {
|
|
24
|
+
"types": "./dist/public/commands.d.ts",
|
|
25
|
+
"default": "./dist/public/commands.js"
|
|
26
|
+
},
|
|
27
|
+
"./settings": {
|
|
28
|
+
"types": "./dist/public/settings.d.ts",
|
|
29
|
+
"default": "./dist/public/settings.js"
|
|
30
|
+
},
|
|
31
|
+
"./types": {
|
|
32
|
+
"types": "./dist/public/types.d.ts",
|
|
33
|
+
"default": "./dist/public/types.js"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"runescript-parser": "^0.1.5",
|
|
38
|
+
"vscode-uri": "^3.0.8",
|
|
39
|
+
"vscode-languageserver": "^9.0.1",
|
|
40
|
+
"vscode-languageserver-textdocument": "^1.0.11"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/node": "^22.13.5",
|
|
44
|
+
"eslint": "^9.19.0",
|
|
45
|
+
"rimraf": "^6.0.1",
|
|
46
|
+
"typescript": "^5.7.3"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=20"
|
|
50
|
+
}
|
|
51
|
+
}
|