diff --git a/CHANGELOG.md b/CHANGELOG.md index aec057fc2..e06adfa45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines. +## [0.56.1](https://github.com/boundaryml/baml/compare/0.56.0..0.56.1) - 2024-09-21 + + +### Bug Fixes +- Improved parser for unions (#975) - ([b390521](https://github.com/boundaryml/baml/commit/b39052111529f217762b3271846006bec4a604de)) - hellovai +- [syntax] Allow lists to contain trailing comma (#974) - ([9e3dc6c](https://github.com/boundaryml/baml/commit/9e3dc6c90954905a96b599ef28c40094fe48a43e)) - Greg Hale + ## [0.56.0](https://github.com/boundaryml/baml/compare/0.55.3..0.56.0) - 2024-09-20 Shout outs to Nico for fixing some internal Rust dependencies, and to Lorenz for correcting our documentation! We really appreciate it :) diff --git a/engine/Cargo.lock b/engine/Cargo.lock index a0896e4a5..435a58888 100644 --- a/engine/Cargo.lock +++ b/engine/Cargo.lock @@ -773,7 +773,7 @@ dependencies = [ [[package]] name = "baml-lib" -version = "0.56.0" +version = "0.56.1" dependencies = [ "base64 0.13.1", "dissimilar", @@ -811,7 +811,7 @@ dependencies = [ [[package]] name = "baml-runtime" -version = "0.56.0" +version = "0.56.1" dependencies = [ "ambassador", "anyhow", @@ -901,7 +901,7 @@ dependencies = [ [[package]] name = "baml-schema-build" -version = "0.56.0" +version = "0.56.1" dependencies = [ "anyhow", "baml-runtime", @@ -936,7 +936,7 @@ dependencies = [ [[package]] name = "baml-types" -version = "0.56.0" +version = "0.56.1" dependencies = [ "anyhow", "clap", @@ -2333,7 +2333,7 @@ dependencies = [ [[package]] name = "internal-baml-codegen" -version = "0.56.0" +version = "0.56.1" dependencies = [ "anyhow", "askama", @@ -2357,7 +2357,7 @@ dependencies = [ [[package]] name = "internal-baml-core" -version = "0.56.0" +version = "0.56.1" dependencies = [ "anyhow", "baml-types", @@ -2390,7 +2390,7 @@ dependencies = [ [[package]] name = "internal-baml-diagnostics" -version = "0.56.0" +version = "0.56.1" dependencies = [ "anyhow", "colored", @@ -2403,7 +2403,7 @@ dependencies = [ [[package]] name = "internal-baml-jinja" -version = "0.56.0" +version = "0.56.1" dependencies = [ "anyhow", "askama", @@ -2421,7 +2421,7 @@ dependencies = [ [[package]] name = "internal-baml-parser-database" -version = "0.56.0" +version = "0.56.1" dependencies = [ "anyhow", "baml-types", @@ -2443,7 +2443,7 @@ dependencies = [ [[package]] name = "internal-baml-prompt-parser" -version = "0.56.0" +version = "0.56.1" dependencies = [ "internal-baml-diagnostics", "internal-baml-schema-ast", @@ -2455,7 +2455,7 @@ dependencies = [ [[package]] name = "internal-baml-schema-ast" -version = "0.56.0" +version = "0.56.1" dependencies = [ "baml-types", "either", @@ -2532,7 +2532,7 @@ checksum = "9dbbfed4e59ba9750e15ba154fdfd9329cee16ff3df539c2666b70f58cc32105" [[package]] name = "jsonish" -version = "0.56.0" +version = "0.56.1" dependencies = [ "anyhow", "assert-json-diff", diff --git a/engine/Cargo.toml b/engine/Cargo.toml index 5834fff02..9eca37994 100644 --- a/engine/Cargo.toml +++ b/engine/Cargo.toml @@ -62,7 +62,7 @@ internal-baml-jinja = { path = "baml-lib/jinja" } internal-baml-schema-ast = { path = "baml-lib/schema-ast" } [workspace.package] -version = "0.56.0" +version = "0.56.1" authors = ["Boundary "] description = "BAML Toolchain" diff --git a/engine/language_client_python/pyproject.toml b/engine/language_client_python/pyproject.toml index ade278f53..cd6b45827 100644 --- a/engine/language_client_python/pyproject.toml +++ b/engine/language_client_python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "baml-py" -version = "0.56.0" +version = "0.56.1" description = "BAML python bindings (pyproject.toml)" readme = "README.md" authors = [["Boundary", "contact@boundaryml.com"]] diff --git a/engine/language_client_ruby/baml.gemspec b/engine/language_client_ruby/baml.gemspec index e1f956921..3ff923975 100644 --- a/engine/language_client_ruby/baml.gemspec +++ b/engine/language_client_ruby/baml.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |spec| spec.name = "baml" - spec.version = "0.56.0" + spec.version = "0.56.1" spec.authors = ["BoundaryML"] spec.email = ["contact@boundaryml.com"] diff --git a/engine/language_client_typescript/package.json b/engine/language_client_typescript/package.json index 4c8dbbd96..59f36a36d 100644 --- a/engine/language_client_typescript/package.json +++ b/engine/language_client_typescript/package.json @@ -1,6 +1,6 @@ { "name": "@boundaryml/baml", - "version": "0.56.0", + "version": "0.56.1", "description": "BAML typescript bindings (package.json)", "repository": { "type": "git", diff --git a/integ-tests/baml_src/generators.baml b/integ-tests/baml_src/generators.baml index 75168985b..4caf43595 100644 --- a/integ-tests/baml_src/generators.baml +++ b/integ-tests/baml_src/generators.baml @@ -1,24 +1,24 @@ generator lang_python { output_type python/pydantic output_dir "../python" - version "0.56.0" + version "0.56.1" } generator lang_typescript { output_type typescript output_dir "../typescript" - version "0.56.0" + version "0.56.1" } generator lang_ruby { output_type ruby/sorbet output_dir "../ruby" - version "0.56.0" + version "0.56.1" } generator openapi { output_type rest/openapi output_dir "../openapi" - version "0.56.0" + version "0.56.1" on_generate "rm .gitignore" } diff --git a/integ-tests/python/baml_client/inlinedbaml.py b/integ-tests/python/baml_client/inlinedbaml.py index 6c0e927ce..a0a27d576 100644 --- a/integ-tests/python/baml_client/inlinedbaml.py +++ b/integ-tests/python/baml_client/inlinedbaml.py @@ -25,7 +25,7 @@ "fiddle-examples/extract-receipt-info.baml": "class ReceiptItem {\n name string\n description string?\n quantity int\n price float\n}\n\nclass ReceiptInfo {\n items ReceiptItem[]\n total_cost float?\n}\n\nfunction ExtractReceiptInfo(email: string) -> ReceiptInfo {\n client GPT4o\n prompt #\"\n Given the receipt below:\n\n ```\n {{email}}\n ```\n\n {{ ctx.output_format }}\n \"#\n}\n\n", "fiddle-examples/images/image.baml": "function DescribeImage(img: image) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\") }}\n\n\n Describe the image below in 20 words:\n {{ img }}\n \"#\n\n}\n\nclass FakeImage {\n url string\n}\n\nclass ClassWithImage {\n myImage image\n param2 string\n fake_image FakeImage\n}\n\n// chat role user present\nfunction DescribeImage2(classWithImage: ClassWithImage, img2: image) -> string { \n client GPT4Turbo\n prompt #\"\n {{ _.role(\"user\") }}\n You should return 2 answers that answer the following commands.\n\n 1. Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n 2. Also tell me what's happening here in one sentence:\n {{ img2 }}\n \"#\n}\n\n// no chat role\nfunction DescribeImage3(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\n\n// system prompt and chat prompt\nfunction DescribeImage4(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n {{ _.role(\"system\")}}\n\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\ntest TestName {\n functions [DescribeImage]\n args {\n img { url \"https://imgs.xkcd.com/comics/standards.png\"}\n }\n}\n", "fiddle-examples/symbol-tuning.baml": "enum Category3 {\n Refund @alias(\"k1\")\n @description(\"Customer wants to refund a product\")\n\n CancelOrder @alias(\"k2\")\n @description(\"Customer wants to cancel an order\")\n\n TechnicalSupport @alias(\"k3\")\n @description(\"Customer needs help with a technical issue unrelated to account creation or login\")\n\n AccountIssue @alias(\"k4\")\n @description(\"Specifically relates to account-login or account-creation\")\n\n Question @alias(\"k5\")\n @description(\"Customer has a question\")\n}\n\nfunction ClassifyMessage3(input: string) -> Category {\n client GPT4\n\n prompt #\"\n Classify the following INPUT into ONE\n of the following categories:\n\n INPUT: {{ input }}\n\n {{ ctx.output_format }}\n\n Response:\n \"#\n}", - "generators.baml": "generator lang_python {\n output_type python/pydantic\n output_dir \"../python\"\n version \"0.56.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.56.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.56.0\"\n}\n\ngenerator openapi {\n output_type rest/openapi\n output_dir \"../openapi\"\n version \"0.56.0\"\n on_generate \"rm .gitignore\"\n}\n", + "generators.baml": "generator lang_python {\n output_type python/pydantic\n output_dir \"../python\"\n version \"0.56.1\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.56.1\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.56.1\"\n}\n\ngenerator openapi {\n output_type rest/openapi\n output_dir \"../openapi\"\n version \"0.56.1\"\n on_generate \"rm .gitignore\"\n}\n", "test-files/aliases/classes.baml": "class TestClassAlias {\n key string @alias(\"key-dash\") @description(#\"\n This is a description for key\n af asdf\n \"#)\n key2 string @alias(\"key21\")\n key3 string @alias(\"key with space\")\n key4 string //unaliased\n key5 string @alias(\"key.with.punctuation/123\")\n}\n\nfunction FnTestClassAlias(input: string) -> TestClassAlias {\n client GPT35\n prompt #\"\n {{ctx.output_format}}\n \"#\n}\n\ntest FnTestClassAlias {\n functions [FnTestClassAlias]\n args {\n input \"example input\"\n }\n}\n", "test-files/aliases/enums.baml": "enum TestEnum {\n A @alias(\"k1\") @description(#\"\n User is angry\n \"#)\n B @alias(\"k22\") @description(#\"\n User is happy\n \"#)\n // tests whether k1 doesnt incorrectly get matched with k11\n C @alias(\"k11\") @description(#\"\n User is sad\n \"#)\n D @alias(\"k44\") @description(\n User is confused\n )\n E @description(\n User is excited\n )\n F @alias(\"k5\") // only alias\n \n G @alias(\"k6\") @description(#\"\n User is bored\n With a long description\n \"#)\n \n @@alias(\"Category\")\n}\n\nfunction FnTestAliasedEnumOutput(input: string) -> TestEnum {\n client GPT35\n prompt #\"\n Classify the user input into the following category\n \n {{ ctx.output_format }}\n\n {{ _.role('user') }}\n {{input}}\n\n {{ _.role('assistant') }}\n Category ID:\n \"#\n}\n\ntest FnTestAliasedEnumOutput {\n functions [FnTestAliasedEnumOutput]\n args {\n input \"mehhhhh\"\n }\n}", "test-files/comments/comments.baml": "// add some functions, classes, enums etc with comments all over.", diff --git a/integ-tests/python/report.html b/integ-tests/python/report.html index 252e59f68..99bac7d47 100644 --- a/integ-tests/python/report.html +++ b/integ-tests/python/report.html @@ -3,11 +3,11 @@
Test Report

Summary

62
5 failed 57 passed

Tests

tests/test_functions.py 557 0:02:27.741738

PASSED test_sync 0:00:01.318181

Setup

Call

Captured stdout call
got response key
+    
Test Report

Summary

62
3 failed 59 passed

Tests

tests/test_functions.py 359 0:02:17.704599

PASSED test_sync 0:00:00.434163

Setup

Call

Captured stdout call
got response key
 true
 52
-
Captured stderr call
[2024-09-05T13:54:43Z INFO  baml_events] Function TestFnNamedArgsSingleClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1197ms. StopReason: stop
+
Captured stderr call
[2024-09-21T01:03:52Z INFO  baml_events] Function TestFnNamedArgsSingleClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 424ms. StopReason: stop
     ---PROMPT---
     [chat] system: Print these values back to me:
     key
@@ -20,54 +20,17 @@
     52
     ---Parsed Response (string)---
     "key\ntrue\n52"
-

Teardown

FAILED TestAllInputs::test_single_bool 0:00:00.007360

baml_py.BamlClientError: Something went wrong with the LLM client: LLM call failed: LLMErrorResponse { client: "Vertex", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [Text("Return this value back to me: true")] }]), request_options: {}, start_time: SystemTime { tv_sec: 1725544483, tv_nsec: 239800000 }, latency: 954.667µs, message: "Error {\n    context: \"Failed to build request\",\n    source: \"Service account not found\",\n}", code: Other(2) }

Setup

Call

self = 
-
->   ???
-
-tests/test_functions.py:46: 
-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
-
-self = 
-myBool = True, baml_options = {}
-
-    async def TestFnNamedArgsSingleBool(
-        self,
-        myBool: bool,
-        baml_options: BamlCallOptions = {},
-    ) -> str:
-      __tb__ = baml_options.get("tb", None)
-      if __tb__ is not None:
-        tb = __tb__._tb
-      else:
-        tb = None
-      __cr__ = baml_options.get("client_registry", None)
-    
-      raw = await self.__runtime.call_function(
-        "TestFnNamedArgsSingleBool",
-        {
-          "myBool": myBool,
-        },
-        self.__ctx_manager.get(),
-        tb,
-        __cr__,
-      )
-      mdl = create_model("TestFnNamedArgsSingleBoolReturnType", inner=(str, ...))
->     return coerce(mdl, raw.parsed())
-E     baml_py.BamlClientError: Something went wrong with the LLM client: LLM call failed: LLMErrorResponse { client: "Vertex", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [Text("Return this value back to me: true")] }]), request_options: {}, start_time: SystemTime { tv_sec: 1725544483, tv_nsec: 239800000 }, latency: 954.667µs, message: "Error {\n    context: \"Failed to build request\",\n    source: \"Service account not found\",\n}", code: Other(2) }
-
-baml_client/async_client.py:1356: BamlClientError
Captured stderr call
[2024-09-05T13:54:43Z WARN  baml_events] Function TestFnNamedArgsSingleBool:
-    Client: Vertex (<unknown>) - 0ms
+

Teardown

PASSED TestAllInputs::test_single_bool 0:00:00.298413

Setup

Call

Captured stderr call
[2024-09-21T01:03:52Z INFO  baml_events] Function TestFnNamedArgsSingleBool:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 295ms. StopReason: stop
     ---PROMPT---
-    [chat] user: Return this value back to me: true
+    [chat] system: Return this value back to me: true
     
-    ---REQUEST OPTIONS---
-    ---ERROR (Unspecified error code: 2)---
-    Error {
-        context: "Failed to build request",
-        source: "Service account not found",
-    }
-

Teardown

PASSED TestAllInputs::test_single_string_list 0:00:00.595044

Setup

Call

Captured stderr call
[2024-09-05T13:54:43Z INFO  baml_events] Function TestFnNamedArgsSingleStringList:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 589ms. StopReason: stop
+    ---LLM REPLY---
+    true
+    ---Parsed Response (string)---
+    "true"
+

Teardown

PASSED TestAllInputs::test_single_string_list 0:00:00.371155

Setup

Call

Captured stderr call
[2024-09-21T01:03:52Z INFO  baml_events] Function TestFnNamedArgsSingleStringList:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 368ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return this value back to me: ["a", "b", "c"]
     
@@ -75,8 +38,8 @@
     ["a", "b", "c"]
     ---Parsed Response (string)---
     "[\"a\", \"b\", \"c\"]"
-

Teardown

PASSED TestAllInputs::test_single_class 0:00:00.410191

Setup

Call

Captured stderr call
[2024-09-05T13:54:44Z INFO  baml_events] Function TestFnNamedArgsSingleClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 402ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_class 0:00:00.370443

Setup

Call

Captured stderr call
[2024-09-21T01:03:53Z INFO  baml_events] Function TestFnNamedArgsSingleClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 367ms. StopReason: stop
     ---PROMPT---
     [chat] system: Print these values back to me:
     key
@@ -89,8 +52,8 @@
     52
     ---Parsed Response (string)---
     "key\ntrue\n52"
-

Teardown

PASSED TestAllInputs::test_multiple_args 0:00:00.498484

Setup

Call

Captured stderr call
[2024-09-05T13:54:44Z INFO  baml_events] Function TestMulticlassNamedArgs:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 490ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_multiple_args 0:00:00.374228

Setup

Call

Captured stderr call
[2024-09-21T01:03:53Z INFO  baml_events] Function TestMulticlassNamedArgs:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 371ms. StopReason: stop
     ---PROMPT---
     [chat] system: Print these values back to me:
     key
@@ -109,8 +72,8 @@
     64
     ---Parsed Response (string)---
     "key\ntrue\n52\nkey\ntrue\n64"
-

Teardown

PASSED TestAllInputs::test_single_enum_list 0:00:00.498749

Setup

Call

Captured stderr call
[2024-09-05T13:54:45Z INFO  baml_events] Function TestFnNamedArgsSingleEnumList:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 492ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_enum_list 0:00:00.295564

Setup

Call

Captured stderr call
[2024-09-21T01:03:53Z INFO  baml_events] Function TestFnNamedArgsSingleEnumList:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 293ms. StopReason: stop
     ---PROMPT---
     [chat] system: Print these values back to me:
     ["TWO"]
@@ -119,8 +82,8 @@
     ["TWO"]
     ---Parsed Response (string)---
     "[\"TWO\"]"
-

Teardown

PASSED TestAllInputs::test_single_float 0:00:00.521826

Setup

Call

Captured stderr call
[2024-09-05T13:54:45Z INFO  baml_events] Function TestFnNamedArgsSingleFloat:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 513ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_float 0:00:00.375050

Setup

Call

Captured stderr call
[2024-09-21T01:03:54Z INFO  baml_events] Function TestFnNamedArgsSingleFloat:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 372ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return this value back to me: 3.12
     
@@ -128,8 +91,8 @@
     3.12
     ---Parsed Response (string)---
     "3.12"
-

Teardown

PASSED TestAllInputs::test_single_int 0:00:00.523990

Setup

Call

Captured stderr call
[2024-09-05T13:54:46Z INFO  baml_events] Function TestFnNamedArgsSingleInt:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 516ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_int 0:00:00.642539

Setup

Call

Captured stderr call
[2024-09-21T01:03:54Z INFO  baml_events] Function TestFnNamedArgsSingleInt:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 640ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return this value back to me: 3566
     
@@ -137,20 +100,23 @@
     3566
     ---Parsed Response (string)---
     "3566"
-

Teardown

PASSED TestAllInputs::test_single_map_string_to_string 0:00:00.587192

Setup

Call

Captured stderr call
[2024-09-05T13:54:46Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToString:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 567ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_map_string_to_string 0:00:00.557424

Setup

Call

Captured stderr call
[2024-09-21T01:03:55Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToString:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 555ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return this value back to me: {"lorem": "ipsum", "dolor": "sit"}
     
     ---LLM REPLY---
-    {"lorem": "ipsum", "dolor": "sit"}
+    {
+        "lorem": "ipsum",
+        "dolor": "sit"
+    }
     ---Parsed Response (map<string, string>)---
     {
       "lorem": "ipsum",
       "dolor": "sit"
     }
-

Teardown

PASSED TestAllInputs::test_single_map_string_to_class 0:00:00.587740

Setup

Call

Captured stderr call
[2024-09-05T13:54:47Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 575ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_map_string_to_class 0:00:00.422048

Setup

Call

Captured stderr call
[2024-09-21T01:03:55Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 419ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return this value back to me: {"lorem": {"word": "ipsum"}}
     
@@ -162,8 +128,8 @@
         "word": "ipsum"
       }
     }
-

Teardown

PASSED TestAllInputs::test_single_map_string_to_map 0:00:00.919760

Setup

Call

Captured stderr call
[2024-09-05T13:54:48Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToMap:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 911ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_map_string_to_map 0:00:00.472480

Setup

Call

Captured stderr call
[2024-09-21T01:03:56Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToMap:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 469ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return this value back to me: {"lorem": {"word": "ipsum"}}
     
@@ -175,8 +141,8 @@
         "word": "ipsum"
       }
     }
-

Teardown

PASSED test_should_work_for_all_outputs 0:00:04.745434

Setup

Call

Captured stderr call
[2024-09-05T13:54:49Z INFO  baml_events] Function FnOutputBool:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 588ms. StopReason: stop
+

Teardown

PASSED test_should_work_for_all_outputs 0:00:03.242608

Setup

Call

Captured stderr call
[2024-09-21T01:03:56Z INFO  baml_events] Function FnOutputBool:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 354ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a true: Answer as a: bool
     
@@ -184,8 +150,8 @@
     True
     ---Parsed Response (bool)---
     true
-[2024-09-05T13:54:50Z INFO  baml_events] Function FnOutputClassList:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1319ms. StopReason: stop
+[2024-09-21T01:03:57Z INFO  baml_events] Function FnOutputClassList:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1054ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a JSON array that follows this schema: 
     Answer with a JSON Array using this schema:
@@ -228,8 +194,8 @@
         "prop2": 7
       }
     ]
-[2024-09-05T13:54:51Z INFO  baml_events] Function FnOutputClassWithEnum:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 737ms. StopReason: stop
+[2024-09-21T01:03:58Z INFO  baml_events] Function FnOutputClassWithEnum:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 502ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a made up json blob that matches this schema:
     Answer in JSON using this schema:
@@ -243,16 +209,16 @@
     
     ---LLM REPLY---
     {
-      "prop1": "Hello, world!",
-      "prop2": "ONE"
+      "prop1": "Hello World",
+      "prop2": "TWO"
     }
     ---Parsed Response (class TestClassWithEnum)---
     {
-      "prop1": "Hello, world!",
-      "prop2": "ONE"
+      "prop1": "Hello World",
+      "prop2": "TWO"
     }
-[2024-09-05T13:54:51Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 745ms. StopReason: stop
+[2024-09-21T01:03:58Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 479ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -267,16 +233,16 @@
     
     ---LLM REPLY---
     {
-      "prop1": "Hello, World!",
+      "prop1": "Hello world!",
       "prop2": 540
     }
     ---Parsed Response (class TestOutputClass)---
     {
-      "prop1": "Hello, World!",
+      "prop1": "Hello world!",
       "prop2": 540
     }
-[2024-09-05T13:54:52Z INFO  baml_events] Function FnEnumListOutput:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 509ms. StopReason: stop
+[2024-09-21T01:03:59Z INFO  baml_events] Function FnEnumListOutput:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 374ms. StopReason: stop
     ---PROMPT---
     [chat] system: Print out two of these values randomly selected from the list below in a json array.
     
@@ -289,16 +255,16 @@
     
     ---LLM REPLY---
     [
-      'ONE',
-      'THREE'
+      "ONE",
+      "THREE"
     ]
     ---Parsed Response (list<enum EnumOutput>)---
     [
       "ONE",
       "THREE"
     ]
-[2024-09-05T13:54:53Z INFO  baml_events] Function FnEnumOutput:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 796ms. StopReason: stop
+[2024-09-21T01:03:59Z INFO  baml_events] Function FnEnumOutput:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 460ms. StopReason: stop
     ---PROMPT---
     [chat] system: Choose one of these values randomly. Before you give the answer, write out an unrelated haiku about the ocean.
     
@@ -309,39 +275,50 @@
     - THREE
     
     ---LLM REPLY---
-    Beneath the calm tide  
-    Secrets hidden in the depths  
-    Mystery unfolds  
+    Deep blue ocean waves
+    Whisper secrets to the shore
+    Mystery below
     
-    I choose... TWO.
+    VALUE_ENUM: TWO
     ---Parsed Response (enum EnumOutput)---
     "TWO"
-

Teardown

PASSED test_should_work_with_image_url 0:00:01.030876

Setup

Call

Captured stderr call
[2024-09-05T13:54:54Z INFO  baml_events] Function TestImageInput:
-    Client: GPT4o (gpt-4o-2024-05-13) - 1022ms. StopReason: stop
+

Teardown

PASSED test_should_work_with_image_url 0:00:00.785073

Setup

Call

Captured stderr call
[2024-09-21T01:04:00Z INFO  baml_events] Function TestImageInput:
+    Client: GPT4o (gpt-4o-2024-05-13) - 781ms. StopReason: stop
     ---PROMPT---
     [chat] user: Describe this in 4 words. One word must be the color<image_placeholder: https://upload.wikimedia.org/wikipedia/en/4/4d/Shrek_%28character%29.png>
     
     ---LLM REPLY---
-    Green animated ogre smiling.
+    Green friendly animated ogre.
     ---Parsed Response (string)---
-    "Green animated ogre smiling."
-

Teardown

PASSED test_should_work_with_image_list 0:00:01.864544

Setup

Call

Captured stderr call
[2024-09-05T13:54:56Z INFO  baml_events] Function TestImageListInput:
-    Client: GPT4o (gpt-4o-2024-05-13) - 1855ms. StopReason: stop
+    "Green friendly animated ogre."
+

Teardown

PASSED test_should_work_with_image_list 0:00:01.584747

Setup

Call

Captured stderr call
[2024-09-21T01:04:02Z INFO  baml_events] Function TestImageListInput:
+    Client: GPT4o (gpt-4o-2024-05-13) - 1581ms. StopReason: stop
     ---PROMPT---
     [chat] user: What colors do these have in common? [<image_placeholder: https://upload.wikimedia.org/wikipedia/en/4/4d/Shrek_%28character%29.png>,<image_placeholder: https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png>]
     
     ---LLM REPLY---
-    The colors that the two images have in common are green and brown. Shrek's image contains shades of green (his skin) and brown (his vest and boots), while the Google logo contains green (in the letters "l" and "e") and blue, although brown is not present in the Google logo.
+    The image of the character has the following main colors:
+    - Green (skin)
+    - Brown (vest, boots, and pants)
+    - Beige (shirt)
+    - Black (belt and details)
+    
+    The Google logo has the following main colors:
+    - Blue
+    - Red
+    - Yellow
+    - Green
+    
+    The colors they have in common are:
+    - Green
     ---Parsed Response (string)---
-    "The colors that the two images have in common are green and brown. Shrek's image contains shades of green (his skin) and brown (his vest and boots), while the Google logo contains green (in the letters \"l\" and \"e\") and blue, although brown is not present in the Google logo."
-

Teardown

FAILED test_should_work_with_vertex 0:00:00.004918

baml_py.BamlClientError: Something went wrong with the LLM client: LLM call failed: LLMErrorResponse { client: "Vertex", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [Text("Write a nice short story about donkey kong")] }]), request_options: {}, start_time: SystemTime { tv_sec: 1725544496, tv_nsec: 87610000 }, latency: 232.667µs, message: "Error {\n    context: \"Failed to build request\",\n    source: \"Service account not found\",\n}", code: Other(2) }

Setup

Call

@pytest.mark.asyncio
-    async def test_should_work_with_vertex():
->       res = await b.TestVertex("donkey kong")
+    "The image of the character has the following main colors:\n- Green (skin)\n- Brown (vest, boots, and pants)\n- Beige (shirt)\n- Black (belt and details)\n\nThe Google logo has the following main colors:\n- Blue\n- Red\n- Yellow\n- Green\n\nThe colors they have in common are:\n- Green"
+

Teardown

FAILED test_should_work_with_vertex 0:00:00.003924

baml_py.BamlClientError: Something went wrong with the LLM client: LLM call failed: LLMErrorResponse { client: "Vertex", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [Text("Write a nice short story about donkey kong")] }]), request_options: {}, start_time: SystemTime { tv_sec: 1726880642, tv_nsec: 54218000 }, latency: 1.54825ms, message: "Error {\n    context: \"Failed to build request\",\n    source: \"Service account not found\",\n}", code: Other(2) }

Setup

Call

>   ???
 
 tests/test_functions.py:182: 
-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 
-self = 
+self = 
 input = 'donkey kong', baml_options = {}
 
     async def TestVertex(
@@ -367,10 +344,10 @@
       )
       mdl = create_model("TestVertexReturnType", inner=(str, ...))
 >     return coerce(mdl, raw.parsed())
-E     baml_py.BamlClientError: Something went wrong with the LLM client: LLM call failed: LLMErrorResponse { client: "Vertex", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [Text("Write a nice short story about donkey kong")] }]), request_options: {}, start_time: SystemTime { tv_sec: 1725544496, tv_nsec: 87610000 }, latency: 232.667µs, message: "Error {\n    context: \"Failed to build request\",\n    source: \"Service account not found\",\n}", code: Other(2) }
+E     baml_py.BamlClientError: Something went wrong with the LLM client: LLM call failed: LLMErrorResponse { client: "Vertex", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [Text("Write a nice short story about donkey kong")] }]), request_options: {}, start_time: SystemTime { tv_sec: 1726880642, tv_nsec: 54218000 }, latency: 1.54825ms, message: "Error {\n    context: \"Failed to build request\",\n    source: \"Service account not found\",\n}", code: Other(2) }
 
-baml_client/async_client.py:1860: BamlClientError
Captured stderr call
[2024-09-05T13:54:56Z WARN  baml_events] Function TestVertex:
-    Client: Vertex (<unknown>) - 0ms
+baml_client/async_client.py:1908: BamlClientError
Captured stderr call
[2024-09-21T01:04:02Z WARN  baml_events] Function TestVertex:
+    Client: Vertex (<unknown>) - 1ms
     ---PROMPT---
     [chat] user: Write a nice short story about donkey kong
     
@@ -380,8 +357,8 @@
         context: "Failed to build request",
         source: "Service account not found",
     }
-

Teardown

PASSED test_should_work_with_image_base64 0:00:01.299562

Setup

Call

Captured stderr call
[2024-09-05T13:54:57Z INFO  baml_events] Function TestImageInput:
-    Client: GPT4o (gpt-4o-2024-05-13) - 1280ms. StopReason: stop
+

Teardown

PASSED test_should_work_with_image_base64 0:00:01.195680

Setup

Call

Captured stderr call
[2024-09-21T01:04:03Z INFO  baml_events] Function TestImageInput:
+    Client: GPT4o (gpt-4o-2024-05-13) - 1184ms. StopReason: stop
     ---PROMPT---
     [chat] user: Describe this in 4 words. One word must be the color<image_placeholder base64>
     
@@ -389,8 +366,8 @@
     Green animated ogre smiling.
     ---Parsed Response (string)---
     "Green animated ogre smiling."
-

Teardown

PASSED test_should_work_with_audio_base64 0:00:01.573248

Setup

Call

Captured stderr call
[2024-09-05T13:54:59Z INFO  baml_events] Function AudioInput:
-    Client: Gemini () - 1560ms. StopReason: "STOP"
+

Teardown

PASSED test_should_work_with_audio_base64 0:00:14.768782

Setup

Call

Captured stderr call
[2024-09-21T01:04:18Z INFO  baml_events] Function AudioInput:
+    Client: Gemini () - 14763ms. StopReason: "STOP"
     ---PROMPT---
     [chat] user: Does this sound like a roar? Yes or no? One word no other characters.<image_placeholder base64>
     
@@ -399,8 +376,8 @@
     
     ---Parsed Response (string)---
     "Yes \n"
-

Teardown

PASSED test_should_work_with_audio_url 0:00:01.106339

Setup

Call

Captured stderr call
[2024-09-05T13:55:00Z INFO  baml_events] Function AudioInput:
-    Client: Gemini () - 973ms. StopReason: "STOP"
+

Teardown

PASSED test_should_work_with_audio_url 0:00:00.935871

Setup

Call

Captured stderr call
[2024-09-21T01:04:19Z INFO  baml_events] Function AudioInput:
+    Client: Gemini () - 797ms. StopReason: "STOP"
     ---PROMPT---
     [chat] user: Does this sound like a roar? Yes or no? One word no other characters.<audio_placeholder base64>
     
@@ -409,10 +386,10 @@
     
     ---Parsed Response (string)---
     "No \n"
-

Teardown

PASSED test_works_with_retries2 0:00:01.944758

Setup

Call

Captured stdout call
Expected error 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: 1725544501, tv_nsec: 885605000 }, latency: 175.950709ms, 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 }
-
Captured stderr call
[2024-09-05T13:55:02Z WARN  baml_events] Function TestRetryExponential:
+

