From 0ccf473fd821d25d431bbf4341c4e837967104bf Mon Sep 17 00:00:00 2001 From: Greg Hale Date: Wed, 30 Oct 2024 15:02:37 -0700 Subject: [PATCH] Move python Checked and Check types into baml_client (#1122) This removes `Checked` and `Check` from `baml_py`. These two types depended on `BaseModel`, incurring a dependency on `pydantic`, which is not desirable for `baml_py`. Now that these types are part of `baml_client` (which already has a `pydantic` dep), `baml_py` itself can be installed without the `pydantic` dependency. ---- > [!IMPORTANT] > Move `Checked` and `Check` types from `baml_py` to `baml_client` to remove `pydantic` dependency from `baml_py`. > > - **Behavior**: > - Move `Checked` and `Check` types from `baml_py` to `baml_client` to eliminate `pydantic` dependency in `baml_py`. > - Update references to `Checked` and `Check` in `generate_types.rs`, `mod.rs`, and `function_results.rs` to use the new location. > - **Types**: > - Add `Checked` and `Check` classes to `types.py` in `baml_client`. > - Implement `get_checks()` and `all_succeeded()` functions in `types.py`. > - **Imports**: > - Update imports in `async_client.py.j2`, `partial_types.py.j2`, and `sync_client.py.j2` to import `Checked` and `Check` from `baml_client/types.py`. > - **Misc**: > - Remove `constraints.py` from `baml_py` as it is no longer needed. > > This description was created by [Ellipsis](https://www.ellipsis.dev?ref=BoundaryML%2Fbaml&utm_source=github&utm_medium=referral) for 46c9b785a59f940b2d6539b1cb4f07559ce71c99. It will automatically update as commits are pushed. --- .../src/python/generate_types.rs | 6 +- .../language_client_codegen/src/python/mod.rs | 4 +- .../src/python/templates/async_client.py.j2 | 1 + .../src/python/templates/partial_types.py.j2 | 1 + .../src/python/templates/sync_client.py.j2 | 1 + .../src/python/templates/types.py.j2 | 22 +- .../python_src/baml_py/__init__.py | 1 - .../python_src/baml_py/constraints.py | 20 - .../src/types/function_results.rs | 11 +- .../01-guide/05-baml-advanced/validations.mdx | 6 +- .../python/baml_client/async_client.py | 13 +- .../python/baml_client/partial_types.py | 11 +- integ-tests/python/baml_client/sync_client.py | 13 +- integ-tests/python/baml_client/types.py | 32 +- integ-tests/python/tests/test_functions.py | 2 + integ-tests/typescript/test-report.html | 1718 +---------------- 16 files changed, 87 insertions(+), 1775 deletions(-) delete mode 100644 engine/language_client_python/python_src/baml_py/constraints.py diff --git a/engine/language_client_codegen/src/python/generate_types.rs b/engine/language_client_codegen/src/python/generate_types.rs index 345447684..4c2044770 100644 --- a/engine/language_client_codegen/src/python/generate_types.rs +++ b/engine/language_client_codegen/src/python/generate_types.rs @@ -185,7 +185,7 @@ fn type_def_for_checks(checks: TypeCheckAttributes) -> PythonClass<'static> { fields: checks .0 .into_iter() - .map(|check_name| (Cow::Owned(check_name), "baml_py.Check".to_string())) + .map(|check_name| (Cow::Owned(check_name), "Check".to_string())) .collect(), dynamic: false, } @@ -254,7 +254,7 @@ impl ToTypeReferenceInTypeDefinition for FieldType { Some(checks) => { let base_type_ref = base.to_type_ref(ir); let checks_type_ref = type_name_for_checks(&checks); - format!("baml_py.Checked[{base_type_ref},{checks_type_ref}]") + format!("Checked[{base_type_ref},{checks_type_ref}]") } None => base.to_type_ref(ir), }, @@ -314,7 +314,7 @@ impl ToTypeReferenceInTypeDefinition for FieldType { Some(checks) => { let base_type_ref = base.to_partial_type_ref(ir, false); let checks_type_ref = type_name_for_checks(&checks); - format!("baml_py.Checked[{base_type_ref},{checks_type_ref}]") + format!("Checked[{base_type_ref},{checks_type_ref}]") } None => base_type_ref, } diff --git a/engine/language_client_codegen/src/python/mod.rs b/engine/language_client_codegen/src/python/mod.rs index 77ca308f1..fb1e6dc41 100644 --- a/engine/language_client_codegen/src/python/mod.rs +++ b/engine/language_client_codegen/src/python/mod.rs @@ -234,7 +234,7 @@ impl ToTypeReferenceInClientDefinition for FieldType { Some(checks) => { let base_type_ref = base.to_type_ref(ir, with_checked); let checks_type_ref = type_name_for_checks(&checks); - format!("baml_py.Checked[{base_type_ref},types.{checks_type_ref}]") + format!("Checked[{base_type_ref},types.{checks_type_ref}]") } None => base.to_type_ref(ir, with_checked), }, @@ -288,7 +288,7 @@ impl ToTypeReferenceInClientDefinition for FieldType { Some(checks) => { let base_type_ref = base.to_partial_type_ref(ir, with_checked); let checks_type_ref = type_name_for_checks(&checks); - format!("baml_py.Checked[{base_type_ref},types.{checks_type_ref}]") + format!("Checked[{base_type_ref},types.{checks_type_ref}]") } None => base.to_partial_type_ref(ir, with_checked), }, diff --git a/engine/language_client_codegen/src/python/templates/async_client.py.j2 b/engine/language_client_codegen/src/python/templates/async_client.py.j2 index e8799a0c1..194629384 100644 --- a/engine/language_client_codegen/src/python/templates/async_client.py.j2 +++ b/engine/language_client_codegen/src/python/templates/async_client.py.j2 @@ -6,6 +6,7 @@ import baml_py from pydantic import BaseModel, ValidationError, create_model from . import partial_types, types +from .types import Checked, Check from .type_builder import TypeBuilder from .globals import DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME diff --git a/engine/language_client_codegen/src/python/templates/partial_types.py.j2 b/engine/language_client_codegen/src/python/templates/partial_types.py.j2 index 3638f4553..7207e974b 100644 --- a/engine/language_client_codegen/src/python/templates/partial_types.py.j2 +++ b/engine/language_client_codegen/src/python/templates/partial_types.py.j2 @@ -5,6 +5,7 @@ from pydantic import BaseModel, ConfigDict from typing import Dict, List, Optional, Union, Literal from . import types +from .types import Checked, Check ############################################################################### # diff --git a/engine/language_client_codegen/src/python/templates/sync_client.py.j2 b/engine/language_client_codegen/src/python/templates/sync_client.py.j2 index 406f8aba1..da5825a9b 100644 --- a/engine/language_client_codegen/src/python/templates/sync_client.py.j2 +++ b/engine/language_client_codegen/src/python/templates/sync_client.py.j2 @@ -6,6 +6,7 @@ import baml_py from pydantic import BaseModel, ValidationError, create_model from . import partial_types, types +from .types import Checked, Check from .type_builder import TypeBuilder from .globals import DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME diff --git a/engine/language_client_codegen/src/python/templates/types.py.j2 b/engine/language_client_codegen/src/python/templates/types.py.j2 index cc3973cf3..0aeaf22ef 100644 --- a/engine/language_client_codegen/src/python/templates/types.py.j2 +++ b/engine/language_client_codegen/src/python/templates/types.py.j2 @@ -2,7 +2,27 @@ import baml_py from enum import Enum from pydantic import BaseModel, ConfigDict -from typing import Dict, List, Optional, Union, Literal +from typing import Dict, Generic, List, Literal, Optional, TypeVar, Union + + +T = TypeVar('T') +CheckName = TypeVar('CheckName', bound=str) + +class Check(BaseModel): + name: str + expression: str + status: str + +class Checked(BaseModel, Generic[T,CheckName]): + value: T + checks: Dict[CheckName, Check] + +def get_checks(checks: Dict[CheckName, Check]) -> List[Check]: + return list(checks.values()) + +def all_succeeded(checks: Dict[CheckName, Check]) -> bool: + return all(check.status == "succeeded" for check in get_checks(checks)) + {# Enums -#} {% for enum in enums %} diff --git a/engine/language_client_python/python_src/baml_py/__init__.py b/engine/language_client_python/python_src/baml_py/__init__.py index 49735260c..f5b32b514 100644 --- a/engine/language_client_python/python_src/baml_py/__init__.py +++ b/engine/language_client_python/python_src/baml_py/__init__.py @@ -18,7 +18,6 @@ ) from .stream import BamlStream, BamlSyncStream from .ctx_manager import CtxManager as BamlCtxManager -from .constraints import Check, Checked __all__ = [ "BamlRuntime", diff --git a/engine/language_client_python/python_src/baml_py/constraints.py b/engine/language_client_python/python_src/baml_py/constraints.py deleted file mode 100644 index ff3472930..000000000 --- a/engine/language_client_python/python_src/baml_py/constraints.py +++ /dev/null @@ -1,20 +0,0 @@ -from typing import Dict, Generic, List, Optional, TypeVar -from pydantic import BaseModel - -T = TypeVar('T') -CheckName = TypeVar('CheckName', bound=str) - -class Check(BaseModel): - name: str - expression: str - status: str - -class Checked(BaseModel, Generic[T,CheckName]): - value: T - checks: Dict[CheckName, Check] - -def get_checks(checks: Dict[CheckName, Check]) -> List[Check]: - return list(checks.values()) - -def all_succeeded(checks: Dict[CheckName, Check]) -> bool: - get_checks(checks).all(lambda check: check.status == "succeeded") diff --git a/engine/language_client_python/src/types/function_results.rs b/engine/language_client_python/src/types/function_results.rs index 11f11afb0..763bdb70e 100644 --- a/engine/language_client_python/src/types/function_results.rs +++ b/engine/language_client_python/src/types/function_results.rs @@ -46,11 +46,11 @@ impl FunctionResult { fn pythonize_checks<'a>( py: Python<'a>, - baml_py: &Bound<'_, PyModule>, + types_module: &Bound<'_, PyModule>, checks: &Vec, ) -> PyResult> { let dict = PyDict::new_bound(py); - let check_class: &PyType = baml_py.getattr("Check")?.extract()?; + let check_class: &PyType = types_module.getattr("Check")?.extract()?; checks.iter().try_for_each(|ResponseCheck{name, expression, status}| { // Construct the Check. let check_properties_dict = pyo3::types::PyDict::new_bound(py); @@ -70,7 +70,6 @@ fn pythonize_strict( enum_module: &Bound<'_, PyModule>, cls_module: &Bound<'_, PyModule>, ) -> PyResult { - let baml_py = py.import_bound("baml_py")?; let meta = parsed.meta().clone(); let py_value_without_constraints = match parsed { BamlValueWithMeta::String(val, _) => PyResult::Ok(val.into_py(py)), @@ -163,7 +162,7 @@ fn pythonize_strict( } else { // Generate the Python checks - let python_checks = pythonize_checks(py, &baml_py, &meta)?; + let python_checks = pythonize_checks(py, &cls_module, &meta)?; // Get the type of the original value let value_type = py_value_without_constraints.bind(py).get_type(); @@ -184,9 +183,7 @@ fn pythonize_strict( properties_dict.set_item("value", py_value_without_constraints)?; properties_dict.set_item("checks", python_checks)?; - // Import the `baml_py` module and get the `Checked` constructor - let baml_py = py.import_bound("baml_py")?; - let class_checked_type_constructor = baml_py.getattr("Checked")?; + let class_checked_type_constructor = cls_module.getattr("Checked")?; // Prepare type parameters for Checked[...] let type_parameters_tuple = PyTuple::new_bound(py, &[value_type.as_ref(), &literal_check_names]); diff --git a/fern/01-guide/05-baml-advanced/validations.mdx b/fern/01-guide/05-baml-advanced/validations.mdx index 54cc426c4..a236408b5 100644 --- a/fern/01-guide/05-baml-advanced/validations.mdx +++ b/fern/01-guide/05-baml-advanced/validations.mdx @@ -201,7 +201,7 @@ runtime. ```python Python -List[baml_py.Checked[int, Dict[Literal["less_than_zero"]]]] +List[Checked[int, Dict[Literal["less_than_zero"]]]] ``` ```typescript Typescript @@ -243,7 +243,7 @@ function GetCitation(full_text: string) -> Citation { ```python Python from baml_client import b -from baml_client.types import Citation +from baml_client.types import Citation, get_checks def main(): citation = b.GetCitation("SpaceX, is an American spacecraft manufacturer, launch service provider...") @@ -257,7 +257,7 @@ def main(): print(f"Citation match status: {quote_match_check})") # Access each check and its status. - for check in baml_py.get_checks(citation.quote.checks): + for check in get_checks(citation.quote.checks): print(f"Check {check.name}: {check.status}") ``` diff --git a/integ-tests/python/baml_client/async_client.py b/integ-tests/python/baml_client/async_client.py index 186d30796..3cd77967f 100644 --- a/integ-tests/python/baml_client/async_client.py +++ b/integ-tests/python/baml_client/async_client.py @@ -21,6 +21,7 @@ from pydantic import BaseModel, ValidationError, create_model from . import partial_types, types +from .types import Checked, Check from .type_builder import TypeBuilder from .globals import DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME @@ -1341,7 +1342,7 @@ async def PredictAgeBare( self, inp: str, baml_options: BamlCallOptions = {}, - ) -> baml_py.Checked[int,types.Literal["too_big"]]: + ) -> Checked[int,types.Literal["too_big"]]: __tb__ = baml_options.get("tb", None) if __tb__ is not None: tb = __tb__._tb @@ -1358,7 +1359,7 @@ async def PredictAgeBare( tb, __cr__, ) - return cast(baml_py.Checked[int,types.Literal["too_big"]], raw.cast_to(types, types)) + return cast(Checked[int,types.Literal["too_big"]], raw.cast_to(types, types)) async def PromptTestClaude( self, @@ -4208,7 +4209,7 @@ def PredictAgeBare( self, inp: str, baml_options: BamlCallOptions = {}, - ) -> baml_py.BamlStream[baml_py.Checked[Optional[int],types.Literal["too_big"]], baml_py.Checked[int,types.Literal["too_big"]]]: + ) -> baml_py.BamlStream[Checked[Optional[int],types.Literal["too_big"]], Checked[int,types.Literal["too_big"]]]: __tb__ = baml_options.get("tb", None) if __tb__ is not None: tb = __tb__._tb @@ -4227,10 +4228,10 @@ def PredictAgeBare( __cr__, ) - return baml_py.BamlStream[baml_py.Checked[Optional[int],types.Literal["too_big"]], baml_py.Checked[int,types.Literal["too_big"]]]( + return baml_py.BamlStream[Checked[Optional[int],types.Literal["too_big"]], Checked[int,types.Literal["too_big"]]]( raw, - lambda x: cast(baml_py.Checked[Optional[int],types.Literal["too_big"]], x.cast_to(types, partial_types)), - lambda x: cast(baml_py.Checked[int,types.Literal["too_big"]], x.cast_to(types, types)), + lambda x: cast(Checked[Optional[int],types.Literal["too_big"]], x.cast_to(types, partial_types)), + lambda x: cast(Checked[int,types.Literal["too_big"]], x.cast_to(types, types)), self.__ctx_manager.get(), ) diff --git a/integ-tests/python/baml_client/partial_types.py b/integ-tests/python/baml_client/partial_types.py index 3de36ac3c..9dbcdae3e 100644 --- a/integ-tests/python/baml_client/partial_types.py +++ b/integ-tests/python/baml_client/partial_types.py @@ -19,6 +19,7 @@ from typing import Dict, List, Optional, Union, Literal from . import types +from .types import Checked, Check ############################################################################### # @@ -121,7 +122,7 @@ class DynamicOutput(BaseModel): class Earthling(BaseModel): - age: baml_py.Checked[Optional[int],Literal["earth_aged", "no_infants"]] + age: Checked[Optional[int],Literal["earth_aged", "no_infants"]] class Education(BaseModel): @@ -170,8 +171,8 @@ class FooAny(BaseModel): planetary_age: Optional[Union["Martian", "Earthling"]] = None - certainty: baml_py.Checked[Optional[int],Literal["unreasonably_certain"]] - species: baml_py.Checked[Optional[str],Literal["regex_bad", "regex_good", "trivial"]] + certainty: Checked[Optional[int],Literal["unreasonably_certain"]] + species: Checked[Optional[str],Literal["regex_bad", "regex_good", "trivial"]] class GroceryReceipt(BaseModel): @@ -224,7 +225,7 @@ class LiteralClassTwo(BaseModel): class MalformedConstraints(BaseModel): - foo: baml_py.Checked[Optional[int],Literal["foo_check"]] + foo: Checked[Optional[int],Literal["foo_check"]] class MalformedConstraints2(BaseModel): @@ -234,7 +235,7 @@ class MalformedConstraints2(BaseModel): class Martian(BaseModel): - age: baml_py.Checked[Optional[int],Literal["young_enough"]] + age: Checked[Optional[int],Literal["young_enough"]] class NamedArgsSingleClass(BaseModel): diff --git a/integ-tests/python/baml_client/sync_client.py b/integ-tests/python/baml_client/sync_client.py index 2c190510f..27dfb4c13 100644 --- a/integ-tests/python/baml_client/sync_client.py +++ b/integ-tests/python/baml_client/sync_client.py @@ -21,6 +21,7 @@ from pydantic import BaseModel, ValidationError, create_model from . import partial_types, types +from .types import Checked, Check from .type_builder import TypeBuilder from .globals import DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME @@ -1338,7 +1339,7 @@ def PredictAgeBare( self, inp: str, baml_options: BamlCallOptions = {}, - ) -> baml_py.Checked[int,types.Literal["too_big"]]: + ) -> Checked[int,types.Literal["too_big"]]: __tb__ = baml_options.get("tb", None) if __tb__ is not None: tb = __tb__._tb @@ -1355,7 +1356,7 @@ def PredictAgeBare( tb, __cr__, ) - return cast(baml_py.Checked[int,types.Literal["too_big"]], raw.cast_to(types, types)) + return cast(Checked[int,types.Literal["too_big"]], raw.cast_to(types, types)) def PromptTestClaude( self, @@ -4206,7 +4207,7 @@ def PredictAgeBare( self, inp: str, baml_options: BamlCallOptions = {}, - ) -> baml_py.BamlSyncStream[baml_py.Checked[Optional[int],types.Literal["too_big"]], baml_py.Checked[int,types.Literal["too_big"]]]: + ) -> baml_py.BamlSyncStream[Checked[Optional[int],types.Literal["too_big"]], Checked[int,types.Literal["too_big"]]]: __tb__ = baml_options.get("tb", None) if __tb__ is not None: tb = __tb__._tb @@ -4225,10 +4226,10 @@ def PredictAgeBare( __cr__, ) - return baml_py.BamlSyncStream[baml_py.Checked[Optional[int],types.Literal["too_big"]], baml_py.Checked[int,types.Literal["too_big"]]]( + return baml_py.BamlSyncStream[Checked[Optional[int],types.Literal["too_big"]], Checked[int,types.Literal["too_big"]]]( raw, - lambda x: cast(baml_py.Checked[Optional[int],types.Literal["too_big"]], x.cast_to(types, partial_types)), - lambda x: cast(baml_py.Checked[int,types.Literal["too_big"]], x.cast_to(types, types)), + lambda x: cast(Checked[Optional[int],types.Literal["too_big"]], x.cast_to(types, partial_types)), + lambda x: cast(Checked[int,types.Literal["too_big"]], x.cast_to(types, types)), self.__ctx_manager.get(), ) diff --git a/integ-tests/python/baml_client/types.py b/integ-tests/python/baml_client/types.py index 5781e78c7..51ea0c49c 100644 --- a/integ-tests/python/baml_client/types.py +++ b/integ-tests/python/baml_client/types.py @@ -16,7 +16,27 @@ import baml_py from enum import Enum from pydantic import BaseModel, ConfigDict -from typing import Dict, List, Optional, Union, Literal +from typing import Dict, Generic, List, Literal, Optional, TypeVar, Union + + +T = TypeVar('T') +CheckName = TypeVar('CheckName', bound=str) + +class Check(BaseModel): + name: str + expression: str + status: str + +class Checked(BaseModel, Generic[T,CheckName]): + value: T + checks: Dict[CheckName, Check] + +def get_checks(checks: Dict[CheckName, Check]) -> List[Check]: + return list(checks.values()) + +def all_succeeded(checks: Dict[CheckName, Check]) -> bool: + return all(check.status == "succeeded" for check in get_checks(checks)) + class AliasedEnum(str, Enum): @@ -217,7 +237,7 @@ class DynamicOutput(BaseModel): class Earthling(BaseModel): - age: baml_py.Checked[int,Literal["earth_aged", "no_infants"]] + age: Checked[int,Literal["earth_aged", "no_infants"]] class Education(BaseModel): @@ -266,8 +286,8 @@ class FooAny(BaseModel): planetary_age: Union["Martian", "Earthling"] - certainty: baml_py.Checked[int,Literal["unreasonably_certain"]] - species: baml_py.Checked[str,Literal["regex_bad", "regex_good", "trivial"]] + certainty: Checked[int,Literal["unreasonably_certain"]] + species: Checked[str,Literal["regex_bad", "regex_good", "trivial"]] class GroceryReceipt(BaseModel): @@ -320,7 +340,7 @@ class LiteralClassTwo(BaseModel): class MalformedConstraints(BaseModel): - foo: baml_py.Checked[int,Literal["foo_check"]] + foo: Checked[int,Literal["foo_check"]] class MalformedConstraints2(BaseModel): @@ -330,7 +350,7 @@ class MalformedConstraints2(BaseModel): class Martian(BaseModel): - age: baml_py.Checked[int,Literal["young_enough"]] + age: Checked[int,Literal["young_enough"]] class NamedArgsSingleClass(BaseModel): diff --git a/integ-tests/python/tests/test_functions.py b/integ-tests/python/tests/test_functions.py index c9a7ca54e..91e18dc47 100644 --- a/integ-tests/python/tests/test_functions.py +++ b/integ-tests/python/tests/test_functions.py @@ -30,6 +30,7 @@ MalformedConstraints2, LiteralClassHello, LiteralClassOne, + all_succeeded ) import baml_client.types as types from ..baml_client.tracing import trace, set_tags, flush, on_log_event @@ -109,6 +110,7 @@ async def test_return_literal_union(self): async def test_constraints(self): res = await b.PredictAge("Greg") assert res.certainty.checks["unreasonably_certain"].status == "failed" + assert not (all_succeeded(res.certainty.checks)) @pytest.mark.asyncio async def test_constraint_union_variant_checking(self): diff --git a/integ-tests/typescript/test-report.html b/integ-tests/typescript/test-report.html index 13b1013a1..ebfb773e8 100644 --- a/integ-tests/typescript/test-report.html +++ b/integ-tests/typescript/test-report.html @@ -257,1718 +257,6 @@ font-size: 1rem; padding: 0 0.5rem; } -

Test Report

Started: 2024-10-28 21:38:54
Suites (1)
0 passed
1 failed
0 pending
Tests (59)
58 passed
1 failed
0 pending
Integ tests > should work for all inputs
single bool
passed
0.353s
Integ tests > should work for all inputs
single string list
passed
0.878s
Integ tests > should work for all inputs
return literal union
passed
0.474s
Integ tests > should work for all inputs
single class
passed
0.428s
Integ tests > should work for all inputs
multiple classes
passed
0.572s
Integ tests > should work for all inputs
single enum list
passed
0.479s
Integ tests > should work for all inputs
single float
passed
0.523s
Integ tests > should work for all inputs
single int
passed
0.522s
Integ tests > should work for all inputs
single literal int
passed
0.338s
Integ tests > should work for all inputs
single literal bool
passed
1.445s
Integ tests > should work for all inputs
single literal string
passed
0.559s
Integ tests > should work for all inputs
single class with literal prop
passed
0.447s
Integ tests > should work for all inputs
single class with literal union prop
passed
0.37s
Integ tests > should work for all inputs
single optional string
passed
0.504s
Integ tests > should work for all inputs
single map string to string
passed
0.564s
Integ tests > should work for all inputs
single map string to class
passed
0.738s
Integ tests > should work for all inputs
single map string to map
passed
0.858s
Integ tests
should work for all outputs
passed
6.242s
Integ tests
works with retries1
passed
1.078s
Integ tests
works with retries2
passed
2.214s
Integ tests
works with fallbacks
passed
2.033s
Integ tests
should work with image from url
passed
1.097s
Integ tests
should work with image from base 64
passed
1.071s
Integ tests
should work with audio base 64
passed
1.035s
Integ tests
should work with audio from url
passed
1.304s
Integ tests
should support streaming in OpenAI
passed
3.351s
Integ tests
should support streaming in Gemini
passed
8.58s
Integ tests
should support AWS
passed
2.024s
Integ tests
should support streaming in AWS
passed
2.234s
Integ tests
should support OpenAI shorthand
passed
8.647s
Integ tests
should support OpenAI shorthand streaming
passed
7.154s
Integ tests
should support anthropic shorthand
passed
3.428s
Integ tests
should support anthropic shorthand streaming
passed
2.289s
Integ tests
should support streaming without iterating
passed
2.336s
Integ tests
should support streaming in Claude
passed
0.917s
Integ tests
should support vertex
passed
9.162s
Integ tests
supports tracing sync
passed
0.022s
Integ tests
supports tracing async
passed
4.422s
Integ tests
should work with dynamic types single
passed
1.125s
Integ tests
should work with dynamic types enum
passed
1.274s
Integ tests
should work with dynamic literals
passed
0.969s
Integ tests
should work with dynamic types class
passed
0.908s
Integ tests
should work with dynamic inputs class
passed
0.569s
Integ tests
should work with dynamic inputs list
passed
0.988s
Integ tests
should work with dynamic output map
passed
0.861s
Integ tests
should work with dynamic output union
passed
2.332s
Integ tests
should work with nested classes
failed
10.5s
Error: expect(received).toEqual(expected) // deep equality
-
-- Expected  - 1
-+ Received  + 1
-
-  Object {
-    "prop1": "value_of_prop1",
-    "prop2": Object {
-      "inner": Object {
-        "prop2": 42,
--       "prop3": 3.14,
-+       "prop3": null,
-      },
-      "prop1": "value_of_prop1",
-      "prop2": "value_of_prop2",
-    },
-  }
-    at Object.toEqual (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:580:25)
Integ tests
should work with dynamic client
passed
0.471s
Integ tests
should work with 'onLogEvent'
passed
2.152s
Integ tests
should work with a sync client
passed
0.546s
Integ tests
should raise an error when appropriate
passed
0.855s
Integ tests
should raise a BAMLValidationError
passed
0.689s
Integ tests
should reset environment variables correctly
passed
1.123s
Integ tests
should use aliases when serializing input objects - classes
passed
1.228s
Integ tests
should use aliases when serializing, but still have original keys in jinja
passed
1.402s
Integ tests
should use aliases when serializing input objects - enums
passed
0.688s
Integ tests
should use aliases when serializing input objects - lists
passed
0.468s
Integ tests
constraints: should handle checks in return types
passed
0.811s
Integ tests
constraints: should handle checks in returned unions
passed
0.799s
Console Log
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:47:15)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
calling with class
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:53:15)
got response key
-true
-52
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:176:15)
Expected error Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "RetryClientConstant", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Say a haiku")] }]), request_options: {"model": String("gpt-3.5-turbo")}, start_time: SystemTime { tv_sec: 1730176751, tv_nsec: 818171000 }, latency: 167.411583ms, message: "Request failed: {\n    \"error\": {\n        \"message\": \"Incorrect API key provided: blah. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
-    at BamlAsyncClient.parsed [as TestRetryConstant] (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:2584:18)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:173:7) {
-  code: 'GenericFailure'
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:185:15)
Expected error Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "RetryClientExponential", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Say a haiku")] }]), request_options: {"model": String("gpt-3.5-turbo")}, start_time: SystemTime { tv_sec: 1730176753, tv_nsec: 988612000 }, latency: 246.62625ms, message: "Request failed: {\n    \"error\": {\n        \"message\": \"Incorrect API key provided: blahh. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
-    at BamlAsyncClient.parsed [as TestRetryExponential] (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:2609:18)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:182:7) {
-  code: 'GenericFailure'
-}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:338:15)
-    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:83:38)
-    at AsyncLocalStorage.run (node:async_hooks:338:14)
-    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:81:22)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:347:5)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
hello world
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:341:15)
-    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:83:38)
-    at AsyncLocalStorage.run (node:async_hooks:338:14)
-    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:81:22)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:347:5)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
dummyFunc returned
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:344:15)
-    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:83:38)
-    at AsyncLocalStorage.run (node:async_hooks:338:14)
-    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:81:22)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:347:5)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
dummyFunc2 returned
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
dummy hi1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
dummy hi2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
dummy hi3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:384:15)
-    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:44)
-    at AsyncLocalStorage.run (node:async_hooks:338:14)
-    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:28)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:400:5)
hello world
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
dummy firstDummyFuncArg
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:389:20
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:389:20
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:389:20
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:389:20
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
dummy secondDummyFuncArg
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 0)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:397:20
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:538:9)
-    at processTimers (node:internal/timers:512:7)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 1)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:397:20
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at async Promise.all (index 2)
-    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:397:20
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:397:20
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
dummy thirdDummyFuncArg
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:403:15)
-    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:44)
-    at AsyncLocalStorage.run (node:async_hooks:338:14)
-    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:28)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:409:5)
hello world
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:413:13)
stats {"failed":0,"started":30,"finalized":30,"submitted":30,"sent":30,"done":30}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:437:13)
[
-  {
-    name: 'Harrison',
-    hair_color: 'BLACK',
-    last_name: null,
-    height: 1.83,
-    hobbies: [ 'SPORTS' ]
-  }
-]
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:506:13)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
[
-  [
-    'hair_color',
-    ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
-  ],
-  [
-    'attributes',
-    ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
-  ]
-]
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:508:15)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: hair_color
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:508:15)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: attributes
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:516:13)
final  {
-  hair_color: 'black',
-  attributes: { height: '6 feet', eye_color: 'blue', facial_hair: 'beard' }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:540:13)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
[
-  [
-    'hair_color',
-    ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
-  ],
-  [
-    'attributes',
-    ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
-  ],
-  [ 'height', ClassPropertyBuilder { bldr: ClassPropertyBuilder {} } ]
-]
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:542:15)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: hair_color
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:542:15)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: attributes
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:542:15)
-    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
-    at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: height
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:550:13)
final  {
-  hair_color: 'black',
-  attributes: { eye_color: 'blue', facial_hair: 'beard', age: '30' },
-  height: { feet: 6, inches: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:561:13)
final  {
-  hair_color: 'black',
-  attributes: { eye_color: 'blue', facial_hair: 'beard' },
-  height: { meters: 1.8 }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: '', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_prop', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_prop1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_prop1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_prop1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_prop1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_prop1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_prop1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_prop1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg { prop1: 'value_of_prop1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: '', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: null, inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: '', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of_', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of_prop', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of_prop2', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of_prop2', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of_prop2', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of_prop2', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of_prop2', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of_prop2', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: { prop1: 'value_of_prop1', prop2: 'value_of_prop2', inner: null }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: null, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: 3.14 }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:574:15)
msg {
-  prop1: 'value_of_prop1',
-  prop2: {
-    prop1: 'value_of_prop1',
-    prop2: 'value_of_prop2',
-    inner: { prop2: 42, prop3: null }
-  }
-}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:599:15)
-    at callback (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:70:17)
onLogEvent {
-  metadata: {
-    eventId: '5557acee-3985-4c90-b138-f2a9f804f204',
-    rootEventId: '5557acee-3985-4c90-b138-f2a9f804f204'
-  },
-  prompt: '[\n' +
-    '  {\n' +
-    '    "role": "system",\n' +
-    '    "content": [\n' +
-    '      {\n' +
-    '        "text": "Return this value back to me: [\\"a\\", \\"b\\", \\"c\\"]"\n' +
-    '      }\n' +
-    '    ]\n' +
-    '  }\n' +
-    ']',
-  rawOutput: '["a", "b", "c"]',
-  parsedOutput: '["a", "b", "c"]',
-  startTime: '2024-10-29T04:40:35.699Z'
-}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:599:15)
-    at callback (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:70:17)
onLogEvent {
-  metadata: {
-    eventId: 'e4ec9ab5-421c-4bc8-8e28-c8e856bd6063',
-    rootEventId: 'e4ec9ab5-421c-4bc8-8e28-c8e856bd6063'
-  },
-  prompt: '[\n' +
-    '  {\n' +
-    '    "role": "system",\n' +
-    '    "content": [\n' +
-    '      {\n' +
-    '        "text": "Return this value back to me: [\\"d\\", \\"e\\", \\"f\\"]"\n' +
-    '      }\n' +
-    '    ]\n' +
-    '  }\n' +
-    ']',
-  rawOutput: '["d", "e", "f"]',
-  parsedOutput: '["d", "e", "f"]',
-  startTime: '2024-10-29T04:40:36.243Z'
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:633:15)
Error: Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "MyClient", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Given a string, extract info using the schema:\n\nMy name is Harrison. My hair is black and I'm 6 feet tall.\n\nAnswer in JSON using this schema:\n{\n}")] }]), request_options: {"model": String("gpt-4o-mini")}, start_time: SystemTime { tv_sec: 1730176838, tv_nsec: 240750000 }, latency: 147.296792ms, message: "Request failed: {\n    \"error\": {\n        \"message\": \"Incorrect API key provided: INVALID_KEY. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
-    at BamlAsyncClient.parsed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:1384:18)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:630:7) {
-  code: 'GenericFailure'
-}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:641:17)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:637:5)
BamlValidationError: BamlValidationError: Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
-  - <root>: Missing required field: nonce
-  - <root>: Missing required field: nonce2
-    at Function.from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:33:28)
-    at from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:58:32)
-    at BamlAsyncClient.DummyOutputFunction (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:486:50)
-    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:639:9
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:637:5) {
-  prompt: '[\x1B[2mchat\x1B[0m] \x1B[43msystem: \x1B[0mSay "hello there".\n',
-  raw_output: 'Hello there! How can I assist you today?'
-}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:653:17)
error BamlValidationError: BamlValidationError: Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
-  - <root>: Missing required field: nonce
-  - <root>: Missing required field: nonce2
-    at Function.from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:33:28)
-    at from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:58:32)
-    at BamlAsyncClient.DummyOutputFunction (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:486:50)
-    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:649:7) {
-  prompt: '[\x1B[2mchat\x1B[0m] \x1B[43msystem: \x1B[0mSay "hello there".\n',
-  raw_output: 'Hello there! How can I assist you today?'
-}
\ No newline at end of file +

