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.
Files changed (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/cache/CompletionCache.d.ts +15 -0
  4. package/dist/cache/CompletionCache.js +58 -0
  5. package/dist/cache/CompletionCache.js.map +1 -0
  6. package/dist/cache/FileCache.d.ts +25 -0
  7. package/dist/cache/FileCache.js +101 -0
  8. package/dist/cache/FileCache.js.map +1 -0
  9. package/dist/cache/IdCache.d.ts +28 -0
  10. package/dist/cache/IdCache.js +47 -0
  11. package/dist/cache/IdCache.js.map +1 -0
  12. package/dist/cache/SymbolCache.d.ts +76 -0
  13. package/dist/cache/SymbolCache.js +205 -0
  14. package/dist/cache/SymbolCache.js.map +1 -0
  15. package/dist/cache/Trie.d.ts +22 -0
  16. package/dist/cache/Trie.js +122 -0
  17. package/dist/cache/Trie.js.map +1 -0
  18. package/dist/cache/WorkspaceCache.d.ts +32 -0
  19. package/dist/cache/WorkspaceCache.js +60 -0
  20. package/dist/cache/WorkspaceCache.js.map +1 -0
  21. package/dist/cache/cacheManager.d.ts +16 -0
  22. package/dist/cache/cacheManager.js +47 -0
  23. package/dist/cache/cacheManager.js.map +1 -0
  24. package/dist/handler/colorProvider.d.ts +2 -0
  25. package/dist/handler/colorProvider.js +103 -0
  26. package/dist/handler/colorProvider.js.map +1 -0
  27. package/dist/handler/commands.d.ts +6 -0
  28. package/dist/handler/commands.js +25 -0
  29. package/dist/handler/commands.js.map +1 -0
  30. package/dist/handler/completion.d.ts +3 -0
  31. package/dist/handler/completion.js +25 -0
  32. package/dist/handler/completion.js.map +1 -0
  33. package/dist/handler/definition.d.ts +2 -0
  34. package/dist/handler/definition.js +20 -0
  35. package/dist/handler/definition.js.map +1 -0
  36. package/dist/handler/fileEvents.d.ts +3 -0
  37. package/dist/handler/fileEvents.js +107 -0
  38. package/dist/handler/fileEvents.js.map +1 -0
  39. package/dist/handler/gitEvents.d.ts +6 -0
  40. package/dist/handler/gitEvents.js +22 -0
  41. package/dist/handler/gitEvents.js.map +1 -0
  42. package/dist/handler/hover.d.ts +2 -0
  43. package/dist/handler/hover.js +125 -0
  44. package/dist/handler/hover.js.map +1 -0
  45. package/dist/handler/references.d.ts +2 -0
  46. package/dist/handler/references.js +33 -0
  47. package/dist/handler/references.js.map +1 -0
  48. package/dist/handler/rename.d.ts +2 -0
  49. package/dist/handler/rename.js +6 -0
  50. package/dist/handler/rename.js.map +1 -0
  51. package/dist/handler/semanticTokens.d.ts +4 -0
  52. package/dist/handler/semanticTokens.js +40 -0
  53. package/dist/handler/semanticTokens.js.map +1 -0
  54. package/dist/handler/settingsEvents.d.ts +2 -0
  55. package/dist/handler/settingsEvents.js +11 -0
  56. package/dist/handler/settingsEvents.js.map +1 -0
  57. package/dist/handler/signatureHelp.d.ts +2 -0
  58. package/dist/handler/signatureHelp.js +6 -0
  59. package/dist/handler/signatureHelp.js.map +1 -0
  60. package/dist/handler/workspaceEvents.d.ts +2 -0
  61. package/dist/handler/workspaceEvents.js +30 -0
  62. package/dist/handler/workspaceEvents.js.map +1 -0
  63. package/dist/manager.d.ts +6 -0
  64. package/dist/manager.js +126 -0
  65. package/dist/manager.js.map +1 -0
  66. package/dist/parser/configParser.d.ts +29 -0
  67. package/dist/parser/configParser.js +216 -0
  68. package/dist/parser/configParser.js.map +1 -0
  69. package/dist/parser/constantParser.d.ts +14 -0
  70. package/dist/parser/constantParser.js +40 -0
  71. package/dist/parser/constantParser.js.map +1 -0
  72. package/dist/parser/dbtableParser.d.ts +18 -0
  73. package/dist/parser/dbtableParser.js +114 -0
  74. package/dist/parser/dbtableParser.js.map +1 -0
  75. package/dist/parser/packParser.d.ts +11 -0
  76. package/dist/parser/packParser.js +13 -0
  77. package/dist/parser/packParser.js.map +1 -0
  78. package/dist/parser/parser.d.ts +44 -0
  79. package/dist/parser/parser.js +34 -0
  80. package/dist/parser/parser.js.map +1 -0
  81. package/dist/parser/runescriptParser.d.ts +13 -0
  82. package/dist/parser/runescriptParser.js +28 -0
  83. package/dist/parser/runescriptParser.js.map +1 -0
  84. package/dist/public/commands.d.ts +1 -0
  85. package/dist/public/commands.js +2 -0
  86. package/dist/public/commands.js.map +1 -0
  87. package/dist/public/settings.d.ts +2 -0
  88. package/dist/public/settings.js +2 -0
  89. package/dist/public/settings.js.map +1 -0
  90. package/dist/public/types.d.ts +2 -0
  91. package/dist/public/types.js +2 -0
  92. package/dist/public/types.js.map +1 -0
  93. package/dist/resolver/configResolver.d.ts +2 -0
  94. package/dist/resolver/configResolver.js +102 -0
  95. package/dist/resolver/configResolver.js.map +1 -0
  96. package/dist/resolver/constantResolver.d.ts +2 -0
  97. package/dist/resolver/constantResolver.js +37 -0
  98. package/dist/resolver/constantResolver.js.map +1 -0
  99. package/dist/resolver/dbtableResolver.d.ts +2 -0
  100. package/dist/resolver/dbtableResolver.js +28 -0
  101. package/dist/resolver/dbtableResolver.js.map +1 -0
  102. package/dist/resolver/packResolver.d.ts +2 -0
  103. package/dist/resolver/packResolver.js +32 -0
  104. package/dist/resolver/packResolver.js.map +1 -0
  105. package/dist/resolver/resolver.d.ts +15 -0
  106. package/dist/resolver/resolver.js +95 -0
  107. package/dist/resolver/resolver.js.map +1 -0
  108. package/dist/resolver/runescriptResolver.d.ts +2 -0
  109. package/dist/resolver/runescriptResolver.js +347 -0
  110. package/dist/resolver/runescriptResolver.js.map +1 -0
  111. package/dist/resource/configKeys.d.ts +21 -0
  112. package/dist/resource/configKeys.js +86 -0
  113. package/dist/resource/configKeys.js.map +1 -0
  114. package/dist/resource/enum/displayItems.d.ts +13 -0
  115. package/dist/resource/enum/displayItems.js +23 -0
  116. package/dist/resource/enum/displayItems.js.map +1 -0
  117. package/dist/resource/enum/fileTypes.d.ts +26 -0
  118. package/dist/resource/enum/fileTypes.js +28 -0
  119. package/dist/resource/enum/fileTypes.js.map +1 -0
  120. package/dist/resource/enum/languages.d.ts +25 -0
  121. package/dist/resource/enum/languages.js +27 -0
  122. package/dist/resource/enum/languages.js.map +1 -0
  123. package/dist/resource/enum/regex.d.ts +24 -0
  124. package/dist/resource/enum/regex.js +25 -0
  125. package/dist/resource/enum/regex.js.map +1 -0
  126. package/dist/resource/enum/semanticTokens.d.ts +24 -0
  127. package/dist/resource/enum/semanticTokens.js +26 -0
  128. package/dist/resource/enum/semanticTokens.js.map +1 -0
  129. package/dist/resource/enum/symbolTypes.d.ts +49 -0
  130. package/dist/resource/enum/symbolTypes.js +51 -0
  131. package/dist/resource/enum/symbolTypes.js.map +1 -0
  132. package/dist/resource/enum/types.d.ts +47 -0
  133. package/dist/resource/enum/types.js +49 -0
  134. package/dist/resource/enum/types.js.map +1 -0
  135. package/dist/resource/scriptTriggers.d.ts +8 -0
  136. package/dist/resource/scriptTriggers.js +72 -0
  137. package/dist/resource/scriptTriggers.js.map +1 -0
  138. package/dist/resource/symbolConfig.d.ts +10 -0
  139. package/dist/resource/symbolConfig.js +234 -0
  140. package/dist/resource/symbolConfig.js.map +1 -0
  141. package/dist/resource/symbolPostProcessors.d.ts +15 -0
  142. package/dist/resource/symbolPostProcessors.js +70 -0
  143. package/dist/resource/symbolPostProcessors.js.map +1 -0
  144. package/dist/server.d.ts +1 -0
  145. package/dist/server.js +110 -0
  146. package/dist/server.js.map +1 -0
  147. package/dist/types.d.ts +214 -0
  148. package/dist/types.js +6 -0
  149. package/dist/types.js.map +1 -0
  150. package/dist/utils/cacheUtils.d.ts +12 -0
  151. package/dist/utils/cacheUtils.js +26 -0
  152. package/dist/utils/cacheUtils.js.map +1 -0
  153. package/dist/utils/connectionUtils.d.ts +3 -0
  154. package/dist/utils/connectionUtils.js +8 -0
  155. package/dist/utils/connectionUtils.js.map +1 -0
  156. package/dist/utils/diagnosticsUtils.d.ts +4 -0
  157. package/dist/utils/diagnosticsUtils.js +11 -0
  158. package/dist/utils/diagnosticsUtils.js.map +1 -0
  159. package/dist/utils/documentUtils.d.ts +5 -0
  160. package/dist/utils/documentUtils.js +14 -0
  161. package/dist/utils/documentUtils.js.map +1 -0
  162. package/dist/utils/fileUtils.d.ts +42 -0
  163. package/dist/utils/fileUtils.js +82 -0
  164. package/dist/utils/fileUtils.js.map +1 -0
  165. package/dist/utils/handlerUtils.d.ts +1 -0
  166. package/dist/utils/handlerUtils.js +5 -0
  167. package/dist/utils/handlerUtils.js.map +1 -0
  168. package/dist/utils/highlightUtils.d.ts +7 -0
  169. package/dist/utils/highlightUtils.js +52 -0
  170. package/dist/utils/highlightUtils.js.map +1 -0
  171. package/dist/utils/initUtils.d.ts +3 -0
  172. package/dist/utils/initUtils.js +18 -0
  173. package/dist/utils/initUtils.js.map +1 -0
  174. package/dist/utils/logger.d.ts +11 -0
  175. package/dist/utils/logger.js +38 -0
  176. package/dist/utils/logger.js.map +1 -0
  177. package/dist/utils/progressUtils.d.ts +7 -0
  178. package/dist/utils/progressUtils.js +31 -0
  179. package/dist/utils/progressUtils.js.map +1 -0
  180. package/dist/utils/resolverUtils.d.ts +17 -0
  181. package/dist/utils/resolverUtils.js +97 -0
  182. package/dist/utils/resolverUtils.js.map +1 -0
  183. package/dist/utils/settingsUtils.d.ts +19 -0
  184. package/dist/utils/settingsUtils.js +88 -0
  185. package/dist/utils/settingsUtils.js.map +1 -0
  186. package/dist/utils/symbolBuilder.d.ts +10 -0
  187. package/dist/utils/symbolBuilder.js +135 -0
  188. package/dist/utils/symbolBuilder.js.map +1 -0
  189. package/dist/utils/workspaceUtils.d.ts +11 -0
  190. package/dist/utils/workspaceUtils.js +52 -0
  191. package/dist/utils/workspaceUtils.js.map +1 -0
  192. package/package.json +51 -0
@@ -0,0 +1,347 @@
1
+ import { getScriptTriggerSymbol } from "../resource/scriptTriggers.js";
2
+ import { warn } from "../utils/logger.js";
3
+ import { buildSymbolFromRef, buildSymbolFromDec, buildModifiedWordContext } from "../utils/symbolBuilder.js";
4
+ import { SymbolType } from "../resource/enum/symbolTypes.js";
5
+ import { resolveRefDataRange, resolveDefDataRange, toCoord } from "../utils/resolverUtils.js";
6
+ import { AstVisitor, NodeKind, PTagStringPart } from "runescript-parser";
7
+ import { CommandCallExpression, Identifier } from "runescript-parser";
8
+ import { Script } from "runescript-parser";
9
+ import { typeToSymbolType } from "../resource/symbolConfig.js";
10
+ export const ScriptResolver = {
11
+ resolveDefinitions,
12
+ resolveReferences
13
+ };
14
+ function resolveDefinitions(parseResult, cache) {
15
+ const file = parseResult.data;
16
+ const fileCache = cache.getFileCache(parseResult.fileInfo.fsPath);
17
+ const resolvedDefs = [];
18
+ for (const script of file.scripts) {
19
+ fileCache?.addScriptRange(script.parsedScript.source.line, script.parsedScript.source.endLine, script.parsedScript.nameString);
20
+ const trigger = script.parsedScript.trigger;
21
+ const triggerType = getScriptTriggerSymbol(trigger.text);
22
+ if (!triggerType) {
23
+ warn(`Unable to resolve trigger details for trigger ${trigger.text}`);
24
+ continue;
25
+ }
26
+ // Resolve trigger symbol
27
+ const triggerSymbol = buildSymbolFromRef(trigger.text, SymbolType.Trigger, parseResult.fileInfo.type);
28
+ resolvedDefs.push(resolveDefDataRange(trigger.source.column, trigger.source.endColumn, trigger.source.line, triggerSymbol, false));
29
+ // Resolve script symbol
30
+ const source = script.parsedScript.name.source;
31
+ const end = script.parsedScript.isStar ? source.endColumn + 1 : source.endColumn;
32
+ if (triggerType.declaration) {
33
+ const scriptSymbol = buildSymbolFromDec(script.parsedScript.nameString, triggerType.symbolType, parseResult.fileInfo, source.line, source.column, source.endColumn, { info: script.info, signature: script.signature });
34
+ resolvedDefs.push(resolveDefDataRange(source.column, end, source.line, scriptSymbol, triggerType.declaration));
35
+ }
36
+ else {
37
+ if (script.parsedScript.nameString.startsWith('_')) {
38
+ const name = script.parsedScript.nameString.substring(1);
39
+ const context = buildModifiedWordContext(script.parsedScript.nameString, '_');
40
+ const extraData = { symbolType: triggerType.symbolType, categoryName: name };
41
+ resolvedDefs.push(resolveRefDataRange(SymbolType.Category, source.column, end, source.line, name, parseResult.fileInfo.type, context, extraData));
42
+ }
43
+ else {
44
+ resolvedDefs.push(resolveRefDataRange(triggerType.symbolType, source.column, end, source.line, script.parsedScript.nameString, parseResult.fileInfo.type));
45
+ }
46
+ }
47
+ // Resolve param (local vars)
48
+ if (fileCache) {
49
+ for (const param of (script.parsedScript.parameters ?? [])) {
50
+ const paramSymbol = buildSymbolFromDec(param.name.text, SymbolType.LocalVar, parseResult.fileInfo, param.source.line, param.name.source.column, param.name.source.endColumn, { extraData: { type: param.typeToken.text } });
51
+ paramSymbol.block = `${param.typeToken.text} ${param.name.text} (parameter)`;
52
+ fileCache.addLocalVariable(paramSymbol, param.source.line, param.name.source.column, param.name.source.endColumn);
53
+ }
54
+ }
55
+ }
56
+ return resolvedDefs;
57
+ }
58
+ function resolveReferences(parseResult, cache) {
59
+ const file = parseResult.data;
60
+ const resolvedRefs = [];
61
+ const visitor = new RunescriptVisitor(resolvedRefs, parseResult.fileInfo, cache);
62
+ for (const script of file.scripts) {
63
+ script.parsedScript.accept(visitor);
64
+ }
65
+ visitor.finalize();
66
+ return resolvedRefs;
67
+ }
68
+ class RunescriptVisitor extends AstVisitor {
69
+ fileCache;
70
+ symbolCache;
71
+ resolvedNodes;
72
+ unknownIdens;
73
+ exprTypes;
74
+ resolvedRefs;
75
+ localVariableTypes;
76
+ fileInfo;
77
+ constructor(resolvedRefs, fileInfo, cache) {
78
+ super();
79
+ this.unknownIdens = new Set();
80
+ this.localVariableTypes = new Map();
81
+ this.resolvedNodes = new WeakSet();
82
+ this.exprTypes = new WeakMap();
83
+ this.resolvedRefs = resolvedRefs;
84
+ this.fileInfo = fileInfo;
85
+ this.symbolCache = cache.getSymbolCache();
86
+ this.fileCache = cache.getFileCache(fileInfo.fsPath);
87
+ }
88
+ finalize() {
89
+ this.unknownIdens.forEach(unknownIden => {
90
+ if (!this.resolvedNodes.has(unknownIden)) {
91
+ this.resolveRefFromNode(SymbolType.Unknown, unknownIden, unknownIden.text);
92
+ }
93
+ });
94
+ }
95
+ resolveRefFromNode(symbolType, node, name, isStar = false) {
96
+ if (this.resolvedNodes.has(node))
97
+ return;
98
+ this.resolvedRefs.push(resolveRefDataRange(symbolType, node.source.column, isStar ? node.source.endColumn + 1 : node.source.endColumn, node.source.line, name, this.fileInfo.type));
99
+ this.resolvedNodes.add(node);
100
+ }
101
+ resolveRefManual(symbolType, node, name, line, start, end) {
102
+ if (this.resolvedNodes.has(node))
103
+ return;
104
+ this.resolvedRefs.push(resolveRefDataRange(symbolType, start, end, line, name, this.fileInfo.type));
105
+ this.resolvedNodes.add(node);
106
+ }
107
+ getScript(node) {
108
+ let cur = node;
109
+ while (cur !== null && !(cur instanceof Script)) {
110
+ cur = cur.parent;
111
+ }
112
+ return cur;
113
+ }
114
+ isCommand(identifier) {
115
+ const symbol = this.symbolCache.get(identifier.text, SymbolType.Command);
116
+ return !!symbol?.declaration;
117
+ }
118
+ resolveCall(node, calleeType) {
119
+ let queueName;
120
+ const calleeSignature = this.symbolCache.get(node.name.text, calleeType)?.signature;
121
+ if (calleeSignature?.returns) {
122
+ this.exprTypes.set(node, calleeSignature.returns.map(r => r.symbolType));
123
+ }
124
+ if (node.arguments.length > 0 && calleeSignature?.params) {
125
+ const calleeParams = calleeSignature?.params;
126
+ for (let i = 0; i < calleeParams.length; i++) {
127
+ const argument = node.arguments[i];
128
+ if (argument instanceof Identifier) {
129
+ const symbolType = this.isCommand(argument) ? SymbolType.Command : calleeParams[i].symbolType;
130
+ if (symbolType === SymbolType.Queue && i === 0)
131
+ queueName = argument.text;
132
+ this.resolveRefFromNode(symbolType, argument, argument.text);
133
+ }
134
+ }
135
+ }
136
+ if (node instanceof CommandCallExpression && node.arguments2 && queueName) {
137
+ const queueParams = this.symbolCache.get(queueName, SymbolType.Queue)?.signature?.params ?? [];
138
+ if (queueParams.length > 0) {
139
+ for (let i = 0; i < Math.min(queueParams.length, node.arguments2.length); i++) {
140
+ const argument = node.arguments2[i];
141
+ if (argument instanceof Identifier) {
142
+ const symbolType = this.isCommand(argument) ? SymbolType.Command : queueParams[i].symbolType;
143
+ this.resolveRefFromNode(symbolType, argument, argument.text);
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ visitNode(node) {
150
+ for (const child of node.children) {
151
+ child.accept(this);
152
+ }
153
+ }
154
+ visitScript(node) {
155
+ this.localVariableTypes.clear();
156
+ this.resolvedNodes.add(node.trigger);
157
+ this.resolvedNodes.add(node.name);
158
+ for (const param of (node.parameters ?? [])) {
159
+ this.localVariableTypes.set(param.name.text, typeToSymbolType(param.typeToken.text));
160
+ this.resolvedNodes.add(param.name);
161
+ }
162
+ super.visitScript(node);
163
+ }
164
+ visitIdentifier(node) {
165
+ if (this.isCommand(node)) {
166
+ this.resolveRefFromNode(SymbolType.Command, node, node.text);
167
+ }
168
+ else {
169
+ this.unknownIdens.add(node);
170
+ //this.resolveRefFromNode(SymbolType.Unknown, node, node.text);
171
+ }
172
+ super.visitIdentifier(node);
173
+ }
174
+ visitCallExpression(node) {
175
+ if (node.kind === NodeKind.ProcCallExpression) {
176
+ this.resolveRefFromNode(SymbolType.Proc, node.name, node.name.text);
177
+ }
178
+ else if (node.kind === NodeKind.JumpCallExpression) {
179
+ this.resolveRefFromNode(SymbolType.Label, node.name, node.name.text);
180
+ }
181
+ else if (node instanceof CommandCallExpression) {
182
+ this.resolveRefFromNode(SymbolType.Command, node.name, node.nameString, node.isStar);
183
+ }
184
+ super.visitCallExpression(node);
185
+ }
186
+ visitJoinedStringPart(node) {
187
+ if (node.kind === NodeKind.BasicStringPart) {
188
+ this.resolveRefFromNode(SymbolType.String, node, "string");
189
+ }
190
+ if (node instanceof PTagStringPart) {
191
+ const startIdx = node.source.column + 3;
192
+ const endIdx = node.source.endColumn - 1;
193
+ const name = node.value.substring(3, node.value.length - 1);
194
+ this.resolveRefManual(SymbolType.Mesanim, node, name, node.source.line, startIdx, endIdx);
195
+ }
196
+ super.visitJoinedStringPart(node);
197
+ }
198
+ visitLiteral(node) {
199
+ let symbolType = SymbolType.Unknown;
200
+ let name = 'unknown';
201
+ if (node.kind === NodeKind.NullLiteral) {
202
+ symbolType = SymbolType.Null;
203
+ name = "null";
204
+ }
205
+ else if (node.kind === NodeKind.CoordLiteral) {
206
+ symbolType = SymbolType.Coordinates;
207
+ name = toCoord(node.value);
208
+ }
209
+ else if (node.kind === NodeKind.IntegerLiteral) {
210
+ symbolType = SymbolType.Number;
211
+ name = "number";
212
+ }
213
+ else if (node.kind === NodeKind.StringLiteral || node.kind === NodeKind.CharacterLiteral) {
214
+ symbolType = SymbolType.String;
215
+ name = "string";
216
+ }
217
+ else if (node.kind === NodeKind.BooleanLiteral) {
218
+ symbolType = SymbolType.Boolean;
219
+ name = "boolean";
220
+ }
221
+ if (symbolType !== SymbolType.Unknown) {
222
+ this.resolveRefFromNode(symbolType, node, name);
223
+ this.exprTypes.set(node, [symbolType]);
224
+ }
225
+ super.visitLiteral(node);
226
+ }
227
+ visitVariableExpression(node) {
228
+ if (this.fileCache && node.kind === NodeKind.LocalVariableExpression) {
229
+ this.fileCache.addLocalVariableReference(node.name.text, node.name.source.line, node.name.source.column, node.name.source.endColumn);
230
+ this.resolvedNodes.add(node.name);
231
+ const symbolType = this.localVariableTypes.get(node.name.text);
232
+ if (symbolType) {
233
+ this.exprTypes.set(node, [symbolType]);
234
+ }
235
+ }
236
+ else if (node.kind === NodeKind.ConstantVariableExpression) {
237
+ this.resolveRefFromNode(SymbolType.Constant, node.name, node.name.text);
238
+ const exprTypes = this.symbolCache.get(node.name.text, SymbolType.Constant)?.comparisonTypes ?? [];
239
+ this.exprTypes.set(node, exprTypes);
240
+ }
241
+ else if (node.kind === NodeKind.GameVariableExpression) {
242
+ this.resolveRefFromNode(SymbolType.GameVar, node.name, node.name.text);
243
+ const exprTypes = this.symbolCache.get(node.name.text, SymbolType.GameVar)?.comparisonTypes ?? [];
244
+ this.exprTypes.set(node, exprTypes);
245
+ }
246
+ super.visitVariableExpression(node);
247
+ }
248
+ visitDeclarationStatement(node) {
249
+ const type = node.typeToken.text;
250
+ if (this.fileCache && type.startsWith('def_')) {
251
+ const typeStr = type.substring(4);
252
+ const localVarSymbol = buildSymbolFromDec(node.name.text, SymbolType.LocalVar, this.fileInfo, node.name.source.line, node.name.source.column, node.name.source.endColumn, { extraData: { type: typeStr } });
253
+ this.fileCache.addLocalVariable(localVarSymbol, node.name.source.line, node.name.source.column, node.name.source.endColumn);
254
+ this.resolvedNodes.add(node.name);
255
+ this.localVariableTypes.set(node.name.text, typeToSymbolType(typeStr));
256
+ }
257
+ super.visitDeclarationStatement(node);
258
+ }
259
+ visitSwitchStatement(node) {
260
+ const type = typeToSymbolType(node.typeToken.text.substring(7));
261
+ for (const switchCase of node.cases) {
262
+ for (const key of switchCase.keys) {
263
+ if (key instanceof Identifier) {
264
+ this.resolveRefFromNode(type, key, key.text);
265
+ }
266
+ }
267
+ }
268
+ super.visitSwitchStatement(node);
269
+ }
270
+ visitProcCallExpression(node) {
271
+ this.resolveCall(node, SymbolType.Proc);
272
+ super.visitProcCallExpression(node);
273
+ }
274
+ visitJumpCallExpression(node) {
275
+ this.resolveCall(node, SymbolType.Label);
276
+ super.visitJumpCallExpression(node);
277
+ }
278
+ visitCommandCallExpression(node) {
279
+ this.resolveCall(node, SymbolType.Command);
280
+ super.visitCommandCallExpression(node);
281
+ }
282
+ visitReturnStatement(node) {
283
+ if (node.expressions.length > 0) {
284
+ for (let i = 0; i < node.expressions.length; i++) {
285
+ const expression = node.expressions[i];
286
+ if (expression instanceof Identifier) {
287
+ if (this.isCommand(expression)) {
288
+ this.resolveRefFromNode(SymbolType.Command, expression, expression.text);
289
+ }
290
+ else {
291
+ const returnTokens = this.getScript(expression)?.returnTokens ?? [];
292
+ const returnToken = returnTokens[i];
293
+ if (returnToken) {
294
+ this.resolveRefFromNode(typeToSymbolType(returnToken.text), expression, expression.text);
295
+ }
296
+ }
297
+ }
298
+ }
299
+ }
300
+ super.visitReturnStatement(node);
301
+ }
302
+ visitCalcExpression(node) {
303
+ this.resolveRefManual(SymbolType.Command, node, "calc", node.source.line, node.source.column, node.source.column + 4);
304
+ super.visitCalcExpression(node);
305
+ }
306
+ visitConditionExpression(node) {
307
+ super.visitConditionExpression(node);
308
+ if (node.right instanceof Identifier && node.left instanceof Identifier) {
309
+ const rightCommand = this.resolveCommandIfAny(node.right);
310
+ const leftCommand = this.resolveCommandIfAny(node.left);
311
+ this.resolveFromCommandReturn(rightCommand, node.left);
312
+ this.resolveFromCommandReturn(leftCommand, node.right);
313
+ return;
314
+ }
315
+ if (node.right instanceof Identifier) {
316
+ if (!this.resolveCommandIfAny(node.right)) {
317
+ this.resolveFromExpressionType(node.right, this.exprTypes.get(node.left));
318
+ }
319
+ return;
320
+ }
321
+ if (node.left instanceof Identifier) {
322
+ if (!this.resolveCommandIfAny(node.left)) {
323
+ this.resolveFromExpressionType(node.left, this.exprTypes.get(node.right));
324
+ }
325
+ }
326
+ }
327
+ resolveCommandIfAny(identifier) {
328
+ if (!this.isCommand(identifier))
329
+ return undefined;
330
+ this.resolveRefFromNode(SymbolType.Command, identifier, identifier.text);
331
+ return identifier.text;
332
+ }
333
+ resolveFromCommandReturn(commandName, target) {
334
+ if (!commandName)
335
+ return;
336
+ const commandReturns = this.symbolCache.get(commandName, SymbolType.Command)?.signature?.returns ?? [];
337
+ if (commandReturns.length > 0) {
338
+ this.resolveRefFromNode(commandReturns[0].symbolType, target, target.text);
339
+ }
340
+ }
341
+ resolveFromExpressionType(target, types) {
342
+ if (!types || types.length === 0)
343
+ return;
344
+ this.resolveRefFromNode(types[0], target, target.text);
345
+ }
346
+ }
347
+ //# sourceMappingURL=runescriptResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runescriptResolver.js","sourceRoot":"","sources":["../../src/resolver/runescriptResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { FileConfigData } from "../types.js";
2
+ import { FileType } from "./enum/fileTypes.js";
3
+ export declare function getFileConfigData(fileType: FileType): FileConfigData;
4
+ /**
5
+ * The source of the identifier for config keys which have dynamic varargs
6
+ * Used by the matcher to retrieve the identifier which contains the signature type params
7
+ */
8
+ export declare enum ConfigVarArgSrc {
9
+ BlockName = "blockName",
10
+ FirstParam = "firstParam",
11
+ Column = "column"
12
+ }
13
+ /**
14
+ * Learn a new config key name (save to the cache)
15
+ * @param key config key name
16
+ */
17
+ export declare function learnConfigKey(key: string): void;
18
+ /**
19
+ * Returns all of the learned config keys so far
20
+ */
21
+ export declare function getObservedConfigKeys(): Set<string>;
@@ -0,0 +1,86 @@
1
+ import { FileType } from "./enum/fileTypes.js";
2
+ import { SymbolType } from "./enum/symbolTypes.js";
3
+ import { monitoredFileTypes } from "../utils/fileUtils.js";
4
+ const configDataByFileType = new Map();
5
+ export function getFileConfigData(fileType) {
6
+ if (configDataByFileType.size === 0) {
7
+ initConfigDataByFileType();
8
+ }
9
+ return configDataByFileType.get(fileType) ?? { directMap: new Map(), regexMap: new Map() };
10
+ }
11
+ /**
12
+ * The source of the identifier for config keys which have dynamic varargs
13
+ * Used by the matcher to retrieve the identifier which contains the signature type params
14
+ */
15
+ export var ConfigVarArgSrc;
16
+ (function (ConfigVarArgSrc) {
17
+ ConfigVarArgSrc["BlockName"] = "blockName";
18
+ ConfigVarArgSrc["FirstParam"] = "firstParam";
19
+ ConfigVarArgSrc["Column"] = "column";
20
+ })(ConfigVarArgSrc || (ConfigVarArgSrc = {}));
21
+ /**
22
+ * Defines static config keys (direct match)
23
+ * No need to specify fileType here with a simple key lookup
24
+ */
25
+ const configKeys = [
26
+ { key: 'walkanim', params: [SymbolType.Seq, SymbolType.Seq, SymbolType.Seq, SymbolType.Seq] },
27
+ { key: 'multivar', params: [SymbolType.GameVar] },
28
+ { key: 'multiloc', params: [SymbolType.Number, SymbolType.Loc] },
29
+ { key: 'multinpc', params: [SymbolType.Number, SymbolType.Npc] },
30
+ { key: 'basevar', params: [SymbolType.GameVar] },
31
+ { key: 'category', params: [SymbolType.Category] },
32
+ { key: 'huntmode', params: [SymbolType.Hunt] },
33
+ { key: 'table', params: [SymbolType.Dbtable] },
34
+ { key: 'check_category', params: [SymbolType.Category] },
35
+ { key: 'check_inv', params: [SymbolType.Inv, SymbolType.Obj] },
36
+ { key: 'param', params: [SymbolType.Param], varArgs: { symbolSource: ConfigVarArgSrc.FirstParam, symbolType: SymbolType.Param } },
37
+ { key: 'val', params: [], varArgs: { symbolSource: ConfigVarArgSrc.BlockName, symbolType: SymbolType.Enum } },
38
+ { key: 'data', params: [SymbolType.Dbcolumn], varArgs: { symbolSource: ConfigVarArgSrc.Column, symbolType: SymbolType.Dbcolumn } },
39
+ ];
40
+ /**
41
+ * Defines regex config keys (check key against regex to find match)
42
+ * Need to specify file types here to limit excessive regex matching
43
+ */
44
+ const regexConfigKeys = [
45
+ { regex: /stock\d+/, params: [SymbolType.Obj, SymbolType.Number, SymbolType.Number], fileTypes: [FileType.Inv] },
46
+ { regex: /count\d+/, params: [SymbolType.Obj, SymbolType.Number], fileTypes: [FileType.Obj] },
47
+ { regex: /frame\d+/, params: [SymbolType.Frame], fileTypes: [FileType.Seq] },
48
+ { regex: /(model|head|womanwear|manwear|womanhead|manhead|activemodel)\d*/, params: [SymbolType.Model], fileTypes: [FileType.Npc, FileType.Loc, FileType.Obj, FileType.Spotanim, FileType.If, FileType.Idk] },
49
+ { regex: /\w*anim\w*/, params: [SymbolType.Seq], fileTypes: [FileType.Loc, FileType.Npc, FileType.If, FileType.Spotanim] },
50
+ { regex: /replaceheldleft|replaceheldright/, params: [SymbolType.Obj], fileTypes: [FileType.Seq], ignoreValues: ["hide"] },
51
+ ];
52
+ /**
53
+ * Build the "known config keys" by file type map used by the parser
54
+ */
55
+ const nonConfigTypes = new Set([FileType.Pack, FileType.Rs2, FileType.Constant]);
56
+ function initConfigDataByFileType() {
57
+ monitoredFileTypes.forEach(fileType => {
58
+ if (fileType in nonConfigTypes)
59
+ return;
60
+ const fileTypeConfig = { directMap: new Map(), regexMap: new Map() };
61
+ configKeys.forEach(ck => fileTypeConfig.directMap.set(ck.key, ck));
62
+ regexConfigKeys.forEach(rck => {
63
+ if (rck.fileTypes.includes(fileType))
64
+ fileTypeConfig.regexMap.set(rck.regex, rck);
65
+ });
66
+ configDataByFileType.set(fileType, fileTypeConfig);
67
+ });
68
+ }
69
+ /**
70
+ * Caches config keys found during matching, used by completion provider to suggest values
71
+ */
72
+ const observedConfigKeys = new Set();
73
+ /**
74
+ * Learn a new config key name (save to the cache)
75
+ * @param key config key name
76
+ */
77
+ export function learnConfigKey(key) {
78
+ observedConfigKeys.add(key);
79
+ }
80
+ /**
81
+ * Returns all of the learned config keys so far
82
+ */
83
+ export function getObservedConfigKeys() {
84
+ return observedConfigKeys;
85
+ }
86
+ //# sourceMappingURL=configKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configKeys.js","sourceRoot":"","sources":["../../src/resource/configKeys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Language } from "./languages.js";
2
+ import type { SymbolType } from "./symbolTypes.js";
3
+ export declare enum DisplayItem {
4
+ Title = "title",
5
+ Info = "info",
6
+ Value = "value",
7
+ Signature = "signature",
8
+ Codeblock = "codeblock"
9
+ }
10
+ export declare function getDeclarationDisplayItems(symbolType: SymbolType): Set<DisplayItem>;
11
+ export declare function getReferenceDisplayItems(symbolType: SymbolType): Set<DisplayItem>;
12
+ export declare function getDisplayLanguage(symbolType: SymbolType): Language;
13
+ export declare function getConfigInclusions(symbolType: SymbolType): string[] | undefined;
@@ -0,0 +1,23 @@
1
+ import { getSymbolConfig } from "../symbolConfig.js";
2
+ import { Language } from "./languages.js";
3
+ export var DisplayItem;
4
+ (function (DisplayItem) {
5
+ DisplayItem["Title"] = "title";
6
+ DisplayItem["Info"] = "info";
7
+ DisplayItem["Value"] = "value";
8
+ DisplayItem["Signature"] = "signature";
9
+ DisplayItem["Codeblock"] = "codeblock";
10
+ })(DisplayItem || (DisplayItem = {}));
11
+ export function getDeclarationDisplayItems(symbolType) {
12
+ return new Set(getSymbolConfig(symbolType)?.hoverConfig?.declarationItems ?? []);
13
+ }
14
+ export function getReferenceDisplayItems(symbolType) {
15
+ return new Set(getSymbolConfig(symbolType)?.hoverConfig?.referenceItems ?? []);
16
+ }
17
+ export function getDisplayLanguage(symbolType) {
18
+ return getSymbolConfig(symbolType)?.hoverConfig?.language ?? Language.Runescript;
19
+ }
20
+ export function getConfigInclusions(symbolType) {
21
+ return getSymbolConfig(symbolType)?.hoverConfig?.configInclusions ?? undefined;
22
+ }
23
+ //# sourceMappingURL=displayItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displayItems.js","sourceRoot":"","sources":["../../../src/resource/enum/displayItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;AACzB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,MAAM,UAAU,0BAA0B,CAAC,UAAsB;IAC/D,OAAO,IAAI,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAsB;IAC7D,OAAO,IAAI,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAsB;IACvD,OAAO,eAAe,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAsB;IACxD,OAAO,eAAe,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,gBAAgB,IAAI,SAAS,CAAC;AACjF,CAAC"}
@@ -0,0 +1,26 @@
1
+ export declare enum FileType {
2
+ Constant = "constant",
3
+ Dbrow = "dbrow",
4
+ Dbtable = "dbtable",
5
+ Enum = "enum",
6
+ Hunt = "hunt",
7
+ Idk = "idk",
8
+ If = "if",
9
+ Inv = "inv",
10
+ Loc = "loc",
11
+ Mesanim = "mesanim",
12
+ Npc = "npc",
13
+ Ob2 = "ob2",
14
+ Obj = "obj",
15
+ Param = "param",
16
+ Rs2 = "rs2",
17
+ Seq = "seq",
18
+ Spotanim = "spotanim",
19
+ Struct = "struct",
20
+ Synth = "synth",
21
+ Varbit = "varbit",
22
+ Varn = "varn",
23
+ Varp = "varp",
24
+ Vars = "vars",
25
+ Pack = "pack"
26
+ }
@@ -0,0 +1,28 @@
1
+ export var FileType;
2
+ (function (FileType) {
3
+ FileType["Constant"] = "constant";
4
+ FileType["Dbrow"] = "dbrow";
5
+ FileType["Dbtable"] = "dbtable";
6
+ FileType["Enum"] = "enum";
7
+ FileType["Hunt"] = "hunt";
8
+ FileType["Idk"] = "idk";
9
+ FileType["If"] = "if";
10
+ FileType["Inv"] = "inv";
11
+ FileType["Loc"] = "loc";
12
+ FileType["Mesanim"] = "mesanim";
13
+ FileType["Npc"] = "npc";
14
+ FileType["Ob2"] = "ob2";
15
+ FileType["Obj"] = "obj";
16
+ FileType["Param"] = "param";
17
+ FileType["Rs2"] = "rs2";
18
+ FileType["Seq"] = "seq";
19
+ FileType["Spotanim"] = "spotanim";
20
+ FileType["Struct"] = "struct";
21
+ FileType["Synth"] = "synth";
22
+ FileType["Varbit"] = "varbit";
23
+ FileType["Varn"] = "varn";
24
+ FileType["Varp"] = "varp";
25
+ FileType["Vars"] = "vars";
26
+ FileType["Pack"] = "pack";
27
+ })(FileType || (FileType = {}));
28
+ //# sourceMappingURL=fileTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileTypes.js","sourceRoot":"","sources":["../../../src/resource/enum/fileTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAyBX;AAzBD,WAAY,QAAQ;IAClB,iCAAqB,CAAA;IACrB,2BAAe,CAAA;IACf,+BAAmB,CAAA;IACnB,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,uBAAW,CAAA;IACX,qBAAS,CAAA;IACT,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,+BAAmB,CAAA;IACnB,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,2BAAe,CAAA;IACf,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,iCAAqB,CAAA;IACrB,6BAAiB,CAAA;IACjB,2BAAe,CAAA;IACf,6BAAiB,CAAA;IACjB,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;AACf,CAAC,EAzBW,QAAQ,KAAR,QAAQ,QAyBnB"}
@@ -0,0 +1,25 @@
1
+ export declare enum Language {
2
+ Runescript = "runescript",
3
+ Locconfig = "locconfig",
4
+ Objconfig = "objconfig",
5
+ Npcconfig = "npcconfig",
6
+ Dbtableconfig = "dbtableconfig",
7
+ Dbrowconfig = "dbrowconfig",
8
+ Paramconfig = "paramconfig",
9
+ Structconfig = "structconfig",
10
+ Enumconfig = "enumconfig",
11
+ Varpconfig = "varpconfig",
12
+ Varbitconfig = "varbitconfig",
13
+ Varnconfig = "varnconfig",
14
+ Varsconfig = "varsconfig",
15
+ Invconfig = "invconfig",
16
+ Seqconfig = "seqconfig",
17
+ Spotanimconfig = "spotanimconfig",
18
+ Mesanimconfig = "mesanimconfig",
19
+ Idkconfig = "idkconfig",
20
+ Huntconfig = "huntconfig",
21
+ Constants = "constants",
22
+ Interface = "interface",
23
+ Pack = "pack",
24
+ Floconfig = "floconfig"
25
+ }
@@ -0,0 +1,27 @@
1
+ export var Language;
2
+ (function (Language) {
3
+ Language["Runescript"] = "runescript";
4
+ Language["Locconfig"] = "locconfig";
5
+ Language["Objconfig"] = "objconfig";
6
+ Language["Npcconfig"] = "npcconfig";
7
+ Language["Dbtableconfig"] = "dbtableconfig";
8
+ Language["Dbrowconfig"] = "dbrowconfig";
9
+ Language["Paramconfig"] = "paramconfig";
10
+ Language["Structconfig"] = "structconfig";
11
+ Language["Enumconfig"] = "enumconfig";
12
+ Language["Varpconfig"] = "varpconfig";
13
+ Language["Varbitconfig"] = "varbitconfig";
14
+ Language["Varnconfig"] = "varnconfig";
15
+ Language["Varsconfig"] = "varsconfig";
16
+ Language["Invconfig"] = "invconfig";
17
+ Language["Seqconfig"] = "seqconfig";
18
+ Language["Spotanimconfig"] = "spotanimconfig";
19
+ Language["Mesanimconfig"] = "mesanimconfig";
20
+ Language["Idkconfig"] = "idkconfig";
21
+ Language["Huntconfig"] = "huntconfig";
22
+ Language["Constants"] = "constants";
23
+ Language["Interface"] = "interface";
24
+ Language["Pack"] = "pack";
25
+ Language["Floconfig"] = "floconfig";
26
+ })(Language || (Language = {}));
27
+ //# sourceMappingURL=languages.js.map