Teardown

PASSED test_works_with_retries2 0:00:01.852403

Setup

Call

Captured stdout call
Expected error 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: 1726880660, tv_nsec: 771731000 }, latency: 83.579583ms, 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 }
+
Captured stderr call
[2024-09-21T01:04:20Z WARN  baml_events] Function TestRetryExponential:
     (3 other previous tries)
-    Client: RetryClientExponential (<unknown>) - 175ms
+    Client: RetryClientExponential (<unknown>) - 83ms
     ---PROMPT---
     [chat] system: Say a haiku
     
@@ -428,381 +405,445 @@
         }
     }
     
-

Teardown

PASSED test_works_with_fallbacks 0:00:01.649697

Setup

Call

Captured stderr call
[2024-09-05T13:55:03Z INFO  baml_events] Function TestFallbackClient:
+

Teardown

PASSED test_works_with_fallbacks 0:00:01.450026

Setup

Call

Captured stderr call
[2024-09-21T01:04:22Z INFO  baml_events] Function TestFallbackClient:
     (5 other previous tries)
-    Client: GPT35 (gpt-3.5-turbo-0125) - 598ms. StopReason: stop
+    Client: GPT35 (gpt-3.5-turbo-0125) - 460ms. StopReason: stop
     ---PROMPT---
     [chat] system: Say a haiku about mexico.
     
     ---LLM REPLY---
-    Vibrant colors dance
-    Mariachi serenade
-    Mexico's spirit
+    Vibrant land of sun,
+    Culture rich and colors bright,
+    Mexico enchants.
     ---Parsed Response (string)---
-    "Vibrant colors dance\nMariachi serenade\nMexico's spirit"
-

Teardown

PASSED test_claude 0:00:00.637708

Setup

Call

Captured stderr call
[2024-09-05T13:55:04Z INFO  baml_events] Function PromptTestClaude:
-    Client: Claude (claude-3-haiku-20240307) - 629ms. StopReason: "end_turn"
+    "Vibrant land of sun,\nCulture rich and colors bright,\nMexico enchants."
+

Teardown

PASSED test_claude 0:00:01.142228

Setup

Call

Captured stderr call
[2024-09-21T01:04:23Z INFO  baml_events] Function PromptTestClaude:
+    Client: Sonnet (claude-3-5-sonnet-20240620) - 1139ms. StopReason: "end_turn"
     ---PROMPT---
     [chat] user: Tell me a haiku about Mt Rainier is tall
     
     ---LLM REPLY---
-    Here is a haiku about Mt. Rainier:
+    Here's a haiku about Mt. Rainier being tall:
     
-    Majestic Rainier,
-    Towering high in the sky,
-    Glaciers glisten bright.
+    Rainier towers high
+    Majestic peak pierces clouds
+    Nature's skyscraper
     ---Parsed Response (string)---
-    "Here is a haiku about Mt. Rainier:\n\nMajestic Rainier,\nTowering high in the sky,\nGlaciers glisten bright."
-

Teardown

PASSED test_gemini 0:00:07.545418

Setup

Call

Captured stdout call
LLM output from Gemini: The antique shop smelled of dust and dreams. Eliza, her nose wrinkled, trailed behind her grandmother, her gaze skimming over chipped china dolls and faded velvet hats. Nothing ever interested her in these shops, until her eyes landed on it. 
+    "Here's a haiku about Mt. Rainier being tall:\n\nRainier towers high\nMajestic peak pierces clouds\nNature's skyscraper"
+

Teardown

PASSED test_gemini 0:00:09.415117

Setup

Call

Captured stdout call
LLM output from Gemini: Dr. Pepper lived alone in his little shop on the edge of town. It wasn't always like this. Once, his concoctions, bubbling with strange fruits and secret spices, were famous. People lined up for blocks to taste the fizzy, caramel-colored wonder he called, simply, "Dr. Pepper." 
 
-A Dr Pepper bottle. 
+But tastes change. New flavors came and went, bright and artificial, and Dr. Pepper's unique brew faded from memory. He tried, oh how he tried, to recapture the magic. He experimented with watermelon and licorice, with cinnamon and clove, but nothing tasted quite right. The townspeople, if they remembered him at all, just shook their heads and said, "He's stuck in the past."
 
-Not just any bottle, though. This one was made of thick, rippled glass, the iconic logo etched deeply into its surface. It was beautiful, a forgotten relic from a time when soda came in glass, not plastic. Eliza had to have it. 
+One rainy afternoon, a young girl with bright eyes and a gap-toothed smile wandered into the shop. She was curious, her nose crinkled at the smell of bubbling sugar and forgotten spices. "What's that?" she asked, pointing to a dusty bottle in the back.
 
-She bought the bottle for a dollar, a steal in her opinion.  At home, she scrubbed away the years of grime, the cool glass smooth under her fingertips.  As she polished, she noticed something etched discreetly on the bottom: 1955.
+Dr. Pepper smiled, a little sadly. "That," he said, his voice raspy from disuse, "is my original recipe. But I'm afraid it's no good anymore."
 
-That night, Eliza couldn't sleep. Images of poodle skirts and sock hops filled her mind, fueled by the bottle on her nightstand.  She swore she could almost taste the sweet, spicy soda, hear the fizz as the cap twisted off. 
+The girl, her name was Lily, insisted on trying it. She sipped cautiously, her brow furrowed in concentration. And then, her eyes widened. "This," she declared, "tastes like adventure!"
 
-When she woke up, something felt different.  Lighter, maybe?  She rushed to the mirror, her jaw dropping. Gone were her jeans and t-shirt, replaced by a pastel-blue dress with a wide, twirling skirt.
+The word echoed in the silent shop. Adventure. It wasn't sweet or tart, it wasn't like anything else, but it was exciting, different, new. Lily, with her youthful palate, tasted what everyone else had forgotten: the unique, indescribable magic of Dr. Pepper.
 
-The Dr Pepper bottle lay on its side, empty. 
+Soon, Lily was back, bringing her friends. Then their parents, then their grandparents, each taking a sip of the forgotten drink and rediscovering the joy of something different. The shop buzzed with life once more, filled with laughter and the clinking of glasses. 
 
-Eliza's heart pounded. Had the bottle... transported her? To 1955? A thrill shot through her. Maybe dreams did come in dusty antique shops, after all.  Maybe, with a little Dr Pepper magic, she was about to have the most exciting summer of her life. 
+Dr. Pepper, his heart full, realized that sometimes, the most extraordinary adventures can be found in the most unexpected places, like a dusty bottle on the back shelf of a forgotten shop. And sometimes, all it takes is a fresh perspective, a child's curiosity, to remind everyone of the magic that was there all along. 
 
-
Captured stderr call
[2024-09-05T13:55:11Z INFO  baml_events] Function TestGemini:
-    Client: Gemini () - 7536ms. StopReason: "STOP"
+
Captured stderr call
[2024-09-21T01:04:32Z INFO  baml_events] Function TestGemini:
+    Client: Gemini () - 9412ms. StopReason: "STOP"
     ---PROMPT---
     [chat] user: Write a nice short story about Dr. Pepper
     
     ---LLM REPLY---
-    The antique shop smelled of dust and dreams. Eliza, her nose wrinkled, trailed behind her grandmother, her gaze skimming over chipped china dolls and faded velvet hats. Nothing ever interested her in these shops, until her eyes landed on it. 
+    Dr. Pepper lived alone in his little shop on the edge of town. It wasn't always like this. Once, his concoctions, bubbling with strange fruits and secret spices, were famous. People lined up for blocks to taste the fizzy, caramel-colored wonder he called, simply, "Dr. Pepper." 
     
-    A Dr Pepper bottle. 
+    But tastes change. New flavors came and went, bright and artificial, and Dr. Pepper's unique brew faded from memory. He tried, oh how he tried, to recapture the magic. He experimented with watermelon and licorice, with cinnamon and clove, but nothing tasted quite right. The townspeople, if they remembered him at all, just shook their heads and said, "He's stuck in the past."
     
-    Not just any bottle, though. This one was made of thick, rippled glass, the iconic logo etched deeply into its surface. It was beautiful, a forgotten relic from a time when soda came in glass, not plastic. Eliza had to have it. 
+    One rainy afternoon, a young girl with bright eyes and a gap-toothed smile wandered into the shop. She was curious, her nose crinkled at the smell of bubbling sugar and forgotten spices. "What's that?" she asked, pointing to a dusty bottle in the back.
     
-    She bought the bottle for a dollar, a steal in her opinion.  At home, she scrubbed away the years of grime, the cool glass smooth under her fingertips.  As she polished, she noticed something etched discreetly on the bottom: 1955.
+    Dr. Pepper smiled, a little sadly. "That," he said, his voice raspy from disuse, "is my original recipe. But I'm afraid it's no good anymore."
     
-    That night, Eliza couldn't sleep. Images of poodle skirts and sock hops filled her mind, fueled by the bottle on her nightstand.  She swore she could almost taste the sweet, spicy soda, hear the fizz as the cap twisted off. 
+    The girl, her name was Lily, insisted on trying it. She sipped cautiously, her brow furrowed in concentration. And then, her eyes widened. "This," she declared, "tastes like adventure!"
     
-    When she woke up, something felt different.  Lighter, maybe?  She rushed to the mirror, her jaw dropping. Gone were her jeans and t-shirt, replaced by a pastel-blue dress with a wide, twirling skirt.
+    The word echoed in the silent shop. Adventure. It wasn't sweet or tart, it wasn't like anything else, but it was exciting, different, new. Lily, with her youthful palate, tasted what everyone else had forgotten: the unique, indescribable magic of Dr. Pepper.
     
-    The Dr Pepper bottle lay on its side, empty. 
+    Soon, Lily was back, bringing her friends. Then their parents, then their grandparents, each taking a sip of the forgotten drink and rediscovering the joy of something different. The shop buzzed with life once more, filled with laughter and the clinking of glasses. 
     
-    Eliza's heart pounded. Had the bottle... transported her? To 1955? A thrill shot through her. Maybe dreams did come in dusty antique shops, after all.  Maybe, with a little Dr Pepper magic, she was about to have the most exciting summer of her life. 
+    Dr. Pepper, his heart full, realized that sometimes, the most extraordinary adventures can be found in the most unexpected places, like a dusty bottle on the back shelf of a forgotten shop. And sometimes, all it takes is a fresh perspective, a child's curiosity, to remind everyone of the magic that was there all along. 
     
     ---Parsed Response (string)---
-    "The antique shop smelled of dust and dreams. Eliza, her nose wrinkled, trailed behind her grandmother, her gaze skimming over chipped china dolls and faded velvet hats. Nothing ever interested her in these shops, until her eyes landed on it. \n\nA Dr Pepper bottle. \n\nNot just any bottle, though. This one was made of thick, rippled glass, the iconic logo etched deeply into its surface. It was beautiful, a forgotten relic from a time when soda came in glass, not plastic. Eliza had to have it. \n\nShe bought the bottle for a dollar, a steal in her opinion.  At home, she scrubbed away the years of grime, the cool glass smooth under her fingertips.  As she polished, she noticed something etched discreetly on the bottom: 1955.\n\nThat night, Eliza couldn't sleep. Images of poodle skirts and sock hops filled her mind, fueled by the bottle on her nightstand.  She swore she could almost taste the sweet, spicy soda, hear the fizz as the cap twisted off. \n\nWhen she woke up, something felt different.  Lighter, maybe?  She rushed to the mirror, her jaw dropping. Gone were her jeans and t-shirt, replaced by a pastel-blue dress with a wide, twirling skirt.\n\nThe Dr Pepper bottle lay on its side, empty. \n\nEliza's heart pounded. Had the bottle... transported her? To 1955? A thrill shot through her. Maybe dreams did come in dusty antique shops, after all.  Maybe, with a little Dr Pepper magic, she was about to have the most exciting summer of her life. \n"
-

Teardown

PASSED test_gemini_streaming 0:00:10.659996

Setup

Call

Captured stdout call
LLM output from Gemini: Dr. Pepper didn’t have a first name. No one knew if it was “Doctor” as in a title, or “doctor” as in someone who fixed leaky faucets. Not even he knew anymore. It had been so long since he’d been bottled, so long since he’d felt the fizz of youth. Now, he sat on the dusty shelf of a forgotten general store, nestled between a can of pickled pigs’ feet and a box of stale crackers. 
+    "Dr. Pepper lived alone in his little shop on the edge of town. It wasn't always like this. Once, his concoctions, bubbling with strange fruits and secret spices, were famous. People lined up for blocks to taste the fizzy, caramel-colored wonder he called, simply, \"Dr. Pepper.\" \n\nBut tastes change. New flavors came and went, bright and artificial, and Dr. Pepper's unique brew faded from memory. He tried, oh how he tried, to recapture the magic. He experimented with watermelon and licorice, with cinnamon and clove, but nothing tasted quite right. The townspeople, if they remembered him at all, just shook their heads and said, \"He's stuck in the past.\"\n\nOne rainy afternoon, a young girl with bright eyes and a gap-toothed smile wandered into the shop. She was curious, her nose crinkled at the smell of bubbling sugar and forgotten spices. \"What's that?\" she asked, pointing to a dusty bottle in the back.\n\nDr. Pepper smiled, a little sadly. \"That,\" he said, his voice raspy from disuse, \"is my original recipe. But I'm afraid it's no good anymore.\"\n\nThe girl, her name was Lily, insisted on trying it. She sipped cautiously, her brow furrowed in concentration. And then, her eyes widened. \"This,\" she declared, \"tastes like adventure!\"\n\nThe word echoed in the silent shop. Adventure. It wasn't sweet or tart, it wasn't like anything else, but it was exciting, different, new. Lily, with her youthful palate, tasted what everyone else had forgotten: the unique, indescribable magic of Dr. Pepper.\n\nSoon, Lily was back, bringing her friends. Then their parents, then their grandparents, each taking a sip of the forgotten drink and rediscovering the joy of something different. The shop buzzed with life once more, filled with laughter and the clinking of glasses. \n\nDr. Pepper, his heart full, realized that sometimes, the most extraordinary adventures can be found in the most unexpected places, like a dusty bottle on the back shelf of a forgotten shop. And sometimes, all it takes is a fresh perspective, a child's curiosity, to remind everyone of the magic that was there all along. \n"
+

Teardown

PASSED test_gemini_streaming 0:00:07.841851

Setup

Call

Captured stdout call
LLM output from Gemini: Mildred had loved Dr Pepper her entire life.  As a little girl, it had been a special treat, saved only for occasions worthy of its fizzy, complex flavor.  As she grew older, it became a source of comfort, a constant companion during late nights studying and even later nights grading papers as a high school English teacher.  
+
+Now, staring down the aisle of the grocery store, she hesitated.  Years of student essays and sugary sodas had taken their toll.  Her doctor's words echoed in her ears: "Mildred, you need to take better care of yourself."  Reluctantly, her hand hovered over a bottle of sparkling water, its label boasting of nothing but "natural flavors."  
 
-He wasn’t bitter, not really. He missed the laughter of children, the satisfying clink of ice cubes, the way the world seemed brighter after a long, refreshing gulp. But Dr. Pepper had learned to appreciate the quiet. He had long conversations with the pigs’ feet (surprisingly philosophical, those piggies) and shared nostalgic stories with the crackers about their days in the sunbeams by the cash register.
+Suddenly, a voice interrupted her thoughts. "Rough day?"
 
-One afternoon, the bell above the door jingled. A girl, all scraped knees and pigtails, wandered down the aisle. Her eyes, the color of melted chocolate, landed on Dr. Pepper. 
+Mildred turned to see a young man, his cart overflowing with Dr Pepper.  He smiled, his eyes twinkling. "You know, my grandpa used to say that a Dr Pepper could fix just about anything."  He winked. "Or at least make it bearable."
 
-“What’s this?” she whispered, her voice filled with wonder. She carefully lifted him from the shelf, her touch gentle.
+Mildred felt a laugh bubble up inside her.  It was true.  No matter how stressful her day, a Dr Pepper always seemed to make things a little bit better.  It was a reminder of simpler times, of childhood dreams and late-night study sessions fueled by caffeine and hope. 
 
-Dr. Pepper, dusty and forgotten, felt a long-dormant fizz tickle his insides. Maybe, just maybe, his story wasn’t over yet.  He smiled, his label crinkling, and for the first time in what felt like forever, he felt a surge of hope. 
- 
-The girl traced his label with her finger, her brow furrowed in thought. Then, with a grin that could outshine the sun, she announced, "You look like you have stories to tell. You're coming with me." 
+"You know what," she said, grabbing a bottle of Dr Pepper and placing it firmly in her basket, next to the sparkling water. "He sounds like a wise man."
 
-And with that, Dr. Pepper’s adventure began again. He was no longer just a dusty bottle on a forgotten shelf. He was a story waiting to be told, a memory waiting to be made, a friend waiting to be discovered. He was Dr. Pepper, and he was home. 
+The young man chuckled. "He was."
 
-
Captured stderr call
[2024-09-05T13:55:22Z INFO  baml_events] Function TestGemini:
-    Client: Gemini (gemini-1.5-pro-001) - 10644ms. StopReason: Stop
+As Mildred walked away, the familiar weight of the Dr Pepper in her hand felt more like a small act of rebellion than a guilty pleasure.  Maybe she wouldn't have it every day, but some days, a little bit of what you loved was exactly what the doctor ordered. 
+
+
Captured stderr call
[2024-09-21T01:04:40Z INFO  baml_events] Function TestGemini:
+    Client: Gemini (gemini-1.5-pro-001) - 7832ms. StopReason: Stop
     ---PROMPT---
     [chat] user: Write a nice short story about Dr. Pepper
     
     ---LLM REPLY---
-    Dr. Pepper didn’t have a first name. No one knew if it was “Doctor” as in a title, or “doctor” as in someone who fixed leaky faucets. Not even he knew anymore. It had been so long since he’d been bottled, so long since he’d felt the fizz of youth. Now, he sat on the dusty shelf of a forgotten general store, nestled between a can of pickled pigs’ feet and a box of stale crackers. 
+    Mildred had loved Dr Pepper her entire life.  As a little girl, it had been a special treat, saved only for occasions worthy of its fizzy, complex flavor.  As she grew older, it became a source of comfort, a constant companion during late nights studying and even later nights grading papers as a high school English teacher.  
+    
+    Now, staring down the aisle of the grocery store, she hesitated.  Years of student essays and sugary sodas had taken their toll.  Her doctor's words echoed in her ears: "Mildred, you need to take better care of yourself."  Reluctantly, her hand hovered over a bottle of sparkling water, its label boasting of nothing but "natural flavors."  
+    
+    Suddenly, a voice interrupted her thoughts. "Rough day?"
     
-    He wasn’t bitter, not really. He missed the laughter of children, the satisfying clink of ice cubes, the way the world seemed brighter after a long, refreshing gulp. But Dr. Pepper had learned to appreciate the quiet. He had long conversations with the pigs’ feet (surprisingly philosophical, those piggies) and shared nostalgic stories with the crackers about their days in the sunbeams by the cash register.
+    Mildred turned to see a young man, his cart overflowing with Dr Pepper.  He smiled, his eyes twinkling. "You know, my grandpa used to say that a Dr Pepper could fix just about anything."  He winked. "Or at least make it bearable."
     
-    One afternoon, the bell above the door jingled. A girl, all scraped knees and pigtails, wandered down the aisle. Her eyes, the color of melted chocolate, landed on Dr. Pepper. 
+    Mildred felt a laugh bubble up inside her.  It was true.  No matter how stressful her day, a Dr Pepper always seemed to make things a little bit better.  It was a reminder of simpler times, of childhood dreams and late-night study sessions fueled by caffeine and hope. 
     
-    “What’s this?” she whispered, her voice filled with wonder. She carefully lifted him from the shelf, her touch gentle.
+    "You know what," she said, grabbing a bottle of Dr Pepper and placing it firmly in her basket, next to the sparkling water. "He sounds like a wise man."
     
-    Dr. Pepper, dusty and forgotten, felt a long-dormant fizz tickle his insides. Maybe, just maybe, his story wasn’t over yet.  He smiled, his label crinkling, and for the first time in what felt like forever, he felt a surge of hope. 
-     
-    The girl traced his label with her finger, her brow furrowed in thought. Then, with a grin that could outshine the sun, she announced, "You look like you have stories to tell. You're coming with me." 
+    The young man chuckled. "He was."
     
-    And with that, Dr. Pepper’s adventure began again. He was no longer just a dusty bottle on a forgotten shelf. He was a story waiting to be told, a memory waiting to be made, a friend waiting to be discovered. He was Dr. Pepper, and he was home. 
+    As Mildred walked away, the familiar weight of the Dr Pepper in her hand felt more like a small act of rebellion than a guilty pleasure.  Maybe she wouldn't have it every day, but some days, a little bit of what you loved was exactly what the doctor ordered. 
     
     ---Parsed Response (string)---
-    "Dr. Pepper didn’t have a first name. No one knew if it was “Doctor” as in a title, or “doctor” as in someone who fixed leaky faucets. Not even he knew anymore. It had been so long since he’d been bottled, so long since he’d felt the fizz of youth. Now, he sat on the dusty shelf of a forgotten general store, nestled between a can of pickled pigs’ feet and a box of stale crackers. \n\nHe wasn’t bitter, not really. He missed the laughter of children, the satisfying clink of ice cubes, the way the world seemed brighter after a long, refreshing gulp. But Dr. Pepper had learned to appreciate the quiet. He had long conversations with the pigs’ feet (surprisingly philosophical, those piggies) and shared nostalgic stories with the crackers about their days in the sunbeams by the cash register.\n\nOne afternoon, the bell above the door jingled. A girl, all scraped knees and pigtails, wandered down the aisle. Her eyes, the color of melted chocolate, landed on Dr. Pepper. \n\n“What’s this?” she whispered, her voice filled with wonder. She carefully lifted him from the shelf, her touch gentle.\n\nDr. Pepper, dusty and forgotten, felt a long-dormant fizz tickle his insides. Maybe, just maybe, his story wasn’t over yet.  He smiled, his label crinkling, and for the first time in what felt like forever, he felt a surge of hope. \n \nThe girl traced his label with her finger, her brow furrowed in thought. Then, with a grin that could outshine the sun, she announced, \"You look like you have stories to tell. You're coming with me.\" \n\nAnd with that, Dr. Pepper’s adventure began again. He was no longer just a dusty bottle on a forgotten shelf. He was a story waiting to be told, a memory waiting to be made, a friend waiting to be discovered. He was Dr. Pepper, and he was home. \n"
-

Teardown

PASSED test_aws 0:00:02.578534

Setup

Call

Captured stderr call
[2024-09-05T13:55:25Z INFO  baml_events] Function TestAws:
-    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 2402ms. StopReason: max_tokens
+    "Mildred had loved Dr Pepper her entire life.  As a little girl, it had been a special treat, saved only for occasions worthy of its fizzy, complex flavor.  As she grew older, it became a source of comfort, a constant companion during late nights studying and even later nights grading papers as a high school English teacher.  \n\nNow, staring down the aisle of the grocery store, she hesitated.  Years of student essays and sugary sodas had taken their toll.  Her doctor's words echoed in her ears: \"Mildred, you need to take better care of yourself.\"  Reluctantly, her hand hovered over a bottle of sparkling water, its label boasting of nothing but \"natural flavors.\"  \n\nSuddenly, a voice interrupted her thoughts. \"Rough day?\"\n\nMildred turned to see a young man, his cart overflowing with Dr Pepper.  He smiled, his eyes twinkling. \"You know, my grandpa used to say that a Dr Pepper could fix just about anything.\"  He winked. \"Or at least make it bearable.\"\n\nMildred felt a laugh bubble up inside her.  It was true.  No matter how stressful her day, a Dr Pepper always seemed to make things a little bit better.  It was a reminder of simpler times, of childhood dreams and late-night study sessions fueled by caffeine and hope. \n\n\"You know what,\" she said, grabbing a bottle of Dr Pepper and placing it firmly in her basket, next to the sparkling water. \"He sounds like a wise man.\"\n\nThe young man chuckled. \"He was.\"\n\nAs Mildred walked away, the familiar weight of the Dr Pepper in her hand felt more like a small act of rebellion than a guilty pleasure.  Maybe she wouldn't have it every day, but some days, a little bit of what you loved was exactly what the doctor ordered. \n"
+

Teardown

PASSED test_aws 0:00:02.392305

Setup

Call

Captured stderr call
[2024-09-21T01:04:40Z WARN  aws_runtime::env_config::normalize] section [Connection 1] ignored; config must be in the AWS config file rather than the credentials file
+[2024-09-21T01:04:40Z INFO  aws_config::meta::region] load_region; provider=EnvironmentVariableRegionProvider { env: Env(Real) }
+[2024-09-21T01:04:43Z INFO  baml_events] Function TestAws:
+    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 2218ms. StopReason: max_tokens
     ---PROMPT---
     [chat] user: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
-    Here is a short story about Mt. Rainier:
+    Here is a short story about Mount Rainier:
     
-    The Towering Giant
+    Towering Majesty: The Story of Mount Rainier
     
-    As the sun rose over the lush forests of the Pacific Northwest, its golden rays slowly crept up the majestic slopes of Mount Rainier. The colossal, snow-capped peak stood tall and proud, overlooking the surrounding landscape with an air of quiet grandeur.
+    Amidst the verdant forests and rugged peaks of the Pacific Northwest, one mountain stands tall, commanding the attention of all who gaze upon its magnificent form. This is Mount Rainier, a volcanic giant that has captured the hearts and imaginations of countless visitors over the centuries.
     
