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,12 @@
1
+ The file `JavaScript.tmLanguage.json` is derived from [TypeScriptReact.tmLanguage](https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage).
2
+
3
+ To update to the latest version:
4
+
5
+ - `cd extensions/typescript-basics` and run `npm run update-grammars`
6
+ - don't forget to run the integration tests at `./scripts/test-integration.sh`
7
+
8
+ The script does the following changes:
9
+
10
+ - fileTypes .tsx -> .js & .jsx
11
+ - scopeName scope.tsx -> scope.js
12
+ - update all rule names .tsx -> .js
@@ -0,0 +1,237 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>fileTypes</key>
6
+ <array/>
7
+ <key>hideFromUser</key>
8
+ <true/>
9
+ <key>name</key>
10
+ <string>Regular Expressions (JavaScript)</string>
11
+ <key>patterns</key>
12
+ <array>
13
+ <dict>
14
+ <key>include</key>
15
+ <string>#regexp</string>
16
+ </dict>
17
+ </array>
18
+ <key>repository</key>
19
+ <dict>
20
+ <key>regex-character-class</key>
21
+ <dict>
22
+ <key>patterns</key>
23
+ <array>
24
+ <dict>
25
+ <key>match</key>
26
+ <string>\\[wWsSdD]|\.</string>
27
+ <key>name</key>
28
+ <string>constant.character.character-class.regexp</string>
29
+ </dict>
30
+ <dict>
31
+ <key>match</key>
32
+ <string>\\([0-7]{3}|x\h\h|u\h\h\h\h)</string>
33
+ <key>name</key>
34
+ <string>constant.character.numeric.regexp</string>
35
+ </dict>
36
+ <dict>
37
+ <key>match</key>
38
+ <string>\\c[A-Z]</string>
39
+ <key>name</key>
40
+ <string>constant.character.control.regexp</string>
41
+ </dict>
42
+ <dict>
43
+ <key>match</key>
44
+ <string>\\.</string>
45
+ <key>name</key>
46
+ <string>constant.character.escape.backslash.regexp</string>
47
+ </dict>
48
+ </array>
49
+ </dict>
50
+ <key>regexp</key>
51
+ <dict>
52
+ <key>patterns</key>
53
+ <array>
54
+ <dict>
55
+ <key>match</key>
56
+ <string>\\[bB]|\^|\$</string>
57
+ <key>name</key>
58
+ <string>keyword.control.anchor.regexp</string>
59
+ </dict>
60
+ <dict>
61
+ <key>match</key>
62
+ <string>\\[1-9]\d*</string>
63
+ <key>name</key>
64
+ <string>keyword.other.back-reference.regexp</string>
65
+ </dict>
66
+ <dict>
67
+ <key>match</key>
68
+ <string>[?+*]|\{(\d+,\d+|\d+,|,\d+|\d+)\}\??</string>
69
+ <key>name</key>
70
+ <string>keyword.operator.quantifier.regexp</string>
71
+ </dict>
72
+ <dict>
73
+ <key>match</key>
74
+ <string>\|</string>
75
+ <key>name</key>
76
+ <string>keyword.operator.or.regexp</string>
77
+ </dict>
78
+ <dict>
79
+ <key>begin</key>
80
+ <string>(\()((\?=)|(\?!))</string>
81
+ <key>beginCaptures</key>
82
+ <dict>
83
+ <key>1</key>
84
+ <dict>
85
+ <key>name</key>
86
+ <string>punctuation.definition.group.regexp</string>
87
+ </dict>
88
+ <key>3</key>
89
+ <dict>
90
+ <key>name</key>
91
+ <string>meta.assertion.look-ahead.regexp</string>
92
+ </dict>
93
+ <key>4</key>
94
+ <dict>
95
+ <key>name</key>
96
+ <string>meta.assertion.negative-look-ahead.regexp</string>
97
+ </dict>
98
+ </dict>
99
+ <key>end</key>
100
+ <string>(\))</string>
101
+ <key>endCaptures</key>
102
+ <dict>
103
+ <key>1</key>
104
+ <dict>
105
+ <key>name</key>
106
+ <string>punctuation.definition.group.regexp</string>
107
+ </dict>
108
+ </dict>
109
+ <key>name</key>
110
+ <string>meta.group.assertion.regexp</string>
111
+ <key>patterns</key>
112
+ <array>
113
+ <dict>
114
+ <key>include</key>
115
+ <string>#regexp</string>
116
+ </dict>
117
+ </array>
118
+ </dict>
119
+ <dict>
120
+ <key>begin</key>
121
+ <string>\((\?:)?</string>
122
+ <key>beginCaptures</key>
123
+ <dict>
124
+ <key>0</key>
125
+ <dict>
126
+ <key>name</key>
127
+ <string>punctuation.definition.group.regexp</string>
128
+ </dict>
129
+ </dict>
130
+ <key>end</key>
131
+ <string>\)</string>
132
+ <key>endCaptures</key>
133
+ <dict>
134
+ <key>0</key>
135
+ <dict>
136
+ <key>name</key>
137
+ <string>punctuation.definition.group.regexp</string>
138
+ </dict>
139
+ </dict>
140
+ <key>name</key>
141
+ <string>meta.group.regexp</string>
142
+ <key>patterns</key>
143
+ <array>
144
+ <dict>
145
+ <key>include</key>
146
+ <string>#regexp</string>
147
+ </dict>
148
+ </array>
149
+ </dict>
150
+ <dict>
151
+ <key>begin</key>
152
+ <string>(\[)(\^)?</string>
153
+ <key>beginCaptures</key>
154
+ <dict>
155
+ <key>1</key>
156
+ <dict>
157
+ <key>name</key>
158
+ <string>punctuation.definition.character-class.regexp</string>
159
+ </dict>
160
+ <key>2</key>
161
+ <dict>
162
+ <key>name</key>
163
+ <string>keyword.operator.negation.regexp</string>
164
+ </dict>
165
+ </dict>
166
+ <key>end</key>
167
+ <string>(\])</string>
168
+ <key>endCaptures</key>
169
+ <dict>
170
+ <key>1</key>
171
+ <dict>
172
+ <key>name</key>
173
+ <string>punctuation.definition.character-class.regexp</string>
174
+ </dict>
175
+ </dict>
176
+ <key>name</key>
177
+ <string>constant.other.character-class.set.regexp</string>
178
+ <key>patterns</key>
179
+ <array>
180
+ <dict>
181
+ <key>captures</key>
182
+ <dict>
183
+ <key>1</key>
184
+ <dict>
185
+ <key>name</key>
186
+ <string>constant.character.numeric.regexp</string>
187
+ </dict>
188
+ <key>2</key>
189
+ <dict>
190
+ <key>name</key>
191
+ <string>constant.character.control.regexp</string>
192
+ </dict>
193
+ <key>3</key>
194
+ <dict>
195
+ <key>name</key>
196
+ <string>constant.character.escape.backslash.regexp</string>
197
+ </dict>
198
+ <key>4</key>
199
+ <dict>
200
+ <key>name</key>
201
+ <string>constant.character.numeric.regexp</string>
202
+ </dict>
203
+ <key>5</key>
204
+ <dict>
205
+ <key>name</key>
206
+ <string>constant.character.control.regexp</string>
207
+ </dict>
208
+ <key>6</key>
209
+ <dict>
210
+ <key>name</key>
211
+ <string>constant.character.escape.backslash.regexp</string>
212
+ </dict>
213
+ </dict>
214
+ <key>match</key>
215
+ <string>(?:.|(\\(?:[0-7]{3}|x\h\h|u\h\h\h\h))|(\\c[A-Z])|(\\.))\-(?:[^\]\\]|(\\(?:[0-7]{3}|x\h\h|u\h\h\h\h))|(\\c[A-Z])|(\\.))</string>
216
+ <key>name</key>
217
+ <string>constant.other.character-class.range.regexp</string>
218
+ </dict>
219
+ <dict>
220
+ <key>include</key>
221
+ <string>#regex-character-class</string>
222
+ </dict>
223
+ </array>
224
+ </dict>
225
+ <dict>
226
+ <key>include</key>
227
+ <string>#regex-character-class</string>
228
+ </dict>
229
+ </array>
230
+ </dict>
231
+ </dict>
232
+ <key>scopeName</key>
233
+ <string>source.js.regexp</string>
234
+ <key>uuid</key>
235
+ <string>AC8679DE-3AC7-4056-84F9-69A7ADC29DDD</string>
236
+ </dict>
237
+ </plist>
@@ -0,0 +1,290 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
3
+ "name": "Round",
4
+ "scopeName": "source.round",
5
+ "patterns": [
6
+ {
7
+ "include": "#bind-attribute"
8
+ },
9
+ {
10
+ "include": "#control-flow"
11
+ },
12
+ {
13
+ "include": "#core-components"
14
+ },
15
+ {
16
+ "include": "source.js.jsx"
17
+ }
18
+ ],
19
+ "repository": {
20
+ "bind-attribute": {
21
+ "name": "entity.other.attribute-name.round.bind",
22
+ "match": "\\bbind:[A-Za-z_$][\\w$]*\\b"
23
+ },
24
+ "core-components": {
25
+ "name": "entity.name.type.round",
26
+ "match": "\\b(Route|Suspense|Markdown|ErrorBoundary|Fragment|Page|Link|NotFound)\\b"
27
+ },
28
+ "control-flow": {
29
+ "patterns": [
30
+ {
31
+ "include": "#if-block"
32
+ },
33
+ {
34
+ "include": "#for-block"
35
+ }
36
+ ]
37
+ },
38
+ "if-block": {
39
+ "name": "meta.round.controlflow.if",
40
+ "begin": "(\\{)\\s*(if)",
41
+ "beginCaptures": {
42
+ "1": {
43
+ "name": "punctuation.section.embedded.begin.round"
44
+ },
45
+ "2": {
46
+ "name": "keyword.control.round"
47
+ }
48
+ },
49
+ "end": "(\\})\\s*(\\})",
50
+ "endCaptures": {
51
+ "1": {
52
+ "name": "punctuation.section.block.end.round"
53
+ },
54
+ "2": {
55
+ "name": "punctuation.section.embedded.end.round"
56
+ }
57
+ },
58
+ "patterns": [
59
+ {
60
+ "include": "#condition-header"
61
+ },
62
+ {
63
+ "include": "#elseif-branch"
64
+ },
65
+ {
66
+ "include": "#else-branch"
67
+ },
68
+ {
69
+ "include": "#control-flow"
70
+ },
71
+ {
72
+ "include": "#round-jsx"
73
+ },
74
+ {
75
+ "include": "source.js.jsx"
76
+ }
77
+ ]
78
+ },
79
+ "for-block": {
80
+ "name": "meta.round.controlflow.for",
81
+ "begin": "(\\{)\\s*(for)",
82
+ "beginCaptures": {
83
+ "1": {
84
+ "name": "punctuation.section.embedded.begin.round"
85
+ },
86
+ "2": {
87
+ "name": "keyword.control.round"
88
+ }
89
+ },
90
+ "end": "(\\})\\s*(\\})",
91
+ "endCaptures": {
92
+ "1": {
93
+ "name": "punctuation.section.block.end.round"
94
+ },
95
+ "2": {
96
+ "name": "punctuation.section.embedded.end.round"
97
+ }
98
+ },
99
+ "patterns": [
100
+ {
101
+ "begin": "(\\()",
102
+ "beginCaptures": {
103
+ "1": {
104
+ "name": "punctuation.definition.parameters.begin.round"
105
+ }
106
+ },
107
+ "end": "(\\))\\s*(\\{)",
108
+ "endCaptures": {
109
+ "1": {
110
+ "name": "punctuation.definition.parameters.end.round"
111
+ },
112
+ "2": {
113
+ "name": "punctuation.section.block.begin.round"
114
+ }
115
+ },
116
+ "patterns": [
117
+ {
118
+ "match": "\\b(in|of)\\b",
119
+ "name": "keyword.control.round"
120
+ },
121
+ {
122
+ "include": "source.js.jsx"
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "include": "#control-flow"
128
+ },
129
+ {
130
+ "include": "#round-jsx"
131
+ },
132
+ {
133
+ "include": "source.js.jsx"
134
+ }
135
+ ]
136
+ },
137
+ "condition-header": {
138
+ "begin": "(\\()",
139
+ "beginCaptures": {
140
+ "1": {
141
+ "name": "punctuation.definition.parameters.begin.round"
142
+ }
143
+ },
144
+ "end": "(\\))\\s*(\\{)",
145
+ "endCaptures": {
146
+ "1": {
147
+ "name": "punctuation.definition.parameters.end.round"
148
+ },
149
+ "2": {
150
+ "name": "punctuation.section.block.begin.round"
151
+ }
152
+ },
153
+ "patterns": [
154
+ {
155
+ "include": "source.js.jsx"
156
+ }
157
+ ]
158
+ },
159
+ "elseif-branch": {
160
+ "name": "meta.round.controlflow.elseif",
161
+ "begin": "(\\})\\s*(else\\s+if)",
162
+ "beginCaptures": {
163
+ "1": {
164
+ "name": "punctuation.section.block.end.round"
165
+ },
166
+ "2": {
167
+ "name": "keyword.control.round"
168
+ }
169
+ },
170
+ "end": "(\\{)",
171
+ "endCaptures": {
172
+ "1": {
173
+ "name": "punctuation.section.block.begin.round"
174
+ }
175
+ },
176
+ "patterns": [
177
+ {
178
+ "begin": "(\\()",
179
+ "beginCaptures": {
180
+ "1": {
181
+ "name": "punctuation.definition.parameters.begin.round"
182
+ }
183
+ },
184
+ "end": "(\\))",
185
+ "endCaptures": {
186
+ "1": {
187
+ "name": "punctuation.definition.parameters.end.round"
188
+ }
189
+ },
190
+ "patterns": [
191
+ {
192
+ "include": "source.js.jsx"
193
+ }
194
+ ]
195
+ }
196
+ ]
197
+ },
198
+ "else-branch": {
199
+ "name": "meta.round.controlflow.else",
200
+ "match": "(\\})\\s*(else)\\s*(\\{)",
201
+ "captures": {
202
+ "1": {
203
+ "name": "punctuation.section.block.end.round"
204
+ },
205
+ "2": {
206
+ "name": "keyword.control.round"
207
+ },
208
+ "3": {
209
+ "name": "punctuation.section.block.begin.round"
210
+ }
211
+ }
212
+ },
213
+ "round-jsx": {
214
+ "patterns": [
215
+ {
216
+ "name": "meta.tag.jsx",
217
+ "begin": "(<)(/)?([A-Za-z_$][\\w$\\.-]*)",
218
+ "beginCaptures": {
219
+ "1": {
220
+ "name": "punctuation.definition.tag.begin.jsx"
221
+ },
222
+ "2": {
223
+ "name": "punctuation.definition.tag.begin.jsx"
224
+ },
225
+ "3": {
226
+ "name": "entity.name.tag.jsx"
227
+ }
228
+ },
229
+ "end": "(/?>)",
230
+ "endCaptures": {
231
+ "1": {
232
+ "name": "punctuation.definition.tag.end.jsx"
233
+ }
234
+ },
235
+ "patterns": [
236
+ {
237
+ "include": "#bind-attribute"
238
+ },
239
+ {
240
+ "name": "entity.other.attribute-name.jsx",
241
+ "match": "\\b[A-Za-z_$][\\w$:-]*\\b(?=\\s*=)"
242
+ },
243
+ {
244
+ "name": "keyword.operator.assignment.jsx",
245
+ "match": "="
246
+ },
247
+ {
248
+ "name": "string.quoted.double.jsx",
249
+ "begin": "\"",
250
+ "end": "\""
251
+ },
252
+ {
253
+ "name": "string.quoted.single.jsx",
254
+ "begin": "'",
255
+ "end": "'"
256
+ },
257
+ {
258
+ "name": "meta.embedded.expression.js",
259
+ "begin": "\\{",
260
+ "end": "\\}",
261
+ "patterns": [
262
+ {
263
+ "include": "#control-flow"
264
+ },
265
+ {
266
+ "include": "source.js.jsx"
267
+ }
268
+ ]
269
+ }
270
+ ]
271
+ },
272
+ {
273
+ "name": "meta.tag.jsx",
274
+ "match": "(</)([A-Za-z_$][\\w$\\.-]*)(\\s*)(>)",
275
+ "captures": {
276
+ "1": {
277
+ "name": "punctuation.definition.tag.begin.jsx"
278
+ },
279
+ "2": {
280
+ "name": "entity.name.tag.jsx"
281
+ },
282
+ "4": {
283
+ "name": "punctuation.definition.tag.end.jsx"
284
+ }
285
+ }
286
+ }
287
+ ]
288
+ }
289
+ }
290
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
3
+ "name": "Round Inject",
4
+ "scopeName": "source.round.injection",
5
+ "injectionSelector": "L:source.js.jsx",
6
+ "patterns": [
7
+ {
8
+ "name": "keyword.control.round",
9
+ "match": "\\b(if|else|for|in)\\b"
10
+ },
11
+ {
12
+ "name": "entity.other.attribute-name.round",
13
+ "match": "\\bbind:[A-Za-z_$][\\w$]*\\b"
14
+ },
15
+ {
16
+ "name": "entity.name.type.round",
17
+ "match": "\\b(Route|Suspense|Markdown|ErrorBoundary|Fragment|Page|Link|NotFound)\\b"
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,152 @@
1
+ {
2
+ "comments": {
3
+ "blockComment": [
4
+ "{/*",
5
+ "*/}"
6
+ ]
7
+ },
8
+ "brackets": [
9
+ [
10
+ "{",
11
+ "}"
12
+ ],
13
+ [
14
+ "[",
15
+ "]"
16
+ ],
17
+ [
18
+ "(",
19
+ ")"
20
+ ],
21
+ [
22
+ "<",
23
+ ">"
24
+ ]
25
+ ],
26
+ "colorizedBracketPairs": [
27
+ [
28
+ "{",
29
+ "}"
30
+ ],
31
+ [
32
+ "[",
33
+ "]"
34
+ ],
35
+ [
36
+ "(",
37
+ ")"
38
+ ]
39
+ ],
40
+ "autoClosingPairs": [
41
+ {
42
+ "open": "{",
43
+ "close": "}"
44
+ },
45
+ {
46
+ "open": "[",
47
+ "close": "]"
48
+ },
49
+ {
50
+ "open": "(",
51
+ "close": ")"
52
+ },
53
+ {
54
+ "open": "'",
55
+ "close": "'",
56
+ "notIn": [
57
+ "string",
58
+ "comment"
59
+ ]
60
+ },
61
+ {
62
+ "open": "\"",
63
+ "close": "\"",
64
+ "notIn": [
65
+ "string"
66
+ ]
67
+ },
68
+ {
69
+ "open": "/**",
70
+ "close": " */",
71
+ "notIn": [
72
+ "string"
73
+ ]
74
+ }
75
+ ],
76
+ "surroundingPairs": [
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
+ "wordPattern": {
103
+ "pattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:'\"\\,\\.\\<\\>\\/\\s]+)"
104
+ },
105
+ "onEnterRules": [
106
+ {
107
+ "beforeText": {
108
+ "pattern": "<(?!(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr))([_:\\w][_:\\w\\-.\\d]*)([^/>]*(?!/)>)[^<]*$",
109
+ "flags": "i"
110
+ },
111
+ "afterText": {
112
+ "pattern": "^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>$",
113
+ "flags": "i"
114
+ },
115
+ "action": {
116
+ "indent": "indentOutdent"
117
+ }
118
+ },
119
+ {
120
+ "beforeText": {
121
+ "pattern": "<(?!(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr))([_:\\w][_:\\w\\-.\\d]*)([^/>]*(?!/)>)[^<]*$",
122
+ "flags": "i"
123
+ },
124
+ "action": {
125
+ "indent": "indent"
126
+ }
127
+ },
128
+ {
129
+ // `beforeText` only applies to tokens of a given language. Since we are dealing with jsx-tags,
130
+ // make sure we apply to the closing `>` of a tag so that mixed language spans
131
+ // such as `<div onclick={1}>` are handled properly.
132
+ "beforeText": {
133
+ "pattern": "^>$"
134
+ },
135
+ "afterText": {
136
+ "pattern": "^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>$",
137
+ "flags": "i"
138
+ },
139
+ "action": {
140
+ "indent": "indentOutdent"
141
+ }
142
+ },
143
+ {
144
+ "beforeText": {
145
+ "pattern": "^>$"
146
+ },
147
+ "action": {
148
+ "indent": "indent"
149
+ }
150
+ }
151
+ ],
152
+ }