firefly-compiler 0.5.39 → 0.5.41

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 (129) hide show
  1. package/.hintrc +4 -4
  2. package/.vscode/settings.json +4 -4
  3. package/bin/Release.ff +158 -157
  4. package/bin/firefly.mjs +1 -1
  5. package/compiler/Builder.ff +275 -275
  6. package/compiler/Compiler.ff +234 -234
  7. package/compiler/Dependencies.ff +186 -186
  8. package/compiler/DependencyLock.ff +17 -17
  9. package/compiler/JsEmitter.ff +1437 -1437
  10. package/compiler/LspHook.ff +202 -202
  11. package/compiler/ModuleCache.ff +178 -178
  12. package/compiler/Workspace.ff +88 -88
  13. package/core/.firefly/include/package.json +5 -5
  14. package/core/.firefly/package.ff +2 -2
  15. package/core/Any.ff +25 -25
  16. package/core/Array.ff +298 -298
  17. package/core/Atomic.ff +63 -63
  18. package/core/Box.ff +7 -7
  19. package/core/BrowserSystem.ff +40 -40
  20. package/core/BuildSystem.ff +156 -156
  21. package/core/Crypto.ff +94 -94
  22. package/core/Equal.ff +41 -41
  23. package/core/Error.ff +25 -25
  24. package/core/HttpClient.ff +142 -142
  25. package/core/Instant.ff +24 -24
  26. package/core/Js.ff +305 -305
  27. package/core/JsSystem.ff +135 -135
  28. package/core/Json.ff +423 -423
  29. package/core/List.ff +482 -482
  30. package/core/Lock.ff +108 -108
  31. package/core/NodeSystem.ff +198 -198
  32. package/core/Ordering.ff +160 -160
  33. package/core/Path.ff +377 -378
  34. package/core/Queue.ff +90 -90
  35. package/core/Random.ff +140 -140
  36. package/core/RbMap.ff +216 -216
  37. package/core/Show.ff +44 -44
  38. package/core/SourceLocation.ff +68 -68
  39. package/core/Task.ff +165 -165
  40. package/experimental/benchmarks/ListGrab.ff +23 -23
  41. package/experimental/benchmarks/ListGrab.java +55 -55
  42. package/experimental/benchmarks/Pyrotek45.ff +30 -30
  43. package/experimental/benchmarks/Pyrotek45.java +64 -64
  44. package/experimental/bidirectional/Bidi.ff +88 -88
  45. package/experimental/lines/Main.ff +40 -40
  46. package/experimental/random/Index.ff +53 -53
  47. package/experimental/random/Process.ff +120 -120
  48. package/experimental/random/RunLength.ff +65 -65
  49. package/experimental/random/Scrape.ff +51 -51
  50. package/experimental/random/Symbols.ff +73 -73
  51. package/experimental/random/Tensor.ff +52 -52
  52. package/experimental/random/Units.ff +36 -36
  53. package/experimental/s3/S3TestAuthorizationHeader.ff +39 -39
  54. package/experimental/s3/S3TestPut.ff +16 -16
  55. package/experimental/tests/TestJson.ff +26 -26
  56. package/firefly.sh +0 -0
  57. package/fireflysite/.firefly/package.ff +4 -4
  58. package/fireflysite/CommunityOverview.ff +20 -20
  59. package/fireflysite/CountingButtonDemo.ff +58 -58
  60. package/fireflysite/DocumentParser.ff +325 -325
  61. package/fireflysite/ExamplesOverview.ff +40 -40
  62. package/fireflysite/FrontPage.ff +344 -344
  63. package/fireflysite/GettingStarted.ff +45 -45
  64. package/fireflysite/Guide.ff +456 -456
  65. package/fireflysite/Main.ff +163 -163
  66. package/fireflysite/MatchingPasswordsDemo.ff +82 -82
  67. package/fireflysite/PackagesOverview.ff +49 -49
  68. package/fireflysite/PostgresqlDemo.ff +34 -34
  69. package/fireflysite/ReferenceAll.ff +18 -18
  70. package/fireflysite/ReferenceIntroduction.ff +11 -11
  71. package/fireflysite/Styles.ff +567 -567
  72. package/fireflysite/Test.ff +121 -121
  73. package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -209
  74. package/fireflysite/assets/markdown/reference/EmittedJavascript.md +65 -65
  75. package/fireflysite/assets/markdown/reference/Exceptions.md +101 -101
  76. package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +364 -364
  77. package/fireflysite/assets/markdown/reference/JavascriptInterop.md +235 -235
  78. package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -162
  79. package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -48
  80. package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -224
  81. package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -86
  82. package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -99
  83. package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -100
  84. package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -184
  85. package/fireflysite/assets/markdown/scratch/ControlFlow.md +136 -136
  86. package/fireflysite/assets/markdown/scratch/Toc.md +40 -40
  87. package/lsp/.firefly/package.ff +1 -1
  88. package/lsp/CompletionHandler.ff +827 -827
  89. package/lsp/Handler.ff +714 -714
  90. package/lsp/HoverHandler.ff +79 -79
  91. package/lsp/LanguageServer.ff +272 -272
  92. package/lsp/SignatureHelpHandler.ff +55 -55
  93. package/lsp/SymbolHandler.ff +181 -181
  94. package/lsp/TestReferences.ff +17 -17
  95. package/lsp/TestReferencesCase.ff +7 -7
  96. package/lsp/stderr.txt +1 -1
  97. package/lsp/stdout.txt +34 -34
  98. package/lux/.firefly/package.ff +1 -1
  99. package/lux/Css.ff +648 -648
  100. package/lux/CssTest.ff +48 -48
  101. package/lux/Lux.ff +608 -608
  102. package/lux/LuxEvent.ff +79 -79
  103. package/lux/Main.ff +123 -123
  104. package/lux/Main2.ff +143 -143
  105. package/lux/TestDry.ff +28 -28
  106. package/output/js/ff/compiler/Builder.mjs +36 -36
  107. package/output/js/ff/core/Path.mjs +0 -2
  108. package/package.json +1 -1
  109. package/rpc/.firefly/package.ff +1 -1
  110. package/rpc/Rpc.ff +70 -70
  111. package/s3/.firefly/package.ff +1 -1
  112. package/s3/S3.ff +92 -92
  113. package/vscode/LICENSE.txt +21 -21
  114. package/vscode/Prepublish.ff +15 -15
  115. package/vscode/README.md +16 -16
  116. package/vscode/client/package-lock.json +544 -544
  117. package/vscode/client/package.json +22 -22
  118. package/vscode/client/src/extension.ts +104 -104
  119. package/vscode/icons/firefly-icon.svg +10 -10
  120. package/vscode/language-configuration.json +61 -61
  121. package/vscode/package-lock.json +3623 -3623
  122. package/vscode/package.json +1 -1
  123. package/vscode/snippets.json +241 -241
  124. package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
  125. package/webserver/.firefly/include/package.json +5 -5
  126. package/webserver/.firefly/package.ff +2 -2
  127. package/webserver/WebServer.ff +647 -647
  128. package/websocket/.firefly/package.ff +1 -1
  129. package/websocket/WebSocket.ff +100 -100
