round-core 0.0.5 → 0.0.7

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 (43) hide show
  1. package/README.md +2 -2
  2. package/dist/cli.js +49 -0
  3. package/dist/index.d.ts +341 -0
  4. package/dist/vite-plugin.js +0 -31
  5. package/extension/.vscodeignore +5 -0
  6. package/extension/LICENSE +21 -0
  7. package/extension/cgmanifest.json +45 -0
  8. package/extension/extension.js +163 -0
  9. package/extension/images/round-config-dark.svg +10 -0
  10. package/extension/images/round-config-light.svg +10 -0
  11. package/extension/images/round-dark.svg +10 -0
  12. package/extension/images/round-light.svg +10 -0
  13. package/extension/javascript-language-configuration.json +241 -0
  14. package/extension/package-lock.json +97 -0
  15. package/extension/package.json +119 -0
  16. package/extension/package.nls.json +4 -0
  17. package/extension/round-0.1.0.vsix +0 -0
  18. package/extension/round-lsp/package-lock.json +185 -0
  19. package/extension/round-lsp/package.json +21 -0
  20. package/extension/round-lsp/src/round-transformer-lsp.js +248 -0
  21. package/extension/round-lsp/src/server.js +396 -0
  22. package/extension/snippets/javascript.code-snippets +266 -0
  23. package/extension/snippets/round.code-snippets +109 -0
  24. package/extension/syntaxes/JavaScript.tmLanguage.json +6001 -0
  25. package/extension/syntaxes/JavaScriptReact.tmLanguage.json +6066 -0
  26. package/extension/syntaxes/Readme.md +12 -0
  27. package/extension/syntaxes/Regular Expressions (JavaScript).tmLanguage +237 -0
  28. package/extension/syntaxes/Round.tmLanguage.json +290 -0
  29. package/extension/syntaxes/RoundInject.tmLanguage.json +20 -0
  30. package/extension/tags-language-configuration.json +152 -0
  31. package/extension/temp_astro/package-lock.json +912 -0
  32. package/extension/temp_astro/package.json +16 -0
  33. package/extension/types/round-core.d.ts +326 -0
  34. package/package.json +2 -1
  35. package/src/cli.js +53 -0
  36. package/src/compiler/vite-plugin.js +0 -35
  37. package/src/index.d.ts +341 -0
  38. package/src/runtime/context.js +12 -0
  39. package/src/runtime/dom.js +10 -0
  40. package/src/runtime/router.js +28 -0
  41. package/src/runtime/signals.js +38 -0
  42. package/src/runtime/store.js +7 -0
  43. package/vite.config.build.js +12 -0
