firefly-compiler 0.5.35 → 0.5.36

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 (225) hide show
  1. package/.hintrc +4 -4
  2. package/.vscode/settings.json +4 -4
  3. package/bin/Release.ff +157 -154
  4. package/bin/firefly.mjs +1 -1
  5. package/compiler/Builder.ff +275 -277
  6. package/compiler/Compiler.ff +234 -233
  7. package/compiler/Dependencies.ff +186 -187
  8. package/compiler/DependencyLock.ff +17 -17
  9. package/compiler/Deriver.ff +23 -31
  10. package/compiler/Dictionaries.ff +1 -1
  11. package/compiler/Inference.ff +43 -20
  12. package/compiler/JsEmitter.ff +1437 -1282
  13. package/compiler/LspHook.ff +202 -202
  14. package/compiler/Main.ff +25 -24
  15. package/compiler/ModuleCache.ff +178 -178
  16. package/compiler/Parser.ff +36 -109
  17. package/compiler/Resolver.ff +5 -8
  18. package/compiler/Substitution.ff +1 -1
  19. package/compiler/Syntax.ff +1 -16
  20. package/compiler/Token.ff +9 -0
  21. package/compiler/Tokenizer.ff +4 -0
  22. package/compiler/Workspace.ff +88 -88
  23. package/core/.firefly/include/package.json +5 -5
  24. package/core/.firefly/package.ff +2 -2
  25. package/core/Any.ff +26 -30
  26. package/core/Array.ff +298 -265
  27. package/core/Atomic.ff +63 -64
  28. package/core/Box.ff +7 -7
  29. package/core/BrowserSystem.ff +40 -40
  30. package/core/Buffer.ff +185 -152
  31. package/core/BuildSystem.ff +156 -148
  32. package/core/Channel.ff +95 -92
  33. package/core/Char.ff +3 -2
  34. package/core/Core.ff +16 -23
  35. package/core/Crypto.ff +94 -96
  36. package/core/Equal.ff +41 -36
  37. package/core/Error.ff +15 -10
  38. package/core/FileHandle.ff +45 -37
  39. package/core/Float.ff +176 -200
  40. package/core/HttpClient.ff +142 -148
  41. package/core/Instant.ff +6 -8
  42. package/core/Int.ff +40 -24
  43. package/core/IntMap.ff +61 -39
  44. package/core/Js.ff +305 -0
  45. package/core/JsSystem.ff +135 -114
  46. package/core/JsValue.ff +303 -159
  47. package/core/Json.ff +423 -443
  48. package/core/List.ff +482 -486
  49. package/core/Lock.ff +108 -144
  50. package/core/Log.ff +25 -14
  51. package/core/NodeSystem.ff +198 -191
  52. package/core/Ordering.ff +160 -161
  53. package/core/Path.ff +377 -409
  54. package/core/Queue.ff +90 -0
  55. package/core/Random.ff +140 -134
  56. package/core/RbMap.ff +216 -216
  57. package/core/Serializable.ff +16 -13
  58. package/core/Show.ff +44 -43
  59. package/core/SourceLocation.ff +68 -68
  60. package/core/Stream.ff +1 -1
  61. package/core/String.ff +224 -202
  62. package/core/StringMap.ff +58 -36
  63. package/core/Task.ff +165 -149
  64. package/experimental/benchmarks/ListGrab.ff +23 -23
  65. package/experimental/benchmarks/ListGrab.java +55 -55
  66. package/experimental/benchmarks/Pyrotek45.ff +30 -30
  67. package/experimental/benchmarks/Pyrotek45.java +64 -64
  68. package/experimental/bidirectional/Bidi.ff +88 -88
  69. package/experimental/lines/Main.ff +40 -0
  70. package/experimental/random/Index.ff +53 -53
  71. package/experimental/random/Process.ff +120 -120
  72. package/experimental/random/RunLength.ff +65 -65
  73. package/experimental/random/Scrape.ff +51 -51
  74. package/experimental/random/Symbols.ff +73 -73
  75. package/experimental/random/Tensor.ff +52 -52
  76. package/experimental/random/Units.ff +36 -36
  77. package/experimental/s3/S3TestAuthorizationHeader.ff +39 -39
  78. package/experimental/s3/S3TestPut.ff +16 -16
  79. package/experimental/tests/TestJson.ff +26 -26
  80. package/firefly.sh +0 -0
  81. package/fireflysite/.firefly/package.ff +4 -4
  82. package/fireflysite/CommunityOverview.ff +20 -20
  83. package/fireflysite/CountingButtonDemo.ff +58 -58
  84. package/fireflysite/DocumentParser.ff +325 -331
  85. package/fireflysite/ExamplesOverview.ff +40 -40
  86. package/fireflysite/FrontPage.ff +344 -344
  87. package/fireflysite/GettingStarted.ff +45 -45
  88. package/fireflysite/Guide.ff +456 -456
  89. package/fireflysite/Main.ff +163 -152
  90. package/fireflysite/MatchingPasswordsDemo.ff +82 -82
  91. package/fireflysite/PackagesOverview.ff +49 -49
  92. package/fireflysite/PostgresqlDemo.ff +34 -34
  93. package/fireflysite/ReferenceAll.ff +18 -18
  94. package/fireflysite/ReferenceIntroduction.ff +11 -11
  95. package/fireflysite/Styles.ff +567 -567
  96. package/fireflysite/Test.ff +121 -62
  97. package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -209
  98. package/fireflysite/assets/markdown/reference/EmittedJavascript.md +65 -65
  99. package/fireflysite/assets/markdown/reference/Exceptions.md +101 -101
  100. package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +364 -364
  101. package/fireflysite/assets/markdown/reference/JavascriptInterop.md +235 -172
  102. package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -162
  103. package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -48
  104. package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -224
  105. package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -86
  106. package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -99
  107. package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -100
  108. package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -184
  109. package/fireflysite/assets/markdown/scratch/ControlFlow.md +136 -136
  110. package/fireflysite/assets/markdown/scratch/Toc.md +40 -40
  111. package/lsp/.firefly/package.ff +1 -1
  112. package/lsp/CompletionHandler.ff +827 -827
  113. package/lsp/Handler.ff +714 -714
  114. package/lsp/HoverHandler.ff +79 -79
  115. package/lsp/LanguageServer.ff +272 -272
  116. package/lsp/SignatureHelpHandler.ff +55 -55
  117. package/lsp/SymbolHandler.ff +181 -181
  118. package/lsp/TestReferences.ff +17 -17
  119. package/lsp/TestReferencesCase.ff +7 -7
  120. package/lsp/stderr.txt +1 -1
  121. package/lsp/stdout.txt +34 -34
  122. package/lux/.firefly/package.ff +1 -1
  123. package/lux/Css.ff +648 -648
  124. package/lux/CssTest.ff +48 -48
  125. package/lux/Lux.ff +608 -617
  126. package/lux/LuxEvent.ff +79 -116
  127. package/lux/Main.ff +123 -123
  128. package/lux/Main2.ff +143 -143
  129. package/lux/TestDry.ff +28 -28
  130. package/output/js/ff/compiler/Builder.mjs +72 -71
  131. package/output/js/ff/compiler/Compiler.mjs +19 -13
  132. package/output/js/ff/compiler/Dependencies.mjs +8 -7
  133. package/output/js/ff/compiler/DependencyLock.mjs +6 -4
  134. package/output/js/ff/compiler/Deriver.mjs +26 -24
  135. package/output/js/ff/compiler/Dictionaries.mjs +14 -18
  136. package/output/js/ff/compiler/Environment.mjs +6 -4
  137. package/output/js/ff/compiler/Inference.mjs +238 -164
  138. package/output/js/ff/compiler/JsEmitter.mjs +1160 -350
  139. package/output/js/ff/compiler/JsImporter.mjs +20 -18
  140. package/output/js/ff/compiler/LspHook.mjs +12 -10
  141. package/output/js/ff/compiler/Main.mjs +61 -41
  142. package/output/js/ff/compiler/ModuleCache.mjs +10 -8
  143. package/output/js/ff/compiler/Parser.mjs +153 -669
  144. package/output/js/ff/compiler/Patterns.mjs +12 -10
  145. package/output/js/ff/compiler/Resolver.mjs +52 -78
  146. package/output/js/ff/compiler/Substitution.mjs +12 -16
  147. package/output/js/ff/compiler/Syntax.mjs +50 -341
  148. package/output/js/ff/compiler/Token.mjs +126 -4
  149. package/output/js/ff/compiler/Tokenizer.mjs +62 -52
  150. package/output/js/ff/compiler/Unification.mjs +74 -90
  151. package/output/js/ff/compiler/Wildcards.mjs +4 -2
  152. package/output/js/ff/compiler/Workspace.mjs +26 -20
  153. package/output/js/ff/core/Any.mjs +20 -20
  154. package/output/js/ff/core/Array.mjs +268 -175
  155. package/output/js/ff/core/AssetSystem.mjs +8 -6
  156. package/output/js/ff/core/Atomic.mjs +84 -52
  157. package/output/js/ff/core/Bool.mjs +6 -4
  158. package/output/js/ff/core/BrowserSystem.mjs +38 -29
  159. package/output/js/ff/core/Buffer.mjs +285 -133
  160. package/output/js/ff/core/BuildSystem.mjs +36 -56
  161. package/output/js/ff/core/Channel.mjs +250 -97
  162. package/output/js/ff/core/Char.mjs +5 -3
  163. package/output/js/ff/core/Core.mjs +28 -34
  164. package/output/js/ff/core/Crypto.mjs +30 -52
  165. package/output/js/ff/core/Duration.mjs +4 -2
  166. package/output/js/ff/core/Equal.mjs +14 -12
  167. package/output/js/ff/core/Error.mjs +17 -11
  168. package/output/js/ff/core/FileHandle.mjs +76 -38
  169. package/output/js/ff/core/Float.mjs +92 -160
  170. package/output/js/ff/core/HttpClient.mjs +208 -76
  171. package/output/js/ff/core/Instant.mjs +8 -10
  172. package/output/js/ff/core/Int.mjs +36 -26
  173. package/output/js/ff/core/IntMap.mjs +79 -33
  174. package/output/js/ff/core/Js.mjs +751 -0
  175. package/output/js/ff/core/JsSystem.mjs +54 -60
  176. package/output/js/ff/core/JsValue.mjs +294 -143
  177. package/output/js/ff/core/Json.mjs +443 -253
  178. package/output/js/ff/core/List.mjs +262 -214
  179. package/output/js/ff/core/Lock.mjs +156 -125
  180. package/output/js/ff/core/Log.mjs +20 -10
  181. package/output/js/ff/core/Map.mjs +10 -8
  182. package/output/js/ff/core/NodeSystem.mjs +189 -123
  183. package/output/js/ff/core/Nothing.mjs +4 -2
  184. package/output/js/ff/core/Option.mjs +40 -38
  185. package/output/js/ff/core/Ordering.mjs +26 -20
  186. package/output/js/ff/core/Pair.mjs +4 -2
  187. package/output/js/ff/core/Path.mjs +517 -315
  188. package/output/js/ff/core/Queue.mjs +306 -0
  189. package/output/js/ff/core/Random.mjs +141 -77
  190. package/output/js/ff/core/RbMap.mjs +36 -34
  191. package/output/js/ff/core/Serializable.mjs +44 -28
  192. package/output/js/ff/core/Set.mjs +6 -4
  193. package/output/js/ff/core/Show.mjs +8 -6
  194. package/output/js/ff/core/SourceLocation.mjs +4 -2
  195. package/output/js/ff/core/Stream.mjs +30 -50
  196. package/output/js/ff/core/String.mjs +263 -172
  197. package/output/js/ff/core/StringMap.mjs +77 -31
  198. package/output/js/ff/core/Task.mjs +91 -76
  199. package/output/js/ff/core/Try.mjs +20 -18
  200. package/output/js/ff/core/Unit.mjs +4 -2
  201. package/package.json +1 -1
  202. package/postgresql/Pg.ff +53 -59
  203. package/rpc/.firefly/package.ff +1 -1
  204. package/rpc/Rpc.ff +70 -70
  205. package/s3/.firefly/package.ff +1 -1
  206. package/s3/S3.ff +92 -94
  207. package/vscode/LICENSE.txt +21 -21
  208. package/vscode/Prepublish.ff +15 -15
  209. package/vscode/README.md +16 -16
  210. package/vscode/client/package-lock.json +544 -544
  211. package/vscode/client/package.json +22 -22
  212. package/vscode/client/src/extension.ts +104 -104
  213. package/vscode/icons/firefly-icon.svg +10 -10
  214. package/vscode/language-configuration.json +61 -61
  215. package/vscode/package-lock.json +3623 -3623
  216. package/vscode/package.json +1 -1
  217. package/vscode/snippets.json +241 -241
  218. package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
  219. package/webserver/.firefly/include/package.json +5 -5
  220. package/webserver/.firefly/package.ff +2 -2
  221. package/webserver/WebServer.ff +647 -685
  222. package/websocket/.firefly/package.ff +1 -1
  223. package/websocket/WebSocket.ff +100 -131
  224. package/core/UnsafeJs.ff +0 -42
  225. package/output/js/ff/core/UnsafeJs.mjs +0 -191