@@ -1 +1 @@
1
- package ff:websocket:0.0.0
1
+ package ff:websocket:0.0.0
@@ -1,100 +1,100 @@
1
- capability WebSocket(
2
- jsValue: JsValue
3
- messages: Queue[JsValue]
4
- listeners: Queue[Unit => Unit]
5
- )
6
-
7
- open(browserSystem: BrowserSystem, url: String): WebSocket {
8
- let socket = if(
9
- Js->location.typeof() != "undefined" && !url.contains("://") &&
10
- !Js->location->href.isNullOrUndefined() && Js->location->href->startsWith("http")?
11
- ) {
12
- let href: String = Js->URL->(url, Js->location->href)->href?
13
- Js->WebSocket-> ("ws" + href.dropFirst("http".size()))
14
- } else {
15
- Js->WebSocket->(url)
16
- }
17
- socket->binaryType = "arraybuffer"
18
- let result = WebSocket(socket, Queue.new(), Queue.new())
19
- Js.awaitCancellablePromise {resolve, reject, onSettle =>
20
- onSettle {_ => socket->close()}
21
- socket->onopen = Js->{resolve(result)}
22
- socket->onclose = Js->{reject(_?)}
23
- }
24
- socket->onopen = Js.null()
25
- socket->onclose = Js.null()
26
- socket->addEventListener("close", Js->{
27
- result.listeners.each {_, listener => listener(Unit)}
28
- })
29
- socket->addEventListener("message", Js->{m =>
30
- result.messages.push(m)
31
- result.listeners.each {_, listener => listener(Unit)}
32
- })
33
- socket->addEventListener("error", Js->{e =>
34
- result.messages.push(e)
35
- result.listeners.each {_, listener => listener(Unit)}
36
- })
37
- result
38
- }
39
-
40
- extend self: WebSocket {
41
-
42
- readText(encoding: String = "utf8"): Option[String] {
43
- self.readAny {_} {_.toString(encoding)}
44
- }
45
-
46
- readBuffer(): Option[Buffer] {
47
- self.readAny {_.toBuffer()} {_}
48
- }
49
-
50
- readAny[T](fromText: String => T, fromBuffer: Buffer => T): Option[T] {
51
- Js.throwIfCancelled()
52
- doWhile {
53
- if(self.messages.size() != 0) {False} else:
54
- if(self.jsValue->readyState === 3) {False} else:
55
- Js.awaitCancellablePromise {resolve, reject, onSettle =>
56
- let key = self.listeners.push(resolve)
57
- onSettle {_ => self.listeners.remove(key)}
58
- }
59
- True
60
- }
61
- if(self.jsValue->readyState === 3) {None} else:
62
- let message = self.messages.pop().grab()
63
- if(!(message.instanceof(Js->MessageEvent))) {Js.throw(Js->Error->("WebSocket error"))}
64
- let data = message->data
65
- if(data.typeof() == "string") {Some(Js.await(fromText(data?)!)?)} else:
66
- Some(Js.await(fromBuffer(Js->DataView->(data)?)!)?)
67
- }
68
-
69
- writeBuffer(data: Buffer): Unit {
70
- Js.throwIfCancelled()
71
- self.jsValue->send(data)
72
- }
73
-
74
- writeText(data: String): Unit {
75
- Js.throwIfCancelled()
76
- self.jsValue->send(data)
77
- }
78
-
79
- close(code: Int = 1000, reason: String = ""): Unit {
80
- if(self.jsValue->readyState !== 2 && self.jsValue->readyState !== 3) {
81
- Js.await(Js->Promise->(Js->{resolve, reject =>
82
- self.jsValue->addEventListener("close", resolve)
83
- self.jsValue->close(code, if(reason != "") {reason!} else {Js.undefined()})
84
- }))
85
- }
86
- }
87
-
88
- isOpen(): Bool {
89
- self.jsValue->readyState === 1
90
- }
91
-
92
- isClosing(): Bool {
93
- self.jsValue->readyState === 2
94
- }
95
-
96
- isClosed(): Bool {
97
- self.jsValue->readyState === 3
98
- }
99
-
100
- }
1
+ capability WebSocket(
2
+ jsValue: JsValue
3
+ messages: Queue[JsValue]
4
+ listeners: Queue[Unit => Unit]
5
+ )
6
+
7
+ open(browserSystem: BrowserSystem, url: String): WebSocket {
8
+ let socket = if(
9
+ Js->location.typeof() != "undefined" && !url.contains("://") &&
10
+ !Js->location->href.isNullOrUndefined() && Js->location->href->startsWith("http")?
11
+ ) {
12
+ let href: String = Js->URL->(url, Js->location->href)->href?
13
+ Js->WebSocket-> ("ws" + href.dropFirst("http".size()))
14
+ } else {
15
+ Js->WebSocket->(url)
16
+ }
17
+ socket->binaryType = "arraybuffer"
18
+ let result = WebSocket(socket, Queue.new(), Queue.new())
19
+ Js.awaitCancellablePromise {resolve, reject, onSettle =>
20
+ onSettle {_ => socket->close()}
21
+ socket->onopen = Js->{resolve(result)}
22
+ socket->onclose = Js->{reject(_?)}
23
+ }
24
+ socket->onopen = Js.null()
25
+ socket->onclose = Js.null()
26
+ socket->addEventListener("close", Js->{
27
+ result.listeners.each {_, listener => listener(Unit)}
28
+ })
29
+ socket->addEventListener("message", Js->{m =>
30
+ result.messages.push(m)
31
+ result.listeners.each {_, listener => listener(Unit)}
32
+ })
33
+ socket->addEventListener("error", Js->{e =>
34
+ result.messages.push(e)
35
+ result.listeners.each {_, listener => listener(Unit)}
36
+ })
37
+ result
38
+ }
39
+
40
+ extend self: WebSocket {
41
+
42
+ readText(encoding: String = "utf8"): Option[String] {
43
+ self.readAny {_} {_.toString(encoding)}
44
+ }
45
+
46
+ readBuffer(): Option[Buffer] {
47
+ self.readAny {_.toBuffer()} {_}
48
+ }
49
+
50
+ readAny[T](fromText: String => T, fromBuffer: Buffer => T): Option[T] {
51
+ Js.throwIfCancelled()
52
+ doWhile {
53
+ if(self.messages.size() != 0) {False} else:
54
+ if(self.jsValue->readyState === 3) {False} else:
55
+ Js.awaitCancellablePromise {resolve, reject, onSettle =>
56
+ let key = self.listeners.push(resolve)
57
+ onSettle {_ => self.listeners.remove(key)}
58
+ }
59
+ True
60
+ }
61
+ if(self.jsValue->readyState === 3) {None} else:
62
+ let message = self.messages.pop().grab()
63
+ if(!(message.instanceof(Js->MessageEvent))) {Js.throw(Js->Error->("WebSocket error"))}
64
+ let data = message->data
65
+ if(data.typeof() == "string") {Some(Js.await(fromText(data?)!)?)} else:
66
+ Some(Js.await(fromBuffer(Js->DataView->(data)?)!)?)
67
+ }
68
+
69
+ writeBuffer(data: Buffer): Unit {
70
+ Js.throwIfCancelled()
71
+ self.jsValue->send(data)
72
+ }
73
+
74
+ writeText(data: String): Unit {
75
+ Js.throwIfCancelled()
76
+ self.jsValue->send(data)
77
+ }
78
+
79
+ close(code: Int = 1000, reason: String = ""): Unit {
80
+ if(self.jsValue->readyState !== 2 && self.jsValue->readyState !== 3) {
81
+ Js.await(Js->Promise->(Js->{resolve, reject =>
82
+ self.jsValue->addEventListener("close", resolve)
83
+ self.jsValue->close(code, if(reason != "") {reason!} else {Js.undefined()})
84
+ }))
85
+ }
86
+ }
87
+
88
+ isOpen(): Bool {
89
+ self.jsValue->readyState === 1
90
+ }
91
+
92
+ isClosing(): Bool {
93
+ self.jsValue->readyState === 2
94
+ }
95
+
96
+ isClosed(): Bool {
97
+ self.jsValue->readyState === 3
98
+ }
99
+
100
+ }