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.
- package/.hintrc +4 -4
- package/.vscode/settings.json +4 -4
- package/bin/Release.ff +157 -154
- package/bin/firefly.mjs +1 -1
- package/compiler/Builder.ff +275 -277
- package/compiler/Compiler.ff +234 -233
- package/compiler/Dependencies.ff +186 -187
- package/compiler/DependencyLock.ff +17 -17
- package/compiler/Deriver.ff +23 -31
- package/compiler/Dictionaries.ff +1 -1
- package/compiler/Inference.ff +43 -20
- package/compiler/JsEmitter.ff +1437 -1282
- package/compiler/LspHook.ff +202 -202
- package/compiler/Main.ff +25 -24
- package/compiler/ModuleCache.ff +178 -178
- package/compiler/Parser.ff +36 -109
- package/compiler/Resolver.ff +5 -8
- package/compiler/Substitution.ff +1 -1
- package/compiler/Syntax.ff +1 -16
- package/compiler/Token.ff +9 -0
- package/compiler/Tokenizer.ff +4 -0
- package/compiler/Workspace.ff +88 -88
- package/core/.firefly/include/package.json +5 -5
- package/core/.firefly/package.ff +2 -2
- package/core/Any.ff +26 -30
- package/core/Array.ff +298 -265
- package/core/Atomic.ff +63 -64
- package/core/Box.ff +7 -7
- package/core/BrowserSystem.ff +40 -40
- package/core/Buffer.ff +185 -152
- package/core/BuildSystem.ff +156 -148
- package/core/Channel.ff +95 -92
- package/core/Char.ff +3 -2
- package/core/Core.ff +16 -23
- package/core/Crypto.ff +94 -96
- package/core/Equal.ff +41 -36
- package/core/Error.ff +15 -10
- package/core/FileHandle.ff +45 -37
- package/core/Float.ff +176 -200
- package/core/HttpClient.ff +142 -148
- package/core/Instant.ff +6 -8
- package/core/Int.ff +40 -24
- package/core/IntMap.ff +61 -39
- package/core/Js.ff +305 -0
- package/core/JsSystem.ff +135 -114
- package/core/JsValue.ff +303 -159
- package/core/Json.ff +423 -443
- package/core/List.ff +482 -486
- package/core/Lock.ff +108 -144
- package/core/Log.ff +25 -14
- package/core/NodeSystem.ff +198 -191
- package/core/Ordering.ff +160 -161
- package/core/Path.ff +377 -409
- package/core/Queue.ff +90 -0
- package/core/Random.ff +140 -134
- package/core/RbMap.ff +216 -216
- package/core/Serializable.ff +16 -13
- package/core/Show.ff +44 -43
- package/core/SourceLocation.ff +68 -68
- package/core/Stream.ff +1 -1
- package/core/String.ff +224 -202
- package/core/StringMap.ff +58 -36
- package/core/Task.ff +165 -149
- package/experimental/benchmarks/ListGrab.ff +23 -23
- package/experimental/benchmarks/ListGrab.java +55 -55
- package/experimental/benchmarks/Pyrotek45.ff +30 -30
- package/experimental/benchmarks/Pyrotek45.java +64 -64
- package/experimental/bidirectional/Bidi.ff +88 -88
- package/experimental/lines/Main.ff +40 -0
- package/experimental/random/Index.ff +53 -53
- package/experimental/random/Process.ff +120 -120
- package/experimental/random/RunLength.ff +65 -65
- package/experimental/random/Scrape.ff +51 -51
- package/experimental/random/Symbols.ff +73 -73
- package/experimental/random/Tensor.ff +52 -52
- package/experimental/random/Units.ff +36 -36
- package/experimental/s3/S3TestAuthorizationHeader.ff +39 -39
- package/experimental/s3/S3TestPut.ff +16 -16
- package/experimental/tests/TestJson.ff +26 -26
- package/firefly.sh +0 -0
- package/fireflysite/.firefly/package.ff +4 -4
- package/fireflysite/CommunityOverview.ff +20 -20
- package/fireflysite/CountingButtonDemo.ff +58 -58
- package/fireflysite/DocumentParser.ff +325 -331
- package/fireflysite/ExamplesOverview.ff +40 -40
- package/fireflysite/FrontPage.ff +344 -344
- package/fireflysite/GettingStarted.ff +45 -45
- package/fireflysite/Guide.ff +456 -456
- package/fireflysite/Main.ff +163 -152
- package/fireflysite/MatchingPasswordsDemo.ff +82 -82
- package/fireflysite/PackagesOverview.ff +49 -49
- package/fireflysite/PostgresqlDemo.ff +34 -34
- package/fireflysite/ReferenceAll.ff +18 -18
- package/fireflysite/ReferenceIntroduction.ff +11 -11
- package/fireflysite/Styles.ff +567 -567
- package/fireflysite/Test.ff +121 -62
- package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -209
- package/fireflysite/assets/markdown/reference/EmittedJavascript.md +65 -65
- package/fireflysite/assets/markdown/reference/Exceptions.md +101 -101
- package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +364 -364
- package/fireflysite/assets/markdown/reference/JavascriptInterop.md +235 -172
- package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -162
- package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -48
- package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -224
- package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -86
- package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -99
- package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -100
- package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -184
- package/fireflysite/assets/markdown/scratch/ControlFlow.md +136 -136
- package/fireflysite/assets/markdown/scratch/Toc.md +40 -40
- package/lsp/.firefly/package.ff +1 -1
- package/lsp/CompletionHandler.ff +827 -827
- package/lsp/Handler.ff +714 -714
- package/lsp/HoverHandler.ff +79 -79
- package/lsp/LanguageServer.ff +272 -272
- package/lsp/SignatureHelpHandler.ff +55 -55
- package/lsp/SymbolHandler.ff +181 -181
- package/lsp/TestReferences.ff +17 -17
- package/lsp/TestReferencesCase.ff +7 -7
- package/lsp/stderr.txt +1 -1
- package/lsp/stdout.txt +34 -34
- package/lux/.firefly/package.ff +1 -1
- package/lux/Css.ff +648 -648
- package/lux/CssTest.ff +48 -48
- package/lux/Lux.ff +608 -617
- package/lux/LuxEvent.ff +79 -116
- package/lux/Main.ff +123 -123
- package/lux/Main2.ff +143 -143
- package/lux/TestDry.ff +28 -28
- package/output/js/ff/compiler/Builder.mjs +72 -71
- package/output/js/ff/compiler/Compiler.mjs +19 -13
- package/output/js/ff/compiler/Dependencies.mjs +8 -7
- package/output/js/ff/compiler/DependencyLock.mjs +6 -4
- package/output/js/ff/compiler/Deriver.mjs +26 -24
- package/output/js/ff/compiler/Dictionaries.mjs +14 -18
- package/output/js/ff/compiler/Environment.mjs +6 -4
- package/output/js/ff/compiler/Inference.mjs +238 -164
- package/output/js/ff/compiler/JsEmitter.mjs +1160 -350
- package/output/js/ff/compiler/JsImporter.mjs +20 -18
- package/output/js/ff/compiler/LspHook.mjs +12 -10
- package/output/js/ff/compiler/Main.mjs +61 -41
- package/output/js/ff/compiler/ModuleCache.mjs +10 -8
- package/output/js/ff/compiler/Parser.mjs +153 -669
- package/output/js/ff/compiler/Patterns.mjs +12 -10
- package/output/js/ff/compiler/Resolver.mjs +52 -78
- package/output/js/ff/compiler/Substitution.mjs +12 -16
- package/output/js/ff/compiler/Syntax.mjs +50 -341
- package/output/js/ff/compiler/Token.mjs +126 -4
- package/output/js/ff/compiler/Tokenizer.mjs +62 -52
- package/output/js/ff/compiler/Unification.mjs +74 -90
- package/output/js/ff/compiler/Wildcards.mjs +4 -2
- package/output/js/ff/compiler/Workspace.mjs +26 -20
- package/output/js/ff/core/Any.mjs +20 -20
- package/output/js/ff/core/Array.mjs +268 -175
- package/output/js/ff/core/AssetSystem.mjs +8 -6
- package/output/js/ff/core/Atomic.mjs +84 -52
- package/output/js/ff/core/Bool.mjs +6 -4
- package/output/js/ff/core/BrowserSystem.mjs +38 -29
- package/output/js/ff/core/Buffer.mjs +285 -133
- package/output/js/ff/core/BuildSystem.mjs +36 -56
- package/output/js/ff/core/Channel.mjs +250 -97
- package/output/js/ff/core/Char.mjs +5 -3
- package/output/js/ff/core/Core.mjs +28 -34
- package/output/js/ff/core/Crypto.mjs +30 -52
- package/output/js/ff/core/Duration.mjs +4 -2
- package/output/js/ff/core/Equal.mjs +14 -12
- package/output/js/ff/core/Error.mjs +17 -11
- package/output/js/ff/core/FileHandle.mjs +76 -38
- package/output/js/ff/core/Float.mjs +92 -160
- package/output/js/ff/core/HttpClient.mjs +208 -76
- package/output/js/ff/core/Instant.mjs +8 -10
- package/output/js/ff/core/Int.mjs +36 -26
- package/output/js/ff/core/IntMap.mjs +79 -33
- package/output/js/ff/core/Js.mjs +751 -0
- package/output/js/ff/core/JsSystem.mjs +54 -60
- package/output/js/ff/core/JsValue.mjs +294 -143
- package/output/js/ff/core/Json.mjs +443 -253
- package/output/js/ff/core/List.mjs +262 -214
- package/output/js/ff/core/Lock.mjs +156 -125
- package/output/js/ff/core/Log.mjs +20 -10
- package/output/js/ff/core/Map.mjs +10 -8
- package/output/js/ff/core/NodeSystem.mjs +189 -123
- package/output/js/ff/core/Nothing.mjs +4 -2
- package/output/js/ff/core/Option.mjs +40 -38
- package/output/js/ff/core/Ordering.mjs +26 -20
- package/output/js/ff/core/Pair.mjs +4 -2
- package/output/js/ff/core/Path.mjs +517 -315
- package/output/js/ff/core/Queue.mjs +306 -0
- package/output/js/ff/core/Random.mjs +141 -77
- package/output/js/ff/core/RbMap.mjs +36 -34
- package/output/js/ff/core/Serializable.mjs +44 -28
- package/output/js/ff/core/Set.mjs +6 -4
- package/output/js/ff/core/Show.mjs +8 -6
- package/output/js/ff/core/SourceLocation.mjs +4 -2
- package/output/js/ff/core/Stream.mjs +30 -50
- package/output/js/ff/core/String.mjs +263 -172
- package/output/js/ff/core/StringMap.mjs +77 -31
- package/output/js/ff/core/Task.mjs +91 -76
- package/output/js/ff/core/Try.mjs +20 -18
- package/output/js/ff/core/Unit.mjs +4 -2
- package/package.json +1 -1
- package/postgresql/Pg.ff +53 -59
- package/rpc/.firefly/package.ff +1 -1
- package/rpc/Rpc.ff +70 -70
- package/s3/.firefly/package.ff +1 -1
- package/s3/S3.ff +92 -94
- package/vscode/LICENSE.txt +21 -21
- package/vscode/Prepublish.ff +15 -15
- package/vscode/README.md +16 -16
- package/vscode/client/package-lock.json +544 -544
- package/vscode/client/package.json +22 -22
- package/vscode/client/src/extension.ts +104 -104
- package/vscode/icons/firefly-icon.svg +10 -10
- package/vscode/language-configuration.json +61 -61
- package/vscode/package-lock.json +3623 -3623
- package/vscode/package.json +1 -1
- package/vscode/snippets.json +241 -241
- package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
- package/webserver/.firefly/include/package.json +5 -5
- package/webserver/.firefly/package.ff +2 -2
- package/webserver/WebServer.ff +647 -685
- package/websocket/.firefly/package.ff +1 -1
- package/websocket/WebSocket.ff +100 -131
- package/core/UnsafeJs.ff +0 -42
- 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_, (
|
|
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_,
|
|
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_, (
|
|
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_,
|
|
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
|
-
|
|
107
|
+
return {value: value_}
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
export function Atomic_modify(self_, body_) {
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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
|
-
|
|
139
|
-
|
|
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
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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
|
-
|
|
202
|
+
return self_.value
|
|
178
203
|
}
|
|
179
204
|
|
|
180
205
|
export async function Atomic_set$(self_, value_, $task) {
|
|
181
|
-
|
|
206
|
+
self_.value = value_
|
|
182
207
|
}
|
|
183
208
|
|
|
184
209
|
export async function Atomic_getAndSet$(self_, newValue_, $task) {
|
|
185
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
107
|
+
return globalThis
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
export function BrowserSystem_mainTask(self_) {
|
|
109
|
-
|
|
111
|
+
return self_["task_"]
|
|
110
112
|
}
|
|
111
113
|
|
|
112
114
|
export function BrowserSystem_crypto(self_) {
|
|
113
|
-
|
|
115
|
+
return crypto
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
export function BrowserSystem_js(self_) {
|
|
117
|
-
|
|
119
|
+
return globalThis
|
|
118
120
|
}
|
|
119
121
|
|
|
120
122
|
export function BrowserSystem_url(self_) {
|
|
121
|
-
|
|
123
|
+
return location.href
|
|
122
124
|
}
|
|
123
125
|
|
|
124
126
|
export function BrowserSystem_urlPath(self_) {
|
|
125
|
-
|
|
127
|
+
return location.pathname
|
|
126
128
|
}
|
|
127
129
|
|
|
128
130
|
export function BrowserSystem_urlQuery(self_, name_) {
|
|
129
|
-
|
|
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
|
-
|
|
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
|
|
148
|
+
return globalThis
|
|
138
149
|
}
|
|
139
150
|
|
|
140
151
|
export async function BrowserSystem_mainTask$(self_, $task) {
|
|
141
|
-
return self_
|
|
152
|
+
return self_["task_"]
|
|
142
153
|
}
|
|
143
154
|
|
|
144
155
|
export async function BrowserSystem_crypto$(self_, $task) {
|
|
145
|
-
return
|
|
156
|
+
return crypto
|
|
146
157
|
}
|
|
147
158
|
|
|
148
159
|
export async function BrowserSystem_js$(self_, $task) {
|
|
149
|
-
return
|
|
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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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
|
-
|
|
175
|
-
|
|
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
|
|