-    At 14,411 feet, Mount Rainier was a true titan, dwarf
+    At 14,411 feet (4,392 
     ---Parsed Response (string)---
-    "Here is a short story about Mt. Rainier:\n\nThe Towering Giant\n\nAs the sun rose over the lush forests of the Pacific Northwest, its golden rays slowly crept up the majestic slopes of Mount Rainier. The colossal, snow-capped peak stood tall and proud, overlooking the surrounding landscape with an air of quiet grandeur.\n\nAt 14,411 feet, Mount Rainier was a true titan, dwarf"
-

Teardown

PASSED test_openai_shorthand 0:00:09.437305

Setup

Call

Captured stderr call
[2024-09-05T13:55:34Z INFO  baml_events] Function TestOpenAIShorthand:
-    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 9426ms. StopReason: stop
+    "Here is a short story about Mount Rainier:\n\nTowering Majesty: The Story of Mount Rainier\n\nAmidst the verdant forests and rugged peaks of the Pacific Northwest, one mountain stands tall, commanding the attention of all who gaze upon its magnificent form. This is Mount Rainier, a volcanic giant that has captured the hearts and imaginations of countless visitors over the centuries.\n\nAt 14,411 feet (4,392 "
+

Teardown

PASSED test_openai_shorthand 0:00:06.002649

Setup

Call

Captured stderr call
[2024-09-21T01:04:49Z INFO  baml_events] Function TestOpenAIShorthand:
+    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 5999ms. StopReason: stop
     ---PROMPT---
     [chat] system: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
-    Once upon a time, in a quiet town nestled at the foot of a grand mountain, there lived a young girl named Lily. The town was surrounded by lush forests and sparkling rivers, but the most impressive sight of all was Mt. Rainier. The mountain stood tall and proud, its snow-capped peak visible from every corner of the town. 
+    Once upon a time, in the heart of Washington State, stood a magnificent giant known as Mt. Rainier. Towering at over 14,000 feet, the mountain was a beacon of beauty and a source of wonder for all who beheld it. Its snow-capped peak shimmered like a crown beneath the sun, while the lush valleys below teemed with vibrant wildflowers that danced in the gentle breeze.
     
-    Lily often gazed at Mt. Rainier from her bedroom window, dreaming of one day reaching its summit. The town whispered tales of the mountain—how it was a guardian of the valley, a keeper of secrets, and a source of inspiration for all who lived nearby. It was said that if you listened closely, you could hear the mountain's heartbeat in the gentle rustle of the leaves or the soft rush of the nearby creek.
+    In the small town of Ashford, nestled at the mountain's base, lived a young girl named Lila. Lila was an adventurous soul, her spirit as wild and free as the mountain winds. Every evening, she would sit on her porch, gazing up at Mt. Rainier, a sense of awe filling her heart. She had heard stories from the old townsfolk about how the mountain watched over them, its towering presence a reminder of both nature’s beauty and its power.
     
-    One bright summer morning, Lily decided it was time to embark on her adventure. With her backpack filled with snacks, a water bottle, and a notebook to sketch her journey, she set off toward the mountain. As she walked, she felt the warm sun kissing her cheeks and the fragrant scent of wildflowers filled the air.
+    One summer day, Lila decided it was time to embark on an adventure of her own. She gathered her supplies—her trusty backpack, a notebook, and a camera—and set off to explore the trails that wound up the mountain. As she walked, she marveled at the towering trees, their trunks thick and sturdy, standing sentinel against the sky.
     
-    As she climbed higher, the trees began to thin out, and the air grew cooler. The views were breathtaking; she could see the sprawling valleys, carpeted with greenery, and the winding rivers that shimmered like silver ribbons far below. Every step made her heart race with excitement, and she could feel the mountain calling her to come closer.
+    As she ascended, the landscape transformed. The air grew crisp, and the sounds of the forest faded, replaced by the soft crunch of gravel under her boots. Finally, after hours of hiking, Lila reached a viewpoint that seemed to touch the heavens. She stood there, breathless, her heart racing with excitement as she gazed up at the majestic peak.
     
-    Finally, after hours of hiking, she reached a rocky outcrop that offered a spectacular view of Mt. Rainier up close. It loomed above her, majestic and timeless, its towering presence filled with a sense of wonder. From that place, the mountain looked even taller, and Lily felt like an ant standing next to a giant.
+    “Wow, you truly are tall!” she exclaimed, her voice echoing in the vast silence. The mountain loomed above her, its rugged slopes adorned with bright white glacial fields that sparkled like diamonds in the sunlight. Lila felt small yet empowered, humbled by the beauty and grandeur of the world around her.
     
-    She took a deep breath and pulled out her notebook. With determination, she began sketching the magnificent mountain, capturing its contours and the beauty of the surrounding landscape. As she drew, she imagined what it would be like to stand at the very top, to touch the sky, and to feel like she was floating among the clouds.
+    Inspired, she sat down to write in her notebook, capturing the essence of the moment. In her words, she wove stories of adventure, bravery, and a connection to nature that transcended the miles between her and the mountain's peak. Each word felt like a thread binding her closer to the giant above.
     
-    After a while, Lily noticed a group of hikers making their way up a narrow path leading to the summit. Their laughter carried on the breeze, and she felt a pang of longing to join them. Gathering her courage, she decided to follow, step by step, heart racing with anticipation. 
+    As the sun began to dip behind the horizon, painting the sky in hues of orange and pink, Lila knew it was time to head back. But she carried with her more than just memories; she was filled with a newfound determination to keep exploring her world, to chase after dreams—even the tallest ones, like Mt. Rainier itself.
     
-    The trail was steep and challenging, but with each step, she reminded herself of the stories she'd heard about the mountain’s spirit lifting those who dared to climb it. She could feel that spirit urging her on, and soon, she found herself at the summit. 
+    From that day on, Lila returned to the mountain time and again. With every hike, she discovered new trails, met fellow adventurers, and deepened her appreciation for the natural world. In her heart, she understood that though she may never scale the peak, embracing the journey itself was a victory worth celebrating.
     
-    Standing atop Mt. Rainier, with the world spread out beneath her like a vast quilt, Lily’s heart swelled with joy. Clouds surrounded her, and she felt like she was indeed touching the sky. In that moment, she realized that the mountain was not just tall in height; it was tall in spirit, filling her with a sense of courage and possibility.
-    
-    As the sun began to set, casting a golden glow over the peaks and valleys below, Lily wrote in her notebook: "Mt. Rainier is not just a mountain; it is a reminder that we can reach great heights if we dare to follow our dreams." With a heart full of gratitude, she began her descent, knowing that she would carry the spirit of the mountain with her forever.
-    
-    From that day on, every time Lily looked at Mt. Rainier, she didn’t just see a tall mountain. She saw a friend, a guide, and a source of inspiration, reminding her to always aim high and follow her heart. And so, Mt. Rainier stood tall, not just in the landscape, but in the heart of a girl who dared to dream.
+    And so, Mt. Rainier remained, a steadfast giant watching over Ashford and its inhabitants, inspiring dreams as tall as its summits and nurturing the spirit of adventure in every heart it touched.
     ---Parsed Response (string)---
-    "Once upon a time, in a quiet town nestled at the foot of a grand mountain, there lived a young girl named Lily. The town was surrounded by lush forests and sparkling rivers, but the most impressive sight of all was Mt. Rainier. The mountain stood tall and proud, its snow-capped peak visible from every corner of the town. \n\nLily often gazed at Mt. Rainier from her bedroom window, dreaming of one day reaching its summit. The town whispered tales of the mountain—how it was a guardian of the valley, a keeper of secrets, and a source of inspiration for all who lived nearby. It was said that if you listened closely, you could hear the mountain's heartbeat in the gentle rustle of the leaves or the soft rush of the nearby creek.\n\nOne bright summer morning, Lily decided it was time to embark on her adventure. With her backpack filled with snacks, a water bottle, and a notebook to sketch her journey, she set off toward the mountain. As she walked, she felt the warm sun kissing her cheeks and the fragrant scent of wildflowers filled the air.\n\nAs she climbed higher, the trees began to thin out, and the air grew cooler. The views were breathtaking; she could see the sprawling valleys, carpeted with greenery, and the winding rivers that shimmered like silver ribbons far below. Every step made her heart race with excitement, and she could feel the mountain calling her to come closer.\n\nFinally, after hours of hiking, she reached a rocky outcrop that offered a spectacular view of Mt. Rainier up close. It loomed above her, majestic and timeless, its towering presence filled with a sense of wonder. From that place, the mountain looked even taller, and Lily felt like an ant standing next to a giant.\n\nShe took a deep breath and pulled out her notebook. With determination, she began sketching the magnificent mountain, capturing its contours and the beauty of the surrounding landscape. As she drew, she imagined what it would be like to stand at the very top, to touch the sky, and to feel like she was floating among the clouds.\n\nAfter a while, Lily noticed a group of hikers making their way up a narrow path leading to the summit. Their laughter carried on the breeze, and she felt a pang of longing to join them. Gathering her courage, she decided to follow, step by step, heart racing with anticipation. \n\nThe trail was steep and challenging, but with each step, she reminded herself of the stories she'd heard about the mountain’s spirit lifting those who dared to climb it. She could feel that spirit urging her on, and soon, she found herself at the summit. \n\nStanding atop Mt. Rainier, with the world spread out beneath her like a vast quilt, Lily’s heart swelled with joy. Clouds surrounded her, and she felt like she was indeed touching the sky. In that moment, she realized that the mountain was not just tall in height; it was tall in spirit, filling her with a sense of courage and possibility.\n\nAs the sun began to set, casting a golden glow over the peaks and valleys below, Lily wrote in her notebook: \"Mt. Rainier is not just a mountain; it is a reminder that we can reach great heights if we dare to follow our dreams.\" With a heart full of gratitude, she began her descent, knowing that she would carry the spirit of the mountain with her forever.\n\nFrom that day on, every time Lily looked at Mt. Rainier, she didn’t just see a tall mountain. She saw a friend, a guide, and a source of inspiration, reminding her to always aim high and follow her heart. And so, Mt. Rainier stood tall, not just in the landscape, but in the heart of a girl who dared to dream."
-

Teardown

PASSED test_openai_shorthand_streaming 0:00:06.058036

Setup

Call

Captured stderr call
[2024-09-05T13:55:40Z INFO  baml_events] Function TestOpenAIShorthand:
-    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 6045ms. StopReason: stop
+    "Once upon a time, in the heart of Washington State, stood a magnificent giant known as Mt. Rainier. Towering at over 14,000 feet, the mountain was a beacon of beauty and a source of wonder for all who beheld it. Its snow-capped peak shimmered like a crown beneath the sun, while the lush valleys below teemed with vibrant wildflowers that danced in the gentle breeze.\n\nIn the small town of Ashford, nestled at the mountain's base, lived a young girl named Lila. Lila was an adventurous soul, her spirit as wild and free as the mountain winds. Every evening, she would sit on her porch, gazing up at Mt. Rainier, a sense of awe filling her heart. She had heard stories from the old townsfolk about how the mountain watched over them, its towering presence a reminder of both nature’s beauty and its power.\n\nOne summer day, Lila decided it was time to embark on an adventure of her own. She gathered her supplies—her trusty backpack, a notebook, and a camera—and set off to explore the trails that wound up the mountain. As she walked, she marveled at the towering trees, their trunks thick and sturdy, standing sentinel against the sky.\n\nAs she ascended, the landscape transformed. The air grew crisp, and the sounds of the forest faded, replaced by the soft crunch of gravel under her boots. Finally, after hours of hiking, Lila reached a viewpoint that seemed to touch the heavens. She stood there, breathless, her heart racing with excitement as she gazed up at the majestic peak.\n\n“Wow, you truly are tall!” she exclaimed, her voice echoing in the vast silence. The mountain loomed above her, its rugged slopes adorned with bright white glacial fields that sparkled like diamonds in the sunlight. Lila felt small yet empowered, humbled by the beauty and grandeur of the world around her.\n\nInspired, she sat down to write in her notebook, capturing the essence of the moment. In her words, she wove stories of adventure, bravery, and a connection to nature that transcended the miles between her and the mountain's peak. Each word felt like a thread binding her closer to the giant above.\n\nAs the sun began to dip behind the horizon, painting the sky in hues of orange and pink, Lila knew it was time to head back. But she carried with her more than just memories; she was filled with a newfound determination to keep exploring her world, to chase after dreams—even the tallest ones, like Mt. Rainier itself.\n\nFrom that day on, Lila returned to the mountain time and again. With every hike, she discovered new trails, met fellow adventurers, and deepened her appreciation for the natural world. In her heart, she understood that though she may never scale the peak, embracing the journey itself was a victory worth celebrating.\n\nAnd so, Mt. Rainier remained, a steadfast giant watching over Ashford and its inhabitants, inspiring dreams as tall as its summits and nurturing the spirit of adventure in every heart it touched."
+

Teardown

PASSED test_openai_shorthand_streaming 0:00:04.778658

Setup

Call

Captured stderr call
[2024-09-21T01:04:53Z INFO  baml_events] Function TestOpenAIShorthand:
+    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 4773ms. StopReason: stop
     ---PROMPT---
     [chat] system: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
-    Once upon a time in the Pacific Northwest, a small town nestled at the foot of the colossal Mt. Rainier. The townspeople often marveled at the mountain's magnificence, its snow-capped peak piercing the sky and glistening like a jewel in the sun. To them, it was more than just a mountain; it was a source of inspiration, a guardian watching over them with its imposing stature.
+    Once upon a time, in the lush green valleys of Washington State, stood the magnificent Mount Rainier. Towering at an impressive 14,411 feet, the mountain was not just a giant of rock and snow; it was also a guardian of the land, a keeper of secrets, and a muse for many who lived in its shadow.
     
-    Among the residents was a curious little girl named Elara. She had always been fascinated by the tales her grandmother told her about Mt. Rainier. "It's the tallest of them all," her grandmother would say, with eyes sparkling like the stars above. "It holds secrets in its glaciers and whispers stories in the wind."
+    In a small village nearby, there lived a little girl named Lila. Every day after school, Lila would race to the meadows, her laughter mingling with the rustling grass, her eyes gleaming with wonder. She was captivated by the sight of Mount Rainier resplendent in the afternoon sun, its peak wrapped in glistening white clouds. The mountain seemed to call to her, and she dreamt of climbing to its summit, to feel the clouds brush against her cheeks.
     
-    One afternoon, Elara decided she wanted to see how tall the mountain truly was. She’d heard that many brave adventurers had climbed its slopes, but she was too young for such a challenge. Instead, she set out on a quest of her own, hiking along the lush trails that meandered through the forest at its base. With each step, she felt the cool breeze carry whispers of the mountain to her ears.
+    One summer, Lila decided it was time to see the world from Mount Rainier’s lofty heights. With a heart full of determination and a backpack filled with sandwiches, a water bottle, and her favorite book of fairy tales, she set off early one bright morning. The path wound through towering cedars, bright wildflowers, and bubbling streams, each step filled with anticipation.
     
-    As she walked, she met creatures who called Mt. Rainier home. A wise old owl perched on a branch told Elara about the mountain’s great stories. "It has seen the seasons change a thousand times, and the spirits of the earth dance upon its peaks," he hooted.
+    As she climbed higher, the air grew cooler, and the landscape transformed into a magical wonderland. She met fellow adventurers along the way: a wise old man who shared stories of the mountain’s spirit, a family of hikers who sang songs that echoed in the valleys, and a friendly ranger who spoke of the wildlife that thrived in the area. Each encounter made her journey richer, filling her heart with warmth.
     
-    Further on, she encountered a playful brook that babbled its way down the mountainside. "I carry the essence of Rainier with me," it gushed, "from the melting snow and the refreshing rains." The water sparkled in the sunlight, reflecting the mountain's greatness.
+    After a long day of hiking, Lila finally reached a beautiful lookout point just below the summit. She sat on a mossy rock, her legs dangling over a ridge, and gazed in awe at the sprawling world below her. The valleys were shrouded in soft mist, while the sun started to set, painting the sky in hues of orange, pink, and lavender. It was a view more breathtaking than she had ever imagined.
     
-    At the end of her journey that day, Elara found a quiet spot with a perfect view of Mt. Rainier. As she sat there, the golden sun began to set, painting the sky in shades of crimson and gold. In that moment, Elara understood why the mountain was revered. Its majesty was not just in its height, but in the way it inspired everyone around it.
+    But as she sat there, a gentle breeze whispered through the trees, and Lila closed her eyes. She felt connected to the mountain, to the earth, to everything around her. In that moment, she understood that Mount Rainier was not just a tall, imposing figure—it was a source of inspiration, a reminder that challenges could be faced with bravery and that beauty could be found in every part of the journey.
     
-    Elara smiled to herself. She realized that while she might not be able to scale the heights of Mt. Rainier just yet, she could appreciate its grandeur from below, carrying the spirit of the mountain in her heart. 
+    With the stars beginning to twinkle above, Lila decided to make her way back down, her heart full and her spirit soaring. She knew she would return to the mountain, carrying the stories and lessons she had learned. As she descended, she took one last look at the majestic peak, now glowing in the moonlight. 
     
-    From that day on, whenever Elara looked up at Mt. Rainier, she felt a connection to it — both a part of the earth and a dreamer reaching for the stars. The townsfolk continued to admire the mountain, but for Elara, it became a symbol of her own journey, reminding her to strive for greatness, no matter how tall her dreams might be.
+    In the years to come, she would tell tales of her adventure to children in the village, encouraging them to seek their own paths and embrace the wonders of the world around them. For Lila knew, just as Mt. Rainier stood tall and proud, so too would the dreams of every soul brave enough to chase them.
     ---Parsed Response (string)---
-    "Once upon a time in the Pacific Northwest, a small town nestled at the foot of the colossal Mt. Rainier. The townspeople often marveled at the mountain's magnificence, its snow-capped peak piercing the sky and glistening like a jewel in the sun. To them, it was more than just a mountain; it was a source of inspiration, a guardian watching over them with its imposing stature.\n\nAmong the residents was a curious little girl named Elara. She had always been fascinated by the tales her grandmother told her about Mt. Rainier. \"It's the tallest of them all,\" her grandmother would say, with eyes sparkling like the stars above. \"It holds secrets in its glaciers and whispers stories in the wind.\"\n\nOne afternoon, Elara decided she wanted to see how tall the mountain truly was. She’d heard that many brave adventurers had climbed its slopes, but she was too young for such a challenge. Instead, she set out on a quest of her own, hiking along the lush trails that meandered through the forest at its base. With each step, she felt the cool breeze carry whispers of the mountain to her ears.\n\nAs she walked, she met creatures who called Mt. Rainier home. A wise old owl perched on a branch told Elara about the mountain’s great stories. \"It has seen the seasons change a thousand times, and the spirits of the earth dance upon its peaks,\" he hooted.\n\nFurther on, she encountered a playful brook that babbled its way down the mountainside. \"I carry the essence of Rainier with me,\" it gushed, \"from the melting snow and the refreshing rains.\" The water sparkled in the sunlight, reflecting the mountain's greatness.\n\nAt the end of her journey that day, Elara found a quiet spot with a perfect view of Mt. Rainier. As she sat there, the golden sun began to set, painting the sky in shades of crimson and gold. In that moment, Elara understood why the mountain was revered. Its majesty was not just in its height, but in the way it inspired everyone around it.\n\nElara smiled to herself. She realized that while she might not be able to scale the heights of Mt. Rainier just yet, she could appreciate its grandeur from below, carrying the spirit of the mountain in her heart. \n\nFrom that day on, whenever Elara looked up at Mt. Rainier, she felt a connection to it — both a part of the earth and a dreamer reaching for the stars. The townsfolk continued to admire the mountain, but for Elara, it became a symbol of her own journey, reminding her to strive for greatness, no matter how tall her dreams might be."
-

Teardown

PASSED test_anthropic_shorthand 0:00:03.374503

Setup

Call

Captured stderr call
[2024-09-05T13:55:44Z INFO  baml_events] Function TestAnthropicShorthand:
-    Client: anthropic/claude-3-haiku-20240307 (claude-3-haiku-20240307) - 3366ms. StopReason: "end_turn"
+    "Once upon a time, in the lush green valleys of Washington State, stood the magnificent Mount Rainier. Towering at an impressive 14,411 feet, the mountain was not just a giant of rock and snow; it was also a guardian of the land, a keeper of secrets, and a muse for many who lived in its shadow.\n\nIn a small village nearby, there lived a little girl named Lila. Every day after school, Lila would race to the meadows, her laughter mingling with the rustling grass, her eyes gleaming with wonder. She was captivated by the sight of Mount Rainier resplendent in the afternoon sun, its peak wrapped in glistening white clouds. The mountain seemed to call to her, and she dreamt of climbing to its summit, to feel the clouds brush against her cheeks.\n\nOne summer, Lila decided it was time to see the world from Mount Rainier’s lofty heights. With a heart full of determination and a backpack filled with sandwiches, a water bottle, and her favorite book of fairy tales, she set off early one bright morning. The path wound through towering cedars, bright wildflowers, and bubbling streams, each step filled with anticipation.\n\nAs she climbed higher, the air grew cooler, and the landscape transformed into a magical wonderland. She met fellow adventurers along the way: a wise old man who shared stories of the mountain’s spirit, a family of hikers who sang songs that echoed in the valleys, and a friendly ranger who spoke of the wildlife that thrived in the area. Each encounter made her journey richer, filling her heart with warmth.\n\nAfter a long day of hiking, Lila finally reached a beautiful lookout point just below the summit. She sat on a mossy rock, her legs dangling over a ridge, and gazed in awe at the sprawling world below her. The valleys were shrouded in soft mist, while the sun started to set, painting the sky in hues of orange, pink, and lavender. It was a view more breathtaking than she had ever imagined.\n\nBut as she sat there, a gentle breeze whispered through the trees, and Lila closed her eyes. She felt connected to the mountain, to the earth, to everything around her. In that moment, she understood that Mount Rainier was not just a tall, imposing figure—it was a source of inspiration, a reminder that challenges could be faced with bravery and that beauty could be found in every part of the journey.\n\nWith the stars beginning to twinkle above, Lila decided to make her way back down, her heart full and her spirit soaring. She knew she would return to the mountain, carrying the stories and lessons she had learned. As she descended, she took one last look at the majestic peak, now glowing in the moonlight. \n\nIn the years to come, she would tell tales of her adventure to children in the village, encouraging them to seek their own paths and embrace the wonders of the world around them. For Lila knew, just as Mt. Rainier stood tall and proud, so too would the dreams of every soul brave enough to chase them."
+

Teardown

PASSED test_anthropic_shorthand 0:00:03.780529

Setup

Call

Captured stderr call
[2024-09-21T01:04:57Z INFO  baml_events] Function TestAnthropicShorthand:
+    Client: anthropic/claude-3-haiku-20240307 (claude-3-haiku-20240307) - 3777ms. StopReason: "end_turn"
     ---PROMPT---
     [chat] user: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
-    Here is a short story about Mount Rainier:
+    Here is a short story about Mt. Rainier:
     
-    The Majestic Mountain
+    The Towering Giant
     
-    As the first golden rays of sunrise peeked over the distant horizon, they illuminated the magnificent peak of Mount Rainier. The towering stratovolcano, standing at an impressive 14,411 feet, dominated the landscape with its snow-capped splendor.
+    As the sun crept over the horizon, its golden rays slowly illuminated the majestic peaks of Mount Rainier. Standing tall and proud at 14,411 feet, the dormant volcano dominated the landscape, dwarfing the surrounding mountain ranges.
     
-    Eric stood in awe, his eyes fixed on the mountain's breathtaking grandeur. He had visited this spot many times before, but the sight of Rainier never failed to captivate him. The sheer scale of the mountain was humbling, a testament to the raw power and beauty of nature.
+    Sarah gazed up at the snow-capped summit, feeling a sense of awe and wonder. She had lived in the Pacific Northwest her entire life, but the sight of Rainier never ceased to amaze her. There was something so powerful and commanding about its sheer size and scale.
     
-    As he took a deep breath of the crisp, clean air, Eric felt a sense of serenity wash over him. The mountain's presence was both calming and invigorating, a reminder of the enduring strength and resilience of the natural world.
+    Pulling her jacket tighter, Sarah began the ascent, her boots crunching on the well-worn trail. With each step, the mountain seemed to grow larger, its icy cliffs and rugged ridges looming ever closer. The air grew thinner, but Sarah pressed on, driven by a desire to conquer the towering giant.
     
-    Eric knew that the climb to the summit was a challenging one, requiring skill, endurance, and a deep respect for the mountain's might. But in that moment, he felt a renewed desire to tackle the ascent, to experience the world from the top of this towering giant.
+    After hours of steady climbing, Sarah finally reached the summit, her lungs burning from the exertion. But as she looked out over the breathtaking panorama, all of her fatigue melted away. The world seemed so small from up here, a tapestry of forests, lakes, and winding rivers sprawling out beneath her feet.
     
-    With a renewed sense of purpose, Eric turned and headed back down the trail, his eyes still drawn to the majestic peak that stood watch over the land. He knew that his journey to the summit would be long and arduous, but the promise of the breathtaking views from the top fueled his determination.
+    In that moment, Sarah felt a deep connection to the mountain, a sense of reverence and respect for its raw, uncompromising beauty. Rainier was not just a mountain – it was a testament to the power and majesty of the natural world, a reminder of the insignificance of human endeavor in the face of such grandeur.
     
-    In the end, it was not the physical challenge that motivated Eric, but the profound connection he felt with the mountain itself – a bond forged through years of exploration and a deep appreciation for the awe-inspiring power of nature.
+    As the sun began to set, casting long shadows across the peaks, Sarah turned and began her descent, her heart filled with a newfound appreciation for the towering giant that had captured her imagination. She knew that she would return again, drawn by the siren call of Rainier's majestic presence, to once more stand in the shadow of this awe-inspiring wonder of the world.
     ---Parsed Response (string)---
-    "Here is a short story about Mount Rainier:\n\nThe Majestic Mountain\n\nAs the first golden rays of sunrise peeked over the distant horizon, they illuminated the magnificent peak of Mount Rainier. The towering stratovolcano, standing at an impressive 14,411 feet, dominated the landscape with its snow-capped splendor.\n\nEric stood in awe, his eyes fixed on the mountain's breathtaking grandeur. He had visited this spot many times before, but the sight of Rainier never failed to captivate him. The sheer scale of the mountain was humbling, a testament to the raw power and beauty of nature.\n\nAs he took a deep breath of the crisp, clean air, Eric felt a sense of serenity wash over him. The mountain's presence was both calming and invigorating, a reminder of the enduring strength and resilience of the natural world.\n\nEric knew that the climb to the summit was a challenging one, requiring skill, endurance, and a deep respect for the mountain's might. But in that moment, he felt a renewed desire to tackle the ascent, to experience the world from the top of this towering giant.\n\nWith a renewed sense of purpose, Eric turned and headed back down the trail, his eyes still drawn to the majestic peak that stood watch over the land. He knew that his journey to the summit would be long and arduous, but the promise of the breathtaking views from the top fueled his determination.\n\nIn the end, it was not the physical challenge that motivated Eric, but the profound connection he felt with the mountain itself – a bond forged through years of exploration and a deep appreciation for the awe-inspiring power of nature."
-

Teardown

PASSED test_anthropic_shorthand_streaming 0:00:03.336387

Setup

Call

Captured stderr call
[2024-09-05T13:55:47Z INFO  baml_events] Function TestAnthropicShorthand:
-    Client: anthropic/claude-3-haiku-20240307 (claude-3-haiku-20240307) - 3292ms. StopReason: "end_turn"
+    "Here is a short story about Mt. Rainier:\n\nThe Towering Giant\n\nAs the sun crept over the horizon, its golden rays slowly illuminated the majestic peaks of Mount Rainier. Standing tall and proud at 14,411 feet, the dormant volcano dominated the landscape, dwarfing the surrounding mountain ranges.\n\nSarah gazed up at the snow-capped summit, feeling a sense of awe and wonder. She had lived in the Pacific Northwest her entire life, but the sight of Rainier never ceased to amaze her. There was something so powerful and commanding about its sheer size and scale.\n\nPulling her jacket tighter, Sarah began the ascent, her boots crunching on the well-worn trail. With each step, the mountain seemed to grow larger, its icy cliffs and rugged ridges looming ever closer. The air grew thinner, but Sarah pressed on, driven by a desire to conquer the towering giant.\n\nAfter hours of steady climbing, Sarah finally reached the summit, her lungs burning from the exertion. But as she looked out over the breathtaking panorama, all of her fatigue melted away. The world seemed so small from up here, a tapestry of forests, lakes, and winding rivers sprawling out beneath her feet.\n\nIn that moment, Sarah felt a deep connection to the mountain, a sense of reverence and respect for its raw, uncompromising beauty. Rainier was not just a mountain – it was a testament to the power and majesty of the natural world, a reminder of the insignificance of human endeavor in the face of such grandeur.\n\nAs the sun began to set, casting long shadows across the peaks, Sarah turned and began her descent, her heart filled with a newfound appreciation for the towering giant that had captured her imagination. She knew that she would return again, drawn by the siren call of Rainier's majestic presence, to once more stand in the shadow of this awe-inspiring wonder of the world."
+

Teardown

PASSED test_anthropic_shorthand_streaming 0:00:03.309380

Setup

Call

Captured stderr call
[2024-09-21T01:05:00Z INFO  baml_events] Function TestAnthropicShorthand:
+    Client: anthropic/claude-3-haiku-20240307 (claude-3-haiku-20240307) - 3299ms. StopReason: "end_turn"
     ---PROMPT---
     [chat] user: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
     Here is a short story about Mt. Rainier:
     
-    Towering above the verdant landscape, Mount Rainier stood tall and proud, its snow-capped peak piercing the brilliant blue sky. For as far as the eye could see, the majestic mountain dominated the horizon, a breathtaking natural wonder that inspired awe in all who laid eyes upon it.
+    Towering Majesty
     
-    Hailey gazed up at the mountain, her heart swelling with a sense of wonder and reverence. She had grown up in the shadow of this grand monolith, but its sheer size and beauty never ceased to amaze her. The mountain's sheer scale was humbling, a reminder of the raw power and grandeur of the natural world.
+    As the sun peeked over the horizon, its golden rays bathed the magnificent peak of Mt. Rainier in a warm glow. The massive stratovolcano stood tall and proud, its snowy summit piercing the clear blue sky.
     
-    As Hailey hiked through the lush, forested foothills, she couldn't help but feel a deep connection to the mountain. It was a constant presence in her life, a towering beacon that guided her adventures and inspired her spirit. With each step, the mountain drew closer, its towering presence looming ever larger, until Hailey found herself standing at its base, gazing up in awe at its snow-capped summit.
+    Gazing up at the mountain, one couldn't help but feel small and humbled by its sheer scale and power. At 14,411 feet (4,392 meters) in elevation, Mt. Rainier is the highest point in the Cascade Range and the most prominent mountain in the continental United States.
     
-    In that moment, Hailey felt small and insignificant, but also deeply connected to the earth and the forces that had shaped this magnificent natural wonder. She knew that she was just one tiny part of a vast and ancient landscape, but in that moment, she felt a sense of profound belonging, a deep appreciation for the power and beauty of the world around her.
+    Jane had come to the park many times, but each visit left her in awe of this natural wonder. As she set out on the trail, she couldn't help but steal glances at the towering peak, its glaciers sparkling in the morning light. The hike grew more strenuous, but Jane's eyes were constantly drawn upwards, marveling at the mountain's imposing presence.
     
-    As she turned and continued her hike, Hailey couldn't help but feel grateful for the privilege of living in the shadow of such a breathtaking mountain. Mount Rainier was a constant reminder of the majesty and wonder of the natural world, and Hailey knew that she would always carry its memory with her, a testament to the enduring power of the earth and the human spirit.
+    Reaching the lookout point, Jane took a moment to catch her breath and let the view sink in. Mt. Rainier stood majestically before her, its size and scale almost overwhelming. She felt insignificant, yet deeply connected to the ancient forces that had sculpted this magnificent landscape.
+    
+    In that moment, Jane understood why this mountain was so revered. It was not just a mountain, but a testament to the raw power of nature, a monument to the enduring strength of the Earth. And as she gazed upon its towering form, she knew she would carry this experience with her, forever humbled by the towering majesty of Mt. Rainier.
     ---Parsed Response (string)---
-    "Here is a short story about Mt. Rainier:\n\nTowering above the verdant landscape, Mount Rainier stood tall and proud, its snow-capped peak piercing the brilliant blue sky. For as far as the eye could see, the majestic mountain dominated the horizon, a breathtaking natural wonder that inspired awe in all who laid eyes upon it.\n\nHailey gazed up at the mountain, her heart swelling with a sense of wonder and reverence. She had grown up in the shadow of this grand monolith, but its sheer size and beauty never ceased to amaze her. The mountain's sheer scale was humbling, a reminder of the raw power and grandeur of the natural world.\n\nAs Hailey hiked through the lush, forested foothills, she couldn't help but feel a deep connection to the mountain. It was a constant presence in her life, a towering beacon that guided her adventures and inspired her spirit. With each step, the mountain drew closer, its towering presence looming ever larger, until Hailey found herself standing at its base, gazing up in awe at its snow-capped summit.\n\nIn that moment, Hailey felt small and insignificant, but also deeply connected to the earth and the forces that had shaped this magnificent natural wonder. She knew that she was just one tiny part of a vast and ancient landscape, but in that moment, she felt a sense of profound belonging, a deep appreciation for the power and beauty of the world around her.\n\nAs she turned and continued her hike, Hailey couldn't help but feel grateful for the privilege of living in the shadow of such a breathtaking mountain. Mount Rainier was a constant reminder of the majesty and wonder of the natural world, and Hailey knew that she would always carry its memory with her, a testament to the enduring power of the earth and the human spirit."
-

Teardown

PASSED test_fallback_to_shorthand 0:00:00.971522

Setup

Call

Captured stderr call
[2024-09-05T13:55:48Z INFO  baml_events] Function TestFallbackToShorthand:
+    "Here is a short story about Mt. Rainier:\n\nTowering Majesty\n\nAs the sun peeked over the horizon, its golden rays bathed the magnificent peak of Mt. Rainier in a warm glow. The massive stratovolcano stood tall and proud, its snowy summit piercing the clear blue sky.\n\nGazing up at the mountain, one couldn't help but feel small and humbled by its sheer scale and power. At 14,411 feet (4,392 meters) in elevation, Mt. Rainier is the highest point in the Cascade Range and the most prominent mountain in the continental United States.\n\nJane had come to the park many times, but each visit left her in awe of this natural wonder. As she set out on the trail, she couldn't help but steal glances at the towering peak, its glaciers sparkling in the morning light. The hike grew more strenuous, but Jane's eyes were constantly drawn upwards, marveling at the mountain's imposing presence.\n\nReaching the lookout point, Jane took a moment to catch her breath and let the view sink in. Mt. Rainier stood majestically before her, its size and scale almost overwhelming. She felt insignificant, yet deeply connected to the ancient forces that had sculpted this magnificent landscape.\n\nIn that moment, Jane understood why this mountain was so revered. It was not just a mountain, but a testament to the raw power of nature, a monument to the enduring strength of the Earth. And as she gazed upon its towering form, she knew she would carry this experience with her, forever humbled by the towering majesty of Mt. Rainier."
+

Teardown

PASSED test_fallback_to_shorthand 0:00:00.631477

Setup

Call

Captured stderr call
[2024-09-21T01:05:01Z INFO  baml_events] Function TestFallbackToShorthand:
     (1 other previous tries)
-    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 735ms. StopReason: stop
+    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 468ms. StopReason: stop
     ---PROMPT---
     [chat] system: Say a haiku about Mt Rainier is tall.
     
     ---LLM REPLY---
-    Majestic and proud,  
-    Mt. Rainier pierces sky,  
-    Whispers of the clouds.  
+    Majestic mountain,  
+    Crowned in snow, reaching the sky—  
+    Whispers of the clouds.
     ---Parsed Response (string)---
-    "Majestic and proud,  \nMt. Rainier pierces sky,  \nWhispers of the clouds.  "
-

Teardown

PASSED test_aws_streaming 0:00:02.040104

Setup

Call

Captured stderr call
[2024-09-05T13:55:50Z INFO  baml_events] Function TestAws:
-    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 2028ms. StopReason: unknown
+    "Majestic mountain,  \nCrowned in snow, reaching the sky—  \nWhispers of the clouds."
+

Teardown

PASSED test_aws_streaming 0:00:01.793776

Setup

Call

Captured stderr call
[2024-09-21T01:05:01Z WARN  aws_runtime::env_config::normalize] section [Connection 1] ignored; config must be in the AWS config file rather than the credentials file
+[2024-09-21T01:05:01Z INFO  aws_config::meta::region] load_region; provider=EnvironmentVariableRegionProvider { env: Env(Real) }
+[2024-09-21T01:05:03Z INFO  baml_events] Function TestAws:
+    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 1789ms. StopReason: unknown
     ---PROMPT---
     [chat] user: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
-    Here is a short story about the majestic Mount Rainier:
+    Here is a short story about Mount Rainier:
     
-    Towering High
+    The Majestic Presence of Mount Rainier
     
-    Amidst the lush, verdant forests of the Pacific Northwest, a colossal mountain stands proud and tall, its snow-capped peak piercing the azure sky. This is Mount Rainier, a dormant volcano that has captivated the hearts and imaginations of all who lay eyes upon it.
+    As the clouds parted, revealing the towering, snow-capped peak, Sarah couldn't help but feel a sense of awe wash over her. Mount Rainier, standing tall at 14,411 feet, was a truly magnificent sight to behold.
     
-    At 14,411 feet, Mount Rain
+    Growing up in the Pacific Northwest, Sarah had seen the iconic mountain countless times, but its
     ---Parsed Response (string)---
-    "Here is a short story about the majestic Mount Rainier:\n\nTowering High\n\nAmidst the lush, verdant forests of the Pacific Northwest, a colossal mountain stands proud and tall, its snow-capped peak piercing the azure sky. This is Mount Rainier, a dormant volcano that has captivated the hearts and imaginations of all who lay eyes upon it.\n\nAt 14,411 feet, Mount Rain"
-

Teardown

PASSED test_streaming 0:00:04.134063

Setup

Call

Captured stderr call
[2024-09-05T13:55:54Z INFO  baml_events] Function PromptTestStreaming:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 4122ms. StopReason: stop
+    "Here is a short story about Mount Rainier:\n\nThe Majestic Presence of Mount Rainier\n\nAs the clouds parted, revealing the towering, snow-capped peak, Sarah couldn't help but feel a sense of awe wash over her. Mount Rainier, standing tall at 14,411 feet, was a truly magnificent sight to behold.\n\nGrowing up in the Pacific Northwest, Sarah had seen the iconic mountain countless times, but its"
+

Teardown

PASSED test_streaming 0:00:02.959220

Setup

Call

Captured stderr call
[2024-09-21T01:05:06Z INFO  baml_events] Function PromptTestStreaming:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 2954ms. StopReason: stop
     ---PROMPT---
     [chat] system: Tell me a short story about Programming languages are fun to create
     
     ---LLM REPLY---
-    Once upon a time, in a world where creativity knew no bounds, a group of curious individuals set out to create their own programming language. They were a diverse bunch, each with their own unique backgrounds and perspectives, but they all shared a passion for technology and a love for solving complex problems.
+    Once upon a time in a faraway land, a group of software developers gathered to create their own programming language. They were filled with excitement and determination as they embarked on this unique and challenging journey.
     
-    They worked tirelessly, pouring their heart and soul into designing the syntax, defining the data types, and implementing the unique features that would set their language apart from the rest. They debated endlessly, argued passionately, and laughed heartily as they brought their vision to life one line of code at a time.
+    They spent hours brainstorming ideas, designing syntax, and testing out different functionalities. They were faced with many obstacles along the way, but they persevered with passion and creativity.
     
-    As the days turned into weeks and the weeks into months, their language began to take shape, evolving and growing with each new idea that they added. They faced challenges and setbacks, encountered bugs and errors, but they persevered, learning from their mistakes and pushing forward with determination and grit.
+    As their programming language began to take shape, they marveled at the beauty of their creation. They had crafted a language that was elegant, versatile, and powerful. They had poured their hearts and souls into this project, and the end result was truly something to be proud of.
     
-    And finally, after countless sleepless nights and endless cups of coffee, they stood back and marveled at what they had created – a programming language that was elegant, powerful, and uniquely their own. They named it "InnovaScript" as a nod to their innovative spirit and their love for scripting languages.
+    And as they shared their creation with the world, they were met with admiration and praise from fellow developers. Their programming language quickly gained popularity and became a valuable tool for many in the tech industry.
     
-    And as they shared their creation with the world, they realized that the true joy of programming languages lies not just in using them to build amazing things, but in the thrill of creating something new and exciting from scratch. For in the world of technology, the possibilities are truly endless, and the only limit is the boundaries of our imagination.
+    Creating a programming language had been a challenging endeavor, but the developers knew that it was all worth it. They had discovered the joy and satisfaction that came with bringing something new and exciting into the world. And they knew that this was only the beginning of their journey in the world of programming languages.
     ---Parsed Response (string)---
-    "Once upon a time, in a world where creativity knew no bounds, a group of curious individuals set out to create their own programming language. They were a diverse bunch, each with their own unique backgrounds and perspectives, but they all shared a passion for technology and a love for solving complex problems.\n\nThey worked tirelessly, pouring their heart and soul into designing the syntax, defining the data types, and implementing the unique features that would set their language apart from the rest. They debated endlessly, argued passionately, and laughed heartily as they brought their vision to life one line of code at a time.\n\nAs the days turned into weeks and the weeks into months, their language began to take shape, evolving and growing with each new idea that they added. They faced challenges and setbacks, encountered bugs and errors, but they persevered, learning from their mistakes and pushing forward with determination and grit.\n\nAnd finally, after countless sleepless nights and endless cups of coffee, they stood back and marveled at what they had created – a programming language that was elegant, powerful, and uniquely their own. They named it \"InnovaScript\" as a nod to their innovative spirit and their love for scripting languages.\n\nAnd as they shared their creation with the world, they realized that the true joy of programming languages lies not just in using them to build amazing things, but in the thrill of creating something new and exciting from scratch. For in the world of technology, the possibilities are truly endless, and the only limit is the boundaries of our imagination."
-

Teardown

PASSED test_streaming_uniterated 0:00:04.805570

Setup

Call

Captured stderr call
[2024-09-05T13:55:59Z INFO  baml_events] Function PromptTestStreaming:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 4795ms. StopReason: stop
+    "Once upon a time in a faraway land, a group of software developers gathered to create their own programming language. They were filled with excitement and determination as they embarked on this unique and challenging journey.\n\nThey spent hours brainstorming ideas, designing syntax, and testing out different functionalities. They were faced with many obstacles along the way, but they persevered with passion and creativity.\n\nAs their programming language began to take shape, they marveled at the beauty of their creation. They had crafted a language that was elegant, versatile, and powerful. They had poured their hearts and souls into this project, and the end result was truly something to be proud of.\n\nAnd as they shared their creation with the world, they were met with admiration and praise from fellow developers. Their programming language quickly gained popularity and became a valuable tool for many in the tech industry.\n\nCreating a programming language had been a challenging endeavor, but the developers knew that it was all worth it. They had discovered the joy and satisfaction that came with bringing something new and exciting into the world. And they knew that this was only the beginning of their journey in the world of programming languages."
+

Teardown

PASSED test_streaming_uniterated 0:00:02.956161

Setup

Call

Captured stderr call
[2024-09-21T01:05:09Z INFO  baml_events] Function PromptTestStreaming:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 2951ms. StopReason: stop
     ---PROMPT---
     [chat] system: Tell me a short story about The color blue makes me sad
     
     ---LLM REPLY---
-    Once upon a time, there was a young girl named Lily who had a unique perspective on the world. To her, the color blue always seemed to bring a sense of sadness and melancholy. Whenever she saw the clear blue sky or the shimmering blue ocean, she couldn't help but feel a heaviness in her heart.
+    Once there was a girl named Lily, who had a peculiar quirk – the color blue made her incredibly sad. It wasn't just any shade of blue, but a deep, melancholic shade that seemed to tug at her heartstrings and weigh heavily on her mind.
     
-    As Lily grew older, she tried to understand why the color blue had such a powerful effect on her emotions. She realized that blue reminded her of times when she felt lonely or lost, like the blue shadows on a cold winter's day. It was a color that represented sadness and longing to her.
+    Lily couldn't quite explain why this particular color had such an effect on her. Perhaps it reminded her of a stormy day from her childhood, or a feeling of loneliness that she couldn't quite shake. Whatever the reason, she found herself avoiding anything blue at all costs – from clothing to decorations to even the sky on a clear day.
     
-    Despite her associations with the color blue, Lily never let it hold her back. Instead, she used her sadness as inspiration to create beautiful works of art that explored themes of loneliness and isolation. Her paintings and drawings captured the essence of the color blue in all its melancholic beauty.
+    One day, as she was walking through the park, she came across a beautiful blue bird perched on a branch, its feathers glistening in the sunlight. Lily felt a pang of sadness wash over her, but she couldn't tear her eyes away from the bird's stunning plumage. It was as if the sadness and beauty were intertwined, impossible to separate.
     
-    Over time, Lily found solace in her art and discovered that the color blue could also be a source of comfort and healing. She realized that sadness was a part of life, but it could also be transformed into something meaningful and profound.
+    As she watched the bird take flight, a sense of peace washed over her. She realized that sometimes, even the things that make us sad can also be incredibly beautiful. From that day on, Lily embraced the color blue in all its forms, allowing herself to feel the sadness it brought, but also the joy and beauty that came with it.
     
-    And so, Lily embraced the color blue, not as a symbol of sadness, but as a reminder of the complexity and depth of human emotions. She learned to see the beauty in sadness and the strength in vulnerability, finding a sense of peace in the depths of the color that once made her sad.
+    And so, the color blue no longer held power over Lily's emotions. Instead, it became a reminder that sadness and beauty can coexist, and that sometimes, it's okay to embrace both.
     ---Parsed Response (string)---
-    "Once upon a time, there was a young girl named Lily who had a unique perspective on the world. To her, the color blue always seemed to bring a sense of sadness and melancholy. Whenever she saw the clear blue sky or the shimmering blue ocean, she couldn't help but feel a heaviness in her heart.\n\nAs Lily grew older, she tried to understand why the color blue had such a powerful effect on her emotions. She realized that blue reminded her of times when she felt lonely or lost, like the blue shadows on a cold winter's day. It was a color that represented sadness and longing to her.\n\nDespite her associations with the color blue, Lily never let it hold her back. Instead, she used her sadness as inspiration to create beautiful works of art that explored themes of loneliness and isolation. Her paintings and drawings captured the essence of the color blue in all its melancholic beauty.\n\nOver time, Lily found solace in her art and discovered that the color blue could also be a source of comfort and healing. She realized that sadness was a part of life, but it could also be transformed into something meaningful and profound.\n\nAnd so, Lily embraced the color blue, not as a symbol of sadness, but as a reminder of the complexity and depth of human emotions. She learned to see the beauty in sadness and the strength in vulnerability, finding a sense of peace in the depths of the color that once made her sad."
-

Teardown

PASSED test_streaming_sync 0:00:06.487885

Setup

Call

Captured stderr call
[2024-09-05T13:56:05Z INFO  baml_events] Function PromptTestStreaming:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 6478ms. StopReason: stop
+    "Once there was a girl named Lily, who had a peculiar quirk – the color blue made her incredibly sad. It wasn't just any shade of blue, but a deep, melancholic shade that seemed to tug at her heartstrings and weigh heavily on her mind.\n\nLily couldn't quite explain why this particular color had such an effect on her. Perhaps it reminded her of a stormy day from her childhood, or a feeling of loneliness that she couldn't quite shake. Whatever the reason, she found herself avoiding anything blue at all costs – from clothing to decorations to even the sky on a clear day.\n\nOne day, as she was walking through the park, she came across a beautiful blue bird perched on a branch, its feathers glistening in the sunlight. Lily felt a pang of sadness wash over her, but she couldn't tear her eyes away from the bird's stunning plumage. It was as if the sadness and beauty were intertwined, impossible to separate.\n\nAs she watched the bird take flight, a sense of peace washed over her. She realized that sometimes, even the things that make us sad can also be incredibly beautiful. From that day on, Lily embraced the color blue in all its forms, allowing herself to feel the sadness it brought, but also the joy and beauty that came with it.\n\nAnd so, the color blue no longer held power over Lily's emotions. Instead, it became a reminder that sadness and beauty can coexist, and that sometimes, it's okay to embrace both."
+

Teardown

PASSED test_streaming_sync 0:00:03.280958

Setup

Call

Captured stderr call
[2024-09-21T01:05:12Z INFO  baml_events] Function PromptTestStreaming:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 3278ms. StopReason: stop
     ---PROMPT---
     [chat] system: Tell me a short story about Programming languages are fun to create
     
     ---LLM REPLY---
-    Once upon a time, in a small village nestled in the rolling hills, there lived a young programmer named Lily. Lily had always been fascinated by the world of computers and technology, and she spent her days tinkering away on her laptop, creating intricate programs and applications.
+    Once upon a time, there was a brilliant young programmer named Lily who had always been fascinated by the inner workings of computers and software. She spent countless hours tinkering with code, exploring different programming languages, and dreaming of creating her own.
     
-    One day, while sitting in her favorite spot under the old oak tree, Lily had a brilliant idea - she wanted to create her very own programming language. She was inspired by the diverse languages she had worked with in the past, and she dreamed of crafting something unique and special.
+    One day, inspiration struck, and Lily decided to embark on the exciting journey of creating her very own programming language. She started by defining the syntax and grammar, carefully planning out the features and capabilities she wanted to include. She drew upon her knowledge of existing languages, pulling the best elements from each to craft something truly unique.
     
-    With determination in her heart and a spark of creativity in her eyes, Lily set to work. She spent countless hours writing lines of code, testing different syntaxes and functionalities, and fine-tuning every aspect of her new creation. She poured her passion and energy into the project, knowing that she was on the cusp of something truly extraordinary.
+    As she delved deeper into the project, Lily found herself immersed in a world of creativity and problem-solving. Each line of code she wrote was like a piece of a puzzle, fitting together perfectly to bring her language to life. She marveled at the power and flexibility of her creation, seeing how it could be used to solve complex problems and build amazing software.
     
-    As the weeks passed, Lily's programming language began to take shape. It was a beautiful blend of simplicity and power, with elegant syntax and intuitive features that made it a joy to work with. She named it "Lilac" after the flowers that bloomed in the village every spring, and she knew that it was something truly special.
+    As word of Lily's new programming language spread, other developers became intrigued and began to use it in their own projects. They praised its elegance and simplicity, and soon it gained a loyal following in the programming community. Lily was overjoyed to see her creation being embraced and adopted by others, knowing that she had truly made a mark on the world of technology.
     
-    When Lily finally unveiled Lilac to the world, the response was overwhelming. Other programmers marveled at the elegance and versatility of her creation, and they quickly began using it in their own projects. Lilac became a beloved language in the programming community, renowned for its ease of use and flexibility.
-    
-    And so, Lily's dream of creating her own programming language had come true. She had brought something new and exciting into the world, something that would inspire and empower programmers for generations to come. And as she sat under her favorite oak tree, watching the sun set behind the hills, Lily knew that she had found her true calling in the world of programming.
+    And so, Lily's journey to create her own programming language was not only a fulfilling and rewarding experience, but also a testament to the joy and excitement that comes from exploring the boundless possibilities of code. For her, programming languages weren't just tools for solving problems - they were a canvas for creativity, innovation, and endless fun.
     ---Parsed Response (string)---
-    "Once upon a time, in a small village nestled in the rolling hills, there lived a young programmer named Lily. Lily had always been fascinated by the world of computers and technology, and she spent her days tinkering away on her laptop, creating intricate programs and applications.\n\nOne day, while sitting in her favorite spot under the old oak tree, Lily had a brilliant idea - she wanted to create her very own programming language. She was inspired by the diverse languages she had worked with in the past, and she dreamed of crafting something unique and special.\n\nWith determination in her heart and a spark of creativity in her eyes, Lily set to work. She spent countless hours writing lines of code, testing different syntaxes and functionalities, and fine-tuning every aspect of her new creation. She poured her passion and energy into the project, knowing that she was on the cusp of something truly extraordinary.\n\nAs the weeks passed, Lily's programming language began to take shape. It was a beautiful blend of simplicity and power, with elegant syntax and intuitive features that made it a joy to work with. She named it \"Lilac\" after the flowers that bloomed in the village every spring, and she knew that it was something truly special.\n\nWhen Lily finally unveiled Lilac to the world, the response was overwhelming. Other programmers marveled at the elegance and versatility of her creation, and they quickly began using it in their own projects. Lilac became a beloved language in the programming community, renowned for its ease of use and flexibility.\n\nAnd so, Lily's dream of creating her own programming language had come true. She had brought something new and exciting into the world, something that would inspire and empower programmers for generations to come. And as she sat under her favorite oak tree, watching the sun set behind the hills, Lily knew that she had found her true calling in the world of programming."
-
Captured log call
WARNING  asyncio:base_events.py:1982 Executing <Task finished name='Task-49' coro=<BaseEventLoop.shutdown_default_executor() done, defined at /opt/homebrew/Cellar/python@3.12/3.12.4/Frameworks/Python.framework/Versions/3.12/lib/python3.12/asyncio/base_events.py:586> result=None created at /opt/homebrew/Cellar/python@3.12/3.12.4/Frameworks/Python.framework/Versions/3.12/lib/python3.12/asyncio/tasks.py:695> took 0.259 seconds

Teardown

PASSED test_streaming_uniterated_sync 0:00:05.340823

Setup

Call

Captured stderr call
[2024-09-05T13:56:11Z INFO  baml_events] Function PromptTestStreaming:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 5329ms. StopReason: stop
+    "Once upon a time, there was a brilliant young programmer named Lily who had always been fascinated by the inner workings of computers and software. She spent countless hours tinkering with code, exploring different programming languages, and dreaming of creating her own.\n\nOne day, inspiration struck, and Lily decided to embark on the exciting journey of creating her very own programming language. She started by defining the syntax and grammar, carefully planning out the features and capabilities she wanted to include. She drew upon her knowledge of existing languages, pulling the best elements from each to craft something truly unique.\n\nAs she delved deeper into the project, Lily found herself immersed in a world of creativity and problem-solving. Each line of code she wrote was like a piece of a puzzle, fitting together perfectly to bring her language to life. She marveled at the power and flexibility of her creation, seeing how it could be used to solve complex problems and build amazing software.\n\nAs word of Lily's new programming language spread, other developers became intrigued and began to use it in their own projects. They praised its elegance and simplicity, and soon it gained a loyal following in the programming community. Lily was overjoyed to see her creation being embraced and adopted by others, knowing that she had truly made a mark on the world of technology.\n\nAnd so, Lily's journey to create her own programming language was not only a fulfilling and rewarding experience, but also a testament to the joy and excitement that comes from exploring the boundless possibilities of code. For her, programming languages weren't just tools for solving problems - they were a canvas for creativity, innovation, and endless fun."
+

Teardown

PASSED test_streaming_uniterated_sync 0:00:02.846100

Setup

Call

Captured stderr call
[2024-09-21T01:05:15Z INFO  baml_events] Function PromptTestStreaming:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 2843ms. StopReason: stop
     ---PROMPT---
     [chat] system: Tell me a short story about The color blue makes me sad
     
     ---LLM REPLY---
-    There was once a young girl named Emily who had always been fascinated by the color blue. She loved how it reminded her of clear skies, vast oceans, and the feeling of calmness it brought to her. But as she grew older, she began to notice that every time she saw the color blue, a wave of sadness washed over her.
+    Once there was a little girl named Lily who had a special connection to the color blue. Whenever she saw the sky or a beautiful sapphire, she felt a sense of peace and happiness that filled her heart.
     
-    She couldn't explain it, but there was something about the color that made her heart ache and her eyes well up with tears. She tried to avoid it as much as possible, but it seemed to be everywhere she looked – in the clothes people wore, the walls of buildings, even the sky itself.
+    But one day, a dark cloud appeared in the sky, casting a shadow over everything in the world. Lily looked up and noticed that the once vibrant blue sky had turned cold and gray. The color blue now made her feel sad and lonely, filling her with a sense of emptiness that she couldn't shake.
     
-    One day, while walking through a park, Emily came across a beautiful blue flower. Its petals were the same shade as the sky on a crisp autumn day. She couldn't tear her eyes away from it, even though she felt the familiar sadness creeping in.
+    As days went by, Lily tried to find joy in other colors, but nothing could replace the feeling of beauty and serenity that the color blue had once brought her. She longed for the days when she would gaze up at the sky and feel a sense of wonder and awe at the endless expanse of blue above her.
     
-    But as she gazed at the flower, she realized that perhaps the color blue wasn't making her sad after all. Maybe it was a reminder of the beauty in the world, the moments of peace and tranquility that she longed for. And just like that, the sadness lifted, and Emily found herself smiling.
+    Finally, one day, the sun broke through the clouds, and the blue sky returned, brighter and more vibrant than ever before. Lily looked up and felt a sense of hope and renewal wash over her. The color blue no longer made her sad; instead, it reminded her of the beauty and resilience that can be found even in the darkest of times.
     
-    From that day on, whenever she saw the color blue, she embraced it with open arms. It no longer made her sad, but instead filled her with a sense of wonder and appreciation for the world around her. And she knew that the color blue would always hold a special place in her heart.
+    From that day on, Lily cherished the color blue, knowing that it held a special place in her heart and could always bring her comfort and joy, no matter what challenges life may bring.
     ---Parsed Response (string)---
-    "There was once a young girl named Emily who had always been fascinated by the color blue. She loved how it reminded her of clear skies, vast oceans, and the feeling of calmness it brought to her. But as she grew older, she began to notice that every time she saw the color blue, a wave of sadness washed over her.\n\nShe couldn't explain it, but there was something about the color that made her heart ache and her eyes well up with tears. She tried to avoid it as much as possible, but it seemed to be everywhere she looked – in the clothes people wore, the walls of buildings, even the sky itself.\n\nOne day, while walking through a park, Emily came across a beautiful blue flower. Its petals were the same shade as the sky on a crisp autumn day. She couldn't tear her eyes away from it, even though she felt the familiar sadness creeping in.\n\nBut as she gazed at the flower, she realized that perhaps the color blue wasn't making her sad after all. Maybe it was a reminder of the beauty in the world, the moments of peace and tranquility that she longed for. And just like that, the sadness lifted, and Emily found herself smiling.\n\nFrom that day on, whenever she saw the color blue, she embraced it with open arms. It no longer made her sad, but instead filled her with a sense of wonder and appreciation for the world around her. And she knew that the color blue would always hold a special place in her heart."
-

Teardown

PASSED test_streaming_claude 0:00:00.984215

Setup

Call

Captured stdout call
msgs:
-Majestic Mt. Rainier,
-Towering high in the sky,
-Awe-inspiring sight.
+    "Once there was a little girl named Lily who had a special connection to the color blue. Whenever she saw the sky or a beautiful sapphire, she felt a sense of peace and happiness that filled her heart.\n\nBut one day, a dark cloud appeared in the sky, casting a shadow over everything in the world. Lily looked up and noticed that the once vibrant blue sky had turned cold and gray. The color blue now made her feel sad and lonely, filling her with a sense of emptiness that she couldn't shake.\n\nAs days went by, Lily tried to find joy in other colors, but nothing could replace the feeling of beauty and serenity that the color blue had once brought her. She longed for the days when she would gaze up at the sky and feel a sense of wonder and awe at the endless expanse of blue above her.\n\nFinally, one day, the sun broke through the clouds, and the blue sky returned, brighter and more vibrant than ever before. Lily looked up and felt a sense of hope and renewal wash over her. The color blue no longer made her sad; instead, it reminded her of the beauty and resilience that can be found even in the darkest of times.\n\nFrom that day on, Lily cherished the color blue, knowing that it held a special place in her heart and could always bring her comfort and joy, no matter what challenges life may bring."
+

Teardown

PASSED test_streaming_claude 0:00:01.213637

Setup

Call

Captured stdout call
msgs:
+Here's a haiku about Mt. Rainier being tall:
+
+Rainier towers high
+Snowy peak scrapes azure skies
+Nature's majesty
 final:
-Majestic Mt. Rainier,
-Towering high in the sky,
-Awe-inspiring sight.
-
Captured stderr call
[2024-09-05T13:56:12Z INFO  baml_events] Function PromptTestClaude:
-    Client: Claude (claude-3-haiku-20240307) - 967ms. StopReason: "end_turn"
+Here's a haiku about Mt. Rainier being tall:
+
+Rainier towers high
+Snowy peak scrapes azure skies
+Nature's majesty
+
Captured stderr call
[2024-09-21T01:05:16Z INFO  baml_events] Function PromptTestClaude:
+    Client: Sonnet (claude-3-5-sonnet-20240620) - 1209ms. StopReason: "end_turn"
     ---PROMPT---
     [chat] user: Tell me a haiku about Mt Rainier is tall
     
     ---LLM REPLY---
-    Majestic Mt. Rainier,
-    Towering high in the sky,
-    Awe-inspiring sight.
+    Here's a haiku about Mt. Rainier being tall:
+    
+    Rainier towers high
+    Snowy peak scrapes azure skies
+    Nature's majesty
     ---Parsed Response (string)---
-    "Majestic Mt. Rainier,\nTowering high in the sky,\nAwe-inspiring sight."
-

Teardown

PASSED test_streaming_gemini 0:00:09.692834

Setup

Call

Captured stdout call
msgs:
-Barnaby Butterfield, a man of routine, sat on his usual park bench, meticulously unwrapping his usual afternoon snack - a peanut butter and pickle sandwich. He took a bite, the peculiar combination his own brand of comfort. 
+    "Here's a haiku about Mt. Rainier being tall:\n\nRainier towers high\nSnowy peak scrapes azure skies\nNature's majesty"
+

Teardown

PASSED test_streaming_gemini 0:00:09.686897

Setup

Call

Captured stdout call
msgs:
+Dottie Mae squinted at the dusty glass bottles lining the general store shelf.  Each held a dark, fizzy liquid, promising sweet relief from the sweltering Texas heat.  She'd tried them all: sarsaparilla, root beer, even that newfangled Coca-Cola. But none of them quite hit the spot. 
+
+Mr. Johnson, the store owner, leaned against his counter, chewing on a piece of straw. "Something you're lookin' for, Dottie Mae?"
+
+"Just wishin' for a drink that tickled my fancy a little different, Mr. Johnson," she sighed.
+
+Mr. Johnson chuckled, spitting out a piece of straw. "You and me both. Say, did I ever tell you 'bout the time Doc Pepper came through town?"
+
+Dottie Mae's eyes widened. "Doc Pepper? You mean the one who makes them tonics?"
+
+Mr. Johnson nodded. "Came right here with a wagon full of bottles, each one filled with twenty-three flavors. Said it was a cure for all that ails ya."
 
-Suddenly, a crimson blur landed with a gentle thud beside him. It was a can of Dr. Pepper, rolling slightly before settling. Barnaby frowned. He wasn't one for change, and this certainly qualified. He cautiously picked up the can. It was cool to the touch, beads of condensation forming like tiny windows to the dark, fizzy liquid within. Hesitantly, Barnaby popped the top.
+He paused, a mischievous glint in his eye. "Said it could even put a smile on a grumpy ol' coot like me."
 
-The scent was a revelation – a spicy, effervescent aroma that tickled his nose and made his mouth water. Curiosity overriding his usual caution, Barnaby took a tentative sip. His eyes widened. This was no ordinary soda. This was a symphony of flavors – sweet, tangy, with an intriguing hint of something...else. He couldn't quite place it, but it was delicious.
+Dottie Mae laughed. "And did it?"
 
-He finished the can in a flurry of delighted sips, the strange new taste buds awakening on his tongue. For the first time in years, Barnaby's peanut butter and pickle sandwich seemed boring in comparison. 
+Mr. Johnson just winked, grabbed a bottle from beneath the counter, and popped the cap. The scent that wafted out was unlike anything Dottie Mae had ever smelled: fruity, spicy, a hint of something wild.
 
-The next day, Barnaby returned to the park with a spring in his step, two peanut butter and pickle sandwiches tucked away, and a six-pack of Dr. Pepper clutched in his hand. He took a seat on his bench, his heart humming with a quiet anticipation. 
+He poured her a glass.  
 
-From then on, Barnaby's routine included a new element – the unexpected burst of flavor that was Dr. Pepper. It wasn't just a drink; it was a small rebellion against the ordinary, a reminder that even in the most familiar corners of life, a touch of the extraordinary could be found. All it took was a little curiosity, and a willingness to try something new. And maybe, just maybe, a mysterious can of soda left on a park bench. 
+Dottie Mae took a sip, the complex flavors exploding on her tongue.  It was sweet, but with a tang. Familiar, yet wholly unique.  
+
+Her eyes widened.  
+
+"Well, I'll be..."  she began, a slow smile spreading across her face.  This wasn't just a drink. This was an experience. A delicious mystery in every drop.  
+
+Mr. Johnson grinned, taking a swig from his own bottle. "Told ya it was somethin' special."
+
+From that day on, Dottie Mae always kept a bottle of Dr Pepper on hand. And whenever life threw a curveball her way, she'd pour herself a glass, taking a long, slow sip, and remembering the legend of Doc Pepper, and the magic he'd bottled in each and every drop. 
 
 final:
-Barnaby Butterfield, a man of routine, sat on his usual park bench, meticulously unwrapping his usual afternoon snack - a peanut butter and pickle sandwich. He took a bite, the peculiar combination his own brand of comfort. 
+Dottie Mae squinted at the dusty glass bottles lining the general store shelf.  Each held a dark, fizzy liquid, promising sweet relief from the sweltering Texas heat.  She'd tried them all: sarsaparilla, root beer, even that newfangled Coca-Cola. But none of them quite hit the spot. 
+
+Mr. Johnson, the store owner, leaned against his counter, chewing on a piece of straw. "Something you're lookin' for, Dottie Mae?"
+
+"Just wishin' for a drink that tickled my fancy a little different, Mr. Johnson," she sighed.
+
+Mr. Johnson chuckled, spitting out a piece of straw. "You and me both. Say, did I ever tell you 'bout the time Doc Pepper came through town?"
+
+Dottie Mae's eyes widened. "Doc Pepper? You mean the one who makes them tonics?"
+
+Mr. Johnson nodded. "Came right here with a wagon full of bottles, each one filled with twenty-three flavors. Said it was a cure for all that ails ya."
+
+He paused, a mischievous glint in his eye. "Said it could even put a smile on a grumpy ol' coot like me."
+
+Dottie Mae laughed. "And did it?"
+
+Mr. Johnson just winked, grabbed a bottle from beneath the counter, and popped the cap. The scent that wafted out was unlike anything Dottie Mae had ever smelled: fruity, spicy, a hint of something wild.
 
-Suddenly, a crimson blur landed with a gentle thud beside him. It was a can of Dr. Pepper, rolling slightly before settling. Barnaby frowned. He wasn't one for change, and this certainly qualified. He cautiously picked up the can. It was cool to the touch, beads of condensation forming like tiny windows to the dark, fizzy liquid within. Hesitantly, Barnaby popped the top.
+He poured her a glass.  
 
-The scent was a revelation – a spicy, effervescent aroma that tickled his nose and made his mouth water. Curiosity overriding his usual caution, Barnaby took a tentative sip. His eyes widened. This was no ordinary soda. This was a symphony of flavors – sweet, tangy, with an intriguing hint of something...else. He couldn't quite place it, but it was delicious.
+Dottie Mae took a sip, the complex flavors exploding on her tongue.  It was sweet, but with a tang. Familiar, yet wholly unique.  
 
-He finished the can in a flurry of delighted sips, the strange new taste buds awakening on his tongue. For the first time in years, Barnaby's peanut butter and pickle sandwich seemed boring in comparison. 
+Her eyes widened.  
 
-The next day, Barnaby returned to the park with a spring in his step, two peanut butter and pickle sandwiches tucked away, and a six-pack of Dr. Pepper clutched in his hand. He took a seat on his bench, his heart humming with a quiet anticipation. 
+"Well, I'll be..."  she began, a slow smile spreading across her face.  This wasn't just a drink. This was an experience. A delicious mystery in every drop.  
 
-From then on, Barnaby's routine included a new element – the unexpected burst of flavor that was Dr. Pepper. It wasn't just a drink; it was a small rebellion against the ordinary, a reminder that even in the most familiar corners of life, a touch of the extraordinary could be found. All it took was a little curiosity, and a willingness to try something new. And maybe, just maybe, a mysterious can of soda left on a park bench. 
+Mr. Johnson grinned, taking a swig from his own bottle. "Told ya it was somethin' special."
 
-
Captured stderr call
[2024-09-05T13:56:21Z INFO  baml_events] Function TestGemini:
-    Client: Gemini (gemini-1.5-pro-001) - 9678ms. StopReason: Stop
+From that day on, Dottie Mae always kept a bottle of Dr Pepper on hand. And whenever life threw a curveball her way, she'd pour herself a glass, taking a long, slow sip, and remembering the legend of Doc Pepper, and the magic he'd bottled in each and every drop. 
+
+
Captured stderr call
[2024-09-21T01:05:26Z INFO  baml_events] Function TestGemini:
+    Client: Gemini (gemini-1.5-pro-001) - 9681ms. StopReason: Stop
     ---PROMPT---
     [chat] user: Write a nice short story about Dr.Pepper
     
     ---LLM REPLY---
-    Barnaby Butterfield, a man of routine, sat on his usual park bench, meticulously unwrapping his usual afternoon snack - a peanut butter and pickle sandwich. He took a bite, the peculiar combination his own brand of comfort. 
+    Dottie Mae squinted at the dusty glass bottles lining the general store shelf.  Each held a dark, fizzy liquid, promising sweet relief from the sweltering Texas heat.  She'd tried them all: sarsaparilla, root beer, even that newfangled Coca-Cola. But none of them quite hit the spot. 
+    
+    Mr. Johnson, the store owner, leaned against his counter, chewing on a piece of straw. "Something you're lookin' for, Dottie Mae?"
+    
+    "Just wishin' for a drink that tickled my fancy a little different, Mr. Johnson," she sighed.
+    
+    Mr. Johnson chuckled, spitting out a piece of straw. "You and me both. Say, did I ever tell you 'bout the time Doc Pepper came through town?"
+    
+    Dottie Mae's eyes widened. "Doc Pepper? You mean the one who makes them tonics?"
+    
+    Mr. Johnson nodded. "Came right here with a wagon full of bottles, each one filled with twenty-three flavors. Said it was a cure for all that ails ya."
+    
+    He paused, a mischievous glint in his eye. "Said it could even put a smile on a grumpy ol' coot like me."
     
-    Suddenly, a crimson blur landed with a gentle thud beside him. It was a can of Dr. Pepper, rolling slightly before settling. Barnaby frowned. He wasn't one for change, and this certainly qualified. He cautiously picked up the can. It was cool to the touch, beads of condensation forming like tiny windows to the dark, fizzy liquid within. Hesitantly, Barnaby popped the top.
+    Dottie Mae laughed. "And did it?"
     
-    The scent was a revelation – a spicy, effervescent aroma that tickled his nose and made his mouth water. Curiosity overriding his usual caution, Barnaby took a tentative sip. His eyes widened. This was no ordinary soda. This was a symphony of flavors – sweet, tangy, with an intriguing hint of something...else. He couldn't quite place it, but it was delicious.
+    Mr. Johnson just winked, grabbed a bottle from beneath the counter, and popped the cap. The scent that wafted out was unlike anything Dottie Mae had ever smelled: fruity, spicy, a hint of something wild.
     
-    He finished the can in a flurry of delighted sips, the strange new taste buds awakening on his tongue. For the first time in years, Barnaby's peanut butter and pickle sandwich seemed boring in comparison. 
+    He poured her a glass.  
     
-    The next day, Barnaby returned to the park with a spring in his step, two peanut butter and pickle sandwiches tucked away, and a six-pack of Dr. Pepper clutched in his hand. He took a seat on his bench, his heart humming with a quiet anticipation. 
+    Dottie Mae took a sip, the complex flavors exploding on her tongue.  It was sweet, but with a tang. Familiar, yet wholly unique.  
     
-    From then on, Barnaby's routine included a new element – the unexpected burst of flavor that was Dr. Pepper. It wasn't just a drink; it was a small rebellion against the ordinary, a reminder that even in the most familiar corners of life, a touch of the extraordinary could be found. All it took was a little curiosity, and a willingness to try something new. And maybe, just maybe, a mysterious can of soda left on a park bench. 
+    Her eyes widened.  
+    
+    "Well, I'll be..."  she began, a slow smile spreading across her face.  This wasn't just a drink. This was an experience. A delicious mystery in every drop.  
+    
+    Mr. Johnson grinned, taking a swig from his own bottle. "Told ya it was somethin' special."
+    
+    From that day on, Dottie Mae always kept a bottle of Dr Pepper on hand. And whenever life threw a curveball her way, she'd pour herself a glass, taking a long, slow sip, and remembering the legend of Doc Pepper, and the magic he'd bottled in each and every drop. 
     
     ---Parsed Response (string)---
-    "Barnaby Butterfield, a man of routine, sat on his usual park bench, meticulously unwrapping his usual afternoon snack - a peanut butter and pickle sandwich. He took a bite, the peculiar combination his own brand of comfort. \n\nSuddenly, a crimson blur landed with a gentle thud beside him. It was a can of Dr. Pepper, rolling slightly before settling. Barnaby frowned. He wasn't one for change, and this certainly qualified. He cautiously picked up the can. It was cool to the touch, beads of condensation forming like tiny windows to the dark, fizzy liquid within. Hesitantly, Barnaby popped the top.\n\nThe scent was a revelation – a spicy, effervescent aroma that tickled his nose and made his mouth water. Curiosity overriding his usual caution, Barnaby took a tentative sip. His eyes widened. This was no ordinary soda. This was a symphony of flavors – sweet, tangy, with an intriguing hint of something...else. He couldn't quite place it, but it was delicious.\n\nHe finished the can in a flurry of delighted sips, the strange new taste buds awakening on his tongue. For the first time in years, Barnaby's peanut butter and pickle sandwich seemed boring in comparison. \n\nThe next day, Barnaby returned to the park with a spring in his step, two peanut butter and pickle sandwiches tucked away, and a six-pack of Dr. Pepper clutched in his hand. He took a seat on his bench, his heart humming with a quiet anticipation. \n\nFrom then on, Barnaby's routine included a new element – the unexpected burst of flavor that was Dr. Pepper. It wasn't just a drink; it was a small rebellion against the ordinary, a reminder that even in the most familiar corners of life, a touch of the extraordinary could be found. All it took was a little curiosity, and a willingness to try something new. And maybe, just maybe, a mysterious can of soda left on a park bench. \n"
-

Teardown

PASSED test_tracing_async_only 0:00:04.844982

Setup

Call

Captured stdout call
STATS TraceStats(failed=0, started=15, finalized=15, submitted=15, sent=15, done=15)
-
Captured stderr call
[2024-09-05T13:56:23Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 929ms. StopReason: stop
+    "Dottie Mae squinted at the dusty glass bottles lining the general store shelf.  Each held a dark, fizzy liquid, promising sweet relief from the sweltering Texas heat.  She'd tried them all: sarsaparilla, root beer, even that newfangled Coca-Cola. But none of them quite hit the spot. \n\nMr. Johnson, the store owner, leaned against his counter, chewing on a piece of straw. \"Something you're lookin' for, Dottie Mae?\"\n\n\"Just wishin' for a drink that tickled my fancy a little different, Mr. Johnson,\" she sighed.\n\nMr. Johnson chuckled, spitting out a piece of straw. \"You and me both. Say, did I ever tell you 'bout the time Doc Pepper came through town?\"\n\nDottie Mae's eyes widened. \"Doc Pepper? You mean the one who makes them tonics?\"\n\nMr. Johnson nodded. \"Came right here with a wagon full of bottles, each one filled with twenty-three flavors. Said it was a cure for all that ails ya.\"\n\nHe paused, a mischievous glint in his eye. \"Said it could even put a smile on a grumpy ol' coot like me.\"\n\nDottie Mae laughed. \"And did it?\"\n\nMr. Johnson just winked, grabbed a bottle from beneath the counter, and popped the cap. The scent that wafted out was unlike anything Dottie Mae had ever smelled: fruity, spicy, a hint of something wild.\n\nHe poured her a glass.  \n\nDottie Mae took a sip, the complex flavors exploding on her tongue.  It was sweet, but with a tang. Familiar, yet wholly unique.  \n\nHer eyes widened.  \n\n\"Well, I'll be...\"  she began, a slow smile spreading across her face.  This wasn't just a drink. This was an experience. A delicious mystery in every drop.  \n\nMr. Johnson grinned, taking a swig from his own bottle. \"Told ya it was somethin' special.\"\n\nFrom that day on, Dottie Mae always kept a bottle of Dr Pepper on hand. And whenever life threw a curveball her way, she'd pour herself a glass, taking a long, slow sip, and remembering the legend of Doc Pepper, and the magic he'd bottled in each and every drop. \n"
+

Teardown

PASSED test_tracing_async_only 0:00:06.153402

Setup

Call

Captured stdout call
STATS TraceStats(failed=0, started=15, finalized=15, submitted=15, sent=15, done=15)
+
Captured stderr call
[2024-09-21T01:05:27Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 581ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -817,16 +858,16 @@
     
     ---LLM REPLY---
     {
-      "prop1": "Hello, World!",
+      "prop1": "Let's return some data!",
       "prop2": 540
     }
     ---Parsed Response (class TestOutputClass)---
     {
-      "prop1": "Hello, World!",
+      "prop1": "Let's return some data!",
       "prop2": 540
     }
-[2024-09-05T13:56:23Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 717ms. StopReason: stop
+[2024-09-21T01:05:27Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 481ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -841,16 +882,16 @@
     
     ---LLM REPLY---
     {
-      "prop1": "example",
+      "prop1": "Hello, World!",
       "prop2": 540
     }
     ---Parsed Response (class TestOutputClass)---
     {
-      "prop1": "example",
+      "prop1": "Hello, World!",
       "prop2": 540
     }
-[2024-09-05T13:56:24Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 689ms. StopReason: stop
+[2024-09-21T01:05:28Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 493ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -873,8 +914,8 @@
       "prop1": "Hello, World!",
       "prop2": 540
     }
-[2024-09-05T13:56:26Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 647ms. StopReason: stop
+[2024-09-21T01:05:32Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1862ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -889,17 +930,17 @@
     
     ---LLM REPLY---
     {
-      "prop1": "This is a sample string",
+      "prop1": "Hello, World!",
       "prop2": 540
     }
     ---Parsed Response (class TestOutputClass)---
     {
-      "prop1": "This is a sample string",
+      "prop1": "Hello, World!",
       "prop2": 540
     }
-

Teardown

PASSED test_tracing_sync 0:00:00.001338

Setup

Call

Teardown

PASSED test_tracing_thread_pool 0:00:01.454857

Setup

Call

Teardown

PASSED test_tracing_thread_pool_async 0:00:14.243726

Setup

Call

Teardown

PASSED test_tracing_async_gather 0:00:01.399249

Setup

Call

Teardown

PASSED test_tracing_async_gather_top_level 0:00:01.500576

Setup

Call

Teardown

PASSED test_dynamic 0:00:00.987913

Setup

Call

Captured stdout call
{'name': 'Harrison', 'hair_color': 'BLACK', 'last_name': [], 'height': 1.83, 'hobbies': ['SPORTS']}
-
Captured stderr call
[2024-09-05T13:56:46Z INFO  baml_events] Function ExtractPeople:
-    Client: GPT4 (gpt-4o-2024-05-13) - 978ms. StopReason: stop
+

Teardown

PASSED test_tracing_sync 0:00:00.000352

Setup

Call

Teardown

PASSED test_tracing_thread_pool 0:00:01.355378

Setup

Call

Teardown

PASSED test_tracing_thread_pool_async 0:00:14.118650

Setup

Call

Teardown

PASSED test_tracing_async_gather 0:00:01.441589

Setup

Call

Teardown

PASSED test_tracing_async_gather_top_level 0:00:01.402292

Setup

Call

Teardown

PASSED test_dynamic 0:00:00.721794

Setup

Call

Captured stdout call
{'name': 'Harrison', 'hair_color': 'BLACK', 'last_name': [], 'height': 1.83, 'hobbies': ['SPORTS']}
+
Captured stderr call
[2024-09-21T01:05:51Z INFO  baml_events] Function ExtractPeople:
+    Client: GPT4 (gpt-4o-2024-05-13) - 717ms. StopReason: stop
     ---PROMPT---
     [chat] system: You are an expert extraction algorithm. Only extract relevant information from the text. If you do not know the value of an attribute asked to extract, return null for the attribute's value.
     
@@ -920,6 +961,7 @@
     user: My name is Harrison. My hair is black and I'm 6 feet tall. I'm pretty good around the hoop.
     
     ---LLM REPLY---
+    ```json
     [
       {
         "name": "Harrison",
@@ -929,6 +971,7 @@
         "hobbies": ["sports"]
       }
     ]
+    ```
     ---Parsed Response (list<class Person>)---
     [
       {
@@ -941,10 +984,10 @@
         ]
       }
     ]
-

Teardown

PASSED test_dynamic_class_output 0:00:01.196220

Setup

Call

Captured stdout call
[]
+

Teardown

PASSED test_dynamic_class_output 0:00:01.293472

Setup

Call

Captured stdout call
[]
 {"hair_color":"black"}
-
Captured stderr call
[2024-09-05T13:56:46Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 665ms. StopReason: stop
+
Captured stderr call
[2024-09-21T01:05:51Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 413ms. StopReason: stop
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -963,8 +1006,8 @@
     {
       "hair_color": "black"
     }
-[2024-09-05T13:56:47Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 516ms. StopReason: stop
+[2024-09-21T01:05:52Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 875ms. StopReason: stop
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -983,9 +1026,9 @@
     {
       "hair_color": "black"
     }
-

Teardown

PASSED test_dynamic_class_nested_output_no_stream 0:00:01.081646

Setup

Call

Captured stdout call
{"name":{"first_name":"Mark","last_name":"Gonzalez","middle_name":null},"address":null,"hair_color":"black","height":6.0}
-
Captured stderr call
[2024-09-05T13:56:48Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1074ms. StopReason: stop
+

Teardown

PASSED test_dynamic_class_nested_output_no_stream 0:00:00.870794

Setup

Call

Captured stdout call
{"name":{"first_name":"Mark","last_name":"Gonzalez","middle_name":null},"address":null,"hair_color":"black","height":6.0}
+
Captured stderr call
[2024-09-21T01:05:53Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 866ms. StopReason: stop
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1013,7 +1056,7 @@
       },
       "address": null,
       "hairColor": "black",
-      "height": 6
+      "height": 6.0
     }
     ---Parsed Response (class DynamicOutput)---
     {
@@ -1026,7 +1069,7 @@
       "hair_color": "black",
       "height": 6.0
     }
-

Teardown

PASSED test_dynamic_class_nested_output_stream 0:00:00.833118

Setup

Call

Captured stdout call
streamed  name=None hair_color=None
+

Teardown

PASSED test_dynamic_class_nested_output_stream 0:00:00.702606

Setup

Call

Captured stdout call
streamed  name=None hair_color=None
 streamed  {'name': None, 'hair_color': None}
 streamed  name=None hair_color=None
 streamed  {'name': None, 'hair_color': None}
@@ -1103,8 +1146,8 @@
 streamed  name={'first_name': 'Mark', 'last_name': 'Gonzalez'} hair_color='black'
 streamed  {'name': {'first_name': 'Mark', 'last_name': 'Gonzalez'}, 'hair_color': 'black'}
 {"name":{"first_name":"Mark","last_name":"Gonzalez"},"hair_color":"black"}
-
Captured stderr call
[2024-09-05T13:56:49Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 826ms. StopReason: stop
+
Captured stderr call
[2024-09-21T01:05:54Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 698ms. StopReason: stop
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1135,7 +1178,7 @@
       },
       "hair_color": "black"
     }
-

Teardown

PASSED test_stream_dynamic_class_output 0:00:01.001410

Setup

Call

Captured stdout call
[]
+

Teardown

PASSED test_stream_dynamic_class_output 0:00:00.926305

Setup

Call

Captured stdout call
[]
 streamed  {'hair_color': None}
 streamed  {'hair_color': None}
 streamed  {'hair_color': None}
@@ -1152,8 +1195,8 @@
 final  hair_color='black'
 final  {'hair_color': 'black'}
 final  {"hair_color":"black"}
-
Captured stderr call
[2024-09-05T13:56:50Z INFO  baml_events] Function MyFunc:
-    Client: MyClient (gpt-4o-mini-2024-07-18) - 991ms. StopReason: stop
+
Captured stderr call
[2024-09-21T01:05:55Z INFO  baml_events] Function MyFunc:
+    Client: MyClient (gpt-4o-mini-2024-07-18) - 921ms. StopReason: stop
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1174,12 +1217,12 @@
     {
       "hair_color": "black"
     }
-

Teardown

PASSED test_dynamic_inputs_list2 0:00:01.514556

Setup

Call

Captured stderr call
[2024-09-05T13:56:51Z INFO  baml_events] Function DynamicListInputOutput:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1505ms. StopReason: stop
+

Teardown

PASSED test_dynamic_inputs_list2 0:00:01.262134

Setup

Call

Captured stderr call
[2024-09-21T01:05:56Z INFO  baml_events] Function DynamicListInputOutput:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1258ms. StopReason: stop
     ---PROMPT---
     [chat] system: Here is some input data:
     ----
-    [{"testKey": "myTest", "new_key": "hi1", "blah": {"nestedKey1": "nestedVal"}}, {"new_key": "hi", "testKey": "myTest", "blah": {"nestedKey1": "nestedVal"}}]
+    [{"new_key": "hi1", "testKey": "myTest", "blah": {"nestedKey1": "nestedVal"}}, {"testKey": "myTest", "blah": {"nestedKey1": "nestedVal"}, "new_key": "hi"}]
     ----
     
     Extract the information.
@@ -1196,20 +1239,20 @@
     
     ---LLM REPLY---
     [
-      {
-        "testKey": "myTest",
-        "new_key": "hi1",
-        "blah": {
-          "nestedKey1": "nestedVal"
-        }
-      },
-      {
-        "testKey": "myTest",
-        "new_key": "hi",
-        "blah": {
-          "nestedKey1": "nestedVal"
+        {
+            "testKey": "myTest",
+            "new_key": "hi1",
+            "blah": {
+                "nestedKey1": "nestedVal"
+            }
+        },
+        {
+            "testKey": "myTest",
+            "new_key": "hi",
+            "blah": {
+                "nestedKey1": "nestedVal"
+            }
         }
-      }
     ]
     ---Parsed Response (list<class DynInputOutput>)---
     [
@@ -1228,12 +1271,12 @@
         }
       }
     ]
-

Teardown

PASSED test_dynamic_inputs_list 0:00:01.666411

Setup

Call

Captured stderr call
[2024-09-05T13:56:53Z INFO  baml_events] Function DynamicListInputOutput:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1659ms. StopReason: stop
+

Teardown

PASSED test_dynamic_inputs_list 0:00:01.079327

Setup

Call

Captured stderr call
[2024-09-21T01:05:57Z INFO  baml_events] Function DynamicListInputOutput:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1075ms. StopReason: stop
     ---PROMPT---
     [chat] system: Here is some input data:
     ----
-    [{"testKey": "myTest", "new_key": "hi", "blah": {"nestedKey1": "nestedVal"}}, {"new_key": "hi", "blah": {"nestedKey1": "nestedVal"}, "testKey": "myTest"}]
+    [{"new_key": "hi", "blah": {"nestedKey1": "nestedVal"}, "testKey": "myTest"}, {"new_key": "hi", "blah": {"nestedKey1": "nestedVal"}, "testKey": "myTest"}]
     ----
     
     Extract the information.
@@ -1250,20 +1293,20 @@
     
     ---LLM REPLY---
     [
-      {
-        "testKey": "myTest",
-        "new_key": "hi",
-        "blah": {
-          "nestedKey1": "nestedVal"
-        }
-      },
-      {
-        "testKey": "myTest",
-        "new_key": "hi",
-        "blah": {
-          "nestedKey1": "nestedVal"
+        {
+            "testKey": "myTest",
+            "new_key": "hi",
+            "blah": {
+                "nestedKey1": "nestedVal"
+            }
+        },
+        {
+            "testKey": "myTest",
+            "new_key": "hi",
+            "blah": {
+                "nestedKey1": "nestedVal"
+            }
         }
-      }
     ]
     ---Parsed Response (list<class DynInputOutput>)---
     [
@@ -1282,12 +1325,12 @@
         }
       }
     ]
-

Teardown

PASSED test_dynamic_output_map 0:00:01.334585

Setup

Call

Captured stdout call
[]
-final  hair_color='black' attributes={'height': '6 feet', 'eye_color': 'blue', 'facial_hair': 'beard'}
-final  {'hair_color': 'black', 'attributes': {'height': '6 feet', 'eye_color': 'blue', 'facial_hair': 'beard'}}
-final  {"hair_color":"black","attributes":{"height":"6 feet","eye_color":"blue","facial_hair":"beard"}}
-
Captured stderr call
[2024-09-05T13:56:54Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1328ms. StopReason: stop
+

Teardown

PASSED test_dynamic_output_map 0:00:00.732284

Setup

Call

Captured stdout call
[]
+final  hair_color='black' attributes={'eye_color': 'blue', 'facial_hair': 'beard'}
+final  {'hair_color': 'black', 'attributes': {'eye_color': 'blue', 'facial_hair': 'beard'}}
+final  {"hair_color":"black","attributes":{"eye_color":"blue","facial_hair":"beard"}}
+
Captured stderr call
[2024-09-21T01:05:58Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 729ms. StopReason: stop
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1304,7 +1347,6 @@
     {
       "hair_color": "black",
       "attributes": {
-        "height": "6 feet",
         "eye_color": "blue",
         "facial_hair": "beard"
       }
@@ -1313,20 +1355,19 @@
     {
       "hair_color": "black",
       "attributes": {
-        "height": "6 feet",
         "eye_color": "blue",
         "facial_hair": "beard"
       }
     }
-

Teardown

PASSED test_dynamic_output_union 0:00:02.864426

Setup

Call

Captured stdout call
[]
-final  hair_color='black' attributes={'eye_color': 'blue', 'facial_hair': 'beard', 'age': '30'} height={'feet': 6.0, 'inches': None}
-final  {'hair_color': 'black', 'attributes': {'eye_color': 'blue', 'facial_hair': 'beard', 'age': '30'}, 'height': {'feet': 6.0, 'inches': None}}
-final  {"hair_color":"black","attributes":{"eye_color":"blue","facial_hair":"beard","age":"30"},"height":{"feet":6.0,"inches":null}}
-final  hair_color='black' attributes={'eye_color': 'blue', 'facial_hair': 'beard', 'age': '30'} height={'meters': 1.8}
-final  {'hair_color': 'black', 'attributes': {'eye_color': 'blue', 'facial_hair': 'beard', 'age': '30'}, 'height': {'meters': 1.8}}
-final  {"hair_color":"black","attributes":{"eye_color":"blue","facial_hair":"beard","age":"30"},"height":{"meters":1.8}}
-
Captured stderr call
[2024-09-05T13:56:56Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1306ms. StopReason: stop
+

Teardown

PASSED test_dynamic_output_union 0:00:02.030966

Setup

Call

Captured stdout call
[]
+final  hair_color='black' attributes={'eye_color': 'blue', 'facial_hair': 'beard'} height={'feet': 6.0, 'inches': None}
+final  {'hair_color': 'black', 'attributes': {'eye_color': 'blue', 'facial_hair': 'beard'}, 'height': {'feet': 6.0, 'inches': None}}
+final  {"hair_color":"black","attributes":{"eye_color":"blue","facial_hair":"beard"},"height":{"feet":6.0,"inches":null}}
+final  hair_color='black' attributes={'eye_color': 'blue', 'facial_hair': 'beard', 'age': '30 years old'} height={'meters': 1.8}
+final  {'hair_color': 'black', 'attributes': {'eye_color': 'blue', 'facial_hair': 'beard', 'age': '30 years old'}, 'height': {'meters': 1.8}}
+final  {"hair_color":"black","attributes":{"eye_color":"blue","facial_hair":"beard","age":"30 years old"},"height":{"meters":1.8}}
+
Captured stderr call
[2024-09-21T01:05:59Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 972ms. StopReason: stop
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1350,8 +1391,7 @@
       "hair_color": "black",
       "attributes": {
         "eye_color": "blue",
-        "facial_hair": "beard",
-        "age": "30"
+        "facial_hair": "beard"
       },
       "height": {
         "feet": 6,
@@ -1363,16 +1403,15 @@
       "hair_color": "black",
       "attributes": {
         "eye_color": "blue",
-        "facial_hair": "beard",
-        "age": "30"
+        "facial_hair": "beard"
       },
       "height": {
         "feet": 6.0,
         "inches": null
       }
     }
-[2024-09-05T13:56:57Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1537ms. StopReason: stop
+[2024-09-21T01:06:00Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1051ms. StopReason: stop
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1397,7 +1436,7 @@
       "attributes": {
         "eye_color": "blue",
         "facial_hair": "beard",
-        "age": "30"
+        "age": "30 years old"
       },
       "height": {
         "meters": 1.8
@@ -1409,13 +1448,13 @@
       "attributes": {
         "eye_color": "blue",
         "facial_hair": "beard",
-        "age": "30"
+        "age": "30 years old"
       },
       "height": {
         "meters": 1.8
       }
     }
-

Teardown

FAILED test_nested_class_streaming 0:00:02.799304

baml_py.BamlValidationError: Parsing error: Client: Ollama (llama2) - 2784ms. StopReason: stop
+

Teardown

FAILED test_nested_class_streaming 0:00:01.508557

baml_py.BamlValidationError: Parsing error: Client: Ollama (llama2) - 1503ms. StopReason: stop
 ---PROMPT---
 [chat] system: Return a made up json blob that matches this schema:
 Answer in JSON using this schema:
@@ -1435,29 +1474,21 @@
 JSON:
 
 ---LLM REPLY---
-Here is a made-up JSON blob that matches the provided schema:
-
 {
-  "prop1": "example value",
+  "prop1": "value1",
   "prop2": {
-    "prop1": "inner value",
-    "prop2": "outer value",
+    "prop1": "inner value1",
+    "prop2": "value2",
     "inner": {
-      "prop3": 3.14,
-      "prop2": "inner value"
-    }
-  }
+      "prop3": 4.5,
+      "prop4": 8.7,
+    },
+  },
 }
-
-Note that the JSON blob contains a nested object with multiple levels of nesting, which should be possible according to the schema provided. Also, I've included an integer value in the inner object and a floating-point number in the outer object, both of which are allowed by the schema.
 ---Parsed Response---
 Failed to coerce value: Error parsing '': Unparsed field: prop2
   Error parsing 'prop2': Unparsed field: inner
-    Error parsing 'prop2.inner': Unparsed field: prop2
-      Error parsing 'prop2.inner.prop2': Expected int, got inner value.
-      String(
-          "inner value",
-      )

Setup

Call

@pytest.mark.asyncio
+    Error parsing 'prop2.inner': Missing required field: prop2

Setup

Call

@pytest.mark.asyncio
     async def test_nested_class_streaming():
         stream = b.stream.FnOutputClassNested(
             input="My name is Harrison. My hair is black and I'm 6 feet tall."
@@ -1469,14 +1500,14 @@
 >       final = await stream.get_final_response()
 
 tests/test_functions.py:861: 
-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 
-self = 
+self = 
 
     async def get_final_response(self):
         final = self.__drive_to_completion_in_bg()
 >       return self.__final_coerce((await asyncio.wrap_future(final)).parsed())
-E       baml_py.BamlValidationError: Parsing error: Client: Ollama (llama2) - 2784ms. StopReason: stop
+E       baml_py.BamlValidationError: Parsing error: Client: Ollama (llama2) - 1503ms. StopReason: stop
 E       ---PROMPT---
 E       [chat] system: Return a made up json blob that matches this schema:
 E       Answer in JSON using this schema:
@@ -1496,29 +1527,21 @@
 E       JSON:
 E       
 E       ---LLM REPLY---
-E       Here is a made-up JSON blob that matches the provided schema:
-E       
 E       {
-E         "prop1": "example value",
+E         "prop1": "value1",
 E         "prop2": {
-E           "prop1": "inner value",
-E           "prop2": "outer value",
+E           "prop1": "inner value1",
+E           "prop2": "value2",
 E           "inner": {
-E             "prop3": 3.14,
-E             "prop2": "inner value"
-E           }
-E         }
+E             "prop3": 4.5,
+E             "prop4": 8.7,
+E           },
+E         },
 E       }
-E       
-E       Note that the JSON blob contains a nested object with multiple levels of nesting, which should be possible according to the schema provided. Also, I've included an integer value in the inner object and a floating-point number in the outer object, both of which are allowed by the schema.
 E       ---Parsed Response---
 E       Failed to coerce value: Error parsing '': Unparsed field: prop2
 E         Error parsing 'prop2': Unparsed field: inner
-E           Error parsing 'prop2.inner': Unparsed field: prop2
-E             Error parsing 'prop2.inner.prop2': Expected int, got inner value.
-E             String(
-E                 "inner value",
-E             )
+E           Error parsing 'prop2.inner': Missing required field: prop2
 
 ../../engine/language_client_python/python_src/baml_py/stream.py:81: BamlValidationError
Captured stdout call
streamed  {'prop1': None, 'prop2': None}
 streamed  {'prop1': None, 'prop2': None}
@@ -1527,153 +1550,77 @@
 streamed  {'prop1': None, 'prop2': None}
 streamed  {'prop1': None, 'prop2': None}
 streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
-streamed  {'prop1': None, 'prop2': None}
 streamed  {'prop1': '', 'prop2': None}
-streamed  {'prop1': 'example', 'prop2': None}
-streamed  {'prop1': 'example value', 'prop2': None}
-streamed  {'prop1': 'example value', 'prop2': None}
-streamed  {'prop1': 'example value', 'prop2': None}
-streamed  {'prop1': 'example value', 'prop2': None}
-streamed  {'prop1': 'example value', 'prop2': None}
-streamed  {'prop1': 'example value', 'prop2': None}
-streamed  {'prop1': 'example value', 'prop2': None}
-streamed  {'prop1': 'example value', 'prop2': None}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': '', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': '', 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer', 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': None}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.0}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.0}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.1}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-streamed  {'prop1': 'example value', 'prop2': {'prop1': 'inner value', 'prop2': 'outer value', 'inner': {'prop2': None, 'prop3': 3.14}}}
-
Captured stderr call
[2024-09-05T13:57:00Z WARN  baml_events] Function FnOutputClassNested:
-    Client: Ollama (llama2) - 2784ms. StopReason: stop
+streamed  {'prop1': 'value', 'prop2': None}
+streamed  {'prop1': 'value1', 'prop2': None}
+streamed  {'prop1': 'value1', 'prop2': None}
+streamed  {'prop1': 'value1', 'prop2': None}
+streamed  {'prop1': 'value1', 'prop2': None}
+streamed  {'prop1': 'value1', 'prop2': None}
+streamed  {'prop1': 'value1', 'prop2': None}
+streamed  {'prop1': 'value1', 'prop2': None}
+streamed  {'prop1': 'value1', 'prop2': None}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': '', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': None, 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': '', 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value', 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': None}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.0}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.0}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+streamed  {'prop1': 'value1', 'prop2': {'prop1': 'inner value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': 4.5}}}
+
Captured stderr call
[2024-09-21T01:06:01Z WARN  baml_events] Function FnOutputClassNested:
+    Client: Ollama (llama2) - 1503ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a made up json blob that matches this schema:
     Answer in JSON using this schema:
@@ -1693,31 +1640,23 @@
     JSON:
     
     ---LLM REPLY---
-    Here is a made-up JSON blob that matches the provided schema:
-    
     {
-      "prop1": "example value",
+      "prop1": "value1",
       "prop2": {
-        "prop1": "inner value",
-        "prop2": "outer value",
+        "prop1": "inner value1",
+        "prop2": "value2",
         "inner": {
-          "prop3": 3.14,
-          "prop2": "inner value"
-        }
-      }
+          "prop3": 4.5,
+          "prop4": 8.7,
+        },
+      },
     }
-    
-    Note that the JSON blob contains a nested object with multiple levels of nesting, which should be possible according to the schema provided. Also, I've included an integer value in the inner object and a floating-point number in the outer object, both of which are allowed by the schema.
     ---Parsed Response (Error)---
     Failed to coerce value: Error parsing '<root>': Unparsed field: prop2
       Error parsing 'prop2': Unparsed field: inner
-        Error parsing 'prop2.inner': Unparsed field: prop2
-          Error parsing 'prop2.inner.prop2': Expected int, got inner value.
-          String(
-              "inner value",
-          )
-

Teardown

PASSED test_dynamic_clients 0:00:00.566513

Setup

Call

Captured stderr call
[2024-09-05T13:57:01Z INFO  baml_events] Function ExpectFailure:
-    Client: MyClient (gpt-3.5-turbo-0125) - 560ms. StopReason: stop
+        Error parsing 'prop2.inner': Missing required field: prop2
+

Teardown

PASSED test_dynamic_clients 0:00:00.388455

Setup

Call

Captured stderr call
[2024-09-21T01:06:02Z INFO  baml_events] Function ExpectFailure:
+    Client: MyClient (gpt-3.5-turbo-0125) - 386ms. StopReason: stop
     ---PROMPT---
     [chat] system: What is the capital of England?
     
@@ -1725,12 +1664,12 @@
     The capital of England is London.
     ---Parsed Response (string)---
     "The capital of England is London."
-

Teardown

PASSED test_event_log_hook 0:00:01.081952

Setup

Call

Captured stdout call
Event log hook1: 
+

Teardown

PASSED test_event_log_hook 0:00:00.921356

Setup

Call

Captured stdout call
Event log hook1: 
 Event log event  BamlLogEvent {
     metadata: {
-        event_id: "73aa1cd4-9804-4a92-98b1-ec6b63eb902a",
+        event_id: "22343573-7d9c-47da-9c8d-d590b75a8c34",
         parent_id: None,
-        root_event_id: "73aa1cd4-9804-4a92-98b1-ec6b63eb902a"
+        root_event_id: "22343573-7d9c-47da-9c8d-d590b75a8c34"
     },
     prompt: "[
   {
@@ -1744,10 +1683,10 @@
 ]",
     raw_output: "["a", "b", "c"]",
     parsed_output: "["a", "b", "c"]",
-    start_time: "2024-09-05T13:57:01.435Z"
+    start_time: "2024-09-21T01:06:02.664Z"
 }
-
Captured stderr call
[2024-09-05T13:57:01Z INFO  baml_events] Function TestFnNamedArgsSingleStringList:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 458ms. StopReason: stop
+
Captured stderr call
[2024-09-21T01:06:03Z INFO  baml_events] Function TestFnNamedArgsSingleStringList:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 391ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return this value back to me: ["a", "b", "c"]
     
@@ -1755,7 +1694,7 @@
     ["a", "b", "c"]
     ---Parsed Response (string)---
     "[\"a\", \"b\", \"c\"]"
-

Teardown

PASSED test_aws_bedrock 0:00:01.842854

Setup

Call

Captured stdout call
streamed  'Here'
+

Teardown

PASSED test_aws_bedrock 0:00:01.874516

Setup

Call

Captured stdout call
streamed  'Here'
 streamed  'Here is'
 streamed  'Here is a'
 streamed  'Here is a short'
@@ -1768,115 +1707,117 @@
 streamed  'Here is a short story about lightning in a rock:'
 streamed  'Here is a short story about lightning in a rock:\n\nThe'
 streamed  'Here is a short story about lightning in a rock:\n\nThe Spark'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Spark Within'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Spark Within\n\nAm'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hi'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hike'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the w'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding'
-streamed  'ere is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail'
-streamed  're is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail,'
-streamed  's a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her'
-streamed  'ort story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots'
-streamed  't story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots c'
-streamed  'tory about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crun'
-streamed  'about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crunching'
-streamed  'ut lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crunching on'
-streamed  'ightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crunching on the'
-streamed  'ng in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crunching on the loose'
-streamed  'in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crunching on the loose gr'
-streamed  ' rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crunching on the loose gravel'
-streamed  'rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crunching on the loose gravel.'
-streamed  ':\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crunching on the loose gravel. The'
-streamed  'he Spark Within\n\nAmelia hiked up the winding trail, her boots crunching on the loose gravel. The sun'
-streamed  'ark Within\n\nAmelia hiked up the winding trail, her boots crunching on the loose gravel. The sun beat'
-streamed  'ithin\n\nAmelia hiked up the winding trail, her boots crunching on the loose gravel. The sun beat down'
-streamed  'n\n\nAmelia hiked up the winding trail, her boots crunching on the loose gravel. The sun beat down rel'
-streamed  'Amelia hiked up the winding trail, her boots crunching on the loose gravel. The sun beat down relent'
-streamed  ' hiked up the winding trail, her boots crunching on the loose gravel. The sun beat down relentlessly'
-streamed  'hiked up the winding trail, her boots crunching on the loose gravel. The sun beat down relentlessly,'
-streamed  ' the winding trail, her boots crunching on the loose gravel. The sun beat down relentlessly, causing'
-streamed  'inding trail, her boots crunching on the loose gravel. The sun beat down relentlessly, causing persp'
-streamed  'trail, her boots crunching on the loose gravel. The sun beat down relentlessly, causing perspiration'
-streamed  'il, her boots crunching on the loose gravel. The sun beat down relentlessly, causing perspiration to'
-streamed  ', her boots crunching on the loose gravel. The sun beat down relentlessly, causing perspiration to b'
-streamed  'her boots crunching on the loose gravel. The sun beat down relentlessly, causing perspiration to bea'
-streamed  'boots crunching on the loose gravel. The sun beat down relentlessly, causing perspiration to bead on'
-streamed  's crunching on the loose gravel. The sun beat down relentlessly, causing perspiration to bead on her'
-streamed  'crunching on the loose gravel. The sun beat down relentlessly, causing perspiration to bead on her b'
-streamed  'nching on the loose gravel. The sun beat down relentlessly, causing perspiration to bead on her brow'
-streamed  'ching on the loose gravel. The sun beat down relentlessly, causing perspiration to bead on her brow.'
-streamed  'ng on the loose gravel. The sun beat down relentlessly, causing perspiration to bead on her brow. As'
-streamed  'n the loose gravel. The sun beat down relentlessly, causing perspiration to bead on her brow. As she'
-streamed  'oose gravel. The sun beat down relentlessly, causing perspiration to bead on her brow. As she rounde'
-streamed  'e gravel. The sun beat down relentlessly, causing perspiration to bead on her brow. As she rounded a'
-streamed  'avel. The sun beat down relentlessly, causing perspiration to bead on her brow. As she rounded a ben'
-streamed  'el. The sun beat down relentlessly, causing perspiration to bead on her brow. As she rounded a bend,'
-streamed  '. The sun beat down relentlessly, causing perspiration to bead on her brow. As she rounded a bend, a'
-streamed  'sun beat down relentlessly, causing perspiration to bead on her brow. As she rounded a bend, a pecul'
-streamed  ' beat down relentlessly, causing perspiration to bead on her brow. As she rounded a bend, a peculiar'
-streamed  'down relentlessly, causing perspiration to bead on her brow. As she rounded a bend, a peculiar sight'
-streamed  'lentlessly, causing perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught'
-streamed  'lessly, causing perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught her'
-streamed  'ly, causing perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught her eye'
-streamed  'y, causing perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught her eye.'
-streamed  ', causing perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught her eye. '
-streamed  'ing perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNest'
-streamed  'g perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestle'
-streamed  'ation to bead on her brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between'
-streamed  'n to bead on her brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the'
-streamed  'to bead on her brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the c'
-streamed  'bead on her brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the crag'
-streamed  'ad on her brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the craggy'
-streamed  'her brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the craggy rocks'
-streamed  'brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the craggy rocks was'
-streamed  'ow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the craggy rocks was a'
-streamed  ' As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the craggy rocks was a ja'
-streamed  ' she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the craggy rocks was a jagge'
-streamed  'unded a bend, a peculiar sight caught her eye. \n\nNestled between the craggy rocks was a jagged black'
-streamed  'a bend, a peculiar sight caught her eye. \n\nNestled between the craggy rocks was a jagged black stone'
-streamed  ' bend, a peculiar sight caught her eye. \n\nNestled between the craggy rocks was a jagged black stone,'
-streamed  'd, a peculiar sight caught her eye. \n\nNestled between the craggy rocks was a jagged black stone, its'
-streamed  'uliar sight caught her eye. \n\nNestled between the craggy rocks was a jagged black stone, its surface'
-streamed  'ar sight caught her eye. \n\nNestled between the craggy rocks was a jagged black stone, its surface sh'
-streamed  'sight caught her eye. \n\nNestled between the craggy rocks was a jagged black stone, its surface shimm'
-streamed  ' caught her eye. \n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering'
-streamed  'ught her eye. \n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering in'
-streamed  ' her eye. \n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering in the'
-streamed  ' eye. \n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering in the sun'
-streamed  ' \n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering in the sunlight'
-streamed  '\n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering in the sunlight.'
-streamed  '\n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering in the sunlight.'
-streamed  '\n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering in the sunlight.'
-streamed  '\n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering in the sunlight.'
+streamed  'Here is a short story about lightning in a rock:\n\nThe Spark of'
+streamed  'Here is a short story about lightning in a rock:\n\nThe Spark of Life'
+streamed  'Here is a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the'
+streamed  'Here is a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunder'
+streamed  'Here is a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderst'
+streamed  'Here is a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm'
+streamed  'Here is a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm '
+streamed  'Here is a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm rage'
+streamed  're is a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhea'
+streamed  ' is a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead,'
+streamed  'a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the'
+streamed  'short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the c'
+streamed  ' story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the cracks'
+streamed  'ory about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the cracks of'
+streamed  'lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the cracks of lightning'
+streamed  'ning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the cracks of lightning stre'
+streamed  'g in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the cracks of lightning streake'
+streamed  'ock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the cracks of lightning streaked across'
+streamed  '\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the cracks of lightning streaked across the'
+streamed  ' Spark of Life\n\nAs the thunderstorm raged overhead, the cracks of lightning streaked across the dark'
+streamed  'rk of Life\n\nAs the thunderstorm raged overhead, the cracks of lightning streaked across the dark sky'
+streamed  'k of Life\n\nAs the thunderstorm raged overhead, the cracks of lightning streaked across the dark sky.'
+streamed  ' Life\n\nAs the thunderstorm raged overhead, the cracks of lightning streaked across the dark sky. One'
+streamed  ' thunderstorm raged overhead, the cracks of lightning streaked across the dark sky. One particularly'
+streamed  'torm raged overhead, the cracks of lightning streaked across the dark sky. One particularly powerful'
+streamed  'raged overhead, the cracks of lightning streaked across the dark sky. One particularly powerful bolt'
+streamed  'verhead, the cracks of lightning streaked across the dark sky. One particularly powerful bolt struck'
+streamed  'ead, the cracks of lightning streaked across the dark sky. One particularly powerful bolt struck the'
+streamed  'he cracks of lightning streaked across the dark sky. One particularly powerful bolt struck the groun'
+streamed  ' cracks of lightning streaked across the dark sky. One particularly powerful bolt struck the ground,'
+streamed  'of lightning streaked across the dark sky. One particularly powerful bolt struck the ground, sending'
+streamed  ' lightning streaked across the dark sky. One particularly powerful bolt struck the ground, sending a'
+streamed  'ghtning streaked across the dark sky. One particularly powerful bolt struck the ground, sending a sh'
+streamed  'ning streaked across the dark sky. One particularly powerful bolt struck the ground, sending a shock'
+streamed  ' streaked across the dark sky. One particularly powerful bolt struck the ground, sending a shockwave'
+streamed  'eaked across the dark sky. One particularly powerful bolt struck the ground, sending a shockwave rip'
+streamed  ' across the dark sky. One particularly powerful bolt struck the ground, sending a shockwave rippling'
+streamed  'the dark sky. One particularly powerful bolt struck the ground, sending a shockwave rippling through'
+streamed  'dark sky. One particularly powerful bolt struck the ground, sending a shockwave rippling through the'
+streamed  'ky. One particularly powerful bolt struck the ground, sending a shockwave rippling through the earth'
+streamed  'y. One particularly powerful bolt struck the ground, sending a shockwave rippling through the earth.'
+streamed  'e particularly powerful bolt struck the ground, sending a shockwave rippling through the earth. Deep'
+streamed  'rly powerful bolt struck the ground, sending a shockwave rippling through the earth. Deep undergroun'
+streamed  'y powerful bolt struck the ground, sending a shockwave rippling through the earth. Deep underground,'
+streamed  'werful bolt struck the ground, sending a shockwave rippling through the earth. Deep underground, the'
+streamed  'struck the ground, sending a shockwave rippling through the earth. Deep underground, the electricity'
+streamed  'ck the ground, sending a shockwave rippling through the earth. Deep underground, the electricity sur'
+streamed  ' the ground, sending a shockwave rippling through the earth. Deep underground, the electricity surge'
+streamed  'nd, sending a shockwave rippling through the earth. Deep underground, the electricity surged through'
+streamed  'sending a shockwave rippling through the earth. Deep underground, the electricity surged through the'
+streamed  ' a shockwave rippling through the earth. Deep underground, the electricity surged through the layers'
+streamed  'shockwave rippling through the earth. Deep underground, the electricity surged through the layers of'
+streamed  'wave rippling through the earth. Deep underground, the electricity surged through the layers of rock'
+streamed  'e rippling through the earth. Deep underground, the electricity surged through the layers of rock an'
+streamed  'ling through the earth. Deep underground, the electricity surged through the layers of rock and soil'
+streamed  'ing through the earth. Deep underground, the electricity surged through the layers of rock and soil,'
+streamed  'h the earth. Deep underground, the electricity surged through the layers of rock and soil, searching'
+streamed  'e earth. Deep underground, the electricity surged through the layers of rock and soil, searching for'
+streamed  'earth. Deep underground, the electricity surged through the layers of rock and soil, searching for a'
+streamed  '. Deep underground, the electricity surged through the layers of rock and soil, searching for a path'
+streamed  'eep underground, the electricity surged through the layers of rock and soil, searching for a path to'
+streamed  'underground, the electricity surged through the layers of rock and soil, searching for a path to the'
+streamed  'und, the electricity surged through the layers of rock and soil, searching for a path to the surface'
+streamed  'nd, the electricity surged through the layers of rock and soil, searching for a path to the surface.'
+streamed  'lectricity surged through the layers of rock and soil, searching for a path to the surface.\n\nEmbedde'
+streamed  'ty surged through the layers of rock and soil, searching for a path to the surface.\n\nEmbedded within'
+streamed  'urged through the layers of rock and soil, searching for a path to the surface.\n\nEmbedded within the'
+streamed  'rough the layers of rock and soil, searching for a path to the surface.\n\nEmbedded within the ancient'
+streamed  'the layers of rock and soil, searching for a path to the surface.\n\nEmbedded within the ancient stone'
+streamed  'he layers of rock and soil, searching for a path to the surface.\n\nEmbedded within the ancient stone,'
+streamed  ' layers of rock and soil, searching for a path to the surface.\n\nEmbedded within the ancient stone, a'
+streamed  's of rock and soil, searching for a path to the surface.\n\nEmbedded within the ancient stone, a small'
+streamed  'k and soil, searching for a path to the surface.\n\nEmbedded within the ancient stone, a small crystal'
+streamed  'nd soil, searching for a path to the surface.\n\nEmbedded within the ancient stone, a small crystal qu'
+streamed  'oil, searching for a path to the surface.\n\nEmbedded within the ancient stone, a small crystal quartz'
+streamed  'hing for a path to the surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation'
+streamed  'for a path to the surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation felt'
+streamed  'a path to the surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation felt the'
+streamed  'to the surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation felt the energy'
+streamed  ' the surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation felt the energy p'
+streamed  'e surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation felt the energy puls'
+streamed  'e surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation felt the energy puls'
+streamed  'e surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation felt the energy puls'
+streamed  'e surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation felt the energy puls'
 streamed final Here is a short story about lightning in a rock:
 
-The Spark Within
+The Spark of Life
 
-Amelia hiked up the winding trail, her boots crunching on the loose gravel. The sun beat down relentlessly, causing perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught her eye. 
+As the thunderstorm raged overhead, the cracks of lightning streaked across the dark sky. One particularly powerful bolt struck the ground, sending a shockwave rippling through the earth. Deep underground, the electricity surged through the layers of rock and soil, searching for a path to the surface.
 
-Nestled between the craggy rocks was a jagged black stone, its surface shimmering in the sunlight.
-
Captured stderr call
[2024-09-05T13:57:04Z INFO  baml_events] Function TestAws:
-    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 1830ms. StopReason: unknown
+Embedded within the ancient stone, a small crystal quartz formation felt the energy puls
+
Captured stderr call
[2024-09-21T01:06:03Z WARN  aws_runtime::env_config::normalize] section [Connection 1] ignored; config must be in the AWS config file rather than the credentials file
+[2024-09-21T01:06:03Z INFO  aws_config::meta::region] load_region; provider=EnvironmentVariableRegionProvider { env: Env(Real) }
+[2024-09-21T01:06:05Z INFO  baml_events] Function TestAws:
+    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 1869ms. StopReason: unknown
     ---PROMPT---
     [chat] user: Write a nice short story about lightning in a rock
     
     ---LLM REPLY---
     Here is a short story about lightning in a rock:
     
-    The Spark Within
+    The Spark of Life
     
-    Amelia hiked up the winding trail, her boots crunching on the loose gravel. The sun beat down relentlessly, causing perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught her eye. 
+    As the thunderstorm raged overhead, the cracks of lightning streaked across the dark sky. One particularly powerful bolt struck the ground, sending a shockwave rippling through the earth. Deep underground, the electricity surged through the layers of rock and soil, searching for a path to the surface.
     
-    Nestled between the craggy rocks was a jagged black stone, its surface shimmering in the sunlight.
+    Embedded within the ancient stone, a small crystal quartz formation felt the energy puls
     ---Parsed Response (string)---
-    "Here is a short story about lightning in a rock:\n\nThe Spark Within\n\nAmelia hiked up the winding trail, her boots crunching on the loose gravel. The sun beat down relentlessly, causing perspiration to bead on her brow. As she rounded a bend, a peculiar sight caught her eye. \n\nNestled between the craggy rocks was a jagged black stone, its surface shimmering in the sunlight."
-

Teardown

PASSED test_serialization_exception 0:00:00.529340

Setup

Call

Captured stdout call
Exception message:  <ExceptionInfo BamlValidationError('Parsing error: Client: GPT35 (gpt-3.5-turbo-0125) - 519ms. StopReason: stop\n---PROMPT---\n[chat]...day?\n---Parsed Response---\nFailed to coerce value: Error parsing \'<root>\': Missing required fields: nonce, nonce2') tblen=2>
-
Captured stderr call
[2024-09-05T13:57:04Z WARN  baml_events] Function DummyOutputFunction:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 519ms. StopReason: stop
+    "Here is a short story about lightning in a rock:\n\nThe Spark of Life\n\nAs the thunderstorm raged overhead, the cracks of lightning streaked across the dark sky. One particularly powerful bolt struck the ground, sending a shockwave rippling through the earth. Deep underground, the electricity surged through the layers of rock and soil, searching for a path to the surface.\n\nEmbedded within the ancient stone, a small crystal quartz formation felt the energy puls"
+

Teardown

PASSED test_serialization_exception 0:00:00.381574

Setup

Call

Captured stdout call
Exception message:  <ExceptionInfo BamlValidationError('Parsing error: Client: GPT35 (gpt-3.5-turbo-0125) - 378ms. StopReason: stop\n---PROMPT---\n[chat]...day?\n---Parsed Response---\nFailed to coerce value: Error parsing \'<root>\': Missing required fields: nonce, nonce2') tblen=2>
+
Captured stderr call
[2024-09-21T01:06:05Z WARN  baml_events] Function DummyOutputFunction:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 378ms. StopReason: stop
     ---PROMPT---
     [chat] system: Say "hello there".
     
@@ -1884,7 +1825,7 @@
     Hello there! How can I assist you today?
     ---Parsed Response (Error)---
     Failed to coerce value: Error parsing '<root>': Missing required fields: nonce, nonce2
-

Teardown

PASSED test_stream_serialization_exception 0:00:00.691989

Setup

Call

Captured stdout call
streamed  nonce=None nonce2=None
+

Teardown

PASSED test_stream_serialization_exception 0:00:00.415110

Setup

Call

Captured stdout call
streamed  nonce=None nonce2=None
 streamed  nonce=None nonce2=None
 streamed  nonce=None nonce2=None
 streamed  nonce=None nonce2=None
@@ -1897,9 +1838,9 @@
 streamed  nonce=None nonce2=None
 streamed  nonce=None nonce2=None
 streamed  nonce=None nonce2=None
-Exception message:  <ExceptionInfo BamlValidationError('Parsing error: Client: GPT35 (gpt-3.5-turbo-0125) - 682ms. StopReason: stop\n---PROMPT---\n[chat]...day?\n---Parsed Response---\nFailed to coerce value: Error parsing \'<root>\': Missing required fields: nonce, nonce2') tblen=2>
-
Captured stderr call
[2024-09-05T13:57:05Z WARN  baml_events] Function DummyOutputFunction:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 682ms. StopReason: stop
+Exception message:  <ExceptionInfo BamlValidationError('Parsing error: Client: GPT35 (gpt-3.5-turbo-0125) - 410ms. StopReason: stop\n---PROMPT---\n[chat]...day?\n---Parsed Response---\nFailed to coerce value: Error parsing \'<root>\': Missing required fields: nonce, nonce2') tblen=2>
+
Captured stderr call
[2024-09-21T01:06:05Z WARN  baml_events] Function DummyOutputFunction:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 410ms. StopReason: stop
     ---PROMPT---
     [chat] system: Say "hello there".
     
@@ -1907,7 +1848,7 @@
     Hello there! How can I assist you today?
     ---Parsed Response (Error)---
     Failed to coerce value: Error parsing '<root>': Missing required fields: nonce, nonce2
-

Teardown

PASSED test_stream2_serialization_exception 0:00:00.528245

Setup

Call

Captured stdout call
streamed  nonce=None nonce2=None nonce3=None
+

Teardown

PASSED test_stream2_serialization_exception 0:00:00.416086

Setup

Call

Captured stdout call
streamed  nonce=None nonce2=None nonce3=None
 streamed  nonce=None nonce2=None nonce3=None
 streamed  nonce=None nonce2=None nonce3=None
 streamed  nonce=None nonce2=None nonce3=None
@@ -1920,9 +1861,9 @@
 streamed  nonce=None nonce2=None nonce3=None
 streamed  nonce=None nonce2=None nonce3=None
 streamed  nonce=None nonce2=None nonce3=None
-Exception message:  <ExceptionInfo BamlValidationError('Parsing error: Client: GPT35 (gpt-3.5-turbo-0125) - 520ms. StopReason: stop\n---PROMPT---\n[chat]...-Parsed Response---\nFailed to coerce value: Error parsing \'<root>\': Missing required fields: nonce, nonce2, nonce3') tblen=2>
-
Captured stderr call
[2024-09-05T13:57:05Z WARN  baml_events] Function DummyOutputFunction:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 520ms. StopReason: stop
+Exception message:  <ExceptionInfo BamlValidationError('Parsing error: Client: GPT35 (gpt-3.5-turbo-0125) - 411ms. StopReason: stop\n---PROMPT---\n[chat]...-Parsed Response---\nFailed to coerce value: Error parsing \'<root>\': Missing required fields: nonce, nonce2, nonce3') tblen=2>
+
Captured stderr call
[2024-09-21T01:06:06Z WARN  baml_events] Function DummyOutputFunction:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 411ms. StopReason: stop
     ---PROMPT---
     [chat] system: Say "hello there".
     
@@ -1930,7 +1871,7 @@
     Hello there! How can I assist you today?
     ---Parsed Response (Error)---
     Failed to coerce value: Error parsing '<root>': Missing required fields: nonce, nonce2, nonce3
-

Teardown

FAILED test_descriptions 0:00:01.913155

AssertionError: assert Nested(prop3='three', prop4='four', prop20=Nested2(prop11='three', prop12='four')) == 'two'
+

Teardown

FAILED test_descriptions 0:00:01.498003

AssertionError: assert Nested(prop3='three', prop4='four', prop20=Nested2(prop11='three', prop12='four')) == 'two'
  +  where Nested(prop3='three', prop4='four', prop20=Nested2(prop11='three', prop12='four')) = Schema(prop1='one', prop2=Nested(prop3='three', prop4='four', prop20=Nested2(prop11='three', prop12='four')), prop5=['hi'], prop6='blah', nested_attrs=['nested'], parens='parens1', other_group='other').prop2

Setup

Call

@pytest.mark.asyncio
     async def test_descriptions():
         res = await b.SchemaDescriptions(
@@ -1951,8 +1892,8 @@
 E       AssertionError: assert Nested(prop3='three', prop4='four', prop20=Nested2(prop11='three', prop12='four')) == 'two'
 E        +  where Nested(prop3='three', prop4='four', prop20=Nested2(prop11='three', prop12='four')) = Schema(prop1='one', prop2=Nested(prop3='three', prop4='four', prop20=Nested2(prop11='three', prop12='four')), prop5=['hi'], prop6='blah', nested_attrs=['nested'], parens='parens1', other_group='other').prop2
 
-tests/test_functions.py:967: AssertionError
Captured stderr call
[2024-09-05T13:57:07Z INFO  baml_events] Function SchemaDescriptions:
-    Client: GPT4o (gpt-4o-2024-05-13) - 1901ms. StopReason: stop
+tests/test_functions.py:967: AssertionError
Captured stderr call
[2024-09-21T01:06:07Z INFO  baml_events] Function SchemaDescriptions:
+    Client: GPT4o (gpt-4o-2024-05-13) - 1493ms. StopReason: stop
     ---PROMPT---
     [chat] system: Return a schema with this format:
     
@@ -2029,7 +1970,9 @@
         "hi"
       ],
       "blah": "blah",
-      "nested_attrs": "nested",
+      "nested_attrs": [
+        "nested"
+      ],
       "parens": "parens1",
       "other": "other"
     }
@@ -2055,54 +1998,25 @@
       "parens": "parens1",
       "other_group": "other"
     }
-

Teardown

FAILED test_caching 0:00:01.253028

baml_py.BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "ClaudeWithCaching", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [WithMeta(Text("Describe this in 5 words: \n    In a near-future society where dreams have become a tradable commodity and shared experience, a lonely and socially awkward teenager named Alex discovers they possess a rare and powerful ability to not only view but also manipulate the dreams of others. Initially thrilled by this newfound power, Alex begins subtly altering the dreams of classmates and family members, helping them overcome fears, boost confidence, or experience fantastical adventures.\nAs Alex's skills grow, so does their influence. They start selling premium dream experiences on the black market, crafting intricate and addictive dreamscapes for wealthy clients. However, the line between dream and reality begins to blur for those exposed to Alex's creations. Some clients struggle to differentiate between their true memories and the artificial ones implanted by Alex's dream manipulation.\nComplications arise when a mysterious government agency takes notice of Alex's unique abilities. They offer Alex a chance to use their gift for \"the greater good,\" hinting at applications in therapy, criminal rehabilitation, and even national security. Simultaneously, a underground resistance movement reaches out, warning Alex about the dangers of dream manipulation and the potential for mass control and exploitation.\nCaught between these opposing forces, Alex must navigate a complex web of ethical dilemmas. They grapple with questions of free will, the nature of consciousness, and the responsibility that comes with having power over people's minds. As the consequences of their actions spiral outward, affecting the lives of loved ones and strangers alike, Alex is forced to confront the true nature of their ability and decide how—or if—it should be used.\nThe story explores themes of identity, the subconscious mind, the ethics of technology, and the power of imagination. It delves into the potential consequences of a world where our most private thoughts and experiences are no longer truly our own, and examines the fine line between helping others and manipulating them for personal gain or a perceived greater good."), {"cache_control": Object {"type": String("ephemeral")}})] }]), request_options: {"max_tokens": Number(1000), "model": String("claude-3-haiku-20240307")}, start_time: SystemTime { tv_sec: 1725544627, tv_nsec: 736272000 }, latency: 1.245205667s, message: "Request failed: {\"type\":\"error\",\"error\":{\"type\":\"overloaded_error\",\"message\":\"Overloaded\"}}", code: Other(529) }

Setup

Call

@pytest.mark.asyncio
-    async def test_caching():
-        story_idea = """
+

Teardown

PASSED test_caching 0:00:01.091153

Setup

Call

Captured stdout call
Duration no caching:  0.5787179470062256
+Duration with caching:  0.5117619037628174
+
Captured stderr call
[2024-09-21T01:06:08Z INFO  baml_events] Function TestCaching:
+    Client: ClaudeWithCaching (claude-3-haiku-20240307) - 576ms. StopReason: "end_turn"
+    ---PROMPT---
+    [chat] user: {"cache_control": Object {"type": String("ephemeral")}}::Describe this in 5 words: 
         In a near-future society where dreams have become a tradable commodity and shared experience, a lonely and socially awkward teenager named Alex discovers they possess a rare and powerful ability to not only view but also manipulate the dreams of others. Initially thrilled by this newfound power, Alex begins subtly altering the dreams of classmates and family members, helping them overcome fears, boost confidence, or experience fantastical adventures.
-    As Alex's skills grow, so does their influence. They start selling premium dream experiences on the black market, crafting intricate and addictive dreamscapes for wealthy clients. However, the line between dream and reality begins to blur for those exposed to Alex's creations. Some clients struggle to differentiate between their true memories and the artificial ones implanted by Alex's dream manipulation.
-    Complications arise when a mysterious government agency takes notice of Alex's unique abilities. They offer Alex a chance to use their gift for "the greater good," hinting at applications in therapy, criminal rehabilitation, and even national security. Simultaneously, a underground resistance movement reaches out, warning Alex about the dangers of dream manipulation and the potential for mass control and exploitation.
-    Caught between these opposing forces, Alex must navigate a complex web of ethical dilemmas. They grapple with questions of free will, the nature of consciousness, and the responsibility that comes with having power over people's minds. As the consequences of their actions spiral outward, affecting the lives of loved ones and strangers alike, Alex is forced to confront the true nature of their ability and decide how—or if—it should be used.
+    As Alex's skills grow, so does their influence. They start selling premium dream experiences on the black market, crafting intricate and addictive dreamscapes for wealthy clients. However, the line between dream and reality begins to blur for those exposed to Alex's creations. Some clients struggle to differentiate between their true memories and the artificial ones implanted by Alex's dream manipulation.
+    Complications arise when a mysterious government agency takes notice of Alex's unique abilities. They offer Alex a chance to use their gift for "the greater good," hinting at applications in therapy, criminal rehabilitation, and even national security. Simultaneously, a underground resistance movement reaches out, warning Alex about the dangers of dream manipulation and the potential for mass control and exploitation.
+    Caught between these opposing forces, Alex must navigate a complex web of ethical dilemmas. They grapple with questions of free will, the nature of consciousness, and the responsibility that comes with having power over people's minds. As the consequences of their actions spiral outward, affecting the lives of loved ones and strangers alike, Alex is forced to confront the true nature of their ability and decide how—or if—it should be used.
     The story explores themes of identity, the subconscious mind, the ethics of technology, and the power of imagination. It delves into the potential consequences of a world where our most private thoughts and experiences are no longer truly our own, and examines the fine line between helping others and manipulating them for personal gain or a perceived greater good.
-    """
-        rand = random.randint(0, 26)
-        story_idea += " " + rand * "a"
-        start = time.time()
->       res = await b.TestCaching(story_idea)
-
-tests/test_functions.py:986: 
-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
-
-self = 
-input = '\n    In a near-future society where dreams have become a tradable commodity and shared experience, a lonely and soci... examines the fine line between helping others and manipulating them for personal gain or a perceived greater good.\n '
-baml_options = {}
-
-    async def TestCaching(
-        self,
-        input: str,
-        baml_options: BamlCallOptions = {},
-    ) -> str:
-      __tb__ = baml_options.get("tb", None)
-      if __tb__ is not None:
-        tb = __tb__._tb
-      else:
-        tb = None
-      __cr__ = baml_options.get("client_registry", None)
+     aaaaaaaaaaaaaaaaaaaaaaaaa
     
-      raw = await self.__runtime.call_function(
-        "TestCaching",
-        {
-          "input": input,
-        },
-        self.__ctx_manager.get(),
-        tb,
-        __cr__,
-      )
-      mdl = create_model("TestCachingReturnType", inner=(str, ...))
->     return coerce(mdl, raw.parsed())
-E     baml_py.BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "ClaudeWithCaching", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [WithMeta(Text("Describe this in 5 words: \n    In a near-future society where dreams have become a tradable commodity and shared experience, a lonely and socially awkward teenager named Alex discovers they possess a rare and powerful ability to not only view but also manipulate the dreams of others. Initially thrilled by this newfound power, Alex begins subtly altering the dreams of classmates and family members, helping them overcome fears, boost confidence, or experience fantastical adventures.\nAs Alex's skills grow, so does their influence. They start selling premium dream experiences on the black market, crafting intricate and addictive dreamscapes for wealthy clients. However, the line between dream and reality begins to blur for those exposed to Alex's creations. Some clients struggle to differentiate between their true memories and the artificial ones implanted by Alex's dream manipulation.\nComplications arise when a mysterious government agency takes notice of Alex's unique abilities. They offer Alex a chance to use their gift for \"the greater good,\" hinting at applications in therapy, criminal rehabilitation, and even national security. Simultaneously, a underground resistance movement reaches out, warning Alex about the dangers of dream manipulation and the potential for mass control and exploitation.\nCaught between these opposing forces, Alex must navigate a complex web of ethical dilemmas. They grapple with questions of free will, the nature of consciousness, and the responsibility that comes with having power over people's minds. As the consequences of their actions spiral outward, affecting the lives of loved ones and strangers alike, Alex is forced to confront the true nature of their ability and decide how—or if—it should be used.\nThe story explores themes of identity, the subconscious mind, the ethics of technology, and the power of imagination. It delves into the potential consequences of a world where our most private thoughts and experiences are no longer truly our own, and examines the fine line between helping others and manipulating them for personal gain or a perceived greater good."), {"cache_control": Object {"type": String("ephemeral")}})] }]), request_options: {"max_tokens": Number(1000), "model": String("claude-3-haiku-20240307")}, start_time: SystemTime { tv_sec: 1725544627, tv_nsec: 736272000 }, latency: 1.245205667s, message: "Request failed: {\"type\":\"error\",\"error\":{\"type\":\"overloaded_error\",\"message\":\"Overloaded\"}}", code: Other(529) }
-
-baml_client/async_client.py:1284: BamlClientHttpError
Captured stderr call
[2024-09-05T13:57:08Z WARN  baml_events] Function TestCaching:
-    Client: ClaudeWithCaching (<unknown>) - 1245ms
+    ---LLM REPLY---
+    Teenager's dream manipulation dilemma.
+    ---Parsed Response (string)---
+    "Teenager's dream manipulation dilemma."
+[2024-09-21T01:06:08Z INFO  baml_events] Function TestCaching:
+    Client: ClaudeWithCaching (claude-3-haiku-20240307) - 509ms. StopReason: "end_turn"
     ---PROMPT---
     [chat] user: {"cache_control": Object {"type": String("ephemeral")}}::Describe this in 5 words: 
         In a near-future society where dreams have become a tradable commodity and shared experience, a lonely and socially awkward teenager named Alex discovers they possess a rare and powerful ability to not only view but also manipulate the dreams of others. Initially thrilled by this newfound power, Alex begins subtly altering the dreams of classmates and family members, helping them overcome fears, boost confidence, or experience fantastical adventures.
