firefly-compiler 0.4.79 → 0.4.81
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/Inference.ff +2 -1
- package/compiler/JsEmitter.ff +940 -946
- package/compiler/LspHook.ff +202 -202
- package/compiler/Main.ff +3 -3
- package/compiler/ModuleCache.ff +178 -178
- package/compiler/Tokenizer.ff +1 -1
- package/compiler/Unification.ff +1 -1
- package/compiler/Workspace.ff +88 -88
- package/core/.firefly/include/package-lock.json +564 -564
- 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/Float.ff +25 -0
- 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/Stream.ff +9 -9
- package/core/Task.ff +149 -141
- package/core/Try.ff +25 -4
- 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 -39
- package/experimental/s3/S3TestPut.ff +16 -16
- package/experimental/tests/TestJson.ff +26 -26
- package/firefly.sh +0 -0
- package/fireflysite/.firefly/package.ff +4 -4
- package/fireflysite/CommunityOverview.ff +20 -20
- package/fireflysite/CountingButtonDemo.ff +58 -58
- package/fireflysite/DocumentParser.ff +331 -217
- package/fireflysite/ExamplesOverview.ff +40 -40
- package/fireflysite/FrontPage.ff +344 -360
- package/fireflysite/{GuideIntroduction.ff → GettingStarted.ff} +45 -52
- package/fireflysite/Guide.ff +442 -411
- package/fireflysite/Main.ff +151 -137
- package/fireflysite/MatchingPasswordsDemo.ff +82 -82
- package/fireflysite/PackagesOverview.ff +49 -49
- package/fireflysite/PostgresqlDemo.ff +34 -34
- package/fireflysite/ReferenceAll.ff +18 -0
- package/fireflysite/ReferenceIntroduction.ff +11 -0
- package/fireflysite/Styles.ff +567 -495
- package/fireflysite/Test.ff +46 -0
- package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -0
- package/fireflysite/assets/markdown/reference/EmittedJavascript.md +66 -0
- package/fireflysite/assets/markdown/reference/Exceptions.md +101 -0
- package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +338 -0
- package/fireflysite/assets/markdown/reference/JavascriptInterop.md +134 -0
- package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -0
- package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -0
- package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -0
- package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -0
- package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -0
- package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -0
- package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -0
- package/fireflysite/assets/markdown/{ControlFlow.md → scratch/ControlFlow.md} +136 -136
- package/fireflysite/assets/markdown/scratch/Toc.md +41 -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 +593 -487
- package/lux/LuxEvent.ff +116 -116
- package/lux/Main.ff +123 -123
- package/lux/Main2.ff +143 -143
- package/lux/TestDry.ff +27 -0
- package/output/js/ff/compiler/Builder.mjs +47 -47
- package/output/js/ff/compiler/Dependencies.mjs +3 -3
- package/output/js/ff/compiler/Inference.mjs +2 -2
- package/output/js/ff/compiler/JsEmitter.mjs +18 -72
- package/output/js/ff/compiler/Main.mjs +4 -4
- package/output/js/ff/compiler/ModuleCache.mjs +4 -4
- 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/Float.mjs +50 -0
- 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 +87 -87
- 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/Task.mjs +71 -39
- package/output/js/ff/core/Try.mjs +98 -4
- package/package.json +1 -1
- package/postgresql/Pg.ff +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 +1 -1
- package/vscode/snippets.json +241 -241
- package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
- package/webserver/.firefly/include/package-lock.json +22 -22
- 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/fireflysite/GuideAll.ff +0 -21
- package/fireflysite/GuideBaseTypes.ff +0 -168
- package/fireflysite/GuideControlFlow.ff +0 -212
- package/fireflysite/assets/markdown/Example.md +0 -78
- /package/fireflysite/assets/{NotoSansMono-Regular.ttf → font/NotoSansMono-Regular.ttf} +0 -0
- /package/fireflysite/assets/{NunitoSans-VariableFont_YTLC,opsz,wdth,wght.ttf → font/NunitoSans-VariableFont_YTLC,opsz,wdth,wght.ttf} +0 -0
- /package/fireflysite/assets/{autocomplete-small.png → image/autocomplete-small.png} +0 -0
- /package/fireflysite/assets/{autocomplete.png → image/autocomplete.png} +0 -0
- /package/fireflysite/assets/{edit-time-error.png → image/edit-time-error.png} +0 -0
- /package/fireflysite/assets/{firefly-logo-notext.png → image/firefly-logo-notext.png} +0 -0
- /package/fireflysite/assets/{firefly-logo-yellow.png → image/firefly-logo-yellow.png} +0 -0
package/core/Float.ff
CHANGED
|
@@ -158,6 +158,21 @@ extend self: Float {
|
|
|
158
158
|
return Math.tanh(self_);
|
|
159
159
|
"""
|
|
160
160
|
|
|
161
|
+
isFinite(): Bool
|
|
162
|
+
target js sync """
|
|
163
|
+
return Number.isFinite(self_);
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
isNan(): Bool
|
|
167
|
+
target js sync """
|
|
168
|
+
return Number.isNaN(self_);
|
|
169
|
+
"""
|
|
170
|
+
|
|
171
|
+
isSafeInteger(): Bool
|
|
172
|
+
target js sync """
|
|
173
|
+
return Number.isSafeInteger(self_);
|
|
174
|
+
"""
|
|
175
|
+
|
|
161
176
|
}
|
|
162
177
|
|
|
163
178
|
hypot(values: List[Float]): Float
|
|
@@ -204,3 +219,13 @@ sqrt2(): Float
|
|
|
204
219
|
target js sync """
|
|
205
220
|
return Math.SQRT2;
|
|
206
221
|
"""
|
|
222
|
+
|
|
223
|
+
nan(): Float
|
|
224
|
+
target js sync """
|
|
225
|
+
return NaN;
|
|
226
|
+
"""
|
|
227
|
+
|
|
228
|
+
infinity(): Float
|
|
229
|
+
target js sync """
|
|
230
|
+
return Infinity;
|
|
231
|
+
"""
|
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
|
+
}
|