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 AssetSystem
96
98
  export function AssetSystem(files_) {
97
99
  return {files_};
@@ -125,7 +127,7 @@ const streams_ = ff_core_List.List_collect(ff_core_Map.Map_pairs(self_.files_, f
125
127
  const p_ = _1.first_;
126
128
  const s_ = _1.second_;
127
129
  if(ff_core_String.String_startsWith(p_, prefix_, 0)) {
128
- return ff_core_Option.Some(ff_core_Pair.Pair(ff_core_String.String_dropFirst(p_, (ff_core_String.String_size(prefix_) - 1)), s_))
130
+ return ff_core_Option.Some(ff_core_Pair.Pair(ff_core_String.String_dropFirst(p_, (prefix_.length - 1)), s_))
129
131
  }
130
132
  }
131
133
  {
@@ -153,7 +155,7 @@ return ff_core_List.List_distinct(ff_core_List.List_collect(ff_core_Map.Map_pair
153
155
  {
154
156
  const p_ = _1.first_;
155
157
  if(ff_core_String.String_startsWith(p_, prefix_, 0)) {
156
- return ff_core_Option.Some(ff_core_String.String_takeWhile(ff_core_String.String_dropFirst(p_, ff_core_String.String_size(prefix_)), ((_w1) => {
158
+ return ff_core_Option.Some(ff_core_String.String_takeWhile(ff_core_String.String_dropFirst(p_, prefix_.length), ((_w1) => {
157
159
  return (_w1 !== 47)
158
160
  })))
159
161
  return
@@ -203,7 +205,7 @@ const streams_ = ff_core_List.List_collect(ff_core_Map.Map_pairs(self_.files_, f
203
205
  const p_ = _1.first_;
204
206
  const s_ = _1.second_;
205
207
  if(ff_core_String.String_startsWith(p_, prefix_, 0)) {
206
- return ff_core_Option.Some(ff_core_Pair.Pair(ff_core_String.String_dropFirst(p_, (ff_core_String.String_size(prefix_) - 1)), s_))
208
+ return ff_core_Option.Some(ff_core_Pair.Pair(ff_core_String.String_dropFirst(p_, (prefix_.length - 1)), s_))
207
209
  }
208
210
  }
209
211
  {
@@ -231,7 +233,7 @@ return ff_core_List.List_distinct(ff_core_List.List_collect(ff_core_Map.Map_pair
231
233
  {
232
234
  const p_ = _1.first_;
233
235
  if(ff_core_String.String_startsWith(p_, prefix_, 0)) {
234
- return ff_core_Option.Some(ff_core_String.String_takeWhile(ff_core_String.String_dropFirst(p_, ff_core_String.String_size(prefix_)), ((_w1) => {
236
+ return ff_core_Option.Some(ff_core_String.String_takeWhile(ff_core_String.String_dropFirst(p_, prefix_.length), ((_w1) => {
235
237
  return (_w1 !== 47)
236
238
  })))
237
239
  return
@@ -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,103 +94,131 @@ 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 Atomic
96
98
 
97
99
 
98
100
 
99
101
 
100
102
  export function new_(value_) {
101
-
102
- return {value: value_}
103
-
103
+ return {value: value_}
104
104
  }
105
105
 
106
106
  export async function new_$(value_, $task) {
107
- throw new Error('Function new is missing on this target in async context.');
107
+ return {value: value_}
108
108
  }
109
109
 
110
110
  export function Atomic_modify(self_, body_) {
111
-
112
- return self_.value = body_(self_.value)
113
-
111
+ if(false) {
112
+ let currentValue_ = self_.value;
113
+ let newValue_ = body_(self_.value);
114
+ while((currentValue_ !== self_.value)) {
115
+ currentValue_ = self_.value;
116
+ newValue_ = body_(self_.value)
117
+ };
118
+ self_.value = newValue_;
119
+ return newValue_
120
+ } else {
121
+ const newValue_ = body_(self_.value);
122
+ self_.value = newValue_;
123
+ return newValue_
124
+ }
114
125
  }
115
126
 
116
127
  export function Atomic_getAndModify(self_, body_) {
117
-
118
- const currentValue = self_.value
119
- self_.value = body_(currentValue)
120
- return currentValue
121
-
128
+ let currentValue_ = self_.value;
129
+ if(false) {
130
+ let newValue_ = body_(self_.value);
131
+ while((currentValue_ !== self_.value)) {
132
+ currentValue_ = self_.value;
133
+ newValue_ = body_(self_.value)
134
+ };
135
+ self_.value = newValue_;
136
+ return currentValue_
137
+ } else {
138
+ const newValue_ = body_(self_.value);
139
+ self_.value = newValue_;
140
+ return currentValue_
141
+ }
122
142
  }
123
143
 
124
144
  export function Atomic_get(self_) {
125
-
126
- return self_.value
127
-
145
+ return self_.value
128
146
  }
129
147
 
130
148
  export function Atomic_set(self_, value_) {
131
-
132
- self_.value = value
133
-
149
+ self_.value = value_
134
150
  }
135
151
 
136
152
  export function Atomic_getAndSet(self_, newValue_) {
137
-
138
- const currentValue = self_.value
139
- self_.value = newValue
140
- return currentValue
141
-
153
+ const currentValue_ = self_.value;
154
+ self_.value = newValue_;
155
+ return currentValue_
142
156
  }
143
157
 
144
158
  export function Atomic_compareAndSet(self_, currentValue_, newValue_) {
145
-
146
- if(self_.value !== currentValue) return false
147
- self_.value = newValue
148
- return true
149
-
159
+ if((self_.value !== currentValue_)) {
160
+ return false
161
+ } else {
162
+ self_.value = newValue_;
163
+ return true
164
+ }
150
165
  }
151
166
 
152
167
  export async function Atomic_modify$(self_, body_, $task) {
153
-
154
- let currentValue, newValue
155
- do {
156
- currentValue = self_.value
157
- newValue = await body_(currentValue)
158
- } while(currentValue !== self_.value)
159
- self_.value = newValue
160
- return newValue
161
-
168
+ if(true) {
169
+ let currentValue_ = self_.value;
170
+ let newValue_ = (await body_(self_.value, $task));
171
+ while((currentValue_ !== self_.value)) {
172
+ currentValue_ = self_.value;
173
+ newValue_ = (await body_(self_.value, $task))
174
+ };
175
+ self_.value = newValue_;
176
+ return newValue_
177
+ } else {
178
+ const newValue_ = (await body_(self_.value, $task));
179
+ self_.value = newValue_;
180
+ return newValue_
181
+ }
162
182
  }
163
183
 
164
184
  export async function Atomic_getAndModify$(self_, body_, $task) {
165
-
166
- let currentValue, newValue
167
- do {
168
- currentValue = self_.value
169
- newValue = await body_(currentValue)
170
- } while(currentValue !== self_.value)
171
- self_.value = newValue
172
- return currentValue
173
-
185
+ let currentValue_ = self_.value;
186
+ if(true) {
187
+ let newValue_ = (await body_(self_.value, $task));
188
+ while((currentValue_ !== self_.value)) {
189
+ currentValue_ = self_.value;
190
+ newValue_ = (await body_(self_.value, $task))
191
+ };
192
+ self_.value = newValue_;
193
+ return currentValue_
194
+ } else {
195
+ const newValue_ = (await body_(self_.value, $task));
196
+ self_.value = newValue_;
197
+ return currentValue_
198
+ }
174
199
  }
175
200
 
176
201
  export async function Atomic_get$(self_, $task) {
177
- throw new Error('Function Atomic_get is missing on this target in async context.');
202
+ return self_.value
178
203
  }
179
204
 
180
205
  export async function Atomic_set$(self_, value_, $task) {
181
- throw new Error('Function Atomic_set is missing on this target in async context.');
206
+ self_.value = value_
182
207
  }
183
208
 
184
209
  export async function Atomic_getAndSet$(self_, newValue_, $task) {
185
- throw new Error('Function Atomic_getAndSet is missing on this target in async context.');
210
+ const currentValue_ = self_.value;
211
+ self_.value = newValue_;
212
+ return currentValue_
186
213
  }
187
214
 
188
215
  export async function Atomic_compareAndSet$(self_, currentValue_, newValue_, $task) {
189
- throw new Error('Function Atomic_compareAndSet is missing on this target in async context.');
216
+ if((self_.value !== currentValue_)) {
217
+ return false
218
+ } else {
219
+ self_.value = newValue_;
220
+ return true
221
+ }
190
222
  }
191
223
 
192
224
 
@@ -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 Bool
96
98
  const False$ = {False: true};
97
99
  export function False() {
@@ -114,7 +116,7 @@ const _1 = self_;
114
116
  if(!_1) {
115
117
  return 0
116
118
  }
117
- if(_1) {
119
+ {
118
120
  return 1
119
121
  }
120
122
  }
@@ -126,7 +128,7 @@ const _1 = self_;
126
128
  if(!_1) {
127
129
  return 0
128
130
  }
129
- if(_1) {
131
+ {
130
132
  return 1
131
133
  }
132
134
  }
@@ -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 BrowserSystem
96
98
 
97
99
 
@@ -102,78 +104,85 @@ import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
102
104
 
103
105
 
104
106
  export function BrowserSystem_httpClient(self_) {
105
- throw new Error('Function BrowserSystem_httpClient is missing on this target in sync context.');
107
+ return globalThis
106
108
  }
107
109
 
108
110
  export function BrowserSystem_mainTask(self_) {
109
- throw new Error('Function BrowserSystem_mainTask is missing on this target in sync context.');
111
+ return self_["task_"]
110
112
  }
111
113
 
112
114
  export function BrowserSystem_crypto(self_) {
113
- throw new Error('Function BrowserSystem_crypto is missing on this target in sync context.');
115
+ return crypto
114
116
  }
115
117
 
116
118
  export function BrowserSystem_js(self_) {
117
- throw new Error('Function BrowserSystem_js is missing on this target in sync context.');
119
+ return globalThis
118
120
  }
119
121
 
120
122
  export function BrowserSystem_url(self_) {
121
- throw new Error('Function BrowserSystem_url is missing on this target in sync context.');
123
+ return location.href
122
124
  }
123
125
 
124
126
  export function BrowserSystem_urlPath(self_) {
125
- throw new Error('Function BrowserSystem_urlPath is missing on this target in sync context.');
127
+ return location.pathname
126
128
  }
127
129
 
128
130
  export function BrowserSystem_urlQuery(self_, name_) {
129
- throw new Error('Function BrowserSystem_urlQuery is missing on this target in sync context.');
131
+ const param_ = (new URLSearchParams(location.search)).get(name_);
132
+ if(ff_core_JsValue.JsValue_isNullOrUndefined(param_)) {
133
+ return ff_core_Option.None()
134
+ } else {
135
+ return ff_core_Option.Some(param_)
136
+ }
130
137
  }
131
138
 
132
139
  export function BrowserSystem_urlFragment(self_) {
133
- throw new Error('Function BrowserSystem_urlFragment is missing on this target in sync context.');
140
+ if((!location.hash.startsWith("#"))) {
141
+ return ff_core_Option.None()
142
+ } else {
143
+ return ff_core_Option.Some(location.hash.slice(1))
144
+ }
134
145
  }
135
146
 
136
147
  export async function BrowserSystem_httpClient$(self_, $task) {
137
- return typeof globalThis !== 'undefined' ? globalThis : window
148
+ return globalThis
138
149
  }
139
150
 
140
151
  export async function BrowserSystem_mainTask$(self_, $task) {
141
- return self_.task_
152
+ return self_["task_"]
142
153
  }
143
154
 
144
155
  export async function BrowserSystem_crypto$(self_, $task) {
145
- return (typeof globalThis !== 'undefined' ? globalThis : window).crypto
156
+ return crypto
146
157
  }
147
158
 
148
159
  export async function BrowserSystem_js$(self_, $task) {
149
- return typeof globalThis !== 'undefined' ? globalThis : window
160
+ return globalThis
150
161
  }
151
162
 
152
163
  export async function BrowserSystem_url$(self_, $task) {
153
-
154
- return location.href;
155
-
164
+ return location.href
156
165
  }
157
166
 
158
167
  export async function BrowserSystem_urlPath$(self_, $task) {
159
-
160
- return location.pathname;
161
-
168
+ return location.pathname
162
169
  }
163
170
 
164
171
  export async function BrowserSystem_urlQuery$(self_, name_, $task) {
165
-
166
- const param = new URLSearchParams(location.search).get(name_)
167
- if(param == null) return ff_core_Option.None();
168
- return ff_core_Option.Some(param);
169
-
172
+ const param_ = (new URLSearchParams(location.search)).get(name_);
173
+ if(ff_core_JsValue.JsValue_isNullOrUndefined(param_)) {
174
+ return ff_core_Option.None()
175
+ } else {
176
+ return ff_core_Option.Some(param_)
177
+ }
170
178
  }
171
179
 
172
180
  export async function BrowserSystem_urlFragment$(self_, $task) {
173
-
174
- if(!location.hash.startsWith('#')) return ff_core_Option.None();
175
- return ff_core_Option.Some(location.hash.slice(1));
176
-
181
+ if((!location.hash.startsWith("#"))) {
182
+ return ff_core_Option.None()
183
+ } else {
184
+ return ff_core_Option.Some(location.hash.slice(1))
185
+ }
177
186
  }
178
187
 
179
188