@@ -42,6 +42,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
42
42
 
43
43
  import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
44
44
 
45
+ import * as ff_core_Js from "../../ff/core/Js.mjs"
46
+
45
47
  import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
46
48
 
47
49
  import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
@@ -68,6 +70,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
68
70
 
69
71
  import * as ff_core_Path from "../../ff/core/Path.mjs"
70
72
 
73
+ import * as ff_core_Queue from "../../ff/core/Queue.mjs"
74
+
71
75
  import * as ff_core_Random from "../../ff/core/Random.mjs"
72
76
 
73
77
  import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
@@ -90,8 +94,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
90
94
 
91
95
  import * as ff_core_Unit from "../../ff/core/Unit.mjs"
92
96
 
93
- import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
94
-
95
97
  // type HttpClient
96
98
 
97
99
 
@@ -123,18 +125,21 @@ return {redirect_, referrer_, integrity_, mode_, credentials_, cache_};
123
125
 
124
126
 
125
127
  export function internalCheck_(fetchResponse_) {
126
-
127
- if(fetchResponse_.response === null) {
128
- throw new Error("Response closed");
129
- }
130
- if(!fetchResponse_.statusChecked && !fetchResponse_.response.ok) {
131
- throw new Error("Unchecked HTTP status code: " + fetchResponse_.response.status);
132
- }
133
-
128
+ if(ff_core_JsValue.JsValue_isNull(fetchResponse_.response)) {
129
+ throw (new Error("Response closed"))
130
+ };
131
+ if(((!fetchResponse_.statusChecked) && (!fetchResponse_.response.ok))) {
132
+ throw (new Error(("Unchecked HTTP status code: " + fetchResponse_.response.status)))
133
+ }
134
134
  }
