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.
Files changed (225) hide show
  1. package/.hintrc +4 -4
  2. package/.vscode/settings.json +4 -4
  3. package/bin/Release.ff +157 -154
  4. package/bin/firefly.mjs +1 -1
  5. package/compiler/Builder.ff +275 -277
  6. package/compiler/Compiler.ff +234 -233
  7. package/compiler/Dependencies.ff +186 -187
  8. package/compiler/DependencyLock.ff +17 -17
  9. package/compiler/Deriver.ff +23 -31
  10. package/compiler/Dictionaries.ff +1 -1
  11. package/compiler/Inference.ff +43 -20
  12. package/compiler/JsEmitter.ff +1437 -1282
  13. package/compiler/LspHook.ff +202 -202
  14. package/compiler/Main.ff +25 -24
  15. package/compiler/ModuleCache.ff +178 -178
  16. package/compiler/Parser.ff +36 -109
  17. package/compiler/Resolver.ff +5 -8
  18. package/compiler/Substitution.ff +1 -1
  19. package/compiler/Syntax.ff +1 -16
  20. package/compiler/Token.ff +9 -0
  21. package/compiler/Tokenizer.ff +4 -0
  22. package/compiler/Workspace.ff +88 -88
  23. package/core/.firefly/include/package.json +5 -5
  24. package/core/.firefly/package.ff +2 -2
  25. package/core/Any.ff +26 -30
  26. package/core/Array.ff +298 -265
  27. package/core/Atomic.ff +63 -64
  28. package/core/Box.ff +7 -7
  29. package/core/BrowserSystem.ff +40 -40
  30. package/core/Buffer.ff +185 -152
  31. package/core/BuildSystem.ff +156 -148
  32. package/core/Channel.ff +95 -92
  33. package/core/Char.ff +3 -2
  34. package/core/Core.ff +16 -23
  35. package/core/Crypto.ff +94 -96
  36. package/core/Equal.ff +41 -36
  37. package/core/Error.ff +15 -10
  38. package/core/FileHandle.ff +45 -37
  39. package/core/Float.ff +176 -200
  40. package/core/HttpClient.ff +142 -148
  41. package/core/Instant.ff +6 -8
  42. package/core/Int.ff +40 -24
  43. package/core/IntMap.ff +61 -39
  44. package/core/Js.ff +305 -0
  45. package/core/JsSystem.ff +135 -114
  46. package/core/JsValue.ff +303 -159
  47. package/core/Json.ff +423 -443
  48. package/core/List.ff +482 -486
  49. package/core/Lock.ff +108 -144
  50. package/core/Log.ff +25 -14
  51. package/core/NodeSystem.ff +198 -191
  52. package/core/Ordering.ff +160 -161
  53. package/core/Path.ff +377 -409
  54. package/core/Queue.ff +90 -0
  55. package/core/Random.ff +140 -134
  56. package/core/RbMap.ff +216 -216
  57. package/core/Serializable.ff +16 -13
  58. package/core/Show.ff +44 -43
  59. package/core/SourceLocation.ff +68 -68
  60. package/core/Stream.ff +1 -1
  61. package/core/String.ff +224 -202
  62. package/core/StringMap.ff +58 -36
  63. package/core/Task.ff +165 -149
  64. package/experimental/benchmarks/ListGrab.ff +23 -23
  65. package/experimental/benchmarks/ListGrab.java +55 -55
  66. package/experimental/benchmarks/Pyrotek45.ff +30 -30
  67. package/experimental/benchmarks/Pyrotek45.java +64 -64
  68. package/experimental/bidirectional/Bidi.ff +88 -88
  69. package/experimental/lines/Main.ff +40 -0
  70. package/experimental/random/Index.ff +53 -53
  71. package/experimental/random/Process.ff +120 -120
  72. package/experimental/random/RunLength.ff +65 -65
  73. package/experimental/random/Scrape.ff +51 -51
  74. package/experimental/random/Symbols.ff +73 -73
  75. package/experimental/random/Tensor.ff +52 -52
  76. package/experimental/random/Units.ff +36 -36
  77. package/experimental/s3/S3TestAuthorizationHeader.ff +39 -39
  78. package/experimental/s3/S3TestPut.ff +16 -16
  79. package/experimental/tests/TestJson.ff +26 -26
  80. package/firefly.sh +0 -0
  81. package/fireflysite/.firefly/package.ff +4 -4
  82. package/fireflysite/CommunityOverview.ff +20 -20
  83. package/fireflysite/CountingButtonDemo.ff +58 -58
  84. package/fireflysite/DocumentParser.ff +325 -331
  85. package/fireflysite/ExamplesOverview.ff +40 -40
  86. package/fireflysite/FrontPage.ff +344 -344
  87. package/fireflysite/GettingStarted.ff +45 -45
  88. package/fireflysite/Guide.ff +456 -456
  89. package/fireflysite/Main.ff +163 -152
  90. package/fireflysite/MatchingPasswordsDemo.ff +82 -82
  91. package/fireflysite/PackagesOverview.ff +49 -49
  92. package/fireflysite/PostgresqlDemo.ff +34 -34
  93. package/fireflysite/ReferenceAll.ff +18 -18
  94. package/fireflysite/ReferenceIntroduction.ff +11 -11
  95. package/fireflysite/Styles.ff +567 -567
  96. package/fireflysite/Test.ff +121 -62
  97. package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -209
  98. package/fireflysite/assets/markdown/reference/EmittedJavascript.md +65 -65
  99. package/fireflysite/assets/markdown/reference/Exceptions.md +101 -101
  100. package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +364 -364
  101. package/fireflysite/assets/markdown/reference/JavascriptInterop.md +235 -172
  102. package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -162
  103. package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -48
  104. package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -224
  105. package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -86
  106. package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -99
  107. package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -100
  108. package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -184
  109. package/fireflysite/assets/markdown/scratch/ControlFlow.md +136 -136
  110. package/fireflysite/assets/markdown/scratch/Toc.md +40 -40
  111. package/lsp/.firefly/package.ff +1 -1
  112. package/lsp/CompletionHandler.ff +827 -827
  113. package/lsp/Handler.ff +714 -714
  114. package/lsp/HoverHandler.ff +79 -79
  115. package/lsp/LanguageServer.ff +272 -272
  116. package/lsp/SignatureHelpHandler.ff +55 -55
  117. package/lsp/SymbolHandler.ff +181 -181
  118. package/lsp/TestReferences.ff +17 -17
  119. package/lsp/TestReferencesCase.ff +7 -7
  120. package/lsp/stderr.txt +1 -1
  121. package/lsp/stdout.txt +34 -34
  122. package/lux/.firefly/package.ff +1 -1
  123. package/lux/Css.ff +648 -648
  124. package/lux/CssTest.ff +48 -48
  125. package/lux/Lux.ff +608 -617
  126. package/lux/LuxEvent.ff +79 -116
  127. package/lux/Main.ff +123 -123
  128. package/lux/Main2.ff +143 -143
  129. package/lux/TestDry.ff +28 -28
  130. package/output/js/ff/compiler/Builder.mjs +72 -71
  131. package/output/js/ff/compiler/Compiler.mjs +19 -13
  132. package/output/js/ff/compiler/Dependencies.mjs +8 -7
  133. package/output/js/ff/compiler/DependencyLock.mjs +6 -4
  134. package/output/js/ff/compiler/Deriver.mjs +26 -24
  135. package/output/js/ff/compiler/Dictionaries.mjs +14 -18
  136. package/output/js/ff/compiler/Environment.mjs +6 -4
  137. package/output/js/ff/compiler/Inference.mjs +238 -164
  138. package/output/js/ff/compiler/JsEmitter.mjs +1160 -350
  139. package/output/js/ff/compiler/JsImporter.mjs +20 -18
  140. package/output/js/ff/compiler/LspHook.mjs +12 -10
  141. package/output/js/ff/compiler/Main.mjs +61 -41
  142. package/output/js/ff/compiler/ModuleCache.mjs +10 -8
  143. package/output/js/ff/compiler/Parser.mjs +153 -669
  144. package/output/js/ff/compiler/Patterns.mjs +12 -10
  145. package/output/js/ff/compiler/Resolver.mjs +52 -78
  146. package/output/js/ff/compiler/Substitution.mjs +12 -16
  147. package/output/js/ff/compiler/Syntax.mjs +50 -341
  148. package/output/js/ff/compiler/Token.mjs +126 -4
  149. package/output/js/ff/compiler/Tokenizer.mjs +62 -52
  150. package/output/js/ff/compiler/Unification.mjs +74 -90
  151. package/output/js/ff/compiler/Wildcards.mjs +4 -2
  152. package/output/js/ff/compiler/Workspace.mjs +26 -20
  153. package/output/js/ff/core/Any.mjs +20 -20
  154. package/output/js/ff/core/Array.mjs +268 -175
  155. package/output/js/ff/core/AssetSystem.mjs +8 -6
  156. package/output/js/ff/core/Atomic.mjs +84 -52
  157. package/output/js/ff/core/Bool.mjs +6 -4
  158. package/output/js/ff/core/BrowserSystem.mjs +38 -29
  159. package/output/js/ff/core/Buffer.mjs +285 -133
  160. package/output/js/ff/core/BuildSystem.mjs +36 -56
  161. package/output/js/ff/core/Channel.mjs +250 -97
  162. package/output/js/ff/core/Char.mjs +5 -3
  163. package/output/js/ff/core/Core.mjs +28 -34
  164. package/output/js/ff/core/Crypto.mjs +30 -52
  165. package/output/js/ff/core/Duration.mjs +4 -2
  166. package/output/js/ff/core/Equal.mjs +14 -12
  167. package/output/js/ff/core/Error.mjs +17 -11
  168. package/output/js/ff/core/FileHandle.mjs +76 -38
  169. package/output/js/ff/core/Float.mjs +92 -160
  170. package/output/js/ff/core/HttpClient.mjs +208 -76
  171. package/output/js/ff/core/Instant.mjs +8 -10
  172. package/output/js/ff/core/Int.mjs +36 -26
  173. package/output/js/ff/core/IntMap.mjs +79 -33
  174. package/output/js/ff/core/Js.mjs +751 -0
  175. package/output/js/ff/core/JsSystem.mjs +54 -60
  176. package/output/js/ff/core/JsValue.mjs +294 -143
  177. package/output/js/ff/core/Json.mjs +443 -253
  178. package/output/js/ff/core/List.mjs +262 -214
  179. package/output/js/ff/core/Lock.mjs +156 -125
  180. package/output/js/ff/core/Log.mjs +20 -10
  181. package/output/js/ff/core/Map.mjs +10 -8
  182. package/output/js/ff/core/NodeSystem.mjs +189 -123
  183. package/output/js/ff/core/Nothing.mjs +4 -2
  184. package/output/js/ff/core/Option.mjs +40 -38
  185. package/output/js/ff/core/Ordering.mjs +26 -20
  186. package/output/js/ff/core/Pair.mjs +4 -2
  187. package/output/js/ff/core/Path.mjs +517 -315
  188. package/output/js/ff/core/Queue.mjs +306 -0
  189. package/output/js/ff/core/Random.mjs +141 -77
  190. package/output/js/ff/core/RbMap.mjs +36 -34
  191. package/output/js/ff/core/Serializable.mjs +44 -28
  192. package/output/js/ff/core/Set.mjs +6 -4
  193. package/output/js/ff/core/Show.mjs +8 -6
  194. package/output/js/ff/core/SourceLocation.mjs +4 -2
  195. package/output/js/ff/core/Stream.mjs +30 -50
  196. package/output/js/ff/core/String.mjs +263 -172
  197. package/output/js/ff/core/StringMap.mjs +77 -31
  198. package/output/js/ff/core/Task.mjs +91 -76
  199. package/output/js/ff/core/Try.mjs +20 -18
  200. package/output/js/ff/core/Unit.mjs +4 -2
  201. package/package.json +1 -1
  202. package/postgresql/Pg.ff +53 -59
  203. package/rpc/.firefly/package.ff +1 -1
  204. package/rpc/Rpc.ff +70 -70
  205. package/s3/.firefly/package.ff +1 -1
  206. package/s3/S3.ff +92 -94
  207. package/vscode/LICENSE.txt +21 -21
  208. package/vscode/Prepublish.ff +15 -15
  209. package/vscode/README.md +16 -16
  210. package/vscode/client/package-lock.json +544 -544
  211. package/vscode/client/package.json +22 -22
  212. package/vscode/client/src/extension.ts +104 -104
  213. package/vscode/icons/firefly-icon.svg +10 -10
  214. package/vscode/language-configuration.json +61 -61
  215. package/vscode/package-lock.json +3623 -3623
  216. package/vscode/package.json +1 -1
  217. package/vscode/snippets.json +241 -241
  218. package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
  219. package/webserver/.firefly/include/package.json +5 -5
  220. package/webserver/.firefly/package.ff +2 -2
  221. package/webserver/WebServer.ff +647 -685
  222. package/websocket/.firefly/package.ff +1 -1
  223. package/websocket/WebSocket.ff +100 -131
  224. package/core/UnsafeJs.ff +0 -42
  225. 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_ ? new SharedArrayBuffer(size_) : new ArrayBuffer(size_))
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(new Uint8Array(array_).buffer)
109
+ return (new DataView(Uint8Array(array_).buffer))
106
110
  }
