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,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 Stream
96
98
  export function Stream(next_, close_) {
97
99
  return {next_, close_};
@@ -105,7 +107,7 @@ export function new_(next_, close_ = (() => {
105
107
  return ff_core_Stream.Stream(next_, close_)
106
108
  }
107
109
 
108
- export function init_(body_) {
110
+ export function do_(body_) {
109
111
  let initialized_ = false;
110
112
  let stream_ = ff_core_Stream.Stream((() => {
111
113
  return ff_core_Option.None()
@@ -132,7 +134,7 @@ export async function new_$(next_, close_ = (async ($task) => {
132
134
  return ff_core_Stream.Stream(next_, close_)
133
135
  }
134
136
 
135
- export async function init_$(body_, $task) {
137
+ export async function do_$(body_, $task) {
136
138
  let initialized_ = false;
137
139
  let stream_ = ff_core_Stream.Stream((async ($task) => {
138
140
  return ff_core_Option.None()
@@ -197,21 +199,19 @@ const i_ = _1;
197
199
  result_ = ff_core_Option.Some(i_)
198
200
  break
199
201
  }
200
- if(_1.None) {
202
+ {
201
203
  do {
202
204
  const _1 = self_.next_();
203
205
  if(_1.None) {
204
206
  result_ = ff_core_Option.Some(ff_core_Option.None())
205
207
  break
206
208
  }
207
- if(_1.Some) {
209
+ {
208
210
  const o_ = _1.value_;
209
211
  inner_.close_();
210
212
  inner_ = body_(o_)
211
- break
212
213
  }
213
214
  } while(false)
214
- break
215
215
  }
216
216
  } while(false)
217
217
  };
@@ -248,9 +248,8 @@ if(_1.Some) {
248
248
 
249
249
  break
250
250
  }
251
- if(_1.None) {
251
+ {
252
252
  result_ = ff_core_Option.Some(ff_core_Option.None())
253
- break
254
253
  }
255
254
  } while(false)
256
255
  };
@@ -304,9 +303,8 @@ if(_1.None) {
304
303
  remaining_ = 0
305
304
  break
306
305
  }
307
- if(_1.Some) {
306
+ {
308
307
  remaining_ -= 1
309
- break
310
308
  }
311
309
  } while(false)
312
310
  };
@@ -328,7 +326,7 @@ if(_1.None) {
328
326
  done_ = true;
329
327
  return ff_core_Option.None()
330
328
  }
331
- if(_1.Some) {
329
+ {
332
330
  const o_ = _1;
333
331
  const x_ = _1.value_;
334
332
  done_ = (!body_(x_));
@@ -365,12 +363,11 @@ if(body_(x_)) {
365
363
  break
366
364
  }
367
365
  }
368
- if(_1.Some) {
366
+ {
369
367
  const o_ = _1;
370
368
  const x_ = _1.value_;
371
369
  result_ = o_;
372
370
  done_ = true
373
- break
374
371
  }
375
372
  } while(false)
376
373
  };
@@ -404,7 +401,7 @@ if(_1.None) {
404
401
  remaining_ = (-1);
405
402
  return ff_core_Option.None()
406
403
  }
407
- if(_1.Some) {
404
+ {
408
405
  const x_ = _1.value_;
409
406
  let list_ = [x_];
410
407
  remaining_ -= 1;
@@ -416,10 +413,9 @@ if(_1.None) {
416
413
  remaining_ = (-1)
417
414
  break
418
415
  }
419
- if(_1.Some) {
416
+ {
420
417
  const x_ = _1.value_;
421
418
  list_ = [x_, ...list_]
422
- break
423
419
  }
424
420
  } while(false)
425
421
  };
@@ -453,10 +449,9 @@ if(_1.None) {
453
449
  done_ = true
454
450
  break
455
451
  }
456
- if(_1.Some) {
452
+ {
457
453
  const x_ = _1.value_;
458
454
  body_(x_)
459
- break
460
455
  }
461
456
  } while(false)
462
457
  }
@@ -475,10 +470,9 @@ if(_1.None) {
475
470
  done_ = true
476
471
  break
477
472
  }
478
- if(_1.Some) {
473
+ {
479
474
  const x_ = _1.value_;
480
475
  done_ = (!body_(x_))
481
- break
482
476
  }
483
477
  } while(false)
484
478
  }
@@ -524,11 +518,10 @@ if(_1.None) {
524
518
  done_ = true
525
519
  break
526
520
  }
527
- if(_1.Some) {
521
+ {
528
522
  const o_ = _1;
529
523
  const x_ = _1.value_;
530
524
  result_ = o_
531
- break
532
525
  }
533
526
  } while(false)
534
527
  };
@@ -561,7 +554,7 @@ if(_1.None) {
561
554
  done_ = true
562
555
  break
563
556
  }
564
- if(_1.Some) {
557
+ {
565
558
  const x_ = _1.value_;
566
559
  do {
567
560
  const _1 = body_(x_);
@@ -573,10 +566,8 @@ break
573
566
  const o_ = _1;
574
567
  done_ = true;
575
568
  result_ = o_
576
- break
577
569
  }
578
570
  } while(false)
579
- break
580
571
  }
581
572
  } while(false)
582
573
  };
@@ -654,21 +645,19 @@ const i_ = _1;
654
645
  result_ = ff_core_Option.Some(i_)
655
646
  break
656
647
  }
657
- if(_1.None) {
648
+ {
658
649
  do {
659
650
  const _1 = (await self_.next_($task));
660
651
  if(_1.None) {
661
652
  result_ = ff_core_Option.Some(ff_core_Option.None())
662
653
  break
663
654
  }
664
- if(_1.Some) {
655
+ {
665
656
  const o_ = _1.value_;
666
657
  (await inner_.close_($task));
667
658
  inner_ = (await body_(o_, $task))
668
- break
669
659
  }
670
660
  } while(false)
671
- break
672
661
  }
673
662
  } while(false)
674
663
  };
@@ -705,9 +694,8 @@ if(_1.Some) {
705
694
 
706
695
  break
707
696
  }
708
- if(_1.None) {
697
+ {
709
698
  result_ = ff_core_Option.Some(ff_core_Option.None())
710
- break
711
699
  }
712
700
  } while(false)
713
701
  };
@@ -761,9 +749,8 @@ if(_1.None) {
761
749
  remaining_ = 0
762
750
  break
763
751
  }
764
- if(_1.Some) {
752
+ {
765
753
  remaining_ -= 1
766
- break
767
754
  }
768
755
  } while(false)
769
756
  };
@@ -785,7 +772,7 @@ if(_1.None) {
785
772
  done_ = true;
786
773
  return ff_core_Option.None()
787
774
  }
788
- if(_1.Some) {
775
+ {
789
776
  const o_ = _1;
790
777
  const x_ = _1.value_;
791
778
  done_ = (!(await body_(x_, $task)));
@@ -822,12 +809,11 @@ if((await body_(x_, $task))) {
822
809
  break
823
810
  }
824
811
  }
825
- if(_1.Some) {
812
+ {
826
813
  const o_ = _1;
827
814
  const x_ = _1.value_;
828
815
  result_ = o_;
829
816
  done_ = true
830
- break
831
817
  }
832
818
  } while(false)
833
819
  };
@@ -861,7 +847,7 @@ if(_1.None) {
861
847
  remaining_ = (-1);
862
848
  return ff_core_Option.None()
863
849
  }
864
- if(_1.Some) {
850
+ {
865
851
  const x_ = _1.value_;
866
852
  let list_ = [x_];
867
853
  remaining_ -= 1;
@@ -873,10 +859,9 @@ if(_1.None) {
873
859
  remaining_ = (-1)
874
860
  break
875
861
  }
876
- if(_1.Some) {
862
+ {
877
863
  const x_ = _1.value_;
878
864
  list_ = [x_, ...list_]
879
- break
880
865
  }
881
866
  } while(false)
882
867
  };
@@ -910,10 +895,9 @@ if(_1.None) {
910
895
  done_ = true
911
896
  break
912
897
  }
913
- if(_1.Some) {
898
+ {
914
899
  const x_ = _1.value_;
915
900
  (await body_(x_, $task))
916
- break
917
901
  }
918
902
  } while(false)
919
903
  }
@@ -932,10 +916,9 @@ if(_1.None) {
932
916
  done_ = true
933
917
  break
934
918
  }
935
- if(_1.Some) {
919
+ {
936
920
  const x_ = _1.value_;
937
921
  done_ = (!(await body_(x_, $task)))
938
- break
939
922
  }
940
923
  } while(false)
941
924
  }
@@ -981,11 +964,10 @@ if(_1.None) {
981
964
  done_ = true
982
965
  break
983
966
  }
984
- if(_1.Some) {
967
+ {
985
968
  const o_ = _1;
986
969
  const x_ = _1.value_;
987
970
  result_ = o_
988
- break
989
971
  }
990
972
  } while(false)
991
973
  };
@@ -1018,7 +1000,7 @@ if(_1.None) {
1018
1000
  done_ = true
1019
1001
  break
1020
1002
  }
1021
- if(_1.Some) {
1003
+ {
1022
1004
  const x_ = _1.value_;
1023
1005
  do {
1024
1006
  const _1 = (await body_(x_, $task));
@@ -1030,10 +1012,8 @@ break
1030
1012
  const o_ = _1;
1031
1013
  done_ = true;
1032
1014
  result_ = o_
1033
- break
1034
1015
  }
1035
1016
  } while(false)
1036
- break
1037
1017
  }
1038
1018
  } while(false)
1039
1019
  };