diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 3ba70d0..66893d2 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -46,11 +46,11 @@ jobs: moonrun --version - name: moon check - run: moon check --deny-warn + run: moon check --deny-warn --target=js - name: moon info and moon fmt run: | - moon info + moon info --target=js moon fmt git diff --exit-code diff --git a/moon.mod.json b/moon.mod.json index ea7f4e7..6edd1f9 100644 --- a/moon.mod.json +++ b/moon.mod.json @@ -1,6 +1,6 @@ { "name": "rami3l/js-ffi", - "version": "0.2.2", + "version": "0.2.3", "readme": "README.md", "repository": "", "license": "Apache-2.0", diff --git a/src/js/js.mbti b/src/js/js.mbti index 8b3abac..5ab1fcd 100644 --- a/src/js/js.mbti +++ b/src/js/js.mbti @@ -1,4 +1,4 @@ -package rami3l/js-ffi/js +package "rami3l/js-ffi/js" // Values fn async_all[T](Array[() -> T!]) -> Array[T]! @@ -82,6 +82,7 @@ impl Object { new() -> Self op_get[K, V](Self, K) -> V op_set[K, V](Self, K, V) -> Unit + to_value(Self) -> Value } type Optional[_] diff --git a/src/js/object.mbt b/src/js/object.mbt index cf83c2b..83062bc 100644 --- a/src/js/object.mbt +++ b/src/js/object.mbt @@ -9,6 +9,11 @@ pub fn Object::from_value_unchecked(value : Value) -> Object { value } +///| +pub fn Object::to_value(self : Object) -> Value { + self._ +} + ///| pub extern "js" fn Object::from_value(value : Value) -> Optional[Object] = #| (value) => (value) instanceof Object ? value : undefined diff --git a/src/js/object_test.mbt b/src/js/object_test.mbt index e83573a..94b16bd 100644 --- a/src/js/object_test.mbt +++ b/src/js/object_test.mbt @@ -1,7 +1,11 @@ ///| test "Object::extend_object" { - let obj = @js.Object(@json.from_json!({ "a": 1, "b": 2, "c": 3 })) - let obj1 = @js.Object(@json.from_json!({ "b": [6, 7], "d": 44, "a": 55 })) + let obj = @js.Object::from_value_unchecked( + @json.from_json!({ "a": 1, "b": 2, "c": 3 }), + ) + let obj1 = @js.Object::from_value_unchecked( + @json.from_json!({ "b": [6, 7], "d": 44, "a": 55 }), + ) @json.inspect!(obj.extend_object(obj1)._.to_json!(), content={ "a": 55, "b": [6, 7],