round-core 0.0.6 → 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 (32) hide show
  1. package/dist/index.d.ts +18 -3
  2. package/extension/.vscodeignore +5 -0
  3. package/extension/LICENSE +21 -0
  4. package/extension/cgmanifest.json +45 -0
  5. package/extension/extension.js +163 -0
  6. package/extension/images/round-config-dark.svg +10 -0
  7. package/extension/images/round-config-light.svg +10 -0
  8. package/extension/images/round-dark.svg +10 -0
  9. package/extension/images/round-light.svg +10 -0
  10. package/extension/javascript-language-configuration.json +241 -0
  11. package/extension/package-lock.json +97 -0
  12. package/extension/package.json +119 -0
  13. package/extension/package.nls.json +4 -0
  14. package/extension/round-0.1.0.vsix +0 -0
  15. package/extension/round-lsp/package-lock.json +185 -0
  16. package/extension/round-lsp/package.json +21 -0
  17. package/extension/round-lsp/src/round-transformer-lsp.js +248 -0
  18. package/extension/round-lsp/src/server.js +396 -0
  19. package/extension/snippets/javascript.code-snippets +266 -0
  20. package/extension/snippets/round.code-snippets +109 -0
  21. package/extension/syntaxes/JavaScript.tmLanguage.json +6001 -0
  22. package/extension/syntaxes/JavaScriptReact.tmLanguage.json +6066 -0
  23. package/extension/syntaxes/Readme.md +12 -0
  24. package/extension/syntaxes/Regular Expressions (JavaScript).tmLanguage +237 -0
  25. package/extension/syntaxes/Round.tmLanguage.json +290 -0
  26. package/extension/syntaxes/RoundInject.tmLanguage.json +20 -0
  27. package/extension/tags-language-configuration.json +152 -0
  28. package/extension/temp_astro/package-lock.json +912 -0
  29. package/extension/temp_astro/package.json +16 -0
  30. package/extension/types/round-core.d.ts +326 -0
  31. package/package.json +1 -1
  32. package/src/index.d.ts +18 -3
package/dist/index.d.ts CHANGED
@@ -50,15 +50,28 @@ export interface RoundSignal<T> {
50
50
  bind?: boolean;
51
51
  }
52
52
 
53
+ export interface Signal {
54
+ <T>(initialValue?: T): RoundSignal<T>;
55
+ object<T extends object>(initialState: T): { [K in keyof T]: RoundSignal<T[K]> };
56
+ }
57
+
53
58
  /**
54
59
  * Creates a reactive signal.
55
60
  */
56
- export function signal<T>(initialValue?: T): RoundSignal<T>;
61
+ export const signal: Signal;
62
+
63
+ /**
64
+ * Creates a bindable signal intended for two-way DOM bindings.
65
+ */
66
+ export interface Bindable {
67
+ <T>(initialValue?: T): RoundSignal<T>;
68
+ object<T extends object>(initialState: T): { [K in keyof T]: RoundSignal<T[K]> };
69
+ }
57
70
 
58
71
  /**
59
72
  * Creates a bindable signal intended for two-way DOM bindings.
60
73
  */
61
- export function bindable<T>(initialValue?: T): RoundSignal<T>;
74
+ export const bindable: Bindable;
62
75
 
63
76
  /**
64
77
  * Run a function without tracking any signals it reads.
@@ -288,7 +301,9 @@ export function bindContext<T>(ctx: Context<T>): () => T;
288
301
  * Mark a component for lazy loading (code-splitting).
289
302
  * Expects a function returning a dynamic import promise.
290
303
  */
291
- export function lazy<T>(fn: () => Promise<{ default: T }>): T;
304
+ export function lazy<T>(fn: () => Promise<{ default: T } | T>): any;
305
+
306
+ declare module "*.round";
292
307
 
293
308
  export interface SuspenseProps {
294
309
  /** Content to show while children (e.g. lazy components) are loading. */
@@ -0,0 +1,5 @@
1
+ test/**
2
+ src/**/*.ts
3
+ syntaxes/Readme.md
4
+ tsconfig.json
5
+ cgmanifest.json
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 ZtaMDev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,45 @@
1
+ {
2
+ "registrations": [
3
+ {
4
+ "component": {
5
+ "type": "git",
6
+ "git": {
7
+ "name": "microsoft/TypeScript-TmLanguage",
8
+ "repositoryUrl": "https://github.com/microsoft/TypeScript-TmLanguage",
9
+ "commitHash": "3133e3d914db9a2bb8812119f9273727a305f16b"
10
+ }
11
+ },
12
+ "license": "MIT",
13
+ "version": "0.0.1",
14
+ "description": "The file syntaxes/JavaScript.tmLanguage.json was derived from TypeScriptReact.tmLanguage in https://github.com/microsoft/TypeScript-TmLanguage."
15
+ },
16
+ {
17
+ "component": {
18
+ "type": "git",
19
+ "git": {
20
+ "name": "textmate/javascript.tmbundle",
21
+ "repositoryUrl": "https://github.com/textmate/javascript.tmbundle",
22
+ "commitHash": "fccf0af0c95430a42e1bf98f0c7a4723a53283e7"
23
+ }
24
+ },
25
+ "licenseDetail": [
26
+ "Copyright (c) textmate-javascript.tmbundle project authors",
27
+ "",
28
+ "If not otherwise specified (see below), files in this repository fall under the following license:",
29
+ "",
30
+ "Permission to copy, use, modify, sell and distribute this",
31
+ "software is granted. This software is provided \"as is\" without",
32
+ "express or implied warranty, and with no claim as to its",
33
+ "suitability for any purpose.",
34
+ "",
35
+ "An exception is made for files in readable text which contain their own license information,",
36
+ "or files where an accompanying file exists (in the same directory) with a \"-license\" suffix added",
37
+ "to the base-name name of the original file, and an extension of txt, html, or similar. For example",
38
+ "\"tidy\" is accompanied by \"tidy-license.txt\"."
39
+ ],
40
+ "license": "TextMate Bundle License",
41
+ "version": "0.0.0"
42
+ }
43
+ ],
44
+ "version": 1
45
+ }
@@ -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
+ }