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
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as import$0 from 'esbuild';
|
|
2
2
|
|
|
3
|
+
import * as import$1 from 'path';
|
|
4
|
+
|
|
3
5
|
import * as ff_core_Any from "../../ff/core/Any.mjs"
|
|
4
6
|
|
|
5
7
|
import * as ff_core_Array from "../../ff/core/Array.mjs"
|
|
@@ -42,6 +44,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
42
44
|
|
|
43
45
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
44
46
|
|
|
47
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
48
|
+
|
|
45
49
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
46
50
|
|
|
47
51
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -68,6 +72,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
68
72
|
|
|
69
73
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
70
74
|
|
|
75
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
76
|
+
|
|
71
77
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
72
78
|
|
|
73
79
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -90,8 +96,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
90
96
|
|
|
91
97
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
92
98
|
|
|
93
|
-
import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
|
|
94
|
-
|
|
95
99
|
// type BuildSystem
|
|
96
100
|
|
|
97
101
|
|
|
@@ -108,11 +112,13 @@ return {assetSystem_};
|
|
|
108
112
|
|
|
109
113
|
|
|
110
114
|
export function internalCallEsBuild_(self_, mainJsFile_, outputPath_, minify_, sourceMap_) {
|
|
111
|
-
|
|
115
|
+
const esbuild_ = import$0;
|
|
116
|
+
esbuild_.build({stdin: {contents: (("import {$run$} from './" + mainJsFile_) + "';"), resolveDir: "."}, bundle: true, minify: minify_, sourcemap: sourceMap_, platform: "browser", target: "es2017", external: ["../../../node_modules/*"], outfile: outputPath_})
|
|
112
117
|
}
|
|
113
118
|
|
|
114
119
|
export function internalNodeCallEsBuild_(self_, mainJsFile_, outputPath_, minify_) {
|
|
115
|
-
|
|
120
|
+
const esbuild_ = import$0;
|
|
121
|
+
esbuild_.build({entryPoints: [mainJsFile_], bundle: true, minify: minify_, sourcemap: true, platform: "node", target: "es2017", external: ["../../../node_modules/*"], outfile: outputPath_})
|
|
116
122
|
}
|
|
117
123
|
|
|
118
124
|
export function internalListDirectory_(path_) {
|
|
@@ -133,47 +139,26 @@ return ff_core_Path.Path_readStream(file_)
|
|
|
133
139
|
}
|
|
134
140
|
|
|
135
141
|
export function internalPath_(buildSystem_, absoluteOrRelative_) {
|
|
136
|
-
|
|
142
|
+
const nodePath_ = import$1;
|
|
143
|
+
return ff_core_Path.Path(nodePath_.resolve(absoluteOrRelative_))
|
|
137
144
|
}
|
|
138
145
|
|
|
139
146
|
export function internalCompile_(buildSystem_, mainFile_, target_) {
|
|
140
|
-
|
|
147
|
+
$firefly_compiler["buildViaBuildSystem_$"](buildSystem_, ff_core_BuildSystem.internalPath_(buildSystem_, buildSystem_["fireflyPath_"]), ff_core_Path.Path_base(mainFile_), target_, $task)
|
|
141
148
|
}
|
|
142
149
|
|
|
143
150
|
export function internalMainPackagePair_(buildSystem_) {
|
|
144
|
-
|
|
151
|
+
return ff_core_Pair.Pair(buildSystem_["mainPackagePair_"]["group_"], buildSystem_["mainPackagePair_"]["name_"])
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
export async function internalCallEsBuild_$(self_, mainJsFile_, outputPath_, minify_, sourceMap_, $task) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return await esbuild.build({
|
|
151
|
-
stdin: {contents: `import {$run$} from './${mainJsFile_}';`, resolveDir: '.'},
|
|
152
|
-
bundle: true,
|
|
153
|
-
minify: minify_,
|
|
154
|
-
sourcemap: sourceMap_,
|
|
155
|
-
platform: 'browser',
|
|
156
|
-
target: 'es2017',
|
|
157
|
-
external: ['../../../node_modules/*'], // TODO
|
|
158
|
-
outfile: outputPath_
|
|
159
|
-
})
|
|
160
|
-
|
|
155
|
+
const esbuild_ = import$0;
|
|
156
|
+
esbuild_.build({stdin: {contents: (("import {$run$} from './" + mainJsFile_) + "';"), resolveDir: "."}, bundle: true, minify: minify_, sourcemap: sourceMap_, platform: "browser", target: "es2017", external: ["../../../node_modules/*"], outfile: outputPath_})
|
|
161
157
|
}
|
|
162
158
|
|
|
163
159
|
export async function internalNodeCallEsBuild_$(self_, mainJsFile_, outputPath_, minify_, $task) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
return await esbuild.build({
|
|
167
|
-
entryPoints: [mainJsFile_],
|
|
168
|
-
bundle: true,
|
|
169
|
-
minify: minify_,
|
|
170
|
-
sourcemap: true,
|
|
171
|
-
platform: 'node',
|
|
172
|
-
target: 'es6',
|
|
173
|
-
external: ['../../../node_modules/*'], // TODO
|
|
174
|
-
outfile: outputPath_
|
|
175
|
-
})
|
|
176
|
-
|
|
160
|
+
const esbuild_ = import$0;
|
|
161
|
+
esbuild_.build({entryPoints: [mainJsFile_], bundle: true, minify: minify_, sourcemap: true, platform: "node", target: "es2017", external: ["../../../node_modules/*"], outfile: outputPath_})
|
|
177
162
|
}
|
|
178
163
|
|
|
179
164
|
export async function internalListDirectory_$(path_, $task) {
|
|
@@ -194,21 +179,16 @@ return (await ff_core_Path.Path_readStream$(file_, $task))
|
|
|
194
179
|
}
|
|
195
180
|
|
|
196
181
|
export async function internalPath_$(buildSystem_, absoluteOrRelative_, $task) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
182
|
+
const nodePath_ = import$1;
|
|
183
|
+
return ff_core_Path.Path(nodePath_.resolve(absoluteOrRelative_))
|
|
200
184
|
}
|
|
201
185
|
|
|
202
186
|
export async function internalCompile_$(buildSystem_, mainFile_, target_, $task) {
|
|
203
|
-
|
|
204
|
-
return await $firefly_compiler.buildViaBuildSystem_$(buildSystem_, buildSystem_.fireflyPath_, mainFile_, target_, $task)
|
|
205
|
-
|
|
187
|
+
(await $firefly_compiler["buildViaBuildSystem_$"](buildSystem_, (await ff_core_BuildSystem.internalPath_$(buildSystem_, buildSystem_["fireflyPath_"], $task)), (await ff_core_Path.Path_base$(mainFile_, $task)), target_, $task))
|
|
206
188
|
}
|
|
207
189
|
|
|
208
190
|
export async function internalMainPackagePair_$(buildSystem_, $task) {
|
|
209
|
-
|
|
210
|
-
return {first_: buildSystem_.mainPackagePair_.group_, second_: buildSystem_.mainPackagePair_.name_}
|
|
211
|
-
|
|
191
|
+
return ff_core_Pair.Pair(buildSystem_["mainPackagePair_"]["group_"], buildSystem_["mainPackagePair_"]["name_"])
|
|
212
192
|
}
|
|
213
193
|
|
|
214
194
|
export function BuildSystem_compileForBrowser(self_, mainFile_) {
|
|
@@ -219,11 +199,11 @@ return ff_core_BuildSystem.BrowserCode(mainPackagePair_.first_, mainPackagePair_
|
|
|
219
199
|
}
|
|
220
200
|
|
|
221
201
|
export function BuildSystem_buildMode(self_) {
|
|
222
|
-
|
|
202
|
+
return (!(!self_["buildMode_"]))
|
|
223
203
|
}
|
|
224
204
|
|
|
225
205
|
export function BuildSystem_setAssets(self_, assetSystem_) {
|
|
226
|
-
|
|
206
|
+
self_["assets_"] = assetSystem_
|
|
227
207
|
}
|
|
228
208
|
|
|
229
209
|
export function BuildSystem_packageAssets(self_) {
|
|
@@ -236,15 +216,15 @@ return ff_core_Core.panic_("dependencyAssets not yet implemented")
|
|
|
236
216
|
}
|
|
237
217
|
|
|
238
218
|
export function BuildSystem_arguments(self_) {
|
|
239
|
-
|
|
219
|
+
return self_["array_"]
|
|
240
220
|
}
|
|
241
221
|
|
|
242
222
|
export function BuildSystem_mainTask(self_) {
|
|
243
|
-
|
|
223
|
+
return self_["task_"]
|
|
244
224
|
}
|
|
245
225
|
|
|
246
226
|
export function BuildSystem_crypto(self_) {
|
|
247
|
-
|
|
227
|
+
return crypto
|
|
248
228
|
}
|
|
249
229
|
|
|
250
230
|
export async function BuildSystem_compileForBrowser$(self_, mainFile_, $task) {
|
|
@@ -255,11 +235,11 @@ return ff_core_BuildSystem.BrowserCode(mainPackagePair_.first_, mainPackagePair_
|
|
|
255
235
|
}
|
|
256
236
|
|
|
257
237
|
export async function BuildSystem_buildMode$(self_, $task) {
|
|
258
|
-
return
|
|
238
|
+
return (!(!self_["buildMode_"]))
|
|
259
239
|
}
|
|
260
240
|
|
|
261
241
|
export async function BuildSystem_setAssets$(self_, assetSystem_, $task) {
|
|
262
|
-
self_
|
|
242
|
+
self_["assets_"] = assetSystem_
|
|
263
243
|
}
|
|
264
244
|
|
|
265
245
|
export async function BuildSystem_packageAssets$(self_, $task) {
|
|
@@ -272,15 +252,15 @@ return ff_core_Core.panic_("dependencyAssets not yet implemented")
|
|
|
272
252
|
}
|
|
273
253
|
|
|
274
254
|
export async function BuildSystem_arguments$(self_, $task) {
|
|
275
|
-
return self_
|
|
255
|
+
return self_["array_"]
|
|
276
256
|
}
|
|
277
257
|
|
|
278
258
|
export async function BuildSystem_mainTask$(self_, $task) {
|
|
279
|
-
return self_
|
|
259
|
+
return self_["task_"]
|
|
280
260
|
}
|
|
281
261
|
|
|
282
262
|
export async function BuildSystem_crypto$(self_, $task) {
|
|
283
|
-
return
|
|
263
|
+
return crypto
|
|
284
264
|
}
|
|
285
265
|
|
|
286
266
|
export function BrowserCode_assets(self_) {
|
|
@@ -294,10 +274,10 @@ const mainJsFile_ = ((((((prefix_ + "/") + self_.packageGroup_) + "/") + self_.p
|
|
|
294
274
|
const mainDirectory_ = ff_core_Option.Option_grab(ff_core_Path.Path_parent(self_.mainFile_));
|
|
295
275
|
const file_ = (prefix_ + "/Main.bundle.js");
|
|
296
276
|
ff_core_BuildSystem.internalCallEsBuild_(self_, mainJsFile_, file_, minify_, sourceMap_);
|
|
297
|
-
const assets_ = ff_core_AssetSystem.AssetSystem(ff_core_List.List_toMap([ff_core_Pair.Pair(ff_core_String.String_dropFirst(file_,
|
|
277
|
+
const assets_ = ff_core_AssetSystem.AssetSystem(ff_core_List.List_toMap([ff_core_Pair.Pair(ff_core_String.String_dropFirst(file_, prefix_.length), (() => {
|
|
298
278
|
return ff_core_Path.Path_readStream(ff_core_Path.Path_path(mainDirectory_, file_))
|
|
299
279
|
})), ...(sourceMap_
|
|
300
|
-
? [ff_core_Pair.Pair((ff_core_String.String_dropFirst(file_,
|
|
280
|
+
? [ff_core_Pair.Pair((ff_core_String.String_dropFirst(file_, prefix_.length) + ".map"), (() => {
|
|
301
281
|
return ff_core_Path.Path_readStream(ff_core_Path.Path_path(mainDirectory_, (file_ + ".map")))
|
|
302
282
|
}))]
|
|
303
283
|
: [])], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String));
|
|
@@ -315,10 +295,10 @@ const mainJsFile_ = ((((((prefix_ + "/") + self_.packageGroup_) + "/") + self_.p
|
|
|
315
295
|
const mainDirectory_ = ff_core_Option.Option_grab((await ff_core_Path.Path_parent$(self_.mainFile_, $task)));
|
|
316
296
|
const file_ = (prefix_ + "/Main.bundle.js");
|
|
317
297
|
(await ff_core_BuildSystem.internalCallEsBuild_$(self_, mainJsFile_, file_, minify_, sourceMap_, $task));
|
|
318
|
-
const assets_ = ff_core_AssetSystem.AssetSystem(ff_core_List.List_toMap([ff_core_Pair.Pair(ff_core_String.String_dropFirst(file_,
|
|
298
|
+
const assets_ = ff_core_AssetSystem.AssetSystem(ff_core_List.List_toMap([ff_core_Pair.Pair(ff_core_String.String_dropFirst(file_, prefix_.length), (async ($task) => {
|
|
319
299
|
return (await ff_core_Path.Path_readStream$((await ff_core_Path.Path_path$(mainDirectory_, file_, $task)), $task))
|
|
320
300
|
})), ...(sourceMap_
|
|
321
|
-
? [ff_core_Pair.Pair((ff_core_String.String_dropFirst(file_,
|
|
301
|
+
? [ff_core_Pair.Pair((ff_core_String.String_dropFirst(file_, prefix_.length) + ".map"), (async ($task) => {
|
|
322
302
|
return (await ff_core_Path.Path_readStream$((await ff_core_Path.Path_path$(mainDirectory_, (file_ + ".map"), $task)), $task))
|
|
323
303
|
}))]
|
|
324
304
|
: [])], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String));
|
|
@@ -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,121 +94,270 @@ 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 Channel
|
|
96
|
-
|
|
98
|
+
export function Channel(capacity_, buffer_, readers_, writers_) {
|
|
99
|
+
return {capacity_, buffer_, readers_, writers_};
|
|
100
|
+
}
|
|
97
101
|
|
|
98
102
|
// type ChannelAction
|
|
99
|
-
|
|
103
|
+
export function ChannelAction(channel_, body_, message_, previous_) {
|
|
104
|
+
return {channel_, body_, message_, previous_};
|
|
105
|
+
}
|
|
100
106
|
|
|
101
107
|
|
|
102
108
|
|
|
103
109
|
export function readOr_(channel_, body_) {
|
|
104
|
-
|
|
110
|
+
return ff_core_Channel.ChannelAction(channel_, body_, ff_core_Option.None(), ff_core_Option.None())
|
|
105
111
|
}
|
|
106
112
|
|
|
107
113
|
export function writeOr_(channel_, message_, body_) {
|
|
108
|
-
|
|
114
|
+
return ff_core_Channel.ChannelAction(channel_, body_, ff_core_Option.Some(message_), ff_core_Option.None())
|
|
109
115
|
}
|
|
110
116
|
|
|
111
117
|
export function internalRunChannelAction_(action_, mode_) {
|
|
112
|
-
|
|
118
|
+
;
|
|
119
|
+
const actions_ = ff_core_List.List_toArray([]);
|
|
120
|
+
function findActions_(action_) {
|
|
121
|
+
actions_.array.push(action_);
|
|
122
|
+
{
|
|
123
|
+
const if_o = action_.previous_
|
|
124
|
+
if(if_o.Some) {
|
|
125
|
+
const _w1 = if_o.value_;
|
|
126
|
+
findActions_(_w1)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
findActions_(action_);
|
|
131
|
+
let foundPromise_ = ff_core_Option.None();
|
|
132
|
+
for(let for_a = actions_.array, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
133
|
+
const action_ = for_a[for_i];
|
|
134
|
+
do {
|
|
135
|
+
const _1 = action_.message_;
|
|
136
|
+
if(_1.Some) {
|
|
137
|
+
const message_ = _1.value_;
|
|
138
|
+
if((action_.channel_.readers_.size !== 0)) {
|
|
139
|
+
const reader_ = action_.channel_.readers_.values().next().value;
|
|
140
|
+
action_.channel_.readers_.delete(reader_);
|
|
141
|
+
reader_.resolve(message_);
|
|
142
|
+
foundPromise_ = ff_core_Option.Some(action_.body_($task))
|
|
143
|
+
break
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if(_1.Some) {
|
|
147
|
+
const message_ = _1.value_;
|
|
148
|
+
if((action_.channel_.buffer_.array.length < action_.channel_.capacity_)) {
|
|
149
|
+
action_.channel_.buffer_.array.push(message_);
|
|
150
|
+
foundPromise_ = ff_core_Option.Some(action_.body_($task))
|
|
151
|
+
break
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if(_1.Some) {
|
|
155
|
+
|
|
156
|
+
break
|
|
157
|
+
}
|
|
158
|
+
if(_1.None && (action_.channel_.buffer_.array.length !== 0)) {
|
|
159
|
+
ff_core_Array.Array_reverse(action_.channel_.buffer_);
|
|
160
|
+
const message_ = ff_core_Array.Array_pop(action_.channel_.buffer_);
|
|
161
|
+
ff_core_Array.Array_reverse(action_.channel_.buffer_);
|
|
162
|
+
foundPromise_ = ff_core_Option.Some(action_.body_(message_, $task))
|
|
163
|
+
break
|
|
164
|
+
}
|
|
165
|
+
if(_1.None && (action_.channel_.writers_.size !== 0)) {
|
|
166
|
+
const writer_ = action_.channel_.writers_.values().next().value;
|
|
167
|
+
action_.channel_.writers_.delete(writer_);
|
|
168
|
+
writer_.resolve();
|
|
169
|
+
foundPromise_ = ff_core_Option.Some(action_.body_(writer_.message, $task))
|
|
170
|
+
break
|
|
171
|
+
}
|
|
172
|
+
{
|
|
173
|
+
|
|
174
|
+
}
|
|
175
|
+
} while(false);
|
|
176
|
+
if(!ff_core_Option.Option_isEmpty(foundPromise_)) break
|
|
177
|
+
};
|
|
178
|
+
return ff_core_Option.Option_else(ff_core_Option.Option_map(foundPromise_, ((_w1) => {
|
|
179
|
+
return _w1
|
|
180
|
+
})), (() => {
|
|
181
|
+
if(ff_core_Option.Option_any(mode_, ((_w1) => {
|
|
182
|
+
return ff_core_Option.Option_isEmpty(_w1.second_)
|
|
183
|
+
}))) {
|
|
184
|
+
const makePromise_ = ff_core_Option.Option_grab(mode_).first_;
|
|
185
|
+
return makePromise_()
|
|
186
|
+
} else {
|
|
187
|
+
const body_ = ff_core_Js.awaitCancellablePromise_(((resolve_, reject_, onSettled_) => {
|
|
188
|
+
{
|
|
189
|
+
const if_o = mode_
|
|
190
|
+
if(if_o.Some) {
|
|
191
|
+
const m_ = if_o.value_;
|
|
192
|
+
const timeout_ = setTimeout((() => {
|
|
193
|
+
return resolve_(m_.first_)
|
|
194
|
+
}), (ff_core_Option.Option_grab(m_.second_) * 1000.0));
|
|
195
|
+
onSettled_(((_) => {
|
|
196
|
+
clearTimeout(timeout_)
|
|
197
|
+
}))
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
for(let for_a = actions_.array, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
201
|
+
const action_ = for_a[for_i];
|
|
202
|
+
do {
|
|
203
|
+
const _1 = action_.message_;
|
|
204
|
+
if(_1.Some) {
|
|
205
|
+
const message_ = _1.value_;
|
|
206
|
+
const writer_ = {resolve: (() => {
|
|
207
|
+
return resolve_((() => {
|
|
208
|
+
return action_.body_($task)
|
|
209
|
+
}))
|
|
210
|
+
}), message: message_};
|
|
211
|
+
action_.channel_.writers_.add(writer_);
|
|
212
|
+
onSettled_(((_) => {
|
|
213
|
+
action_.channel_.writers_.delete(writer_)
|
|
214
|
+
}))
|
|
215
|
+
break
|
|
216
|
+
}
|
|
217
|
+
{
|
|
218
|
+
const reader_ = {resolve: ((m_) => {
|
|
219
|
+
return resolve_((() => {
|
|
220
|
+
return action_.body_(m_, $task)
|
|
221
|
+
}))
|
|
222
|
+
})};
|
|
223
|
+
action_.channel_.readers_.add(reader_);
|
|
224
|
+
onSettled_(((_) => {
|
|
225
|
+
action_.channel_.readers_.delete(reader_)
|
|
226
|
+
}))
|
|
227
|
+
}
|
|
228
|
+
} while(false)
|
|
229
|
+
}
|
|
230
|
+
}));
|
|
231
|
+
return body_()
|
|
232
|
+
}
|
|
233
|
+
}))
|
|
113
234
|
}
|
|
114
235
|
|
|
115
236
|
export async function readOr_$(channel_, body_, $task) {
|
|
116
|
-
return
|
|
237
|
+
return ff_core_Channel.ChannelAction(channel_, body_, ff_core_Option.None(), ff_core_Option.None())
|
|
117
238
|
}
|
|
118
239
|
|
|
119
240
|
export async function writeOr_$(channel_, message_, body_, $task) {
|
|
120
|
-
return
|
|
241
|
+
return ff_core_Channel.ChannelAction(channel_, body_, ff_core_Option.Some(message_), ff_core_Option.None())
|
|
121
242
|
}
|
|
122
243
|
|
|
123
244
|
export async function internalRunChannelAction_$(action_, mode_, $task) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
245
|
+
ff_core_Task.Task_throwIfAborted($task);
|
|
246
|
+
const actions_ = ff_core_List.List_toArray([]);
|
|
247
|
+
function findActions_(action_) {
|
|
248
|
+
actions_.array.push(action_);
|
|
249
|
+
{
|
|
250
|
+
const if_o = action_.previous_
|
|
251
|
+
if(if_o.Some) {
|
|
252
|
+
const _w1 = if_o.value_;
|
|
253
|
+
findActions_(_w1)
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
findActions_(action_);
|
|
258
|
+
let foundPromise_ = ff_core_Option.None();
|
|
259
|
+
for(let for_a = actions_.array, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
260
|
+
const action_ = for_a[for_i];
|
|
261
|
+
do {
|
|
262
|
+
const _1 = action_.message_;
|
|
263
|
+
if(_1.Some) {
|
|
264
|
+
const message_ = _1.value_;
|
|
265
|
+
if((action_.channel_.readers_.size !== 0)) {
|
|
266
|
+
const reader_ = action_.channel_.readers_.values().next().value;
|
|
267
|
+
action_.channel_.readers_.delete(reader_);
|
|
268
|
+
reader_.resolve(message_);
|
|
269
|
+
foundPromise_ = ff_core_Option.Some(action_.body_($task))
|
|
270
|
+
break
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
if(_1.Some) {
|
|
274
|
+
const message_ = _1.value_;
|
|
275
|
+
if((action_.channel_.buffer_.array.length < action_.channel_.capacity_)) {
|
|
276
|
+
action_.channel_.buffer_.array.push(message_);
|
|
277
|
+
foundPromise_ = ff_core_Option.Some(action_.body_($task))
|
|
278
|
+
break
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if(_1.Some) {
|
|
282
|
+
|
|
283
|
+
break
|
|
284
|
+
}
|
|
285
|
+
if(_1.None && (action_.channel_.buffer_.array.length !== 0)) {
|
|
286
|
+
ff_core_Array.Array_reverse(action_.channel_.buffer_);
|
|
287
|
+
const message_ = ff_core_Array.Array_pop(action_.channel_.buffer_);
|
|
288
|
+
ff_core_Array.Array_reverse(action_.channel_.buffer_);
|
|
289
|
+
foundPromise_ = ff_core_Option.Some(action_.body_(message_, $task))
|
|
290
|
+
break
|
|
291
|
+
}
|
|
292
|
+
if(_1.None && (action_.channel_.writers_.size !== 0)) {
|
|
293
|
+
const writer_ = action_.channel_.writers_.values().next().value;
|
|
294
|
+
action_.channel_.writers_.delete(writer_);
|
|
295
|
+
writer_.resolve();
|
|
296
|
+
foundPromise_ = ff_core_Option.Some(action_.body_(writer_.message, $task))
|
|
297
|
+
break
|
|
298
|
+
}
|
|
299
|
+
{
|
|
300
|
+
|
|
301
|
+
}
|
|
302
|
+
} while(false);
|
|
303
|
+
if(!ff_core_Option.Option_isEmpty(foundPromise_)) break
|
|
304
|
+
};
|
|
305
|
+
return (await ff_core_Option.Option_else$((await ff_core_Option.Option_map$(foundPromise_, (async (_w1, $task) => {
|
|
306
|
+
return (await _w1)
|
|
307
|
+
}), $task)), (async ($task) => {
|
|
308
|
+
if(ff_core_Option.Option_any(mode_, ((_w1) => {
|
|
309
|
+
return ff_core_Option.Option_isEmpty(_w1.second_)
|
|
310
|
+
}))) {
|
|
311
|
+
const makePromise_ = ff_core_Option.Option_grab(mode_).first_;
|
|
312
|
+
return (await (await makePromise_($task)))
|
|
313
|
+
} else {
|
|
314
|
+
const body_ = (await ff_core_Js.awaitCancellablePromise_$(((resolve_, reject_, onSettled_) => {
|
|
315
|
+
{
|
|
316
|
+
const if_o = mode_
|
|
317
|
+
if(if_o.Some) {
|
|
318
|
+
const m_ = if_o.value_;
|
|
319
|
+
const timeout_ = setTimeout((() => {
|
|
320
|
+
return resolve_(m_.first_)
|
|
321
|
+
}), (ff_core_Option.Option_grab(m_.second_) * 1000.0));
|
|
322
|
+
onSettled_(((_) => {
|
|
323
|
+
clearTimeout(timeout_)
|
|
324
|
+
}))
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
for(let for_a = actions_.array, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
328
|
+
const action_ = for_a[for_i];
|
|
329
|
+
do {
|
|
330
|
+
const _1 = action_.message_;
|
|
331
|
+
if(_1.Some) {
|
|
332
|
+
const message_ = _1.value_;
|
|
333
|
+
const writer_ = {resolve: (() => {
|
|
334
|
+
return resolve_((async ($task) => {
|
|
335
|
+
return action_.body_($task)
|
|
336
|
+
}))
|
|
337
|
+
}), message: message_};
|
|
338
|
+
action_.channel_.writers_.add(writer_);
|
|
339
|
+
onSettled_(((_) => {
|
|
340
|
+
action_.channel_.writers_.delete(writer_)
|
|
341
|
+
}))
|
|
342
|
+
break
|
|
343
|
+
}
|
|
344
|
+
{
|
|
345
|
+
const reader_ = {resolve: ((m_) => {
|
|
346
|
+
return resolve_((async ($task) => {
|
|
347
|
+
return action_.body_(m_, $task)
|
|
348
|
+
}))
|
|
349
|
+
})};
|
|
350
|
+
action_.channel_.readers_.add(reader_);
|
|
351
|
+
onSettled_(((_) => {
|
|
352
|
+
action_.channel_.readers_.delete(reader_)
|
|
353
|
+
}))
|
|
354
|
+
}
|
|
355
|
+
} while(false)
|
|
356
|
+
}
|
|
357
|
+
}), $task));
|
|
358
|
+
return (await body_($task))
|
|
359
|
+
}
|
|
360
|
+
}), $task))
|
|
208
361
|
}
|
|
209
362
|
|
|
210
363
|
export function Channel_read(self_) {
|
|
@@ -232,11 +385,11 @@ export async function Channel_write$(self_, message_, $task) {
|
|
|
232
385
|
}
|
|
233
386
|
|
|
234
387
|
export function ChannelAction_readOr(self_, channel_, body_) {
|
|
235
|
-
|
|
388
|
+
return ff_core_Channel.ChannelAction(channel_, body_, ff_core_Option.None(), ff_core_Option.Some(self_))
|
|
236
389
|
}
|
|
237
390
|
|
|
238
391
|
export function ChannelAction_writeOr(self_, channel_, message_, body_) {
|
|
239
|
-
|
|
392
|
+
return ff_core_Channel.ChannelAction(channel_, body_, ff_core_Option.Some(message_), ff_core_Option.Some(self_))
|
|
240
393
|
}
|
|
241
394
|
|
|
242
395
|
export function ChannelAction_wait(self_) {
|
|
@@ -252,11 +405,11 @@ return ff_core_Channel.internalRunChannelAction_(self_, ff_core_Option.Some(ff_c
|
|
|
252
405
|
}
|
|
253
406
|
|
|
254
407
|
export async function ChannelAction_readOr$(self_, channel_, body_, $task) {
|
|
255
|
-
return
|
|
408
|
+
return ff_core_Channel.ChannelAction(channel_, body_, ff_core_Option.None(), ff_core_Option.Some(self_))
|
|
256
409
|
}
|
|
257
410
|
|
|
258
411
|
export async function ChannelAction_writeOr$(self_, channel_, message_, body_, $task) {
|
|
259
|
-
return
|
|
412
|
+
return ff_core_Channel.ChannelAction(channel_, body_, ff_core_Option.Some(message_), ff_core_Option.Some(self_))
|
|
260
413
|
}
|
|
261
414
|
|
|
262
415
|
export async function ChannelAction_wait$(self_, $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 Char
|
|
96
98
|
|
|
97
99
|
|
|
@@ -145,7 +147,7 @@ return ((self_ >= 48) && (self_ <= 57))
|
|
|
145
147
|
}
|
|
146
148
|
|
|
147
149
|
export async function Char_toString$(self_, $task) {
|
|
148
|
-
|
|
150
|
+
return String.fromCharCode(self_)
|
|
149
151
|
}
|
|
150
152
|
|
|
151
153
|
|