rapydscript-ng 0.7.24 → 0.8.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.
Files changed (114) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +72 -26
  3. package/bin/package.json +1 -0
  4. package/bin/rapydscript +65 -62
  5. package/editor-plugins/nvim/rapydscript/README.md +184 -0
  6. package/editor-plugins/nvim/rapydscript/bin/rapydscript.so +0 -0
  7. package/editor-plugins/nvim/rapydscript/ftdetect/rapydscript.lua +10 -0
  8. package/editor-plugins/nvim/rapydscript/lua/rapydscript/health.lua +88 -0
  9. package/editor-plugins/nvim/rapydscript/lua/rapydscript/init.lua +279 -0
  10. package/local-agent.md +28 -0
  11. package/package.json +4 -5
  12. package/release/baselib-plain-pretty.js +448 -326
  13. package/release/baselib-plain-ugly.js +3 -3
  14. package/release/compiler.js +2528 -1672
  15. package/release/signatures.json +17 -17
  16. package/src/ast.pyj +73 -25
  17. package/src/baselib-builtins.pyj +2 -2
  18. package/src/baselib-containers.pyj +153 -151
  19. package/src/baselib-internal.pyj +3 -3
  20. package/src/baselib-str.pyj +5 -5
  21. package/src/lib/aes.pyj +1 -1
  22. package/src/lib/encodings.pyj +1 -1
  23. package/src/lib/pythonize.pyj +1 -1
  24. package/src/lib/re.pyj +2 -2
  25. package/src/lib/traceback.pyj +165 -28
  26. package/src/lib/uuid.pyj +1 -1
  27. package/src/output/codegen.pyj +10 -3
  28. package/src/output/functions.pyj +31 -40
  29. package/src/output/literals.pyj +11 -14
  30. package/src/output/loops.pyj +25 -87
  31. package/src/output/modules.pyj +5 -47
  32. package/src/output/statements.pyj +1 -1
  33. package/src/output/stream.pyj +58 -31
  34. package/src/parse.pyj +777 -427
  35. package/src/tokenizer.pyj +16 -4
  36. package/src/utils.pyj +1 -1
  37. package/test/_treeshake_mod.pyj +30 -0
  38. package/test/_treeshake_side_effect.pyj +9 -0
  39. package/test/ast_serialization.pyj +392 -0
  40. package/test/async.pyj +95 -0
  41. package/test/baselib.pyj +1 -2
  42. package/test/embedded_compiler.pyj +57 -0
  43. package/test/fmt.pyj +201 -0
  44. package/test/generic.pyj +7 -3
  45. package/test/imports.pyj +8 -6
  46. package/test/internationalization.pyj +38 -37
  47. package/test/lint.pyj +120 -117
  48. package/test/lsp.pyj +222 -0
  49. package/test/repl.pyj +70 -65
  50. package/test/sourcemaps.pyj +315 -0
  51. package/test/starargs.pyj +46 -39
  52. package/test/traceback.pyj +263 -0
  53. package/test/treeshaking.pyj +181 -0
  54. package/test/web_repl_export.pyj +88 -0
  55. package/tools/ast_serialize.mjs +557 -0
  56. package/tools/cli.mjs +510 -0
  57. package/tools/compile.mjs +201 -0
  58. package/tools/compiler.mjs +127 -0
  59. package/tools/{completer.js → completer.mjs} +6 -6
  60. package/tools/{embedded_compiler.js → embedded_compiler.mjs} +17 -13
  61. package/tools/export.js +109 -56
  62. package/tools/fmt.mjs +735 -0
  63. package/tools/{gettext.js → gettext.mjs} +46 -53
  64. package/tools/{ini.js → ini.mjs} +9 -10
  65. package/tools/{lint.js → lint.mjs} +78 -55
  66. package/tools/lsp.mjs +914 -0
  67. package/tools/lsp_protocol.mjs +259 -0
  68. package/tools/lsp_symbols.mjs +418 -0
  69. package/tools/{msgfmt.js → msgfmt.mjs} +18 -18
  70. package/tools/{repl.js → repl.mjs} +52 -41
  71. package/tools/{self.js → self.mjs} +56 -46
  72. package/tools/sourcemap.mjs +123 -0
  73. package/tools/test.mjs +152 -0
  74. package/tools/treeshake.mjs +400 -0
  75. package/tools/{utils.js → utils.mjs} +26 -23
  76. package/tools/{web_repl.js → web_repl.mjs} +15 -13
  77. package/tools/web_repl_export.mjs +93 -0
  78. package/tree-sitter/README.md +101 -0
  79. package/tree-sitter/grammar.js +992 -0
  80. package/tree-sitter/package.json +43 -0
  81. package/tree-sitter/queries/rapydscript/highlights.scm +232 -0
  82. package/tree-sitter/queries/rapydscript/indents.scm +64 -0
  83. package/tree-sitter/queries/rapydscript/injections.scm +14 -0
  84. package/tree-sitter/queries/rapydscript/locals.scm +108 -0
  85. package/tree-sitter/src/grammar.json +4976 -0
  86. package/tree-sitter/src/node-types.json +2901 -0
  87. package/tree-sitter/src/parser.c +196465 -0
  88. package/tree-sitter/src/scanner.c +294 -0
  89. package/tree-sitter/src/tree_sitter/alloc.h +54 -0
  90. package/tree-sitter/src/tree_sitter/array.h +330 -0
  91. package/tree-sitter/src/tree_sitter/parser.h +286 -0
  92. package/tree-sitter/test/corpus/chaining.txt +99 -0
  93. package/tree-sitter/test/corpus/classes.txt +147 -0
  94. package/tree-sitter/test/corpus/comprehensions.txt +155 -0
  95. package/tree-sitter/test/corpus/containers.txt +242 -0
  96. package/tree-sitter/test/corpus/control_flow.txt +361 -0
  97. package/tree-sitter/test/corpus/decorators.txt +64 -0
  98. package/tree-sitter/test/corpus/existential.txt +102 -0
  99. package/tree-sitter/test/corpus/functions.txt +293 -0
  100. package/tree-sitter/test/corpus/imports.txt +117 -0
  101. package/tree-sitter/test/corpus/literals.txt +135 -0
  102. package/tree-sitter/test/corpus/operators.txt +296 -0
  103. package/tree-sitter/test/corpus/statements.txt +189 -0
  104. package/tree-sitter/test/corpus/strings.txt +90 -0
  105. package/tree-sitter/test/corpus/subscripts.txt +227 -0
  106. package/tree-sitter/tree-sitter.json +36 -0
  107. package/web-repl/env.js +35 -23
  108. package/web-repl/main.js +8 -8
  109. package/bin/export +0 -75
  110. package/bin/web-repl-export +0 -102
  111. package/tools/cli.js +0 -523
  112. package/tools/compile.js +0 -184
  113. package/tools/compiler.js +0 -84
  114. package/tools/test.js +0 -110
