From efaad27a8445ac4e7705ff0d29e5f44c85472d7b Mon Sep 17 00:00:00 2001 From: rami3l Date: Thu, 10 Apr 2025 10:30:57 +0800 Subject: [PATCH 1/2] feat(object): add `Object::to_value()` --- .github/workflows/check.yml | 4 ++-- src/js/js.mbti | 3 ++- src/js/object.mbt | 5 +++++ src/js/object_test.mbt | 8 ++++++-- 4 files changed, 15 insertions(+), 5 deletions(-) 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/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], From baae74493b7ed3226cf1aa5605e12ecd0d98b0f3 Mon Sep 17 00:00:00 2001 From: rami3l Date: Thu, 10 Apr 2025 10:31:49 +0800 Subject: [PATCH 2/2] chore: bump version to 0.2.3 --- moon.mod.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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",