From 476a57bf78082a40728be0d4799fd249dcce6245 Mon Sep 17 00:00:00 2001 From: Yunfei He Date: Sat, 15 Aug 2026 13:47:08 +0800 Subject: [PATCH] Clarify binding boundary names --- .agents/docs/binding-cases.md | 2 +- crates/taffyjs_binding/src/available_space.rs | 4 +- crates/taffyjs_binding/src/error.rs | 60 +++++++++---------- crates/taffyjs_binding/src/geometry.rs | 22 +++---- crates/taffyjs_binding/src/grid.rs | 36 +++++------ crates/taffyjs_binding/src/js_object.rs | 6 +- crates/taffyjs_binding/src/length.rs | 8 +-- crates/taffyjs_binding/src/lib.rs | 30 +++++----- crates/taffyjs_binding/src/measure.rs | 18 +++--- crates/taffyjs_binding/src/number.rs | 8 +-- crates/taffyjs_binding/src/owner.rs | 6 +- crates/taffyjs_binding/src/style.rs | 46 +++++++------- crates/taffyjs_binding/src/tagged_values.rs | 14 ++--- packages/taffyjs-node/binding.d.ts | 12 ++-- packages/taffyjs-node/binding.js | 4 +- packages/taffyjs-node/index.js | 14 ++--- packages/taffyjs-node/src/binding.ts | 2 +- packages/taffyjs-node/src/tree.ts | 16 ++--- .../tests/native/available-space.test.mts | 4 +- .../tests/native/geometry.test.mts | 6 +- .../taffyjs-node/tests/native/grid.test.mts | 6 +- .../taffyjs-node/tests/native/length.test.mts | 6 +- .../tests/native/numbers.test.mts | 6 +- .../tests/native/numeric-families.test.mts | 10 ++-- .../taffyjs-node/tests/native/style.test.mts | 12 ++-- .../tests/tree/constructor.test.mts | 2 +- .../tests/types/public-api.test-d.ts | 8 +-- .../src/emit/tagged-values/rust.ts | 6 +- 28 files changed, 187 insertions(+), 187 deletions(-) diff --git a/.agents/docs/binding-cases.md b/.agents/docs/binding-cases.md index f1f20d2..3901861 100644 --- a/.agents/docs/binding-cases.md +++ b/.agents/docs/binding-cases.md @@ -66,7 +66,7 @@ The private `unique symbol` is a phantom marker: it keeps an ordinary bigint fro The bigint logically contains a tree identity, a binding-issued serial for that node creation, and the raw Taffy NodeId. The exact field widths and encoding are not public. Each public tree wrapper keeps a private registry such as: ```ts -#inner: NativeTaffyTree; +#inner: BindingTaffyTree; #nodes: PrivateNodeRegistry; ``` diff --git a/crates/taffyjs_binding/src/available_space.rs b/crates/taffyjs_binding/src/available_space.rs index ead9660..144757a 100644 --- a/crates/taffyjs_binding/src/available_space.rs +++ b/crates/taffyjs_binding/src/available_space.rs @@ -2,7 +2,7 @@ use napi::bindgen_prelude::Unknown; use napi_derive::napi; use taffy::style::AvailableSpace; -use crate::error::NativeResult; +use crate::error::BindingResult; use crate::number::to_f32; use crate::numeric::AvailableSpaceKindCode; use crate::tagged_values::{AvailableSpaceInputValue, parse_available_space}; @@ -13,7 +13,7 @@ pub struct AvailableSpaceOutput { pub value: Option, } -pub(crate) fn available_space(value: Unknown<'_>) -> NativeResult { +pub(crate) fn available_space(value: Unknown<'_>) -> BindingResult { Ok(match parse_available_space(value)? { AvailableSpaceInputValue::Definite(value) => AvailableSpace::Definite(to_f32(value)), AvailableSpaceInputValue::MinContent => AvailableSpace::MinContent, diff --git a/crates/taffyjs_binding/src/error.rs b/crates/taffyjs_binding/src/error.rs index 7f7a779..576be0b 100644 --- a/crates/taffyjs_binding/src/error.rs +++ b/crates/taffyjs_binding/src/error.rs @@ -1,81 +1,81 @@ use napi::{Env, Error, Result, Status}; #[derive(Clone, Copy, Debug)] -enum NativeErrorKind { +enum BindingErrorKind { Error, RangeError, TypeError, } #[derive(Debug)] -pub(crate) struct NativeError { - kind: NativeErrorKind, +pub(crate) struct BindingError { + kind: BindingErrorKind, pub(crate) code: Option<&'static str>, message: String, } -pub(crate) type NativeResult = std::result::Result; +pub(crate) type BindingResult = std::result::Result; -fn native_error( - kind: NativeErrorKind, +fn binding_error( + kind: BindingErrorKind, code: Option<&'static str>, message: impl Into, -) -> NativeError { - NativeError { +) -> BindingError { + BindingError { kind, code, message: message.into(), } } -fn coded_error(code: &'static str, message: impl Into) -> NativeError { - native_error(NativeErrorKind::Error, Some(code), message) +fn coded_error(code: &'static str, message: impl Into) -> BindingError { + binding_error(BindingErrorKind::Error, Some(code), message) } #[allow(dead_code)] -fn coded_range_error(code: &'static str, message: impl Into) -> NativeError { - native_error(NativeErrorKind::RangeError, Some(code), message) +fn coded_range_error(code: &'static str, message: impl Into) -> BindingError { + binding_error(BindingErrorKind::RangeError, Some(code), message) } #[allow(dead_code)] -pub(crate) fn plain_error(message: impl Into) -> NativeError { - native_error(NativeErrorKind::Error, None, message) +pub(crate) fn plain_error(message: impl Into) -> BindingError { + binding_error(BindingErrorKind::Error, None, message) } -pub(crate) fn range_error(message: impl Into) -> NativeError { - native_error(NativeErrorKind::RangeError, None, message) +pub(crate) fn range_error(message: impl Into) -> BindingError { + binding_error(BindingErrorKind::RangeError, None, message) } -pub(crate) fn type_error(message: impl Into) -> NativeError { - native_error(NativeErrorKind::TypeError, None, message) +pub(crate) fn type_error(message: impl Into) -> BindingError { + binding_error(BindingErrorKind::TypeError, None, message) } #[allow(dead_code)] -pub(crate) fn child_index_out_of_bounds_error(message: impl Into) -> NativeError { +pub(crate) fn child_index_out_of_bounds_error(message: impl Into) -> BindingError { coded_range_error("ERR_TAFFY_CHILD_INDEX_OUT_OF_BOUNDS", message) } #[allow(dead_code)] -pub(crate) fn invalid_node_id_error(message: impl Into) -> NativeError { +pub(crate) fn invalid_node_id_error(message: impl Into) -> BindingError { coded_error("ERR_TAFFY_INVALID_NODE_ID", message) } #[allow(dead_code)] -pub(crate) fn foreign_node_id_error(message: impl Into) -> NativeError { +pub(crate) fn foreign_node_id_error(message: impl Into) -> BindingError { coded_error("ERR_TAFFY_FOREIGN_NODE_ID", message) } #[allow(dead_code)] -pub(crate) fn stale_node_id_error(message: impl Into) -> NativeError { +pub(crate) fn stale_node_id_error(message: impl Into) -> BindingError { coded_error("ERR_TAFFY_STALE_NODE_ID", message) } #[allow(dead_code)] -pub(crate) fn invalid_topology_error(message: impl Into) -> NativeError { +pub(crate) fn invalid_topology_error(message: impl Into) -> BindingError { coded_error("ERR_TAFFY_INVALID_TOPOLOGY", message) } -pub(crate) fn busy_error(public_method: &str) -> NativeError { +pub(crate) fn busy_error(public_method: &str) -> BindingError { coded_error( "ERR_TAFFY_TREE_BUSY", format!( @@ -84,28 +84,28 @@ pub(crate) fn busy_error(public_method: &str) -> NativeError { ) } -pub(crate) fn internal_error() -> NativeError { +pub(crate) fn internal_error() -> BindingError { coded_error( "ERR_TAFFY_INTERNAL", "An unexpected internal Taffy error occurred", ) } -pub(crate) fn poisoned_error() -> NativeError { +pub(crate) fn poisoned_error() -> BindingError { coded_error( "ERR_TAFFY_TREE_POISONED", "This TaffyTree cannot be used after an unexpected internal failure", ) } -pub(crate) fn into_napi(env: Env, result: NativeResult) -> Result { +pub(crate) fn into_napi(env: Env, result: BindingResult) -> Result { match result { Ok(value) => Ok(value), Err(error) => { match error.kind { - NativeErrorKind::Error => env.throw_error(&error.message, error.code), - NativeErrorKind::RangeError => env.throw_range_error(&error.message, error.code), - NativeErrorKind::TypeError => env.throw_type_error(&error.message, error.code), + BindingErrorKind::Error => env.throw_error(&error.message, error.code), + BindingErrorKind::RangeError => env.throw_range_error(&error.message, error.code), + BindingErrorKind::TypeError => env.throw_type_error(&error.message, error.code), }?; Err(Error::new(Status::PendingException, error.message)) } diff --git a/crates/taffyjs_binding/src/geometry.rs b/crates/taffyjs_binding/src/geometry.rs index 9985dd2..22985a3 100644 --- a/crates/taffyjs_binding/src/geometry.rs +++ b/crates/taffyjs_binding/src/geometry.rs @@ -2,7 +2,7 @@ use napi::bindgen_prelude::Unknown; use napi_derive::napi; use taffy::geometry::{Line, Point, Rect, Size}; -use crate::error::NativeResult; +use crate::error::BindingResult; use crate::js_object; const POINT_FIELDS: &[&str] = &["x", "y"]; @@ -45,8 +45,8 @@ pub struct PartialLineInput<'env> { pub(crate) fn partial_point( value: Unknown<'_>, default: Point, - mut convert: impl FnMut(f64) -> NativeResult, -) -> NativeResult> { + mut convert: impl FnMut(f64) -> BindingResult, +) -> BindingResult> { let input: PartialPointInput = js_object::input(value, "a Point object", Some(POINT_FIELDS))?; Ok(Point { x: input.x.map(&mut convert).transpose()?.unwrap_or(default.x), @@ -56,8 +56,8 @@ pub(crate) fn partial_point( pub(crate) fn size<'env, T>( value: Unknown<'env>, - mut convert: impl FnMut(Unknown<'env>) -> NativeResult, -) -> NativeResult> { + mut convert: impl FnMut(Unknown<'env>) -> BindingResult, +) -> BindingResult> { let input: CompleteSizeInput<'env> = js_object::input(value, "a Size object", Some(SIZE_FIELDS))?; Ok(Size { @@ -69,8 +69,8 @@ pub(crate) fn size<'env, T>( pub(crate) fn partial_size<'env, T>( value: Unknown<'env>, default: Size, - mut convert: impl FnMut(Unknown<'env>) -> NativeResult, -) -> NativeResult> { + mut convert: impl FnMut(Unknown<'env>) -> BindingResult, +) -> BindingResult> { let input: PartialSizeInput<'env> = js_object::input(value, "a Size object", Some(SIZE_FIELDS))?; Ok(Size { @@ -90,8 +90,8 @@ pub(crate) fn partial_size<'env, T>( pub(crate) fn partial_rect<'env, T>( value: Unknown<'env>, default: Rect, - mut convert: impl FnMut(Unknown<'env>) -> NativeResult, -) -> NativeResult> { + mut convert: impl FnMut(Unknown<'env>) -> BindingResult, +) -> BindingResult> { let input: PartialRectInput<'env> = js_object::input(value, "a Rect object", Some(RECT_FIELDS))?; Ok(Rect { @@ -121,8 +121,8 @@ pub(crate) fn partial_rect<'env, T>( pub(crate) fn partial_line<'env, T>( value: Unknown<'env>, default: Line, - mut convert: impl FnMut(Unknown<'env>) -> NativeResult, -) -> NativeResult> { + mut convert: impl FnMut(Unknown<'env>) -> BindingResult, +) -> BindingResult> { let input: PartialLineInput<'env> = js_object::input(value, "a Line object", Some(LINE_FIELDS))?; Ok(Line { diff --git a/crates/taffyjs_binding/src/grid.rs b/crates/taffyjs_binding/src/grid.rs index c7d3049..def1b2a 100644 --- a/crates/taffyjs_binding/src/grid.rs +++ b/crates/taffyjs_binding/src/grid.rs @@ -6,7 +6,7 @@ use taffy::style::{ TrackSizingFunction, }; -use crate::error::{NativeResult, range_error, type_error}; +use crate::error::{BindingResult, range_error, type_error}; use crate::js_object; use crate::length::{self, LengthOutput}; use crate::number::{from_unknown, to_f32, to_integer}; @@ -113,22 +113,22 @@ pub struct GridTemplateAreasOutput { pub column_count: u16, } -fn tagged_input<'env>(value: Unknown<'env>, name: &str) -> NativeResult> { +fn tagged_input<'env>(value: Unknown<'env>, name: &str) -> BindingResult> { js_object::input(value, name, None) } -fn tagged_kind(input: &TaggedGridInput<'_>) -> NativeResult +fn tagged_kind(input: &TaggedGridInput<'_>) -> BindingResult where T: TryFrom, { to_integer(input.kind) } -fn tagged_value<'env>(input: &TaggedGridInput<'env>, name: &str) -> NativeResult> { +fn tagged_value<'env>(input: &TaggedGridInput<'env>, name: &str) -> BindingResult> { js_object::required(input.value, name) } -pub(crate) fn grid_placement(value: Unknown<'_>) -> NativeResult> { +pub(crate) fn grid_placement(value: Unknown<'_>) -> BindingResult> { let input: GridPlacementInput = js_object::input(value, "a GridPlacement object", None)?; Ok(match to_integer::(input.kind)? { GridPlacementKindCode::Auto => GridPlacement::Auto, @@ -149,7 +149,7 @@ pub(crate) fn grid_placement(value: Unknown<'_>) -> NativeResult) -> NativeResult { +fn min_track(value: Unknown<'_>) -> BindingResult { let input = tagged_input(value, "a minimum track object")?; match tagged_kind::(&input)? { TrackSizingKindCode::Length => Ok(MinTrackSizingFunction::length(to_f32(from_unknown( @@ -168,7 +168,7 @@ fn min_track(value: Unknown<'_>) -> NativeResult { } } -fn max_track(value: Unknown<'_>) -> NativeResult { +fn max_track(value: Unknown<'_>) -> BindingResult { let input = tagged_input(value, "a maximum track object")?; match tagged_kind::(&input)? { TrackSizingKindCode::Length => Ok(MaxTrackSizingFunction::length(to_f32(from_unknown( @@ -199,7 +199,7 @@ fn max_track(value: Unknown<'_>) -> NativeResult { } } -pub(crate) fn track_sizing(value: Unknown<'_>) -> NativeResult { +pub(crate) fn track_sizing(value: Unknown<'_>) -> BindingResult { let input: TrackSizingInput<'_> = js_object::input(value, "a TrackSizingFunction object", None)?; Ok(TrackSizingFunction { @@ -208,7 +208,7 @@ pub(crate) fn track_sizing(value: Unknown<'_>) -> NativeResult) -> NativeResult { +fn repetition_count(value: Unknown<'_>) -> BindingResult { let input = tagged_input(value, "a RepetitionCount object")?; Ok(match tagged_kind::(&input)? { RepetitionCountKindCode::Count => RepetitionCount::Count(to_integer::(from_unknown( @@ -220,7 +220,7 @@ fn repetition_count(value: Unknown<'_>) -> NativeResult { }) } -fn template_repetition(value: Unknown<'_>) -> NativeResult> { +fn template_repetition(value: Unknown<'_>) -> BindingResult> { let input: GridTemplateRepetitionInput<'_> = js_object::input(value, "a GridTemplateRepetition object", None)?; Ok(GridTemplateRepetition { @@ -229,14 +229,14 @@ fn template_repetition(value: Unknown<'_>) -> NativeResult>>()?, + .collect::>>()?, line_names: input.line_names, }) } pub(crate) fn template_component( value: Unknown<'_>, -) -> NativeResult> { +) -> BindingResult> { let input = tagged_input(value, "a GridTemplateComponent object")?; Ok( match tagged_kind::(&input)? { @@ -252,17 +252,17 @@ pub(crate) fn template_component( pub(crate) fn template_components( values: Vec>, -) -> NativeResult>> { +) -> BindingResult>> { values .into_iter() .map(template_component) - .collect::>>() + .collect::>>() } pub(crate) fn validate_template_line_names( values: &[GridTemplateComponent], top_level_line_names: &[Vec], -) -> NativeResult<()> { +) -> BindingResult<()> { for value in values.iter().take(top_level_line_names.len()) { if let GridTemplateComponent::Repeat(repetition) = value && repetition.line_names.is_empty() @@ -276,7 +276,7 @@ pub(crate) fn validate_template_line_names( Ok(()) } -fn template_area(input: GridTemplateAreaInput) -> NativeResult> { +fn template_area(input: GridTemplateAreaInput) -> BindingResult> { Ok(GridTemplateArea { name: input.name, row_start: to_integer::(input.row_start)?, @@ -288,13 +288,13 @@ fn template_area(input: GridTemplateAreaInput) -> NativeResult NativeResult> { +) -> BindingResult> { Ok(GridTemplateAreas { areas: input .areas .into_iter() .map(template_area) - .collect::>>()?, + .collect::>>()?, row_count: to_integer::(input.row_count)?, column_count: to_integer::(input.column_count)?, }) diff --git a/crates/taffyjs_binding/src/js_object.rs b/crates/taffyjs_binding/src/js_object.rs index 9db5421..3e9a38f 100644 --- a/crates/taffyjs_binding/src/js_object.rs +++ b/crates/taffyjs_binding/src/js_object.rs @@ -1,13 +1,13 @@ use napi::bindgen_prelude::{FromNapiValue, Object, Unknown}; use napi::{JsValue, ValueType}; -use crate::error::{NativeResult, type_error}; +use crate::error::{BindingResult, type_error}; pub(crate) fn input<'env, T>( value: Unknown<'env>, name: &str, allowed_fields: Option<&[&str]>, -) -> NativeResult +) -> BindingResult where T: FromNapiValue, { @@ -49,6 +49,6 @@ where } } -pub(crate) fn required(value: Option, name: &str) -> NativeResult { +pub(crate) fn required(value: Option, name: &str) -> BindingResult { value.ok_or_else(|| type_error(format!("{name} is required"))) } diff --git a/crates/taffyjs_binding/src/length.rs b/crates/taffyjs_binding/src/length.rs index eb0cc8e..a2abd43 100644 --- a/crates/taffyjs_binding/src/length.rs +++ b/crates/taffyjs_binding/src/length.rs @@ -2,7 +2,7 @@ use napi::bindgen_prelude::Unknown; use napi_derive::napi; use taffy::style::{CompactLength, Dimension, LengthPercentage, LengthPercentageAuto}; -use crate::error::NativeResult; +use crate::error::BindingResult; use crate::number::to_f32; use crate::numeric::LengthUnitCode; use crate::tagged_values::{ @@ -16,7 +16,7 @@ pub struct LengthOutput { pub value: Option, } -pub(crate) fn dimension(value: Unknown<'_>) -> NativeResult { +pub(crate) fn dimension(value: Unknown<'_>) -> BindingResult { Ok(match parse_dimension(value)? { DimensionInputValue::Length(value) => Dimension::length(to_f32(value)), DimensionInputValue::Percent(value) => Dimension::percent(to_f32(value / 100.0)), @@ -24,7 +24,7 @@ pub(crate) fn dimension(value: Unknown<'_>) -> NativeResult { }) } -pub(crate) fn length_percentage(value: Unknown<'_>) -> NativeResult { +pub(crate) fn length_percentage(value: Unknown<'_>) -> BindingResult { Ok(match parse_length_percentage(value)? { LengthPercentageInputValue::Length(value) => LengthPercentage::length(to_f32(value)), LengthPercentageInputValue::Percent(value) => { @@ -33,7 +33,7 @@ pub(crate) fn length_percentage(value: Unknown<'_>) -> NativeResult) -> NativeResult { +pub(crate) fn length_percentage_auto(value: Unknown<'_>) -> BindingResult { Ok(match parse_length_percentage_auto(value)? { LengthPercentageAutoInputValue::Length(value) => { LengthPercentageAuto::length(to_f32(value)) diff --git a/crates/taffyjs_binding/src/lib.rs b/crates/taffyjs_binding/src/lib.rs index 40fe8df..469f39d 100644 --- a/crates/taffyjs_binding/src/lib.rs +++ b/crates/taffyjs_binding/src/lib.rs @@ -16,7 +16,7 @@ mod style; mod tagged_values; use error::{ - NativeResult, child_index_out_of_bounds_error, internal_error, into_napi, + BindingResult, child_index_out_of_bounds_error, internal_error, into_napi, invalid_topology_error, type_error, }; use napi::bindgen_prelude::{BigInt, Function, Unknown}; @@ -27,7 +27,7 @@ use std::collections::HashSet; use taffy::{NodeId, TraversePartialTree}; #[napi] -pub struct NativeTaffyTree { +pub struct BindingTaffyTree { owner: TreeOwner, } @@ -38,7 +38,7 @@ pub struct ChildRangeInput { } #[napi] -impl NativeTaffyTree { +impl BindingTaffyTree { #[napi(constructor)] pub fn new() -> Self { Self { @@ -68,7 +68,7 @@ impl NativeTaffyTree { ) } - #[napi(js_name = "rawNodeCount")] + #[napi(js_name = "rawGetNodeCount")] pub fn node_count(&self, env: Env) -> napi::Result { into_napi( env, @@ -77,7 +77,7 @@ impl NativeTaffyTree { ) } - #[napi(js_name = "rawChildCount")] + #[napi(js_name = "rawGetChildCount")] pub fn child_count(&self, env: Env, parent: BigInt) -> napi::Result { let parent = into_napi(env, raw_node_id(&parent))?; into_napi( @@ -92,7 +92,7 @@ impl NativeTaffyTree { ) } - #[napi(js_name = "rawParent")] + #[napi(js_name = "rawGetParent")] pub fn parent(&self, env: Env, node: BigInt) -> napi::Result> { let node = into_napi(env, raw_node_id(&node))?; into_napi( @@ -105,7 +105,7 @@ impl NativeTaffyTree { ) } - #[napi(js_name = "rawChildren")] + #[napi(js_name = "rawGetChildren")] pub fn children(&self, env: Env, parent: BigInt) -> napi::Result> { let parent = into_napi(env, raw_node_id(&parent))?; into_napi( @@ -123,7 +123,7 @@ impl NativeTaffyTree { ) } - #[napi(js_name = "rawChildAtIndex")] + #[napi(js_name = "rawGetChildAtIndex")] pub fn child_at_index(&self, env: Env, parent: BigInt, index: f64) -> napi::Result { let parent = into_napi(env, raw_node_id(&parent))?; let index = into_napi(env, number::to_safe_usize(index))?; @@ -196,7 +196,7 @@ impl NativeTaffyTree { children .iter() .map(raw_node_id) - .collect::>>(), + .collect::>>(), )?; into_napi( env, @@ -394,7 +394,7 @@ impl NativeTaffyTree { children .iter() .map(raw_node_id) - .collect::>>(), + .collect::>>(), )?; let style = into_napi(env, style::input(style))?; into_napi( @@ -579,12 +579,12 @@ impl NativeTaffyTree { "Measure callback threw", )) } - Some(measure::MeasureFailure::Native(error)) => into_napi(env, Err(error)), + Some(measure::MeasureFailure::Binding(error)) => into_napi(env, Err(error)), } } } -fn raw_node_id(value: &BigInt) -> NativeResult { +fn raw_node_id(value: &BigInt) -> BindingResult { let (negative, value, lossless) = value.get_u64(); if negative || !lossless { return Err(type_error("Raw node ID must be a non-negative u64 bigint")); @@ -592,7 +592,7 @@ fn raw_node_id(value: &BigInt) -> NativeResult { Ok(NodeId::from(value)) } -fn child_range(input: ChildRangeInput) -> NativeResult<(usize, usize)> { +fn child_range(input: ChildRangeInput) -> BindingResult<(usize, usize)> { Ok(( number::to_safe_usize(input.start)?, number::to_safe_usize(input.end)?, @@ -603,7 +603,7 @@ fn validate_unattached_child( tree: &taffy::TaffyTree<()>, parent: NodeId, child: NodeId, -) -> NativeResult<()> { +) -> BindingResult<()> { if parent == child { return Err(invalid_topology_error("A node cannot be its own child")); } @@ -632,7 +632,7 @@ fn would_create_cycle(tree: &taffy::TaffyTree<()>, parent: NodeId, child: NodeId false } -impl Default for NativeTaffyTree { +impl Default for BindingTaffyTree { fn default() -> Self { Self::new() } diff --git a/crates/taffyjs_binding/src/measure.rs b/crates/taffyjs_binding/src/measure.rs index 67bbcf3..269dbc6 100644 --- a/crates/taffyjs_binding/src/measure.rs +++ b/crates/taffyjs_binding/src/measure.rs @@ -9,7 +9,7 @@ use taffy::geometry::Size; use taffy::style::{AvailableSpace, Style}; use taffy::{NodeId, TaffyTree}; -use crate::error::{NativeError, NativeResult, internal_error}; +use crate::error::{BindingError, BindingResult, internal_error}; use crate::{available_space, js_object, number, style}; #[napi(object, object_from_js = false)] @@ -40,7 +40,7 @@ pub struct MeasureResultInput { pub(crate) enum MeasureFailure<'env> { Callback(Unknown<'env>), - Native(NativeError), + Binding(BindingError), } pub(crate) struct MeasureSession<'env> { @@ -73,7 +73,7 @@ impl<'env> MeasureSession<'env> { &self.callback, self.arguments(known_dimensions, available_space, node, style), ) - .and_then(|value| result_size(value).map_err(MeasureFailure::Native)); + .and_then(|value| result_size(value).map_err(MeasureFailure::Binding)); match result { Ok(size) => size, Err(failure) => { @@ -115,11 +115,11 @@ fn call<'env>( let mut receiver = ptr::null_mut(); let receiver_status = unsafe { sys::napi_get_undefined(env, &mut receiver) }; if receiver_status != sys::Status::napi_ok { - return Err(MeasureFailure::Native(internal_error())); + return Err(MeasureFailure::Binding(internal_error())); } let argument = unsafe { MeasureArguments::to_napi_value(env, arguments) } - .map_err(|_| MeasureFailure::Native(internal_error()))?; + .map_err(|_| MeasureFailure::Binding(internal_error()))?; let args = [argument]; let mut returned = ptr::null_mut(); let status = unsafe { @@ -138,12 +138,12 @@ fn call<'env>( let mut thrown = ptr::null_mut(); let clear_status = unsafe { sys::napi_get_and_clear_last_exception(env, &mut thrown) }; if clear_status != sys::Status::napi_ok || thrown.is_null() { - return Err(MeasureFailure::Native(internal_error())); + return Err(MeasureFailure::Binding(internal_error())); } let value = unsafe { Unknown::from_raw_unchecked(env, thrown) }; Err(MeasureFailure::Callback(value)) } - _ => Err(MeasureFailure::Native(internal_error())), + _ => Err(MeasureFailure::Binding(internal_error())), } } @@ -168,7 +168,7 @@ fn available_space_size_output(value: Size) -> AvailableSpaceSiz } } -fn result_size(value: Unknown<'_>) -> NativeResult> { +fn result_size(value: Unknown<'_>) -> BindingResult> { let input: MeasureResultInput = js_object::input(value, "a measured Size object", Some(&["width", "height"]))?; Ok(Size { @@ -177,7 +177,7 @@ fn result_size(value: Unknown<'_>) -> NativeResult> { }) } -pub(crate) fn invalidate_subtree(tree: &mut TaffyTree<()>, root: NodeId) -> NativeResult<()> { +pub(crate) fn invalidate_subtree(tree: &mut TaffyTree<()>, root: NodeId) -> BindingResult<()> { let mut pending = vec![root]; while let Some(node) = pending.pop() { tree.mark_dirty(node).map_err(|_| internal_error())?; diff --git a/crates/taffyjs_binding/src/number.rs b/crates/taffyjs_binding/src/number.rs index ec8ebd0..b5d6efa 100644 --- a/crates/taffyjs_binding/src/number.rs +++ b/crates/taffyjs_binding/src/number.rs @@ -1,6 +1,6 @@ use napi::bindgen_prelude::Unknown; -use crate::error::{NativeResult, range_error, type_error}; +use crate::error::{BindingResult, range_error, type_error}; const I64_UPPER_EXCLUSIVE: f64 = 9_223_372_036_854_775_808.0; const JS_MAX_SAFE_INTEGER: f64 = 9_007_199_254_740_991.0; @@ -9,7 +9,7 @@ pub(crate) fn to_f32(value: f64) -> f32 { value as f32 } -pub(crate) fn from_unknown(value: Unknown<'_>, name: &str) -> NativeResult { +pub(crate) fn from_unknown(value: Unknown<'_>, name: &str) -> BindingResult { unsafe { value .cast::() @@ -17,7 +17,7 @@ pub(crate) fn from_unknown(value: Unknown<'_>, name: &str) -> NativeResult } } -pub(crate) fn to_integer(value: f64) -> NativeResult +pub(crate) fn to_integer(value: f64) -> BindingResult where T: TryFrom, { @@ -32,7 +32,7 @@ where T::try_from(value as i64).map_err(|_| range_error("Expected a finite integer in range")) } -pub(crate) fn to_safe_usize(value: f64) -> NativeResult { +pub(crate) fn to_safe_usize(value: f64) -> BindingResult { if value > JS_MAX_SAFE_INTEGER { return Err(range_error("Expected a non-negative safe integer")); } diff --git a/crates/taffyjs_binding/src/owner.rs b/crates/taffyjs_binding/src/owner.rs index 62782c3..3012414 100644 --- a/crates/taffyjs_binding/src/owner.rs +++ b/crates/taffyjs_binding/src/owner.rs @@ -3,7 +3,7 @@ use std::panic::{AssertUnwindSafe, catch_unwind}; use taffy::TaffyTree; -use crate::error::{NativeResult, busy_error, internal_error, poisoned_error}; +use crate::error::{BindingResult, busy_error, internal_error, poisoned_error}; pub(crate) struct TreeOwner { tree: RefCell>, @@ -21,8 +21,8 @@ impl TreeOwner { pub(crate) fn access( &self, public_method: &str, - operation: impl FnOnce(&mut TaffyTree<()>) -> NativeResult, - ) -> NativeResult { + operation: impl FnOnce(&mut TaffyTree<()>) -> BindingResult, + ) -> BindingResult { if self.poisoned.get() { return Err(poisoned_error()); } diff --git a/crates/taffyjs_binding/src/style.rs b/crates/taffyjs_binding/src/style.rs index 8d4fcd8..5fb20a2 100644 --- a/crates/taffyjs_binding/src/style.rs +++ b/crates/taffyjs_binding/src/style.rs @@ -7,7 +7,7 @@ use taffy::style::{ GridAutoFlow, Overflow, Position, Style, TextAlign, }; -use crate::error::{NativeResult, type_error}; +use crate::error::{BindingResult, type_error}; use crate::numeric::{ AlignContentCode, AlignItemsCode, BoxSizingCode, ClearCode, DirectionCode, DisplayCode, FlexDirectionCode, FlexWrapCode, FloatCode, GridAutoFlowCode, OverflowCode, PositionCode, @@ -183,14 +183,14 @@ pub struct StyleOutput { pub grid_column: GridPlacementLineOutput, } -fn integer(value: f64) -> NativeResult +fn integer(value: f64) -> BindingResult where T: TryFrom, { number::to_integer(value) } -fn is_length_input(value: Unknown<'_>) -> NativeResult { +fn is_length_input(value: Unknown<'_>) -> BindingResult { let value_type = value .get_type() .map_err(|_| type_error("Expected a length or geometry object"))?; @@ -208,7 +208,7 @@ fn is_length_input(value: Unknown<'_>) -> NativeResult { fn dimension_size( value: Unknown<'_>, default: Size, -) -> NativeResult> { +) -> BindingResult> { if is_length_input(value)? { let value = length::dimension(value)?; Ok(Size { @@ -223,7 +223,7 @@ fn dimension_size( fn auto_rect( value: Unknown<'_>, default: Rect, -) -> NativeResult> { +) -> BindingResult> { if is_length_input(value)? { let value = length::length_percentage_auto(value)?; Ok(Rect { @@ -240,7 +240,7 @@ fn auto_rect( fn length_rect( value: Unknown<'_>, default: Rect, -) -> NativeResult> { +) -> BindingResult> { if is_length_input(value)? { let value = length::length_percentage(value)?; Ok(Rect { @@ -257,7 +257,7 @@ fn length_rect( fn length_size( value: Unknown<'_>, default: Size, -) -> NativeResult> { +) -> BindingResult> { if is_length_input(value)? { let value = length::length_percentage(value)?; Ok(Size { @@ -269,7 +269,7 @@ fn length_size( } } -fn display(value: f64) -> NativeResult { +fn display(value: f64) -> BindingResult { Ok(match integer::(value)? { DisplayCode::Block => Display::Block, DisplayCode::FlowRoot => Display::FlowRoot, @@ -279,21 +279,21 @@ fn display(value: f64) -> NativeResult { }) } -fn box_sizing(value: f64) -> NativeResult { +fn box_sizing(value: f64) -> BindingResult { Ok(match integer::(value)? { BoxSizingCode::BorderBox => BoxSizing::BorderBox, BoxSizingCode::ContentBox => BoxSizing::ContentBox, }) } -fn direction(value: f64) -> NativeResult { +fn direction(value: f64) -> BindingResult { Ok(match integer::(value)? { DirectionCode::Ltr => Direction::Ltr, DirectionCode::Rtl => Direction::Rtl, }) } -fn overflow(value: f64) -> NativeResult { +fn overflow(value: f64) -> BindingResult { Ok(match integer::(value)? { OverflowCode::Visible => Overflow::Visible, OverflowCode::Clip => Overflow::Clip, @@ -302,7 +302,7 @@ fn overflow(value: f64) -> NativeResult { }) } -fn float(value: f64) -> NativeResult { +fn float(value: f64) -> BindingResult { Ok(match integer::(value)? { FloatCode::Left => Float::Left, FloatCode::Right => Float::Right, @@ -310,7 +310,7 @@ fn float(value: f64) -> NativeResult { }) } -fn clear(value: f64) -> NativeResult { +fn clear(value: f64) -> BindingResult { Ok(match integer::(value)? { ClearCode::Left => Clear::Left, ClearCode::Right => Clear::Right, @@ -319,14 +319,14 @@ fn clear(value: f64) -> NativeResult { }) } -fn position(value: f64) -> NativeResult { +fn position(value: f64) -> BindingResult { Ok(match integer::(value)? { PositionCode::Relative => Position::Relative, PositionCode::Absolute => Position::Absolute, }) } -fn align_items(value: f64) -> NativeResult { +fn align_items(value: f64) -> BindingResult { Ok(match integer::(value)? { AlignItemsCode::Start => AlignItems::START, AlignItemsCode::End => AlignItems::END, @@ -347,7 +347,7 @@ fn align_items(value: f64) -> NativeResult { }) } -fn align_content(value: f64) -> NativeResult { +fn align_content(value: f64) -> BindingResult { Ok(match integer::(value)? { AlignContentCode::Start => AlignContent::START, AlignContentCode::End => AlignContent::END, @@ -366,7 +366,7 @@ fn align_content(value: f64) -> NativeResult { }) } -fn text_align(value: f64) -> NativeResult { +fn text_align(value: f64) -> BindingResult { Ok(match integer::(value)? { TextAlignCode::Auto => TextAlign::Auto, TextAlignCode::LegacyLeft => TextAlign::LegacyLeft, @@ -375,7 +375,7 @@ fn text_align(value: f64) -> NativeResult { }) } -fn flex_direction(value: f64) -> NativeResult { +fn flex_direction(value: f64) -> BindingResult { Ok(match integer::(value)? { FlexDirectionCode::Row => FlexDirection::Row, FlexDirectionCode::Column => FlexDirection::Column, @@ -384,7 +384,7 @@ fn flex_direction(value: f64) -> NativeResult { }) } -fn flex_wrap(value: f64) -> NativeResult { +fn flex_wrap(value: f64) -> BindingResult { Ok(match integer::(value)? { FlexWrapCode::NoWrap => FlexWrap::NoWrap, FlexWrapCode::Wrap => FlexWrap::Wrap, @@ -392,7 +392,7 @@ fn flex_wrap(value: f64) -> NativeResult { }) } -fn grid_auto_flow(value: f64) -> NativeResult { +fn grid_auto_flow(value: f64) -> BindingResult { Ok(match integer::(value)? { GridAutoFlowCode::Row => GridAutoFlow::Row, GridAutoFlowCode::Column => GridAutoFlow::Column, @@ -401,7 +401,7 @@ fn grid_auto_flow(value: f64) -> NativeResult { }) } -pub(crate) fn input(value: Unknown<'_>) -> NativeResult