135
135
 
136
136
  export async function internalCheck_$(fetchResponse_, $task) {
137
- throw new Error('Function internalCheck is missing on this target in async context.');
137
+ if(ff_core_JsValue.JsValue_isNull(fetchResponse_.response)) {
138
+ throw (new Error("Response closed"))
139
+ };
140
+ if(((!fetchResponse_.statusChecked) && (!fetchResponse_.response.ok))) {
141
+ throw (new Error(("Unchecked HTTP status code: " + fetchResponse_.response.status)))
142
+ }
138
143
  }
139
144
 
140
145
  export function HttpClient_get(self_, url_, headers_, body_) {
@@ -154,7 +159,82 @@ return ff_core_HttpClient.HttpClient_fetch(self_, "DELETE", url_, headers_, ff_c
154
159
  }
155
160
 
156
161
  export function HttpClient_fetch(self_, method_, url_, headers_ = [], payload_ = ff_core_Option.None(), options_ = ff_core_HttpClient.FetchOptions(), body_) {
157
- throw new Error('Function HttpClient_fetch is missing on this target in sync context.');
162
+ const fetchResponse_ = {response: null, statusChecked: false};
163
+ return ff_core_Js.withSignal_(((signal_) => {
164
+ try {
165
+ const fetchOptions_ = {headers: {}, signal: signal_, method: method_};
166
+ ff_core_List.List_each(headers_, ((_1) => {
167
+ {
168
+ const k_ = _1.first_;
169
+ const v_ = _1.second_;
170
+ fetchOptions_.headers[k_] = v_
171
+ return
172
+ }
173
+ }));
174
+ {
175
+ const if_o = payload_
176
+ if(if_o.Some) {
177
+ const v_ = if_o.value_;
178
+ fetchOptions_.body = v_
179
+ }
180
+ };
181
+ do {
182
+ const _1 = options_.redirect_;
183
+ if(_1.RedirectError) {
184
+ fetchOptions_.redirect = "error"
185
+ break
186
+ }
187
+ if(_1.RedirectFollow) {
188
+
189
+ break
190
+ }
191
+ {
192
+ fetchOptions_.redirect = "manual"
193
+ }
194
+ } while(false);
195
+ {
196
+ const if_o = options_.referrer_
197
+ if(if_o.Some) {
198
+ const v_ = if_o.value_;
199
+ fetchOptions_.referrer = v_
200
+ }
201
+ };
202
+ {
203
+ const if_o = options_.integrity_
204
+ if(if_o.Some) {
205
+ const v_ = if_o.value_;
206
+ fetchOptions_.integrity = v_
207
+ }
208
+ };
209
+ {
210
+ const if_o = options_.mode_
211
+ if(if_o.Some) {
212
+ const v_ = if_o.value_;
213
+ fetchOptions_.mode = v_
214
+ }
215
+ };
216
+ {
217
+ const if_o = options_.credentials_
218
+ if(if_o.Some) {
219
+ const v_ = if_o.value_;
220
+ fetchOptions_.credentials = v_
221
+ }
222
+ };
223
+ {
224
+ const if_o = options_.cache_
225
+ if(if_o.Some) {
226
+ const v_ = if_o.value_;
227
+ fetchOptions_.cache = v_
228
+ }
229
+ };
230
+ fetchResponse_.response = self_.fetch(url_, fetchOptions_);
231
+ const result_ = body_(fetchResponse_);
232
+ ff_core_HttpClient.internalCheck_(fetchResponse_);
233
+ return result_
234
+ } finally {
235
+ fetchResponse_.response = null
236
+ }
237
+ }))
158
238
  }
159
239
 
160
240
  export async function HttpClient_get$(self_, url_, headers_, body_, $task) {
@@ -174,112 +254,164 @@ return (await ff_core_HttpClient.HttpClient_fetch$(self_, "DELETE", url_, header
174
254
  }
175
255
 
176
256
  export async function HttpClient_fetch$(self_, method_, url_, headers_ = [], payload_ = ff_core_Option.None(), options_ = ff_core_HttpClient.FetchOptions(), body_, $task) {
177
-
178
- const fetchResponse = {response: null, statusChecked: false};
179
- try {
180
- const options = {headers: {}, signal: $task.controller.signal};
181
- options.method = method_;
182
- headers_.forEach(pair => {options.headers[pair.first_] = pair.second_});
183
- if(payload_.value_) options.body = payload_.value_;
184
- if(options_.redirect_.RedirectError) options.redirect = "error";
185
- else if(options_.redirect_.RedirectManual) options.redirect = "manual";
186
- if(options_.referrer_.value_) options.referrer = options_.referrer_.value_;
187
- if(options_.integrity_.value_) options.integrity = options_.integrity_.value_;
188
- if(options_.mode_.value_) options.mode = options_.mode_.value_;
189
- if(options_.credentials_.value_) options.credentials = options_.credentials_.value_;
190
- if(options_.cache_.value_) options.cache = options_.cache_.value_;
191
- fetchResponse.response = await self_.fetch(url_, options);
192
- const result = await body_(fetchResponse, $task);
193
- internalCheck_(fetchResponse);
194
- return result;
195
- } finally {
196
- fetchResponse.response = null;
197
- if($task.controller.signal.aborted) $task.controller = new AbortController()
198
- }
199
-
257
+ const fetchResponse_ = {response: null, statusChecked: false};
258
+ return (await ff_core_Js.withSignal_$((async (signal_, $task) => {
259
+ try {
260
+ const fetchOptions_ = {headers: {}, signal: signal_, method: method_};
261
+ ff_core_List.List_each(headers_, ((_1) => {
262
+ {
263
+ const k_ = _1.first_;
264
+ const v_ = _1.second_;
265
+ fetchOptions_.headers[k_] = v_
266
+ return
267
+ }
268
+ }));
269
+ {
270
+ const if_o = payload_
271
+ if(if_o.Some) {
272
+ const v_ = if_o.value_;
273
+ fetchOptions_.body = v_
274
+ }
275
+ };
276
+ do {
277
+ const _1 = options_.redirect_;
278
+ if(_1.RedirectError) {
279
+ fetchOptions_.redirect = "error"
280
+ break
281
+ }
282
+ if(_1.RedirectFollow) {
283
+
284
+ break
285
+ }
286
+ {
287
+ fetchOptions_.redirect = "manual"
288
+ }
289
+ } while(false);
290
+ {
291
+ const if_o = options_.referrer_
292
+ if(if_o.Some) {
293
+ const v_ = if_o.value_;
294
+ fetchOptions_.referrer = v_
295
+ }
296
+ };
297
+ {
298
+ const if_o = options_.integrity_
299
+ if(if_o.Some) {
300
+ const v_ = if_o.value_;
301
+ fetchOptions_.integrity = v_
302
+ }
303
+ };
304
+ {
305
+ const if_o = options_.mode_
306
+ if(if_o.Some) {
307
+ const v_ = if_o.value_;
308
+ fetchOptions_.mode = v_
309
+ }
310
+ };
311
+ {
312
+ const if_o = options_.credentials_
313
+ if(if_o.Some) {
314
+ const v_ = if_o.value_;
315
+ fetchOptions_.credentials = v_
316
+ }
317
+ };
318
+ {
319
+ const if_o = options_.cache_
320
+ if(if_o.Some) {
321
+ const v_ = if_o.value_;
322
+ fetchOptions_.cache = v_
323
+ }
324
+ };
325
+ fetchResponse_.response = (await self_.fetch(url_, fetchOptions_));
326
+ const result_ = (await (await body_(fetchResponse_, $task)));
327
+ ff_core_HttpClient.internalCheck_(fetchResponse_);
328
+ return result_
329
+ } finally {
330
+ fetchResponse_.response = null
331
+ }
332
+ }), $task))
200
333
  }
201
334
 
202
335
  export function FetchResponse_ok(self_) {
203
- throw new Error('Function FetchResponse_ok is missing on this target in sync context.');
336
+ self_.statusChecked = true;
337
+ ff_core_HttpClient.internalCheck_(self_);
338
+ return self_.response.ok
204
339
  }
205
340
 
206
341
  export function FetchResponse_status(self_) {
207
- throw new Error('Function FetchResponse_status is missing on this target in sync context.');
342
+ self_.statusChecked = true;
343
+ ff_core_HttpClient.internalCheck_(self_);
344
+ return self_.response.status
208
345
  }
209
346
 
210
347
  export function FetchResponse_statusText(self_) {
211
- throw new Error('Function FetchResponse_statusText is missing on this target in sync context.');
348
+ self_.statusChecked = true;
349
+ ff_core_HttpClient.internalCheck_(self_);
350
+ return self_.response.statusText
212
351
  }
213
352
 
214
353
  export function FetchResponse_header(self_, name_) {
215
- throw new Error('Function FetchResponse_header is missing on this target in sync context.');
354
+ ff_core_HttpClient.internalCheck_(self_);
355
+ const header_ = self_.response.headers.get(name_);
356
+ if((!ff_core_JsValue.JsValue_isNullOrUndefined(header_))) {
357
+ return ff_core_Option.Some(header_)
358
+ } else return ff_core_Option.None()
216
359
  }
217
360
 
218
361
  export function FetchResponse_readText(self_) {
219
- throw new Error('Function FetchResponse_readText is missing on this target in sync context.');
362
+ ff_core_HttpClient.internalCheck_(self_);
363
+ return self_.response.text()
220
364
  }
221
365
 
222
366
  export function FetchResponse_readJson(self_) {
223
- throw new Error('Function FetchResponse_readJson is missing on this target in sync context.');
367
+ ff_core_HttpClient.internalCheck_(self_);
368
+ return self_.response.json()
224
369
  }
225
370
 
226
371
  export function FetchResponse_readBuffer(self_) {
227
- throw new Error('Function FetchResponse_readBuffer is missing on this target in sync context.');
372
+ ff_core_HttpClient.internalCheck_(self_);
373
+ return (new DataView(self_.response.arrayBuffer()))
228
374
  }
229
375
 
230
376
  export async function FetchResponse_ok$(self_, $task) {
231
-
232
- self_.statusChecked = true;
233
- internalCheck_(self_);
234
- return self_.response.ok;
235
-
377
+ self_.statusChecked = true;
378
+ (await ff_core_HttpClient.internalCheck_$(self_, $task));
379
+ return self_.response.ok
236
380
  }
237
381
 
238
382
  export async function FetchResponse_status$(self_, $task) {
239
-
240
- self_.statusChecked = true;
241
- internalCheck_(self_);
242
- return self_.response.status;
243
-
383
+ self_.statusChecked = true;
384
+ (await ff_core_HttpClient.internalCheck_$(self_, $task));
385
+ return self_.response.status
244
386
  }
245
387
 
246
388
  export async function FetchResponse_statusText$(self_, $task) {
247
-
248
- self_.statusChecked = true;
249
- internalCheck_(self_);
250
- return self_.response.statusText;
251
-
389
+ self_.statusChecked = true;
390
+ (await ff_core_HttpClient.internalCheck_$(self_, $task));
391
+ return self_.response.statusText
252
392
  }
253
393
 
254
394
  export async function FetchResponse_header$(self_, name_, $task) {
255
-
256
- internalCheck_(self_);
257
- const header = self_.response.headers.get(name_);
258
- return header != null
259
- ? ff_core_Option.Some(header)
260
- : ff_core_Option.None();
261
-
395
+ (await ff_core_HttpClient.internalCheck_$(self_, $task));
396
+ const header_ = self_.response.headers.get(name_);
397
+ if((!ff_core_JsValue.JsValue_isNullOrUndefined(header_))) {
398
+ return ff_core_Option.Some(header_)
399
+ } else return ff_core_Option.None()
262
400
  }
263
401
 
264
402
  export async function FetchResponse_readText$(self_, $task) {
265
-
266
- internalCheck_(self_);
267
- return await self_.response.text();
268
-
403
+ (await ff_core_HttpClient.internalCheck_$(self_, $task));
404
+ return (await self_.response.text())
269
405
  }
270
406
 
271
407
  export async function FetchResponse_readJson$(self_, $task) {
272
-
273
- internalCheck_(self_);
274
- return await self_.response.json();
275
-
408
+ (await ff_core_HttpClient.internalCheck_$(self_, $task));
409
+ return (await self_.response.json())
276
410
  }
277
411
 
278
412
  export async function FetchResponse_readBuffer$(self_, $task) {
279
-
280
- internalCheck_(self_);
281
- return new DataView(await self_.response.arrayBuffer());
282
-
413
+ (await ff_core_HttpClient.internalCheck_$(self_, $task));
414
+ return (new DataView((await self_.response.arrayBuffer())))
283
415
  }
284
416
 
285
417
 
@@ -42,6 +42,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
42
42
 
43
43
  import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
44
44
 
45
+ import * as ff_core_Js from "../../ff/core/Js.mjs"
46
+
45
47
  import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
46
48
 
47
49
  import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
@@ -68,6 +70,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
68
70
 
69
71
  import * as ff_core_Path from "../../ff/core/Path.mjs"
70
72
 
73
+ import * as ff_core_Queue from "../../ff/core/Queue.mjs"
74
+
71
75
  import * as ff_core_Random from "../../ff/core/Random.mjs"
72
76
 
73
77
  import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
@@ -90,8 +94,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
90
94
 
91
95
  import * as ff_core_Unit from "../../ff/core/Unit.mjs"
92
96
 
93
- import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
94
-
95
97
  // newtype Instant
96
98
 
97
99
 
@@ -108,9 +110,7 @@ return ff_core_Option.Some(ff_core_Instant.internalParseDate_(date_))
108
110
  }
109
111
 
110
112
  export function internalParseDate_(date_) {
111
-
112
- return Date.parse(date_) * 0.001;
113
-
113
+ return (Date.parse(date_) * 0.001)
114
114
  }
115
115
 
116
116
  export async function fromIso_$(date_, $task) {
@@ -125,7 +125,7 @@ return ff_core_Option.Some(ff_core_Instant.internalParseDate_(date_))
125
125
  }
126
126
 
127
127
  export async function internalParseDate_$(date_, $task) {
128
- throw new Error('Function internalParseDate is missing on this target in async context.');
128
+ return (Date.parse(date_) * 0.001)
129
129
  }
130
130
 
131
131
  export function Instant_add(self_, duration_) {
@@ -133,9 +133,7 @@ return (self_ + duration_)
133
133
  }
134
134
 
135
135
  export function Instant_toIso(self_) {
136
-
137
- return new Date(self_ * 1000).toISOString();
138
-
136
+ return (new Date((self_ * 1000.0))).toISOString()
139
137
  }
140
138
 
141
139
  export async function Instant_add$(self_, duration_, $task) {
@@ -143,7 +141,7 @@ return (self_ + duration_)
143
141
  }
144
142
 
145
143
  export async function Instant_toIso$(self_, $task) {
146
- throw new Error('Function Instant_toIso is missing on this target in async context.');
144
+ return (new Date((self_ * 1000.0))).toISOString()
147
145
  }
148
146
 
149
147
 
@@ -42,6 +42,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
42
42
 
43
43
  import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
44
44
 
45
+ import * as ff_core_Js from "../../ff/core/Js.mjs"
46
+
45
47
  import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
46
48
 
47
49
  import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
@@ -68,6 +70,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
68
70
 
69
71
  import * as ff_core_Path from "../../ff/core/Path.mjs"
70
72
 
73
+ import * as ff_core_Queue from "../../ff/core/Queue.mjs"
74
+
71
75
  import * as ff_core_Random from "../../ff/core/Random.mjs"
72
76
 
73
77
  import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
@@ -90,8 +94,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
90
94
 
91
95
  import * as ff_core_Unit from "../../ff/core/Unit.mjs"
92
96
 
93
- import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
94
-
95
97
  // type Int
96
98
 
97
99
 
@@ -110,31 +112,35 @@ return self_
110
112
  }
111
113
 
112
114
  export function Int_bitNot(self_) {
113
- return ~self_;
115
+ return (~self_)
114
116
  }
115
117
 
116
118
  export function Int_bitOr(self_, that_) {
117
- return self_ | that_;
119
+ return (self_ | that_)
118
120
  }
119
121
 
120
122
  export function Int_bitAnd(self_, that_) {
121
- return self_ & that_;
123
+ return (self_ & that_)
122
124
  }
123
125
 
124
126
  export function Int_bitXor(self_, that_) {
125
- return self_ ^ that_;
127
+ return (self_ ^ that_)
126
128
  }
127
129
 
128
130
  export function Int_bitLeft(self_, bits_) {
129
- return self_ << bits_;
131
+ return (self_ << bits_)
130
132
  }
131
133
 
132
- export function Int_bitRight(self_, bits_, signed_ = true) {
133
- return signed_ ? self_ >> bits_ : self_ >>> bits_;
134
+ export function Int_bitRight(self_, bits_) {
135
+ return (self_ >> bits_)
136
+ }
137
+
138
+ export function Int_bitRightUnsigned(self_, bits_) {
139
+ return (self_ >>> bits_)
134
140
  }
135
141
 
136
142
  export function Int_bitLeadingZeros(self_) {
137
- return Math.clz32(self_);
143
+ return Math.clz32(self_)
138
144
  }
139
145
 
140
146
  export function Int_to(self_, inclusiveEnd_) {
@@ -166,11 +172,11 @@ return Math.max(self_, that_)
166
172
  }
167
173
 
168
174
  export function Int_clamp(self_, from_, to_) {
169
- return Math.min(Math.max(self_, from_), to_)
175
+ return ff_core_Int.Int_min(ff_core_Int.Int_max(self_, from_), to_)
170
176
  }
171
177
 
172
178
  export function Int_pad(self_, padding_) {
173
- return ff_core_String.String_padStart(("" + self_), ff_core_String.String_size(padding_), padding_)
179
+ return ff_core_String.String_padStart(("" + self_), padding_.length, padding_)
174
180
  }
175
181
 
176
182
  export function Int_div(self_, divisor_) {
@@ -182,39 +188,43 @@ return ff_core_Float.Float_toInt((self_ % divisor_))
182
188
  }
183
189
 
184
190
  export async function Int_abs$(self_, $task) {
185
- throw new Error('Function Int_abs is missing on this target in async context.');
191
+ return Math.abs(self_)
186
192
  }
187
193
 
188
194
  export async function Int_toFloat$(self_, $task) {
189
- throw new Error('Function Int_toFloat is missing on this target in async context.');
195
+ return self_
190
196
  }
191
197
 
192
198
  export async function Int_bitNot$(self_, $task) {
193
- throw new Error('Function Int_bitNot is missing on this target in async context.');
199
+ return (~self_)
194
200
  }
195
201
 
196
202
  export async function Int_bitOr$(self_, that_, $task) {
197
- throw new Error('Function Int_bitOr is missing on this target in async context.');
203
+ return (self_ | that_)
198
204
  }
199
205
 
200
206
  export async function Int_bitAnd$(self_, that_, $task) {
201
- throw new Error('Function Int_bitAnd is missing on this target in async context.');
207
+ return (self_ & that_)
202
208
  }
203
209
 
204
210
  export async function Int_bitXor$(self_, that_, $task) {
205
- throw new Error('Function Int_bitXor is missing on this target in async context.');
211
+ return (self_ ^ that_)
206
212
  }
207
213
 
208
214
  export async function Int_bitLeft$(self_, bits_, $task) {
209
- throw new Error('Function Int_bitLeft is missing on this target in async context.');
215
+ return (self_ << bits_)
216
+ }
217
+
218
+ export async function Int_bitRight$(self_, bits_, $task) {
219
+ return (self_ >> bits_)
210
220
  }
211
221
 
212
- export async function Int_bitRight$(self_, bits_, signed_ = true, $task) {
213
- throw new Error('Function Int_bitRight is missing on this target in async context.');
222
+ export async function Int_bitRightUnsigned$(self_, bits_, $task) {
223
+ return (self_ >>> bits_)
214
224
  }
215
225
 
216
226
  export async function Int_bitLeadingZeros$(self_, $task) {
217
- throw new Error('Function Int_bitLeadingZeros is missing on this target in async context.');
227
+ return Math.clz32(self_)
218
228
  }
219
229
 
220
230
  export async function Int_to$(self_, inclusiveEnd_, $task) {
@@ -238,19 +248,19 @@ return ff_core_Array.Array_drain(result_)
238
248
  }
239
249
 
240
250
  export async function Int_min$(self_, that_, $task) {
241
- throw new Error('Function Int_min is missing on this target in async context.');
251
+ return Math.min(self_, that_)
242
252
  }
243
253
 
244
254
  export async function Int_max$(self_, that_, $task) {
245
- throw new Error('Function Int_max is missing on this target in async context.');
255
+ return Math.max(self_, that_)
246
256
  }
247
257
 
248
258
  export async function Int_clamp$(self_, from_, to_, $task) {
249
- throw new Error('Function Int_clamp is missing on this target in async context.');
259
+ return ff_core_Int.Int_min(ff_core_Int.Int_max(self_, from_), to_)
250
260
  }
251
261
 
252
262
  export async function Int_pad$(self_, padding_, $task) {
253
- return ff_core_String.String_padStart(("" + self_), ff_core_String.String_size(padding_), padding_)
263
+ return ff_core_String.String_padStart(("" + self_), padding_.length, padding_)
254
264
  }
255
265
 
256
266
  export async function Int_div$(self_, divisor_, $task) {