107
111
 
108
112
  export function fromBufferList_(array_) {
109
-
110
- let length = 0
111
- for(let b of array_) length += b.byteLength
112
- const arrayBuffer = new ArrayBuffer(length);
113
- const result = new Uint8Array(arrayBuffer)
114
- let offset = 0
115
- for(let b of array_) {
116
- result.set(new Uint8Array(b.buffer, b.byteOffset, b.byteLength), offset)
117
- offset += b.byteLength
118
- }
119
- return new DataView(arrayBuffer)
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
- const hexValues = hex_.match(/.{1,2}/g) || []
126
- const numbers = hexValues.map(value => parseInt(value, 16))
127
- return new DataView(new Uint8Array(numbers).buffer)
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
- const binaryString = atob(base64_)
134
- const dataView = new DataView(new ArrayBuffer(binaryString.length))
135
- dataView.setUint8(binaryString.split('').map(char => char.charCodeAt(0)))
136
- return dataView
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
- throw new Error('Function new is missing on this target in async context.');
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
- throw new Error('Function fromByteList is missing on this target in async context.');
155
+ return (new DataView(Uint8Array(array_).buffer))
146
156
  }
147
157
 
148
158
  export async function fromBufferList_$(array_, $task) {
149
- throw new Error('Function fromBufferList is missing on this target in async context.');
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
- throw new Error('Function fromHex is missing on this target in async context.');
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
- throw new Error('Function fromBase64 is missing on this target in async context.');
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
- const high = self_.getUint32(byteOffset_ + (littleEndian_ ? 4 : 0), littleEndian_)
163
- const low = self_.getUint32(byteOffset_ + (littleEndian_ ? 0 : 4), littleEndian_)
164
- const result = (high * 0x100000000) + low
165
- if(!Number.isSafeInteger(result)) throw 'grabUint64 out of range (consider grabBigUint64)'
166
- return result
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
- const high = self_.getInt32(byteOffset_ + (littleEndian_ ? 4 : 0), littleEndian_)
173
- const low = self_.getUint32(byteOffset_ + (littleEndian_ ? 0 : 4), littleEndian_)
174
- const result = (high * 0x100000000) + low
175
- if(!Number.isSafeInteger(result)) throw 'grabInt64 out of range (consider grabBigInt64)'
176
- return result
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
- self_.setUint32(byteOffset_ + (littleEndian_ ? 4 : 0), (value_ >>> 16) >>> 16, littleEndian_)
215
- self_.setUint32(byteOffset_ + (littleEndian_ ? 0 : 4), value_ & 0xffffffff, littleEndian_)
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
- self_.setUint32(byteOffset_ + (littleEndian_ ? 4 : 0), (value_ >> 16) >> 16, littleEndian_)
222
- self_.setUint32(byteOffset_ + (littleEndian_ ? 0 : 4), value_ & 0xffffffff, littleEndian_)
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
- const sourceBuffer = new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength)
261
- const targetBuffer = new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength)
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 !== 'undefined' && self_.buffer instanceof 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
- if(encoding_ === "utf8") {
285
- if(typeof TextDecoder.ffSingleton === 'undefined') TextDecoder.ffSingleton = new TextDecoder()
286
- return TextDecoder.ffSingleton.decode(self_)
287
- }
288
- return new TextDecoder().decode(self_)
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
- let hex = ''
299
- for (let i = 0; i < self_.byteLength; i++) {
300
- hex += self_.getUint8(i).toString(16).padStart(2, '0')
301
- }
302
- return hex
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
- const view = new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength);
309
- return btoa(String.fromCharCode(...view));
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
- throw new Error('Function Buffer_grabUint64 is missing on this target in async context.');
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
- throw new Error('Function Buffer_grabInt64 is missing on this target in async context.');
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
- throw new Error('Function Buffer_grabFloat32 is missing on this target in async context.');
384
+ return self_.getFloat32(byteOffset_, littleEndian_)
323
385
  }
