@opensumi/ide-ai-native 3.8.3-next-1745295615.0 → 3.8.3-next-1745307078.0
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/lib/browser/chat/chat-manager.service.d.ts +1 -0
- package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-manager.service.js +11 -0
- package/lib/browser/chat/chat-manager.service.js.map +1 -1
- package/lib/browser/chat/chat-model.d.ts +4 -0
- package/lib/browser/chat/chat-model.d.ts.map +1 -1
- package/lib/browser/chat/chat-model.js +11 -2
- package/lib/browser/chat/chat-model.js.map +1 -1
- package/lib/browser/chat/chat.view.d.ts.map +1 -1
- package/lib/browser/chat/chat.view.js +6 -1
- package/lib/browser/chat/chat.view.js.map +1 -1
- package/lib/browser/components/ChatMentionInput.d.ts +2 -0
- package/lib/browser/components/ChatMentionInput.d.ts.map +1 -1
- package/lib/browser/components/ChatMentionInput.js +5 -3
- package/lib/browser/components/ChatMentionInput.js.map +1 -1
- package/lib/browser/components/mention-input/mention-input.d.ts.map +1 -1
- package/lib/browser/components/mention-input/mention-input.js +4 -1
- package/lib/browser/components/mention-input/mention-input.js.map +1 -1
- package/lib/browser/components/mention-input/types.d.ts +1 -0
- package/lib/browser/components/mention-input/types.d.ts.map +1 -1
- package/lib/browser/components/mention-input/types.js.map +1 -1
- package/lib/browser/contrib/inline-completions/prompt/importedFiles.d.ts.map +1 -1
- package/lib/browser/contrib/inline-completions/prompt/importedFiles.js +1 -2
- package/lib/browser/contrib/inline-completions/prompt/importedFiles.js.map +1 -1
- package/lib/browser/contrib/merge-conflict/index.d.ts.map +1 -1
- package/lib/browser/contrib/merge-conflict/index.js +5 -2
- package/lib/browser/contrib/merge-conflict/index.js.map +1 -1
- package/lib/browser/mcp/tools/fileSearch.d.ts.map +1 -1
- package/lib/browser/mcp/tools/fileSearch.js +2 -2
- package/lib/browser/mcp/tools/fileSearch.js.map +1 -1
- package/lib/browser/model/msg-history-manager.d.ts +1 -0
- package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
- package/lib/browser/model/msg-history-manager.js +3 -0
- package/lib/browser/model/msg-history-manager.js.map +1 -1
- package/lib/common/index.d.ts +1 -2
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js.map +1 -1
- package/lib/common/mcp-server-manager.d.ts +1 -4
- package/lib/common/mcp-server-manager.d.ts.map +1 -1
- package/lib/common/mcp-server-manager.js.map +1 -1
- package/lib/common/types.d.ts +0 -6
- package/lib/common/types.d.ts.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.d.ts +0 -2
- package/lib/node/mcp/sumi-mcp-server.d.ts.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.js +0 -6
- package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
- package/lib/node/mcp-server-manager-impl.d.ts +0 -1
- package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
- package/lib/node/mcp-server-manager-impl.js +2 -5
- package/lib/node/mcp-server-manager-impl.js.map +1 -1
- package/lib/node/mcp-server.sse.d.ts +1 -6
- package/lib/node/mcp-server.sse.d.ts.map +1 -1
- package/lib/node/mcp-server.sse.js +2 -7
- package/lib/node/mcp-server.sse.js.map +1 -1
- package/lib/node/mcp-server.stdio.d.ts +0 -2
- package/lib/node/mcp-server.stdio.d.ts.map +1 -1
- package/lib/node/mcp-server.stdio.js +0 -3
- package/lib/node/mcp-server.stdio.js.map +1 -1
- package/package.json +23 -23
- package/src/browser/chat/chat-manager.service.ts +12 -0
- package/src/browser/chat/chat-model.ts +13 -1
- package/src/browser/chat/chat.view.tsx +7 -0
- package/src/browser/components/ChatMentionInput.tsx +7 -3
- package/src/browser/components/mention-input/mention-input.tsx +5 -0
- package/src/browser/components/mention-input/types.ts +1 -0
- package/src/browser/contrib/inline-completions/prompt/importedFiles.ts +1 -3
- package/src/browser/contrib/merge-conflict/index.ts +3 -2
- package/src/browser/mcp/tools/fileSearch.ts +2 -2
- package/src/browser/model/msg-history-manager.ts +4 -0
- package/src/common/index.ts +1 -2
- package/src/common/mcp-server-manager.ts +1 -4
- package/src/common/types.ts +0 -7
- package/src/node/mcp/sumi-mcp-server.ts +0 -8
- package/src/node/mcp-server-manager-impl.ts +2 -6
- package/src/node/mcp-server.sse.ts +2 -15
- package/src/node/mcp-server.stdio.ts +0 -4
- package/lib/browser/contrib/inline-completions/prompt/languages.d.ts +0 -4
- package/lib/browser/contrib/inline-completions/prompt/languages.d.ts.map +0 -1
- package/lib/browser/contrib/inline-completions/prompt/languages.js +0 -67
- package/lib/browser/contrib/inline-completions/prompt/languages.js.map +0 -1
- package/src/browser/contrib/inline-completions/prompt/languages.ts +0 -65
|
@@ -3,6 +3,7 @@ import { z } from 'zod';
|
|
|
3
3
|
import { Autowired } from '@opensumi/di';
|
|
4
4
|
import { getValidateInput } from '@opensumi/ide-addons/lib/browser/file-search.contribution';
|
|
5
5
|
import { Domain, URI } from '@opensumi/ide-core-common';
|
|
6
|
+
import { defaultFilesWatcherExcludes } from '@opensumi/ide-core-common/lib/preferences/file-watch';
|
|
6
7
|
import { FileSearchServicePath, IFileSearchService } from '@opensumi/ide-file-search/lib/common';
|
|
7
8
|
import { IWorkspaceService } from '@opensumi/ide-workspace';
|
|
8
9
|
|
|
@@ -63,8 +64,7 @@ export class FileSearchTool implements MCPServerContribution {
|
|
|
63
64
|
const searchPattern = this.normalizeQuery(args.query);
|
|
64
65
|
const searchResults = await this.fileSearchService.find(searchPattern, {
|
|
65
66
|
rootUris: [new URI(workspaceRoots[0].uri).codeUri.fsPath],
|
|
66
|
-
|
|
67
|
-
excludePatterns: ['**/node_modules/**'],
|
|
67
|
+
excludePatterns: Object.keys(defaultFilesWatcherExcludes),
|
|
68
68
|
limit: 100,
|
|
69
69
|
useGitIgnore: true,
|
|
70
70
|
noIgnoreParent: true,
|
package/src/common/index.ts
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import { DESIGN_MENUBAR_CONTAINER_VIEW_ID } from '@opensumi/ide-design/lib/common/constants';
|
|
16
16
|
import { IPosition, ITextModel, InlineCompletionContext } from '@opensumi/ide-monaco/lib/common';
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import { MCPServerDescription } from './mcp-server-manager';
|
|
19
19
|
import { IPartialEditEvent, MCPTool } from './types';
|
|
20
20
|
|
|
21
21
|
import type { CoreMessage } from 'ai';
|
|
@@ -151,7 +151,6 @@ export interface ISumiMCPServerBackend {
|
|
|
151
151
|
$addOrUpdateServer(description: MCPServerDescription): void;
|
|
152
152
|
$removeServer(name: string): void;
|
|
153
153
|
$syncServer(name: string): Promise<void>;
|
|
154
|
-
$getMCPServerByName(name: string): IMCPServer | undefined;
|
|
155
154
|
}
|
|
156
155
|
|
|
157
156
|
export const SumiMCPServerProxyServicePath = 'SumiMCPServerProxyServicePath';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
2
|
|
|
3
|
-
import { MCP_SERVER_TYPE
|
|
3
|
+
import { MCP_SERVER_TYPE } from './types';
|
|
4
4
|
|
|
5
5
|
export interface IMCPServer {
|
|
6
6
|
isStarted(): boolean;
|
|
@@ -8,7 +8,6 @@ export interface IMCPServer {
|
|
|
8
8
|
getServerName(): string;
|
|
9
9
|
callTool(toolName: string, toolCallId: string, arg_string: string): ReturnType<Client['callTool']>;
|
|
10
10
|
getTools(): ReturnType<Client['listTools']>;
|
|
11
|
-
getClient(): Client | null;
|
|
12
11
|
update(command: string, args?: string[], env?: { [key: string]: string }): void;
|
|
13
12
|
stop(): void;
|
|
14
13
|
}
|
|
@@ -33,7 +32,6 @@ export interface MCPServerManager {
|
|
|
33
32
|
registerTools(serverName: string): Promise<void>;
|
|
34
33
|
addExternalMCPServers(servers: MCPServerDescription[]): void;
|
|
35
34
|
getServers(): Map<string, IMCPServer>;
|
|
36
|
-
getServerByName(name: string): IMCPServer | undefined;
|
|
37
35
|
}
|
|
38
36
|
|
|
39
37
|
export type MCPTool = Awaited<ReturnType<MCPServerManager['getTools']>>['tools'][number];
|
|
@@ -78,7 +76,6 @@ export interface SSEMCPServerDescription extends BaseMCPServerDescription {
|
|
|
78
76
|
* The host of the MCP server.
|
|
79
77
|
*/
|
|
80
78
|
serverHost: string;
|
|
81
|
-
transportOptions?: SSEClientTransportOptions;
|
|
82
79
|
}
|
|
83
80
|
|
|
84
81
|
export interface BuiltinMCPServerDescription {
|
package/src/common/types.ts
CHANGED
|
@@ -60,10 +60,6 @@ export class SumiMCPServerBackend extends RPCService<IMCPServerProxyService> imp
|
|
|
60
60
|
return tools;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
$getMCPServerByName(name: string) {
|
|
64
|
-
return this.mcpServerManager.getServerByName(name);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
63
|
async callMCPTool(name: string, args: any) {
|
|
68
64
|
if (!this.client) {
|
|
69
65
|
throw new Error('SUMI MCP RPC Client not initialized');
|
|
@@ -236,10 +232,6 @@ export class BuiltinMCPServer implements IMCPServer {
|
|
|
236
232
|
return BUILTIN_MCP_SERVER_NAME;
|
|
237
233
|
}
|
|
238
234
|
|
|
239
|
-
getClient(): Client | null {
|
|
240
|
-
return null;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
235
|
async start(): Promise<void> {
|
|
244
236
|
if (this.started) {
|
|
245
237
|
return;
|
|
@@ -92,10 +92,6 @@ export class MCPServerManagerImpl implements MCPServerManager {
|
|
|
92
92
|
return Array.from(this.servers.keys());
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
getServerByName(name: string): IMCPServer | undefined {
|
|
96
|
-
return this.servers.get(name);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
95
|
private convertToToolRequest(tool: MCPTool, serverName: string): ToolRequest {
|
|
100
96
|
const id = getToolName(tool.name, serverName);
|
|
101
97
|
|
|
@@ -157,11 +153,11 @@ export class MCPServerManagerImpl implements MCPServerManager {
|
|
|
157
153
|
this.servers.set(name, newServer);
|
|
158
154
|
}
|
|
159
155
|
} else if (description.type === MCP_SERVER_TYPE.SSE) {
|
|
160
|
-
const { name, serverHost
|
|
156
|
+
const { name, serverHost } = description;
|
|
161
157
|
if (existingServer) {
|
|
162
158
|
existingServer.update(serverHost);
|
|
163
159
|
} else {
|
|
164
|
-
const newServer = new SSEMCPServer(name, serverHost, this.logger
|
|
160
|
+
const newServer = new SSEMCPServer(name, serverHost, this.logger);
|
|
165
161
|
this.servers.set(name, newServer);
|
|
166
162
|
}
|
|
167
163
|
}
|
|
@@ -6,25 +6,17 @@ import { ILogger } from '@opensumi/ide-core-common';
|
|
|
6
6
|
|
|
7
7
|
import pkg from '../../package.json';
|
|
8
8
|
import { IMCPServer } from '../common/mcp-server-manager';
|
|
9
|
-
import { SSEClientTransportOptions } from '../common/types';
|
|
10
9
|
|
|
11
10
|
global.EventSource = EventSource as any;
|
|
12
11
|
export class SSEMCPServer implements IMCPServer {
|
|
13
12
|
private name: string;
|
|
14
13
|
public serverHost: string;
|
|
15
|
-
private transportOptions?: SSEClientTransportOptions;
|
|
16
14
|
private client: Client;
|
|
17
15
|
private started: boolean = false;
|
|
18
16
|
|
|
19
|
-
constructor(
|
|
20
|
-
name: string,
|
|
21
|
-
serverHost: string,
|
|
22
|
-
private readonly logger?: ILogger,
|
|
23
|
-
private readonly options?: SSEClientTransportOptions,
|
|
24
|
-
) {
|
|
17
|
+
constructor(name: string, serverHost: string, private readonly logger?: ILogger) {
|
|
25
18
|
this.name = name;
|
|
26
19
|
this.serverHost = serverHost;
|
|
27
|
-
this.transportOptions = options;
|
|
28
20
|
}
|
|
29
21
|
|
|
30
22
|
isStarted(): boolean {
|
|
@@ -35,10 +27,6 @@ export class SSEMCPServer implements IMCPServer {
|
|
|
35
27
|
return this.name;
|
|
36
28
|
}
|
|
37
29
|
|
|
38
|
-
getClient(): Client | null {
|
|
39
|
-
return this.client;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
30
|
async start(): Promise<void> {
|
|
43
31
|
if (this.started) {
|
|
44
32
|
return;
|
|
@@ -47,8 +35,7 @@ export class SSEMCPServer implements IMCPServer {
|
|
|
47
35
|
|
|
48
36
|
const SSEClientTransport = (await import('@modelcontextprotocol/sdk/client/sse.js')).SSEClientTransport;
|
|
49
37
|
|
|
50
|
-
const transport = new SSEClientTransport(new URL(this.serverHost)
|
|
51
|
-
|
|
38
|
+
const transport = new SSEClientTransport(new URL(this.serverHost));
|
|
52
39
|
transport.onerror = (error) => {
|
|
53
40
|
this.logger?.error('Transport Error:', error);
|
|
54
41
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../../../src/browser/contrib/inline-completions/prompt/languages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,EAAE;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CA+DvB,CAAC"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LANGUAGE_TO_SUFFIX = void 0;
|
|
4
|
-
exports.LANGUAGE_TO_SUFFIX = {
|
|
5
|
-
abap: '.abap',
|
|
6
|
-
bat: '.bat',
|
|
7
|
-
bibtex: '.bib',
|
|
8
|
-
c: '.c',
|
|
9
|
-
clojure: '.clj',
|
|
10
|
-
coffeescript: '.coffee',
|
|
11
|
-
cpp: '.cpp',
|
|
12
|
-
csharp: '.cs',
|
|
13
|
-
css: '.css',
|
|
14
|
-
'cuda-cpp': '.cu',
|
|
15
|
-
dart: '.dart',
|
|
16
|
-
diff: '.diff',
|
|
17
|
-
dockerfile: '.dockerfile',
|
|
18
|
-
fsharp: '.fs',
|
|
19
|
-
go: '.go',
|
|
20
|
-
groovy: '.groovy',
|
|
21
|
-
haml: '.haml',
|
|
22
|
-
handlebars: '.handlebars',
|
|
23
|
-
hlsl: '.hlsl',
|
|
24
|
-
html: '.html',
|
|
25
|
-
ini: '.ini',
|
|
26
|
-
jade: '.jade',
|
|
27
|
-
java: '.java',
|
|
28
|
-
javascript: '.js',
|
|
29
|
-
javascriptreact: '.jsx',
|
|
30
|
-
json: '.json',
|
|
31
|
-
julia: '.jl',
|
|
32
|
-
latex: '.tex',
|
|
33
|
-
less: '.less',
|
|
34
|
-
lua: '.lua',
|
|
35
|
-
makefile: '.make',
|
|
36
|
-
markdown: '.md',
|
|
37
|
-
'objective-c': '.m',
|
|
38
|
-
'objective-cpp': '.mm',
|
|
39
|
-
perl: '.pl',
|
|
40
|
-
perl6: '.6pl',
|
|
41
|
-
php: '.php',
|
|
42
|
-
plaintext: '.txt',
|
|
43
|
-
powershell: '.ps1',
|
|
44
|
-
pug: '.pug',
|
|
45
|
-
python: '.py',
|
|
46
|
-
r: '.r',
|
|
47
|
-
razor: '.cshtml',
|
|
48
|
-
ruby: '.rb',
|
|
49
|
-
rust: '.rs',
|
|
50
|
-
sass: '.sass',
|
|
51
|
-
scss: '.scss',
|
|
52
|
-
shaderlab: '.shader',
|
|
53
|
-
shellscript: '.sh',
|
|
54
|
-
slim: '.slim',
|
|
55
|
-
sql: '.sql',
|
|
56
|
-
stylus: '.styl',
|
|
57
|
-
swift: '.swift',
|
|
58
|
-
tex: '.tex',
|
|
59
|
-
typescript: '.ts',
|
|
60
|
-
typescriptreact: '.tsx',
|
|
61
|
-
vb: '.vb',
|
|
62
|
-
vue: '.vue',
|
|
63
|
-
xml: '.xml',
|
|
64
|
-
xsl: '.xsl',
|
|
65
|
-
yaml: '.yaml',
|
|
66
|
-
};
|
|
67
|
-
//# sourceMappingURL=languages.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../../../src/browser/contrib/inline-completions/prompt/languages.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAE3B;IACF,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,MAAM;IACX,MAAM,EAAE,MAAM;IACd,CAAC,EAAE,IAAI;IACP,OAAO,EAAE,MAAM;IACf,YAAY,EAAE,SAAS;IACvB,GAAG,EAAE,MAAM;IACX,MAAM,EAAE,KAAK;IACb,GAAG,EAAE,MAAM;IACX,UAAU,EAAE,KAAK;IACjB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,aAAa;IACzB,MAAM,EAAE,KAAK;IACb,EAAE,EAAE,KAAK;IACT,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,aAAa;IACzB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,MAAM;IACvB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,MAAM;IACX,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,KAAK;IACtB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,MAAM;IACX,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,GAAG,EAAE,MAAM;IACX,MAAM,EAAE,KAAK;IACb,CAAC,EAAE,IAAI;IACP,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,MAAM;IACX,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,MAAM;IACX,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,MAAM;IACvB,EAAE,EAAE,KAAK;IACT,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,OAAO;CACd,CAAC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
export const LANGUAGE_TO_SUFFIX: {
|
|
2
|
-
[key: string]: string;
|
|
3
|
-
} = {
|
|
4
|
-
abap: '.abap',
|
|
5
|
-
bat: '.bat',
|
|
6
|
-
bibtex: '.bib',
|
|
7
|
-
c: '.c',
|
|
8
|
-
clojure: '.clj',
|
|
9
|
-
coffeescript: '.coffee',
|
|
10
|
-
cpp: '.cpp',
|
|
11
|
-
csharp: '.cs',
|
|
12
|
-
css: '.css',
|
|
13
|
-
'cuda-cpp': '.cu',
|
|
14
|
-
dart: '.dart',
|
|
15
|
-
diff: '.diff',
|
|
16
|
-
dockerfile: '.dockerfile',
|
|
17
|
-
fsharp: '.fs',
|
|
18
|
-
go: '.go',
|
|
19
|
-
groovy: '.groovy',
|
|
20
|
-
haml: '.haml',
|
|
21
|
-
handlebars: '.handlebars',
|
|
22
|
-
hlsl: '.hlsl',
|
|
23
|
-
html: '.html',
|
|
24
|
-
ini: '.ini',
|
|
25
|
-
jade: '.jade',
|
|
26
|
-
java: '.java',
|
|
27
|
-
javascript: '.js',
|
|
28
|
-
javascriptreact: '.jsx',
|
|
29
|
-
json: '.json',
|
|
30
|
-
julia: '.jl',
|
|
31
|
-
latex: '.tex',
|
|
32
|
-
less: '.less',
|
|
33
|
-
lua: '.lua',
|
|
34
|
-
makefile: '.make',
|
|
35
|
-
markdown: '.md',
|
|
36
|
-
'objective-c': '.m',
|
|
37
|
-
'objective-cpp': '.mm',
|
|
38
|
-
perl: '.pl',
|
|
39
|
-
perl6: '.6pl',
|
|
40
|
-
php: '.php',
|
|
41
|
-
plaintext: '.txt',
|
|
42
|
-
powershell: '.ps1',
|
|
43
|
-
pug: '.pug',
|
|
44
|
-
python: '.py',
|
|
45
|
-
r: '.r',
|
|
46
|
-
razor: '.cshtml',
|
|
47
|
-
ruby: '.rb',
|
|
48
|
-
rust: '.rs',
|
|
49
|
-
sass: '.sass',
|
|
50
|
-
scss: '.scss',
|
|
51
|
-
shaderlab: '.shader',
|
|
52
|
-
shellscript: '.sh',
|
|
53
|
-
slim: '.slim',
|
|
54
|
-
sql: '.sql',
|
|
55
|
-
stylus: '.styl',
|
|
56
|
-
swift: '.swift',
|
|
57
|
-
tex: '.tex',
|
|
58
|
-
typescript: '.ts',
|
|
59
|
-
typescriptreact: '.tsx',
|
|
60
|
-
vb: '.vb',
|
|
61
|
-
vue: '.vue',
|
|
62
|
-
xml: '.xml',
|
|
63
|
-
xsl: '.xsl',
|
|
64
|
-
yaml: '.yaml',
|
|
65
|
-
};
|