@@ -2110,14 +2024,14 @@
     Complications arise when a mysterious government agency takes notice of Alex's unique abilities. They offer Alex a chance to use their gift for "the greater good," hinting at applications in therapy, criminal rehabilitation, and even national security. Simultaneously, a underground resistance movement reaches out, warning Alex about the dangers of dream manipulation and the potential for mass control and exploitation.
     Caught between these opposing forces, Alex must navigate a complex web of ethical dilemmas. They grapple with questions of free will, the nature of consciousness, and the responsibility that comes with having power over people's minds. As the consequences of their actions spiral outward, affecting the lives of loved ones and strangers alike, Alex is forced to confront the true nature of their ability and decide how—or if—it should be used.
     The story explores themes of identity, the subconscious mind, the ethics of technology, and the power of imagination. It delves into the potential consequences of a world where our most private thoughts and experiences are no longer truly our own, and examines the fine line between helping others and manipulating them for personal gain or a perceived greater good.
+     aaaaaaaaaaaaaaaaaaaaaaaaa
     
-    ---REQUEST OPTIONS---
-    max_tokens: 1000
-    model: "claude-3-haiku-20240307"
-    ---ERROR (Unspecified error code: 529)---
-    Request failed: {"type":"error","error":{"type":"overloaded_error","message":"Overloaded"}}
-