324
386
 
325
387
  export async function Buffer_grabFloat64$(self_, byteOffset_, littleEndian_ = true, $task) {
326
- throw new Error('Function Buffer_grabFloat64 is missing on this target in async context.');
388
+ return self_.getFloat64(byteOffset_, littleEndian_)
327
389
  }
328
390
 
329
391
  export async function Buffer_grabInt16$(self_, byteOffset_, littleEndian_ = true, $task) {
330
- throw new Error('Function Buffer_grabInt16 is missing on this target in async context.');
392
+ return self_.getInt16(byteOffset_, littleEndian_)
331
393
  }
332
394
 
333
395
  export async function Buffer_grabInt32$(self_, byteOffset_, littleEndian_ = true, $task) {
334
- throw new Error('Function Buffer_grabInt32 is missing on this target in async context.');
396
+ return self_.getInt32(byteOffset_, littleEndian_)
335
397
  }
336
398
 
337
399
  export async function Buffer_grabInt8$(self_, byteOffset_, $task) {
338
- throw new Error('Function Buffer_grabInt8 is missing on this target in async context.');
400
+ return self_.getInt8(byteOffset_)
339
401
  }
340
402
 
341
403
  export async function Buffer_grabUint16$(self_, byteOffset_, littleEndian_ = true, $task) {
342
- throw new Error('Function Buffer_grabUint16 is missing on this target in async context.');
404
+ return self_.getUint16(byteOffset_, littleEndian_)
343
405
  }
