firefly-compiler 0.5.35 → 0.5.37

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 GrabException
96
98
  const GrabException$ = {GrabException: true};
97
99
  export function GrabException() {
@@ -106,7 +108,7 @@ const _1 = condition_;
106
108
  if(!_1) {
107
109
  return ff_core_Option.None()
108
110
  }
109
- if(_1) {
111
+ {
110
112
  return ff_core_Option.Some(body_())
111
113
  }
112
114
  }
@@ -120,7 +122,7 @@ if(!_1) {
120
122
 
121
123
  return
122
124
  }
123
- if(_1) {
125
+ {
124
126
  body_();
125
127
  {
126
128
  const condition_r_ = condition_;
@@ -150,7 +152,7 @@ if(_1.Some) {
150
152
  const v_ = _1.value_;
151
153
  return v_
152
154
  }
153
- if(_1.None) {
155
+ {
154
156
  {
155
157
  const body_r_ = body_;
156
158
  body_ = body_r_
@@ -168,13 +170,11 @@ return body_()
168
170
  }
169
171
 
170
172
  export function try_(body_) {
171
-
172
- try {
173
- return {Success: true, value_: body_()}
174
- } catch(e) {
175
- return {Failure: true, error_: e}
176
- }
177
-
173
+ try {
174
+ return ff_core_Try.Success(body_())
175
+ } catch(e_) {
176
+ return ff_core_Try.Failure(e_)
177
+ }
178
178
  }
179
179
 
180
180
  export function throw_(exception_, ff_core_Any_HasAnyTag$E) {
@@ -182,15 +182,13 @@ return ff_core_Core.throwAny_(ff_core_Any.toAny_(exception_, ff_core_Any_HasAnyT
182
182
  }
183
183
 
184
184
  export function throwAny_(exception_) {
185
- throw Object.assign(new Error(), {ffException: exception_})
185
+ const e_ = (new Error());
186
+ e_.ffException = exception_;
187
+ throw e_
186
188
  }
187
189
 
188
190
  export function panic_(message_) {
189
- throw new Error(message_)
190
- }
191
-
192
- export function same_(x_, y_) {
193
- return x_ === y_
191
+ throw (new Error(message_))
194
192
  }
195
193
 
196
194
  export async function if_$(condition_, body_, $task) {
@@ -199,7 +197,7 @@ const _1 = condition_;
199
197
  if(!_1) {
200
198
  return ff_core_Option.None()
201
199
  }
202
- if(_1) {
200
+ {
203
201
  return ff_core_Option.Some((await body_($task)))
204
202
  }
205
203
  }
@@ -213,7 +211,7 @@ if(!_1) {
213
211
 
214
212
  return
215
213
  }
216
- if(_1) {
214
+ {
217
215
  (await body_($task));
218
216
  {
219
217
  const condition_r_ = condition_;
@@ -243,7 +241,7 @@ if(_1.Some) {
243
241
  const v_ = _1.value_;
244
242
  return v_
245
243
  }
246
- if(_1.None) {
244
+ {
247
245
  {
248
246
  const body_r_ = body_;
249
247
  body_ = body_r_
@@ -261,13 +259,11 @@ return (await body_($task))
261
259
  }
262
260
 
263
261
  export async function try_$(body_, $task) {
264
-
265
- try {
266
- return {Success: true, value_: await body_($task)}
267
- } catch(e) {
268
- return {Failure: true, error_: e}
269
- }
270
-
262
+ try {
263
+ return ff_core_Try.Success((await body_($task)))
264
+ } catch(e_) {
265
+ return ff_core_Try.Failure(e_)
266
+ }
271
267
  }
272
268
 
273
269
  export async function throw_$(exception_, ff_core_Any_HasAnyTag$E, $task) {
@@ -275,15 +271,13 @@ return ff_core_Core.throwAny_(ff_core_Any.toAny_(exception_, ff_core_Any_HasAnyT
275
271
  }
276
272
 
277
273
  export async function throwAny_$(exception_, $task) {
278
- throw new Error('Function throwAny is missing on this target in async context.');
274
+ const e_ = (new Error());
275
+ e_.ffException = exception_;
276
+ throw e_
279
277
  }
280
278
 
281
279
  export async function panic_$(message_, $task) {
282
- throw new Error('Function panic is missing on this target in async context.');
283
- }
284
-
285
- export async function same_$(x_, y_, $task) {
286
- throw new Error('Function same is missing on this target in async context.');
280
+ throw (new Error(message_))
287
281
  }
288
282
 
289
283
 
@@ -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,42 +94,27 @@ 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 Crypto
96
98
 
97
99
 
98
100
 
99
101
 
100
102
  export function internalHashPassword_(system_, salt_, password_, iterations_) {
101
- throw new Error('Function internalHashPassword is missing on this target in sync context.');
103
+ ;
104
+ const keyMaterial_ = system_.subtle.importKey("raw", password_, {name: "PBKDF2"}, false, ["deriveBits"]);
105
+ const hashBuffer_ = system_.subtle.deriveBits({name: "PBKDF2", salt: salt_, iterations: iterations_, hash: "SHA-256"}, keyMaterial_, 256);
106
+ return (new DataView(hashBuffer_))
102
107
  }
103
108
 
104
109
  export async function internalHashPassword_$(system_, salt_, password_, iterations_, $task) {
105
-
106
- const keyMaterial = await crypto.subtle.importKey(
107
- 'raw',
108
- password_,
109
- {name: 'PBKDF2'},
110
- false,
111
- ['deriveBits']
112
- );
113
- const hashBuffer = await crypto.subtle.deriveBits(
114
- {
115
- name: 'PBKDF2',
116
- salt: salt_,
117
- iterations: iterations_,
118
- hash: 'SHA-256'
119
- },
120
- keyMaterial,
121
- 256
122
- );
123
- return new DataView(hashBuffer);
124
-
110
+ ff_core_Task.Task_throwIfAborted($task);
111
+ const keyMaterial_ = (await system_.subtle.importKey("raw", password_, {name: "PBKDF2"}, false, ["deriveBits"]));
112
+ const hashBuffer_ = (await system_.subtle.deriveBits({name: "PBKDF2", salt: salt_, iterations: iterations_, hash: "SHA-256"}, keyMaterial_, 256));
113
+ return (new DataView(hashBuffer_))
125
114
  }
126
115
 
127
116
  export function Crypto_randomUuid(self_) {
128
- throw new Error('Function Crypto_randomUuid is missing on this target in sync context.');
117
+ return self_.randomUUID()
129
118
  }
130
119
 
131
120
  export function Crypto_randomBuffer(self_, size_) {
@@ -135,15 +124,20 @@ return buffer_
135
124
  }
136
125
 
137
126
  export function Crypto_randomizeBuffer(self_, buffer_) {
138
- throw new Error('Function Crypto_randomizeBuffer is missing on this target in sync context.');
127
+ self_.getRandomValues((new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength)))
139
128
  }
140
129
 
141
130
  export function Crypto_hmacSha256(self_, key_, buffer_) {
142
- throw new Error('Function Crypto_hmacSha256 is missing on this target in sync context.');
131
+ ;
132
+ const cryptoKey_ = self_.subtle.importKey("raw", key_, {name: "HMAC", hash: {name: "SHA-256"}}, false, ["sign"]);
133
+ const signature_ = self_.subtle.sign("HMAC", cryptoKey_, buffer_);
134
+ return (new DataView(signature_))
143
135
  }
144
136
 
145
137
  export function Crypto_sha256(self_, buffer_) {
146
- throw new Error('Function Crypto_sha256 is missing on this target in sync context.');
138
+ ;
139
+ const hash_ = self_.subtle.digest("SHA-256", buffer_);
140
+ return (new DataView(hash_))
147
141
  }
148
142
 
149
143
  export function Crypto_hashPassword(self_, password_, iterations_ = 600000) {
@@ -188,9 +182,7 @@ return (v_ === 0)
188
182
  }
189
183
 
190
184
  export async function Crypto_randomUuid$(self_, $task) {
191
-
192
- return self_.randomUUID();
193
-
185
+ return self_.randomUUID()
194
186
  }
195
187
 
196
188
  export async function Crypto_randomBuffer$(self_, size_, $task) {
@@ -200,34 +192,20 @@ return buffer_
200
192
  }
201
193
 
202
194
  export async function Crypto_randomizeBuffer$(self_, buffer_, $task) {
203
-
204
- self_.getRandomValues(new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength));
205
-
195
+ self_.getRandomValues((new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength)))
206
196
  }
207
197
 
208
198
  export async function Crypto_hmacSha256$(self_, key_, buffer_, $task) {
209
-
210
- const cryptoKey = await self_.subtle.importKey(
211
- 'raw',
212
- key_,
213
- {name: 'HMAC', hash: {name: 'SHA-256'}},
214
- false,
215
- ['sign']
216
- );
217
- const signature = await self_.subtle.sign(
218
- 'HMAC',
219
- cryptoKey,
220
- buffer_
221
- );
222
- return new DataView(signature);
223
-
199
+ ff_core_Task.Task_throwIfAborted($task);
200
+ const cryptoKey_ = (await self_.subtle.importKey("raw", key_, {name: "HMAC", hash: {name: "SHA-256"}}, false, ["sign"]));
201
+ const signature_ = (await self_.subtle.sign("HMAC", cryptoKey_, buffer_));
202
+ return (new DataView(signature_))
224
203
  }
225
204
 
226
205
  export async function Crypto_sha256$(self_, buffer_, $task) {
227
-
228
- let hash = await self_.subtle.digest('SHA-256', buffer_);
229
- return new DataView(hash);
230
-
206
+ ff_core_Task.Task_throwIfAborted($task);
207
+ const hash_ = (await self_.subtle.digest("SHA-256", buffer_));
208
+ return (new DataView(hash_))
231
209
  }
232
210
 
233
211
  export async function Crypto_hashPassword$(self_, password_, iterations_ = 600000, $task) {
@@ -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 Duration
96
98
 
97
99
 
@@ -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
 
96
98
 
97
99
 
@@ -117,46 +119,46 @@ return true
117
119
 
118
120
  export const ff_core_Equal_Equal$ff_core_Bool_Bool = {
119
121
  equals_(x_, y_) {
120
- return x_ === y_
122
+ return (x_ === y_)
121
123
  },
122
124
  async equals_$(x_, y_, $task) {
123
- throw new Error('Function equals is missing on this target in async context.');
125
+ return (x_ === y_)
124
126
  }
125
127
  };
126
128
 
127
129
  export const ff_core_Equal_Equal$ff_core_Char_Char = {
128
130
  equals_(x_, y_) {
129
- return x_ === y_
131
+ return (x_ === y_)
130
132
  },
131
133
  async equals_$(x_, y_, $task) {
132
- throw new Error('Function equals is missing on this target in async context.');
134
+ return (x_ === y_)
133
135
  }
134
136
  };
135
137
 
136
138
  export const ff_core_Equal_Equal$ff_core_Int_Int = {
137
139
  equals_(x_, y_) {
138
- return x_ === y_
140
+ return (x_ === y_)
139
141
  },
140
142
  async equals_$(x_, y_, $task) {
141
- throw new Error('Function equals is missing on this target in async context.');
143
+ return (x_ === y_)
142
144
  }
143
145
  };
144
146
 
145
147
  export const ff_core_Equal_Equal$ff_core_Float_Float = {
146
148
  equals_(x_, y_) {
147
- return x_ === y_
149
+ return (x_ === y_)
148
150
  },
149
151
  async equals_$(x_, y_, $task) {
150
- throw new Error('Function equals is missing on this target in async context.');
152
+ return (x_ === y_)
151
153
  }
152
154
  };
153
155
 
154
156
  export const ff_core_Equal_Equal$ff_core_String_String = {
155
157
  equals_(x_, y_) {
156
- return x_ === y_
158
+ return (x_ === y_)
157
159
  },
158
160
  async equals_$(x_, y_, $task) {
159
- throw new Error('Function equals is missing on this target in async context.');
161
+ return (x_ === y_)
160
162
  }
161
163
  };
162
164
 
@@ -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 Error
96
98
 
97
99
 
@@ -106,39 +108,43 @@ throw self_
106
108
  }
107
109
 
108
110
  export function Error_name(self_) {
109
- return self_.name || ''
111
+ return ff_core_JsValue.JsValue_coalesce(self_.name, "", ff_core_JsValue.ff_core_JsValue_IsJsValue$ff_core_String_String)
110
112
  }
111
113
 
112
114
  export function Error_message(self_) {
113
- return self_.message || ''
115
+ return ff_core_JsValue.JsValue_coalesce(self_.message, "", ff_core_JsValue.ff_core_JsValue_IsJsValue$ff_core_String_String)
114
116
  }
115
117
 
116
118
  export function Error_stack(self_) {
117
- return self_.stack || ''
119
+ return ff_core_JsValue.JsValue_coalesce(self_.stack, "", ff_core_JsValue.ff_core_JsValue_IsJsValue$ff_core_String_String)
118
120
  }
119
121
 
120
122
  export function Error_exception(self_) {
121
- return self_.ffException ? ff_core_Option.Some(self_.ffException) : ff_core_Option.None()
123
+ if((!ff_core_JsValue.JsValue_isNullOrUndefined(self_.ffException))) {
124
+ return ff_core_Option.Some(self_.ffException)
125
+ } else return ff_core_Option.None()
122
126
  }
123
127
 
124
128
  export async function Error_rethrow$(self_, $task) {
125
- throw new Error('Function Error_rethrow is missing on this target in async context.');
129
+ throw self_
126
130
  }
127
131
 
128
132
  export async function Error_name$(self_, $task) {
129
- throw new Error('Function Error_name is missing on this target in async context.');
133
+ return ff_core_JsValue.JsValue_coalesce(self_.name, "", ff_core_JsValue.ff_core_JsValue_IsJsValue$ff_core_String_String)
130
134
  }
131
135
 
132
136
  export async function Error_message$(self_, $task) {
133
- throw new Error('Function Error_message is missing on this target in async context.');
137
+ return ff_core_JsValue.JsValue_coalesce(self_.message, "", ff_core_JsValue.ff_core_JsValue_IsJsValue$ff_core_String_String)
134
138
  }
135
139
 
136
140
  export async function Error_stack$(self_, $task) {
137
- throw new Error('Function Error_stack is missing on this target in async context.');
141
+ return ff_core_JsValue.JsValue_coalesce(self_.stack, "", ff_core_JsValue.ff_core_JsValue_IsJsValue$ff_core_String_String)
138
142
  }
139
143
 
140
144
  export async function Error_exception$(self_, $task) {
141
- throw new Error('Function Error_exception is missing on this target in async context.');
145
+ if((!ff_core_JsValue.JsValue_isNullOrUndefined(self_.ffException))) {
146
+ return ff_core_Option.Some(self_.ffException)
147
+ } else return ff_core_Option.None()
142
148
  }
143
149
 
144
150
 
@@ -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 FileHandle
96
98
 
97
99
 
@@ -102,81 +104,117 @@ import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
102
104
 
103
105
 
104
106
  export function FileHandle_close(self_) {
105
- throw new Error('Function FileHandle_close is missing on this target in sync context.');
107
+ self_.close()
106
108
  }
107
109
 
108
110
  export function FileHandle_read(self_, buffer_, offset_ = 0, length_ = ff_core_Option.None(), position_ = ff_core_Option.None()) {
109
- throw new Error('Function FileHandle_read is missing on this target in sync context.');
111
+ ;
112
+ self_.read(buffer_, {offset: offset_, length: ff_core_Option.Option_else(ff_core_Option.Option_map(length_, ((_w1) => {
113
+ return _w1
114
+ })), (() => {
115
+ return (void 0)
116
+ })), position: ff_core_Option.Option_else(ff_core_Option.Option_map(position_, ((_w1) => {
117
+ return _w1
118
+ })), (() => {
119
+ return (void 0)
120
+ }))})
110
121
  }
111
122
 
112
123
  export function FileHandle_write(self_, buffer_, offset_ = 0, length_ = ff_core_Option.None(), position_ = ff_core_Option.None()) {
113
- throw new Error('Function FileHandle_write is missing on this target in sync context.');
124
+ ;
125
+ self_.write(buffer_, offset_, ff_core_Option.Option_else(ff_core_Option.Option_map(length_, ((_w1) => {
126
+ return _w1
127
+ })), (() => {
128
+ return (void 0)
129
+ })), ff_core_Option.Option_else(ff_core_Option.Option_map(position_, ((_w1) => {
130
+ return _w1
131
+ })), (() => {
132
+ return (void 0)
133
+ })))
114
134
  }
115
135
 
116
136
  export function FileHandle_writeText(self_, text_, position_ = ff_core_Option.None(), encoding_ = "utf8") {
117
- throw new Error('Function FileHandle_writeText is missing on this target in sync context.');
137
+ ;
138
+ self_.write(text_, ff_core_Option.Option_else(ff_core_Option.Option_map(position_, ((_w1) => {
139
+ return _w1
140
+ })), (() => {
141
+ return (void 0)
142
+ })), encoding_)
118
143
  }
119
144
 
120
145
  export function FileHandle_writeLine(self_, text_, position_ = ff_core_Option.None(), encoding_ = "utf8") {
121
- throw new Error('Function FileHandle_writeLine is missing on this target in sync context.');
146
+ ff_core_FileHandle.FileHandle_writeText(self_, (text_ + "\n"), position_, encoding_)
122
147
  }
123
148
 
124
149
  export function FileHandle_truncate(self_, length_ = 0) {
125
- throw new Error('Function FileHandle_truncate is missing on this target in sync context.');
150
+ ;
151
+ self_.truncate(length_)
126
152
  }
127
153
 
128
154
  export function FileHandle_sync(self_, dataOnly_ = false) {
129
- throw new Error('Function FileHandle_sync is missing on this target in sync context.');
155
+ ;
156
+ if(dataOnly_) {
157
+ self_.datasync()
158
+ } else {
159
+ self_.sync()
160
+ }
130
161
  }
131
162
 
132
163
  export async function FileHandle_close$(self_, $task) {
133
-
134
- await self_.close()
135
-
164
+ (await self_.close())
136
165
  }
137
166
 
138
167
  export async function FileHandle_read$(self_, buffer_, offset_ = 0, length_ = ff_core_Option.None(), position_ = ff_core_Option.None(), $task) {
139
-
140
- ff_core_Task.Task_throwIfAborted($task)
141
- await self_.read(buffer_, {offset: offset_, length: length.value_, position: position.value_})
142
-
168
+ ff_core_Task.Task_throwIfAborted($task);
169
+ (await self_.read(buffer_, {offset: offset_, length: ff_core_Option.Option_else(ff_core_Option.Option_map(length_, ((_w1) => {
170
+ return _w1
171
+ })), (() => {
172
+ return (void 0)
173
+ })), position: ff_core_Option.Option_else(ff_core_Option.Option_map(position_, ((_w1) => {
174
+ return _w1
175
+ })), (() => {
176
+ return (void 0)
177
+ }))}))
143
178
  }
144
179
 
145
180
  export async function FileHandle_write$(self_, buffer_, offset_ = 0, length_ = ff_core_Option.None(), position_ = ff_core_Option.None(), $task) {
146
-
147
- ff_core_Task.Task_throwIfAborted($task)
148
- await self_.write(buffer_, offset_, length.value_, position.value_)
149
-
181
+ ff_core_Task.Task_throwIfAborted($task);
182
+ (await self_.write(buffer_, offset_, ff_core_Option.Option_else(ff_core_Option.Option_map(length_, ((_w1) => {
183
+ return _w1
184
+ })), (() => {
185
+ return (void 0)
186
+ })), ff_core_Option.Option_else(ff_core_Option.Option_map(position_, ((_w1) => {
187
+ return _w1
188
+ })), (() => {
189
+ return (void 0)
190
+ }))))
150
191
  }
151
192
 
152
193
  export async function FileHandle_writeText$(self_, text_, position_ = ff_core_Option.None(), encoding_ = "utf8", $task) {
153
-
154
- ff_core_Task.Task_throwIfAborted($task)
155
- await self_.write(text, position.value_, encoding_)
156
-
194
+ ff_core_Task.Task_throwIfAborted($task);
195
+ (await self_.write(text_, ff_core_Option.Option_else(ff_core_Option.Option_map(position_, ((_w1) => {
196
+ return _w1
197
+ })), (() => {
198
+ return (void 0)
199
+ })), encoding_))
157
200
  }
158
201
 
159
202
  export async function FileHandle_writeLine$(self_, text_, position_ = ff_core_Option.None(), encoding_ = "utf8", $task) {
160
-
161
- ff_core_Task.Task_throwIfAborted($task)
162
- await self_.write(text + "\
163
- ", position.value_, encoding_)
164
-
203
+ (await ff_core_FileHandle.FileHandle_writeText$(self_, (text_ + "\n"), position_, encoding_, $task))
165
204
  }
166
205
 
167
206
  export async function FileHandle_truncate$(self_, length_ = 0, $task) {
168
-
169
- ff_core_Task.Task_throwIfAborted($task)
170
- await self_.truncate(length_)
171
-
207
+ ff_core_Task.Task_throwIfAborted($task);
208
+ (await self_.truncate(length_))
172
209
  }
173
210
 
174
211
  export async function FileHandle_sync$(self_, dataOnly_ = false, $task) {
175
-
176
- ff_core_Task.Task_throwIfAborted($task)
177
- if(dataOnly_) await self_.datasync()
178
- else await self_.sync()
179
-
212
+ ff_core_Task.Task_throwIfAborted($task);
213
+ if(dataOnly_) {
214
+ (await self_.datasync())
215
+ } else {
216
+ (await self_.sync())
217
+ }
180
218
  }
181
219
 
182
220