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 Try
96
98
  export function Success(value_) {
97
99
  return {Success: true, value_};
@@ -120,7 +122,7 @@ return body_(value_)
120
122
  }))
121
123
  return
122
124
  }
123
- if(_1.Failure) {
125
+ {
124
126
  const error_ = _1.error_;
125
127
  return ff_core_Try.Failure(error_)
126
128
  }
@@ -171,7 +173,7 @@ const value_ = _1.value_;
171
173
  body_();
172
174
  return value_
173
175
  }
174
- if(_1.Failure) {
176
+ {
175
177
  body_();
176
178
  return ff_core_Try.Try_grab(self_)
177
179
  }
@@ -227,7 +229,7 @@ return value_
227
229
  }))
228
230
  return
229
231
  }
230
- if(_1.Failure) {
232
+ {
231
233
  {
232
234
  const _1 = ff_core_Core.try_((() => {
233
235
  return body_()
@@ -235,7 +237,7 @@ return body_()
235
237
  if(_1.Success) {
236
238
  return self_
237
239
  }
238
- if(_1.Failure) {
240
+ {
239
241
  const error_ = _1.error_;
240
242
  return ff_core_Try.Failure(error_)
241
243
  }
@@ -252,7 +254,7 @@ if(_1.Success) {
252
254
  const value_ = _1.value_;
253
255
  return value_
254
256
  }
255
- if(_1.Failure) {
257
+ {
256
258
  return body_()
257
259
  }
258
260
  }
@@ -265,7 +267,7 @@ if(_1.Success) {
265
267
  const value_ = _1.value_;
266
268
  return value_
267
269
  }
268
- if(_1.Failure) {
270
+ {
269
271
  const error_ = _1.error_;
270
272
  return ff_core_Error.Error_rethrow(error_)
271
273
  }
@@ -279,7 +281,7 @@ if(_1.Success) {
279
281
  const value_ = _1.value_;
280
282
  return ff_core_Option.Some(value_)
281
283
  }
282
- if(_1.Failure) {
284
+ {
283
285
  return ff_core_Option.None()
284
286
  }
285
287
  }
@@ -295,7 +297,7 @@ return (await body_(value_, $task))
295
297
  }), $task))
296
298
  return
297
299
  }
298
- if(_1.Failure) {
300
+ {
299
301
  const error_ = _1.error_;
300
302
  return ff_core_Try.Failure(error_)
301
303
  }
@@ -346,7 +348,7 @@ const value_ = _1.value_;
346
348
  (await body_($task));
347
349
  return value_
348
350
  }
349
- if(_1.Failure) {
351
+ {
350
352
  (await body_($task));
351
353
  return ff_core_Try.Try_grab(self_)
352
354
  }
@@ -402,7 +404,7 @@ return value_
402
404
  }), $task))
403
405
  return
404
406
  }