Teardown

PASSED test_arg_exceptions 0:00:00.835220

Setup

Call

Captured stderr call
[2024-09-05T13:57:09Z WARN  baml_events] Function MyFunc:
-    Client: MyClient (<unknown>) - 144ms
+    ---LLM REPLY---
+    Dystopian dream trade, ethical dilemma.
+    ---Parsed Response (string)---
+    "Dystopian dream trade, ethical dilemma."
+

Teardown

PASSED test_arg_exceptions 0:00:00.653893

Setup

Call

Captured stderr call
[2024-09-21T01:06:09Z WARN  baml_events] Function MyFunc:
+    Client: MyClient (<unknown>) - 125ms
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -2139,8 +2053,8 @@
         }
     }
     
-[2024-09-05T13:57:09Z WARN  baml_events] Function MyFunc:
-    Client: MyClient (<unknown>) - 151ms
+[2024-09-21T01:06:09Z WARN  baml_events] Function MyFunc:
+    Client: MyClient (<unknown>) - 104ms
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -2162,13 +2076,13 @@
         }
     }
     
-[2024-09-05T13:57:09Z WARN  baml_events] Function DummyOutputFunction:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 523ms. StopReason: stop
+[2024-09-21T01:06:09Z WARN  baml_events] Function DummyOutputFunction:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 416ms. StopReason: stop
     ---PROMPT---
     [chat] system: Say "hello there".
     
     ---LLM REPLY---
