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
|
@@ -48,6 +48,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
48
48
|
|
|
49
49
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
50
50
|
|
|
51
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
52
|
+
|
|
51
53
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
52
54
|
|
|
53
55
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -74,6 +76,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
74
76
|
|
|
75
77
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
76
78
|
|
|
79
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
80
|
+
|
|
77
81
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
78
82
|
|
|
79
83
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -96,8 +100,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
96
100
|
|
|
97
101
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
98
102
|
|
|
99
|
-
import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
|
|
100
|
-
|
|
101
103
|
// type NodeSystem
|
|
102
104
|
|
|
103
105
|
|
|
@@ -113,45 +115,42 @@ return {problem_};
|
|
|
113
115
|
|
|
114
116
|
|
|
115
117
|
|
|
116
|
-
export function internalAssets_(system_) {
|
|
117
|
-
throw new Error('Function internalAssets is missing on this target in sync context.');
|
|
118
|
-
}
|
|
119
|
-
|
|
120
118
|
export function internalListDirectoryWithoutOpendir_(system_, path_) {
|
|
121
|
-
|
|
119
|
+
const fsPromises_ = import$0;
|
|
120
|
+
const nodePath_ = import$1;
|
|
121
|
+
const files_ = fsPromises_.readdir(path_.absolutePath_);
|
|
122
|
+
return ff_core_List.List_map(ff_core_JsValue.JsValue_grabArray(files_), ((file_) => {
|
|
123
|
+
return ff_core_Path.Path(nodePath_.join(path_.absolutePath_, file_))
|
|
124
|
+
}))
|
|
122
125
|
}
|
|
123
126
|
|
|
124
127
|
export function internalProcessError_(problem_) {
|
|
125
|
-
|
|
128
|
+
try {
|
|
126
129
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_NodeSystem.ProcessException(problem_), ff_core_NodeSystem.ff_core_Any_HasAnyTag$ff_core_NodeSystem_ProcessException)})
|
|
127
|
-
}
|
|
130
|
+
} catch(error_) {
|
|
128
131
|
return error_
|
|
129
|
-
}))
|
|
130
132
|
}
|
|
131
|
-
|
|
132
|
-
export async function internalAssets_$(system_, $task) {
|
|
133
|
-
return system_.assets_
|
|
134
133
|
}
|
|
135
134
|
|
|
136
135
|
export async function internalListDirectoryWithoutOpendir_$(system_, path_, $task) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
136
|
+
const fsPromises_ = import$0;
|
|
137
|
+
const nodePath_ = import$1;
|
|
138
|
+
const files_ = (await fsPromises_.readdir(path_.absolutePath_));
|
|
139
|
+
return ff_core_List.List_map(ff_core_JsValue.JsValue_grabArray(files_), ((file_) => {
|
|
140
|
+
return ff_core_Path.Path(nodePath_.join(path_.absolutePath_, file_))
|
|
141
|
+
}))
|
|
143
142
|
}
|
|
144
143
|
|
|
145
144
|
export async function internalProcessError_$(problem_, $task) {
|
|
146
|
-
|
|
145
|
+
try {
|
|
147
146
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_NodeSystem.ProcessException(problem_), ff_core_NodeSystem.ff_core_Any_HasAnyTag$ff_core_NodeSystem_ProcessException)})
|
|
148
|
-
}
|
|
147
|
+
} catch(error_) {
|
|
149
148
|
return error_
|
|
150
|
-
}
|
|
149
|
+
}
|
|
151
150
|
}
|
|
152
151
|
|
|
153
152
|
export function NodeSystem_arguments(self_) {
|
|
154
|
-
|
|
153
|
+
return self_["array_"]
|
|
155
154
|
}
|
|
156
155
|
|
|
157
156
|
export function NodeSystem_assets(self_) {
|
|
@@ -170,44 +169,48 @@ return ff_core_Path.Path_readStream(file_)
|
|
|
170
169
|
}
|
|
171
170
|
return ff_core_AssetSystem.AssetSystem(ff_core_Stream.Stream_toMap(streams_(assetPkgSnapshotPath_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String))
|
|
172
171
|
} else {
|
|
173
|
-
return
|
|
172
|
+
return self_["assets_"]
|
|
174
173
|
}
|
|
175
174
|
}
|
|
176
175
|
|
|
177
176
|
export function NodeSystem_path(self_, relativePath_) {
|
|
178
|
-
|
|
177
|
+
const nodePath_ = import$1;
|
|
178
|
+
return ff_core_Path.Path(nodePath_.resolve(relativePath_))
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
export function NodeSystem_pathFromUrl(self_, url_) {
|
|
182
|
-
|
|
182
|
+
const nodeUrl_ = import$2;
|
|
183
|
+
return ff_core_Path.Path(nodeUrl_.fileURLToPath((new URL(url_))))
|
|
183
184
|
}
|
|
184
185
|
|
|
185
186
|
export function NodeSystem_httpClient(self_) {
|
|
186
|
-
|
|
187
|
+
return globalThis
|
|
187
188
|
}
|
|
188
189
|
|
|
189
190
|
export function NodeSystem_mainTask(self_) {
|
|
190
|
-
|
|
191
|
+
return self_["task_"]
|
|
191
192
|
}
|
|
192
193
|
|
|
193
194
|
export function NodeSystem_crypto(self_) {
|
|
194
|
-
|
|
195
|
+
return globalThis.crypto
|
|
195
196
|
}
|
|
196
197
|
|
|
197
198
|
export function NodeSystem_js(self_) {
|
|
198
|
-
|
|
199
|
+
return globalThis
|
|
199
200
|
}
|
|
200
201
|
|
|
201
202
|
export function NodeSystem_exit(self_, exitCode_ = 0) {
|
|
202
|
-
|
|
203
|
+
return process.exit(exitCode_)
|
|
203
204
|
}
|
|
204
205
|
|
|
205
206
|
export function NodeSystem_readStream(self_) {
|
|
206
|
-
|
|
207
|
+
return ff_core_Path.internalReadStream_((() => {
|
|
208
|
+
return process.stdin
|
|
209
|
+
}))
|
|
207
210
|
}
|
|
208
211
|
|
|
209
212
|
export function NodeSystem_writeBuffer(self_, buffer_) {
|
|
210
|
-
|
|
213
|
+
process.stdout.write((new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength)))
|
|
211
214
|
}
|
|
212
215
|
|
|
213
216
|
export function NodeSystem_writeStream(self_, stream_) {
|
|
@@ -225,7 +228,7 @@ ff_core_NodeSystem.NodeSystem_writeText(self_, (text_ + "\n"))
|
|
|
225
228
|
}
|
|
226
229
|
|
|
227
230
|
export function NodeSystem_writeErrorBuffer(self_, buffer_) {
|
|
228
|
-
|
|
231
|
+
process.stderr.write((new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength)))
|
|
229
232
|
}
|
|
230
233
|
|
|
231
234
|
export function NodeSystem_writeErrorStream(self_, stream_) {
|
|
@@ -243,15 +246,81 @@ ff_core_NodeSystem.NodeSystem_writeErrorText(self_, (text_ + "\n"))
|
|
|
243
246
|
}
|
|
244
247
|
|
|
245
248
|
export function NodeSystem_environment(self_) {
|
|
246
|
-
|
|
249
|
+
let result_ = ff_core_Map.new_();
|
|
250
|
+
ff_core_JsValue.JsValue_each(process.env, ((key_) => {
|
|
251
|
+
result_ = ff_core_Map.Map_add(result_, key_, process.env[key_], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
252
|
+
}));
|
|
253
|
+
return result_
|
|
247
254
|
}
|
|
248
255
|
|
|
249
256
|
export function NodeSystem_execute(self_, command_, arguments_, standardIn_ = ff_core_Buffer.new_(0), directory_ = ff_core_Option.None(), environment_ = ff_core_Option.None(), maxBuffer_ = 16777216, killSignal_ = 9, shell_ = false) {
|
|
250
|
-
|
|
257
|
+
const childProcess_ = import$3;
|
|
258
|
+
const env_ = ff_core_Option.Option_else(ff_core_Option.Option_map(environment_, ((e_) => {
|
|
259
|
+
const o_ = {};
|
|
260
|
+
ff_core_Map.Map_each(e_, ((k_, v_) => {
|
|
261
|
+
o_[k_] = v_
|
|
262
|
+
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
263
|
+
return o_
|
|
264
|
+
})), (() => {
|
|
265
|
+
return process.env
|
|
266
|
+
}));
|
|
267
|
+
return ff_core_Js.withSignal_(((signal_) => {
|
|
268
|
+
return ff_core_Js.awaitCancellablePromise_(((resolve_, reject_, onSettle_) => {
|
|
269
|
+
const newProcess_ = childProcess_.spawn(command_, arguments_, {cwd: ff_core_Option.Option_else(ff_core_Option.Option_map(directory_, ((_w1) => {
|
|
270
|
+
return _w1.absolutePath_
|
|
271
|
+
})), (() => {
|
|
272
|
+
return (void 0)
|
|
273
|
+
})), windowsHide: true, signal: signal_, killSignal: killSignal_, env: env_, shell: shell_});
|
|
274
|
+
let size_ = 0;
|
|
275
|
+
const out_ = ff_core_Array.new_();
|
|
276
|
+
const err_ = ff_core_Array.new_();
|
|
277
|
+
newProcess_.stdout.on("data", ((data_) => {
|
|
278
|
+
if((size_ <= maxBuffer_)) {
|
|
279
|
+
size_ += data_.byteLength;
|
|
280
|
+
if((size_ > maxBuffer_)) {
|
|
281
|
+
newProcess_.kill(killSignal_)
|
|
282
|
+
} else {
|
|
283
|
+
out_.array.push(data_)
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}));
|
|
287
|
+
newProcess_.stderr.on("data", ((data_) => {
|
|
288
|
+
if((size_ <= maxBuffer_)) {
|
|
289
|
+
size_ += data_.byteLength;
|
|
290
|
+
if((size_ > maxBuffer_)) {
|
|
291
|
+
newProcess_.kill(killSignal_)
|
|
292
|
+
} else {
|
|
293
|
+
err_.array.push(data_)
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}));
|
|
297
|
+
if((standardIn_.byteLength !== 0)) {
|
|
298
|
+
newProcess_.stdin.write(standardIn_)
|
|
299
|
+
};
|
|
300
|
+
newProcess_.stdin.end();
|
|
301
|
+
newProcess_.on("error", ((error_) => {
|
|
302
|
+
if((size_ > maxBuffer_)) {
|
|
303
|
+
return reject_(ff_core_NodeSystem.internalProcessError_("maxBuffer exceeded"))
|
|
304
|
+
} else {
|
|
305
|
+
reject_(ff_core_NodeSystem.internalProcessError_(error_.message))
|
|
306
|
+
}
|
|
307
|
+
}));
|
|
308
|
+
newProcess_.on("close", ((code_) => {
|
|
309
|
+
const o_ = Buffer.concat(ff_core_Array.Array_drain(out_));
|
|
310
|
+
const e_ = Buffer.concat(ff_core_Array.Array_drain(err_));
|
|
311
|
+
return resolve_(ff_core_NodeSystem.ProcessResult(code_, (new DataView(o_.buffer, o_.byteOffset, o_.byteLength)), (new DataView(e_.buffer, e_.byteOffset, e_.byteLength))))
|
|
312
|
+
}));
|
|
313
|
+
onSettle_(((fulfilled_) => {
|
|
314
|
+
if((!fulfilled_)) {
|
|
315
|
+
newProcess_.kill(killSignal_)
|
|
316
|
+
}
|
|
317
|
+
}))
|
|
318
|
+
}))
|
|
319
|
+
}))
|
|
251
320
|
}
|
|
252
321
|
|
|
253
322
|
export async function NodeSystem_arguments$(self_, $task) {
|
|
254
|
-
return self_
|
|
323
|
+
return self_["array_"]
|
|
255
324
|
}
|
|
256
325
|
|
|
257
326
|
export async function NodeSystem_assets$(self_, $task) {
|
|
@@ -270,52 +339,48 @@ return (await ff_core_Path.Path_readStream$(file_, $task))
|
|
|
270
339
|
}
|
|
271
340
|
return ff_core_AssetSystem.AssetSystem((await ff_core_Stream.Stream_toMap$((await streams_$(assetPkgSnapshotPath_, $task)), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String, $task)))
|
|
272
341
|
} else {
|
|
273
|
-
return
|
|
342
|
+
return self_["assets_"]
|
|
274
343
|
}
|
|
275
344
|
}
|
|
276
345
|
|
|
277
346
|
export async function NodeSystem_path$(self_, relativePath_, $task) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
return path.resolve(relativePath_)
|
|
281
|
-
|
|
347
|
+
const nodePath_ = import$1;
|
|
348
|
+
return ff_core_Path.Path(nodePath_.resolve(relativePath_))
|
|
282
349
|
}
|
|
283
350
|
|
|
284
351
|
export async function NodeSystem_pathFromUrl$(self_, url_, $task) {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
return url.fileURLToPath(new URL(url_));
|
|
288
|
-
|
|
352
|
+
const nodeUrl_ = import$2;
|
|
353
|
+
return ff_core_Path.Path(nodeUrl_.fileURLToPath((new URL(url_))))
|
|
289
354
|
}
|
|
290
355
|
|
|
291
356
|
export async function NodeSystem_httpClient$(self_, $task) {
|
|
292
|
-
return
|
|
357
|
+
return globalThis
|
|
293
358
|
}
|
|
294
359
|
|
|
295
360
|
export async function NodeSystem_mainTask$(self_, $task) {
|
|
296
|
-
return self_
|
|
361
|
+
return self_["task_"]
|
|
297
362
|
}
|
|
298
363
|
|
|
299
364
|
export async function NodeSystem_crypto$(self_, $task) {
|
|
300
|
-
return
|
|
365
|
+
return globalThis.crypto
|
|
301
366
|
}
|
|
302
367
|
|
|
303
368
|
export async function NodeSystem_js$(self_, $task) {
|
|
304
|
-
return
|
|
369
|
+
return globalThis
|
|
305
370
|
}
|
|
306
371
|
|
|
307
372
|
export async function NodeSystem_exit$(self_, exitCode_ = 0, $task) {
|
|
308
|
-
process.exit(exitCode_)
|
|
373
|
+
return process.exit(exitCode_)
|
|
309
374
|
}
|
|
310
375
|
|
|
311
376
|
export async function NodeSystem_readStream$(self_, $task) {
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
377
|
+
return (await ff_core_Path.internalReadStream_$((async ($task) => {
|
|
378
|
+
return process.stdin
|
|
379
|
+
}), $task))
|
|
315
380
|
}
|
|
316
381
|
|
|
317
382
|
export async function NodeSystem_writeBuffer$(self_, buffer_, $task) {
|
|
318
|
-
process.stdout.write(new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength))
|
|
383
|
+
process.stdout.write((new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength)))
|
|
319
384
|
}
|
|
320
385
|
|
|
321
386
|
export async function NodeSystem_writeStream$(self_, stream_, $task) {
|
|
@@ -333,7 +398,7 @@ export async function NodeSystem_writeLine$(self_, text_, $task) {
|
|
|
333
398
|
}
|
|
334
399
|
|
|
335
400
|
export async function NodeSystem_writeErrorBuffer$(self_, buffer_, $task) {
|
|
336
|
-
process.stderr.write(new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength))
|
|
401
|
+
process.stderr.write((new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength)))
|
|
337
402
|
}
|
|
338
403
|
|
|
339
404
|
export async function NodeSystem_writeErrorStream$(self_, stream_, $task) {
|
|
@@ -351,76 +416,77 @@ export async function NodeSystem_writeErrorLine$(self_, text_, $task) {
|
|
|
351
416
|
}
|
|
352
417
|
|
|
353
418
|
export async function NodeSystem_environment$(self_, $task) {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
return ff_core_List.List_toMap(result, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
360
|
-
|
|
419
|
+
let result_ = ff_core_Map.new_();
|
|
420
|
+
ff_core_JsValue.JsValue_each(process.env, ((key_) => {
|
|
421
|
+
result_ = ff_core_Map.Map_add(result_, key_, process.env[key_], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
422
|
+
}));
|
|
423
|
+
return result_
|
|
361
424
|
}
|
|
362
425
|
|
|
363
426
|
export async function NodeSystem_execute$(self_, command_, arguments_, standardIn_ = ff_core_Buffer.new_(0), directory_ = ff_core_Option.None(), environment_ = ff_core_Option.None(), maxBuffer_ = 16777216, killSignal_ = 9, shell_ = false, $task) {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
427
|
+
const childProcess_ = import$3;
|
|
428
|
+
const env_ = ff_core_Option.Option_else(ff_core_Option.Option_map(environment_, ((e_) => {
|
|
429
|
+
const o_ = {};
|
|
430
|
+
ff_core_Map.Map_each(e_, ((k_, v_) => {
|
|
431
|
+
o_[k_] = v_
|
|
432
|
+
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
433
|
+
return o_
|
|
434
|
+
})), (() => {
|
|
435
|
+
return process.env
|
|
436
|
+
}));
|
|
437
|
+
return (await ff_core_Js.withSignal_$((async (signal_, $task) => {
|
|
438
|
+
return (await ff_core_Js.awaitCancellablePromise_$(((resolve_, reject_, onSettle_) => {
|
|
439
|
+
const newProcess_ = childProcess_.spawn(command_, arguments_, {cwd: ff_core_Option.Option_else(ff_core_Option.Option_map(directory_, ((_w1) => {
|
|
440
|
+
return _w1.absolutePath_
|
|
441
|
+
})), (() => {
|
|
442
|
+
return (void 0)
|
|
443
|
+
})), windowsHide: true, signal: signal_, killSignal: killSignal_, env: env_, shell: shell_});
|
|
444
|
+
let size_ = 0;
|
|
445
|
+
const out_ = ff_core_Array.new_();
|
|
446
|
+
const err_ = ff_core_Array.new_();
|
|
447
|
+
newProcess_.stdout.on("data", ((data_) => {
|
|
448
|
+
if((size_ <= maxBuffer_)) {
|
|
449
|
+
size_ += data_.byteLength;
|
|
450
|
+
if((size_ > maxBuffer_)) {
|
|
451
|
+
newProcess_.kill(killSignal_)
|
|
452
|
+
} else {
|
|
453
|
+
out_.array.push(data_)
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}));
|
|
457
|
+
newProcess_.stderr.on("data", ((data_) => {
|
|
458
|
+
if((size_ <= maxBuffer_)) {
|
|
459
|
+
size_ += data_.byteLength;
|
|
460
|
+
if((size_ > maxBuffer_)) {
|
|
461
|
+
newProcess_.kill(killSignal_)
|
|
462
|
+
} else {
|
|
463
|
+
err_.array.push(data_)
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}));
|
|
467
|
+
if((standardIn_.byteLength !== 0)) {
|
|
468
|
+
newProcess_.stdin.write(standardIn_)
|
|
469
|
+
};
|
|
470
|
+
newProcess_.stdin.end();
|
|
471
|
+
newProcess_.on("error", ((error_) => {
|
|
472
|
+
if((size_ > maxBuffer_)) {
|
|
473
|
+
return reject_(ff_core_NodeSystem.internalProcessError_("maxBuffer exceeded"))
|
|
474
|
+
} else {
|
|
475
|
+
reject_(ff_core_NodeSystem.internalProcessError_(error_.message))
|
|
476
|
+
}
|
|
477
|
+
}));
|
|
478
|
+
newProcess_.on("close", ((code_) => {
|
|
479
|
+
const o_ = Buffer.concat(ff_core_Array.Array_drain(out_));
|
|
480
|
+
const e_ = Buffer.concat(ff_core_Array.Array_drain(err_));
|
|
481
|
+
return resolve_(ff_core_NodeSystem.ProcessResult(code_, (new DataView(o_.buffer, o_.byteOffset, o_.byteLength)), (new DataView(e_.buffer, e_.byteOffset, e_.byteLength))))
|
|
482
|
+
}));
|
|
483
|
+
onSettle_(((fulfilled_) => {
|
|
484
|
+
if((!fulfilled_)) {
|
|
485
|
+
newProcess_.kill(killSignal_)
|
|
486
|
+
}
|
|
487
|
+
}))
|
|
488
|
+
}), $task))
|
|
489
|
+
}), $task))
|
|
424
490
|
}
|
|
425
491
|
|
|
426
492
|
export const ff_core_Any_HasAnyTag$ff_core_NodeSystem_ProcessException = {
|
|
@@ -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 Nothing
|
|
96
98
|
|
|
97
99
|
|