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,22 @@
1
+ import { NotificationType } from "vscode-languageserver/node.js";
2
+ import { rebuildWorkspace } from "../manager.js";
3
+ import { mapUri } from "../utils/fileUtils.js";
4
+ import { getWorkspaceFolders } from "../utils/workspaceUtils.js";
5
+ import { log } from "../utils/logger.js";
6
+ export const GitBranchChanged = new NotificationType("runescript/gitBranchChanged");
7
+ export function registerGitEventHandlers(connection) {
8
+ connection.onNotification(GitBranchChanged, async (params) => {
9
+ const workspaceUri = params?.workspaceUri;
10
+ if (workspaceUri) {
11
+ const workspace = mapUri(workspaceUri);
12
+ log(`Recieved git branch change event on workspace=${workspace}`);
13
+ await rebuildWorkspace(workspace);
14
+ return;
15
+ }
16
+ log(`Recieved git branch change event without a workspace param - rebuilding all workspaces`);
17
+ for (const workspace of getWorkspaceFolders()) {
18
+ await rebuildWorkspace(workspace);
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=gitEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitEvents.js","sourceRoot":"","sources":["../../src/handler/gitEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAClD,6BAA6B,CAC9B,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,UAAsB;IAC7D,UAAU,CAAC,cAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3D,MAAM,YAAY,GAAG,MAAM,EAAE,YAAY,CAAC;QAC1C,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;YACvC,GAAG,CAAC,iDAAiD,SAAS,EAAE,CAAC,CAAC;YAClE,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,GAAG,CAAC,wFAAwF,CAAC,CAAC;QAC9F,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,EAAE,CAAC;YAC9C,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Connection } from "vscode-languageserver/node.js";
2
+ export declare function registerHoverHandler(connection: Connection): void;
@@ -0,0 +1,125 @@
1
+ import { isDevMode, isHoverEnabled } from "../utils/settingsUtils.js";
2
+ import { uriToFileInfo } from "../utils/fileUtils.js";
3
+ import { SymbolType } from "../resource/enum/symbolTypes.js";
4
+ import { DisplayItem, getDeclarationDisplayItems, getReferenceDisplayItems } from "../resource/enum/displayItems.js";
5
+ import { resolveAtHandlerPosition } from "../utils/resolverUtils.js";
6
+ export function registerHoverHandler(connection) {
7
+ connection.onHover((params) => {
8
+ if (!isHoverEnabled() && !isDevMode())
9
+ return null;
10
+ const fileInfo = uriToFileInfo(params.textDocument.uri);
11
+ const resolved = resolveAtHandlerPosition(params.position, fileInfo);
12
+ if (!resolved)
13
+ return null;
14
+ const markdown = [];
15
+ appendSymbolHoverText(markdown, resolved.data);
16
+ if (isDevMode())
17
+ appendDevModeHoverText(markdown, resolved, params.position);
18
+ const contents = {
19
+ kind: "markdown",
20
+ value: markdown.join('\n')
21
+ };
22
+ return { contents };
23
+ });
24
+ }
25
+ function appendSymbolHoverText(markdown, resolved) {
26
+ const displayItems = resolved.declaration
27
+ ? getDeclarationDisplayItems(resolved.symbolConfig.symbolType)
28
+ : getReferenceDisplayItems(resolved.symbolConfig.symbolType);
29
+ if (displayItems.size === 0)
30
+ return;
31
+ appendTitle(markdown, resolved);
32
+ appendInfo(markdown, resolved, displayItems);
33
+ appendValue(markdown, resolved, displayItems);
34
+ appendSignature(markdown, resolved, displayItems);
35
+ appendCodeBlock(markdown, resolved, displayItems);
36
+ }
37
+ function appendDevModeHoverText(markdown, resolvedDataRange, position) {
38
+ if (markdown.length > 0 && markdown[markdown.length - 1] !== '>') {
39
+ addNewLine('---', markdown);
40
+ markdown.push('>');
41
+ }
42
+ const resolved = resolvedDataRange.data;
43
+ markdown.push(`#### Debug ${resolved.symbol.name}`);
44
+ const debugData = {
45
+ symbolType: resolved.symbolConfig.symbolType,
46
+ declaration: resolved.declaration,
47
+ context: resolved.context,
48
+ symbol: resolved.symbol,
49
+ parseData: { line: position.line, startIdx: resolvedDataRange.start, endIdx: resolvedDataRange.end },
50
+ };
51
+ addNewLine('```json', markdown);
52
+ markdown.push(stringifyForDebug(debugData));
53
+ markdown.push('```');
54
+ }
55
+ function addNewLine(str, markdown) {
56
+ markdown.push('');
57
+ markdown.push(str);
58
+ }
59
+ function appendTitle(markdown, resolved) {
60
+ let name = resolved.symbol.name;
61
+ if (resolved.context?.isCert)
62
+ name = `${name} (cert)`;
63
+ if (resolved.symbol.id)
64
+ name = `${name} [${resolved.symbol.id}]`;
65
+ markdown.push(`#### **${resolved.symbolConfig.symbolType === SymbolType.GameVar ? resolved.symbol.fileType.toUpperCase() : resolved.symbolConfig.symbolType.toUpperCase()}** ${name}`);
66
+ addNewLine('---', markdown);
67
+ markdown.push('>');
68
+ }
69
+ function appendInfo(markdown, resolved, displayItems) {
70
+ if (displayItems.has(DisplayItem.Info) && resolved.symbol.info) {
71
+ addNewLine(`_${resolved.symbol.info}_`, markdown);
72
+ }
73
+ }
74
+ function appendValue(markdown, resolved, displayItems) {
75
+ if (displayItems.has(DisplayItem.Value) && resolved.symbol.value) {
76
+ addNewLine(resolved.symbol.value, markdown);
77
+ }
78
+ }
79
+ function appendSignature(markdown, resolved, displayItems) {
80
+ if (displayItems.has(DisplayItem.Signature) && resolved.symbol.signature) {
81
+ const params = resolved.symbol.signature.getParamsDisplayText();
82
+ const returns = resolved.symbol.signature.getReturnsDisplayText();
83
+ if (!params && !returns)
84
+ return;
85
+ addNewLine('```' + resolved.symbol.language, markdown);
86
+ if (params)
87
+ markdown.push(`params: ${params}`);
88
+ if (returns)
89
+ markdown.push(`returns: ${returns}`);
90
+ markdown.push('```');
91
+ }
92
+ }
93
+ function appendCodeBlock(markdown, resolved, displayItems) {
94
+ if (displayItems.has(DisplayItem.Codeblock) && resolved.symbol.block) {
95
+ addNewLine('```' + resolved.symbol.language, markdown);
96
+ markdown.push(resolved.symbol.block);
97
+ markdown.push('```');
98
+ }
99
+ }
100
+ function stringifyForDebug(value) {
101
+ const seen = new WeakSet();
102
+ const replacer = (_key, input) => {
103
+ if (typeof input === "function")
104
+ return "[Function]";
105
+ if (input instanceof Map)
106
+ return Object.fromEntries(input);
107
+ if (input instanceof Set)
108
+ return Array.from(input);
109
+ if (input && typeof input === "object") {
110
+ const obj = input;
111
+ if (seen.has(obj))
112
+ return "[Circular]";
113
+ seen.add(obj);
114
+ }
115
+ return input;
116
+ };
117
+ try {
118
+ const serialized = JSON.stringify(value, replacer, 2);
119
+ return serialized ?? String(value);
120
+ }
121
+ catch {
122
+ return String(value);
123
+ }
124
+ }
125
+ //# sourceMappingURL=hover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover.js","sourceRoot":"","sources":["../../src/handler/hover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Connection } from "vscode-languageserver/node.js";
2
+ export declare function registerReferencesHandler(connection: Connection): void;
@@ -0,0 +1,33 @@
1
+ import { fsPathToUri, uriToFileInfo } from "../utils/fileUtils.js";
2
+ import { decodeToLocation } from "../utils/cacheUtils.js";
3
+ import { resolveAtHandlerPosition } from "../utils/resolverUtils.js";
4
+ export function registerReferencesHandler(connection) {
5
+ connection.onReferences((params) => {
6
+ const fileInfo = uriToFileInfo(params.textDocument.uri);
7
+ const resolvedDataRange = resolveAtHandlerPosition(params.position, fileInfo);
8
+ if (!resolvedDataRange)
9
+ return [];
10
+ const resolved = resolvedDataRange.data;
11
+ // These symbol types have no references to find
12
+ if (resolved.symbolConfig.noop || !resolved.symbolConfig.cache) {
13
+ return [];
14
+ }
15
+ // Decode all the references for the identifier into an array of vscode Location objects
16
+ const referenceLocations = [];
17
+ Object.keys(resolved.symbol.references).forEach(fsPath => {
18
+ const uri = fsPathToUri(fsPath);
19
+ resolved.symbol.references[fsPath].forEach(encodedReference => {
20
+ const location = decodeToLocation(uri, encodedReference);
21
+ if (location) {
22
+ referenceLocations.push(location);
23
+ }
24
+ });
25
+ });
26
+ // If there is only one reference and its the declaration, return empty list as theres no other references to show
27
+ if (resolved.declaration && referenceLocations.length === 1) {
28
+ return [];
29
+ }
30
+ return referenceLocations;
31
+ });
32
+ }
33
+ //# sourceMappingURL=references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/handler/references.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,MAAM,UAAU,yBAAyB,CAAC,UAAsB;IAC9D,UAAU,CAAC,YAAY,CAAC,CAAC,MAAuB,EAAc,EAAE;QAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9E,IAAI,CAAC,iBAAiB;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC;QAExC,gDAAgD;QAChD,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC/D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,wFAAwF;QACxF,MAAM,kBAAkB,GAAe,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvD,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;gBAC5D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;gBACzD,IAAI,QAAQ,EAAE,CAAC;oBACb,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,kHAAkH;QAClH,IAAI,QAAQ,CAAC,WAAW,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Connection } from "vscode-languageserver/node.js";
2
+ export declare function registerRenameHandler(connection: Connection): void;
@@ -0,0 +1,6 @@
1
+ export function registerRenameHandler(connection) {
2
+ connection.onRenameRequest((_params) => {
3
+ return null;
4
+ });
5
+ }
6
+ //# sourceMappingURL=rename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename.js","sourceRoot":"","sources":["../../src/handler/rename.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,UAAsB;IAC1D,UAAU,CAAC,eAAe,CAAC,CAAC,OAAqB,EAAwB,EAAE;QACzE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Connection } from "vscode-languageserver/node.js";
2
+ import type { SemanticTokensLegend } from "vscode-languageserver/node.js";
3
+ export declare function registerSemanticTokensHandler(connection: Connection): void;
4
+ export declare function getSemanticTokensLegend(): SemanticTokensLegend;
@@ -0,0 +1,40 @@
1
+ import { SemanticTokensBuilder } from "vscode-languageserver/node.js";
2
+ import { SemanticTokenType } from "../resource/enum/semanticTokens.js";
3
+ import { uriToFileInfo } from "../utils/fileUtils.js";
4
+ import { getWorkspaceCache } from "../cache/cacheManager.js";
5
+ const tokenTypes = Object.values(SemanticTokenType);
6
+ const tokenTypeIndex = new Map(tokenTypes.map((t, i) => [t, i]));
7
+ export function registerSemanticTokensHandler(connection) {
8
+ connection.languages.semanticTokens.on((params) => {
9
+ const builder = new SemanticTokensBuilder();
10
+ const fileInfo = uriToFileInfo(params.textDocument.uri);
11
+ const fileCache = getWorkspaceCache(fileInfo.workspace).getFileCache(fileInfo.fsPath);
12
+ if (!fileCache)
13
+ return builder.build();
14
+ const tokens = [];
15
+ fileCache.getSymbols().forEach((symbols, line) => {
16
+ symbols.forEach(symbol => {
17
+ const token = symbol.data.declaration
18
+ ? symbol.data.symbolConfig.semanticTokenConfig?.declaration
19
+ : symbol.data.symbolConfig.semanticTokenConfig?.reference;
20
+ if (!token)
21
+ return;
22
+ tokens.push({
23
+ line,
24
+ start: symbol.start,
25
+ length: symbol.end - symbol.start,
26
+ type: tokenTypeIndex.get(token),
27
+ });
28
+ });
29
+ });
30
+ tokens.sort((a, b) => (a.line - b.line) || (a.start - b.start)).forEach(t => builder.push(t.line, t.start, t.length, t.type, 0));
31
+ return builder.build();
32
+ });
33
+ }
34
+ export function getSemanticTokensLegend() {
35
+ return {
36
+ tokenTypes: tokenTypes,
37
+ tokenModifiers: [],
38
+ };
39
+ }
40
+ //# sourceMappingURL=semanticTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semanticTokens.js","sourceRoot":"","sources":["../../src/handler/semanticTokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACpD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjE,MAAM,UAAU,6BAA6B,CAAC,UAAsB;IAClE,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAA4B,EAAkB,EAAE;QACtF,MAAM,OAAO,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtF,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;QAEvC,MAAM,MAAM,GAAoE,EAAE,CAAC;QACnF,SAAS,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YAC/C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACvB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW;oBACnC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,WAAW;oBAC3D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,SAAS,CAAC;gBAC5D,IAAI,CAAC,KAAK;oBAAE,OAAO;gBACnB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK;oBACjC,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAE;iBACjC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjI,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,UAAU,EAAE,UAAU;QACtB,cAAc,EAAE,EAAE;KACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Connection } from "vscode-languageserver/node.js";
2
+ export declare function registerSettingsChangeHandlers(connection: Connection): void;
@@ -0,0 +1,11 @@
1
+ import { handleSettingsChange } from "../utils/settingsUtils.js";
2
+ import { getIsInitializing } from "../utils/initUtils.js";
3
+ export function registerSettingsChangeHandlers(connection) {
4
+ // fires when config (settings) change
5
+ connection.onDidChangeConfiguration((change) => {
6
+ if (getIsInitializing())
7
+ return;
8
+ handleSettingsChange(change);
9
+ });
10
+ }
11
+ //# sourceMappingURL=settingsEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsEvents.js","sourceRoot":"","sources":["../../src/handler/settingsEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,UAAU,8BAA8B,CAAC,UAAsB;IACnE,sCAAsC;IACtC,UAAU,CAAC,wBAAwB,CAAC,CAAC,MAAoC,EAAE,EAAE;QAC3E,IAAI,iBAAiB,EAAE;YAAE,OAAO;QAChC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Connection } from "vscode-languageserver/node.js";
2
+ export declare function registerSignatureHelpHandler(connection: Connection): void;
@@ -0,0 +1,6 @@
1
+ export function registerSignatureHelpHandler(connection) {
2
+ connection.onSignatureHelp((_params) => {
3
+ return null;
4
+ });
5
+ }
6
+ //# sourceMappingURL=signatureHelp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatureHelp.js","sourceRoot":"","sources":["../../src/handler/signatureHelp.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAAC,UAAsB;IACjE,UAAU,CAAC,eAAe,CAAC,CAAC,OAA4B,EAAwB,EAAE;QAChF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Connection } from "vscode-languageserver/node.js";
2
+ export declare function registerWorkspaceEventHandlers(connection: Connection): void;
@@ -0,0 +1,30 @@
1
+ import { logWorkspaceEvent } from "../utils/logger.js";
2
+ import { mapUri } from "../utils/fileUtils.js";
3
+ import { URI } from "vscode-uri";
4
+ import { disposeWorkspace, rebuildWorkspace } from "../manager.js";
5
+ import { getIsInitializing } from "../utils/initUtils.js";
6
+ import { getWorkspaceFolders, setWorkspaceFolders } from "../utils/workspaceUtils.js";
7
+ export function registerWorkspaceEventHandlers(connection) {
8
+ connection.workspace.onDidChangeWorkspaceFolders((event) => {
9
+ if (getIsInitializing())
10
+ return;
11
+ const existing = new Set(getWorkspaceFolders());
12
+ for (const removed of event.removed) {
13
+ const fsPath = mapUri(removed.uri);
14
+ logWorkspaceEvent(fsPath, false);
15
+ existing.delete(fsPath);
16
+ disposeWorkspace(fsPath);
17
+ }
18
+ for (const added of event.added) {
19
+ const fsPath = mapUri(added.uri);
20
+ logWorkspaceEvent(fsPath, true);
21
+ existing.add(fsPath);
22
+ void rebuildWorkspace(fsPath);
23
+ }
24
+ setWorkspaceFolders(Array.from(existing).map((fsPath) => ({
25
+ uri: URI.file(fsPath).toString(),
26
+ name: fsPath,
27
+ })));
28
+ });
29
+ }
30
+ //# sourceMappingURL=workspaceEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceEvents.js","sourceRoot":"","sources":["../../src/handler/workspaceEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,MAAM,UAAU,8BAA8B,CAAC,UAAsB;IACnE,UAAU,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,KAAkC,EAAE,EAAE;QACtF,IAAI,iBAAiB,EAAE;YAAE,OAAO;QAEhC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAChD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrB,KAAK,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,mBAAmB,CACjB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACpC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;YAChC,IAAI,EAAE,MAAM;SACb,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { FileInfo } from "./types.js";
2
+ export declare function rebuildAllWorkspaces(): Promise<void>;
3
+ export declare function rebuildWorkspace(workspace: string): Promise<void>;
4
+ export declare function rebuildFile(fileInfo: FileInfo, text?: string): Promise<void>;
5
+ export declare function disposeWorkspace(workspace: string): void;
6
+ export declare function disposeFile(fileInfo: FileInfo): void;
@@ -0,0 +1,126 @@
1
+ import { addWorkspaceCache, clearFile, clearWorkspaceCache, getWorkspaceCache } from "./cache/cacheManager.js";
2
+ import { parseFile, ParserKind } from "./parser/parser.js";
3
+ import { ResolutionMode, resolveParsedResult } from "./resolver/resolver.js";
4
+ import { getConnection } from "./utils/connectionUtils.js";
5
+ import { sendAllHighlights, sendFileHighlights } from "./utils/highlightUtils.js";
6
+ import { formatMs, log } from "./utils/logger.js";
7
+ import { startProgress } from "./utils/progressUtils.js";
8
+ import { getMonitoredWorkspaceFiles, getWorkspaceFolders } from "./utils/workspaceUtils.js";
9
+ export async function rebuildAllWorkspaces() {
10
+ await Promise.all(getWorkspaceFolders().map(ws => rebuildWorkspace(ws)));
11
+ }
12
+ export async function rebuildWorkspace(workspace) {
13
+ const startRescan = performance.now();
14
+ log(`Starting rescan of workspace ${workspace}`);
15
+ // Clear workspace caches
16
+ let cache = clearWorkspaceCache(workspace);
17
+ if (!cache)
18
+ cache = addWorkspaceCache(workspace);
19
+ // Scan for workspace files
20
+ let start = performance.now();
21
+ const progress = await startProgress('Indexing Workspace', 'Scanning files...');
22
+ const files = await getMonitoredWorkspaceFiles(workspace);
23
+ if (files.length === 0) {
24
+ log(`Not a runescript workspace, no further work will be done on workspace [${workspace}]`);
25
+ progress.done();
26
+ return;
27
+ }
28
+ log(`Rescan: Found ${files.length} files in ${formatMs(performance.now() - start)}`);
29
+ // Parse files
30
+ let done = 0;
31
+ const total = files.length;
32
+ const parsingStartPct = 10;
33
+ const parsingEndPct = 80;
34
+ start = performance.now();
35
+ progress.report(parsingStartPct, 'Parsing files...');
36
+ const parsedFiles = (await Promise.all(files.map(async (fileInfo) => {
37
+ cache.addFileCache(fileInfo);
38
+ const result = await parseFile(fileInfo);
39
+ const current = ++done;
40
+ if (current % 250 === 0 || current === total) {
41
+ const pct = parsingStartPct + Math.floor(((current / total) * (parsingEndPct - parsingStartPct)));
42
+ progress.report(pct, `Parsed ${current}/${total}`);
43
+ }
44
+ return result;
45
+ }))).filter(pf => pf !== undefined);
46
+ log(`Rescan: Parsed ${parsedFiles.length} files in ${formatMs(performance.now() - start)}`);
47
+ // Partition parsed files
48
+ const constants = [];
49
+ const gameVars = [];
50
+ const configs = [];
51
+ const scripts = [];
52
+ const packs = [];
53
+ const tables = [];
54
+ for (const pf of parsedFiles) {
55
+ switch (pf.kind) {
56
+ case ParserKind.Gamevar:
57
+ gameVars.push(pf);
58
+ break;
59
+ case ParserKind.Constant:
60
+ constants.push(pf);
61
+ break;
62
+ case ParserKind.Config:
63
+ configs.push(pf);
64
+ break;
65
+ case ParserKind.Script:
66
+ scripts.push(pf);
67
+ break;
68
+ case ParserKind.Pack:
69
+ packs.push(pf);
70
+ break;
71
+ case ParserKind.DbTable:
72
+ tables.push(pf);
73
+ break;
74
+ }
75
+ }
76
+ // Resolve and cache symbols
77
+ start = performance.now();
78
+ let resolved = 0;
79
+ const resolvingStep = (100 - parsingEndPct) / 8;
80
+ resolveFiles(constants, ResolutionMode.All, cache, progress, 82, "Resolving constants");
81
+ resolveFiles(gameVars, ResolutionMode.All, cache, progress, 84, "Resolving game vars");
82
+ resolveFiles(tables, ResolutionMode.All, cache, progress, 86, "Resolving dbtables");
83
+ resolveFiles(configs, ResolutionMode.Definitions, cache, progress, 88, "Resolving config definitions");
84
+ resolveFiles(scripts, ResolutionMode.Definitions, cache, progress, 90, "Resolving script definitions");
85
+ resolveFiles(configs, ResolutionMode.References, cache, progress, 92, "Resolving config references");
86
+ resolveFiles(scripts, ResolutionMode.References, cache, progress, 94, "Resolving script references");
87
+ resolveFiles(packs, ResolutionMode.All, cache, progress, 96, "Resolving pack files");
88
+ log(`Rescan: Resolved ${resolved} symbols in ${formatMs(performance.now() - start)}`);
89
+ // Report diagnostics?
90
+ sendAllHighlights(cache);
91
+ getConnection()?.languages.semanticTokens.refresh();
92
+ log(`Finished rescan of workspace [${workspace}] in ${formatMs(performance.now() - startRescan)}`);
93
+ progress.report(100, "Finalizing indexes");
94
+ await new Promise((r) => setTimeout(r, 1000));
95
+ progress.done();
96
+ }
97
+ function resolveFiles(parseResults, resolutionMode, cache, progress, percent, progressMsg) {
98
+ let symbolCount = 0;
99
+ parseResults.forEach(parsedResult => symbolCount = resolveParsedResult(parsedResult, cache, resolutionMode));
100
+ progress.report(percent, progressMsg);
101
+ return symbolCount;
102
+ }
103
+ export async function rebuildFile(fileInfo, text) {
104
+ const start = performance.now();
105
+ // clear and init new caches
106
+ clearFile(fileInfo.workspace, fileInfo.fsPath);
107
+ const cache = getWorkspaceCache(fileInfo.workspace);
108
+ cache.addFileCache(fileInfo);
109
+ // parse file
110
+ const parsedFile = await parseFile(fileInfo, text);
111
+ if (!parsedFile)
112
+ return;
113
+ // resolve file
114
+ const symbolCount = resolveParsedResult(parsedFile, cache, ResolutionMode.All);
115
+ sendFileHighlights(fileInfo);
116
+ getConnection()?.languages.semanticTokens.refresh();
117
+ // diagnostics?
118
+ log(`Rebuilt file [${fileInfo.name}.${fileInfo.type}] and resolved ${symbolCount} symbols in ${formatMs(performance.now() - start)}`);
119
+ }
120
+ export function disposeWorkspace(workspace) {
121
+ clearWorkspaceCache(workspace);
122
+ }
123
+ export function disposeFile(fileInfo) {
124
+ getWorkspaceCache(fileInfo.workspace).clearFile(fileInfo.fsPath);
125
+ }
126
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { ConfigData, FileConfigData, ParsedWord } from "../types.js";
2
+ import { type ParseRequest, type ParseResult } from "./parser.js";
3
+ export declare enum ConfigWordType {
4
+ Definition = "definition",
5
+ Key = "key",
6
+ Value = "value",
7
+ GameVar = "gamevar",
8
+ Constant = "constant"
9
+ }
10
+ interface ConfigWord extends ParsedWord {
11
+ type: ConfigWordType;
12
+ valueIndex?: number;
13
+ }
14
+ interface ConfigItem {
15
+ parsedWords: Map<number, ConfigWord[]>;
16
+ configData: Map<number, ConfigData>;
17
+ displayLines: Map<string, string[]>;
18
+ info: string | undefined;
19
+ startLine: number;
20
+ endLine: number;
21
+ }
22
+ export interface ConfigFile {
23
+ configItems: ConfigItem[];
24
+ }
25
+ export declare const gameVarFileParser: (request: ParseRequest) => ParseResult | undefined;
26
+ export declare const configFileParser: (request: ParseRequest) => ParseResult | undefined;
27
+ export declare function parseConfigFile(lines: string[], configData: FileConfigData, displayKeys: Set<string>): ConfigFile;
28
+ export declare function parseConfigItem(lines: string[], startLine: number, configData: FileConfigData, displayKeys: Set<string>): ConfigItem | undefined;
29
+ export {};