firefly-compiler 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.firefly-workspace +1 -0
- package/.vscode/settings.json +5 -0
- package/LICENSE.txt +21 -0
- package/README.md +96 -0
- package/bin/firefly.mjs +2 -0
- package/compiler/.firefly/package.ff +1 -0
- package/compiler/Builder.ff +218 -0
- package/compiler/Compiler.ff +241 -0
- package/compiler/Dependencies.ff +179 -0
- package/compiler/Deriver.ff +647 -0
- package/compiler/Dictionaries.ff +205 -0
- package/compiler/Environment.ff +166 -0
- package/compiler/Inference.ff +1117 -0
- package/compiler/JsEmitter.ff +861 -0
- package/compiler/JsImporter.ff +56 -0
- package/compiler/LspHook.ff +188 -0
- package/compiler/Main.ff +237 -0
- package/compiler/Parser.ff +1383 -0
- package/compiler/Patterns.ff +111 -0
- package/compiler/Resolver.ff +620 -0
- package/compiler/Substitution.ff +178 -0
- package/compiler/Syntax.ff +299 -0
- package/compiler/Token.ff +180 -0
- package/compiler/Tokenizer.ff +278 -0
- package/compiler/Unification.ff +220 -0
- package/compiler/Wildcards.ff +50 -0
- package/compiler/Workspace.ff +88 -0
- package/core/.firefly/package.ff +2 -0
- package/core/Any.ff +30 -0
- package/core/Array.ff +249 -0
- package/core/AssetSystem.ff +61 -0
- package/core/Atomic.ff +64 -0
- package/core/Bool.ff +13 -0
- package/core/BrowserSystem.ff +14 -0
- package/core/Buffer.ff +211 -0
- package/core/BuildSystem.ff +144 -0
- package/core/Channel.ff +131 -0
- package/core/Char.ff +18 -0
- package/core/Core.ff +58 -0
- package/core/Duration.ff +15 -0
- package/core/Equal.ff +52 -0
- package/core/Error.ff +20 -0
- package/core/FileHandle.ff +41 -0
- package/core/Float.ff +41 -0
- package/core/HttpClient.ff +84 -0
- package/core/Instant.ff +9 -0
- package/core/Int.ff +61 -0
- package/core/IntMap.ff +85 -0
- package/core/JsSystem.ff +66 -0
- package/core/JsValue.ff +240 -0
- package/core/List.ff +440 -0
- package/core/Lock.ff +144 -0
- package/core/Log.ff +24 -0
- package/core/Map.ff +126 -0
- package/core/NodeSystem.ff +88 -0
- package/core/Nothing.ff +1 -0
- package/core/Option.ff +133 -0
- package/core/Ordering.ff +157 -0
- package/core/Pair.ff +55 -0
- package/core/Path.ff +393 -0
- package/core/RbMap.ff +216 -0
- package/core/Serializable.ff +173 -0
- package/core/Set.ff +38 -0
- package/core/Show.ff +43 -0
- package/core/Stack.ff +263 -0
- package/core/Stream.ff +406 -0
- package/core/String.ff +175 -0
- package/core/StringMap.ff +85 -0
- package/core/Task.ff +138 -0
- package/core/Try.ff +81 -0
- package/core/Unit.ff +3 -0
- package/experimental/random/AltGeneric.ff +44 -0
- package/experimental/random/Async.ff +68 -0
- package/experimental/random/Buffer2.ff +77 -0
- package/experimental/random/Cat.ff +12 -0
- package/experimental/random/Dictionary.ff +52 -0
- package/experimental/random/Example.ff +46 -0
- package/experimental/random/Generic.ff +102 -0
- package/experimental/random/HappyEyeballs.ff +40 -0
- package/experimental/random/HashMap.ff +72 -0
- package/experimental/random/IfElseUnit.ff +9 -0
- package/experimental/random/InputOutput.ff +23 -0
- package/experimental/random/ListVsArray.ff +45 -0
- package/experimental/random/Main.ff +44 -0
- package/experimental/random/MapTest.ff +67 -0
- package/experimental/random/OldTaskSystem.ff +210 -0
- package/experimental/random/PatternTest.ff +39 -0
- package/experimental/random/Patterns.ff +226 -0
- package/experimental/random/ReadBytesTest.ff +10 -0
- package/experimental/random/RunLength.ff +65 -0
- package/experimental/random/Scrape.ff +51 -0
- package/experimental/random/Serialization.ff +217 -0
- package/experimental/random/SerializationTest.ff +46 -0
- package/experimental/random/Serializer.ff +36 -0
- package/experimental/random/StdInOutErr.ff +4 -0
- package/experimental/random/Symbols.ff +74 -0
- package/experimental/random/Tag.ff +49 -0
- package/experimental/random/Tensor.ff +52 -0
- package/experimental/random/Try.ff +56 -0
- package/experimental/random/Tsv.ff +9 -0
- package/experimental/random/TypesAreModules.ff +87 -0
- package/experimental/random/blueprints/Blueprint.ff +52 -0
- package/experimental/random/blueprints/Main.ff +11 -0
- package/experimental/random/blueprints/Pretty.ff +58 -0
- package/experimental/random/blueprints/User.ff +64 -0
- package/experimental/random/blueprintsystem/BlueprintSystem.ff +48 -0
- package/experimental/random/blueprintsystem/Deserialize.ff +53 -0
- package/experimental/random/blueprintsystem/ReadJs.ff +13 -0
- package/experimental/random/blueprintsystem/User.ff +2 -0
- package/experimental/random/kahrs/Kahrs.ff +112 -0
- package/experimental/random/kahrs/TestKahrs.ff +22 -0
- package/experimental/random/kahrs/TestMap.ff +18 -0
- package/experimental/random/streaming/Gzip.ff +3 -0
- package/experimental/random/streaming/Main.ff +34 -0
- package/experimental/random/streaming/S3Bucket.ff +11 -0
- package/experimental/random/streaming/Tar.ff +5 -0
- package/experimental/rhymeapp/Main.ff +81 -0
- package/experimental/rhymeapp/index.html +14 -0
- package/firefly.sh +5 -0
- package/fireflysite/Main.ff +13 -0
- package/httpserver/.firefly/package.ff +1 -0
- package/httpserver/HttpServer.ff +184 -0
- package/lsp/.firefly/package.ff +1 -0
- package/lsp/CompletionHandler.ff +814 -0
- package/lsp/Handler.ff +551 -0
- package/lsp/HoverHandler.ff +82 -0
- package/lsp/LanguageServer.ff +229 -0
- package/lsp/SignatureHelpHandler.ff +55 -0
- package/lsp/SymbolHandler.ff +167 -0
- package/output/js/ff/compiler/Builder.mjs +483 -0
- package/output/js/ff/compiler/Compiler.mjs +410 -0
- package/output/js/ff/compiler/Dependencies.mjs +388 -0
- package/output/js/ff/compiler/Deriver.mjs +1166 -0
- package/output/js/ff/compiler/Dictionaries.mjs +1305 -0
- package/output/js/ff/compiler/Environment.mjs +1005 -0
- package/output/js/ff/compiler/Inference.mjs +4264 -0
- package/output/js/ff/compiler/JsEmitter.mjs +5353 -0
- package/output/js/ff/compiler/JsImporter.mjs +262 -0
- package/output/js/ff/compiler/LspHook.mjs +789 -0
- package/output/js/ff/compiler/Main.mjs +1695 -0
- package/output/js/ff/compiler/Parser.mjs +4004 -0
- package/output/js/ff/compiler/Patterns.mjs +923 -0
- package/output/js/ff/compiler/Resolver.mjs +2303 -0
- package/output/js/ff/compiler/Substitution.mjs +1146 -0
- package/output/js/ff/compiler/Syntax.mjs +12430 -0
- package/output/js/ff/compiler/Token.mjs +3092 -0
- package/output/js/ff/compiler/Tokenizer.mjs +589 -0
- package/output/js/ff/compiler/Unification.mjs +1748 -0
- package/output/js/ff/compiler/Wildcards.mjs +604 -0
- package/output/js/ff/compiler/Workspace.mjs +683 -0
- package/output/js/ff/core/Any.mjs +139 -0
- package/output/js/ff/core/Array.mjs +594 -0
- package/output/js/ff/core/AssetSystem.mjs +270 -0
- package/output/js/ff/core/Atomic.mjs +186 -0
- package/output/js/ff/core/Bool.mjs +141 -0
- package/output/js/ff/core/BrowserSystem.mjs +122 -0
- package/output/js/ff/core/Buffer.mjs +467 -0
- package/output/js/ff/core/BuildSystem.mjs +320 -0
- package/output/js/ff/core/Channel.mjs +268 -0
- package/output/js/ff/core/Char.mjs +145 -0
- package/output/js/ff/core/Core.mjs +300 -0
- package/output/js/ff/core/Duration.mjs +112 -0
- package/output/js/ff/core/Equal.mjs +175 -0
- package/output/js/ff/core/Error.mjs +138 -0
- package/output/js/ff/core/FileHandle.mjs +164 -0
- package/output/js/ff/core/Float.mjs +214 -0
- package/output/js/ff/core/HttpClient.mjs +210 -0
- package/output/js/ff/core/Instant.mjs +105 -0
- package/output/js/ff/core/Int.mjs +254 -0
- package/output/js/ff/core/IntMap.mjs +282 -0
- package/output/js/ff/core/JsSystem.mjs +234 -0
- package/output/js/ff/core/JsValue.mjs +678 -0
- package/output/js/ff/core/List.mjs +2335 -0
- package/output/js/ff/core/Lock.mjs +322 -0
- package/output/js/ff/core/Log.mjs +159 -0
- package/output/js/ff/core/Map.mjs +358 -0
- package/output/js/ff/core/NodeSystem.mjs +288 -0
- package/output/js/ff/core/Nothing.mjs +100 -0
- package/output/js/ff/core/Option.mjs +1002 -0
- package/output/js/ff/core/Ordering.mjs +734 -0
- package/output/js/ff/core/Pair.mjs +318 -0
- package/output/js/ff/core/Path.mjs +768 -0
- package/output/js/ff/core/RbMap.mjs +1936 -0
- package/output/js/ff/core/Serializable.mjs +434 -0
- package/output/js/ff/core/Set.mjs +250 -0
- package/output/js/ff/core/Show.mjs +201 -0
- package/output/js/ff/core/Stack.mjs +595 -0
- package/output/js/ff/core/Stream.mjs +1300 -0
- package/output/js/ff/core/String.mjs +433 -0
- package/output/js/ff/core/StringMap.mjs +282 -0
- package/output/js/ff/core/Task.mjs +345 -0
- package/output/js/ff/core/Try.mjs +503 -0
- package/output/js/ff/core/Unit.mjs +103 -0
- package/package.json +29 -0
- package/postgresql/.firefly/include/package-lock.json +250 -0
- package/postgresql/.firefly/include/package.json +5 -0
- package/postgresql/.firefly/include/prepare.sh +2 -0
- package/postgresql/.firefly/package.ff +3 -0
- package/postgresql/Pg.ff +530 -0
- package/unsafejs/.firefly/package.ff +1 -0
- package/unsafejs/UnsafeJs.ff +19 -0
- package/vscode/.vscode/launch.json +18 -0
- package/vscode/.vscode/tasks.json +33 -0
- package/vscode/LICENSE.txt +21 -0
- package/vscode/Prepublish.ff +15 -0
- package/vscode/README.md +17 -0
- package/vscode/client/package-lock.json +544 -0
- package/vscode/client/package.json +22 -0
- package/vscode/client/src/extension.ts +64 -0
- package/vscode/client/tsconfig.json +12 -0
- package/vscode/icons/firefly-icon.png +0 -0
- package/vscode/icons/firefly-icon.svg +10 -0
- package/vscode/icons/firefly-logo-notext.png +0 -0
- package/vscode/icons/firefly-logo.png +0 -0
- package/vscode/language-configuration.json +39 -0
- package/vscode/package-lock.json +3623 -0
- package/vscode/package.json +144 -0
- package/vscode/snippets-none.json +1 -0
- package/vscode/snippets.json +241 -0
- package/vscode/syntaxes/firefly.tmLanguage.json +294 -0
- package/vscode/tsconfig.json +20 -0
package/core/IntMap.ff
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
class IntMap[V] {}
|
|
2
|
+
|
|
3
|
+
make[V](): IntMap[V]
|
|
4
|
+
target js sync "return new Map()"
|
|
5
|
+
|
|
6
|
+
extend self[V]: IntMap[V] {
|
|
7
|
+
|
|
8
|
+
get(key: Int): Option[V]
|
|
9
|
+
target js sync "return self_.has(key_) ? ff_core_Option.Some(self_.get(key_)) : ff_core_Option.None()"
|
|
10
|
+
|
|
11
|
+
grab(key: Int): V
|
|
12
|
+
target js sync """
|
|
13
|
+
const result = self_.get(key_)
|
|
14
|
+
if(key_ === void 0 && !self_.has(key_)) {
|
|
15
|
+
ff_core_Try.internalThrowGrabException_()
|
|
16
|
+
}
|
|
17
|
+
return result
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
set(key: Int, value: V): Unit
|
|
21
|
+
target js sync "self_.set(key_, value_)"
|
|
22
|
+
|
|
23
|
+
has(key: Int): Bool
|
|
24
|
+
target js sync "return self_.has(key_)"
|
|
25
|
+
|
|
26
|
+
remove(key: Int): Bool
|
|
27
|
+
target js sync "return self_.delete(key_)"
|
|
28
|
+
|
|
29
|
+
clear(): Unit
|
|
30
|
+
target js sync "self_.clear()"
|
|
31
|
+
|
|
32
|
+
size(): Int
|
|
33
|
+
target js sync "return self_.size"
|
|
34
|
+
|
|
35
|
+
each(body: (Int, V) => Unit): Bool
|
|
36
|
+
target js sync "return self_.forEach((v, k) => body_(k, v))"
|
|
37
|
+
target js async "for(const [k, v] of self_) await body_(k, v)"
|
|
38
|
+
|
|
39
|
+
eachWhile(body: (Int, V) => Bool): Bool
|
|
40
|
+
target js sync "for(const [k, v] of self_) if(!body_(k, v)) break"
|
|
41
|
+
target js async "for(const [k, v] of self_) if(!await body_(k, v)) break"
|
|
42
|
+
|
|
43
|
+
toStack(): Stack[Pair[Int, V]] {
|
|
44
|
+
let stack = Stack.make()
|
|
45
|
+
self.each {k, v => stack.push(Pair(k, v))}
|
|
46
|
+
stack
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
toArray(): Array[Pair[Int, V]] {
|
|
50
|
+
self.toStack().drain()
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
toList(): List[Pair[Int, V]] {
|
|
54
|
+
self.toArray().toList()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
toStream(): Stream[Pair[Int, V]] {
|
|
58
|
+
self.toArray().toStream()
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
toMap(): Map[Int, V] {
|
|
62
|
+
self.toArray().toMap()
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
keys(): List[Int] {
|
|
66
|
+
let stack = Stack.make()
|
|
67
|
+
self.each {k, v => stack.push(k)}
|
|
68
|
+
stack.toList()
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
values(): List[V] {
|
|
72
|
+
let stack = Stack.make()
|
|
73
|
+
self.each {k, v => stack.push(v)}
|
|
74
|
+
stack.toList()
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
copy(): IntMap[V]
|
|
78
|
+
target js sync "return new Map(self_)"
|
|
79
|
+
|
|
80
|
+
getOrSet(key: Int, body: () => V): V {
|
|
81
|
+
if(!self.has(key)) {self.set(key, body())}
|
|
82
|
+
self.grab(key)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
}
|
package/core/JsSystem.ff
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
class JsSystem {} // TODO: It has to be async if the async ffi is to be called - solve in the compiler?
|
|
2
|
+
|
|
3
|
+
extend self: JsSystem {
|
|
4
|
+
|
|
5
|
+
global(): JsValue
|
|
6
|
+
target js sync "return self_"
|
|
7
|
+
|
|
8
|
+
parseJson(json: String): JsValue
|
|
9
|
+
target js sync "return JSON.parse(json_)"
|
|
10
|
+
|
|
11
|
+
null(): JsValue
|
|
12
|
+
target js sync "return null"
|
|
13
|
+
|
|
14
|
+
undefined(): JsValue
|
|
15
|
+
target js sync "return void 0"
|
|
16
|
+
|
|
17
|
+
value[T: IsJsValue](jsValue: T): JsValue
|
|
18
|
+
target js sync "return jsValue_"
|
|
19
|
+
|
|
20
|
+
object(): JsValue
|
|
21
|
+
target js sync "return {}"
|
|
22
|
+
|
|
23
|
+
array(values: List[JsValue]): JsValue
|
|
24
|
+
target js sync "return ff_core_List.List_toArray(values_)"
|
|
25
|
+
|
|
26
|
+
function0[R](body: () => R): JsValue
|
|
27
|
+
target js sync "return body_"
|
|
28
|
+
target js async "return () => body_($task)"
|
|
29
|
+
|
|
30
|
+
function1[R](body: JsValue => R): JsValue
|
|
31
|
+
target js sync "return body_"
|
|
32
|
+
target js async "return a1 => body_(a1, $task)"
|
|
33
|
+
|
|
34
|
+
function2[R](body: (JsValue, JsValue) => R): JsValue
|
|
35
|
+
target js sync "return body_"
|
|
36
|
+
target js async "return (a1, a2) => body_(a1, a2, $task)"
|
|
37
|
+
|
|
38
|
+
function3[R](body: (JsValue, JsValue, JsValue) => R): JsValue
|
|
39
|
+
target js sync "return body_"
|
|
40
|
+
target js async "return (a1, a2, a3) => body_(a1, a2, a3, $task)"
|
|
41
|
+
|
|
42
|
+
function4[R](body: (JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
43
|
+
target js sync "return body_"
|
|
44
|
+
target js async "return (a1, a2, a3, a4) => body_(a1, a2, a3, a4, $task)"
|
|
45
|
+
|
|
46
|
+
function5[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
47
|
+
target js sync "return body_"
|
|
48
|
+
target js async "return (a1, a2, a3, a4, a5) => body_(a1, a2, a3, a4, a5, $task)"
|
|
49
|
+
|
|
50
|
+
function6[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
51
|
+
target js sync "return body_"
|
|
52
|
+
target js async "return (a1, a2, a3, a4, a5, a6) => body_(a1, a2, a3, a4, a5, a6, $task)"
|
|
53
|
+
|
|
54
|
+
function7[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
55
|
+
target js sync "return body_"
|
|
56
|
+
target js async "return (a1, a2, a3, a4, a5, a6, a7) => body_(a1, a2, a3, a4, a5, a6, a7, $task)"
|
|
57
|
+
|
|
58
|
+
function8[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
59
|
+
target js sync "return body_"
|
|
60
|
+
target js async "return (a1, a2, a3, a4, a5, a6, a7, a8) => body_(a1, a2, a3, a4, a5, a6, a7, a8, $task)"
|
|
61
|
+
|
|
62
|
+
function9[R](body: (JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue, JsValue) => R): JsValue
|
|
63
|
+
target js sync "return body_"
|
|
64
|
+
target js async "return (a1, a2, a3, a4, a5, a6, a7, a8, a9) => body_(a1, a2, a3, a4, a5, a6, a7, a8, a9, $task)"
|
|
65
|
+
|
|
66
|
+
}
|
package/core/JsValue.ff
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
class JsValue {}
|
|
2
|
+
|
|
3
|
+
extend self: JsValue {
|
|
4
|
+
|
|
5
|
+
grabString(): String
|
|
6
|
+
target js sync "return self_"
|
|
7
|
+
|
|
8
|
+
grabChar(): Char
|
|
9
|
+
target js sync "return self_"
|
|
10
|
+
|
|
11
|
+
grabInt(): Int
|
|
12
|
+
target js sync "return self_"
|
|
13
|
+
|
|
14
|
+
grabFloat(): Float
|
|
15
|
+
target js sync "return self_"
|
|
16
|
+
|
|
17
|
+
grabBool(): Bool
|
|
18
|
+
target js sync "return self_"
|
|
19
|
+
|
|
20
|
+
grabArray(): Array[JsValue]
|
|
21
|
+
target js sync "return self_"
|
|
22
|
+
|
|
23
|
+
grabBuffer(): Buffer
|
|
24
|
+
target js sync """
|
|
25
|
+
if(!(self_ instanceof DataView)) throw new Error('Expected buffer, got '+ typeof self_);
|
|
26
|
+
return self_
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
isString(): Bool
|
|
30
|
+
target js sync "return typeof self_ === 'string'"
|
|
31
|
+
|
|
32
|
+
isChar(): Bool
|
|
33
|
+
target js sync """
|
|
34
|
+
return Number.isInteger(self_) && Math.abs(self_) <= Number.MAX_SAFE_INTEGER
|
|
35
|
+
&& self_ >= 0 && self_ < 1114112
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
isInt(): Bool
|
|
39
|
+
target js sync "return Number.isInteger(self_) && Math.abs(self_) <= Number.MAX_SAFE_INTEGER"
|
|
40
|
+
|
|
41
|
+
isFloat(): Bool
|
|
42
|
+
target js sync "return typeof self_ === 'number'"
|
|
43
|
+
|
|
44
|
+
isBool(): Bool
|
|
45
|
+
target js sync "return typeof self_ === 'boolean'"
|
|
46
|
+
|
|
47
|
+
isArray(): Bool
|
|
48
|
+
target js sync "return Array.isArray(self_)"
|
|
49
|
+
|
|
50
|
+
isObject(): Bool
|
|
51
|
+
target js sync "return self_ != null && typeof self_ === 'object'"
|
|
52
|
+
|
|
53
|
+
isFunction(): Bool
|
|
54
|
+
target js sync "return typeof self_ === 'function'"
|
|
55
|
+
|
|
56
|
+
isNull(): Bool
|
|
57
|
+
target js sync "return self_ === null"
|
|
58
|
+
|
|
59
|
+
isUndefined(): Bool
|
|
60
|
+
target js sync "return typeof self_ === 'undefined'"
|
|
61
|
+
|
|
62
|
+
isNullOrUndefined(): Bool
|
|
63
|
+
target js sync "return self_ == null"
|
|
64
|
+
|
|
65
|
+
isNan(): Bool
|
|
66
|
+
target js sync "return typeof self_ === 'number' && self_ !== self_"
|
|
67
|
+
|
|
68
|
+
isFinite(): Bool
|
|
69
|
+
target js sync "return typeof self_ === 'number' && isFinite(self_)"
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
get[K: IsJsValue](key: K): JsValue
|
|
73
|
+
target js sync "return self_[key_]"
|
|
74
|
+
|
|
75
|
+
// TODO rename
|
|
76
|
+
getOwn(key: String): Option[JsValue] {
|
|
77
|
+
if(self.hasOwn(key)) {Some(self.get(key))} else {None}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
set[K: IsJsValue, V: IsJsValue](key: K, value: V): Unit
|
|
81
|
+
target js sync "self_[key_] = value_"
|
|
82
|
+
|
|
83
|
+
with[K: IsJsValue, V: IsJsValue](key: K, value: V): JsValue
|
|
84
|
+
target js sync "return {...self_, [key_]: value_}"
|
|
85
|
+
|
|
86
|
+
hasOwn(name: String): Bool
|
|
87
|
+
target js sync "return Object.prototype.hasOwnProperty.call(self_, name_)"
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
assign(source: JsValue, source2: JsValue = source): JsValue
|
|
91
|
+
target js sync "return Object.assign(self_, source_, source2_ !== source_ ? source2_ : null)"
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
each(body: JsValue => Unit): Unit
|
|
95
|
+
target js sync "for(const value of self_) body_(value)"
|
|
96
|
+
target js async "for(const value of self_) await body_(value, $task)"
|
|
97
|
+
|
|
98
|
+
eachWhile(body: JsValue => Bool): Unit
|
|
99
|
+
target js sync "for(const value of self_) if(!body_(value)) break"
|
|
100
|
+
target js async "for(const value of self_) if(!await body_(value, $task)) break"
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
call(name: String, arguments: List[JsValue]): JsValue
|
|
104
|
+
target js sync "return self_[name_].apply(this_, ff_core_List.List_toArray(arguments_))"
|
|
105
|
+
|
|
106
|
+
call0(name: String): JsValue
|
|
107
|
+
target js sync "return self_[name_].call(self_)"
|
|
108
|
+
|
|
109
|
+
call1[A1: IsJsValue](name: String, a1: A1): JsValue
|
|
110
|
+
target js sync "return self_[name_].call(self_, a1_)"
|
|
111
|
+
|
|
112
|
+
call2[A1: IsJsValue, A2: IsJsValue](name: String, a1: A1, a2: A2): JsValue
|
|
113
|
+
target js sync "return self_[name_].call(self_, a1_, a2_)"
|
|
114
|
+
|
|
115
|
+
call3[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue](name: String, a1: A1, a2: A2, a3: A3): JsValue
|
|
116
|
+
target js sync "return self_[name_].call(self_, a1_, a2_, a3_)"
|
|
117
|
+
|
|
118
|
+
call4[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue](name: String, a1: A1, a2: A2, a3: A3, a4: A4): JsValue
|
|
119
|
+
target js sync "return self_[name_].call(self_, a1_, a2_, a3_, a4_)"
|
|
120
|
+
|
|
121
|
+
call5[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue](name: String, a1: A1, a2: A2, a3: A3, a4: A4, a5: A5): JsValue
|
|
122
|
+
target js sync "return self_[name_].call(self_, a1_, a2_, a3_, a4_, a5_)"
|
|
123
|
+
|
|
124
|
+
call6[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue](name: String, a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6): JsValue
|
|
125
|
+
target js sync "return self_[name_].call(self_, a1_, a2_, a3_, a4_, a5_, a6_)"
|
|
126
|
+
|
|
127
|
+
call7[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue, A7: IsJsValue](name: String, a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7): JsValue
|
|
128
|
+
target js sync "return self_[name_].call(self_, a1_, a2_, a3_, a4_, a5_, a6_, a7_)"
|
|
129
|
+
|
|
130
|
+
call8[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue, A7: IsJsValue, A8: IsJsValue](name: String, a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8): JsValue
|
|
131
|
+
target js sync "return self_[name_].call(self_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_)"
|
|
132
|
+
|
|
133
|
+
call9[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue, A7: IsJsValue, A8: IsJsValue, A9: IsJsValue](name: String, a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8, a9: A9): JsValue
|
|
134
|
+
target js sync "return self_[name_].call(self_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_)"
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
callValue(this: JsValue, arguments: List[JsValue]): JsValue
|
|
138
|
+
target js sync "return self_.apply(this_, ff_core_List.List_toArray(arguments_))"
|
|
139
|
+
|
|
140
|
+
callValue0(): JsValue
|
|
141
|
+
target js sync "return self_.call(self_)"
|
|
142
|
+
|
|
143
|
+
callValue1[A1: IsJsValue](a1: A1): JsValue
|
|
144
|
+
target js sync "return self_.call(self_, a1_)"
|
|
145
|
+
|
|
146
|
+
callValue2[A1: IsJsValue, A2: IsJsValue](a1: A1, a2: A2): JsValue
|
|
147
|
+
target js sync "return self_.call(self_, a1_, a2_)"
|
|
148
|
+
|
|
149
|
+
callValue3[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue](a1: A1, a2: A2, a3: A3): JsValue
|
|
150
|
+
target js sync "return self_.call(self_, a1_, a2_, a3_)"
|
|
151
|
+
|
|
152
|
+
callValue4[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4): JsValue
|
|
153
|
+
target js sync "return self_.call(self_, a1_, a2_, a3_, a4_)"
|
|
154
|
+
|
|
155
|
+
callValue5[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5): JsValue
|
|
156
|
+
target js sync "return self_.call(self_, a1_, a2_, a3_, a4_, a5_)"
|
|
157
|
+
|
|
158
|
+
callValue6[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6): JsValue
|
|
159
|
+
target js sync "return self_.call(self_, a1_, a2_, a3_, a4_, a5_, a6_)"
|
|
160
|
+
|
|
161
|
+
callValue7[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue, A7: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7): JsValue
|
|
162
|
+
target js sync "return self_.call(self_, a1_, a2_, a3_, a4_, a5_, a6_, a7_)"
|
|
163
|
+
|
|
164
|
+
callValue8[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue, A7: IsJsValue, A8: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8): JsValue
|
|
165
|
+
target js sync "return self_.call(self_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_)"
|
|
166
|
+
|
|
167
|
+
callValue9[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue, A7: IsJsValue, A8: IsJsValue, A9: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8, a9: A9): JsValue
|
|
168
|
+
target js sync "return self_.call(self_, a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_)"
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
new(this: JsValue, arguments: List[JsValue]): JsValue
|
|
172
|
+
target js sync "return new (Function.prototype.bind.apply(self_, ff_core_List.List_toArray(arguments_)))"
|
|
173
|
+
|
|
174
|
+
new0(): JsValue
|
|
175
|
+
target js sync "return new self_()"
|
|
176
|
+
|
|
177
|
+
new1[A1: IsJsValue](a1: A1): JsValue
|
|
178
|
+
target js sync "return new self_(a1_)"
|
|
179
|
+
|
|
180
|
+
new2[A1: IsJsValue, A2: IsJsValue](a1: A1, a2: A2): JsValue
|
|
181
|
+
target js sync "return new self_(a1_, a2_)"
|
|
182
|
+
|
|
183
|
+
new3[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue](a1: A1, a2: A2, a3: A3): JsValue
|
|
184
|
+
target js sync "return new self_(a1_, a2_, a3_)"
|
|
185
|
+
|
|
186
|
+
new4[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4): JsValue
|
|
187
|
+
target js sync "return new self_(a1_, a2_, a3_, a4_)"
|
|
188
|
+
|
|
189
|
+
new5[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5): JsValue
|
|
190
|
+
target js sync "return new self_(a1_, a2_, a3_, a4_, a5_)"
|
|
191
|
+
|
|
192
|
+
new6[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6): JsValue
|
|
193
|
+
target js sync "return new self_(a1_, a2_, a3_, a4_, a5_, a6_)"
|
|
194
|
+
|
|
195
|
+
new7[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue, A7: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7): JsValue
|
|
196
|
+
target js sync "return new self_(a1_, a2_, a3_, a4_, a5_, a6_, a7_)"
|
|
197
|
+
|
|
198
|
+
new8[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue, A7: IsJsValue, A8: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8): JsValue
|
|
199
|
+
target js sync "return new self_(a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_)"
|
|
200
|
+
|
|
201
|
+
new9[A1: IsJsValue, A2: IsJsValue, A3: IsJsValue, A4: IsJsValue, A5: IsJsValue, A6: IsJsValue, A7: IsJsValue, A8: IsJsValue, A9: IsJsValue](a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8, a9: A9): JsValue
|
|
202
|
+
target js sync "return new self_(a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_)"
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
toJson(space: Option[String] = None): String
|
|
206
|
+
target js sync "return JSON.stringify(self_, null, space_.value_)"
|
|
207
|
+
|
|
208
|
+
grabPairs(): List[Pair[String, JsValue]]
|
|
209
|
+
target js sync """
|
|
210
|
+
if(!(self_ instanceof Object)) throw new Error('Expected object, got '+ typeof self_);;
|
|
211
|
+
let result = ff_core_List.Empty();
|
|
212
|
+
Object.getOwnPropertyNames(self_).forEach((name, i) => {
|
|
213
|
+
let pair = ff_core_Pair.Pair(name, self_[name]);
|
|
214
|
+
result = ff_core_List.Link(pair, result);
|
|
215
|
+
})
|
|
216
|
+
return result;
|
|
217
|
+
"""
|
|
218
|
+
|
|
219
|
+
grabMap(): Map[String, JsValue] {
|
|
220
|
+
self.grabPairs().toMap()
|
|
221
|
+
}
|
|
222
|
+
//toArray(): Array[JsValue] // TODO
|
|
223
|
+
//toList(): List[JsValue] // TODO
|
|
224
|
+
// TODO: JS operators
|
|
225
|
+
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
trait T: IsJsValue {}
|
|
229
|
+
instance JsValue: IsJsValue {}
|
|
230
|
+
instance String: IsJsValue {}
|
|
231
|
+
instance Char: IsJsValue {}
|
|
232
|
+
instance Int: IsJsValue {}
|
|
233
|
+
instance Float: IsJsValue {}
|
|
234
|
+
instance Bool: IsJsValue {}
|
|
235
|
+
instance Array[T: IsJsValue]: IsJsValue {}
|
|
236
|
+
instance Error: IsJsValue {}
|
|
237
|
+
instance Instant: IsJsValue {}
|
|
238
|
+
instance Duration: IsJsValue {}
|
|
239
|
+
instance Buffer: IsJsValue {}
|
|
240
|
+
instance Nothing: IsJsValue {}
|