-    Hello there! How can I help you today?
+    Hello there! How can I assist you today?
     ---Parsed Response (Error)---
     Failed to coerce value: Error parsing '<root>': Missing required fields: nonce, nonce2
-

Teardown

PASSED test_map_as_param 0:00:00.002330

Setup

Call

Teardown

\ No newline at end of file +

Teardown

PASSED test_map_as_param 0:00:00.000985

Setup

Call

Teardown

\ No newline at end of file diff --git a/integ-tests/ruby/baml_client/inlined.rb b/integ-tests/ruby/baml_client/inlined.rb index c2d277bbf..a815d1b30 100644 --- a/integ-tests/ruby/baml_client/inlined.rb +++ b/integ-tests/ruby/baml_client/inlined.rb @@ -25,7 +25,7 @@ module Inlined "fiddle-examples/extract-receipt-info.baml" => "class ReceiptItem {\n name string\n description string?\n quantity int\n price float\n}\n\nclass ReceiptInfo {\n items ReceiptItem[]\n total_cost float?\n}\n\nfunction ExtractReceiptInfo(email: string) -> ReceiptInfo {\n client GPT4o\n prompt #\"\n Given the receipt below:\n\n ```\n {{email}}\n ```\n\n {{ ctx.output_format }}\n \"#\n}\n\n", "fiddle-examples/images/image.baml" => "function DescribeImage(img: image) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\") }}\n\n\n Describe the image below in 20 words:\n {{ img }}\n \"#\n\n}\n\nclass FakeImage {\n url string\n}\n\nclass ClassWithImage {\n myImage image\n param2 string\n fake_image FakeImage\n}\n\n// chat role user present\nfunction DescribeImage2(classWithImage: ClassWithImage, img2: image) -> string { \n client GPT4Turbo\n prompt #\"\n {{ _.role(\"user\") }}\n You should return 2 answers that answer the following commands.\n\n 1. Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n 2. Also tell me what's happening here in one sentence:\n {{ img2 }}\n \"#\n}\n\n// no chat role\nfunction DescribeImage3(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\n\n// system prompt and chat prompt\nfunction DescribeImage4(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n {{ _.role(\"system\")}}\n\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\ntest TestName {\n functions [DescribeImage]\n args {\n img { url \"https://imgs.xkcd.com/comics/standards.png\"}\n }\n}\n", "fiddle-examples/symbol-tuning.baml" => "enum Category3 {\n Refund @alias(\"k1\")\n @description(\"Customer wants to refund a product\")\n\n CancelOrder @alias(\"k2\")\n @description(\"Customer wants to cancel an order\")\n\n TechnicalSupport @alias(\"k3\")\n @description(\"Customer needs help with a technical issue unrelated to account creation or login\")\n\n AccountIssue @alias(\"k4\")\n @description(\"Specifically relates to account-login or account-creation\")\n\n Question @alias(\"k5\")\n @description(\"Customer has a question\")\n}\n\nfunction ClassifyMessage3(input: string) -> Category {\n client GPT4\n\n prompt #\"\n Classify the following INPUT into ONE\n of the following categories:\n\n INPUT: {{ input }}\n\n {{ ctx.output_format }}\n\n Response:\n \"#\n}", - "generators.baml" => "generator lang_python {\n output_type python/pydantic\n output_dir \"../python\"\n version \"0.56.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.56.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.56.0\"\n}\n\ngenerator openapi {\n output_type rest/openapi\n output_dir \"../openapi\"\n version \"0.56.0\"\n on_generate \"rm .gitignore\"\n}\n", + "generators.baml" => "generator lang_python {\n output_type python/pydantic\n output_dir \"../python\"\n version \"0.56.1\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.56.1\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.56.1\"\n}\n\ngenerator openapi {\n output_type rest/openapi\n output_dir \"../openapi\"\n version \"0.56.1\"\n on_generate \"rm .gitignore\"\n}\n", "test-files/aliases/classes.baml" => "class TestClassAlias {\n key string @alias(\"key-dash\") @description(#\"\n This is a description for key\n af asdf\n \"#)\n key2 string @alias(\"key21\")\n key3 string @alias(\"key with space\")\n key4 string //unaliased\n key5 string @alias(\"key.with.punctuation/123\")\n}\n\nfunction FnTestClassAlias(input: string) -> TestClassAlias {\n client GPT35\n prompt #\"\n {{ctx.output_format}}\n \"#\n}\n\ntest FnTestClassAlias {\n functions [FnTestClassAlias]\n args {\n input \"example input\"\n }\n}\n", "test-files/aliases/enums.baml" => "enum TestEnum {\n A @alias(\"k1\") @description(#\"\n User is angry\n \"#)\n B @alias(\"k22\") @description(#\"\n User is happy\n \"#)\n // tests whether k1 doesnt incorrectly get matched with k11\n C @alias(\"k11\") @description(#\"\n User is sad\n \"#)\n D @alias(\"k44\") @description(\n User is confused\n )\n E @description(\n User is excited\n )\n F @alias(\"k5\") // only alias\n \n G @alias(\"k6\") @description(#\"\n User is bored\n With a long description\n \"#)\n \n @@alias(\"Category\")\n}\n\nfunction FnTestAliasedEnumOutput(input: string) -> TestEnum {\n client GPT35\n prompt #\"\n Classify the user input into the following category\n \n {{ ctx.output_format }}\n\n {{ _.role('user') }}\n {{input}}\n\n {{ _.role('assistant') }}\n Category ID:\n \"#\n}\n\ntest FnTestAliasedEnumOutput {\n functions [FnTestAliasedEnumOutput]\n args {\n input \"mehhhhh\"\n }\n}", "test-files/comments/comments.baml" => "// add some functions, classes, enums etc with comments all over.", diff --git a/integ-tests/typescript/baml_client/inlinedbaml.ts b/integ-tests/typescript/baml_client/inlinedbaml.ts index 6de91ca3b..dcf17c9cd 100644 --- a/integ-tests/typescript/baml_client/inlinedbaml.ts +++ b/integ-tests/typescript/baml_client/inlinedbaml.ts @@ -26,7 +26,7 @@ const fileMap = { "fiddle-examples/extract-receipt-info.baml": "class ReceiptItem {\n name string\n description string?\n quantity int\n price float\n}\n\nclass ReceiptInfo {\n items ReceiptItem[]\n total_cost float?\n}\n\nfunction ExtractReceiptInfo(email: string) -> ReceiptInfo {\n client GPT4o\n prompt #\"\n Given the receipt below:\n\n ```\n {{email}}\n ```\n\n {{ ctx.output_format }}\n \"#\n}\n\n", "fiddle-examples/images/image.baml": "function DescribeImage(img: image) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\") }}\n\n\n Describe the image below in 20 words:\n {{ img }}\n \"#\n\n}\n\nclass FakeImage {\n url string\n}\n\nclass ClassWithImage {\n myImage image\n param2 string\n fake_image FakeImage\n}\n\n// chat role user present\nfunction DescribeImage2(classWithImage: ClassWithImage, img2: image) -> string { \n client GPT4Turbo\n prompt #\"\n {{ _.role(\"user\") }}\n You should return 2 answers that answer the following commands.\n\n 1. Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n 2. Also tell me what's happening here in one sentence:\n {{ img2 }}\n \"#\n}\n\n// no chat role\nfunction DescribeImage3(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\n\n// system prompt and chat prompt\nfunction DescribeImage4(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n {{ _.role(\"system\")}}\n\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\ntest TestName {\n functions [DescribeImage]\n args {\n img { url \"https://imgs.xkcd.com/comics/standards.png\"}\n }\n}\n", "fiddle-examples/symbol-tuning.baml": "enum Category3 {\n Refund @alias(\"k1\")\n @description(\"Customer wants to refund a product\")\n\n CancelOrder @alias(\"k2\")\n @description(\"Customer wants to cancel an order\")\n\n TechnicalSupport @alias(\"k3\")\n @description(\"Customer needs help with a technical issue unrelated to account creation or login\")\n\n AccountIssue @alias(\"k4\")\n @description(\"Specifically relates to account-login or account-creation\")\n\n Question @alias(\"k5\")\n @description(\"Customer has a question\")\n}\n\nfunction ClassifyMessage3(input: string) -> Category {\n client GPT4\n\n prompt #\"\n Classify the following INPUT into ONE\n of the following categories:\n\n INPUT: {{ input }}\n\n {{ ctx.output_format }}\n\n Response:\n \"#\n}", - "generators.baml": "generator lang_python {\n output_type python/pydantic\n output_dir \"../python\"\n version \"0.56.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.56.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.56.0\"\n}\n\ngenerator openapi {\n output_type rest/openapi\n output_dir \"../openapi\"\n version \"0.56.0\"\n on_generate \"rm .gitignore\"\n}\n", + "generators.baml": "generator lang_python {\n output_type python/pydantic\n output_dir \"../python\"\n version \"0.56.1\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.56.1\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.56.1\"\n}\n\ngenerator openapi {\n output_type rest/openapi\n output_dir \"../openapi\"\n version \"0.56.1\"\n on_generate \"rm .gitignore\"\n}\n", "test-files/aliases/classes.baml": "class TestClassAlias {\n key string @alias(\"key-dash\") @description(#\"\n This is a description for key\n af asdf\n \"#)\n key2 string @alias(\"key21\")\n key3 string @alias(\"key with space\")\n key4 string //unaliased\n key5 string @alias(\"key.with.punctuation/123\")\n}\n\nfunction FnTestClassAlias(input: string) -> TestClassAlias {\n client GPT35\n prompt #\"\n {{ctx.output_format}}\n \"#\n}\n\ntest FnTestClassAlias {\n functions [FnTestClassAlias]\n args {\n input \"example input\"\n }\n}\n", "test-files/aliases/enums.baml": "enum TestEnum {\n A @alias(\"k1\") @description(#\"\n User is angry\n \"#)\n B @alias(\"k22\") @description(#\"\n User is happy\n \"#)\n // tests whether k1 doesnt incorrectly get matched with k11\n C @alias(\"k11\") @description(#\"\n User is sad\n \"#)\n D @alias(\"k44\") @description(\n User is confused\n )\n E @description(\n User is excited\n )\n F @alias(\"k5\") // only alias\n \n G @alias(\"k6\") @description(#\"\n User is bored\n With a long description\n \"#)\n \n @@alias(\"Category\")\n}\n\nfunction FnTestAliasedEnumOutput(input: string) -> TestEnum {\n client GPT35\n prompt #\"\n Classify the user input into the following category\n \n {{ ctx.output_format }}\n\n {{ _.role('user') }}\n {{input}}\n\n {{ _.role('assistant') }}\n Category ID:\n \"#\n}\n\ntest FnTestAliasedEnumOutput {\n functions [FnTestAliasedEnumOutput]\n args {\n input \"mehhhhh\"\n }\n}", "test-files/comments/comments.baml": "// add some functions, classes, enums etc with comments all over.", diff --git a/integ-tests/typescript/pnpm-lock.yaml b/integ-tests/typescript/pnpm-lock.yaml index 469acb4f2..47656a559 100644 --- a/integ-tests/typescript/pnpm-lock.yaml +++ b/integ-tests/typescript/pnpm-lock.yaml @@ -1,1492 +1,78 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -importers: +dependencies: + '@boundaryml/baml': + specifier: link:../../engine/language_client_typescript + version: link:../../engine/language_client_typescript + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + +devDependencies: + '@swc/core': + specifier: ^1.5.7 + version: 1.7.6 + '@swc/jest': + specifier: ^0.2.36 + version: 0.2.36(@swc/core@1.7.6) + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/node': + specifier: ^20.11.27 + version: 20.14.14 + dotenv-cli: + specifier: ^7.4.2 + version: 7.4.2 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2) + jest-html-reporter: + specifier: ^3.10.2 + version: 3.10.2(jest@29.7.0)(typescript@5.5.4) + ts-jest: + specifier: ^29.1.2 + version: 29.2.4(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.4) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.7.6)(@types/node@20.14.14)(typescript@5.5.4) + ts-node-dev: + specifier: ^2.0.0 + version: 2.0.0(@swc/core@1.7.6)(@types/node@20.14.14)(typescript@5.5.4) + typescript: + specifier: ^5.4.2 + version: 5.5.4 - .: - dependencies: - '@boundaryml/baml': - specifier: link:../../engine/language_client_typescript - version: link:../../engine/language_client_typescript - dotenv: - specifier: ^16.4.5 - version: 16.4.5 - devDependencies: - '@swc/core': - specifier: ^1.5.7 - version: 1.7.6 - '@swc/jest': - specifier: ^0.2.36 - version: 0.2.36(@swc/core@1.7.6) - '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 - '@types/node': - specifier: ^20.11.27 - version: 20.14.14 - dotenv-cli: - specifier: ^7.4.2 - version: 7.4.2 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2) - jest-html-reporter: - specifier: ^3.10.2 - version: 3.10.2(jest@29.7.0)(typescript@5.5.4) - ts-jest: - specifier: ^29.1.2 - version: 29.2.4(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.4) - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.7.6)(@types/node@20.14.14)(typescript@5.5.4) - ts-node-dev: - specifier: ^2.0.0 - version: 2.0.0(@swc/core@1.7.6)(@types/node@20.14.14)(typescript@5.5.4) - typescript: - specifier: ^5.4.2 - version: 5.5.4 - -packages: - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.25.0': - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.25.0': - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.25.3': - resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.24.7': - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.24.7': - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/create-cache-key-function@29.7.0': - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - - '@swc/core-darwin-arm64@1.7.6': - resolution: {integrity: sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.7.6': - resolution: {integrity: sha512-Fyl+8aH9O5rpx4O7r2KnsPpoi32iWoKOYKiipeTbGjQ/E95tNPxbmsz4yqE8Ovldcga60IPJ5OKQA3HWRiuzdw==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.7.6': - resolution: {integrity: sha512-2WxYTqFaOx48GKC2cbO1/IntA+w+kfCFy436Ij7qRqqtV/WAvTM9TC1OmiFbqq436rSot52qYmX8fkwdB5UcLQ==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.7.6': - resolution: {integrity: sha512-TBEGMSe0LhvPe4S7E68c7VzgT3OMu4VTmBLS7B2aHv4v8uZO92Khpp7L0WqgYU1y5eMjk+XLDLi4kokiNHv/Hg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.7.6': - resolution: {integrity: sha512-QI8QGL0HGT42tj7F1A+YAzhGkJjUcvvTfI1e2m704W0Enl2/UIK9v5D1zvQzYwusRyKuaQfbeBRYDh0NcLOGLg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.7.6': - resolution: {integrity: sha512-61AYVzhjuNQAVIKKWOJu3H0/pFD28RYJGxnGg3YMhvRLRyuWNyY5Nyyj2WkKcz/ON+g38Arlz00NT1LDIViRLg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.7.6': - resolution: {integrity: sha512-hQFznpfLK8XajfAAN9Cjs0w/aVmO7iu9VZvInyrTCRcPqxV5O+rvrhRxKvC1LRMZXr5M6JRSRtepp5w+TK4kAw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.7.6': - resolution: {integrity: sha512-Aqsd9afykVMuekzjm4X4TDqwxmG4CrzoOSFe0hZrn9SMio72l5eAPnMtYoe5LsIqtjV8MNprLfXaNbjHjTegmA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.7.6': - resolution: {integrity: sha512-9h0hYnOeRVNeQgHQTvD1Im67faNSSzBZ7Adtxyu9urNLfBTJilMllFd2QuGHlKW5+uaT6ZH7ZWDb+c/enx7Lcg==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.7.6': - resolution: {integrity: sha512-izeoB8glCSe6IIDQmrVm6bvR9muk9TeKgmtY7b6l1BwL4BFnTUk4dMmpbntT90bEVQn3JPCaPtUG4HfL8VuyuA==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.7.6': - resolution: {integrity: sha512-FZxyao9eQks1MRmUshgsZTmlg/HB2oXK5fghkoWJm/1CU2q2kaJlVDll2as5j+rmWiwkp0Gidlq8wlXcEEAO+g==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/jest@0.2.36': - resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} - engines: {npm: '>= 7.0.0'} - peerDependencies: - '@swc/core': '*' - - '@swc/types@0.1.12': - resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/jest@29.5.12': - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} - - '@types/node@20.14.14': - resolution: {integrity: sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==} - - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - '@types/strip-bom@3.0.0': - resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} - - '@types/strip-json-comments@0.0.30': - resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} - - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - - acorn-walk@8.3.3: - resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} - engines: {node: '>=0.4.0'} - - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - babel-preset-current-node-syntax@1.0.1: - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-lite@1.0.30001651: - resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - cjs-module-lexer@1.3.1: - resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - dateformat@3.0.2: - resolution: {integrity: sha512-EelsCzH0gMC2YmXuMeaZ3c6md1sUJQxyb1XXc4xaisi/K6qKukqZhKPrEQyRkdNIncgYyLoDTReq0nNyuKerTg==} - - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - dotenv-cli@7.4.2: - resolution: {integrity: sha512-SbUj8l61zIbzyhIbg0FwPJq6+wjbzdn9oEtozQpZ6kW2ihCcapKVZj49oCT3oPM+mgQm+itgvUQcG5szxVrZTA==} - hasBin: true - - dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - dynamic-dedupe@0.3.0: - resolution: {integrity: sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==} - - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.5.5: - resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==} - - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-core-module@2.15.0: - resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-html-reporter@3.10.2: - resolution: {integrity: sha512-XRBa5ylHPUQoo8aJXEEdKsTruieTdlPbRktMx9WG9evMTxzJEKGFMaw5x+sQxJuClWdNR72GGwbOaz+6HIlksA==} - engines: {node: '>=4.8.3'} - peerDependencies: - jest: 19.x - 29.x - typescript: ^3.7.x || ^4.3.x || ^5.x - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - - ts-jest@29.2.4: - resolution: {integrity: sha512-3d6tgDyhCI29HlpwIq87sNuI+3Q6GLTTCeYRHCs7vDz+/3GCMwEtV9jezLyl4ZtnBgx00I7hm8PCP8cTksMGrw==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - - ts-node-dev@2.0.0: - resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} - engines: {node: '>=0.8.0'} - hasBin: true - peerDependencies: - node-notifier: '*' - typescript: '*' - peerDependenciesMeta: - node-notifier: - optional: true - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfig@7.0.0: - resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - xmlbuilder@15.0.0: - resolution: {integrity: sha512-KLu/G0DoWhkncQ9eHSI6s0/w+T4TM7rQaLhtCaL6tORv8jFlJPlnGumsgTcGfYeS1qZ/IHqrvDG7zJZ4d7e+nw==} - engines: {node: '>=8.0'} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: +packages: - '@ampproject/remapping@2.3.0': + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + dev: true - '@babel/code-frame@7.24.7': + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.24.7 picocolors: 1.0.1 + dev: true - '@babel/compat-data@7.25.2': {} + /@babel/compat-data@7.25.2: + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/core@7.25.2': + /@babel/core@7.25.2: + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 @@ -1505,30 +91,44 @@ snapshots: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true - '@babel/generator@7.25.0': + /@babel/generator@7.25.0: + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.25.2 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + dev: true - '@babel/helper-compilation-targets@7.25.2': + /@babel/helper-compilation-targets@7.25.2: + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/compat-data': 7.25.2 '@babel/helper-validator-option': 7.24.8 browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 + dev: true - '@babel/helper-module-imports@7.24.7': + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color + dev: true - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 @@ -1537,115 +137,205 @@ snapshots: '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color + dev: true - '@babel/helper-plugin-utils@7.24.8': {} + /@babel/helper-plugin-utils@7.24.8: + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-simple-access@7.24.7': + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color + dev: true - '@babel/helper-string-parser@7.24.8': {} + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-validator-identifier@7.24.7': {} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-validator-option@7.24.8': {} + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + dev: true - '@babel/helpers@7.25.0': + /@babel/helpers@7.25.0: + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.25.0 '@babel/types': 7.25.2 + dev: true - '@babel/highlight@7.24.7': + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.1 + dev: true - '@babel/parser@7.25.3': + /@babel/parser@7.25.3: + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true dependencies: '@babel/types': 7.25.2 + dev: true - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': + /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + dev: true - '@babel/template@7.25.0': + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.25.3 '@babel/types': 7.25.2 + dev: true - '@babel/traverse@7.25.3': + /@babel/traverse@7.25.3: + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.0 @@ -1656,30 +346,47 @@ snapshots: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true - '@babel/types@7.25.2': + /@babel/types@7.25.2: + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + dev: true - '@bcoe/v8-coverage@0.2.3': {} + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true - '@cspotcode/source-map-support@0.8.1': + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 + dev: true - '@istanbuljs/load-nyc-config@1.1.0': + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 + dev: true - '@istanbuljs/schema@0.1.3': {} + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true - '@jest/console@29.7.0': + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/node': 20.14.14 @@ -1687,8 +394,16 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 + dev: true - '@jest/core@29.7.0(ts-node@10.9.2)': + /@jest/core@29.7.0(ts-node@10.9.2): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -1722,30 +437,45 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - '@jest/create-cache-key-function@29.7.0': + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 + dev: true - '@jest/environment@29.7.0': + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.14.14 jest-mock: 29.7.0 + dev: true - '@jest/expect-utils@29.7.0': + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 + dev: true - '@jest/expect@29.7.0': + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: expect: 29.7.0 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/fake-timers@29.7.0': + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 @@ -1753,8 +483,11 @@ snapshots: jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 + dev: true - '@jest/globals@29.7.0': + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -1762,8 +495,16 @@ snapshots: jest-mock: 29.7.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/reporters@29.7.0': + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 @@ -1791,32 +532,47 @@ snapshots: v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/schemas@29.6.3': + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 + dev: true - '@jest/source-map@29.6.3': + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 + dev: true - '@jest/test-result@29.7.0': + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 + dev: true - '@jest/test-sequencer@29.7.0': + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 + dev: true - '@jest/transform@29.7.0': + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.25.2 '@jest/types': 29.6.3 @@ -1835,8 +591,11 @@ snapshots: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color + dev: true - '@jest/types@29.6.3': + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 @@ -1844,70 +603,160 @@ snapshots: '@types/node': 20.14.14 '@types/yargs': 17.0.33 chalk: 4.1.2 + dev: true - '@jridgewell/gen-mapping@0.3.5': + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 + dev: true - '@jridgewell/resolve-uri@3.1.2': {} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true - '@jridgewell/set-array@1.2.1': {} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true - '@jridgewell/sourcemap-codec@1.5.0': {} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: true - '@jridgewell/trace-mapping@0.3.25': + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + dev: true - '@jridgewell/trace-mapping@0.3.9': + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + dev: true - '@sinclair/typebox@0.27.8': {} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true - '@sinonjs/commons@3.0.1': + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} dependencies: type-detect: 4.0.8 + dev: true - '@sinonjs/fake-timers@10.3.0': + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: '@sinonjs/commons': 3.0.1 + dev: true - '@swc/core-darwin-arm64@1.7.6': + /@swc/core-darwin-arm64@1.7.6: + resolution: {integrity: sha512-6lYHey84ZzsdtC7UuPheM4Rm0Inzxm6Sb8U6dmKc4eCx8JL0LfWG4LC5RsdsrTxnjTsbriWlnhZBffh8ijUHIQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@swc/core-darwin-x64@1.7.6': + /@swc/core-darwin-x64@1.7.6: + resolution: {integrity: sha512-Fyl+8aH9O5rpx4O7r2KnsPpoi32iWoKOYKiipeTbGjQ/E95tNPxbmsz4yqE8Ovldcga60IPJ5OKQA3HWRiuzdw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-arm-gnueabihf@1.7.6': + /@swc/core-linux-arm-gnueabihf@1.7.6: + resolution: {integrity: sha512-2WxYTqFaOx48GKC2cbO1/IntA+w+kfCFy436Ij7qRqqtV/WAvTM9TC1OmiFbqq436rSot52qYmX8fkwdB5UcLQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-arm64-gnu@1.7.6': + /@swc/core-linux-arm64-gnu@1.7.6: + resolution: {integrity: sha512-TBEGMSe0LhvPe4S7E68c7VzgT3OMu4VTmBLS7B2aHv4v8uZO92Khpp7L0WqgYU1y5eMjk+XLDLi4kokiNHv/Hg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-arm64-musl@1.7.6': + /@swc/core-linux-arm64-musl@1.7.6: + resolution: {integrity: sha512-QI8QGL0HGT42tj7F1A+YAzhGkJjUcvvTfI1e2m704W0Enl2/UIK9v5D1zvQzYwusRyKuaQfbeBRYDh0NcLOGLg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-x64-gnu@1.7.6': + /@swc/core-linux-x64-gnu@1.7.6: + resolution: {integrity: sha512-61AYVzhjuNQAVIKKWOJu3H0/pFD28RYJGxnGg3YMhvRLRyuWNyY5Nyyj2WkKcz/ON+g38Arlz00NT1LDIViRLg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-x64-musl@1.7.6': + /@swc/core-linux-x64-musl@1.7.6: + resolution: {integrity: sha512-hQFznpfLK8XajfAAN9Cjs0w/aVmO7iu9VZvInyrTCRcPqxV5O+rvrhRxKvC1LRMZXr5M6JRSRtepp5w+TK4kAw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@swc/core-win32-arm64-msvc@1.7.6': + /@swc/core-win32-arm64-msvc@1.7.6: + resolution: {integrity: sha512-Aqsd9afykVMuekzjm4X4TDqwxmG4CrzoOSFe0hZrn9SMio72l5eAPnMtYoe5LsIqtjV8MNprLfXaNbjHjTegmA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@swc/core-win32-ia32-msvc@1.7.6': + /@swc/core-win32-ia32-msvc@1.7.6: + resolution: {integrity: sha512-9h0hYnOeRVNeQgHQTvD1Im67faNSSzBZ7Adtxyu9urNLfBTJilMllFd2QuGHlKW5+uaT6ZH7ZWDb+c/enx7Lcg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@swc/core-win32-x64-msvc@1.7.6': + /@swc/core-win32-x64-msvc@1.7.6: + resolution: {integrity: sha512-izeoB8glCSe6IIDQmrVm6bvR9muk9TeKgmtY7b6l1BwL4BFnTUk4dMmpbntT90bEVQn3JPCaPtUG4HfL8VuyuA==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@swc/core@1.7.6': + /@swc/core@1.7.6: + resolution: {integrity: sha512-FZxyao9eQks1MRmUshgsZTmlg/HB2oXK5fghkoWJm/1CU2q2kaJlVDll2as5j+rmWiwkp0Gidlq8wlXcEEAO+g==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.12 @@ -1922,120 +771,203 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.7.6 '@swc/core-win32-ia32-msvc': 1.7.6 '@swc/core-win32-x64-msvc': 1.7.6 + dev: true - '@swc/counter@0.1.3': {} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: true - '@swc/jest@0.2.36(@swc/core@1.7.6)': + /@swc/jest@0.2.36(@swc/core@1.7.6): + resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} + engines: {npm: '>= 7.0.0'} + peerDependencies: + '@swc/core': '*' dependencies: '@jest/create-cache-key-function': 29.7.0 '@swc/core': 1.7.6 '@swc/counter': 0.1.3 jsonc-parser: 3.3.1 + dev: true - '@swc/types@0.1.12': + /@swc/types@0.1.12: + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} dependencies: '@swc/counter': 0.1.3 + dev: true - '@tsconfig/node10@1.0.11': {} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + dev: true - '@tsconfig/node12@1.0.11': {} + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true - '@tsconfig/node14@1.0.3': {} + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true - '@tsconfig/node16@1.0.4': {} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true - '@types/babel__core@7.20.5': + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 + dev: true - '@types/babel__generator@7.6.8': + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: '@babel/types': 7.25.2 + dev: true - '@types/babel__template@7.4.4': + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 + dev: true - '@types/babel__traverse@7.20.6': + /@types/babel__traverse@7.20.6: + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: '@babel/types': 7.25.2 + dev: true - '@types/graceful-fs@4.1.9': + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: '@types/node': 20.14.14 + dev: true - '@types/istanbul-lib-coverage@2.0.6': {} + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true - '@types/istanbul-lib-report@3.0.3': + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 + dev: true - '@types/istanbul-reports@3.0.4': + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 + dev: true - '@types/jest@29.5.12': + /@types/jest@29.5.12: + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 + dev: true - '@types/node@20.14.14': + /@types/node@20.14.14: + resolution: {integrity: sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==} dependencies: undici-types: 5.26.5 + dev: true - '@types/stack-utils@2.0.3': {} + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true - '@types/strip-bom@3.0.0': {} + /@types/strip-bom@3.0.0: + resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} + dev: true - '@types/strip-json-comments@0.0.30': {} + /@types/strip-json-comments@0.0.30: + resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} + dev: true - '@types/yargs-parser@21.0.3': {} + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true - '@types/yargs@17.0.33': + /@types/yargs@17.0.33: + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} dependencies: '@types/yargs-parser': 21.0.3 + dev: true - acorn-walk@8.3.3: + /acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} dependencies: acorn: 8.12.1 + dev: true - acorn@8.12.1: {} + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true - ansi-escapes@4.3.2: + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.21.3 + dev: true - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true - ansi-styles@3.2.1: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 + dev: true - ansi-styles@5.2.0: {} + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: true - arg@4.1.3: {} + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true - argparse@1.0.10: + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 + dev: true - async@3.2.5: {} + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true - babel-jest@29.7.0(@babel/core@7.25.2): + /babel-jest@29.7.0(@babel/core@7.25.2): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.25.2 '@jest/transform': 29.7.0 @@ -2047,8 +979,11 @@ snapshots: slash: 3.0.0 transitivePeerDependencies: - supports-color + dev: true - babel-plugin-istanbul@6.1.1: + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} dependencies: '@babel/helper-plugin-utils': 7.24.8 '@istanbuljs/load-nyc-config': 1.1.0 @@ -2057,15 +992,22 @@ snapshots: test-exclude: 6.0.0 transitivePeerDependencies: - supports-color + dev: true - babel-plugin-jest-hoist@29.6.3: + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.25.0 '@babel/types': 7.25.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 + dev: true - babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.2): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.2): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.25.2 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) @@ -2080,69 +1022,120 @@ snapshots: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + dev: true - babel-preset-jest@29.6.3(@babel/core@7.25.2): + /babel-preset-jest@29.6.3(@babel/core@7.25.2): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.25.2 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2) + dev: true - balanced-match@1.0.2: {} + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true - binary-extensions@2.3.0: {} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true - brace-expansion@1.1.11: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true - brace-expansion@2.0.1: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 + dev: true - braces@3.0.3: + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} dependencies: fill-range: 7.1.1 + dev: true - browserslist@4.23.3: + /browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true dependencies: caniuse-lite: 1.0.30001651 electron-to-chromium: 1.5.5 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) + dev: true - bs-logger@0.2.6: + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 + dev: true - bser@2.1.1: + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 + dev: true - buffer-from@1.1.2: {} + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true - callsites@3.1.0: {} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true - camelcase@5.3.1: {} + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true - camelcase@6.3.0: {} + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true - caniuse-lite@1.0.30001651: {} + /caniuse-lite@1.0.30001651: + resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + dev: true - chalk@2.4.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true - char-regex@1.0.2: {} + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true - chokidar@3.6.0: + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -2153,38 +1146,68 @@ snapshots: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 + dev: true - ci-info@3.9.0: {} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true - cjs-module-lexer@1.3.1: {} + /cjs-module-lexer@1.3.1: + resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} + dev: true - cliui@8.0.1: + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + dev: true - co@4.6.0: {} + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true - collect-v8-coverage@1.0.2: {} + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true - color-convert@1.9.3: + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 + dev: true - color-name@1.1.3: {} + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true - concat-map@0.0.1: {} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true - convert-source-map@2.0.0: {} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true - create-jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + /create-jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 @@ -2198,69 +1221,142 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - create-require@1.1.1: {} + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true - cross-spawn@7.0.3: + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true - dateformat@3.0.2: {} + /dateformat@3.0.2: + resolution: {integrity: sha512-EelsCzH0gMC2YmXuMeaZ3c6md1sUJQxyb1XXc4xaisi/K6qKukqZhKPrEQyRkdNIncgYyLoDTReq0nNyuKerTg==} + dev: true - debug@4.3.6: + /debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 + dev: true - dedent@1.5.3: {} + /dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true - deepmerge@4.3.1: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true - detect-newline@3.1.0: {} + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true - diff-sequences@29.6.3: {} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - diff@4.0.2: {} + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true - dotenv-cli@7.4.2: + /dotenv-cli@7.4.2: + resolution: {integrity: sha512-SbUj8l61zIbzyhIbg0FwPJq6+wjbzdn9oEtozQpZ6kW2ihCcapKVZj49oCT3oPM+mgQm+itgvUQcG5szxVrZTA==} + hasBin: true dependencies: cross-spawn: 7.0.3 dotenv: 16.4.5 dotenv-expand: 10.0.0 minimist: 1.2.8 + dev: true - dotenv-expand@10.0.0: {} + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + dev: true - dotenv@16.4.5: {} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} - dynamic-dedupe@0.3.0: + /dynamic-dedupe@0.3.0: + resolution: {integrity: sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==} dependencies: xtend: 4.0.2 + dev: true - ejs@3.1.10: + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true dependencies: jake: 10.9.2 + dev: true - electron-to-chromium@1.5.5: {} + /electron-to-chromium@1.5.5: + resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==} + dev: true - emittery@0.13.1: {} + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true - error-ex@1.3.2: + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: true - escalade@3.1.2: {} + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true - escape-string-regexp@1.0.5: {} + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true - escape-string-regexp@2.0.0: {} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true - esprima@4.0.1: {} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true - execa@5.1.1: + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -2271,56 +1367,101 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: true - exit@0.1.2: {} + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true - expect@29.7.0: + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + dev: true - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true - fb-watchman@2.0.2: + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 + dev: true - filelist@1.0.4: + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 + dev: true - fill-range@7.1.1: + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + dev: true - find-up@4.1.0: + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 + dev: true - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true optional: true - function-bind@1.1.2: {} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true - gensync@1.0.0-beta.2: {} + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true - get-caller-file@2.0.5: {} + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true - get-package-type@0.1.0: {} + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true - get-stream@6.0.1: {} + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: true - glob@7.2.3: + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -2328,66 +1469,131 @@ snapshots: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true - globals@11.12.0: {} + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true - graceful-fs@4.2.11: {} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true - has-flag@3.0.0: {} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true - hasown@2.0.2: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 + dev: true - html-escaper@2.0.2: {} + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true - human-signals@2.1.0: {} + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true - import-local@3.2.0: + /import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + dev: true - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true - is-arrayish@0.2.1: {} + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.3.0 + dev: true - is-core-module@2.15.0: + /is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 + dev: true - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true - is-generator-fn@2.1.0: {} + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + dev: true - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true - is-stream@2.0.1: {} + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true - istanbul-lib-coverage@3.2.2: {} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true - istanbul-lib-instrument@5.2.1: + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} dependencies: '@babel/core': 7.25.2 '@babel/parser': 7.25.3 @@ -2396,8 +1602,11 @@ snapshots: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true - istanbul-lib-instrument@6.0.3: + /istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} dependencies: '@babel/core': 7.25.2 '@babel/parser': 7.25.3 @@ -2406,40 +1615,59 @@ snapshots: semver: 7.6.3 transitivePeerDependencies: - supports-color + dev: true - istanbul-lib-report@3.0.1: + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 + dev: true - istanbul-lib-source-maps@4.0.1: + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: debug: 4.3.6 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color + dev: true - istanbul-reports@3.1.7: + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + dev: true - jake@10.9.2: + /jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true dependencies: async: 3.2.5 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 + dev: true - jest-changed-files@29.7.0: + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 + dev: true - jest-circus@29.7.0: + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -2464,8 +1692,17 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + dev: true - jest-cli@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + /jest-cli@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/test-result': 29.7.0 @@ -2483,8 +1720,19 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - jest-config@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + /jest-config@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true dependencies: '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 @@ -2513,27 +1761,39 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + dev: true - jest-diff@29.7.0: + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-docblock@29.7.0: + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 + dev: true - jest-each@29.7.0: + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 jest-util: 29.7.0 pretty-format: 29.7.0 + dev: true - jest-environment-node@29.7.0: + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -2541,10 +1801,16 @@ snapshots: '@types/node': 20.14.14 jest-mock: 29.7.0 jest-util: 29.7.0 + dev: true - jest-get-type@29.6.3: {} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - jest-haste-map@29.7.0: + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 @@ -2559,8 +1825,14 @@ snapshots: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 + dev: true - jest-html-reporter@3.10.2(jest@29.7.0)(typescript@5.5.4): + /jest-html-reporter@3.10.2(jest@29.7.0)(typescript@5.5.4): + resolution: {integrity: sha512-XRBa5ylHPUQoo8aJXEEdKsTruieTdlPbRktMx9WG9evMTxzJEKGFMaw5x+sQxJuClWdNR72GGwbOaz+6HIlksA==} + engines: {node: '>=4.8.3'} + peerDependencies: + jest: 19.x - 29.x + typescript: ^3.7.x || ^4.3.x || ^5.x dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 @@ -2570,20 +1842,29 @@ snapshots: strip-ansi: 6.0.1 typescript: 5.5.4 xmlbuilder: 15.0.0 + dev: true - jest-leak-detector@29.7.0: + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-matcher-utils@29.7.0: + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-message-util@29.7.0: + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.24.7 '@jest/types': 29.6.3 @@ -2594,27 +1875,47 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 + dev: true - jest-mock@29.7.0: + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/node': 20.14.14 jest-util: 29.7.0 + dev: true - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true dependencies: jest-resolve: 29.7.0 + dev: true - jest-regex-util@29.6.3: {} + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - jest-resolve-dependencies@29.7.0: + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.6.3 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + dev: true - jest-resolve@29.7.0: + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -2625,8 +1926,11 @@ snapshots: resolve: 1.22.8 resolve.exports: 2.0.2 slash: 3.0.0 + dev: true - jest-runner@29.7.0: + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/environment': 29.7.0 @@ -2651,8 +1955,11 @@ snapshots: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color + dev: true - jest-runtime@29.7.0: + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -2678,8 +1985,11 @@ snapshots: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color + dev: true - jest-snapshot@29.7.0: + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.0 @@ -2703,8 +2013,11 @@ snapshots: semver: 7.6.3 transitivePeerDependencies: - supports-color + dev: true - jest-util@29.7.0: + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/node': 20.14.14 @@ -2712,8 +2025,11 @@ snapshots: ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + dev: true - jest-validate@29.7.0: + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -2721,8 +2037,11 @@ snapshots: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 + dev: true - jest-watcher@29.7.0: + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 @@ -2732,15 +2051,27 @@ snapshots: emittery: 0.13.1 jest-util: 29.7.0 string-length: 4.0.2 + dev: true - jest-worker@29.7.0: + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 20.14.14 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: true - jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + /jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/types': 29.6.3 @@ -2751,259 +2082,510 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - js-tokens@4.0.0: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true - js-yaml@3.14.1: + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 + dev: true - jsesc@2.5.2: {} + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true - json-parse-even-better-errors@2.3.1: {} + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true - jsonc-parser@3.3.1: {} + /jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + dev: true - kleur@3.0.3: {} + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true - leven@3.1.0: {} + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true - lines-and-columns@1.2.4: {} + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true - locate-path@5.0.0: + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 + dev: true - lodash.memoize@4.1.2: {} + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true - lru-cache@5.1.1: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: true - make-dir@4.0.0: + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: semver: 7.6.3 + dev: true - make-error@1.3.6: {} + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true - makeerror@1.0.12: + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 + dev: true - merge-stream@2.0.0: {} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true - micromatch@4.0.7: + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.3 picomatch: 2.3.1 + dev: true - mimic-fn@2.1.0: {} + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true - minimatch@5.1.6: + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true - mkdirp@1.0.4: {} + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true - ms@2.1.2: {} + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true - natural-compare@1.4.0: {} + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true - node-int64@0.4.0: {} + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true - node-releases@2.0.18: {} + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + dev: true - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true - npm-run-path@4.0.1: + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: path-key: 3.1.1 + dev: true - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true - onetime@5.1.2: + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 + dev: true - p-limit@2.3.0: + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 + dev: true - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: true - p-locate@4.1.0: + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 + dev: true - p-try@2.2.0: {} + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true - parse-json@5.2.0: + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true - path-exists@4.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true - path-is-absolute@1.0.1: {} + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true - path-parse@1.0.7: {} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true - picocolors@1.0.1: {} + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: true - picomatch@2.3.1: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true - pirates@4.0.6: {} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true - pkg-dir@4.2.0: + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 + dev: true - pretty-format@29.7.0: + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 + dev: true - prompts@2.4.2: + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 + dev: true - pure-rand@6.1.0: {} + /pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + dev: true - react-is@18.3.1: {} + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + dev: true - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: true - require-directory@2.1.1: {} + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true - resolve-cwd@3.0.0: + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true - resolve-from@5.0.0: {} + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true - resolve.exports@2.0.2: {} + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true - resolve@1.22.8: + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true dependencies: is-core-module: 2.15.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true - rimraf@2.7.1: + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 + dev: true - semver@6.3.1: {} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true - semver@7.6.3: {} + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + dev: true - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true - signal-exit@3.0.7: {} + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true - sisteransi@1.0.5: {} + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true - slash@3.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true - source-map-support@0.5.13: + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: true - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: true - source-map@0.6.1: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true - sprintf-js@1.0.3: {} + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true - stack-utils@2.0.6: + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 + dev: true - string-length@4.0.2: + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 + dev: true - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + dev: true - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 + dev: true - strip-bom@3.0.0: {} + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true - strip-bom@4.0.0: {} + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true - strip-final-newline@2.0.0: {} + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true - strip-json-comments@2.0.1: {} + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true - supports-color@5.5.0: + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 + dev: true - supports-color@8.1.1: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true - test-exclude@6.0.0: + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 + dev: true - tmpl@1.0.5: {} + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true - to-fast-properties@2.0.0: {} + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + dev: true - tree-kill@1.2.2: {} + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true - ts-jest@29.2.4(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.4): + /ts-jest@29.2.4(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.4): + resolution: {integrity: sha512-3d6tgDyhCI29HlpwIq87sNuI+3Q6GLTTCeYRHCs7vDz+/3GCMwEtV9jezLyl4ZtnBgx00I7hm8PCP8cTksMGrw==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true dependencies: '@babel/core': 7.25.2 bs-logger: 0.2.6 @@ -3017,8 +2599,18 @@ snapshots: semver: 7.6.3 typescript: 5.5.4 yargs-parser: 21.1.1 + dev: true - ts-node-dev@2.0.0(@swc/core@1.7.6)(@types/node@20.14.14)(typescript@5.5.4): + /ts-node-dev@2.0.0(@swc/core@1.7.6)(@types/node@20.14.14)(typescript@5.5.4): + resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} + engines: {node: '>=0.8.0'} + hasBin: true + peerDependencies: + node-notifier: '*' + typescript: '*' + peerDependenciesMeta: + node-notifier: + optional: true dependencies: chokidar: 3.6.0 dynamic-dedupe: 0.3.0 @@ -3035,8 +2627,21 @@ snapshots: - '@swc/core' - '@swc/wasm' - '@types/node' + dev: true - ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.14.14)(typescript@5.5.4): + /ts-node@10.9.2(@swc/core@1.7.6)(@types/node@20.14.14)(typescript@5.5.4): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 '@swc/core': 1.7.6 @@ -3054,68 +2659,123 @@ snapshots: typescript: 5.5.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: true - tsconfig@7.0.0: + /tsconfig@7.0.0: + resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} dependencies: '@types/strip-bom': 3.0.0 '@types/strip-json-comments': 0.0.30 strip-bom: 3.0.0 strip-json-comments: 2.0.1 + dev: true - type-detect@4.0.8: {} + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true - type-fest@0.21.3: {} + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true - typescript@5.5.4: {} + /typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + dev: true - undici-types@5.26.5: {} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true - update-browserslist-db@1.1.0(browserslist@4.23.3): + /update-browserslist-db@1.1.0(browserslist@4.23.3): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: browserslist: 4.23.3 escalade: 3.1.2 picocolors: 1.0.1 + dev: true - v8-compile-cache-lib@3.0.1: {} + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true - v8-to-istanbul@9.3.0: + /v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + dev: true - walker@1.0.8: + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 + dev: true - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 + dev: true - wrap-ansi@7.0.0: + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true - write-file-atomic@4.0.2: + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 + dev: true - xmlbuilder@15.0.0: {} + /xmlbuilder@15.0.0: + resolution: {integrity: sha512-KLu/G0DoWhkncQ9eHSI6s0/w+T4TM7rQaLhtCaL6tORv8jFlJPlnGumsgTcGfYeS1qZ/IHqrvDG7zJZ4d7e+nw==} + engines: {node: '>=8.0'} + dev: true - xtend@4.0.2: {} + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true - y18n@5.0.8: {} + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true - yallist@3.1.1: {} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true - yargs-parser@21.1.1: {} + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true - yargs@17.7.2: + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.1.2 @@ -3124,7 +2784,14 @@ snapshots: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 + dev: true - yn@3.1.1: {} + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true - yocto-queue@0.1.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/integ-tests/typescript/test-report.html b/integ-tests/typescript/test-report.html index cd2a14420..7e155fb81 100644 --- a/integ-tests/typescript/test-report.html +++ b/integ-tests/typescript/test-report.html @@ -257,34 +257,1956 @@ font-size: 1rem; padding: 0 0.5rem; } -

Test Report

Started: 2024-09-20 13:21:04
Suites (1)
0 passed
1 failed
0 pending
Tests (44)
39 passed
5 failed
0 pending
Integ tests > should work for all inputs
single bool
passed
0.452s
Integ tests > should work for all inputs
single string list
passed
0.471s
Integ tests > should work for all inputs
single class
passed
0.449s
Integ tests > should work for all inputs
multiple classes
passed
0.523s
Integ tests > should work for all inputs
single enum list
passed
0.416s
Integ tests > should work for all inputs
single float
passed
0.382s
Integ tests > should work for all inputs
single int
passed
0.408s
Integ tests > should work for all inputs
single optional string
passed
0.235s
Integ tests > should work for all inputs
single map string to string
passed
0.458s
Integ tests > should work for all inputs
single map string to class
passed
0.627s
Integ tests > should work for all inputs
single map string to map
passed
0.608s
Integ tests
should work for all outputs
passed
3.145s
Integ tests
works with retries1
passed
0.82s
Integ tests
works with retries2
passed
1.893s
Integ tests
works with fallbacks
passed
1.317s
Integ tests
should work with image from url
passed
1.158s
Integ tests
should work with image from base 64
passed
0.912s
Integ tests
should work with audio base 64
passed
0.902s
Integ tests
should work with audio from url
passed
0.927s
Integ tests
should support streaming in OpenAI
passed
3.463s
Integ tests
should support streaming in Gemini
failed
1.719s
Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "Gemini", model: Some("gemini-1.5-pro-001"), prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [Text("Write a nice short story about Dr. Pepper")] }]), request_options: {"safetySettings": Object {"threshold": String("BLOCK_LOW_AND_ABOVE"), "category": String("HARM_CATEGORY_HATE_SPEECH")}}, start_time: SystemTime { tv_sec: 1726863685, tv_nsec: 23978000 }, latency: 1.650054958s, message: "Failed to parse event: Error(\"missing field `content`\", line: 1, column: 359)", code: UnsupportedResponse(2) }
-    at BamlStream.parsed [as getFinalResponse] (/Users/sam/baml/engine/language_client_typescript/stream.js:58:39)
-    at Object.<anonymous> (/Users/sam/baml/integ-tests/typescript/tests/integ-tests.test.ts:209:19)
Integ tests
should support AWS
passed
2.307s
Integ tests
should support streaming in AWS
passed
2.125s
Integ tests
should support OpenAI shorthand
failed
5.002s
Error: thrown: "Exceeded timeout of 5000 ms for a test.
-Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."
-    at it (/Users/sam/baml/integ-tests/typescript/tests/integ-tests.test.ts:240:3)
-    at _dispatchDescribe (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/index.js:91:26)
-    at describe (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/index.js:55:5)
-    at Object.describe (/Users/sam/baml/integ-tests/typescript/tests/integ-tests.test.ts:25:1)
-    at Runtime._execModule (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runtime@29.7.0/node_modules/jest-runtime/build/index.js:1439:24)
-    at Runtime._loadModule (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runtime@29.7.0/node_modules/jest-runtime/build/index.js:1022:12)
-    at Runtime.requireModule (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runtime@29.7.0/node_modules/jest-runtime/build/index.js:882:12)
-    at jestAdapter (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)
-    at processTicksAndRejections (node:internal/process/task_queues:95:5)
-    at runTestInternal (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Integ tests
should support OpenAI shorthand streaming
failed
5.001s
Error: thrown: "Exceeded timeout of 5000 ms for a test.
-Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."
-    at it (/Users/sam/baml/integ-tests/typescript/tests/integ-tests.test.ts:245:3)
-    at _dispatchDescribe (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/index.js:91:26)
-    at describe (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/index.js:55:5)
-    at Object.describe (/Users/sam/baml/integ-tests/typescript/tests/integ-tests.test.ts:25:1)
-    at Runtime._execModule (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runtime@29.7.0/node_modules/jest-runtime/build/index.js:1439:24)
-    at Runtime._loadModule (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runtime@29.7.0/node_modules/jest-runtime/build/index.js:1022:12)
-    at Runtime.requireModule (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runtime@29.7.0/node_modules/jest-runtime/build/index.js:882:12)
-    at jestAdapter (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)
-    at processTicksAndRejections (node:internal/process/task_queues:95:5)
-    at runTestInternal (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/sam/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Integ tests
should support anthropic shorthand
passed
2.921s
Integ tests
should support anthropic shorthand streaming
passed
2.71s
Integ tests
should support streaming without iterating
passed
2.25s
Integ tests
should support streaming in Claude
passed
1.728s
Integ tests
should support vertex
failed
0.005s
Error: BamlError: BamlClientError: Something went wrong with the LLM client: LLM call failed: LLMErrorResponse { client: "Vertex", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [Text("Write a nice short story about Donkey Kong")] }]), request_options: {}, start_time: SystemTime { tv_sec: 1726863710, tv_nsec: 804411000 }, latency: 503.833µs, message: "Error {\n    context: \"Failed to build request\",\n    source: \"Service account not found\",\n}", code: Other(2) }
-    at BamlAsyncClient.parsed [as TestVertex] (/Users/sam/baml/integ-tests/typescript/baml_client/async_client.ts:1274:16)
-    at Object.<anonymous> (/Users/sam/baml/integ-tests/typescript/tests/integ-tests.test.ts:282:17)
Integ tests
supports tracing sync
passed
0.012s
Integ tests
supports tracing async
passed
4.005s
Integ tests
should work with dynamic types single
passed
0.914s
Integ tests
should work with dynamic types enum
passed
0.618s
Integ tests
should work with dynamic types class
passed
1.14s
Integ tests
should work with dynamic inputs class
passed
0.49s
Integ tests
should work with dynamic inputs list
passed
0.596s
Integ tests
should work with dynamic output map
passed
0.938s
Integ tests
should work with dynamic output union
passed
1.798s
Integ tests
should work with nested classes
failed
0.104s
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: 1726863721, tv_nsec: 326392000 }, latency: 2.065375ms, 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/sam/baml/engine/language_client_typescript/stream.js:58:39)
-    at Object.<anonymous> (/Users/sam/baml/integ-tests/typescript/tests/integ-tests.test.ts:522:19)
Integ tests
should work with dynamic client
passed
0.495s
Integ tests
should work with 'onLogEvent'
passed
1.534s
Integ tests
should work with a sync client
passed
0.426s
Integ tests
should raise an error when appropriate
passed
0.836s
\ No newline at end of file +