344
406
 
345
407
  export async function Buffer_grabUint32$(self_, byteOffset_, littleEndian_ = true, $task) {
346
- throw new Error('Function Buffer_grabUint32 is missing on this target in async context.');
408
+ return self_.getUint32(byteOffset_, littleEndian_)
347
409
  }
348
410
 
349
411
  export async function Buffer_grabUint8$(self_, byteOffset_, $task) {
350
- throw new Error('Function Buffer_grabUint8 is missing on this target in async context.');
412
+ return self_.getUint8(byteOffset_)
351
413
  }
352
414
 
353
415
  export async function Buffer_setUint64$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
354
- throw new Error('Function Buffer_setUint64 is missing on this target in async context.');
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
- throw new Error('Function Buffer_setInt64 is missing on this target in async context.');
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
- throw new Error('Function Buffer_setFloat32 is missing on this target in async context.');
434
+ self_.setFloat32(byteOffset_, value_, littleEndian_)
363
435
  }
364
436
 
365
437
  export async function Buffer_setFloat64$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
366
- throw new Error('Function Buffer_setFloat64 is missing on this target in async context.');
438
+ self_.setFloat64(byteOffset_, value_, littleEndian_)
367
439
  }
368
440
 
369
441
  export async function Buffer_setInt16$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
