firefly-compiler 0.5.35 → 0.5.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.hintrc +4 -4
- package/.vscode/settings.json +4 -4
- package/bin/Release.ff +157 -154
- package/bin/firefly.mjs +1 -1
- package/compiler/Builder.ff +275 -277
- package/compiler/Compiler.ff +234 -233
- package/compiler/Dependencies.ff +186 -187
- package/compiler/DependencyLock.ff +17 -17
- package/compiler/Deriver.ff +23 -31
- package/compiler/Dictionaries.ff +1 -1
- package/compiler/Inference.ff +43 -20
- package/compiler/JsEmitter.ff +1437 -1282
- package/compiler/LspHook.ff +202 -202
- package/compiler/Main.ff +25 -24
- package/compiler/ModuleCache.ff +178 -178
- package/compiler/Parser.ff +36 -109
- package/compiler/Resolver.ff +5 -8
- package/compiler/Substitution.ff +1 -1
- package/compiler/Syntax.ff +1 -16
- package/compiler/Token.ff +9 -0
- package/compiler/Tokenizer.ff +4 -0
- package/compiler/Workspace.ff +88 -88
- package/core/.firefly/include/package.json +5 -5
- package/core/.firefly/package.ff +2 -2
- package/core/Any.ff +26 -30
- package/core/Array.ff +298 -265
- package/core/Atomic.ff +63 -64
- package/core/Box.ff +7 -7
- package/core/BrowserSystem.ff +40 -40
- package/core/Buffer.ff +185 -152
- package/core/BuildSystem.ff +156 -148
- package/core/Channel.ff +95 -92
- package/core/Char.ff +3 -2
- package/core/Core.ff +16 -23
- package/core/Crypto.ff +94 -96
- package/core/Equal.ff +41 -36
- package/core/Error.ff +15 -10
- package/core/FileHandle.ff +45 -37
- package/core/Float.ff +176 -200
- package/core/HttpClient.ff +142 -148
- package/core/Instant.ff +6 -8
- package/core/Int.ff +40 -24
- package/core/IntMap.ff +61 -39
- package/core/Js.ff +305 -0
- package/core/JsSystem.ff +135 -114
- package/core/JsValue.ff +303 -159
- package/core/Json.ff +423 -443
- package/core/List.ff +482 -486
- package/core/Lock.ff +108 -144
- package/core/Log.ff +25 -14
- package/core/NodeSystem.ff +198 -191
- package/core/Ordering.ff +160 -161
- package/core/Path.ff +377 -409
- package/core/Queue.ff +90 -0
- package/core/Random.ff +140 -134
- package/core/RbMap.ff +216 -216
- package/core/Serializable.ff +16 -13
- package/core/Show.ff +44 -43
- package/core/SourceLocation.ff +68 -68
- package/core/Stream.ff +1 -1
- package/core/String.ff +224 -202
- package/core/StringMap.ff +58 -36
- package/core/Task.ff +165 -149
- package/experimental/benchmarks/ListGrab.ff +23 -23
- package/experimental/benchmarks/ListGrab.java +55 -55
- package/experimental/benchmarks/Pyrotek45.ff +30 -30
- package/experimental/benchmarks/Pyrotek45.java +64 -64
- package/experimental/bidirectional/Bidi.ff +88 -88
- package/experimental/lines/Main.ff +40 -0
- package/experimental/random/Index.ff +53 -53
- package/experimental/random/Process.ff +120 -120
- package/experimental/random/RunLength.ff +65 -65
- package/experimental/random/Scrape.ff +51 -51
- package/experimental/random/Symbols.ff +73 -73
- package/experimental/random/Tensor.ff +52 -52
- package/experimental/random/Units.ff +36 -36
- package/experimental/s3/S3TestAuthorizationHeader.ff +39 -39
- package/experimental/s3/S3TestPut.ff +16 -16
- package/experimental/tests/TestJson.ff +26 -26
- package/firefly.sh +0 -0
- package/fireflysite/.firefly/package.ff +4 -4
- package/fireflysite/CommunityOverview.ff +20 -20
- package/fireflysite/CountingButtonDemo.ff +58 -58
- package/fireflysite/DocumentParser.ff +325 -331
- package/fireflysite/ExamplesOverview.ff +40 -40
- package/fireflysite/FrontPage.ff +344 -344
- package/fireflysite/GettingStarted.ff +45 -45
- package/fireflysite/Guide.ff +456 -456
- package/fireflysite/Main.ff +163 -152
- package/fireflysite/MatchingPasswordsDemo.ff +82 -82
- package/fireflysite/PackagesOverview.ff +49 -49
- package/fireflysite/PostgresqlDemo.ff +34 -34
- package/fireflysite/ReferenceAll.ff +18 -18
- package/fireflysite/ReferenceIntroduction.ff +11 -11
- package/fireflysite/Styles.ff +567 -567
- package/fireflysite/Test.ff +121 -62
- package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -209
- package/fireflysite/assets/markdown/reference/EmittedJavascript.md +65 -65
- package/fireflysite/assets/markdown/reference/Exceptions.md +101 -101
- package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +364 -364
- package/fireflysite/assets/markdown/reference/JavascriptInterop.md +235 -172
- package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -162
- package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -48
- package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -224
- package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -86
- package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -99
- package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -100
- package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -184
- package/fireflysite/assets/markdown/scratch/ControlFlow.md +136 -136
- package/fireflysite/assets/markdown/scratch/Toc.md +40 -40
- package/lsp/.firefly/package.ff +1 -1
- package/lsp/CompletionHandler.ff +827 -827
- package/lsp/Handler.ff +714 -714
- package/lsp/HoverHandler.ff +79 -79
- package/lsp/LanguageServer.ff +272 -272
- package/lsp/SignatureHelpHandler.ff +55 -55
- package/lsp/SymbolHandler.ff +181 -181
- package/lsp/TestReferences.ff +17 -17
- package/lsp/TestReferencesCase.ff +7 -7
- package/lsp/stderr.txt +1 -1
- package/lsp/stdout.txt +34 -34
- package/lux/.firefly/package.ff +1 -1
- package/lux/Css.ff +648 -648
- package/lux/CssTest.ff +48 -48
- package/lux/Lux.ff +608 -617
- package/lux/LuxEvent.ff +79 -116
- package/lux/Main.ff +123 -123
- package/lux/Main2.ff +143 -143
- package/lux/TestDry.ff +28 -28
- package/output/js/ff/compiler/Builder.mjs +72 -71
- package/output/js/ff/compiler/Compiler.mjs +19 -13
- package/output/js/ff/compiler/Dependencies.mjs +8 -7
- package/output/js/ff/compiler/DependencyLock.mjs +6 -4
- package/output/js/ff/compiler/Deriver.mjs +26 -24
- package/output/js/ff/compiler/Dictionaries.mjs +14 -18
- package/output/js/ff/compiler/Environment.mjs +6 -4
- package/output/js/ff/compiler/Inference.mjs +238 -164
- package/output/js/ff/compiler/JsEmitter.mjs +1160 -350
- package/output/js/ff/compiler/JsImporter.mjs +20 -18
- package/output/js/ff/compiler/LspHook.mjs +12 -10
- package/output/js/ff/compiler/Main.mjs +61 -41
- package/output/js/ff/compiler/ModuleCache.mjs +10 -8
- package/output/js/ff/compiler/Parser.mjs +153 -669
- package/output/js/ff/compiler/Patterns.mjs +12 -10
- package/output/js/ff/compiler/Resolver.mjs +52 -78
- package/output/js/ff/compiler/Substitution.mjs +12 -16
- package/output/js/ff/compiler/Syntax.mjs +50 -341
- package/output/js/ff/compiler/Token.mjs +126 -4
- package/output/js/ff/compiler/Tokenizer.mjs +62 -52
- package/output/js/ff/compiler/Unification.mjs +74 -90
- package/output/js/ff/compiler/Wildcards.mjs +4 -2
- package/output/js/ff/compiler/Workspace.mjs +26 -20
- package/output/js/ff/core/Any.mjs +20 -20
- package/output/js/ff/core/Array.mjs +268 -175
- package/output/js/ff/core/AssetSystem.mjs +8 -6
- package/output/js/ff/core/Atomic.mjs +84 -52
- package/output/js/ff/core/Bool.mjs +6 -4
- package/output/js/ff/core/BrowserSystem.mjs +38 -29
- package/output/js/ff/core/Buffer.mjs +285 -133
- package/output/js/ff/core/BuildSystem.mjs +36 -56
- package/output/js/ff/core/Channel.mjs +250 -97
- package/output/js/ff/core/Char.mjs +5 -3
- package/output/js/ff/core/Core.mjs +28 -34
- package/output/js/ff/core/Crypto.mjs +30 -52
- package/output/js/ff/core/Duration.mjs +4 -2
- package/output/js/ff/core/Equal.mjs +14 -12
- package/output/js/ff/core/Error.mjs +17 -11
- package/output/js/ff/core/FileHandle.mjs +76 -38
- package/output/js/ff/core/Float.mjs +92 -160
- package/output/js/ff/core/HttpClient.mjs +208 -76
- package/output/js/ff/core/Instant.mjs +8 -10
- package/output/js/ff/core/Int.mjs +36 -26
- package/output/js/ff/core/IntMap.mjs +79 -33
- package/output/js/ff/core/Js.mjs +751 -0
- package/output/js/ff/core/JsSystem.mjs +54 -60
- package/output/js/ff/core/JsValue.mjs +294 -143
- package/output/js/ff/core/Json.mjs +443 -253
- package/output/js/ff/core/List.mjs +262 -214
- package/output/js/ff/core/Lock.mjs +156 -125
- package/output/js/ff/core/Log.mjs +20 -10
- package/output/js/ff/core/Map.mjs +10 -8
- package/output/js/ff/core/NodeSystem.mjs +189 -123
- package/output/js/ff/core/Nothing.mjs +4 -2
- package/output/js/ff/core/Option.mjs +40 -38
- package/output/js/ff/core/Ordering.mjs +26 -20
- package/output/js/ff/core/Pair.mjs +4 -2
- package/output/js/ff/core/Path.mjs +517 -315
- package/output/js/ff/core/Queue.mjs +306 -0
- package/output/js/ff/core/Random.mjs +141 -77
- package/output/js/ff/core/RbMap.mjs +36 -34
- package/output/js/ff/core/Serializable.mjs +44 -28
- package/output/js/ff/core/Set.mjs +6 -4
- package/output/js/ff/core/Show.mjs +8 -6
- package/output/js/ff/core/SourceLocation.mjs +4 -2
- package/output/js/ff/core/Stream.mjs +30 -50
- package/output/js/ff/core/String.mjs +263 -172
- package/output/js/ff/core/StringMap.mjs +77 -31
- package/output/js/ff/core/Task.mjs +91 -76
- package/output/js/ff/core/Try.mjs +20 -18
- package/output/js/ff/core/Unit.mjs +4 -2
- package/package.json +1 -1
- package/postgresql/Pg.ff +53 -59
- package/rpc/.firefly/package.ff +1 -1
- package/rpc/Rpc.ff +70 -70
- package/s3/.firefly/package.ff +1 -1
- package/s3/S3.ff +92 -94
- package/vscode/LICENSE.txt +21 -21
- package/vscode/Prepublish.ff +15 -15
- package/vscode/README.md +16 -16
- package/vscode/client/package-lock.json +544 -544
- package/vscode/client/package.json +22 -22
- package/vscode/client/src/extension.ts +104 -104
- package/vscode/icons/firefly-icon.svg +10 -10
- package/vscode/language-configuration.json +61 -61
- package/vscode/package-lock.json +3623 -3623
- package/vscode/package.json +1 -1
- package/vscode/snippets.json +241 -241
- package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
- package/webserver/.firefly/include/package.json +5 -5
- package/webserver/.firefly/package.ff +2 -2
- package/webserver/WebServer.ff +647 -685
- package/websocket/.firefly/package.ff +1 -1
- package/websocket/WebSocket.ff +100 -131
- package/core/UnsafeJs.ff +0 -42
- package/output/js/ff/core/UnsafeJs.mjs +0 -191
|
@@ -42,6 +42,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
42
42
|
|
|
43
43
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
44
44
|
|
|
45
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
46
|
+
|
|
45
47
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
46
48
|
|
|
47
49
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -68,6 +70,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
68
70
|
|
|
69
71
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
70
72
|
|
|
73
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
74
|
+
|
|
71
75
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
72
76
|
|
|
73
77
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -90,91 +94,129 @@ 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 Buffer
|
|
96
98
|
|
|
97
99
|
|
|
98
100
|
|
|
99
101
|
|
|
100
102
|
export function new_(size_, shared_ = false) {
|
|
101
|
-
return new DataView(shared_
|
|
103
|
+
return (new DataView((shared_
|
|
104
|
+
? (new SharedArrayBuffer(size_))
|
|
105
|
+
: (new ArrayBuffer(size_)))))
|
|
102
106
|
}
|
|
103
107
|
|
|
104
108
|
export function fromByteList_(array_) {
|
|
105
|
-
return new DataView(
|
|
109
|
+
return (new DataView(Uint8Array(array_).buffer))
|
|
106
110
|
}
|
|
107
111
|
|
|
108
112
|
export function fromBufferList_(array_) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
113
|
+
let length_ = 0;
|
|
114
|
+
for(let for_a = array_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
115
|
+
const _w1 = for_a[for_i];
|
|
116
|
+
length_ += _w1.byteLength
|
|
117
|
+
};
|
|
118
|
+
const arrayBuffer_ = (new ArrayBuffer(length_));
|
|
119
|
+
const result_ = (new Uint8Array(arrayBuffer_));
|
|
120
|
+
let offset_ = 0;
|
|
121
|
+
for(let for_a = array_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
122
|
+
const b_ = for_a[for_i];
|
|
123
|
+
result_.set((new Uint8Array(b_.buffer, b_.byteOffset, b_.byteLength)), offset_);
|
|
124
|
+
offset_ += b_.byteLength
|
|
125
|
+
};
|
|
126
|
+
return (new DataView(arrayBuffer_))
|
|
121
127
|
}
|
|
122
128
|
|
|
123
129
|
export function fromHex_(hex_) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
130
|
+
const byteCount_ = ff_core_Float.Float_toInt(ff_core_Float.Float_ceil((hex_.length * 0.5)));
|
|
131
|
+
const arrayBuffer_ = (new ArrayBuffer(byteCount_));
|
|
132
|
+
const result_ = (new Uint8Array(arrayBuffer_));
|
|
133
|
+
for(let for_i = 0, for_e = byteCount_; for_i < for_e; for_i++) {
|
|
134
|
+
const i_ = for_i;
|
|
135
|
+
result_[i_] = parseInt(hex_.slice((i_ * 2), ((i_ * 2) + 2)), 16)
|
|
136
|
+
};
|
|
137
|
+
return (new DataView(arrayBuffer_))
|
|
129
138
|
}
|
|
130
139
|
|
|
131
140
|
export function fromBase64_(base64_) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
141
|
+
const binaryString_ = atob(base64_);
|
|
142
|
+
const bytes_ = Uint8Array.from(binaryString_, ((char_) => {
|
|
143
|
+
return char_.CharCodeAt(0)
|
|
144
|
+
}));
|
|
145
|
+
return (new DataView(bytes_.buffer))
|
|
138
146
|
}
|
|
139
147
|
|
|
140
148
|
export async function new_$(size_, shared_ = false, $task) {
|
|
141
|
-
|
|
149
|
+
return (new DataView((shared_
|
|
150
|
+
? (new SharedArrayBuffer(size_))
|
|
151
|
+
: (new ArrayBuffer(size_)))))
|
|
142
152
|
}
|
|
143
153
|
|
|
144
154
|
export async function fromByteList_$(array_, $task) {
|
|
145
|
-
|
|
155
|
+
return (new DataView(Uint8Array(array_).buffer))
|
|
146
156
|
}
|
|
147
157
|
|
|
148
158
|
export async function fromBufferList_$(array_, $task) {
|
|
149
|
-
|
|
159
|
+
let length_ = 0;
|
|
160
|
+
for(let for_a = array_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
161
|
+
const _w1 = for_a[for_i];
|
|
162
|
+
length_ += _w1.byteLength
|
|
163
|
+
};
|
|
164
|
+
const arrayBuffer_ = (new ArrayBuffer(length_));
|
|
165
|
+
const result_ = (new Uint8Array(arrayBuffer_));
|
|
166
|
+
let offset_ = 0;
|
|
167
|
+
for(let for_a = array_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
|
|
168
|
+
const b_ = for_a[for_i];
|
|
169
|
+
result_.set((new Uint8Array(b_.buffer, b_.byteOffset, b_.byteLength)), offset_);
|
|
170
|
+
offset_ += b_.byteLength
|
|
171
|
+
};
|
|
172
|
+
return (new DataView(arrayBuffer_))
|
|
150
173
|
}
|
|
151
174
|
|
|
152
175
|
export async function fromHex_$(hex_, $task) {
|
|
153
|
-
|
|
176
|
+
const byteCount_ = ff_core_Float.Float_toInt(ff_core_Float.Float_ceil((hex_.length * 0.5)));
|
|
177
|
+
const arrayBuffer_ = (new ArrayBuffer(byteCount_));
|
|
178
|
+
const result_ = (new Uint8Array(arrayBuffer_));
|
|
179
|
+
for(let for_i = 0, for_e = byteCount_; for_i < for_e; for_i++) {
|
|
180
|
+
const i_ = for_i;
|
|
181
|
+
result_[i_] = parseInt(hex_.slice((i_ * 2), ((i_ * 2) + 2)), 16)
|
|
182
|
+
};
|
|
183
|
+
return (new DataView(arrayBuffer_))
|
|
154
184
|
}
|
|
155
185
|
|
|
156
186
|
export async function fromBase64_$(base64_, $task) {
|
|
157
|
-
|
|
187
|
+
const binaryString_ = atob(base64_);
|
|
188
|
+
const bytes_ = Uint8Array.from(binaryString_, ((char_) => {
|
|
189
|
+
return char_.CharCodeAt(0)
|
|
190
|
+
}));
|
|
191
|
+
return (new DataView(bytes_.buffer))
|
|
158
192
|
}
|
|
159
193
|
|
|
160
194
|
export function Buffer_grabUint64(self_, byteOffset_, littleEndian_ = true) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
195
|
+
const high_ = self_.getUint32((byteOffset_ + (littleEndian_
|
|
196
|
+
? 4
|
|
197
|
+
: 0)), littleEndian_);
|
|
198
|
+
const low_ = self_.getUint32((byteOffset_ + (littleEndian_
|
|
199
|
+
? 0
|
|
200
|
+
: 4)), littleEndian_);
|
|
201
|
+
const result_ = ((high_ * 0x100000000) + low_);
|
|
202
|
+
if((!Number.isSafeInteger(result_))) {
|
|
203
|
+
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Core.GrabException(), ff_core_Core.ff_core_Any_HasAnyTag$ff_core_Core_GrabException)})
|
|
204
|
+
};
|
|
205
|
+
return result_
|
|
168
206
|
}
|
|
169
207
|
|
|
170
208
|
export function Buffer_grabInt64(self_, byteOffset_, littleEndian_ = true) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
209
|
+
const high_ = self_.getInt32((byteOffset_ + (littleEndian_
|
|
210
|
+
? 4
|
|
211
|
+
: 0)), littleEndian_);
|
|
212
|
+
const low_ = self_.getUint32((byteOffset_ + (littleEndian_
|
|
213
|
+
? 0
|
|
214
|
+
: 4)), littleEndian_);
|
|
215
|
+
const result_ = ((high_ * 0x100000000) + low_);
|
|
216
|
+
if((!Number.isSafeInteger(result_))) {
|
|
217
|
+
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Core.GrabException(), ff_core_Core.ff_core_Any_HasAnyTag$ff_core_Core_GrabException)})
|
|
218
|
+
};
|
|
219
|
+
return result_
|
|
178
220
|
}
|
|
179
221
|
|
|
180
222
|
export function Buffer_grabFloat32(self_, byteOffset_, littleEndian_ = true) {
|
|
@@ -210,17 +252,21 @@ return self_.getUint8(byteOffset_)
|
|
|
210
252
|
}
|
|
211
253
|
|
|
212
254
|
export function Buffer_setUint64(self_, byteOffset_, value_, littleEndian_ = true) {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
255
|
+
self_.setUint32((byteOffset_ + (littleEndian_
|
|
256
|
+
? 4
|
|
257
|
+
: 0)), ((value_ >>> 16) >>> 16), littleEndian_);
|
|
258
|
+
self_.setUint32((byteOffset_ + (littleEndian_
|
|
259
|
+
? 0
|
|
260
|
+
: 4)), (value_ & 0xffffffff), littleEndian_)
|
|
217
261
|
}
|
|
218
262
|
|
|
219
263
|
export function Buffer_setInt64(self_, byteOffset_, value_, littleEndian_ = true) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
264
|
+
self_.setUint32((byteOffset_ + (littleEndian_
|
|
265
|
+
? 4
|
|
266
|
+
: 0)), ((value_ >> 16) >> 16), littleEndian_);
|
|
267
|
+
self_.setUint32((byteOffset_ + (littleEndian_
|
|
268
|
+
? 0
|
|
269
|
+
: 4)), (value_ & 0xffffffff), littleEndian_)
|
|
224
270
|
}
|
|
225
271
|
|
|
226
272
|
export function Buffer_setFloat32(self_, byteOffset_, value_, littleEndian_ = true) {
|
|
@@ -256,11 +302,9 @@ self_.setUint8(byteOffset_, value_)
|
|
|
256
302
|
}
|
|
257
303
|
|
|
258
304
|
export function Buffer_setAll(self_, byteOffset_, buffer_) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
targetBuffer.set(sourceBuffer, byteOffset_)
|
|
263
|
-
|
|
305
|
+
const sourceBuffer_ = (new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength));
|
|
306
|
+
const targetBuffer_ = (new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength));
|
|
307
|
+
targetBuffer_.set(sourceBuffer_, byteOffset_)
|
|
264
308
|
}
|
|
265
309
|
|
|
266
310
|
export function Buffer_size(self_) {
|
|
@@ -268,162 +312,205 @@ return self_.byteLength
|
|
|
268
312
|
}
|
|
269
313
|
|
|
270
314
|
export function Buffer_shared(self_) {
|
|
271
|
-
return typeof SharedArrayBuffer !==
|
|
315
|
+
return (((typeof SharedArrayBuffer) !== "undefined") && (self_.buffer instanceof SharedArrayBuffer))
|
|
272
316
|
}
|
|
273
317
|
|
|
274
318
|
export function Buffer_view(self_, begin_, end_) {
|
|
275
|
-
return new DataView(self_.buffer, self_.byteOffset + begin_, end_ - begin_)
|
|
319
|
+
return (new DataView(self_.buffer, (self_.byteOffset + begin_), (end_ - begin_)))
|
|
276
320
|
}
|
|
277
321
|
|
|
278
322
|
export function Buffer_copy(self_) {
|
|
279
|
-
return new DataView(self_.buffer.slice(self_.byteOffset, self_.byteOffset + self_.byteLength))
|
|
323
|
+
return (new DataView(self_.buffer.slice(self_.byteOffset, (self_.byteOffset + self_.byteLength))))
|
|
280
324
|
}
|
|
281
325
|
|
|
282
326
|
export function Buffer_toString(self_, encoding_ = "utf8") {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
327
|
+
if((encoding_ === "utf8")) {
|
|
328
|
+
if(((typeof TextDecoder.ffSingleton) === "undefined")) {
|
|
329
|
+
TextDecoder.ffSingleton = (new TextDecoder())
|
|
330
|
+
};
|
|
331
|
+
TextDecoder.ffSingleton.decode(self_)
|
|
332
|
+
};
|
|
333
|
+
return (new TextDecoder()).decode(self_)
|
|
290
334
|
}
|
|
291
335
|
|
|
292
336
|
export function Buffer_toByteArray(self_) {
|
|
293
|
-
return [...new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength)]
|
|
337
|
+
return [...(new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength))]
|
|
294
338
|
}
|
|
295
339
|
|
|
296
340
|
export function Buffer_toHex(self_) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
341
|
+
let hex_ = "";
|
|
342
|
+
for(let for_i = 0, for_e = self_.byteLength; for_i < for_e; for_i++) {
|
|
343
|
+
const i_ = for_i;
|
|
344
|
+
hex_ = (hex_ + self_.getUint8(i_).toString(16).padStart(2, "0"))
|
|
345
|
+
};
|
|
346
|
+
return hex_
|
|
304
347
|
}
|
|
305
348
|
|
|
306
349
|
export function Buffer_toBase64(self_) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
350
|
+
const view_ = (new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength));
|
|
351
|
+
const binaryString_ = (new TextDecoder("latin1")).decode(view_);
|
|
352
|
+
return btoa(binaryString_)
|
|
311
353
|
}
|
|
312
354
|
|
|
313
355
|
export async function Buffer_grabUint64$(self_, byteOffset_, littleEndian_ = true, $task) {
|
|
314
|
-
|
|
356
|
+
const high_ = self_.getUint32((byteOffset_ + (littleEndian_
|
|
357
|
+
? 4
|
|
358
|
+
: 0)), littleEndian_);
|
|
359
|
+
const low_ = self_.getUint32((byteOffset_ + (littleEndian_
|
|
360
|
+
? 0
|
|
361
|
+
: 4)), littleEndian_);
|
|
362
|
+
const result_ = ((high_ * 0x100000000) + low_);
|
|
363
|
+
if((!Number.isSafeInteger(result_))) {
|
|
364
|
+
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Core.GrabException(), ff_core_Core.ff_core_Any_HasAnyTag$ff_core_Core_GrabException)})
|
|
365
|
+
};
|
|
366
|
+
return result_
|
|
315
367
|
}
|
|
316
368
|
|
|
317
369
|
export async function Buffer_grabInt64$(self_, byteOffset_, littleEndian_ = true, $task) {
|
|
318
|
-
|
|
370
|
+
const high_ = self_.getInt32((byteOffset_ + (littleEndian_
|
|
371
|
+
? 4
|
|
372
|
+
: 0)), littleEndian_);
|
|
373
|
+
const low_ = self_.getUint32((byteOffset_ + (littleEndian_
|
|
374
|
+
? 0
|
|
375
|
+
: 4)), littleEndian_);
|
|
376
|
+
const result_ = ((high_ * 0x100000000) + low_);
|
|
377
|
+
if((!Number.isSafeInteger(result_))) {
|
|
378
|
+
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Core.GrabException(), ff_core_Core.ff_core_Any_HasAnyTag$ff_core_Core_GrabException)})
|
|
379
|
+
};
|
|
380
|
+
return result_
|
|
319
381
|
}
|
|
320
382
|
|
|
321
383
|
export async function Buffer_grabFloat32$(self_, byteOffset_, littleEndian_ = true, $task) {
|
|
322
|
-
|
|
384
|
+
return self_.getFloat32(byteOffset_, littleEndian_)
|
|
323
385
|
}
|
|
324
386
|
|
|
325
387
|
export async function Buffer_grabFloat64$(self_, byteOffset_, littleEndian_ = true, $task) {
|
|
326
|
-
|
|
388
|
+
return self_.getFloat64(byteOffset_, littleEndian_)
|
|
327
389
|
}
|
|
328
390
|
|
|
329
391
|
export async function Buffer_grabInt16$(self_, byteOffset_, littleEndian_ = true, $task) {
|
|
330
|
-
|
|
392
|
+
return self_.getInt16(byteOffset_, littleEndian_)
|
|
331
393
|
}
|
|
332
394
|
|
|
333
395
|
export async function Buffer_grabInt32$(self_, byteOffset_, littleEndian_ = true, $task) {
|
|
334
|
-
|
|
396
|
+
return self_.getInt32(byteOffset_, littleEndian_)
|
|
335
397
|
}
|
|
336
398
|
|
|
337
399
|
export async function Buffer_grabInt8$(self_, byteOffset_, $task) {
|
|
338
|
-
|
|
400
|
+
return self_.getInt8(byteOffset_)
|
|
339
401
|
}
|
|
340
402
|
|
|
341
403
|
export async function Buffer_grabUint16$(self_, byteOffset_, littleEndian_ = true, $task) {
|
|
342
|
-
|
|
404
|
+
return self_.getUint16(byteOffset_, littleEndian_)
|
|
343
405
|
}
|
|
344
406
|
|
|
345
407
|
export async function Buffer_grabUint32$(self_, byteOffset_, littleEndian_ = true, $task) {
|
|
346
|
-
|
|
408
|
+
return self_.getUint32(byteOffset_, littleEndian_)
|
|
347
409
|
}
|
|
348
410
|
|
|
349
411
|
export async function Buffer_grabUint8$(self_, byteOffset_, $task) {
|
|
350
|
-
|
|
412
|
+
return self_.getUint8(byteOffset_)
|
|
351
413
|
}
|
|
352
414
|
|
|
353
415
|
export async function Buffer_setUint64$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
|
|
354
|
-
|
|
416
|
+
self_.setUint32((byteOffset_ + (littleEndian_
|
|
417
|
+
? 4
|
|
418
|
+
: 0)), ((value_ >>> 16) >>> 16), littleEndian_);
|
|
419
|
+
self_.setUint32((byteOffset_ + (littleEndian_
|
|
420
|
+
? 0
|
|
421
|
+
: 4)), (value_ & 0xffffffff), littleEndian_)
|
|
355
422
|
}
|
|
356
423
|
|
|
357
424
|
export async function Buffer_setInt64$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
|
|
358
|
-
|
|
425
|
+
self_.setUint32((byteOffset_ + (littleEndian_
|
|
426
|
+
? 4
|
|
427
|
+
: 0)), ((value_ >> 16) >> 16), littleEndian_);
|
|
428
|
+
self_.setUint32((byteOffset_ + (littleEndian_
|
|
429
|
+
? 0
|
|
430
|
+
: 4)), (value_ & 0xffffffff), littleEndian_)
|
|
359
431
|
}
|
|
360
432
|
|
|
361
433
|
export async function Buffer_setFloat32$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
|
|
362
|
-
|
|
434
|
+
self_.setFloat32(byteOffset_, value_, littleEndian_)
|
|
363
435
|
}
|
|
364
436
|
|
|
365
437
|
export async function Buffer_setFloat64$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
|
|
366
|
-
|
|
438
|
+
self_.setFloat64(byteOffset_, value_, littleEndian_)
|
|
367
439
|
}
|
|
368
440
|
|
|
369
441
|
export async function Buffer_setInt16$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
|
|
370
|
-
|
|
442
|
+
self_.setInt16(byteOffset_, value_, littleEndian_)
|
|
371
443
|
}
|
|
372
444
|
|
|
373
445
|
export async function Buffer_setInt32$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
|
|
374
|
-
|
|
446
|
+
self_.setInt32(byteOffset_, value_, littleEndian_)
|
|
375
447
|
}
|
|
376
448
|
|
|
377
449
|
export async function Buffer_setInt8$(self_, byteOffset_, value_, $task) {
|
|
378
|
-
|
|
450
|
+
self_.setInt8(byteOffset_, value_)
|
|
379
451
|
}
|
|
380
452
|
|
|
381
453
|
export async function Buffer_setUint16$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
|
|
382
|
-
|
|
454
|
+
self_.setUint16(byteOffset_, value_, littleEndian_)
|
|
383
455
|
}
|
|
384
456
|
|
|
385
457
|
export async function Buffer_setUint32$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
|
|
386
|
-
|
|
458
|
+
self_.setUint32(byteOffset_, value_, littleEndian_)
|
|
387
459
|
}
|
|
388
460
|
|
|
389
461
|
export async function Buffer_setUint8$(self_, byteOffset_, value_, $task) {
|
|
390
|
-
|
|
462
|
+
self_.setUint8(byteOffset_, value_)
|
|
391
463
|
}
|
|
392
464
|
|
|
393
465
|
export async function Buffer_setAll$(self_, byteOffset_, buffer_, $task) {
|
|
394
|
-
|
|
466
|
+
const sourceBuffer_ = (new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength));
|
|
467
|
+
const targetBuffer_ = (new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength));
|
|
468
|
+
targetBuffer_.set(sourceBuffer_, byteOffset_)
|
|
395
469
|
}
|
|
396
470
|
|
|
397
471
|
export async function Buffer_size$(self_, $task) {
|
|
398
|
-
|
|
472
|
+
return self_.byteLength
|
|
399
473
|
}
|
|
400
474
|
|
|
401
475
|
export async function Buffer_shared$(self_, $task) {
|
|
402
|
-
|
|
476
|
+
return (((typeof SharedArrayBuffer) !== "undefined") && (self_.buffer instanceof SharedArrayBuffer))
|
|
403
477
|
}
|
|
404
478
|
|
|
405
479
|
export async function Buffer_view$(self_, begin_, end_, $task) {
|
|
406
|
-
|
|
480
|
+
return (new DataView(self_.buffer, (self_.byteOffset + begin_), (end_ - begin_)))
|
|
407
481
|
}
|
|
408
482
|
|
|
409
483
|
export async function Buffer_copy$(self_, $task) {
|
|
410
|
-
|
|
484
|
+
return (new DataView(self_.buffer.slice(self_.byteOffset, (self_.byteOffset + self_.byteLength))))
|
|
411
485
|
}
|
|
412
486
|
|
|
413
487
|
export async function Buffer_toString$(self_, encoding_ = "utf8", $task) {
|
|
414
|
-
|
|
488
|
+
if((encoding_ === "utf8")) {
|
|
489
|
+
if(((typeof TextDecoder.ffSingleton) === "undefined")) {
|
|
490
|
+
TextDecoder.ffSingleton = (new TextDecoder())
|
|
491
|
+
};
|
|
492
|
+
TextDecoder.ffSingleton.decode(self_)
|
|
493
|
+
};
|
|
494
|
+
return (new TextDecoder()).decode(self_)
|
|
415
495
|
}
|
|
416
496
|
|
|
417
497
|
export async function Buffer_toByteArray$(self_, $task) {
|
|
418
|
-
|
|
498
|
+
return [...(new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength))]
|
|
419
499
|
}
|
|
420
500
|
|
|
421
501
|
export async function Buffer_toHex$(self_, $task) {
|
|
422
|
-
|
|
502
|
+
let hex_ = "";
|
|
503
|
+
for(let for_i = 0, for_e = self_.byteLength; for_i < for_e; for_i++) {
|
|
504
|
+
const i_ = for_i;
|
|
505
|
+
hex_ = (hex_ + self_.getUint8(i_).toString(16).padStart(2, "0"))
|
|
506
|
+
};
|
|
507
|
+
return hex_
|
|
423
508
|
}
|
|
424
509
|
|
|
425
510
|
export async function Buffer_toBase64$(self_, $task) {
|
|
426
|
-
|
|
511
|
+
const view_ = (new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength));
|
|
512
|
+
const binaryString_ = (new TextDecoder("latin1")).decode(view_);
|
|
513
|
+
return btoa(binaryString_)
|
|
427
514
|
}
|
|
428
515
|
|
|
429
516
|
export const ff_core_Show_Show$ff_core_Buffer_Buffer = {
|
|
@@ -437,38 +524,103 @@ return ((`Buffer.fromHex("` + ff_core_Buffer.Buffer_toHex(value_)) + `")`)
|
|
|
437
524
|
|
|
438
525
|
export const ff_core_Equal_Equal$ff_core_Buffer_Buffer = {
|
|
439
526
|
equals_(x_, y_) {
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
527
|
+
if((ff_core_Buffer.Buffer_size(x_) !== ff_core_Buffer.Buffer_size(y_))) {
|
|
528
|
+
return false
|
|
529
|
+
} else {
|
|
530
|
+
if((x_ === y_)) {
|
|
531
|
+
return true
|
|
532
|
+
} else {
|
|
533
|
+
let i_ = 0;
|
|
534
|
+
let same_ = true;
|
|
535
|
+
while((((i_ + 4) < ff_core_Buffer.Buffer_size(x_)) && same_)) {
|
|
536
|
+
same_ = (x_.getInt32(i_) === y_.getInt32(i_));
|
|
537
|
+
i_ += 4
|
|
538
|
+
};
|
|
539
|
+
if((!same_)) {
|
|
540
|
+
return false
|
|
541
|
+
} else {
|
|
542
|
+
for(let for_i = i_, for_e = ff_core_Buffer.Buffer_size(x_); for_i < for_e; for_i++) {
|
|
543
|
+
const i_ = for_i;
|
|
544
|
+
same_ = (x_.getUint8(i_) === y_.getUint8(i_));
|
|
545
|
+
if(!same_) break
|
|
546
|
+
};
|
|
547
|
+
return same_
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
}
|
|
451
551
|
},
|
|
452
552
|
async equals_$(x_, y_, $task) {
|
|
453
|
-
|
|
553
|
+
if((ff_core_Buffer.Buffer_size(x_) !== ff_core_Buffer.Buffer_size(y_))) {
|
|
554
|
+
return false
|
|
555
|
+
} else {
|
|
556
|
+
if((x_ === y_)) {
|
|
557
|
+
return true
|
|
558
|
+
} else {
|
|
559
|
+
let i_ = 0;
|
|
560
|
+
let same_ = true;
|
|
561
|
+
while((((i_ + 4) < ff_core_Buffer.Buffer_size(x_)) && same_)) {
|
|
562
|
+
same_ = (x_.getInt32(i_) === y_.getInt32(i_));
|
|
563
|
+
i_ += 4
|
|
564
|
+
};
|
|
565
|
+
if((!same_)) {
|
|
566
|
+
return false
|
|
567
|
+
} else {
|
|
568
|
+
for(let for_i = i_, for_e = ff_core_Buffer.Buffer_size(x_); for_i < for_e; for_i++) {
|
|
569
|
+
const i_ = for_i;
|
|
570
|
+
same_ = (x_.getUint8(i_) === y_.getUint8(i_));
|
|
571
|
+
if(!same_) break
|
|
572
|
+
};
|
|
573
|
+
return same_
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
454
577
|
}
|
|
455
578
|
};
|
|
456
579
|
|
|
457
580
|
export const ff_core_Ordering_Order$ff_core_Buffer_Buffer = {
|
|
458
581
|
compare_(x_, y_) {
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
582
|
+
if((x_ === y_)) {
|
|
583
|
+
return ff_core_Ordering.OrderingSame()
|
|
584
|
+
} else {
|
|
585
|
+
const minLength_ = ff_core_Int.Int_min(ff_core_Buffer.Buffer_size(x_), ff_core_Buffer.Buffer_size(y_));
|
|
586
|
+
let ordering_ = ff_core_Ordering.OrderingSame();
|
|
587
|
+
for(let for_i = 0, for_e = minLength_; for_i < for_e; for_i++) {
|
|
588
|
+
const i_ = for_i;
|
|
589
|
+
if((x_.getUint8(i_) !== x_.getUint8(i_))) {
|
|
590
|
+
ordering_ = ff_core_Ordering.fromInt_((x_.getUint8(i_) - y_.getUint8(i_)));
|
|
591
|
+
if(!false) break
|
|
592
|
+
} else {
|
|
593
|
+
if(!true) break
|
|
594
|
+
}
|
|
595
|
+
};
|
|
596
|
+
if((ordering_ === ff_core_Ordering.OrderingSame())) {
|
|
597
|
+
return ff_core_Ordering.fromInt_((ff_core_Buffer.Buffer_size(x_) - ff_core_Buffer.Buffer_size(y_)))
|
|
598
|
+
} else {
|
|
599
|
+
return ordering_
|
|
600
|
+
}
|
|
601
|
+
}
|
|
469
602
|
},
|
|
470
603
|
async compare_$(x_, y_, $task) {
|
|
471
|
-
|
|
604
|
+
if((x_ === y_)) {
|
|
605
|
+
return ff_core_Ordering.OrderingSame()
|
|
606
|
+
} else {
|
|
607
|
+
const minLength_ = ff_core_Int.Int_min(ff_core_Buffer.Buffer_size(x_), ff_core_Buffer.Buffer_size(y_));
|
|
608
|
+
let ordering_ = ff_core_Ordering.OrderingSame();
|
|
609
|
+
for(let for_i = 0, for_e = minLength_; for_i < for_e; for_i++) {
|
|
610
|
+
const i_ = for_i;
|
|
611
|
+
if((x_.getUint8(i_) !== x_.getUint8(i_))) {
|
|
612
|
+
ordering_ = ff_core_Ordering.fromInt_((x_.getUint8(i_) - y_.getUint8(i_)));
|
|
613
|
+
if(!false) break
|
|
614
|
+
} else {
|
|
615
|
+
if(!true) break
|
|
616
|
+
}
|
|
617
|
+
};
|
|
618
|
+
if((ordering_ === ff_core_Ordering.OrderingSame())) {
|
|
619
|
+
return ff_core_Ordering.fromInt_((ff_core_Buffer.Buffer_size(x_) - ff_core_Buffer.Buffer_size(y_)))
|
|
620
|
+
} else {
|
|
621
|
+
return ordering_
|
|
622
|
+
}
|
|
623
|
+
}
|
|
472
624
|
}
|
|
473
625
|
};
|
|
474
626
|
|