@@ -0,0 +1,163 @@
1
+ const vscode = require('vscode');
2
+ const path = require('path');
3
+ const { LanguageClient, TransportKind } = require('vscode-languageclient/node');
4
+
5
+ let client;
6
+
7
+ function activate(context) {
8
+ const outputChannel = vscode.window.createOutputChannel('Round');
9
+ outputChannel.appendLine('Round Extension Activated (Astro-Inspired LSP Enabled)');
10
+ context.subscriptions.push(outputChannel);
11
+
12
+ // --- LSP Setup ---
13
+ const serverModule = context.asAbsolutePath(path.join('round-lsp', 'src', 'server.js'));
14
+ const debugOptions = { execArgv: ['--nolazy', '--inspect=6009'] };
15
+
16
+ const serverOptions = {
17
+ run: { module: serverModule, transport: TransportKind.ipc },
18
+ debug: {
19
+ module: serverModule,
20
+ transport: TransportKind.ipc,
21
+ options: debugOptions
22
+ }
23
+ };
24
+
25
+ const clientOptions = {
26
+ documentSelector: [{ scheme: 'file', language: 'round' }],
27
+ synchronize: {
28
+ fileEvents: vscode.workspace.createFileSystemWatcher('**/*.round')
29
+ }
30
+ };
31
+
32
+ client = new LanguageClient(
33
+ 'roundLSP',
34
+ 'Round Language Server',
35
+ serverOptions,
36
+ clientOptions
37
+ );
38
+
39
+ client.start();
40
+
41
+ // --- Smart Snippets ---
42
+ const provider = vscode.languages.registerCompletionItemProvider('round', {
43
+ provideCompletionItems(document, position) {
44
+ const items = [];
45
+
46
+ const snippets = [
47
+ {
48
+ label: 'round:signal',
49
+ detail: 'Create a signal()',
50
+ body: "const ${1:name} = signal(${2:initial});$0",
51
+ member: "signal"
52
+ },
53
+ {
54
+ label: 'round:bindable',
55
+ detail: 'Create a bindable()',
56
+ body: "const ${1:name} = bindable(${2:initial});$0",
57
+ member: "bindable"
58
+ },
59
+ {
60
+ label: 'round:route',
61
+ detail: 'Insert a <Route> block',
62
+ body: "<Route route=\"${1:/}\" title=\"${2:Title}\">\n\t$0\n</Route>",
63
+ member: "Route"
64
+ },
65
+ {
66
+ label: 'round:suspense',
67
+ detail: 'Insert a <Suspense> block',
68
+ body: "<Suspense fallback={<div>${1:Loading...}</div>}>\n\t$0\n</Suspense>",
69
+ member: "Suspense"
70
+ },
71
+ {
72
+ label: 'round:markdown',
73
+ detail: 'Insert a <Markdown> component',
74
+ body: "<Markdown src=\"${1:./README.md}\" />$0",
75
+ member: "Markdown"
76
+ },
77
+ {
78
+ label: 'round:component',
79
+ detail: 'Create a Round component',
80
+ body: "export function ${1:ComponentName}() {\n\treturn (\n\t\t<div>\n\t\t\t$0\n\t\t</div>\n\t);\n}",
81
+ },
82
+ {
83
+ label: 'round:if',
84
+ detail: 'Round JSX superset if block',
85
+ body: "{if(${1:condition}){\n\t$0\n}}",
86
+ },
87
+ {
88
+ label: 'round:ifelse',
89
+ detail: 'Round JSX superset if/else block',
90
+ body: "{if(${1:condition}){\n\t$0\n} else {\n\t\n}}",
91
+ },
92
+ {
93
+ label: 'round:for',
94
+ detail: 'Round JSX superset for-in block',
95
+ body: "{for(${1:item} in ${2:list}){\n\t$0\n}}",
96
+ }
97
+ ];
98
+
99
+ for (const s of snippets) {
100
+ const item = new vscode.CompletionItem(s.label, vscode.CompletionItemKind.Snippet);
101
+ item.insertText = new vscode.SnippetString(s.body);
102
+ item.detail = s.detail;
103
+
104
+ if (s.member) {
105
+ const text = document.getText();
106
+ const importRegex = /import\s*{\s*([^}]*)\s*}\s*from\s*['"]round-core['"]/g;
107
+ let match;
108
+ let found = false;
109
+
110
+ while ((match = importRegex.exec(text)) !== null) {
111
+ const members = match[1].split(',').map(m => m.trim());
112
+ if (members.includes(s.member)) {
113
+ found = true;
114
+ break;
115
+ } else {
116
+ const startPos = document.positionAt(match.index);
117
+ const endPos = document.positionAt(match.index + match[0].length);
118
+ const range = new vscode.Range(startPos, endPos);
119
+
120
+ const newMembers = [...members.filter(m => m.length > 0), s.member].join(', ');
121
+ const newImportLine = `import { ${newMembers} } from 'round-core';`;
122
+ item.additionalTextEdits = [vscode.TextEdit.replace(range, newImportLine)];
123
+ found = true;
124
+ break;
125
+ }
126
+ }
127
+
128
+ if (!found) {
129
+ let line = 0;
130
+ const lines = text.split('\n');
131
+ for (let i = 0; i < lines.length; i++) {
132
+ if (lines[i].trim().startsWith('import ')) {
133
+ line = i + 1;
134
+ } else if (line > 0 && lines[i].trim().length > 0) {
135
+ break;
136
+ }
137
+ }
138
+ item.additionalTextEdits = [
139
+ vscode.TextEdit.insert(new vscode.Position(line, 0), `import { ${s.member} } from 'round-core';\n`)
140
+ ];
141
+ }
142
+ }
143
+ items.push(item);
144
+ }
145
+
146
+ return items;
147
+ }
148
+ });
149
+
150
+ context.subscriptions.push(provider);
151
+ }
152
+
153
+ function deactivate() {
154
+ if (!client) {
155
+ return undefined;
156
+ }
157
+ return client.stop();
158
+ }
159
+
160
+ module.exports = {
161
+ activate,
162
+ deactivate
163
+ };
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <defs>
3
+ <linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
4
+ <stop offset="0" stop-color="#7c3aed"/>
5
+ <stop offset="1" stop-color="#22c55e"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect x="1" y="1" width="14" height="14" rx="4" fill="#0b0f16" stroke="url(#g)" stroke-width="1.25"/>
9
+ <path d="M9.15 1.9L5.1 9.0h2.75l-.9 5.1 3.95-7.1H8.2l.95-5.1z" fill="#e5e7eb"/>
10
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <defs>
3
+ <linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
4
+ <stop offset="0" stop-color="#6d28d9"/>
5
+ <stop offset="1" stop-color="#16a34a"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect x="1" y="1" width="14" height="14" rx="4" fill="#ffffff" stroke="url(#g)" stroke-width="1.25"/>
9
+ <path d="M9.15 1.9L5.1 9.0h2.75l-.9 5.1 3.95-7.1H8.2l.95-5.1z" fill="#111827"/>
10
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <defs>
3
+ <linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
4
+ <stop offset="0" stop-color="#7c3aed"/>
5
+ <stop offset="1" stop-color="#22c55e"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect x="1" y="1" width="14" height="14" rx="4" fill="#0b0f16" stroke="url(#g)" stroke-width="1.25"/>
9
+ <path d="M5.2 11.3V4.7h2.65c.9 0 1.62.2 2.16.62.55.41.82 1.02.82 1.82 0 .56-.14 1.02-.43 1.37-.28.35-.68.6-1.18.73l1.6 2.06H9.58L8.15 9.45H6.45v1.85H5.2zm1.25-2.9h1.3c.55 0 .96-.1 1.22-.32.26-.22.4-.55.4-.99 0-.44-.13-.76-.39-.96-.26-.2-.67-.3-1.23-.3H6.45v2.57z" fill="#e5e7eb"/>
10
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <defs>
3
+ <linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
4
+ <stop offset="0" stop-color="#6d28d9"/>
5
+ <stop offset="1" stop-color="#16a34a"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect x="1" y="1" width="14" height="14" rx="4" fill="#ffffff" stroke="url(#g)" stroke-width="1.25"/>
9
+ <path d="M5.2 11.3V4.7h2.65c.9 0 1.62.2 2.16.62.55.41.82 1.02.82 1.82 0 .56-.14 1.02-.43 1.37-.28.35-.68.6-1.18.73l1.6 2.06H9.58L8.15 9.45H6.45v1.85H5.2zm1.25-2.9h1.3c.55 0 .96-.1 1.22-.32.26-.22.4-.55.4-.99 0-.44-.13-.76-.39-.96-.26-.2-.67-.3-1.23-.3H6.45v2.57z" fill="#111827"/>
10
+ </svg>
@@ -0,0 +1,241 @@
1
+ {
2
+ // Note that this file should stay in sync with 'typescript-language-basics/language-configuration.json'
3
+ "comments": {
4
+ "lineComment": "//",
5
+ "blockComment": [
6
+ "/*",
7
+ "*/"
8
+ ]
9
+ },
10
+ "brackets": [
11
+ [
12
+ "${",
13
+ "}"
14
+ ],
15
+ [
16
+ "{",
17
+ "}"
18
+ ],
19
+ [
20
+ "[",
21
+ "]"
22
+ ],
23
+ [
24
+ "(",
25
+ ")"
26
+ ]
27
+ ],
28
+ "autoClosingPairs": [
29
+ {
30
+ "open": "{",
31
+ "close": "}"
32
+ },
33
+ {
34
+ "open": "[",
35
+ "close": "]"
36
+ },
37
+ {
38
+ "open": "(",
39
+ "close": ")"
40
+ },
41
+ {
42
+ "open": "'",
43
+ "close": "'",
44
+ "notIn": [
45
+ "string",
46
+ "comment"
47
+ ]
48
+ },
49
+ {
50
+ "open": "\"",
51
+ "close": "\"",
52
+ "notIn": [
53
+ "string"
54
+ ]
55
+ },
56
+ {
57
+ "open": "`",
58
+ "close": "`",
59
+ "notIn": [
60
+ "string",
61
+ "comment"
62
+ ]
63
+ },
64
+ {
65
+ "open": "/**",
66
+ "close": " */",
67
+ "notIn": [
68
+ "string"
69
+ ]
70
+ }
71
+ ],
72
+ "surroundingPairs": [
73
+ [
74
+ "{",
75
+ "}"
76
+ ],
77
+ [
78
+ "[",
79
+ "]"
80
+ ],
81
+ [
82
+ "(",
83
+ ")"
84
+ ],
85
+ [
86
+ "'",
87
+ "'"
88
+ ],
89
+ [
90
+ "\"",
91
+ "\""
92
+ ],
93
+ [
94
+ "`",
95
+ "`"
96
+ ],
97
+ [
98
+ "<",
99
+ ">"
100
+ ]
101
+ ],
102
+ "autoCloseBefore": ";:.,=}])>` \n\t",
103
+ "folding": {
104
+ "markers": {
105
+ "start": "^\\s*//\\s*#?region\\b",
106
+ "end": "^\\s*//\\s*#?endregion\\b"
107
+ }
108
+ },
109
+ "wordPattern": {
110
+ "pattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\@\\!\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>/\\?\\s]+)",
111
+ },
112
+ "indentationRules": {
113
+ "decreaseIndentPattern": {
114
+ "pattern": "^\\s*[\\}\\]\\)].*$"
115
+ },
116
+ "increaseIndentPattern": {
117
+ "pattern": "^.*(\\{[^}]*|\\([^)]*|\\[[^\\]]*)$"
118
+ },
119
+ // e.g. * ...| or */| or *-----*/|
120
+ "unIndentedLinePattern": {
121
+ "pattern": "^(\\t|[ ])*[ ]\\*[^/]*\\*/\\s*$|^(\\t|[ ])*[ ]\\*/\\s*$|^(\\t|[ ])*[ ]\\*([ ]([^\\*]|\\*(?!/))*)?$"
122
+ },
123
+ "indentNextLinePattern": {
124
+ "pattern": "^((.*=>\\s*)|((.*[^\\w]+|\\s*)((if|while|for)\\s*\\(.*\\)\\s*|else\\s*)))$"
125
+ }
126
+ },
127
+ "onEnterRules": [
128
+ {
129
+ // e.g. /** | */
130
+ "beforeText": {
131
+ "pattern": "^\\s*/\\*\\*(?!/)([^\\*]|\\*(?!/))*$"
132
+ },
133
+ "afterText": {
134
+ "pattern": "^\\s*\\*/$"
135
+ },
136
+ "action": {
137
+ "indent": "indentOutdent",
138
+ "appendText": " * "
139
+ }
140
+ },
141
+ {
142
+ // e.g. /** ...|
143
+ "beforeText": {
144
+ "pattern": "^\\s*/\\*\\*(?!/)([^\\*]|\\*(?!/))*$"
145
+ },
146
+ "action": {
147
+ "indent": "none",
148
+ "appendText": " * "
149
+ }
150
+ },
151
+ {
152
+ // e.g. * ...|
153
+ "beforeText": {
154
+ "pattern": "^(\\t|[ ])*[ ]\\*([ ]([^\\*]|\\*(?!/))*)?$"
155
+ },
156
+ "previousLineText": {
157
+ "pattern": "(?=^(\\s*(/\\*\\*|\\*)).*)(?=(?!(\\s*\\*/)))"
158
+ },
159
+ "action": {
160
+ "indent": "none",
161
+ "appendText": "* "
162
+ }
163
+ },
164
+ {
165
+ // e.g. */|
166
+ "beforeText": {
167
+ "pattern": "^(\\t|[ ])*[ ]\\*/\\s*$"
168
+ },
169
+ "action": {
170
+ "indent": "none",
171
+ "removeText": 1
172
+ },
173
+ },
174
+ {
175
+ // e.g. *-----*/|
176
+ "beforeText": {
177
+ "pattern": "^(\\t|[ ])*[ ]\\*[^/]*\\*/\\s*$"
178
+ },
179
+ "action": {
180
+ "indent": "none",
181
+ "removeText": 1
182
+ },
183
+ },
184
+ {
185
+ "beforeText": {
186
+ "pattern": "^\\s*(\\bcase\\s.+:|\\bdefault:)$"
187
+ },
188
+ "afterText": {
189
+ "pattern": "^(?!\\s*(\\bcase\\b|\\bdefault\\b))"
190
+ },
191
+ "action": {
192
+ "indent": "indent"
193
+ }
194
+ },
195
+ {
196
+ // Decrease indentation after single line if/else if/else, for, or while
197
+ "previousLineText": "^\\s*(((else ?)?if|for|while)\\s*\\(.*\\)\\s*|else\\s*)$",
198
+ // But make sure line doesn't have braces or is not another if statement
199
+ "beforeText": "^\\s+([^{i\\s]|i(?!f\\b))",
200
+ "action": {
201
+ "indent": "outdent"
202
+ }
203
+ },
204
+ // Indent when pressing enter from inside ()
205
+ {
206
+ "beforeText": "^.*\\([^\\)]*$",
207
+ "afterText": "^\\s*\\).*$",
208
+ "action": {
209
+ "indent": "indentOutdent",
210
+ "appendText": "\t",
211
+ }
212
+ },
213
+ // Indent when pressing enter from inside {}
214
+ {
215
+ "beforeText": "^.*\\{[^\\}]*$",
216
+ "afterText": "^\\s*\\}.*$",
217
+ "action": {
218
+ "indent": "indentOutdent",
219
+ "appendText": "\t",
220
+ }
221
+ },
222
+ // Indent when pressing enter from inside []
223
+ {
224
+ "beforeText": "^.*\\[[^\\]]*$",
225
+ "afterText": "^\\s*\\].*$",
226
+ "action": {
227
+ "indent": "indentOutdent",
228
+ "appendText": "\t",
229
+ }
230
+ },
231
+ // Add // when pressing enter from inside line comment
232
+ {
233
+ "beforeText": "(?<!\\\\|\\w:)\/\/\\s*\\S",
234
+ "afterText": "^(?!\\s*$).+",
235
+ "action": {
236
+ "indent": "none",
237
+ "appendText": "// "
238
+ }
239
+ },
240
+ ]
241
+ }
@@ -0,0 +1,97 @@
1
+ {
2
+ "name": "round",
3
+ "version": "0.1.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "round",
9
+ "version": "0.1.0",
10
+ "license": "MIT",
11
+ "dependencies": {
12
+ "vscode-languageclient": "^9.0.1"
13
+ },
14
+ "engines": {
15
+ "vscode": "^1.90.0"
16
+ }
17
+ },
18
+ "node_modules/balanced-match": {
19
+ "version": "1.0.2",
20
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
21
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
22
+ "license": "MIT"
23
+ },
24
+ "node_modules/brace-expansion": {
25
+ "version": "2.0.2",
26
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
27
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
28
+ "license": "MIT",
29
+ "dependencies": {
30
+ "balanced-match": "^1.0.0"
31
+ }
32
+ },
33
+ "node_modules/minimatch": {
34
+ "version": "5.1.6",
35
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
36
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
37
+ "license": "ISC",
38
+ "dependencies": {
39
+ "brace-expansion": "^2.0.1"
40
+ },
41
+ "engines": {
42
+ "node": ">=10"
43
+ }
44
+ },
45
+ "node_modules/semver": {
46
+ "version": "7.7.3",
47
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
48
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
49
+ "license": "ISC",
50
+ "bin": {
51
+ "semver": "bin/semver.js"
52
+ },
53
+ "engines": {
54
+ "node": ">=10"
55
+ }
56
+ },
57
+ "node_modules/vscode-jsonrpc": {
58
+ "version": "8.2.0",
59
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
60
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
61
+ "license": "MIT",
62
+ "engines": {
63
+ "node": ">=14.0.0"
64
+ }
65
+ },
66
+ "node_modules/vscode-languageclient": {
67
+ "version": "9.0.1",
68
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz",
69
+ "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==",
70
+ "license": "MIT",
71
+ "dependencies": {
72
+ "minimatch": "^5.1.0",
73
+ "semver": "^7.3.7",
74
+ "vscode-languageserver-protocol": "3.17.5"
75
+ },
76
+ "engines": {
77
+ "vscode": "^1.82.0"
78
+ }
79
+ },
80
+ "node_modules/vscode-languageserver-protocol": {
81
+ "version": "3.17.5",
82
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
83
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
84
+ "license": "MIT",
85
+ "dependencies": {
86
+ "vscode-jsonrpc": "8.2.0",
87
+ "vscode-languageserver-types": "3.17.5"
88
+ }
89
+ },
90
+ "node_modules/vscode-languageserver-types": {
91
+ "version": "3.17.5",
92
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
93
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
94
+ "license": "MIT"
95
+ }
96
+ }
97
+ }
@@ -0,0 +1,119 @@
1
+ {
2
+ "name": "round",
3
+ "displayName": "Round",
4
+ "description": "Language support for .round (Round framework)",
5
+ "version": "0.1.0",
6
+ "main": "./extension.js",
7
+ "publisher": "round-framework",
8
+ "license": "MIT",
9
+ "engines": {
10
+ "vscode": "^1.90.0"
11
+ },
12
+ "activationEvents": [
13
+ "onLanguage:round",
14
+ "workspaceContains:**/*.round"
15
+ ],
16
+ "categories": [
17
+ "Programming Languages"
18
+ ],
19
+ "contributes": {
20
+ "configurationDefaults": {
21
+ "[round]": {
22
+ "editor.maxTokenizationLineLength": 2500
23
+ }
24
+ },
25
+ "languages": [
26
+ {
27
+ "id": "round",
28
+ "aliases": [
29
+ "Round"
30
+ ],
31
+ "icon": {
32
+ "light": "./images/round-light.svg",
33
+ "dark": "./images/round-dark.svg"
34
+ },
35
+ "extensions": [
36
+ ".round"
37
+ ],
38
+ "configuration": "./javascript-language-configuration.json"
39
+ },
40
+ {
41
+ "id": "jsx-tags",
42
+ "aliases": [],
43
+ "configuration": "./tags-language-configuration.json"
44
+ }
45
+ ],
46
+ "grammars": [
47
+ {
48
+ "language": "round",
49
+ "scopeName": "source.round",
50
+ "path": "./syntaxes/Round.tmLanguage.json",
51
+ "embeddedLanguages": {
52
+ "meta.tag.js": "jsx-tags",
53
+ "meta.tag.without-attributes.js": "jsx-tags",
54
+ "meta.tag.attributes.js.jsx": "round",
55
+ "meta.embedded.expression.js": "round"
56
+ },
57
+ "tokenTypes": {
58
+ "punctuation.definition.template-expression": "other",
59
+ "entity.name.type.instance.jsdoc": "other",
60
+ "entity.name.function.tagged-template": "other",
61
+ "meta.import string.quoted": "other",
62
+ "variable.other.jsdoc": "other"
63
+ }
64
+ },
65
+ {
66
+ "scopeName": "source.js.jsx",
67
+ "path": "./syntaxes/JavaScriptReact.tmLanguage.json"
68
+ },
69
+ {
70
+ "scopeName": "source.js.regexp",
71
+ "path": "./syntaxes/Regular Expressions (JavaScript).tmLanguage"
72
+ }
73
+ ],
74
+ "semanticTokenScopes": [
75
+ {
76
+ "language": "round",
77
+ "scopes": {
78
+ "property": [
79
+ "variable.other.property.jsx"
80
+ ],
81
+ "property.readonly": [
82
+ "variable.other.constant.property.jsx"
83
+ ],
84
+ "variable": [
85
+ "variable.other.readwrite.jsx"
86
+ ],
87
+ "variable.readonly": [
88
+ "variable.other.constant.object.jsx"
89
+ ],
90
+ "function": [
91
+ "entity.name.function.jsx"
92
+ ],
93
+ "namespace": [
94
+ "entity.name.type.module.jsx"
95
+ ],
96
+ "variable.defaultLibrary": [
97
+ "support.variable.js"
98
+ ],
99
+ "function.defaultLibrary": [
100
+ "support.function.js"
101
+ ]
102
+ }
103
+ }
104
+ ],
105
+ "snippets": [
106
+ {
107
+ "language": "round",
108
+ "path": "./snippets/javascript.code-snippets"
109
+ }
110
+ ]
111
+ },
112
+ "repository": {
113
+ "type": "git",
114
+ "url": "https://github.com/ZtaMDev/RoundJS.git"
115
+ },
116
+ "dependencies": {
117
+ "vscode-languageclient": "^9.0.1"
118
+ }
119
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "displayName": "Round Framework",
3
+ "description": "Provides snippets, syntax highlighting, bracket matching and folding in Round files."
4
+ }
Binary file