370
- throw new Error('Function Buffer_setInt16 is missing on this target in async context.');
442
+ self_.setInt16(byteOffset_, value_, littleEndian_)
371
443
  }
372
444
 
373
445
  export async function Buffer_setInt32$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
374
- throw new Error('Function Buffer_setInt32 is missing on this target in async context.');
446
+ self_.setInt32(byteOffset_, value_, littleEndian_)
375
447
  }
376
448
 
377
449
  export async function Buffer_setInt8$(self_, byteOffset_, value_, $task) {
378
- throw new Error('Function Buffer_setInt8 is missing on this target in async context.');
450
+ self_.setInt8(byteOffset_, value_)
379
451
  }
380
452
 
381
453
  export async function Buffer_setUint16$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
382
- throw new Error('Function Buffer_setUint16 is missing on this target in async context.');
454
+ self_.setUint16(byteOffset_, value_, littleEndian_)
383
455
  }
384
456
 
385
457
  export async function Buffer_setUint32$(self_, byteOffset_, value_, littleEndian_ = true, $task) {
386
- throw new Error('Function Buffer_setUint32 is missing on this target in async context.');
458
+ self_.setUint32(byteOffset_, value_, littleEndian_)
387
459
  }
388
460
 
389
461
  export async function Buffer_setUint8$(self_, byteOffset_, value_, $task) {
390
- throw new Error('Function Buffer_setUint8 is missing on this target in async context.');
462
+ self_.setUint8(byteOffset_, value_)
391
463
  }