@@ -0,0 +1,102 @@
1
+ ==================
2
+ existence check
3
+ ==================
4
+
5
+ yes = True if no? else False
6
+
7
+ ---
8
+
9
+ (module
10
+ (conditional_expression
11
+ (assignment
12
+ left: (pattern
13
+ (identifier))
14
+ right: (true))
15
+ (existential
16
+ object: (identifier))
17
+ (false)))
18
+
19
+ ==================
20
+ safe attribute access
21
+ ==================
22
+
23
+ a = obj?.prop
24
+
25
+ ---
26
+
27
+ (module
28
+ (assignment
29
+ left: (pattern
30
+ (identifier))
31
+ right: (existential
32
+ object: (identifier)
33
+ attribute: (identifier))))
34
+
35
+ ==================
36
+ safe subscript
37
+ ==================
38
+
39
+ a = obj?[0]
40
+
41
+ ---
42
+
43
+ (module
44
+ (assignment
45
+ left: (pattern
46
+ (identifier))
47
+ right: (existential
48
+ object: (identifier)
49
+ subscript: (number))))
50
+
51
+ ==================
52
+ safe call
53
+ ==================
54
+
55
+ a = fn?()
56
+
57
+ ---
58
+
59
+ (module
60
+ (assignment
61
+ left: (pattern
62
+ (identifier))
63
+ right: (existential
64
+ object: (identifier)
65
+ default: (tuple))))
66
+
67
+ ==================
68
+ existential chain
69
+ ==================
70
+
71
+ ans = a?.b?[1]?()
72
+
73
+ ---
74
+
75
+ (module
76
+ (assignment
77
+ left: (pattern
78
+ (identifier))
79
+ right: (existential
80
+ object: (existential
81
+ object: (existential
82
+ object: (identifier)
83
+ attribute: (identifier))
84
+ subscript: (number))
85
+ default: (tuple))))
86
+
87
+ ==================
88
+ default operator
89
+ ==================
90
+
91
+ a = b ? c
92
+
93
+ ---
94
+
95
+ (module
96
+ (assignment
97
+ left: (pattern
98
+ (identifier))
99
+ right: (existential
100
+ object: (identifier)
101
+ default: (identifier))))
102
+
@@ -0,0 +1,293 @@
1
+ ==================
2
+ simple function
3
+ ==================
4
+
5
+ def greet():
6
+ alert("Hello World!")
7
+
8
+ ---
9
+
10
+ (module
11
+ (anonymous_function
12
+ name: (identifier)
13
+ parameters: (parameters)
14
+ body: (block
15
+ (call
16
+ function: (identifier)
17
+ arguments: (argument_list
18
+ (string))))))
19
+
20
+ ==================
21
+ function with arguments and return
22
+ ==================
23
+
24
+ def factorial(n):
25
+ if n == 0:
26
+ return 1
27
+ return n * factorial(n-1)
28
+
29
+ ---
30
+
31
+ (module
32
+ (anonymous_function
33
+ name: (identifier)
34
+ parameters: (parameters
35
+ (identifier))
36
+ body: (block
37
+ (if_statement
38
+ condition: (comparison_operator
39
+ (identifier)
40
+ (number))
41
+ consequence: (block
42
+ (return_statement
43
+ (number))))
44
+ (return_statement
45
+ (binary_operator
46
+ left: (identifier)
47
+ right: (call
48
+ function: (identifier)
49
+ arguments: (argument_list
50
+ (binary_operator
51
+ left: (identifier)
52
+ right: (number)))))))))
53
+
54
+ ==================
55
+ default and typed parameters
56
+ ==================
57
+
58
+ def f(a, b=2, c: int = 3):
59
+ return a
60
+
61
+ ---
62
+
63
+ (module
64
+ (anonymous_function
65
+ name: (identifier)
66
+ parameters: (parameters
67
+ (identifier)
68
+ (default_parameter
69
+ name: (identifier)
70
+ value: (number))
71
+ (typed_default_parameter
72
+ name: (identifier)
73
+ type: (identifier)
74
+ value: (number)))
75
+ body: (block
76
+ (return_statement
77
+ (identifier)))))
78
+
79
+ ==================
80
+ star args and kwargs
81
+ ==================
82
+
83
+ def f4(*args, **kwargs):
84
+ return [args, kwargs]
85
+
86
+ ---
87
+
88
+ (module
89
+ (anonymous_function
90
+ name: (identifier)
91
+ parameters: (parameters
92
+ (list_splat_parameter
93
+ name: (identifier))
94
+ (dictionary_splat_parameter
95
+ name: (identifier)))
96
+ body: (block
97
+ (return_statement
98
+ (list
99
+ (identifier)
100
+ (identifier))))))
101
+
102
+ ==================
103
+ typed star args
104
+ ==================
105
+
106
+ def kw(*args: list, **kwargs: dict) -> int:
107
+ return 1
108
+
109
+ ---
110
+
111
+ (module
112
+ (anonymous_function
113
+ name: (identifier)
114
+ parameters: (parameters
115
+ (list_splat_parameter
116
+ name: (identifier)
117
+ type: (identifier))
118
+ (dictionary_splat_parameter
119
+ name: (identifier)
120
+ type: (identifier)))
121
+ return_type: (identifier)
122
+ body: (block
123
+ (return_statement
124
+ (number)))))
125
+
126
+ ==================
127
+ return type annotation
128
+ ==================
129
+
130
+ def add(a, b) -> int:
131
+ return a + b
132
+
133
+ ---
134
+
135
+ (module
136
+ (anonymous_function
137
+ name: (identifier)
138
+ parameters: (parameters
139
+ (identifier)
140
+ (identifier))
141
+ return_type: (identifier)
142
+ body: (block
143
+ (return_statement
144
+ (binary_operator
145
+ left: (identifier)
146
+ right: (identifier))))))
147
+
148
+ ==================
149
+ anonymous function assignment
150
+ ==================
151
+
152
+ factorial = def(n):
153
+ return n
154
+
155
+ ---
156
+
157
+ (module
158
+ (assignment
159
+ left: (pattern
160
+ (identifier))
161
+ right: (anonymous_function
162
+ parameters: (parameters
163
+ (identifier))
164
+ body: (block
165
+ (return_statement
166
+ (identifier))))))
167
+
168
+ ==================
169
+ inline anonymous function
170
+ ==================
171
+
172
+ add = def(a, b): return a + b
173
+
174
+ ---
175
+
176
+ (module
177
+ (assignment
178
+ left: (pattern
179
+ (identifier))
180
+ right: (anonymous_function
181
+ parameters: (parameters
182
+ (identifier)
183
+ (identifier))
184
+ body: (block
185
+ (return_statement
186
+ (binary_operator
187
+ left: (identifier)
188
+ right: (identifier)))))))
189
+
190
+ ==================
191
+ named function expression
192
+ ==================
193
+
194
+ x = assrt.equal(def named(a):
195
+ return a
196
+ , 1)
197
+
198
+ ---
199
+
200
+ (module
201
+ (assignment
202
+ left: (pattern
203
+ (identifier))
204
+ right: (call
205
+ function: (attribute
206
+ object: (identifier)
207
+ attribute: (identifier))
208
+ arguments: (argument_list
209
+ (anonymous_function
210
+ name: (identifier)
211
+ parameters: (parameters
212
+ (identifier))
213
+ body: (block
214
+ (return_statement
215
+ (identifier))))
216
+ (number)))))
217
+
218
+ ==================
219
+ async function definition
220
+ ==================
221
+
222
+ async def fetch(url):
223
+ await get(url)
224
+
225
+ ---
226
+
227
+ (module
228
+ (anonymous_function
229
+ name: (identifier)
230
+ parameters: (parameters
231
+ (identifier))
232
+ body: (block
233
+ (await
234
+ (call
235
+ function: (identifier)
236
+ arguments: (argument_list
237
+ (identifier)))))))
238
+
239
+ ==================
240
+ nested block anonymous function
241
+ ==================
242
+
243
+ def outer():
244
+ inner = def(event):
245
+ return 1
246
+ div.mousedown(inner)
247
+
248
+ ---
249
+
250
+ (module
251
+ (anonymous_function
252
+ name: (identifier)
253
+ parameters: (parameters)
254
+ body: (block
255
+ (block_tailed_statement
256
+ left: (pattern
257
+ (identifier))
258
+ value: (anonymous_function
259
+ parameters: (parameters
260
+ (identifier))
261
+ body: (block
262
+ (return_statement
263
+ (number)))))
264
+ (call
265
+ function: (attribute
266
+ object: (identifier)
267
+ attribute: (identifier))
268
+ arguments: (argument_list
269
+ (identifier))))))
270
+
271
+ ==================
272
+ anonymous function inside call multiline
273
+ ==================
274
+
275
+ E.a(onclick=def():
276
+ pass
277
+ )
278
+
279
+ ---
280
+
281
+ (module
282
+ (call
283
+ function: (attribute
284
+ object: (identifier)
285
+ attribute: (identifier))
286
+ arguments: (argument_list
287
+ (keyword_argument
288
+ name: (identifier)
289
+ value: (anonymous_function
290
+ parameters: (parameters)
291
+ body: (block
292
+ (pass_statement)))))))
293
+
@@ -0,0 +1,117 @@
1
+ ==================
2
+ import module
3
+ ==================
4
+
5
+ import re
6
+
7
+ ---
8
+
9
+ (module
10
+ (import_statement
11
+ name: (dotted_name
12
+ (identifier))))
13
+
14
+ ==================
15
+ import multiple with alias
16
+ ==================
17
+
18
+ import re, os as myos
19
+
20
+ ---
21
+
22
+ (module
23
+ (import_statement
24
+ name: (dotted_name
25
+ (identifier))
26
+ name: (aliased_import
27
+ name: (dotted_name
28
+ (identifier))
29
+ alias: (identifier))))
30
+
31
+ ==================
32
+ import dotted
33
+ ==================
34
+
35
+ import mypackage.mymodule
36
+
37
+ ---
38
+
39
+ (module
40
+ (import_statement
41
+ name: (dotted_name
42
+ (identifier)
43
+ (identifier))))
44
+
45
+ ==================
46
+ from import
47
+ ==================
48
+
49
+ from mypackage.mymodule import something, something_else
50
+
51
+ ---
52
+
53
+ (module
54
+ (import_from_statement
55
+ module_name: (dotted_name
56
+ (identifier)
57
+ (identifier))
58
+ name: (identifier)
59
+ name: (identifier)))
60
+
61
+ ==================
62
+ from import with alias
63
+ ==================
64
+
65
+ from gettext import gettext as _
66
+
67
+ ---
68
+
69
+ (module
70
+ (import_from_statement
71
+ module_name: (dotted_name
72
+ (identifier))
73
+ name: (aliased_import_name
74
+ name: (identifier)
75
+ alias: (identifier))))
76
+
77
+ ==================
78
+ from import parenthesized
79
+ ==================
80
+
81
+ from mod import (a, b, c)
82
+
83
+ ---
84
+
85
+ (module
86
+ (import_from_statement
87
+ module_name: (dotted_name
88
+ (identifier))
89
+ name: (identifier)
90
+ name: (identifier)
91
+ name: (identifier)))
92
+
93
+ ==================
94
+ scoped flags
95
+ ==================
96
+
97
+ from __python__ import dict_literals, overload_getitem
98
+
99
+ ---
100
+
101
+ (module
102
+ (scoped_flag_statement
103
+ flag: (identifier)
104
+ flag: (identifier)))
105
+
106
+ ==================
107
+ negated scoped flags
108
+ ==================
109
+
110
+ from __python__ import no_dict_literals
111
+
112
+ ---
113
+
114
+ (module
115
+ (scoped_flag_statement
116
+ flag: (identifier)))
117
+
@@ -0,0 +1,135 @@
1
+ ==================
2
+ integers
3
+ ==================
4
+
5
+ a = 42
6
+
7
+ ---
8
+
9
+ (module
10
+ (assignment
11
+ left: (pattern
12
+ (identifier))
13
+ right: (number)))
14
+
15
+ ==================
16
+ hex octal binary
17
+ ==================
18
+
19
+ a = 0xff
20
+ b = 0o17
21
+ c = 0b101
22
+
23
+ ---
24
+
25
+ (module
26
+ (assignment
27
+ left: (pattern
28
+ (identifier))
29
+ right: (number))
30
+ (assignment
31
+ left: (pattern
32
+ (identifier))
33
+ right: (number))
34
+ (assignment
35
+ left: (pattern
36
+ (identifier))
37
+ right: (number)))
38
+
39
+ ==================
40
+ floats and scientific
41
+ ==================
42
+
43
+ a = 3.14
44
+ b = 1e10
45
+ c = 2.5e-3
46
+
47
+ ---
48
+
49
+ (module
50
+ (assignment
51
+ left: (pattern
52
+ (identifier))
53
+ right: (number))
54
+ (assignment
55
+ left: (pattern
56
+ (identifier))
57
+ right: (number))
58
+ (assignment
59
+ left: (pattern
60
+ (identifier))
61
+ right: (number)))
62
+
63
+ ==================
64
+ booleans and none
65
+ ==================
66
+
67
+ a = True
68
+ b = False
69
+ c = None
70
+
71
+ ---
72
+
73
+ (module
74
+ (assignment
75
+ left: (pattern
76
+ (identifier))
77
+ right: (true))
78
+ (assignment
79
+ left: (pattern
80
+ (identifier))
81
+ right: (false))
82
+ (assignment
83
+ left: (pattern
84
+ (identifier))
85
+ right: (none)))
86
+
87
+ ==================
88
+ this and undefined
89
+ ==================
90
+
91
+ a = this
92
+ b = undefined
93
+
94
+ ---
95
+
96
+ (module
97
+ (assignment
98
+ left: (pattern
99
+ (identifier))
100
+ right: (this))
101
+ (assignment
102
+ left: (pattern
103
+ (identifier))
104
+ right: (identifier)))
105
+
106
+ ==================
107
+ regex literal
108
+ ==================
109
+
110
+ r = /a(b)c/gi
111
+
112
+ ---
113
+
114
+ (module
115
+ (assignment
116
+ left: (pattern
117
+ (identifier))
118
+ right: (regex)))
119
+
120
+ ==================
121
+ verbose regex literal
122
+ ==================
123
+
124
+ r = /// a # comment
125
+ b ///
126
+
127
+
128
+ ---
129
+
130
+ (module
131
+ (assignment
132
+ left: (pattern
133
+ (identifier))
134
+ right: (regex)))
135
+