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
package/lux/Main2.ff
CHANGED
|
@@ -1,143 +1,143 @@
|
|
|
1
|
-
import HttpServer from ff:httpserver
|
|
2
|
-
|
|
3
|
-
import Lux
|
|
4
|
-
import LuxEvent
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
mainComponent(lux: Lux, system: BrowserSystem) {
|
|
8
|
-
sleepComponent(lux, system)
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
sleepComponent(lux: Lux, system: BrowserSystem) {
|
|
12
|
-
lux.useState(False): start, setStart =>
|
|
13
|
-
if(start) {
|
|
14
|
-
lux.useSuspense {
|
|
15
|
-
lux.div {
|
|
16
|
-
lux.div {lux.text("Sleeping")}
|
|
17
|
-
lux.button {
|
|
18
|
-
lux.text("Cancel")
|
|
19
|
-
lux.onClick {event =>
|
|
20
|
-
event.preventDefault()
|
|
21
|
-
setStart(False)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
} {lux =>
|
|
26
|
-
trySleep(lux.task, "A")
|
|
27
|
-
lux.div {lux.text("Done sleeping")}
|
|
28
|
-
}
|
|
29
|
-
} else {
|
|
30
|
-
lux.button {
|
|
31
|
-
lux.text("Start")
|
|
32
|
-
lux.onClick {event =>
|
|
33
|
-
event.preventDefault()
|
|
34
|
-
setStart(True)
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
ifComponent(lux: Lux, system: BrowserSystem) {
|
|
41
|
-
lux.useState(False): start, setStart =>
|
|
42
|
-
if(start) {
|
|
43
|
-
lux.div {lux.text("Started")}
|
|
44
|
-
} else {
|
|
45
|
-
lux.button {
|
|
46
|
-
lux.text("Start")
|
|
47
|
-
lux.onClick {event =>
|
|
48
|
-
event.preventDefault()
|
|
49
|
-
setStart(True)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
rhymeComponent(lux: Lux, system: BrowserSystem) {
|
|
56
|
-
lux.div {
|
|
57
|
-
lux.useState(0): count, setCount =>
|
|
58
|
-
Log.debug("useState(0)")
|
|
59
|
-
lux.useState("Ɛ"): text, setText =>
|
|
60
|
-
lux.div {
|
|
61
|
-
lux.button {
|
|
62
|
-
lux.text("Count: " + count)
|
|
63
|
-
lux.onClick {event =>
|
|
64
|
-
setCount(count + 1)
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
lux.div {
|
|
68
|
-
lux.useCallback1(setText): setText =>
|
|
69
|
-
lux.useLazy1(text): text =>
|
|
70
|
-
lux.div {
|
|
71
|
-
lux.div {
|
|
72
|
-
lux.text("Text: " + text + " -> ")
|
|
73
|
-
lux.useSuspense {lux.span {lux.text("Rhyming...")}} {lux =>
|
|
74
|
-
lux.span {
|
|
75
|
-
lux.text(rhyme(system, text))
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
lux.input {
|
|
80
|
-
lux.setValue(text)
|
|
81
|
-
Log.debug("setValue: " + text)
|
|
82
|
-
lux.onInput {event =>
|
|
83
|
-
Log.debug(text + " -> " + event.text())
|
|
84
|
-
setText(event.text())
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
rhyme(system: BrowserSystem, text: String): String {
|
|
95
|
-
let json = system.httpClient().get("https://api.datamuse.com/words?rel_rhy=" + text, []) {_.readJson()}
|
|
96
|
-
json.index(0).field("word").getString().else {"?"}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
browserMain(system: BrowserSystem): Unit {
|
|
100
|
-
Lux.renderById(system, "main") {lux =>
|
|
101
|
-
lux.div {
|
|
102
|
-
mainComponent(lux, system)
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
nodeMain(system: NodeSystem): Unit {
|
|
108
|
-
HttpServer.listen(system, "localhost", 8080) {request, response =>
|
|
109
|
-
if(request.path() == "/") {
|
|
110
|
-
response.setHeader("Content-Type", ["text/html; charset=UTF-8"])
|
|
111
|
-
response.writeText("<!doctype html>")
|
|
112
|
-
response.writeText("<div id='main'></div>")
|
|
113
|
-
response.writeText("<script type='module' src='/js/script/script/Main2.mjs'></script>")
|
|
114
|
-
} elseIf {request.path().startsWith("/js/") && !request.path().contains("..")} {
|
|
115
|
-
response.setHeader("Content-Type", ["text/javascript; charset=UTF-8"])
|
|
116
|
-
response.writeText(system.assets().readText(request.path()))
|
|
117
|
-
} elseIf {request.path() == "/chat"} {
|
|
118
|
-
system.mainTask().sleep(Duration(request.readText().size().toFloat()))
|
|
119
|
-
response.setHeader("Content-Type", ["text/plain; charset=UTF-8"])
|
|
120
|
-
response.writeText("Hello there!")
|
|
121
|
-
} else {
|
|
122
|
-
response.writeStatus(404, Some("Not found"))
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
buildMain(system: BuildSystem) {
|
|
128
|
-
let browser = system.compileForBrowser("Main2.ff")
|
|
129
|
-
let assets = AssetSystem.create().addAssets("/js", browser.assets())
|
|
130
|
-
system.setAssets(assets)
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
trySleep(task: Task, name: String) {
|
|
134
|
-
try {
|
|
135
|
-
task.sleep(Duration(4.0))
|
|
136
|
-
Log.debug("Slept!")
|
|
137
|
-
} catchAny {error =>
|
|
138
|
-
if(error.name() == "AbortError") {
|
|
139
|
-
Log.debug(name + " aborted")
|
|
140
|
-
}
|
|
141
|
-
error.rethrow()
|
|
142
|
-
}
|
|
143
|
-
}
|
|
1
|
+
import HttpServer from ff:httpserver
|
|
2
|
+
|
|
3
|
+
import Lux
|
|
4
|
+
import LuxEvent
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
mainComponent(lux: Lux, system: BrowserSystem) {
|
|
8
|
+
sleepComponent(lux, system)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
sleepComponent(lux: Lux, system: BrowserSystem) {
|
|
12
|
+
lux.useState(False): start, setStart =>
|
|
13
|
+
if(start) {
|
|
14
|
+
lux.useSuspense {
|
|
15
|
+
lux.div {
|
|
16
|
+
lux.div {lux.text("Sleeping")}
|
|
17
|
+
lux.button {
|
|
18
|
+
lux.text("Cancel")
|
|
19
|
+
lux.onClick {event =>
|
|
20
|
+
event.preventDefault()
|
|
21
|
+
setStart(False)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
} {lux =>
|
|
26
|
+
trySleep(lux.task, "A")
|
|
27
|
+
lux.div {lux.text("Done sleeping")}
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
lux.button {
|
|
31
|
+
lux.text("Start")
|
|
32
|
+
lux.onClick {event =>
|
|
33
|
+
event.preventDefault()
|
|
34
|
+
setStart(True)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
ifComponent(lux: Lux, system: BrowserSystem) {
|
|
41
|
+
lux.useState(False): start, setStart =>
|
|
42
|
+
if(start) {
|
|
43
|
+
lux.div {lux.text("Started")}
|
|
44
|
+
} else {
|
|
45
|
+
lux.button {
|
|
46
|
+
lux.text("Start")
|
|
47
|
+
lux.onClick {event =>
|
|
48
|
+
event.preventDefault()
|
|
49
|
+
setStart(True)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
rhymeComponent(lux: Lux, system: BrowserSystem) {
|
|
56
|
+
lux.div {
|
|
57
|
+
lux.useState(0): count, setCount =>
|
|
58
|
+
Log.debug("useState(0)")
|
|
59
|
+
lux.useState("Ɛ"): text, setText =>
|
|
60
|
+
lux.div {
|
|
61
|
+
lux.button {
|
|
62
|
+
lux.text("Count: " + count)
|
|
63
|
+
lux.onClick {event =>
|
|
64
|
+
setCount(count + 1)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
lux.div {
|
|
68
|
+
lux.useCallback1(setText): setText =>
|
|
69
|
+
lux.useLazy1(text): text =>
|
|
70
|
+
lux.div {
|
|
71
|
+
lux.div {
|
|
72
|
+
lux.text("Text: " + text + " -> ")
|
|
73
|
+
lux.useSuspense {lux.span {lux.text("Rhyming...")}} {lux =>
|
|
74
|
+
lux.span {
|
|
75
|
+
lux.text(rhyme(system, text))
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
lux.input {
|
|
80
|
+
lux.setValue(text)
|
|
81
|
+
Log.debug("setValue: " + text)
|
|
82
|
+
lux.onInput {event =>
|
|
83
|
+
Log.debug(text + " -> " + event.text())
|
|
84
|
+
setText(event.text())
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
rhyme(system: BrowserSystem, text: String): String {
|
|
95
|
+
let json = system.httpClient().get("https://api.datamuse.com/words?rel_rhy=" + text, []) {_.readJson()}
|
|
96
|
+
json.index(0).field("word").getString().else {"?"}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
browserMain(system: BrowserSystem): Unit {
|
|
100
|
+
Lux.renderById(system, "main") {lux =>
|
|
101
|
+
lux.div {
|
|
102
|
+
mainComponent(lux, system)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
nodeMain(system: NodeSystem): Unit {
|
|
108
|
+
HttpServer.listen(system, "localhost", 8080) {request, response =>
|
|
109
|
+
if(request.path() == "/") {
|
|
110
|
+
response.setHeader("Content-Type", ["text/html; charset=UTF-8"])
|
|
111
|
+
response.writeText("<!doctype html>")
|
|
112
|
+
response.writeText("<div id='main'></div>")
|
|
113
|
+
response.writeText("<script type='module' src='/js/script/script/Main2.mjs'></script>")
|
|
114
|
+
} elseIf {request.path().startsWith("/js/") && !request.path().contains("..")} {
|
|
115
|
+
response.setHeader("Content-Type", ["text/javascript; charset=UTF-8"])
|
|
116
|
+
response.writeText(system.assets().readText(request.path()))
|
|
117
|
+
} elseIf {request.path() == "/chat"} {
|
|
118
|
+
system.mainTask().sleep(Duration(request.readText().size().toFloat()))
|
|
119
|
+
response.setHeader("Content-Type", ["text/plain; charset=UTF-8"])
|
|
120
|
+
response.writeText("Hello there!")
|
|
121
|
+
} else {
|
|
122
|
+
response.writeStatus(404, Some("Not found"))
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
buildMain(system: BuildSystem) {
|
|
128
|
+
let browser = system.compileForBrowser("Main2.ff")
|
|
129
|
+
let assets = AssetSystem.create().addAssets("/js", browser.assets())
|
|
130
|
+
system.setAssets(assets)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
trySleep(task: Task, name: String) {
|
|
134
|
+
try {
|
|
135
|
+
task.sleep(Duration(4.0))
|
|
136
|
+
Log.debug("Slept!")
|
|
137
|
+
} catchAny {error =>
|
|
138
|
+
if(error.name() == "AbortError") {
|
|
139
|
+
Log.debug(name + " aborted")
|
|
140
|
+
}
|
|
141
|
+
error.rethrow()
|
|
142
|
+
}
|
|
143
|
+
}
|
package/lux/TestDry.ff
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import Lux
|
|
2
|
-
|
|
3
|
-
nodeMain(system: NodeSystem) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
let html = Lux.renderToString(system, render)
|
|
8
|
-
Log.trace(html.first)
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
render(lux: Lux): Unit {
|
|
13
|
-
lux.div {
|
|
14
|
-
lux.set("id", "its-me")
|
|
15
|
-
lux.span {
|
|
16
|
-
lux.text("Hello")
|
|
17
|
-
lux.keyed("noegle"):
|
|
18
|
-
lux.div {
|
|
19
|
-
lux.set("id", "it's \"a-me\"")
|
|
20
|
-
lux.span {
|
|
21
|
-
lux.text("Hello ]]>")
|
|
22
|
-
}
|
|
23
|
-
lux.text("Hi")
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
lux.text("Hi")
|
|
27
|
-
}
|
|
28
|
-
}
|
|
1
|
+
import Lux
|
|
2
|
+
|
|
3
|
+
nodeMain(system: NodeSystem) {
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
let html = Lux.renderToString(system, render)
|
|
8
|
+
Log.trace(html.first)
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
render(lux: Lux): Unit {
|
|
13
|
+
lux.div {
|
|
14
|
+
lux.set("id", "its-me")
|
|
15
|
+
lux.span {
|
|
16
|
+
lux.text("Hello")
|
|
17
|
+
lux.keyed("noegle"):
|
|
18
|
+
lux.div {
|
|
19
|
+
lux.set("id", "it's \"a-me\"")
|
|
20
|
+
lux.span {
|
|
21
|
+
lux.text("Hello ]]>")
|
|
22
|
+
}
|
|
23
|
+
lux.text("Hi")
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
lux.text("Hi")
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -66,6 +66,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
66
66
|
|
|
67
67
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
68
68
|
|
|
69
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
70
|
+
|
|
69
71
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
70
72
|
|
|
71
73
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -92,6 +94,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
92
94
|
|
|
93
95
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
94
96
|
|
|
97
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
98
|
+
|
|
95
99
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
96
100
|
|
|
97
101
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -114,8 +118,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
114
118
|
|
|
115
119
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
116
120
|
|
|
117
|
-
import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
|
|
118
|
-
|
|
119
121
|
// type PackageFiles
|
|
120
122
|
export function PackageFiles(root_, packageFile_, files_) {
|
|
121
123
|
return {root_, packageFile_, files_};
|
|
@@ -137,11 +139,13 @@ if(printMeasurements_) {
|
|
|
137
139
|
ff_compiler_Compiler.Compiler_printMeasurements(compiler_)
|
|
138
140
|
};
|
|
139
141
|
ff_core_Map.Map_each(resolvedDependencies_.packagePaths_, ((packagePair_, packagePath_) => {
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
+
{
|
|
143
|
+
const if_o = ff_core_Map.Map_get(resolvedDependencies_.packages_, packagePair_, ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair)
|
|
144
|
+
if(if_o.Some) {
|
|
145
|
+
const packageInfo_ = if_o.value_;
|
|
142
146
|
ff_compiler_Builder.processNodeModules_(system_, jsPathFile_, packagePath_, packageInfo_);
|
|
143
147
|
ff_compiler_Builder.processIncludes_(jsPathFile_, packagePath_, packageInfo_)
|
|
144
|
-
|
|
148
|
+
}
|
|
145
149
|
}
|
|
146
150
|
}), ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair);
|
|
147
151
|
return true
|
|
@@ -155,7 +159,7 @@ ff_core_Path.Path_renameTo(jsPathFile_, jsOutputPath_)
|
|
|
155
159
|
}
|
|
156
160
|
|
|
157
161
|
export function processIncludes_(jsPathFile_, packagePath_, info_) {
|
|
158
|
-
for(let
|
|
162
|
+
for(let for_a = info_.includes_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
159
163
|
const include_ = for_a[for_i];
|
|
160
164
|
const fromPath_ = ff_core_Path.Path_slash(ff_core_Path.Path_slash(ff_core_Path.Path_slash(packagePath_, ".firefly"), "include"), include_.path_);
|
|
161
165
|
const toPath_ = ff_core_Path.Path_slash(ff_core_Path.Path_slash(jsPathFile_, ff_compiler_Syntax.PackagePair_groupName(info_.package_.packagePair_, "/")), include_.path_);
|
|
@@ -190,7 +194,7 @@ const fixedPackagePaths_ = (ff_core_Map.Map_contains(resolvedDependencies_.packa
|
|
|
190
194
|
if((target_ !== "browser")) {
|
|
191
195
|
ff_core_Core.panic_("buildViaBuildSystem is currently limited to browser target only - the restriction can be lifted")
|
|
192
196
|
};
|
|
193
|
-
ff_compiler_Builder.build_(system_, ff_compiler_JsEmitter.EmitBrowser(), resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(mainFile_,
|
|
197
|
+
ff_compiler_Builder.build_(system_, ff_compiler_JsEmitter.EmitBrowser(), resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(mainFile_, ".ff".length), (((_c) => {
|
|
194
198
|
return ff_compiler_Dependencies.ResolvedDependencies(_c.mainPackagePair_, _c.packages_, fixedPackagePaths_, _c.singleFilePackages_)
|
|
195
199
|
}))(resolvedDependencies_), ff_core_Option.None(), ff_core_NodeSystem.NodeSystem_path(system_, ".firefly/temporary"), ff_core_Path.Path_slash(ff_core_NodeSystem.NodeSystem_path(system_, ".firefly/output"), target_), false, ff_compiler_ModuleCache.new_(0))
|
|
196
200
|
}
|
|
@@ -203,14 +207,14 @@ return ff_compiler_Builder.findPackageFiles_(path_, mustContain_, skipFiles_)
|
|
|
203
207
|
if(!_1 && ff_core_Path.Path_endsWith(path_, [".firefly", "package.ff"])) {
|
|
204
208
|
return [ff_compiler_Builder.PackageFiles(ff_core_Option.Option_grab(ff_core_Path.Path_parent(path_)), ff_core_Option.Some(path_), [])]
|
|
205
209
|
}
|
|
206
|
-
|
|
210
|
+
{
|
|
207
211
|
return [ff_compiler_Builder.PackageFiles(ff_core_Option.Option_grab(ff_core_Path.Path_parent(path_)), ff_core_Option.None(), [path_])]
|
|
208
212
|
}
|
|
209
213
|
}))(ff_core_Path.Path_isDirectory(path_));
|
|
210
214
|
const errors_ = ff_core_Array.new_();
|
|
211
|
-
for(let
|
|
215
|
+
for(let for_a = ff_core_List.List_filter(packages_, ((_w1) => {
|
|
212
216
|
return (!ff_core_List.List_isEmpty(_w1.files_))
|
|
213
|
-
})), for_l = for_a.length; for_i < for_l; for_i++) {
|
|
217
|
+
})), for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
214
218
|
const package_ = for_a[for_i];
|
|
215
219
|
const firstFile_ = ff_core_List.List_grabFirst(package_.files_);
|
|
216
220
|
const resolvedDependencies_ = ff_compiler_Dependencies.process_(ff_core_NodeSystem.NodeSystem_httpClient(system_), dependencyLock_, firstFile_);
|
|
@@ -227,14 +231,14 @@ const files_ = (checkDependencies_
|
|
|
227
231
|
: ff_core_List.List_filter(package_.files_, ((_w1) => {
|
|
228
232
|
return (!ff_core_Path.Path_contains(_w1, [".firefly", "dependencies"]))
|
|
229
233
|
})));
|
|
230
|
-
for(let
|
|
234
|
+
for(let for_a = files_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
231
235
|
const file_ = for_a[for_i];
|
|
232
236
|
const localFile_ = ff_core_Path.Path_base(file_);
|
|
233
237
|
ff_core_Try.Try_catch(ff_core_Try.Try_tryCatch(ff_core_Core.try_((() => {
|
|
234
238
|
if(infer_) {
|
|
235
|
-
ff_compiler_Compiler.Compiler_infer(compiler_, resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(localFile_,
|
|
239
|
+
ff_compiler_Compiler.Compiler_infer(compiler_, resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(localFile_, ".ff".length))
|
|
236
240
|
} else {
|
|
237
|
-
ff_compiler_Compiler.Compiler_resolve(compiler_, resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(localFile_,
|
|
241
|
+
ff_compiler_Compiler.Compiler_resolve(compiler_, resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(localFile_, ".ff".length))
|
|
238
242
|
}
|
|
239
243
|
})), ((_1, _2) => {
|
|
240
244
|
{
|
|
@@ -314,32 +318,33 @@ ff_core_Path.Path_writeStream(p_, makeStream_(), false)
|
|
|
314
318
|
return
|
|
315
319
|
}
|
|
316
320
|
}));
|
|
317
|
-
const json_ = `{
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
321
|
+
const json_ = `{
|
|
322
|
+
"name": "main",
|
|
323
|
+
"bin": {
|
|
324
|
+
"firefly-main": "Main.bundle.js"
|
|
325
|
+
},
|
|
326
|
+
"devDependencies": {
|
|
327
|
+
"pkg": "^5.8.0"
|
|
328
|
+
},
|
|
329
|
+
"pkg": {
|
|
330
|
+
"scripts": "Main.bundle.js",
|
|
331
|
+
"outputPath": "bin",
|
|
332
|
+
"assets": ["../assets/**/*"],
|
|
333
|
+
"targets": [
|
|
334
|
+
"node18-linux-x64",
|
|
335
|
+
"node18-macos-x64",
|
|
336
|
+
"node18-win-x64"
|
|
337
|
+
]
|
|
338
|
+
}
|
|
339
|
+
}`;
|
|
336
340
|
const packageFile_ = ff_core_Path.Path_slash(outputPath_, "executable/package.json");
|
|
337
341
|
ff_core_Path.Path_writeText(packageFile_, json_);
|
|
338
342
|
ff_compiler_Builder.internalCallPkg_(self_, packageFile_, outputPath_, targets_)
|
|
339
343
|
}
|
|
340
344
|
|
|
341
345
|
export function internalCallPkg_(self_, packageFile_, outputPath_, targets_) {
|
|
342
|
-
|
|
346
|
+
const pkg_ = import$0;
|
|
347
|
+
pkg_.exec([packageFile_.absolutePath_, "--out-path", outputPath_.absolutePath_, "--target", ff_core_List.List_join(targets_, ",")])
|
|
343
348
|
}
|
|
344
349
|
|
|
345
350
|
export async function build_$(system_, emitTarget_, mainPackage_, mainModule_, resolvedDependencies_, compilerModulePath_, tempPath_, jsOutputPath_, printMeasurements_, moduleCache_, $task) {
|
|
@@ -356,11 +361,13 @@ if(printMeasurements_) {
|
|
|
356
361
|
(await ff_compiler_Compiler.Compiler_printMeasurements$(compiler_, $task))
|
|
357
362
|
};
|
|
358
363
|
(await ff_core_Map.Map_each$(resolvedDependencies_.packagePaths_, (async (packagePair_, packagePath_, $task) => {
|
|
359
|
-
|
|
360
|
-
const
|
|
364
|
+
{
|
|
365
|
+
const if_o = ff_core_Map.Map_get(resolvedDependencies_.packages_, packagePair_, ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair)
|
|
366
|
+
if(if_o.Some) {
|
|
367
|
+
const packageInfo_ = if_o.value_;
|
|
361
368
|
(await ff_compiler_Builder.processNodeModules_$(system_, jsPathFile_, packagePath_, packageInfo_, $task));
|
|
362
369
|
(await ff_compiler_Builder.processIncludes_$(jsPathFile_, packagePath_, packageInfo_, $task))
|
|
363
|
-
|
|
370
|
+
}
|
|
364
371
|
}
|
|
365
372
|
}), ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair, $task));
|
|
366
373
|
return true
|
|
@@ -374,7 +381,7 @@ if((await ff_core_Path.Path_exists$(jsOutputPath_, false, false, false, $task)))
|
|
|
374
381
|
}
|
|
375
382
|
|
|
376
383
|
export async function processIncludes_$(jsPathFile_, packagePath_, info_, $task) {
|
|
377
|
-
for(let
|
|
384
|
+
for(let for_a = info_.includes_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
378
385
|
const include_ = for_a[for_i];
|
|
379
386
|
const fromPath_ = (await ff_core_Path.Path_slash$((await ff_core_Path.Path_slash$((await ff_core_Path.Path_slash$(packagePath_, ".firefly", $task)), "include", $task)), include_.path_, $task));
|
|
380
387
|
const toPath_ = (await ff_core_Path.Path_slash$((await ff_core_Path.Path_slash$(jsPathFile_, ff_compiler_Syntax.PackagePair_groupName(info_.package_.packagePair_, "/"), $task)), include_.path_, $task));
|
|
@@ -409,7 +416,7 @@ const fixedPackagePaths_ = (ff_core_Map.Map_contains(resolvedDependencies_.packa
|
|
|
409
416
|
if((target_ !== "browser")) {
|
|
410
417
|
ff_core_Core.panic_("buildViaBuildSystem is currently limited to browser target only - the restriction can be lifted")
|
|
411
418
|
};
|
|
412
|
-
(await ff_compiler_Builder.build_$(system_, ff_compiler_JsEmitter.EmitBrowser(), resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(mainFile_,
|
|
419
|
+
(await ff_compiler_Builder.build_$(system_, ff_compiler_JsEmitter.EmitBrowser(), resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(mainFile_, ".ff".length), (((_c) => {
|
|
413
420
|
return ff_compiler_Dependencies.ResolvedDependencies(_c.mainPackagePair_, _c.packages_, fixedPackagePaths_, _c.singleFilePackages_)
|
|
414
421
|
}))(resolvedDependencies_), ff_core_Option.None(), (await ff_core_NodeSystem.NodeSystem_path$(system_, ".firefly/temporary", $task)), (await ff_core_Path.Path_slash$((await ff_core_NodeSystem.NodeSystem_path$(system_, ".firefly/output", $task)), target_, $task)), false, ff_compiler_ModuleCache.new_(0), $task))
|
|
415
422
|
}
|
|
@@ -422,14 +429,14 @@ return (await ff_compiler_Builder.findPackageFiles_$(path_, mustContain_, skipFi
|
|
|
422
429
|
if(!_1 && (await ff_core_Path.Path_endsWith$(path_, [".firefly", "package.ff"], $task))) {
|
|
423
430
|
return [ff_compiler_Builder.PackageFiles(ff_core_Option.Option_grab((await ff_core_Path.Path_parent$(path_, $task))), ff_core_Option.Some(path_), [])]
|
|
424
431
|
}
|
|
425
|
-
|
|
432
|
+
{
|
|
426
433
|
return [ff_compiler_Builder.PackageFiles(ff_core_Option.Option_grab((await ff_core_Path.Path_parent$(path_, $task))), ff_core_Option.None(), [path_])]
|
|
427
434
|
}
|
|
428
435
|
}))((await ff_core_Path.Path_isDirectory$(path_, $task)), $task));
|
|
429
436
|
const errors_ = ff_core_Array.new_();
|
|
430
|
-
for(let
|
|
437
|
+
for(let for_a = ff_core_List.List_filter(packages_, ((_w1) => {
|
|
431
438
|
return (!ff_core_List.List_isEmpty(_w1.files_))
|
|
432
|
-
})), for_l = for_a.length; for_i < for_l; for_i++) {
|
|
439
|
+
})), for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
433
440
|
const package_ = for_a[for_i];
|
|
434
441
|
const firstFile_ = ff_core_List.List_grabFirst(package_.files_);
|
|
435
442
|
const resolvedDependencies_ = (await ff_compiler_Dependencies.process_$((await ff_core_NodeSystem.NodeSystem_httpClient$(system_, $task)), dependencyLock_, firstFile_, $task));
|
|
@@ -446,14 +453,14 @@ const files_ = (checkDependencies_
|
|
|
446
453
|
: (await ff_core_List.List_filter$(package_.files_, (async (_w1, $task) => {
|
|
447
454
|
return (!(await ff_core_Path.Path_contains$(_w1, [".firefly", "dependencies"], $task)))
|
|
448
455
|
}), $task)));
|
|
449
|
-
for(let
|
|
456
|
+
for(let for_a = files_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
450
457
|
const file_ = for_a[for_i];
|
|
451
458
|
const localFile_ = (await ff_core_Path.Path_base$(file_, $task));
|
|
452
459
|
ff_core_Try.Try_catch(ff_core_Try.Try_tryCatch((await ff_core_Core.try_$((async ($task) => {
|
|
453
460
|
if(infer_) {
|
|
454
|
-
(await ff_compiler_Compiler.Compiler_infer$(compiler_, resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(localFile_,
|
|
461
|
+
(await ff_compiler_Compiler.Compiler_infer$(compiler_, resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(localFile_, ".ff".length), $task))
|
|
455
462
|
} else {
|
|
456
|
-
(await ff_compiler_Compiler.Compiler_resolve$(compiler_, resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(localFile_,
|
|
463
|
+
(await ff_compiler_Compiler.Compiler_resolve$(compiler_, resolvedDependencies_.mainPackagePair_, ff_core_String.String_dropLast(localFile_, ".ff".length), $task))
|
|
457
464
|
}
|
|
458
465
|
}), $task)), ((_1, _2) => {
|
|
459
466
|
{
|
|
@@ -533,39 +540,33 @@ const p_ = (await ff_core_Path.Path_slash$(assetOutputPath_, path_, $task));
|
|
|
533
540
|
return
|
|
534
541
|
}
|
|
535
542
|
}), $task));
|
|
536
|
-
const json_ = `{
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
543
|
+
const json_ = `{
|
|
544
|
+
"name": "main",
|
|
545
|
+
"bin": {
|
|
546
|
+
"firefly-main": "Main.bundle.js"
|
|
547
|
+
},
|
|
548
|
+
"devDependencies": {
|
|
549
|
+
"pkg": "^5.8.0"
|
|
550
|
+
},
|
|
551
|
+
"pkg": {
|
|
552
|
+
"scripts": "Main.bundle.js",
|
|
553
|
+
"outputPath": "bin",
|
|
554
|
+
"assets": ["../assets/**/*"],
|
|
555
|
+
"targets": [
|
|
556
|
+
"node18-linux-x64",
|
|
557
|
+
"node18-macos-x64",
|
|
558
|
+
"node18-win-x64"
|
|
559
|
+
]
|
|
560
|
+
}
|
|
561
|
+
}`;
|
|
555
562
|
const packageFile_ = (await ff_core_Path.Path_slash$(outputPath_, "executable/package.json", $task));
|
|
556
563
|
(await ff_core_Path.Path_writeText$(packageFile_, json_, $task));
|
|
557
564
|
(await ff_compiler_Builder.internalCallPkg_$(self_, packageFile_, outputPath_, targets_, $task))
|
|
558
565
|
}
|
|
559
566
|
|
|
560
567
|
export async function internalCallPkg_$(self_, packageFile_, outputPath_, targets_, $task) {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
return await pkg.exec([
|
|
564
|
-
packageFile_,
|
|
565
|
-
'--out-path', outputPath_,
|
|
566
|
-
'--target', targets_.join(',')
|
|
567
|
-
])
|
|
568
|
-
|
|
568
|
+
const pkg_ = import$0;
|
|
569
|
+
(await pkg_.exec([packageFile_.absolutePath_, "--out-path", outputPath_.absolutePath_, "--target", ff_core_List.List_join(targets_, ",")]))
|
|
569
570
|
}
|
|
570
571
|
|
|
571
572
|
|