Test Report

Started: 2024-09-20 18:02:29
Suites (1)
0 passed
1 failed
0 pending
Tests (44)
43 passed
1 failed
0 pending
Integ tests > should work for all inputs
single bool
passed
0.369s
Integ tests > should work for all inputs
single string list
passed
0.482s
Integ tests > should work for all inputs
single class
passed
0.343s
Integ tests > should work for all inputs
multiple classes
passed
0.358s
Integ tests > should work for all inputs
single enum list
passed
0.348s
Integ tests > should work for all inputs
single float
passed
0.347s
Integ tests > should work for all inputs
single int
passed
0.393s
Integ tests > should work for all inputs
single optional string
passed
0.309s
Integ tests > should work for all inputs
single map string to string
passed
0.433s
Integ tests > should work for all inputs
single map string to class
passed
0.663s
Integ tests > should work for all inputs
single map string to map
passed
0.546s
Integ tests
should work for all outputs
passed
6.747s
Integ tests
works with retries1
passed
0.714s
Integ tests
works with retries2
passed
1.773s
Integ tests
works with fallbacks
passed
1.256s
Integ tests
should work with image from url
passed
1.037s
Integ tests
should work with image from base 64
passed
0.984s
Integ tests
should work with audio base 64
passed
1.079s
Integ tests
should work with audio from url
passed
0.817s
Integ tests
should support streaming in OpenAI
passed
2.433s
Integ tests
should support streaming in Gemini
passed
8.786s
Integ tests
should support AWS
passed
2.305s
Integ tests
should support streaming in AWS
passed
1.919s
Integ tests
should support OpenAI shorthand
passed
4.361s
Integ tests
should support OpenAI shorthand streaming
passed
6.843s
Integ tests
should support anthropic shorthand
passed
3.021s
Integ tests
should support anthropic shorthand streaming
passed
2.877s
Integ tests
should support streaming without iterating
passed
2.315s
Integ tests
should support streaming in Claude
passed
0.92s
Integ tests
should support vertex
failed
0.002s
Error: BamlError: BamlClientError: Something went wrong with the LLM client: LLM call failed: LLMErrorResponse { client: "Vertex", model: None, prompt: Chat([RenderedChatMessage { role: "user", allow_duplicate_role: false, parts: [Text("Write a nice short story about Donkey Kong")] }]), request_options: {}, start_time: SystemTime { tv_sec: 1726880604, tv_nsec: 415246000 }, latency: 138.292µs, message: "Error {\n    context: \"Failed to build request\",\n    source: \"Service account not found\",\n}", code: Other(2) }
+    at BamlAsyncClient.parsed [as TestVertex] (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:1274:16)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:282:17)
Integ tests
supports tracing sync
passed
0.01s
Integ tests
supports tracing async
passed
1.93s
Integ tests
should work with dynamic types single
passed
0.729s
Integ tests
should work with dynamic types enum
passed
0.547s
Integ tests
should work with dynamic types class
passed
1.03s
Integ tests
should work with dynamic inputs class
passed
0.521s
Integ tests
should work with dynamic inputs list
passed
0.522s
Integ tests
should work with dynamic output map
passed
0.792s
Integ tests
should work with dynamic output union
passed
1.694s
Integ tests
should work with nested classes
passed
12.737s
Integ tests
should work with dynamic client
passed
0.37s
Integ tests
should work with 'onLogEvent'
passed
1.905s
Integ tests
should work with a sync client
passed
0.472s
Integ tests
should raise an error when appropriate
passed
0.58s
Console Log
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:40: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:46:15)
got response key
+true
+52
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:132: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: 1726880561, tv_nsec: 594378000 }, latency: 74.397209ms, 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:1242:16)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:129:7) {
+  code: 'GenericFailure'
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:141: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: 1726880563, tv_nsec: 385037000 }, latency: 70.643583ms, 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:1258:16)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:138:7) {
+  code: 'GenericFailure'
+}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:294:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:69:38)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:67:22)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:303: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:297:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:69:38)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:67:22)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:303: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:300:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:69:38)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:67:22)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:303: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:315:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:326: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
dummy hi1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:326: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
dummy hi2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:326:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:333:5)
dummy hi3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:340:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:44)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:28)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:356:5)
hello world
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:326: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:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:345:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:339:17)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:345:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:339:17)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:345:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:339:17)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:326:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:345:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:339:17)
dummy secondDummyFuncArg
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:353:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:339:17)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315: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:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:353:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:339:17)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:315:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:321:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:353:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:339:17)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:326:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:353:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:339:17)
dummy thirdDummyFuncArg
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:90:44)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:88:28)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:5)
hello world
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:369: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:393: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:450: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:452: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:452: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:460: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:484: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:486: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:486: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:486: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:494:13)
final  {
+  hair_color: 'black',
+  attributes: { eye_color: 'blue', facial_hair: 'beard' },
+  height: { feet: 6, inches: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:505:13)
final  {
+  hair_color: 'black',
+  attributes: { eye_color: 'blue', facial_hair: 'beard', age: '30' },
+  height: { meters: 1.8 }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: '', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: null }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: { prop1: null, prop2: null, inner: null } }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: { prop1: null, prop2: null, inner: null } }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: { prop1: null, prop2: null, inner: null } }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: { prop1: null, prop2: null, inner: null } }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: { prop1: null, prop2: null, inner: null } }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: { prop1: null, prop2: null, inner: null } }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: { prop1: null, prop2: null, inner: null } }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: { prop1: '', prop2: null, inner: null } }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value', prop2: null, inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: null, inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: null, inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: null, inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: null, inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: null, inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: null, inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: null, inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: null, inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg { prop1: 'value1', prop2: { prop1: 'value2', prop2: '', inner: null } }
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value', inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value3', inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value3', inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value3', inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value3', inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value3', inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value3', inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value3', inner: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: null, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: null, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: null, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: null, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: null, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: null, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: null, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: null, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 4, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: null }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value3', inner: { prop2: 42, prop3: 3 } }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: { prop1: 'value2', prop2: 'value3', inner: { prop2: 42, prop3: 3 } }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.1 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:518:15)
msg {
+  prop1: 'value1',
+  prop2: {
+    prop1: 'value2',
+    prop2: 'value3',
+    inner: { prop2: 42, prop3: 3.14 }
+  }
+}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:543:15)
+    at callback (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:56:17)
onLogEvent {
+  metadata: {
+    eventId: '19120751-8c93-493a-864c-62b5272575be',
+    rootEventId: '19120751-8c93-493a-864c-62b5272575be'
+  },
+  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-09-21T01:03:45.824Z'
+}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:543:15)
+    at callback (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:56:17)
onLogEvent {
+  metadata: {
+    eventId: '4bef2beb-dd54-455b-a8ac-f145cf126b25',
+    rootEventId: '4bef2beb-dd54-455b-a8ac-f145cf126b25'
+  },
+  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-09-21T01:03:46.499Z'
+}
\ No newline at end of file diff --git a/tools/versions/engine.cfg b/tools/versions/engine.cfg index 4eaf9b20e..d12108311 100644 --- a/tools/versions/engine.cfg +++ b/tools/versions/engine.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.56.0 +current_version = 0.56.1 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/tools/versions/integ-tests.cfg b/tools/versions/integ-tests.cfg index a0bdb0d3b..7a9cf09cf 100644 --- a/tools/versions/integ-tests.cfg +++ b/tools/versions/integ-tests.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.56.0 +current_version = 0.56.1 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/tools/versions/python.cfg b/tools/versions/python.cfg index f02495016..3568e2799 100644 --- a/tools/versions/python.cfg +++ b/tools/versions/python.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.56.0 +current_version = 0.56.1 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/tools/versions/ruby.cfg b/tools/versions/ruby.cfg index 366e4c3fe..0bde260ec 100644 --- a/tools/versions/ruby.cfg +++ b/tools/versions/ruby.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.56.0 +current_version = 0.56.1 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/tools/versions/typescript.cfg b/tools/versions/typescript.cfg index 924fe13ea..4fe45c577 100644 --- a/tools/versions/typescript.cfg +++ b/tools/versions/typescript.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.56.0 +current_version = 0.56.1 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/tools/versions/vscode.cfg b/tools/versions/vscode.cfg index b3293d905..6f7358162 100644 --- a/tools/versions/vscode.cfg +++ b/tools/versions/vscode.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.56.0 +current_version = 0.56.1 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/typescript/vscode-ext/packages/package.json b/typescript/vscode-ext/packages/package.json index 4899b43d5..43709c1cc 100644 --- a/typescript/vscode-ext/packages/package.json +++ b/typescript/vscode-ext/packages/package.json @@ -2,7 +2,7 @@ "name": "baml-extension", "displayName": "Baml", "description": "BAML is a DSL for AI applications.", - "version": "0.56.0", + "version": "0.56.1", "publisher": "Boundary", "repository": "https://github.com/BoundaryML/baml", "homepage": "https://www.boundaryml.com",