392
464
 
393
465
  export async function Buffer_setAll$(self_, byteOffset_, buffer_, $task) {
394
- throw new Error('Function Buffer_setAll is missing on this target in async context.');
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
- throw new Error('Function Buffer_size is missing on this target in async context.');
472
+ return self_.byteLength
399
473
  }
400
474
 
401
475
  export async function Buffer_shared$(self_, $task) {
402
- throw new Error('Function Buffer_shared is missing on this target in async context.');
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
- throw new Error('Function Buffer_view is missing on this target in async context.');
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
- throw new Error('Function Buffer_copy is missing on this target in async context.');
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
- throw new Error('Function Buffer_toString is missing on this target in async context.');
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
- throw new Error('Function Buffer_toByteArray is missing on this target in async context.');
498
+ return [...(new Uint8Array(self_.buffer, self_.byteOffset, self_.byteLength))]
419
499
  }
420
500
 
421
501
  export async function Buffer_toHex$(self_, $task) {
422
- throw new Error('Function Buffer_toHex is missing on this target in async context.');
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
- throw new Error('Function Buffer_toBase64 is missing on this target in async context.');
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
- if(x_.buffer.byteLength !== y_.buffer.byteLength) return false
442
- if(x_.buffer === y_.buffer) return true
443
- for(let i = 0; i + 4 <= x_.buffer.byteLength; i += 4) {
444
- if(x_.getInt32(i) !== y_.getInt32(i)) return false
445
- }
446
- for(; i < x_.buffer.byteLength; i++) {
447
- if(x_.getUint8(i) !== y_.getUint8(i)) return false
448
- }
449
- return true
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
- throw new Error('Function equals is missing on this target in async context.');
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
- if(x_.buffer === y_.buffer) return ff_core_Ordering.OrderingSame()
461
- const minLength = Math.min(x_.buffer.byteLength, y_.buffer.byteLength)
462
- for(let i = 0; i < minLength; i++) {
463
- if(x_.getUint8(i) !== y_.getUint8(i)) {
464
- return ff_core_Ordering.fromInt_(x_.getUint8(i) - y_.getUint8(i))
465
- }
466
- }
467
- return ff_core_Ordering.fromInt_(x_.buffer.byteLength - y_.buffer.byteLength)
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
- throw new Error('Function compare is missing on this target in async context.');
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