405
- if(_1.Failure) {
407
+ {
406
408
  {
407
409
  const _1 = (await ff_core_Core.try_$((async ($task) => {
408
410
  return (await body_($task))
@@ -410,7 +412,7 @@ return (await body_($task))
410
412
  if(_1.Success) {
411
413
  return self_
412
414
  }
413
- if(_1.Failure) {
415
+ {
414
416
  const error_ = _1.error_;
415
417
  return ff_core_Try.Failure(error_)
416
418
  }
@@ -427,7 +429,7 @@ if(_1.Success) {
427
429
  const value_ = _1.value_;
428
430
  return value_
429
431
  }
430
- if(_1.Failure) {
432
+ {
431
433
  return (await body_($task))
432
434
  }
433
435
  }
@@ -440,7 +442,7 @@ if(_1.Success) {
440
442
  const value_ = _1.value_;
441
443
  return value_
442
444
  }
443
- if(_1.Failure) {
445
+ {
444
446
  const error_ = _1.error_;
445
447
  return ff_core_Error.Error_rethrow(error_)
446
448
  }
@@ -454,7 +456,7 @@ if(_1.Success) {
454
456
  const value_ = _1.value_;
455
457
  return ff_core_Option.Some(value_)
456
458
  }
457
- if(_1.Failure) {
459
+ {
458
460
  return ff_core_Option.None()
459
461
  }
460
462
  }
@@ -471,7 +473,7 @@ if(_1.Success && _1.value_.Failure) {
471
473
  const t_ = _1.value_;
472
474
  return t_
473
475
  }
474
- if(_1.Failure) {
476
+ {
475
477
  const error_ = _1.error_;
476
478
  return ff_core_Try.Failure(error_)
477
479
  }
@@ -489,7 +491,7 @@ if(_1.Success && _1.value_.Failure) {
489
491
  const t_ = _1.value_;
490
492
  return t_
491
493
  }
492
- if(_1.Failure) {
494
+ {
493
495
  const error_ = _1.error_;
494
496
  return ff_core_Try.Failure(error_)
495
497
  }
@@ -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 Unit
96
98
  const Unit$ = {Unit: true};
97
99
  export function Unit() {
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "description": "Firefly compiler",
5
5
  "author": "Firefly team",
6
6
  "license": "MIT",
7
- "version": "0.5.35",
7
+ "version": "0.5.37",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "https://github.com/Ahnfelt/firefly-boot"
package/postgresql/Pg.ff CHANGED
@@ -20,14 +20,13 @@ newPool(
20
20
  maxConnections: Int = 10
21
21
  allowExitOnIdle: Bool = True
22
22
  ): PgPool {
23
- UnsafeJs.throwIfCancelled()
24
- let js = UnsafeJs.jsSystem()
25
- let pg = UnsafeJs.import("pg").get("default")
26
- PgPool(pg.get("Pool").new1(js.object()
23
+ Js.throwIfCancelled()
24
+ let pg = Js.import("pg").get("default")
25
+ PgPool(pg.get("Pool").new1(Js.object()
27
26
  .with("user", user)
28
27
  .with("host", host)
29
28
  .with("database", database)
30
- .with("password", js.function0(password))
29
+ .with("password", Js.function0(password))
31
30
  .with("port", port)
32
31
  .with("connectionTimeoutMillis", connectionTimeout.seconds * 1000)
33
32
  .with("idleTimeoutMillis", idleTimeout.seconds * 1000)
@@ -44,10 +43,9 @@ newPoolFromConnectionString(
44
43
  maxConnections: Int = 10
45
44
  allowExitOnIdle: Bool = True
46
45
  ): PgPool {
47
- UnsafeJs.throwIfCancelled()
48
- let js = UnsafeJs.jsSystem()
49
- let pg = UnsafeJs.import("pg").get("default")
50
- PgPool(pg.get("Pool").new1(js.object()
46
+ Js.throwIfCancelled()
47
+ let pg = Js.import("pg").get("default")
48
+ PgPool(pg.get("Pool").new1(Js.object()
51
49
  .with("connectionString", connectionString)
52
50
  .with("connectionTimeoutMillis", connectionTimeout.seconds * 1000)
53
51
  .with("idleTimeoutMillis", idleTimeout.seconds * 1000)
@@ -59,24 +57,24 @@ newPoolFromConnectionString(
59
57
  extend self: PgPool {
60
58
 
61
59
  connect(): PgConnection {
62
- UnsafeJs.throwIfCancelled()
63
- PgConnection(UnsafeJs.await {self.jsValue.call0("connect")})
60
+ Js.throwIfCancelled()
61
+ PgConnection(Js.await(self.jsValue->connect()))
64
62
  }
65
63
 
66
64
  close(): Unit {
67
- UnsafeJs.await {self.jsValue.call0("end")}
65
+ Js.await(self.jsValue->end())
68
66
  }
69
67
 
70
68
  connectionCount(): Int {
71
- self.jsValue.get("totalCount").grabInt()
69
+ self.jsValue->totalCount.grabInt()
72
70
  }
73
71
 
74
72
  idleCount(): Int {
75
- self.jsValue.get("idleCount").grabInt()
73
+ self.jsValue->idleCount.grabInt()
76
74
  }
77
75
 
78
76
  waitingCount(): Int {
79
- self.jsValue.get("waitingCount").grabInt()
77
+ self.jsValue->waitingCount.grabInt()
80
78
  }
81
79
 
82
80
  transaction[T](body: PgConnection => T, level: PgLevel = PgReadCommitted): T {
@@ -104,10 +102,10 @@ extend self: PgPool {
104
102
  extend self: PgConnection {
105
103
 
106
104
  release(): Unit {
107
- if(UnsafeJs.cancelled()) {
108
- self.jsValue.call1("release", True)
105
+ if(Js.cancelled()) {
106
+ self.jsValue->release(True)
109
107
  } else {
110
- self.jsValue.call0("release")
108
+ self.jsValue->release()
111
109
  }
112
110
  }
113
111
 
@@ -148,138 +146,134 @@ extend self: PgConnection {
148
146
  extend self: PgStatement {
149
147
 
150
148
  withBool(name: String, value: Bool): PgStatement {
151
- let p = UnsafeJs.jsSystem().value(value)
149
+ let p = Js.jsSystem().value(value)
152
150
  self.PgStatement(parameters = self.parameters.add(name, p))
153
151
  }
154
152
 
155
153
  withNullableBool(name: String, value: Option[Bool]): PgStatement {
156
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
154
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
157
155
  self.PgStatement(parameters = self.parameters.add(name, p))
158
156
  }
159
157
 
160
158
  withInt(name: String, value: Int): PgStatement {
161
- let p = UnsafeJs.jsSystem().value(value)
159
+ let p = Js.jsSystem().value(value)
162
160
  self.PgStatement(parameters = self.parameters.add(name, p))
163
161
  }
164
162
 
165
163
  withNullableInt(name: String, value: Option[Int]): PgStatement {
166
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
164
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
167
165
  self.PgStatement(parameters = self.parameters.add(name, p))
168
166
  }
169
167
 
170
168
  withFloat(name: String, value: Float): PgStatement {
171
- let p = UnsafeJs.jsSystem().value(value)
169
+ let p = Js.jsSystem().value(value)
172
170
  self.PgStatement(parameters = self.parameters.add(name, p))
173
171
  }
174
172
 
175
173
  withNullableFloat(name: String, value: Option[Float]): PgStatement {
176
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
174
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
177
175
  self.PgStatement(parameters = self.parameters.add(name, p))
178
176
  }
179
177
 
180
178
  withString(name: String, value: String): PgStatement {
181
- let p = UnsafeJs.jsSystem().value(value)
179
+ let p = Js.jsSystem().value(value)
182
180
  self.PgStatement(parameters = self.parameters.add(name, p))
183
181
  }
184
182
 
185
183
  withNullableString(name: String, value: Option[String]): PgStatement {
186
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
184
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
187
185
  self.PgStatement(parameters = self.parameters.add(name, p))
188
186
  }
189
187
 
190
188
  withInstant(name: String, value: Instant): PgStatement {
191
- let jsDate = UnsafeJs.jsSystem().globalThis().get("Date")
192
189
  function toJsDate(instant: Instant): JsValue {
193
- jsDate.new1(instant.since1970.seconds * 1000.0)
190
+ Js->Date->(instant.since1970.seconds * 1000.0)
194
191
  }
195
192
  let p = toJsDate(value)
196
193
  self.PgStatement(parameters = self.parameters.add(name, p))
197
194
  }
198
195
 
199
196
  withNullableInstant(name: String, value: Option[Instant]): PgStatement {
200
- let jsDate = UnsafeJs.jsSystem().globalThis().get("Date")
201
197
  function toJsDate(instant: Instant): JsValue {
202
- jsDate.new1(instant.since1970.seconds * 1000.0)
198
+ Js->Date->(instant.since1970.seconds * 1000.0)
203
199
  }
204
- let p = value.map(toJsDate).else {UnsafeJs.jsSystem().null()}
200
+ let p = value.map(toJsDate).else {Js.null()}
205
201
  self.PgStatement(parameters = self.parameters.add(name, p))
206
202
  }
207
203
 
208
204
  withBuffer(name: String, value: Buffer): PgStatement {
209
- let p = UnsafeJs.jsSystem().value(value)
205
+ let p = Js.jsSystem().value(value)
210
206
  self.PgStatement(parameters = self.parameters.add(name, p))
211
207
  }
212
208
 
213
209
  withNullableBuffer(name: String, value: Option[Buffer]): PgStatement {
214
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
210
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
215
211
  self.PgStatement(parameters = self.parameters.add(name, p))
216
212
  }
217
213
 
218
214
  withBoolArray(name: String, value: List[Bool]): PgStatement {
219
- let p = UnsafeJs.jsSystem().value(value)
215
+ let p = Js.jsSystem().value(value)
220
216
  self.PgStatement(parameters = self.parameters.add(name, p))
221
217
  }
222
218
 
223
219
  withNullableBoolArray(name: String, value: Option[List[Bool]]): PgStatement {
224
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
220
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
225
221
  self.PgStatement(parameters = self.parameters.add(name, p))
226
222
  }
227
223
 
228
224
  withIntArray(name: String, value: List[Int]): PgStatement {
229
- let p = UnsafeJs.jsSystem().value(value)
225
+ let p = Js.jsSystem().value(value)
230
226
  self.PgStatement(parameters = self.parameters.add(name, p))
231
227
  }
232
228
 
233
229
  withNullableIntArray(name: String, value: Option[List[Int]]): PgStatement {
234
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
230
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
235
231
  self.PgStatement(parameters = self.parameters.add(name, p))
236
232
  }
237
233
 
238
234
  withFloatArray(name: String, value: List[Float]): PgStatement {
239
- let p = UnsafeJs.jsSystem().value(value)
235
+ let p = Js.jsSystem().value(value)
240
236
  self.PgStatement(parameters = self.parameters.add(name, p))
241
237
  }
242
238
 
243
239
  withNullableFloatArray(name: String, value: Option[List[Float]]): PgStatement {
244
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
240
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
245
241
  self.PgStatement(parameters = self.parameters.add(name, p))
246
242
  }
247
243
 
248
244
  withStringArray(name: String, value: List[String]): PgStatement {
249
- let p = UnsafeJs.jsSystem().value(value)
245
+ let p = Js.jsSystem().value(value)
250
246
  self.PgStatement(parameters = self.parameters.add(name, p))
251
247
  }
252
248
 
253
249
  withNullableStringArray(name: String, value: Option[List[String]]): PgStatement {
254
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
250
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
255
251
  self.PgStatement(parameters = self.parameters.add(name, p))
256
252
  }
257
253
 
258
254
  withInstantArray(name: String, value: List[Instant]): PgStatement {
259
- let jsDate = UnsafeJs.jsSystem().globalThis().get("Date")
260
255
  function toJsDate(instant: Instant): JsValue {
261
- jsDate.new1(instant.since1970.seconds * 1000.0)
256
+ Js->Date->(instant.since1970.seconds * 1000.0)
262
257
  }
263
- let p = UnsafeJs.jsSystem().value(value.map(toJsDate))
258
+ let p = Js.jsSystem().value(value.map(toJsDate))
264
259
  self.PgStatement(parameters = self.parameters.add(name, p))
265
260
  }
266
261
 
267
262
  withNullableInstantArray(name: String, value: Option[List[Instant]]): PgStatement {
268
- let jsDate = UnsafeJs.jsSystem().globalThis().get("Date")
269
263
  function toJsDate(instant: Instant): JsValue {
270
- jsDate.new1(instant.since1970.seconds * 1000.0)
264
+ Js->Date->(instant.since1970.seconds * 1000.0)
271
265
  }
272
- let p = value.map {_.map(toJsDate)}.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
266
+ let p = value.map {_.map(toJsDate)}.map(Js.jsSystem().value).else {Js.null()}
273
267
  self.PgStatement(parameters = self.parameters.add(name, p))
274
268
  }
275
269
 
276
270
  withBufferArray(name: String, value: List[Buffer]): PgStatement {
277
- let p = UnsafeJs.jsSystem().value(value)
271
+ let p = Js.jsSystem().value(value)
278
272
  self.PgStatement(parameters = self.parameters.add(name, p))
279
273
  }
280
274
 
281
275
  withNullableBufferArray(name: String, value: Option[List[Buffer]]): PgStatement {
282
- let p = value.map(UnsafeJs.jsSystem().value).else {UnsafeJs.jsSystem().null()}
276
+ let p = value.map(Js.jsSystem().value).else {Js.null()}
283
277
  self.PgStatement(parameters = self.parameters.add(name, p))
284
278
  }
285
279
 
@@ -292,7 +286,7 @@ extend self: PgStatement {
292
286
  }
293
287
 
294
288
  any(body: PgRow => Bool): Bool {
295
- !self.all { row =>
289
+ !self.all {row =>
296
290
  !body(row)
297
291
  }
298
292
  }
@@ -374,10 +368,10 @@ internalGet[T](row: PgRow, name: String, lower: Bool, body: JsValue => T): Optio
374
368
  }
375
369
 
376
370
  internalRunStatement(statement: PgStatement, body: Option[PgRow => Bool]): Int {
377
- UnsafeJs.throwIfCancelled()
371
+ Js.throwIfCancelled()
378
372
  let pair = internalParseParameters(statement.sql)
379
373
  let parameters = internalCheckParameters(pair.second, statement.parameters)
380
- let result = UnsafeJs.await {statement.connection.grab().jsValue.call2("query", pair.first, parameters)}
374
+ let result = Js.await(statement.connection.grab().jsValue->query(pair.first, parameters))
381
375
  body.{
382
376
  | None =>
383
377
  result.get("rowCount").grabInt()
@@ -398,7 +392,7 @@ internalBatchStatements(
398
392
  let sqlCache = statements.map {s => Pair(s.sql, s.sql)}.group().map {sql, list =>
399
393
  let pair = internalParseParameters(sql)
400
394
  let prepared = if(list.size() >= 10) {
401
- let hash = UnsafeJs.import("crypto")
395
+ let hash = Js.import("crypto")
402
396
  .call1("createHash", "md5")
403
397
  .call1("update", pair.first)
404
398
  .call1("update", "ffpgps")
@@ -408,18 +402,18 @@ internalBatchStatements(
408
402
  Pair(sql, (newSql = pair.first, parameterNames = pair.second, prepared = prepared))
409
403
  }
410
404
  let promises = statements.map {statement =>
411
- UnsafeJs.throwIfCancelled()
405
+ Js.throwIfCancelled()
412
406
  let record = sqlCache.grab(statement.sql)
413
407
  let parameters = internalCheckParameters(record.parameterNames, statement.parameters)
414
- let query = UnsafeJs.jsSystem().object()
408
+ let query = Js.object()
415
409
  .with("text", record.newSql)
416
410
  .with("values", parameters)
417
- connection.jsValue.call1("query", record.prepared.map {query.with("name", _)}.else {query})
411
+ connection.jsValue->query(record.prepared.map {query.with("name", _)}.else {query})
418
412
  }
419
413
  let results = promises.map {promise =>
420
- UnsafeJs.throwIfCancelled()
421
- let result = UnsafeJs.await {promise }
422
- UnsafeJs.throwIfCancelled()
414
+ Js.throwIfCancelled()
415
+ let result = Js.await(promise)
416
+ Js.throwIfCancelled()
423
417
  body.{
424
418
  | None =>
425
419
  result.get("rowCount").grabInt()
@@ -1 +1 @@
1
- package ff:rpc:0.0.0
1
+ package ff:rpc:0.0.0
package/rpc/Rpc.ff CHANGED
@@ -1,70 +1,70 @@
1
- trait I: Rpc[O] {}
2
-
3
- capability RpcServer[I, O, C](
4
- handlers: StringMap[(C, I) => O]
5
- )
6
-
7
- newServer[I, O, C](): RpcServer[I, O, C] {
8
- RpcServer(StringMap.new())
9
- }
10
-
11
- extend self[I, O, C]: RpcServer[I, O, C] {
12
- handle(name: String, context: C, input: I): Option[O] {
13
- self.handlers.get(name).map {handler =>
14
- handler(context, input)
15
- }
16
- }
17
-
18
- addCustom(
19
- handler: (C, I) => O
20
- ): Unit {
21
- let name = "TODO"
22
- self.handlers.set(name) {context, input =>
23
- handler(context, input)
24
- }
25
- }
26
- }
27
-
28
- extend self[C]: RpcServer[Buffer, Buffer, C] {
29
- add[I: Rpc[O]: HasAnyTag: Serializable, O: Serializable](
30
- handler: (C, I) => O
31
- ): Unit {
32
- let name = Any.anyTag[I]().show()
33
- self.handlers.set(name) {context, message =>
34
- let input = Serializable.deserialize(message)
35
- let output = handler(context, input)
36
- Serializable.serialize(output)
37
- }
38
- }
39
- }
40
-
41
- capability RpcClient(
42
- binaryCall: (String, Buffer) => Buffer
43
- )
44
-
45
- extend self: RpcClient {
46
- call[I: Rpc[O]: HasAnyTag: Serializable, O: Serializable](
47
- message: I
48
- ): O {
49
- let name = Any.anyTag[I]().show()
50
- let input = Serializable.serialize(message)
51
- let response = self.binaryCall(name, input)
52
- Serializable.deserialize(response)
53
- }
54
- }
55
-
56
- newClient(
57
- httpClient: HttpClient
58
- prefix: String
59
- method: String = "POST"
60
- ): RpcClient {
61
- RpcClient {name, buffer =>
62
- httpClient.fetch(
63
- method = method
64
- url = prefix + name
65
- headers = []
66
- payload = Some(buffer)
67
- options = FetchOptions()
68
- ) {_.readBuffer()}
69
- }
70
- }
1
+ trait I: Rpc[O] {}
2
+
3
+ capability RpcServer[I, O, C](
4
+ handlers: StringMap[(C, I) => O]
5
+ )
6
+
7
+ newServer[I, O, C](): RpcServer[I, O, C] {
8
+ RpcServer(StringMap.new())
9
+ }
10
+
11
+ extend self[I, O, C]: RpcServer[I, O, C] {
12
+ handle(name: String, context: C, input: I): Option[O] {
13
+ self.handlers.get(name).map {handler =>
14
+ handler(context, input)
15
+ }
16
+ }
17
+
18
+ addCustom(
19
+ handler: (C, I) => O
20
+ ): Unit {
21
+ let name = "TODO"
22
+ self.handlers.set(name) {context, input =>
23
+ handler(context, input)
24
+ }
25
+ }
26
+ }
27
+
28
+ extend self[C]: RpcServer[Buffer, Buffer, C] {
29
+ add[I: Rpc[O]: HasAnyTag: Serializable, O: Serializable](
30
+ handler: (C, I) => O
31
+ ): Unit {
32
+ let name = Any.anyTag[I]().show()
33
+ self.handlers.set(name) {context, message =>
34
+ let input = Serializable.deserialize(message)
35
+ let output = handler(context, input)
36
+ Serializable.serialize(output)
37
+ }
38
+ }
39
+ }
40
+
41
+ capability RpcClient(
42
+ binaryCall: (String, Buffer) => Buffer
43
+ )
44
+
45
+ extend self: RpcClient {
46
+ call[I: Rpc[O]: HasAnyTag: Serializable, O: Serializable](
47
+ message: I
48
+ ): O {
49
+ let name = Any.anyTag[I]().show()
50
+ let input = Serializable.serialize(message)
51
+ let response = self.binaryCall(name, input)
52
+ Serializable.deserialize(response)
53
+ }
54
+ }
55
+
56
+ newClient(
57
+ httpClient: HttpClient
58
+ prefix: String
59
+ method: String = "POST"
60
+ ): RpcClient {
61
+ RpcClient {name, buffer =>
62
+ httpClient.fetch(
63
+ method = method
64
+ url = prefix + name
65
+ headers = []
66
+ payload = Some(buffer)
67
+ options = FetchOptions()
68
+ ) {_.readBuffer()}
69
+ }
70
+ }
@@ -1 +1 @@
1
- package ff:s3:0.0.0
1
+ package ff:s3:0.0.0