firefly-compiler 0.4.77 → 0.4.79
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/.hintrc +4 -4
- package/.vscode/settings.json +4 -4
- package/bin/Release.ff +153 -153
- package/bin/firefly.mjs +1 -1
- package/compiler/Builder.ff +257 -257
- package/compiler/Compiler.ff +227 -227
- package/compiler/Dependencies.ff +187 -187
- package/compiler/DependencyLock.ff +17 -17
- package/compiler/JsEmitter.ff +946 -946
- package/compiler/LspHook.ff +202 -202
- package/compiler/ModuleCache.ff +178 -178
- package/compiler/Workspace.ff +88 -88
- package/core/.firefly/include/package-lock.json +564 -394
- package/core/.firefly/include/package.json +5 -5
- package/core/.firefly/include/prepare.sh +1 -1
- package/core/.firefly/package.ff +2 -2
- package/core/Array.ff +265 -265
- package/core/Atomic.ff +64 -64
- package/core/Box.ff +7 -7
- package/core/BrowserSystem.ff +40 -40
- package/core/BuildSystem.ff +148 -148
- package/core/Crypto.ff +96 -96
- package/core/Equal.ff +36 -36
- package/core/HttpClient.ff +148 -148
- package/core/JsSystem.ff +69 -69
- package/core/Json.ff +434 -434
- package/core/List.ff +486 -486
- package/core/Lock.ff +144 -144
- package/core/NodeSystem.ff +216 -216
- package/core/Ordering.ff +161 -161
- package/core/Path.ff +401 -401
- package/core/Random.ff +134 -134
- package/core/RbMap.ff +216 -216
- package/core/Show.ff +43 -43
- package/core/SourceLocation.ff +68 -68
- package/core/String.ff +16 -0
- package/core/Task.ff +141 -141
- package/experimental/benchmarks/ListGrab.ff +23 -23
- package/experimental/benchmarks/ListGrab.java +55 -55
- package/experimental/benchmarks/Pyrotek45.ff +30 -30
- package/experimental/benchmarks/Pyrotek45.java +64 -64
- package/experimental/bidirectional/Bidi.ff +88 -88
- package/experimental/random/Index.ff +53 -53
- package/experimental/random/Process.ff +120 -120
- package/experimental/random/Scrape.ff +51 -51
- package/experimental/random/Symbols.ff +73 -73
- package/experimental/random/Tensor.ff +52 -52
- package/experimental/random/Units.ff +36 -36
- package/experimental/s3/S3TestAuthorizationHeader.ff +39 -38
- package/experimental/s3/S3TestPut.ff +16 -15
- package/experimental/tests/TestJson.ff +26 -26
- package/firefly.sh +0 -0
- package/fireflysite/.firefly/package.ff +4 -0
- package/fireflysite/CommunityOverview.ff +20 -0
- package/fireflysite/CountingButtonDemo.ff +58 -0
- package/fireflysite/DocumentParser.ff +218 -0
- package/fireflysite/ExamplesOverview.ff +40 -0
- package/fireflysite/FrontPage.ff +360 -0
- package/fireflysite/Guide.ff +411 -0
- package/fireflysite/GuideAll.ff +21 -0
- package/fireflysite/GuideBaseTypes.ff +168 -0
- package/fireflysite/GuideControlFlow.ff +212 -0
- package/fireflysite/GuideIntroduction.ff +52 -0
- package/fireflysite/Main.ff +137 -15
- package/fireflysite/MatchingPasswordsDemo.ff +82 -0
- package/fireflysite/PackagesOverview.ff +49 -0
- package/fireflysite/PostgresqlDemo.ff +34 -0
- package/fireflysite/Styles.ff +495 -0
- package/fireflysite/assets/NotoSansMono-Regular.ttf +0 -0
- package/fireflysite/assets/NunitoSans-VariableFont_YTLC,opsz,wdth,wght.ttf +0 -0
- package/fireflysite/assets/autocomplete-small.png +0 -0
- package/fireflysite/assets/autocomplete.png +0 -0
- package/fireflysite/assets/edit-time-error.png +0 -0
- package/fireflysite/assets/firefly-logo-notext.png +0 -0
- package/fireflysite/assets/firefly-logo-yellow.png +0 -0
- package/fireflysite/assets/markdown/ControlFlow.md +136 -0
- package/fireflysite/assets/markdown/Example.md +78 -0
- package/lsp/.firefly/package.ff +1 -1
- package/lsp/CompletionHandler.ff +828 -828
- package/lsp/Handler.ff +714 -714
- package/lsp/HoverHandler.ff +79 -79
- package/lsp/LanguageServer.ff +272 -272
- package/lsp/SignatureHelpHandler.ff +55 -55
- package/lsp/SymbolHandler.ff +181 -181
- package/lsp/TestReferences.ff +17 -17
- package/lsp/TestReferencesCase.ff +7 -7
- package/lsp/stderr.txt +1 -1
- package/lsp/stdout.txt +34 -34
- package/lux/.firefly/package.ff +1 -1
- package/lux/Css.ff +648 -648
- package/lux/CssTest.ff +48 -48
- package/lux/Lux.ff +487 -487
- package/lux/LuxEvent.ff +116 -116
- package/lux/Main.ff +123 -123
- package/lux/Main2.ff +143 -144
- package/output/js/ff/compiler/Builder.mjs +43 -43
- package/output/js/ff/compiler/Dependencies.mjs +3 -3
- package/output/js/ff/core/Array.mjs +59 -59
- package/output/js/ff/core/Atomic.mjs +36 -36
- package/output/js/ff/core/BrowserSystem.mjs +11 -11
- package/output/js/ff/core/BuildSystem.mjs +30 -30
- package/output/js/ff/core/Crypto.mjs +40 -40
- package/output/js/ff/core/HttpClient.mjs +56 -56
- package/output/js/ff/core/Json.mjs +147 -147
- package/output/js/ff/core/List.mjs +50 -50
- package/output/js/ff/core/Lock.mjs +97 -97
- package/output/js/ff/core/NodeSystem.mjs +83 -83
- package/output/js/ff/core/Ordering.mjs +8 -8
- package/output/js/ff/core/Path.mjs +231 -231
- package/output/js/ff/core/Random.mjs +56 -56
- package/output/js/ff/core/String.mjs +20 -0
- package/output/js/ff/core/Task.mjs +31 -31
- package/package.json +1 -1
- package/rpc/.firefly/package.ff +1 -1
- package/rpc/Rpc.ff +70 -70
- package/s3/.firefly/package.ff +1 -1
- package/s3/S3.ff +94 -94
- package/unsafejs/UnsafeJs.ff +19 -19
- package/vscode/LICENSE.txt +21 -21
- package/vscode/Prepublish.ff +15 -15
- package/vscode/README.md +16 -16
- package/vscode/client/package.json +22 -22
- package/vscode/client/src/extension.ts +104 -104
- package/vscode/icons/firefly-icon.svg +10 -10
- package/vscode/language-configuration.json +61 -61
- package/vscode/package-lock.json +3623 -3623
- package/vscode/package.json +15 -1
- package/vscode/snippets.json +241 -241
- package/vscode/syntaxes/firefly-markdown-injection.json +45 -0
- package/webserver/.firefly/include/package-lock.json +22 -16
- package/webserver/.firefly/include/package.json +5 -5
- package/webserver/.firefly/package.ff +2 -2
- package/webserver/WebServer.ff +685 -685
- package/websocket/.firefly/package.ff +1 -1
- package/websocket/WebSocket.ff +131 -131
package/core/HttpClient.ff
CHANGED
|
@@ -1,148 +1,148 @@
|
|
|
1
|
-
capability HttpClient {}
|
|
2
|
-
capability FetchBody {}
|
|
3
|
-
capability FetchResponse {}
|
|
4
|
-
data FetchRedirect {
|
|
5
|
-
RedirectFollow
|
|
6
|
-
RedirectError
|
|
7
|
-
RedirectManual
|
|
8
|
-
}
|
|
9
|
-
data FetchOptions(
|
|
10
|
-
redirect: FetchRedirect = RedirectFollow
|
|
11
|
-
referrer: Option[String] = None
|
|
12
|
-
integrity: Option[String] = None
|
|
13
|
-
mode: Option[String] = None
|
|
14
|
-
credentials: Option[String] = None
|
|
15
|
-
cache: Option[String] = None
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
extend self: HttpClient {
|
|
19
|
-
|
|
20
|
-
get[T](
|
|
21
|
-
url: String
|
|
22
|
-
headers: List[Pair[String, String]]
|
|
23
|
-
body: FetchResponse => T
|
|
24
|
-
): T {
|
|
25
|
-
self.fetch("GET", url, headers, None, FetchOptions(), body)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
post[T](
|
|
29
|
-
url: String
|
|
30
|
-
headers: List[Pair[String, String]]
|
|
31
|
-
payload: Buffer
|
|
32
|
-
body: FetchResponse => T
|
|
33
|
-
): T {
|
|
34
|
-
self.fetch("POST", url, headers, Some(payload), FetchOptions(), body)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
put[T](
|
|
38
|
-
url: String
|
|
39
|
-
headers: List[Pair[String, String]]
|
|
40
|
-
payload: Buffer
|
|
41
|
-
body: FetchResponse => T
|
|
42
|
-
): T {
|
|
43
|
-
self.fetch("PUT", url, headers, Some(payload), FetchOptions(), body)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
delete[T](
|
|
47
|
-
url: String
|
|
48
|
-
headers: List[Pair[String, String]]
|
|
49
|
-
body: FetchResponse => T
|
|
50
|
-
): T {
|
|
51
|
-
self.fetch("DELETE", url, headers, None, FetchOptions(), body)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
fetch[T](
|
|
55
|
-
method: String
|
|
56
|
-
url: String
|
|
57
|
-
headers: List[Pair[String, String]] = []
|
|
58
|
-
payload: Option[Buffer] = None
|
|
59
|
-
options: FetchOptions = FetchOptions()
|
|
60
|
-
body: FetchResponse => T
|
|
61
|
-
): T
|
|
62
|
-
target js async """
|
|
63
|
-
const fetchResponse = {response: null, statusChecked: false};
|
|
64
|
-
try {
|
|
65
|
-
const options = {headers: {}, signal: $task.controller.signal};
|
|
66
|
-
options.method = method_;
|
|
67
|
-
headers_.forEach(pair => {options.headers[pair.first_] = pair.second_});
|
|
68
|
-
if(payload_.value_) options.body = payload_.value_;
|
|
69
|
-
if(options_.redirect_.RedirectError) options.redirect = "error";
|
|
70
|
-
else if(options_.redirect_.RedirectManual) options.redirect = "manual";
|
|
71
|
-
if(options_.referrer_.value_) options.referrer = options_.referrer_.value_;
|
|
72
|
-
if(options_.integrity_.value_) options.integrity = options_.integrity_.value_;
|
|
73
|
-
if(options_.mode_.value_) options.mode = options_.mode_.value_;
|
|
74
|
-
if(options_.credentials_.value_) options.credentials = options_.credentials_.value_;
|
|
75
|
-
if(options_.cache_.value_) options.cache = options_.cache_.value_;
|
|
76
|
-
fetchResponse.response = await self_.fetch(url_, options);
|
|
77
|
-
const result = await body_(fetchResponse, $task);
|
|
78
|
-
internalCheck_(fetchResponse);
|
|
79
|
-
return result;
|
|
80
|
-
} finally {
|
|
81
|
-
fetchResponse.response = null;
|
|
82
|
-
if($task.controller.signal.aborted) $task.controller = new AbortController()
|
|
83
|
-
}
|
|
84
|
-
"""
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
extend self: FetchResponse {
|
|
89
|
-
|
|
90
|
-
ok(): Bool
|
|
91
|
-
target js async """
|
|
92
|
-
self_.statusChecked = true;
|
|
93
|
-
internalCheck_(self_);
|
|
94
|
-
return self_.response.ok;
|
|
95
|
-
"""
|
|
96
|
-
|
|
97
|
-
status(): Int
|
|
98
|
-
target js async """
|
|
99
|
-
self_.statusChecked = true;
|
|
100
|
-
internalCheck_(self_);
|
|
101
|
-
return self_.response.status;
|
|
102
|
-
"""
|
|
103
|
-
|
|
104
|
-
statusText(): String
|
|
105
|
-
target js async """
|
|
106
|
-
self_.statusChecked = true;
|
|
107
|
-
internalCheck_(self_);
|
|
108
|
-
return self_.response.statusText;
|
|
109
|
-
"""
|
|
110
|
-
|
|
111
|
-
header(name: String): Option[String]
|
|
112
|
-
target js async """
|
|
113
|
-
internalCheck_(self_);
|
|
114
|
-
const header = self_.response.headers.get(name_);
|
|
115
|
-
return header != null
|
|
116
|
-
? ff_core_Option.Some(header)
|
|
117
|
-
: ff_core_Option.None();
|
|
118
|
-
"""
|
|
119
|
-
|
|
120
|
-
readText(): String
|
|
121
|
-
target js async """
|
|
122
|
-
internalCheck_(self_);
|
|
123
|
-
return await self_.response.text();
|
|
124
|
-
"""
|
|
125
|
-
|
|
126
|
-
readJson(): Json
|
|
127
|
-
target js async """
|
|
128
|
-
internalCheck_(self_);
|
|
129
|
-
return await self_.response.json();
|
|
130
|
-
"""
|
|
131
|
-
|
|
132
|
-
readBuffer(): Buffer
|
|
133
|
-
target js async """
|
|
134
|
-
internalCheck_(self_);
|
|
135
|
-
return new DataView(await self_.response.arrayBuffer());
|
|
136
|
-
"""
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
internalCheck(fetchResponse: FetchResponse)
|
|
141
|
-
target js sync """
|
|
142
|
-
if(fetchResponse_.response === null) {
|
|
143
|
-
throw new Error("Response closed");
|
|
144
|
-
}
|
|
145
|
-
if(!fetchResponse_.statusChecked && !fetchResponse_.response.ok) {
|
|
146
|
-
throw new Error("Unchecked HTTP status code: " + fetchResponse_.response.status);
|
|
147
|
-
}
|
|
148
|
-
"""
|
|
1
|
+
capability HttpClient {}
|
|
2
|
+
capability FetchBody {}
|
|
3
|
+
capability FetchResponse {}
|
|
4
|
+
data FetchRedirect {
|
|
5
|
+
RedirectFollow
|
|
6
|
+
RedirectError
|
|
7
|
+
RedirectManual
|
|
8
|
+
}
|
|
9
|
+
data FetchOptions(
|
|
10
|
+
redirect: FetchRedirect = RedirectFollow
|
|
11
|
+
referrer: Option[String] = None
|
|
12
|
+
integrity: Option[String] = None
|
|
13
|
+
mode: Option[String] = None
|
|
14
|
+
credentials: Option[String] = None
|
|
15
|
+
cache: Option[String] = None
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
extend self: HttpClient {
|
|
19
|
+
|
|
20
|
+
get[T](
|
|
21
|
+
url: String
|
|
22
|
+
headers: List[Pair[String, String]]
|
|
23
|
+
body: FetchResponse => T
|
|
24
|
+
): T {
|
|
25
|
+
self.fetch("GET", url, headers, None, FetchOptions(), body)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
post[T](
|
|
29
|
+
url: String
|
|
30
|
+
headers: List[Pair[String, String]]
|
|
31
|
+
payload: Buffer
|
|
32
|
+
body: FetchResponse => T
|
|
33
|
+
): T {
|
|
34
|
+
self.fetch("POST", url, headers, Some(payload), FetchOptions(), body)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
put[T](
|
|
38
|
+
url: String
|
|
39
|
+
headers: List[Pair[String, String]]
|
|
40
|
+
payload: Buffer
|
|
41
|
+
body: FetchResponse => T
|
|
42
|
+
): T {
|
|
43
|
+
self.fetch("PUT", url, headers, Some(payload), FetchOptions(), body)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
delete[T](
|
|
47
|
+
url: String
|
|
48
|
+
headers: List[Pair[String, String]]
|
|
49
|
+
body: FetchResponse => T
|
|
50
|
+
): T {
|
|
51
|
+
self.fetch("DELETE", url, headers, None, FetchOptions(), body)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
fetch[T](
|
|
55
|
+
method: String
|
|
56
|
+
url: String
|
|
57
|
+
headers: List[Pair[String, String]] = []
|
|
58
|
+
payload: Option[Buffer] = None
|
|
59
|
+
options: FetchOptions = FetchOptions()
|
|
60
|
+
body: FetchResponse => T
|
|
61
|
+
): T
|
|
62
|
+
target js async """
|
|
63
|
+
const fetchResponse = {response: null, statusChecked: false};
|
|
64
|
+
try {
|
|
65
|
+
const options = {headers: {}, signal: $task.controller.signal};
|
|
66
|
+
options.method = method_;
|
|
67
|
+
headers_.forEach(pair => {options.headers[pair.first_] = pair.second_});
|
|
68
|
+
if(payload_.value_) options.body = payload_.value_;
|
|
69
|
+
if(options_.redirect_.RedirectError) options.redirect = "error";
|
|
70
|
+
else if(options_.redirect_.RedirectManual) options.redirect = "manual";
|
|
71
|
+
if(options_.referrer_.value_) options.referrer = options_.referrer_.value_;
|
|
72
|
+
if(options_.integrity_.value_) options.integrity = options_.integrity_.value_;
|
|
73
|
+
if(options_.mode_.value_) options.mode = options_.mode_.value_;
|
|
74
|
+
if(options_.credentials_.value_) options.credentials = options_.credentials_.value_;
|
|
75
|
+
if(options_.cache_.value_) options.cache = options_.cache_.value_;
|
|
76
|
+
fetchResponse.response = await self_.fetch(url_, options);
|
|
77
|
+
const result = await body_(fetchResponse, $task);
|
|
78
|
+
internalCheck_(fetchResponse);
|
|
79
|
+
return result;
|
|
80
|
+
} finally {
|
|
81
|
+
fetchResponse.response = null;
|
|
82
|
+
if($task.controller.signal.aborted) $task.controller = new AbortController()
|
|
83
|
+
}
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
extend self: FetchResponse {
|
|
89
|
+
|
|
90
|
+
ok(): Bool
|
|
91
|
+
target js async """
|
|
92
|
+
self_.statusChecked = true;
|
|
93
|
+
internalCheck_(self_);
|
|
94
|
+
return self_.response.ok;
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
status(): Int
|
|
98
|
+
target js async """
|
|
99
|
+
self_.statusChecked = true;
|
|
100
|
+
internalCheck_(self_);
|
|
101
|
+
return self_.response.status;
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
statusText(): String
|
|
105
|
+
target js async """
|
|
106
|
+
self_.statusChecked = true;
|
|
107
|
+
internalCheck_(self_);
|
|
108
|
+
return self_.response.statusText;
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
header(name: String): Option[String]
|
|
112
|
+
target js async """
|
|
113
|
+
internalCheck_(self_);
|
|
114
|
+
const header = self_.response.headers.get(name_);
|
|
115
|
+
return header != null
|
|
116
|
+
? ff_core_Option.Some(header)
|
|
117
|
+
: ff_core_Option.None();
|
|
118
|
+
"""
|
|
119
|
+
|
|
120
|
+
readText(): String
|
|
121
|
+
target js async """
|
|
122
|
+
internalCheck_(self_);
|
|
123
|
+
return await self_.response.text();
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
readJson(): Json
|
|
127
|
+
target js async """
|
|
128
|
+
internalCheck_(self_);
|
|
129
|
+
return await self_.response.json();
|
|
130
|
+
"""
|
|
131
|
+
|
|
132
|
+
readBuffer(): Buffer
|
|
133
|
+
target js async """
|
|
134
|
+
internalCheck_(self_);
|
|
135
|
+
return new DataView(await self_.response.arrayBuffer());
|
|
136
|
+
"""
|
|
137
|
+
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
internalCheck(fetchResponse: FetchResponse)
|
|
141
|
+
target js sync """
|
|
142
|
+
if(fetchResponse_.response === null) {
|
|
143
|
+
throw new Error("Response closed");
|
|
144
|
+
}
|
|
145
|
+
if(!fetchResponse_.statusChecked && !fetchResponse_.response.ok) {
|
|
146
|
+
throw new Error("Unchecked HTTP status code: " + fetchResponse_.response.status);
|
|
147
|
+
}
|
|
148
|
+
"""
|
package/core/JsSystem.ff
CHANGED
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
class JsSystem {} // TODO: It has to be async if the async ffi is to be called - solve in the compiler?
|
|
2
|
-
|
|
3
|
-
extend self: JsSystem {
|
|
4
|
-
|
|
5
|
-
global(): JsValue
|
|
6
|
-
target js sync "return self_"
|
|
7
|
-
|
|
8
|
-
parseJson(json: String): JsValue
|
|
9
|
-
target js sync "return JSON.parse(json_)"
|
|
10
|
-
|
|
11
|
-
null(): JsValue
|
|
12
|
-
target js sync "return null"
|
|
13
|
-
|
|
14
|
-
undefined(): JsValue
|
|
15
|
-
target js sync "return void 0"
|
|
16
|
-
|
|
17
|
-
value[T: IsJsValue](jsValue: T): JsValue
|
|
18
|
-
target js sync "return jsValue_"
|
|
19
|
-
|
|
20
|
-
object(): JsValue
|
|
21
|
-
target js sync "return {}"
|
|
22
|
-
|
|
23
|
-
array(values: List[JsValue]): JsValue
|
|
24
|
-
target js sync "return values_.slice()"
|
|
25
|
-
|
|
26
|
-
json(value: Json): JsValue
|
|
27
|
-
target js sync "return value_"
|
|
28
|
-
|
|
29
|
-
function0[R](body: () => R): JsValue
|
|
30
|
-
target js sync "return body_"
|
|
31
|
-
target js async "return () => body_($task)"
|
|
32
|
-
|
|
33
|
-
function1[R](body: JsValue => R): JsValue
|
|
34
|
-
target js sync "return body_"
|
|
35
|
-
target js async "return a1 => body_(a1, $task)"
|
|
36
|
-
|
|
37
|
-
function2[R](body: (JsValue, JsValue) => R): JsValue
|
|
38
|
-
target js sync "return body_"
|
|
39
|
-
target js async "return (a1, a2) => body_(a1, a2, $task)"
|
|
40
|
-
|
|
41
|
-
function3[R](body: (JsValue, JsValue, JsValue) => R): JsValue
|
|
42
|
-
target js sync "return body_"
|
|
43
|
-
target js async "return (a1, a2, a3) => body_(a1, a2, a3, $task)"
|
|
44
|
-
|
|
45
|
-
function4[R](body: (JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
46
|
-
target js sync "return body_"
|
|
47
|
-
target js async "return (a1, a2, a3, a4) => body_(a1, a2, a3, a4, $task)"
|
|
48
|
-
|
|
49
|
-
function5[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
50
|
-
target js sync "return body_"
|
|
51
|
-
target js async "return (a1, a2, a3, a4, a5) => body_(a1, a2, a3, a4, a5, $task)"
|
|
52
|
-
|
|
53
|
-
function6[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
54
|
-
target js sync "return body_"
|
|
55
|
-
target js async "return (a1, a2, a3, a4, a5, a6) => body_(a1, a2, a3, a4, a5, a6, $task)"
|
|
56
|
-
|
|
57
|
-
function7[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
58
|
-
target js sync "return body_"
|
|
59
|
-
target js async "return (a1, a2, a3, a4, a5, a6, a7) => body_(a1, a2, a3, a4, a5, a6, a7, $task)"
|
|
60
|
-
|
|
61
|
-
function8[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
62
|
-
target js sync "return body_"
|
|
63
|
-
target js async "return (a1, a2, a3, a4, a5, a6, a7, a8) => body_(a1, a2, a3, a4, a5, a6, a7, a8, $task)"
|
|
64
|
-
|
|
65
|
-
function9[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
66
|
-
target js sync "return body_"
|
|
67
|
-
target js async "return (a1, a2, a3, a4, a5, a6, a7, a8, a9) => body_(a1, a2, a3, a4, a5, a6, a7, a8, a9, $task)"
|
|
68
|
-
|
|
69
|
-
}
|
|
1
|
+
class JsSystem {} // TODO: It has to be async if the async ffi is to be called - solve in the compiler?
|
|
2
|
+
|
|
3
|
+
extend self: JsSystem {
|
|
4
|
+
|
|
5
|
+
global(): JsValue
|
|
6
|
+
target js sync "return self_"
|
|
7
|
+
|
|
8
|
+
parseJson(json: String): JsValue
|
|
9
|
+
target js sync "return JSON.parse(json_)"
|
|
10
|
+
|
|
11
|
+
null(): JsValue
|
|
12
|
+
target js sync "return null"
|
|
13
|
+
|
|
14
|
+
undefined(): JsValue
|
|
15
|
+
target js sync "return void 0"
|
|
16
|
+
|
|
17
|
+
value[T: IsJsValue](jsValue: T): JsValue
|
|
18
|
+
target js sync "return jsValue_"
|
|
19
|
+
|
|
20
|
+
object(): JsValue
|
|
21
|
+
target js sync "return {}"
|
|
22
|
+
|
|
23
|
+
array(values: List[JsValue]): JsValue
|
|
24
|
+
target js sync "return values_.slice()"
|
|
25
|
+
|
|
26
|
+
json(value: Json): JsValue
|
|
27
|
+
target js sync "return value_"
|
|
28
|
+
|
|
29
|
+
function0[R](body: () => R): JsValue
|
|
30
|
+
target js sync "return body_"
|
|
31
|
+
target js async "return () => body_($task)"
|
|
32
|
+
|
|
33
|
+
function1[R](body: JsValue => R): JsValue
|
|
34
|
+
target js sync "return body_"
|
|
35
|
+
target js async "return a1 => body_(a1, $task)"
|
|
36
|
+
|
|
37
|
+
function2[R](body: (JsValue, JsValue) => R): JsValue
|
|
38
|
+
target js sync "return body_"
|
|
39
|
+
target js async "return (a1, a2) => body_(a1, a2, $task)"
|
|
40
|
+
|
|
41
|
+
function3[R](body: (JsValue, JsValue, JsValue) => R): JsValue
|
|
42
|
+
target js sync "return body_"
|
|
43
|
+
target js async "return (a1, a2, a3) => body_(a1, a2, a3, $task)"
|
|
44
|
+
|
|
45
|
+
function4[R](body: (JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
46
|
+
target js sync "return body_"
|
|
47
|
+
target js async "return (a1, a2, a3, a4) => body_(a1, a2, a3, a4, $task)"
|
|
48
|
+
|
|
49
|
+
function5[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
50
|
+
target js sync "return body_"
|
|
51
|
+
target js async "return (a1, a2, a3, a4, a5) => body_(a1, a2, a3, a4, a5, $task)"
|
|
52
|
+
|
|
53
|
+
function6[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
54
|
+
target js sync "return body_"
|
|
55
|
+
target js async "return (a1, a2, a3, a4, a5, a6) => body_(a1, a2, a3, a4, a5, a6, $task)"
|
|
56
|
+
|
|
57
|
+
function7[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
58
|
+
target js sync "return body_"
|
|
59
|
+
target js async "return (a1, a2, a3, a4, a5, a6, a7) => body_(a1, a2, a3, a4, a5, a6, a7, $task)"
|
|
60
|
+
|
|
61
|
+
function8[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
62
|
+
target js sync "return body_"
|
|
63
|
+
target js async "return (a1, a2, a3, a4, a5, a6, a7, a8) => body_(a1, a2, a3, a4, a5, a6, a7, a8, $task)"
|
|
64
|
+
|
|
65
|
+
function9[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
66
|
+
target js sync "return body_"
|
|
67
|
+
target js async "return (a1, a2, a3, a4, a5, a6, a7, a8, a9) => body_(a1, a2, a3, a4, a5, a6, a7, a8, a9, $task)"
|
|
68
|
+
|
|
69
|
+
}
|