Test Report

Started: 2024-10-30 14:30:46
Suites (1)
0 passed
1 failed
0 pending
Tests (59)
58 passed
1 failed
0 pending
Integ tests > should work for all inputs
single bool
passed
0.617s
Integ tests > should work for all inputs
single string list
passed
0.466s
Integ tests > should work for all inputs
return literal union
passed
0.497s
Integ tests > should work for all inputs
single class
passed
0.67s
Integ tests > should work for all inputs
multiple classes
passed
0.586s
Integ tests > should work for all inputs
single enum list
passed
0.533s
Integ tests > should work for all inputs
single float
passed
0.508s
Integ tests > should work for all inputs
single int
passed
0.37s
Integ tests > should work for all inputs
single literal int
passed
0.554s
Integ tests > should work for all inputs
single literal bool
passed
0.434s
Integ tests > should work for all inputs
single literal string
passed
0.494s
Integ tests > should work for all inputs
single class with literal prop
passed
0.955s
Integ tests > should work for all inputs
single class with literal union prop
passed
0.52s
Integ tests > should work for all inputs
single optional string
passed
0.787s
Integ tests > should work for all inputs
single map string to string
passed
1.614s
Integ tests > should work for all inputs
single map string to class
passed
1.125s
Integ tests > should work for all inputs
single map string to map
passed
0.657s
Integ tests
should work for all outputs
passed
5.995s
Integ tests
works with retries1
passed
1.203s
Integ tests
works with retries2
passed
2.237s
Integ tests
works with fallbacks
passed
2.009s
Integ tests
should work with image from url
passed
1.273s
Integ tests
should work with image from base 64
passed
1.394s
Integ tests
should work with audio base 64
passed
0.991s
Integ tests
should work with audio from url
passed
1.23s
Integ tests
should support streaming in OpenAI
passed
3.557s
Integ tests
should support streaming in Gemini
passed
6.882s
Integ tests
should support AWS
passed
2.873s
Integ tests
should support streaming in AWS
passed
2.155s
Integ tests
should support OpenAI shorthand
passed
10.751s
Integ tests
should support OpenAI shorthand streaming
passed
11.46s
Integ tests
should support anthropic shorthand
passed
3.378s
Integ tests
should support anthropic shorthand streaming
passed
2.771s
Integ tests
should support streaming without iterating
passed
2.707s
Integ tests
should support streaming in Claude
passed
1.116s
Integ tests
should support vertex
passed
8.261s
Integ tests
supports tracing sync
passed
0.017s
Integ tests
supports tracing async
passed
2.202s
Integ tests
should work with dynamic types single
passed
1.456s
Integ tests
should work with dynamic types enum
passed
0.85s
Integ tests
should work with dynamic literals
passed
0.896s
Integ tests
should work with dynamic types class
passed
1.325s
Integ tests
should work with dynamic inputs class
passed
0.814s
Integ tests
should work with dynamic inputs list
passed
0.674s
Integ tests
should work with dynamic output map
passed
0.865s
Integ tests
should work with dynamic output union
passed
2.457s
Integ tests
should work with nested classes
failed
0.102s
Error: BamlError: BamlClientError: Something went wrong with the LLM client: LLM call failed: LLMErrorResponse { client: "Ollama", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Return a made up json blob that matches this schema:\nAnswer in JSON using this schema:\n{\n  prop1: string,\n  prop2: {\n    prop1: string,\n    prop2: string,\n    inner: {\n      prop2: int,\n      prop3: float,\n    },\n  },\n}\n---\n\nJSON:")] }]), request_options: {"model": String("llama2")}, start_time: SystemTime { tv_sec: 1730323942, tv_nsec: 58743000 }, latency: 1.906375ms, message: "reqwest::Error { kind: Request, url: Url { scheme: \"http\", cannot_be_a_base: false, username: \"\", password: None, host: Some(Domain(\"localhost\")), port: Some(11434), path: \"/v1/chat/completions\", query: None, fragment: None }, source: hyper_util::client::legacy::Error(Connect, ConnectError(\"tcp connect error\", Os { code: 61, kind: ConnectionRefused, message: \"Connection refused\" })) }", code: Other(2) }
+    at BamlStream.parsed [as getFinalResponse] (/Users/greghale/code/baml/engine/language_client_typescript/stream.js:58:39)
+    at Object.<anonymous> (/Users/greghale/code/baml/integ-tests/typescript/tests/integ-tests.test.ts:578:19)
Integ tests
should work with dynamic client
passed
0.531s
Integ tests
should work with 'onLogEvent'
passed
2.463s
Integ tests
should work with a sync client
passed
0.583s
Integ tests
should raise an error when appropriate
passed
1.078s
Integ tests
should raise a BAMLValidationError
passed
0.474s
Integ tests
should reset environment variables correctly
passed
1.003s
Integ tests
should use aliases when serializing input objects - classes
passed
2.363s
Integ tests
should use aliases when serializing, but still have original keys in jinja
passed
1.11s
Integ tests
should use aliases when serializing input objects - enums
passed
0.519s
Integ tests
should use aliases when serializing input objects - lists
passed
0.432s
Integ tests
constraints: should handle checks in return types
passed
0.898s
Integ tests
constraints: should handle checks in returned unions
passed
0.829s
\ No newline at end of file