diff --git a/CHANGELOG.md b/CHANGELOG.md index e507ff70a..0de5217b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,31 @@ All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines. +## [0.66.0](https://github.com/boundaryml/baml/compare/0.65.0..0.66.0) - 2024-11-04 + +### Features + +- BAML_LOG supports JSON mode (#1137) - ([f140767](https://github.com/boundaryml/baml/commit/f1407674fc0d91c079fd93b655ff097a05475740)) - aaronvg +- Block-level constraints (#1124) - ([e931acb](https://github.com/boundaryml/baml/commit/e931acb7f765e86a70cb33cd86728aabe058024b)) - Greg Hale +- Parser improvement! Streaming arrays is much more stable and parsing file paths improved (#1134) - ([56570f0](https://github.com/boundaryml/baml/commit/56570f0fe6c4c09594eb757c8a78158cf0e73fcd)) - hellovai + + +### Documentation + +- Improvements to Reference Documentation (#1125) - ([12c8fa7](https://github.com/boundaryml/baml/commit/12c8fa7ec5aea8571f27fb65b8f2a327a1a5e0ce)) - hellovai +- README.md: typo/readability fixes (#1092) - ([cb67e31](https://github.com/boundaryml/baml/commit/cb67e316dce2c4ee29b6fd625316f5df4409335f)) - Prathamesh Pawar +- README.md: Correct Promptfiddle link (#1108) - ([b296c4c](https://github.com/boundaryml/baml/commit/b296c4cf6104513e40ef89f17d534d6d8858f223)) - Sagar Sharma +- Fix broken links (#1133) - ([e0bfc94](https://github.com/boundaryml/baml/commit/e0bfc94f453f35971e871a4b121a1f35fa0b17cc)) - aaronvg + + +### Bug-fix + +- Improve syntax highlighting for template strings (#1130) - ([54de4b6](https://github.com/boundaryml/baml/commit/54de4b6ed9144a68fe0a84d916679f9aec46fe28)) - hellovai +- Improved static analysis for literals in jinja (#1132) - ([b8a221f](https://github.com/boundaryml/baml/commit/b8a221ff44668e2b1d9fa75100c270ce5a227ed4)) - Greg Hale +- Adds missing imports to the sync_client template (#1131) - ([823f74c](https://github.com/boundaryml/baml/commit/823f74c88df3cc7b9ebb4b19b74b5ee6edbafd9c)) - Jesus Lizama +- Add `Checked` in baml client typescript (#1135) - ([ad759cd](https://github.com/boundaryml/baml/commit/ad759cdb67cb0b6a6d2bd0d16575e3e1bc847a68)) - Greg Hale +- Produce syntax error when user misses return type on functions (#1129) - ([034d6eb](https://github.com/boundaryml/baml/commit/034d6ebda38aded1c6a93321d363575156b0ecc6)) - hellovai + ## [0.65.0](https://github.com/boundaryml/baml/compare/0.64.0..0.65.0) - 2024-10-31 ### Documentation diff --git a/engine/Cargo.lock b/engine/Cargo.lock index e9095ddac..bec21783f 100644 --- a/engine/Cargo.lock +++ b/engine/Cargo.lock @@ -773,7 +773,7 @@ dependencies = [ [[package]] name = "baml-cli" -version = "0.65.0" +version = "0.66.0" dependencies = [ "ambassador", "anyhow", @@ -860,7 +860,7 @@ dependencies = [ [[package]] name = "baml-lib" -version = "0.65.0" +version = "0.66.0" dependencies = [ "base64 0.13.1", "dissimilar", @@ -899,7 +899,7 @@ dependencies = [ [[package]] name = "baml-runtime" -version = "0.65.0" +version = "0.66.0" dependencies = [ "ambassador", "anyhow", @@ -992,7 +992,7 @@ dependencies = [ [[package]] name = "baml-schema-build" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "baml-runtime", @@ -1028,7 +1028,7 @@ dependencies = [ [[package]] name = "baml-types" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "clap", @@ -1155,7 +1155,7 @@ dependencies = [ [[package]] name = "bstd" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "assert_cmd", @@ -2539,7 +2539,7 @@ dependencies = [ [[package]] name = "internal-baml-codegen" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "askama", @@ -2564,7 +2564,7 @@ dependencies = [ [[package]] name = "internal-baml-core" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "baml-types", @@ -2600,7 +2600,7 @@ dependencies = [ [[package]] name = "internal-baml-diagnostics" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "colored", @@ -2613,7 +2613,7 @@ dependencies = [ [[package]] name = "internal-baml-jinja" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "askama", @@ -2634,7 +2634,7 @@ dependencies = [ [[package]] name = "internal-baml-jinja-types" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "askama", @@ -2653,7 +2653,7 @@ dependencies = [ [[package]] name = "internal-baml-parser-database" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "baml-types", @@ -2676,7 +2676,7 @@ dependencies = [ [[package]] name = "internal-baml-prompt-parser" -version = "0.65.0" +version = "0.66.0" dependencies = [ "internal-baml-diagnostics", "internal-baml-schema-ast", @@ -2688,7 +2688,7 @@ dependencies = [ [[package]] name = "internal-baml-schema-ast" -version = "0.65.0" +version = "0.66.0" dependencies = [ "baml-types", "either", @@ -2793,7 +2793,7 @@ checksum = "9dbbfed4e59ba9750e15ba154fdfd9329cee16ff3df539c2666b70f58cc32105" [[package]] name = "jsonish" -version = "0.65.0" +version = "0.66.0" dependencies = [ "anyhow", "assert-json-diff", diff --git a/engine/Cargo.toml b/engine/Cargo.toml index bdc54ba6b..69f3478f3 100644 --- a/engine/Cargo.toml +++ b/engine/Cargo.toml @@ -95,7 +95,7 @@ internal-baml-jinja = { path = "baml-lib/jinja" } internal-baml-schema-ast = { path = "baml-lib/schema-ast" } [workspace.package] -version = "0.65.0" +version = "0.66.0" authors = ["Boundary "] description = "BAML Toolchain" diff --git a/engine/language_client_python/pyproject.toml b/engine/language_client_python/pyproject.toml index 8fbc745fc..85bd52838 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.65.0" +version = "0.66.0" 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 3cf6fa566..93b3b97fa 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.65.0" + spec.version = "0.66.0" 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 7672e0806..dd9193b8e 100644 --- a/engine/language_client_typescript/package.json +++ b/engine/language_client_typescript/package.json @@ -1,6 +1,6 @@ { "name": "@boundaryml/baml", - "version": "0.65.0", + "version": "0.66.0", "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 2a769f14b..94dec0f41 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.65.0" + version "0.66.0" } generator lang_typescript { output_type typescript output_dir "../typescript" - version "0.65.0" + version "0.66.0" } generator lang_ruby { output_type ruby/sorbet output_dir "../ruby" - version "0.65.0" + version "0.66.0" } // generator openapi { // output_type rest/openapi // output_dir "../openapi" -// version "0.65.0" +// version "0.66.0" // on_generate "rm .gitignore" // } diff --git a/integ-tests/python/baml_client/inlinedbaml.py b/integ-tests/python/baml_client/inlinedbaml.py index 6452eff9c..b5d5b1e32 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 venue \"barisa\" | \"ox_burger\"\n}\n\nfunction ExtractReceiptInfo(email: string, reason: \"curiosity\" | \"personal_finance\") -> 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.65.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.65.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.65.0\"\n}\n\n// generator openapi {\n// output_type rest/openapi\n// output_dir \"../openapi\"\n// version \"0.65.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.66.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.66.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.66.0\"\n}\n\n// generator openapi {\n// output_type rest/openapi\n// output_dir \"../openapi\"\n// version \"0.66.0\"\n// on_generate \"rm .gitignore\"\n// }\n", "test-files/aliases/aliased-inputs.baml": "\nclass InputClass {\n key string @alias(\"color\")\n key2 string\n}\n\n\nclass InputClassNested {\n key string\n nested InputClass @alias(\"interesting-key\")\n}\n \n\nfunction AliasedInputClass(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {{input}}\n\n This is a test. What's the name of the first json key above? Remember, tell me the key, not value.\n \"#\n}\n \nfunction AliasedInputClass2(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {# making sure we can still access the original key #}\n {%if input.key == \"tiger\"%}\n Repeat this value back to me, and nothing else: {{input.key}}\n {%endif%}\n \"#\n}\n \n function AliasedInputClassNested(input: InputClassNested) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n\n {{input}}\n\n This is a test. What's the name of the second json key above? Remember, tell me the key, not value.\n \"#\n }\n\n\nenum AliasedEnum {\n KEY_ONE @alias(\"tiger\")\n KEY_TWO\n}\n\nfunction AliasedInputEnum(input: AliasedEnum) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\")}}\n\n\n Write out this word only in your response, in lowercase:\n ---\n {{input}}\n ---\n Answer:\n \"#\n}\n\n\nfunction AliasedInputList(input: AliasedEnum[]) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n Given this array:\n ---\n {{input}}\n ---\n\n Return the first element in the array:\n \"#\n}\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}", diff --git a/integ-tests/python/report.html b/integ-tests/python/report.html index e405aa4b1..f99e905d2 100644 --- a/integ-tests/python/report.html +++ b/integ-tests/python/report.html @@ -3,11 +3,11 @@
Test Report

Summary

91
1 failed 90 passed

Tests

tests/test_functions.py 187 0:03:05.211790

PASSED test_env_vars_reset 0:00:01.366683

Setup

Call

Captured stdout call
Context depth is greater than 0!
+    
Test Report

Summary

94
3 failed 91 passed

Tests

tests/test_functions.py 388 0:03:14.480245

PASSED test_env_vars_reset 0:00:03.537187

Setup

Call

Captured stdout call
Context depth is greater than 0!
 Except but ending trace!
 Context depth is greater than 0!
-
Captured stderr call
[2024-10-31T01:07:40Z WARN  baml_events] Function ExtractPeople:
-    Client: GPT4 (<unknown>) - 170ms
+
Captured stderr call
[2024-11-04T16:53:21Z WARN  baml_events] Function ExtractPeople:
+    Client: GPT4 (<unknown>) - 202ms
     ---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.
     
@@ -32,8 +32,8 @@
         }
     }
     
-[2024-10-31T01:07:41Z INFO  baml_events] Function ExtractPeople:
-    Client: GPT4 (gpt-4o-2024-08-06) - 801ms. StopReason: stop
+[2024-11-04T16:53:24Z INFO  baml_events] Function ExtractPeople:
+    Client: GPT4 (gpt-4o-2024-08-06) - 2938ms. StopReason: stop. Tokens(in/out): 124/22
     ---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.
     
@@ -60,11 +60,11 @@
         "hair_color": "BLACK"
       }
     ]
-

Teardown

PASSED test_sync 0:00:00.494807

Setup

Call

Captured stdout call
got response key
+

Teardown

PASSED test_sync 0:00:00.472642

Setup

Call

Captured stdout call
got response key
 true
 52
-
Captured stderr call
[2024-10-31T01:07:42Z INFO  baml_events] Function TestFnNamedArgsSingleClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 490ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:53:24Z INFO  baml_events] Function TestFnNamedArgsSingleClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 468ms. StopReason: stop. Tokens(in/out): 19/5
     ---PROMPT---
     [chat] system: Print these values back to me:
     key
@@ -77,8 +77,8 @@
     52
     ---Parsed Response (string)---
     "key\ntrue\n52"
-

Teardown

PASSED TestAllInputs::test_single_bool 0:00:00.480382

Setup

Call

Captured stderr call
[2024-10-31T01:07:42Z INFO  baml_events] Function TestFnNamedArgsSingleBool:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 473ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_bool 0:00:00.477585

Setup

Call

Captured stderr call
[2024-11-04T16:53:25Z INFO  baml_events] Function TestFnNamedArgsSingleBool:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 469ms. StopReason: stop. Tokens(in/out): 15/1
     ---PROMPT---
     [chat] system: Return this value back to me: true
     
@@ -86,8 +86,8 @@
     true
     ---Parsed Response (string)---
     "true"
-

Teardown

PASSED TestAllInputs::test_single_string_list 0:00:00.600075

Setup

Call

Captured stderr call
[2024-10-31T01:07:43Z INFO  baml_events] Function TestFnNamedArgsSingleStringList:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 594ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_string_list 0:00:00.467412

Setup

Call

Captured stderr call
[2024-11-04T16:53:25Z INFO  baml_events] Function TestFnNamedArgsSingleStringList:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 457ms. StopReason: stop. Tokens(in/out): 23/9
     ---PROMPT---
     [chat] system: Return this value back to me: ["a", "b", "c"]
     
@@ -95,19 +95,74 @@
     ["a", "b", "c"]
     ---Parsed Response (string)---
     "[\"a\", \"b\", \"c\"]"
-

Teardown

PASSED TestAllInputs::test_return_literal_union 0:00:00.535051

Setup

Call

Captured stderr call
[2024-10-31T01:07:43Z INFO  baml_events] Function LiteralUnionsTest:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 529ms. StopReason: stop
+

Teardown

FAILED TestAllInputs::test_return_literal_union 0:00:00.428025

baml_py.internal_monkeypatch.BamlValidationError: BamlValidationError(message=Failed to parse LLM response: Failed to coerce value: : Failed to find any (1 | true | "string output") in 3 items
+  - : Expected 1, got Object([("status", Number(Number(1)))]).
+  - : Expected true, got Object([("status", Number(Number(1)))]).
+  - : Expected "string output", got Object([("status", Number(Number(1)))])., raw_output={
+    "status": 1
+}, prompt=[chat] system: Return one of these values: 
+Answer in JSON using any of these schemas:
+1 or true or "string output"
+)

Setup

Call

self = 
+
+>   ???
+
+tests/test_functions.py:108: 
+_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+
+self = , input = 'a'
+baml_options = {}
+
+    async def LiteralUnionsTest(
+        self,
+        input: str,
+        baml_options: BamlCallOptions = {},
+    ) -> Union[Literal[1], Literal[True], Literal["string output"]]:
+      __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(
+        "LiteralUnionsTest",
+        {
+          "input": input,
+        },
+        self.__ctx_manager.get(),
+        tb,
+        __cr__,
+      )
+>     return cast(Union[Literal[1], Literal[True], Literal["string output"]], raw.cast_to(types, types))
+E     baml_py.internal_monkeypatch.BamlValidationError: BamlValidationError(message=Failed to parse LLM response: Failed to coerce value: : Failed to find any (1 | true | "string output") in 3 items
+E       - : Expected 1, got Object([("status", Number(Number(1)))]).
+E       - : Expected true, got Object([("status", Number(Number(1)))]).
+E       - : Expected "string output", got Object([("status", Number(Number(1)))])., raw_output={
+E         "status": 1
+E     }, prompt=[chat] system: Return one of these values: 
+E     Answer in JSON using any of these schemas:
+E     1 or true or "string output"
+E     )
+
+baml_client/async_client.py:1270: BamlValidationError
Captured stderr call
[2024-11-04T16:53:26Z WARN  baml_events] Function LiteralUnionsTest:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 422ms. StopReason: stop. Tokens(in/out): 31/9
     ---PROMPT---
     [chat] system: Return one of these values: 
     Answer in JSON using any of these schemas:
     1 or true or "string output"
     
     ---LLM REPLY---
-    1
-    ---Parsed Response (int)---
-    1
-

Teardown

PASSED TestAllInputs::test_constraints 0:00:01.309052

Setup

Call

Captured stderr call
[2024-10-31T01:07:45Z INFO  baml_events] Function PredictAge:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1295ms. StopReason: stop
+    {
+        "status": 1
+    }
+    ---Parsed Response (Error)---
+    Failed to coerce value: <root>: Failed to find any (1 | true | "string output") in 3 items
+      - <root>: Expected 1, got Object([("status", Number(Number(1)))]).
+      - <root>: Expected true, got Object([("status", Number(Number(1)))]).
+      - <root>: Expected "string output", got Object([("status", Number(Number(1)))]).
+

Teardown

PASSED TestAllInputs::test_constraints 0:00:00.959370

Setup

Call

Captured stderr call
[2024-11-04T16:53:27Z INFO  baml_events] Function PredictAge:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 948ms. StopReason: stop. Tokens(in/out): 116/36
     ---PROMPT---
     [chat] system: Using your understanding of the historical popularity
     of names, predict the age of a person with the name
@@ -130,21 +185,58 @@
     ---LLM REPLY---
     {
       "planetary_age": {
-        "age": 41
+        "age": 61
       },
-      "certainty": 95,
+      "certainty": 90,
       "species": "Homo sapiens"
     }
     ---Parsed Response (class FooAny)---
     {
       "planetary_age": {
-        "age": 41
+        "age": {
+          "value": 61,
+          "checks": {
+            "young_enough": {
+              "name": "young_enough",
+              "expression": "this < 30",
+              "status": "failed"
+            }
+          }
+        }
       },
-      "certainty": 95,
-      "species": "Homo sapiens"
+      "certainty": {
+        "value": 90,
+        "checks": {
+          "unreasonably_certain": {
+            "name": "unreasonably_certain",
+            "expression": "this == 102931",
+            "status": "failed"
+          }
+        }
+      },
+      "species": {
+        "value": "Homo sapiens",
+        "checks": {
+          "regex_bad": {
+            "name": "regex_bad",
+            "expression": "this|regex_match(\"neanderthalensis\")",
+            "status": "failed"
+          },
+          "regex_good": {
+            "name": "regex_good",
+            "expression": "this|regex_match(\"Homo\")",
+            "status": "succeeded"
+          },
+          "trivial": {
+            "name": "trivial",
+            "expression": "this == \"Homo sapiens\"",
+            "status": "succeeded"
+          }
+        }
+      }
     }
-

Teardown

PASSED TestAllInputs::test_constraint_union_variant_checking 0:00:01.724387

Setup

Call

Captured stderr call
[2024-10-31T01:07:46Z INFO  baml_events] Function ExtractContactInfo:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1702ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_constraint_union_variant_checking 0:00:00.891976

Setup

Call

Captured stderr call
[2024-11-04T16:53:28Z INFO  baml_events] Function ExtractContactInfo:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 871ms. StopReason: stop. Tokens(in/out): 98/39
     ---PROMPT---
     [chat] system: Extract a primary contact info, and if possible a secondary contact
     info, from this document:
@@ -183,8 +275,8 @@
         "value": "111-222-3333"
       }
     }
-

Teardown

PASSED TestAllInputs::test_return_malformed_constraint 0:00:00.644740

Setup

Call

Captured stderr call
[2024-10-31T01:07:47Z WARN  baml_events] Function ReturnMalformedConstraints:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 638ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_return_malformed_constraint 0:00:00.676887

Setup

Call

Captured stderr call
[2024-11-04T16:53:28Z WARN  baml_events] Function ReturnMalformedConstraints:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 665ms. StopReason: stop. Tokens(in/out): 28/9
     ---PROMPT---
     [chat] system: Return the integer after 1
     
@@ -201,8 +293,10 @@
     Failed to coerce value: <root>: Failed while parsing required fields: missing=0, unparsed=1
       - <root>: Failed to parse field foo: foo: Failed to evaluate constraints: unknown method: object has no method named length (in <string>:1)
         - foo: Failed to evaluate constraints: unknown method: object has no method named length (in <string>:1)
-

Teardown

PASSED TestAllInputs::test_use_malformed_constraint 0:00:00.003271

Setup

Call

Teardown

PASSED TestAllInputs::test_single_class 0:00:00.415704

Setup

Call

Captured stderr call
[2024-10-31T01:07:48Z INFO  baml_events] Function TestFnNamedArgsSingleClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 410ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_use_malformed_constraint 0:00:00.001900

Setup

Call

Captured stderr call
[2024-11-04T16:53:28Z ERROR baml_runtime::tracing]   Error: a: Failed to evaluate assert: Error evaluating constraint: unknown method: object has no method named length (in <string>:1)
+    
+

Teardown

PASSED TestAllInputs::test_single_class 0:00:00.512190

Setup

Call

Captured stderr call
[2024-11-04T16:53:29Z INFO  baml_events] Function TestFnNamedArgsSingleClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 509ms. StopReason: stop. Tokens(in/out): 19/5
     ---PROMPT---
     [chat] system: Print these values back to me:
     key
@@ -215,8 +309,8 @@
     52
     ---Parsed Response (string)---
     "key\ntrue\n52"
-

Teardown

PASSED TestAllInputs::test_multiple_args 0:00:00.579959

Setup

Call

Captured stderr call
[2024-10-31T01:07:48Z INFO  baml_events] Function TestMulticlassNamedArgs:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 573ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_multiple_args 0:00:00.626104

Setup

Call

Captured stderr call
[2024-11-04T16:53:29Z INFO  baml_events] Function TestMulticlassNamedArgs:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 619ms. StopReason: stop. Tokens(in/out): 25/11
     ---PROMPT---
     [chat] system: Print these values back to me:
     key
@@ -235,8 +329,8 @@
     64
     ---Parsed Response (string)---
     "key\ntrue\n52\nkey\ntrue\n64"
-

Teardown

PASSED TestAllInputs::test_single_enum_list 0:00:00.431302

Setup

Call

Captured stderr call
[2024-10-31T01:07:49Z INFO  baml_events] Function TestFnNamedArgsSingleEnumList:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 424ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_enum_list 0:00:00.502776

Setup

Call

Captured stderr call
[2024-11-04T16:53:30Z INFO  baml_events] Function TestFnNamedArgsSingleEnumList:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 494ms. StopReason: stop. Tokens(in/out): 18/4
     ---PROMPT---
     [chat] system: Print these values back to me:
     ["TWO"]
@@ -245,8 +339,8 @@
     ["TWO"]
     ---Parsed Response (string)---
     "[\"TWO\"]"
-

Teardown

PASSED TestAllInputs::test_single_float 0:00:00.341839

Setup

Call

Captured stderr call
[2024-10-31T01:07:49Z INFO  baml_events] Function TestFnNamedArgsSingleFloat:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 336ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_float 0:00:00.445423

Setup

Call

Captured stderr call
[2024-11-04T16:53:30Z INFO  baml_events] Function TestFnNamedArgsSingleFloat:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 438ms. StopReason: stop. Tokens(in/out): 18/3
     ---PROMPT---
     [chat] system: Return this value back to me: 3.12
     
@@ -254,8 +348,8 @@
     3.12
     ---Parsed Response (string)---
     "3.12"
-

Teardown

PASSED TestAllInputs::test_single_int 0:00:00.554385

Setup

Call

Captured stderr call
[2024-10-31T01:07:49Z INFO  baml_events] Function TestFnNamedArgsSingleInt:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 548ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_int 0:00:00.523071

Setup

Call

Captured stderr call
[2024-11-04T16:53:31Z INFO  baml_events] Function TestFnNamedArgsSingleInt:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 516ms. StopReason: stop. Tokens(in/out): 17/2
     ---PROMPT---
     [chat] system: Return this value back to me: 3566
     
@@ -263,8 +357,8 @@
     3566
     ---Parsed Response (string)---
     "3566"
-

Teardown

PASSED TestAllInputs::test_single_literal_int 0:00:00.671725

Setup

Call

Captured stderr call
[2024-10-31T01:07:50Z INFO  baml_events] Function TestNamedArgsLiteralInt:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 665ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_literal_int 0:00:00.322169

Setup

Call

Captured stderr call
[2024-11-04T16:53:31Z INFO  baml_events] Function TestNamedArgsLiteralInt:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 315ms. StopReason: stop. Tokens(in/out): 16/1
     ---PROMPT---
     [chat] system: Return this value back to me: 1
     
@@ -272,8 +366,8 @@
     1
     ---Parsed Response (string)---
     "1"
-

Teardown

PASSED TestAllInputs::test_single_literal_bool 0:00:00.524066

Setup

Call

Captured stderr call
[2024-10-31T01:07:51Z INFO  baml_events] Function TestNamedArgsLiteralBool:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 517ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_literal_bool 0:00:00.328030

Setup

Call

Captured stderr call
[2024-11-04T16:53:32Z INFO  baml_events] Function TestNamedArgsLiteralBool:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 322ms. StopReason: stop. Tokens(in/out): 15/1
     ---PROMPT---
     [chat] system: Return this value back to me: true
     
@@ -281,8 +375,8 @@
     true
     ---Parsed Response (string)---
     "true"
-

Teardown

PASSED TestAllInputs::test_single_literal_string 0:00:00.386349

Setup

Call

Captured stderr call
[2024-10-31T01:07:51Z INFO  baml_events] Function TestNamedArgsLiteralString:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 380ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_literal_string 0:00:00.467905

Setup

Call

Captured stderr call
[2024-11-04T16:53:32Z INFO  baml_events] Function TestNamedArgsLiteralString:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 459ms. StopReason: stop. Tokens(in/out): 16/2
     ---PROMPT---
     [chat] system: Return this value back to me: My String
     
@@ -290,8 +384,8 @@
     My String
     ---Parsed Response (string)---
     "My String"
-

Teardown

PASSED TestAllInputs::test_class_with_literal_prop 0:00:00.565372

Setup

Call

Captured stderr call
[2024-10-31T01:07:52Z INFO  baml_events] Function FnLiteralClassInputOutput:
-    Client: GPT4 (gpt-4o-2024-08-06) - 558ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_class_with_literal_prop 0:00:00.848156

Setup

Call

Captured stderr call
[2024-11-04T16:53:33Z INFO  baml_events] Function FnLiteralClassInputOutput:
+    Client: GPT4 (gpt-4o-2024-08-06) - 839ms. StopReason: stop. Tokens(in/out): 30/9
     ---PROMPT---
     [chat] system: Return the same object you were given.
     Answer in JSON using this schema:
@@ -307,8 +401,18 @@
     {
       "prop": "hello"
     }
-

Teardown

PASSED TestAllInputs::test_literal_classs_with_literal_union_prop 0:00:00.637794

Setup

Call

Captured stderr call
[2024-10-31T01:07:52Z INFO  baml_events] Function FnLiteralUnionClassInputOutput:
-    Client: GPT4 (gpt-4o-2024-08-06) - 628ms. StopReason: stop
+

Teardown

FAILED TestAllInputs::test_literal_classs_with_literal_union_prop 0:00:00.699651

AssertionError: assert False
+ +  where False = isinstance(LiteralClassTwo(prop='two'), LiteralClassOne)

Setup

Call

self = 
+
+    @pytest.mark.asyncio
+    async def test_literal_classs_with_literal_union_prop(self):
+        res = await b.FnLiteralUnionClassInputOutput(input=LiteralClassOne(prop="one"))
+>       assert isinstance(res, LiteralClassOne)
+E       AssertionError: assert False
+E        +  where False = isinstance(LiteralClassTwo(prop='two'), LiteralClassOne)
+
+tests/test_functions.py:205: AssertionError
Captured stderr call
[2024-11-04T16:53:34Z INFO  baml_events] Function FnLiteralUnionClassInputOutput:
+    Client: GPT4 (gpt-4o-2024-08-06) - 690ms. StopReason: stop. Tokens(in/out): 41/13
     ---PROMPT---
     [chat] system: Return the same object you were given.
     Answer in JSON using any of these schemas:
@@ -321,27 +425,27 @@
     ---LLM REPLY---
     ```json
     {
-      "prop": "one"
+      "prop": "two"
     }
     ```
-    ---Parsed Response (class LiteralClassOne)---
+    ---Parsed Response (class LiteralClassTwo)---
     {
-      "prop": "one"
+      "prop": "two"
     }
-

Teardown

PASSED TestAllInputs::test_single_map_string_to_string 0:00:00.650911

Setup

Call

Captured stderr call
[2024-10-31T01:07:53Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToString:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 644ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_map_string_to_string 0:00:00.593131

Setup

Call

Captured stderr call
[2024-11-04T16:53:34Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToString:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 588ms. StopReason: stop. Tokens(in/out): 29/15
     ---PROMPT---
-    [chat] system: Return this value back to me: {"dolor": "sit", "lorem": "ipsum"}
+    [chat] system: Return this value back to me: {"lorem": "ipsum", "dolor": "sit"}
     
     ---LLM REPLY---
-    {"dolor": "sit", "lorem": "ipsum"}
+    {"lorem": "ipsum", "dolor": "sit"}
     ---Parsed Response (map<string, string>)---
     {
-      "dolor": "sit",
-      "lorem": "ipsum"
+      "lorem": "ipsum",
+      "dolor": "sit"
     }
-

Teardown

PASSED TestAllInputs::test_single_map_string_to_class 0:00:00.691946

Setup

Call

Captured stderr call
[2024-10-31T01:07:54Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 684ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_map_string_to_class 0:00:00.617705

Setup

Call

Captured stderr call
[2024-11-04T16:53:35Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 608ms. StopReason: stop. Tokens(in/out): 28/18
     ---PROMPT---
     [chat] system: Return this value back to me: {"lorem": {
         "word": "ipsum",
@@ -359,8 +463,8 @@
         "word": "ipsum"
       }
     }
-

Teardown

PASSED TestAllInputs::test_single_map_string_to_map 0:00:00.609274

Setup

Call

Captured stderr call
[2024-10-31T01:07:54Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToMap:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 602ms. StopReason: stop
+

Teardown

PASSED TestAllInputs::test_single_map_string_to_map 0:00:00.550053

Setup

Call

Captured stderr call
[2024-11-04T16:53:35Z INFO  baml_events] Function TestFnNamedArgsSingleMapStringToMap:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 543ms. StopReason: stop. Tokens(in/out): 25/11
     ---PROMPT---
     [chat] system: Return this value back to me: {"lorem": {"word": "ipsum"}}
     
@@ -372,8 +476,8 @@
         "word": "ipsum"
       }
     }
-

Teardown

PASSED test_should_work_for_all_outputs 0:00:05.706594

Setup

Call

Captured stderr call
[2024-10-31T01:07:55Z INFO  baml_events] Function FnOutputBool:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 494ms. StopReason: stop
+

Teardown

PASSED test_should_work_for_all_outputs 0:00:05.367930

Setup

Call

Captured stderr call
[2024-11-04T16:53:36Z INFO  baml_events] Function FnOutputBool:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 436ms. StopReason: stop. Tokens(in/out): 16/1
     ---PROMPT---
     [chat] system: Return a true: Answer as a: bool
     
@@ -381,8 +485,8 @@
     True
     ---Parsed Response (bool)---
     true
-[2024-10-31T01:07:55Z INFO  baml_events] Function FnOutputInt:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 569ms. StopReason: stop
+[2024-11-04T16:53:36Z INFO  baml_events] Function FnOutputInt:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 333ms. StopReason: stop. Tokens(in/out): 17/1
     ---PROMPT---
     [chat] system: Return the integer 5 with no additional context.
     
@@ -390,8 +494,8 @@
     5
     ---Parsed Response (int)---
     5
-[2024-10-31T01:07:56Z INFO  baml_events] Function FnOutputLiteralInt:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 615ms. StopReason: stop
+[2024-11-04T16:53:37Z INFO  baml_events] Function FnOutputLiteralInt:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 304ms. StopReason: stop. Tokens(in/out): 18/1
     ---PROMPT---
     [chat] system: Return an integer: Answer using this specific value:
     5
@@ -400,8 +504,8 @@
     5
     ---Parsed Response (int)---
     5
-[2024-10-31T01:07:56Z INFO  baml_events] Function FnOutputLiteralBool:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 516ms. StopReason: stop
+[2024-11-04T16:53:37Z INFO  baml_events] Function FnOutputLiteralBool:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 331ms. StopReason: stop. Tokens(in/out): 18/1
     ---PROMPT---
     [chat] system: Return a false: Answer using this specific value:
     false
@@ -410,8 +514,8 @@
     false
     ---Parsed Response (bool)---
     false
-[2024-10-31T01:07:57Z INFO  baml_events] Function FnOutputLiteralString:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 526ms. StopReason: stop
+[2024-11-04T16:53:37Z INFO  baml_events] Function FnOutputLiteralString:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 471ms. StopReason: stop. Tokens(in/out): 21/2
     ---PROMPT---
     [chat] system: Return a string: Answer using this specific value:
     "example output"
@@ -420,8 +524,8 @@
     example output
     ---Parsed Response (string)---
     "example output"
-[2024-10-31T01:07:57Z INFO  baml_events] Function FnOutputClassList:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 510ms. StopReason: stop
+[2024-11-04T16:53:38Z INFO  baml_events] Function FnOutputClassList:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 969ms. StopReason: stop. Tokens(in/out): 46/44
     ---PROMPT---
     [chat] system: Return a JSON array that follows this schema: 
     Answer with a JSON Array using this schema:
@@ -436,20 +540,28 @@
     
     ---LLM REPLY---
     [
-        {
-            "prop1": "example",
-            "prop2": 123
-        }
+      {
+        "prop1": "example1",
+        "prop2": 25
+      },
+      {
+        "prop1": "example2",
+        "prop2": 50
+      }
     ]
     ---Parsed Response (list<class TestOutputClass>)---
     [
       {
-        "prop1": "example",
-        "prop2": 123
+        "prop1": "example1",
+        "prop2": 25
+      },
+      {
+        "prop1": "example2",
+        "prop2": 50
       }
     ]
-[2024-10-31T01:07:58Z INFO  baml_events] Function FnOutputClassWithEnum:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 571ms. StopReason: stop
+[2024-11-04T16:53:39Z INFO  baml_events] Function FnOutputClassWithEnum:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 639ms. StopReason: stop. Tokens(in/out): 48/21
     ---PROMPT---
     [chat] system: Return a made up json blob that matches this schema:
     Answer in JSON using this schema:
@@ -471,8 +583,8 @@
       "prop1": "Hello, world!",
       "prop2": "TWO"
     }
-[2024-10-31T01:07:59Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 676ms. StopReason: stop
+[2024-11-04T16:53:40Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 581ms. StopReason: stop. Tokens(in/out): 50/20
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -495,8 +607,8 @@
       "prop1": "Hello, world!",
       "prop2": 540
     }
-[2024-10-31T01:07:59Z INFO  baml_events] Function FnEnumListOutput:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 435ms. StopReason: stop
+[2024-11-04T16:53:40Z INFO  baml_events] Function FnEnumListOutput:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 552ms. StopReason: stop. Tokens(in/out): 51/12
     ---PROMPT---
     [chat] system: Print out two of these values randomly selected from the list below in a json array.
     
@@ -509,16 +621,16 @@
     
     ---LLM REPLY---
     [
-      "ONE",
+      "TWO",
       "THREE"
     ]
     ---Parsed Response (list<enum EnumOutput>)---
     [
-      "ONE",
+      "TWO",
       "THREE"
     ]
-[2024-10-31T01:08:00Z INFO  baml_events] Function FnEnumOutput:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 729ms. StopReason: stop
+[2024-11-04T16:53:41Z INFO  baml_events] Function FnEnumOutput:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 685ms. StopReason: stop. Tokens(in/out): 42/24
     ---PROMPT---
     [chat] system: Choose one of these values randomly. Before you give the answer, write out an unrelated haiku about the ocean.
     
@@ -529,68 +641,76 @@
     - THREE
     
     ---LLM REPLY---
-    A vast blue expanse
-    Whispers secrets to the shore
-    Mystery below
+    A blue vast expanse
+    Whispers of waves in the wind
+    Ocean's mystery
     
-    VALUE_ENUM: TWO
+    VALUE_ENUM
+    ----
+    TWO
     ---Parsed Response (enum EnumOutput)---
     "TWO"
-

Teardown

PASSED test_should_work_with_image_url 0:00:01.594091

Setup

Call

Captured stderr call
[2024-10-31T01:08:01Z INFO  baml_events] Function TestImageInput:
-    Client: GPT4o (gpt-4o-2024-08-06) - 1586ms. StopReason: stop
+

Teardown

PASSED test_should_work_with_image_url 0:00:01.184329

Setup

Call

Captured stderr call
[2024-11-04T16:53:42Z INFO  baml_events] Function TestImageInput:
+    Client: GPT4o (gpt-4o-2024-08-06) - 1177ms. StopReason: stop. Tokens(in/out): 275/6
     ---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 ogre, brown vest.
+    Green ogre standing smiling.
     ---Parsed Response (string)---
-    "Green ogre, brown vest."
-

Teardown

PASSED test_should_work_with_image_list 0:00:02.480673

Setup

Call

Captured stderr call
[2024-10-31T01:08:04Z INFO  baml_events] Function TestImageListInput:
-    Client: GPT4o (gpt-4o-2024-08-06) - 2473ms. StopReason: stop
+    "Green ogre standing smiling."
+

Teardown

PASSED test_should_work_with_image_list 0:00:03.228315

Setup

Call

Captured stderr call
[2024-11-04T16:53:45Z INFO  baml_events] Function TestImageListInput:
+    Client: GPT4o (gpt-4o-2024-08-06) - 3221ms. StopReason: stop. Tokens(in/out): 528/10
     ---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 common color between Shrek and the Google logo is blue. Shrek primarily features green, while the Google logo includes blue, red, yellow, and green.
+    Both images have some shades of green in common.
     ---Parsed Response (string)---
-    "The common color between Shrek and the Google logo is blue. Shrek primarily features green, while the Google logo includes blue, red, yellow, and green."
-

Teardown

PASSED test_should_work_with_vertex 0:00:08.843600

Setup

Call

Captured stderr call
[2024-10-31T01:08:13Z INFO  baml_events] Function TestVertex:
-    Client: Vertex () - 8834ms. StopReason: "STOP"
+    "Both images have some shades of green in common."
+

Teardown

PASSED test_should_work_with_vertex 0:00:09.396058

Setup

Call

Captured stderr call
[2024-11-04T16:53:55Z INFO  baml_events] Function TestVertex:
+    Client: Vertex () - 9386ms. StopReason: "STOP". Tokens(in/out): 8/460
     ---PROMPT---
     [chat] user: Write a nice short story about donkey kong
     
     ---LLM REPLY---
-    The banana sunset painted the jungle canopy in hues of orange and gold. Donkey Kong, perched on his highest platform, sighed a contented sigh. Another day, another pile of bananas successfully defended from those pesky Kongs in red ties. 
+    The morning mist clung to the jungle leaves like sleepy primates. Donkey Kong, however, wasn't sleepy. He was famished. His stomach rumbled louder than a coconut avalanche. 
+    
+    He sniffed the air, his large nostrils twitching. Bananas. They were close. He followed the scent, his powerful knuckles thudding against the jungle floor. 
+    
+    He emerged into a clearing to find a sight that made his fur stand on end. A mountain of bananas, the likes of which he’d never seen, stood before him. They were piled high, glistening like golden treasure in the morning light.
+    
+    And perched atop this glorious peak, munching on a particularly plump banana, sat Cranky Kong. 
     
-    He scratched his ear with a banana peel, his thoughts drifting to the younger Kongs playing by the river. He was tough on them, sure, but someone had to teach them the importance of banana security. 
+    Donkey Kong’s heart sank. Cranky was a legend, the grumpiest, most possessive Kong in the jungle. Approaching him, especially when he was surrounded by bananas, was like wrestling a tiger for its stripes.
     
-    Suddenly, a high-pitched squeal pierced through the evening air. It was Diddy, his little nephew, and he sounded scared. Donkey Kong sprang to his feet, his fur bristling. Nobody messed with family.
+    But Donkey Kong’s stomach had other plans. It growled again, this time sounding suspiciously like Cranky’s name. 
     
-    He followed the sound to a clearing, where he found Diddy cornered by a pack of Kremlings, their beady eyes gleaming menacingly. The little Kong was trembling, clutching a single, bruised banana.
+    Cranky Kong’s one good eye snapped open. “Did someone say ‘banana’?” he rasped, his voice like gravel on a drum.
     
-    Anger surged through Donkey Kong. These Kremlings were getting bolder, picking on someone so small. He beat his chest, letting out a roar that shook the trees. The Kremlings flinched, but their numbers gave them courage. They charged. 
+    Donkey Kong froze. He considered retreating, vanishing back into the foliage. Then, he remembered a trick his father had taught him. 
     
-    What followed was a blur of fur, teeth, and banana peels. Donkey Kong fought like a Kong possessed, tossing Kremlings aside like rag dolls. Finally, the last one scampered away, whimpering. 
+    He plucked a nearby flower, its petals a vibrant red, and held it out to Cranky. “For you, elder,” he mumbled, hoping Cranky wouldn't notice his rumbling belly.
     
-    Diddy rushed to his uncle, his eyes wide with admiration. "You saved me, DK!"
+    Cranky squinted at him, then at the flower. A low, rumbling sound emerged from him, but it wasn’t a growl. It was a chuckle. 
     
-    Donkey Kong ruffled the little Kong's fur with a gruff chuckle. "Course I did, little buddy. No one messes with family." 
+    “Well, well,” Cranky croaked, accepting the flower with surprising gentleness. “It seems someone remembers their manners.” He gestured with a gnarled finger towards the banana mountain. “Help yourself, lad. But leave some for an old Kong, eh?”
     
-    He handed Diddy his own bunch of bananas, keeping the bruised one for himself. It tasted sweeter than all the others. As the moon replaced the sun, casting long shadows across the jungle, Donkey Kong felt a warmth spread through his chest. It wasn't just the setting sun. It was the feeling of family, a feeling stronger than any barrel throw. 
+    And so, Donkey Kong feasted, sharing the mountain of bananas with the grumpiest Kong in the jungle. He learned that day that even the toughest shells can crack with a little bit of kindness and a lot of bananas. 
     
     ---Parsed Response (string)---
-    "The banana sunset painted the jungle canopy in hues of orange and gold. Donkey Kong, perched on his highest platform, sighed a contented sigh. Another day, another pile of bananas successfully defended from those pesky Kongs in red ties. \n\nHe scratched his ear with a banana peel, his thoughts drifting to the younger Kongs playing by the river. He was tough on them, sure, but someone had to teach them the importance of banana security. \n\nSuddenly, a high-pitched squeal pierced through the evening air. It was Diddy, his little nephew, and he sounded scared. Donkey Kong sprang to his feet, his fur bristling. Nobody messed with family.\n\nHe followed the sound to a clearing, where he found Diddy cornered by a pack of Kremlings, their beady eyes gleaming menacingly. The little Kong was trembling, clutching a single, bruised banana.\n\nAnger surged through Donkey Kong. These Kremlings were getting bolder, picking on someone so small. He beat his chest, letting out a roar that shook the trees. The Kremlings flinched, but their numbers gave them courage. They charged. \n\nWhat followed was a blur of fur, teeth, and banana peels. Donkey Kong fought like a Kong possessed, tossing Kremlings aside like rag dolls. Finally, the last one scampered away, whimpering. \n\nDiddy rushed to his uncle, his eyes wide with admiration. \"You saved me, DK!\"\n\nDonkey Kong ruffled the little Kong's fur with a gruff chuckle. \"Course I did, little buddy. No one messes with family.\" \n\nHe handed Diddy his own bunch of bananas, keeping the bruised one for himself. It tasted sweeter than all the others. As the moon replaced the sun, casting long shadows across the jungle, Donkey Kong felt a warmth spread through his chest. It wasn't just the setting sun. It was the feeling of family, a feeling stronger than any barrel throw. \n"
-

Teardown

PASSED test_should_work_with_image_base64 0:00:01.418970

Setup

Call

Captured stderr call
[2024-10-31T01:08:14Z INFO  baml_events] Function TestImageInput:
-    Client: GPT4o (gpt-4o-2024-08-06) - 1395ms. StopReason: stop
+    "The morning mist clung to the jungle leaves like sleepy primates. Donkey Kong, however, wasn't sleepy. He was famished. His stomach rumbled louder than a coconut avalanche. \n\nHe sniffed the air, his large nostrils twitching. Bananas. They were close. He followed the scent, his powerful knuckles thudding against the jungle floor. \n\nHe emerged into a clearing to find a sight that made his fur stand on end. A mountain of bananas, the likes of which he’d never seen, stood before him. They were piled high, glistening like golden treasure in the morning light.\n\nAnd perched atop this glorious peak, munching on a particularly plump banana, sat Cranky Kong. \n\nDonkey Kong’s heart sank. Cranky was a legend, the grumpiest, most possessive Kong in the jungle. Approaching him, especially when he was surrounded by bananas, was like wrestling a tiger for its stripes.\n\nBut Donkey Kong’s stomach had other plans. It growled again, this time sounding suspiciously like Cranky’s name. \n\nCranky Kong’s one good eye snapped open. “Did someone say ‘banana’?” he rasped, his voice like gravel on a drum.\n\nDonkey Kong froze. He considered retreating, vanishing back into the foliage. Then, he remembered a trick his father had taught him. \n\nHe plucked a nearby flower, its petals a vibrant red, and held it out to Cranky. “For you, elder,” he mumbled, hoping Cranky wouldn't notice his rumbling belly.\n\nCranky squinted at him, then at the flower. A low, rumbling sound emerged from him, but it wasn’t a growl. It was a chuckle. \n\n“Well, well,” Cranky croaked, accepting the flower with surprising gentleness. “It seems someone remembers their manners.” He gestured with a gnarled finger towards the banana mountain. “Help yourself, lad. But leave some for an old Kong, eh?”\n\nAnd so, Donkey Kong feasted, sharing the mountain of bananas with the grumpiest Kong in the jungle. He learned that day that even the toughest shells can crack with a little bit of kindness and a lot of bananas. \n"
+

Teardown

PASSED test_should_work_with_image_base64 0:00:01.013122

Setup

Call

Captured stderr call
[2024-11-04T16:53:56Z INFO  baml_events] Function TestImageInput:
+    Client: GPT4o (gpt-4o-2024-08-06) - 985ms. StopReason: stop. Tokens(in/out): 275/6
     ---PROMPT---
     [chat] user: Describe this in 4 words. One word must be the color<image_placeholder base64>
     
     ---LLM REPLY---
-    Green animated ogre character.
+    Green animated ogre smiling.
     ---Parsed Response (string)---
-    "Green animated ogre character."
-

Teardown

PASSED test_should_work_with_audio_base64 0:00:01.046669

Setup

Call

Captured stderr call
[2024-10-31T01:08:15Z INFO  baml_events] Function AudioInput:
-    Client: Gemini () - 1034ms. StopReason: "STOP"
+    "Green animated ogre smiling."
+

Teardown

PASSED test_should_work_with_audio_base64 0:00:01.042699

Setup

Call

Captured stderr call
[2024-11-04T16:53:57Z INFO  baml_events] Function AudioInput:
+    Client: Gemini () - 1028ms. StopReason: "STOP". Tokens(in/out): 114/1
     ---PROMPT---
     [chat] user: Does this sound like a roar? Yes or no? One word no other characters.<audio_placeholder base64>
     
@@ -599,8 +719,8 @@
     
     ---Parsed Response (string)---
     "Yes \n"
-

Teardown

PASSED test_should_work_with_audio_url 0:00:01.342192

Setup

Call

Captured stderr call
[2024-10-31T01:08:17Z INFO  baml_events] Function AudioInput:
-    Client: Gemini () - 1208ms. StopReason: "STOP"
+

Teardown

PASSED test_should_work_with_audio_url 0:00:01.113802

Setup

Call

Captured stderr call
[2024-11-04T16:53:58Z INFO  baml_events] Function AudioInput:
+    Client: Gemini () - 977ms. StopReason: "STOP". Tokens(in/out): 178/1
     ---PROMPT---
     [chat] user: Does this sound like a roar? Yes or no? One word no other characters.<audio_placeholder base64>
     
@@ -609,10 +729,10 @@
     
     ---Parsed Response (string)---
     "No \n"
-

Teardown

PASSED test_works_with_retries2 0:00:02.527812

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: 1730336899, tv_nsec: 391984000 }, latency: 265.737208ms, 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-10-31T01:08:19Z WARN  baml_events] Function TestRetryExponential:
+

Teardown

PASSED test_works_with_retries2 0:00:02.227588

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: 1730739240, tv_nsec: 306947000 }, latency: 192.71975ms, 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-11-04T16:54:00Z WARN  baml_events] Function TestRetryExponential:
     (3 other previous tries)
-    Client: RetryClientExponential (<unknown>) - 265ms
+    Client: RetryClientExponential (<unknown>) - 192ms
     ---PROMPT---
     [chat] system: Say a haiku
     
@@ -628,379 +748,368 @@
         }
     }
     
-

Teardown

PASSED test_works_with_fallbacks 0:00:02.434539

Setup

Call

Captured stderr call
[2024-10-31T01:08:22Z INFO  baml_events] Function TestFallbackClient:
+

Teardown

PASSED test_works_with_fallbacks 0:00:02.143794

Setup

Call

Captured stderr call
[2024-11-04T16:54:02Z INFO  baml_events] Function TestFallbackClient:
     (5 other previous tries)
-    Client: GPT35 (gpt-3.5-turbo-0125) - 837ms. StopReason: stop
+    Client: GPT35 (gpt-3.5-turbo-0125) - 597ms. StopReason: stop. Tokens(in/out): 14/14
     ---PROMPT---
     [chat] system: Say a haiku about mexico.
     
     ---LLM REPLY---
-    Vibrant colors gleam
+    Colorful maracas
     Mariachi serenades
     Mexico's beauty
     ---Parsed Response (string)---
-    "Vibrant colors gleam\nMariachi serenades\nMexico's beauty"
-

Teardown

PASSED test_works_with_failing_azure_fallback 0:00:00.002236

Setup

Call

Teardown

PASSED test_claude 0:00:01.023483

Setup

Call

Captured stderr call
[2024-10-31T01:08:23Z INFO  baml_events] Function PromptTestClaude:
-    Client: Sonnet (claude-3-5-sonnet-20241022) - 1017ms. StopReason: "end_turn"
+    "Colorful maracas\nMariachi serenades\nMexico's beauty"
+

Teardown

PASSED test_works_with_failing_azure_fallback 0:00:00.001270

Setup

Call

Captured stderr call
[2024-11-04T16:54:02Z ERROR baml_runtime::tracing] Either base_url or (resource_name, deployment_id) must be provided
+

Teardown

PASSED test_claude 0:00:01.088193

Setup

Call

Captured stderr call
[2024-11-04T16:54:03Z INFO  baml_events] Function PromptTestClaude:
+    Client: Sonnet (claude-3-5-sonnet-20241022) - 1084ms. StopReason: "end_turn". Tokens(in/out): 19/42
     ---PROMPT---
     [chat] user: Tell me a haiku about Mt Rainier is tall
     
     ---LLM REPLY---
     Here's a haiku about Mt. Rainier:
     
-    Rainier stands alone
+    Rainier stands proud, high
     Fourteen thousand feet skyward
-    Guardian of clouds
+    Snow-crowned mountain king
     ---Parsed Response (string)---
-    "Here's a haiku about Mt. Rainier:\n\nRainier stands alone\nFourteen thousand feet skyward\nGuardian of clouds"
-

Teardown

PASSED test_gemini 0:00:08.479854

Setup

Call

Captured stdout call
LLM output from Gemini: Dr. Pete Pepper, or just Dr. P as the other sodas called him, wasn't like the rest of them. He wasn't content simply being bubbly and sweet. No, Dr. P was a thinker, an explorer, an adventurer trapped in a soda fountain dispenser. He yearned to understand the world beyond the cold, steel walls and the whispered conversations of thirsty customers. 
+    "Here's a haiku about Mt. Rainier:\n\nRainier stands proud, high\nFourteen thousand feet skyward\nSnow-crowned mountain king"
+

Teardown

PASSED test_gemini 0:00:07.604349

Setup

Call

Captured stdout call
LLM output from Gemini: The diner was quiet, save for the rhythmic sizzle of the grill and the steady click of the old clock on the wall. A lone figure sat at the counter, hunched over a steaming mug. He was a peculiar man, with a kind face creased with age and eyes that sparkled with a mischievous glint. This was Dr. Pepper, though few knew his name.
 
-One day, a young boy, freckled and full of mischief, chose Dr. P from the line-up. The boy, named Sam, didn't gulp him down like the others. He sipped, savoring the unique, 23-flavor profile that made Dr. P so special. 
+He wasn't a real doctor, not anymore. Once, he had been a renowned chemist, a master of flavors and concoctions. He had poured his heart and soul into creating a drink unlike any other, a symphony of 23 flavors that danced on the tongue. It was his masterpiece, his legacy. He named it after himself, a whimsical touch in an otherwise serious world.
 
-As Sam sat by the window, Dr. P felt a strange sensation - a lifting, a lightness. He realized with a jolt that he was seeing the outside world through Sam's eyes. The vibrant green of the park, the bright yellow of the sun, the deep blue of the sky – all exploded in his senses. 
+But fame was a fickle mistress, and soon the world forgot the man behind the drink. His creation, however, lived on, bottled and shipped to every corner of the globe.  It no longer belonged to him, not really. Yet, he took solace in the smiles it brought to faces, the small moments of joy it ignited.
 
-Over the next few weeks, Sam and Dr. P became inseparable. Sam, a budding artist, would describe the colors and shapes he saw, and Dr. P, in turn, would tell Sam about his dreams of adventure, his longing to experience the world beyond the soda fountain. 
+He lifted the mug to his lips, the familiar aroma filling his senses. Each sip was a journey back in time, a reminder of his younger, ambitious self. It was bittersweet, this legacy of his. A legacy he could only observe from the sidelines, a silent observer to his own creation's success.
 
-One day, armed with a pad and some crayons, Sam began to draw. He sketched quickly, a whirlwind of colors and lines, and when he finished, he held up his masterpiece. It was Dr. P, standing on top of a mountain, a compass in one hand, a flag in the other, a huge grin on his fizzy face. 
+The bell above the diner door jingled as a young couple entered, their faces flushed from the cold. The girl, her eyes bright with excitement, ordered two Dr. Peppers. The doctor watched as they clinked glasses, their laughter echoing in the quiet diner.
 
-Dr. P felt a warmth spread through him, not the cold sting of ice, but the genuine warmth of friendship and shared dreams. He might have been a soda, but with Sam, he had found a way to explore the world, sip by delicious sip. And in his own unique way, Dr. P knew he was finally living up to his name – a true adventurer, discovering the world one flavor at a time. 
+A small smile played on his lips. Forgotten, perhaps, but never truly gone. As long as people craved adventure in a bottle, his spirit would live on, one delicious sip at a time. 
 
-
Captured stderr call
[2024-10-31T01:08:31Z INFO  baml_events] Function TestGemini:
-    Client: Gemini () - 8471ms. StopReason: "STOP"
+
Captured stderr call
[2024-11-04T16:54:11Z INFO  baml_events] Function TestGemini:
+    Client: Gemini () - 7595ms. StopReason: "STOP". Tokens(in/out): 10/388
     ---PROMPT---
     [chat] user: Write a nice short story about Dr. Pepper
     
     ---LLM REPLY---
-    Dr. Pete Pepper, or just Dr. P as the other sodas called him, wasn't like the rest of them. He wasn't content simply being bubbly and sweet. No, Dr. P was a thinker, an explorer, an adventurer trapped in a soda fountain dispenser. He yearned to understand the world beyond the cold, steel walls and the whispered conversations of thirsty customers. 
+    The diner was quiet, save for the rhythmic sizzle of the grill and the steady click of the old clock on the wall. A lone figure sat at the counter, hunched over a steaming mug. He was a peculiar man, with a kind face creased with age and eyes that sparkled with a mischievous glint. This was Dr. Pepper, though few knew his name.
     
-    One day, a young boy, freckled and full of mischief, chose Dr. P from the line-up. The boy, named Sam, didn't gulp him down like the others. He sipped, savoring the unique, 23-flavor profile that made Dr. P so special. 
+    He wasn't a real doctor, not anymore. Once, he had been a renowned chemist, a master of flavors and concoctions. He had poured his heart and soul into creating a drink unlike any other, a symphony of 23 flavors that danced on the tongue. It was his masterpiece, his legacy. He named it after himself, a whimsical touch in an otherwise serious world.
     
-    As Sam sat by the window, Dr. P felt a strange sensation - a lifting, a lightness. He realized with a jolt that he was seeing the outside world through Sam's eyes. The vibrant green of the park, the bright yellow of the sun, the deep blue of the sky – all exploded in his senses. 
+    But fame was a fickle mistress, and soon the world forgot the man behind the drink. His creation, however, lived on, bottled and shipped to every corner of the globe.  It no longer belonged to him, not really. Yet, he took solace in the smiles it brought to faces, the small moments of joy it ignited.
     
-    Over the next few weeks, Sam and Dr. P became inseparable. Sam, a budding artist, would describe the colors and shapes he saw, and Dr. P, in turn, would tell Sam about his dreams of adventure, his longing to experience the world beyond the soda fountain. 
+    He lifted the mug to his lips, the familiar aroma filling his senses. Each sip was a journey back in time, a reminder of his younger, ambitious self. It was bittersweet, this legacy of his. A legacy he could only observe from the sidelines, a silent observer to his own creation's success.
     
-    One day, armed with a pad and some crayons, Sam began to draw. He sketched quickly, a whirlwind of colors and lines, and when he finished, he held up his masterpiece. It was Dr. P, standing on top of a mountain, a compass in one hand, a flag in the other, a huge grin on his fizzy face. 
+    The bell above the diner door jingled as a young couple entered, their faces flushed from the cold. The girl, her eyes bright with excitement, ordered two Dr. Peppers. The doctor watched as they clinked glasses, their laughter echoing in the quiet diner.
     
-    Dr. P felt a warmth spread through him, not the cold sting of ice, but the genuine warmth of friendship and shared dreams. He might have been a soda, but with Sam, he had found a way to explore the world, sip by delicious sip. And in his own unique way, Dr. P knew he was finally living up to his name – a true adventurer, discovering the world one flavor at a time. 
+    A small smile played on his lips. Forgotten, perhaps, but never truly gone. As long as people craved adventure in a bottle, his spirit would live on, one delicious sip at a time. 
     
     ---Parsed Response (string)---
-    "Dr. Pete Pepper, or just Dr. P as the other sodas called him, wasn't like the rest of them. He wasn't content simply being bubbly and sweet. No, Dr. P was a thinker, an explorer, an adventurer trapped in a soda fountain dispenser. He yearned to understand the world beyond the cold, steel walls and the whispered conversations of thirsty customers. \n\nOne day, a young boy, freckled and full of mischief, chose Dr. P from the line-up. The boy, named Sam, didn't gulp him down like the others. He sipped, savoring the unique, 23-flavor profile that made Dr. P so special. \n\nAs Sam sat by the window, Dr. P felt a strange sensation - a lifting, a lightness. He realized with a jolt that he was seeing the outside world through Sam's eyes. The vibrant green of the park, the bright yellow of the sun, the deep blue of the sky – all exploded in his senses. \n\nOver the next few weeks, Sam and Dr. P became inseparable. Sam, a budding artist, would describe the colors and shapes he saw, and Dr. P, in turn, would tell Sam about his dreams of adventure, his longing to experience the world beyond the soda fountain. \n\nOne day, armed with a pad and some crayons, Sam began to draw. He sketched quickly, a whirlwind of colors and lines, and when he finished, he held up his masterpiece. It was Dr. P, standing on top of a mountain, a compass in one hand, a flag in the other, a huge grin on his fizzy face. \n\nDr. P felt a warmth spread through him, not the cold sting of ice, but the genuine warmth of friendship and shared dreams. He might have been a soda, but with Sam, he had found a way to explore the world, sip by delicious sip. And in his own unique way, Dr. P knew he was finally living up to his name – a true adventurer, discovering the world one flavor at a time. \n"
-

Teardown

PASSED test_gemini_streaming 0:00:09.533650

Setup

Call

Captured stdout call
LLM output from Gemini: The old diner was quiet, save for the gentle hum of the neon sign outside and the rhythmic tick-tock of the clock on the wall. Behind the counter, Millie polished a glass, her face etched with the wisdom of a thousand late-night conversations. A figure, silhouetted against the streetlights, pushed through the door. 
-
-"Dr. Pepper," the man said, his voice roughened by time and hard living. He slumped onto a stool, the weight of the world heavy on his shoulders. 
-
-Millie nodded, knowing better than to pry. Dr. Pepper was all anyone ever ordered here, at least after midnight. It wasn't a drink for idle chatter, but a companion for quiet contemplation. 
-
-She placed the frosted mug in front of him, the dark liquid fizzing gently. He took a long sip, the familiar bittersweet taste washing over his tongue. He closed his eyes, a wave of memories crashing over him.
-
-There was a time when Dr. Pepper had been a celebratory drink. He remembered the first time he tasted it, the crisp, complex flavor a revelation after years of sugary sodas. He was young then, full of dreams and aspirations, each sip bubbling with the promise of a bright future.
-
-He'd proposed to his wife with a ring hidden in a Dr. Pepper can. They’d shared countless bottles, their laughter echoing through their tiny apartment. When their daughter was born, he'd celebrated with, what else, a Dr. Pepper. 
+    "The diner was quiet, save for the rhythmic sizzle of the grill and the steady click of the old clock on the wall. A lone figure sat at the counter, hunched over a steaming mug. He was a peculiar man, with a kind face creased with age and eyes that sparkled with a mischievous glint. This was Dr. Pepper, though few knew his name.\n\nHe wasn't a real doctor, not anymore. Once, he had been a renowned chemist, a master of flavors and concoctions. He had poured his heart and soul into creating a drink unlike any other, a symphony of 23 flavors that danced on the tongue. It was his masterpiece, his legacy. He named it after himself, a whimsical touch in an otherwise serious world.\n\nBut fame was a fickle mistress, and soon the world forgot the man behind the drink. His creation, however, lived on, bottled and shipped to every corner of the globe.  It no longer belonged to him, not really. Yet, he took solace in the smiles it brought to faces, the small moments of joy it ignited.\n\nHe lifted the mug to his lips, the familiar aroma filling his senses. Each sip was a journey back in time, a reminder of his younger, ambitious self. It was bittersweet, this legacy of his. A legacy he could only observe from the sidelines, a silent observer to his own creation's success.\n\nThe bell above the diner door jingled as a young couple entered, their faces flushed from the cold. The girl, her eyes bright with excitement, ordered two Dr. Peppers. The doctor watched as they clinked glasses, their laughter echoing in the quiet diner.\n\nA small smile played on his lips. Forgotten, perhaps, but never truly gone. As long as people craved adventure in a bottle, his spirit would live on, one delicious sip at a time. \n"
+

Teardown

PASSED test_gemini_streaming 0:00:09.095219

Setup

Call

Captured stdout call
LLM output from Gemini: Dr. Pepper wasn't a real doctor, though sometimes, late at night, when the city lights painted the bodega window in a neon glow, he felt like one. He wasn't stitching wounds, but mending spirits. At least, that's what he told himself as he rang up another pack of gummy bears and a lottery ticket, the usual order for Mrs. Garcia on a Tuesday.
 
-But life, like a half-forgotten bottle left in the sun, had a way of going flat. 
+His real name was Daniel, but the nickname stuck ever since he started working at the corner store.  It started with the kids, their sticky fingers pointing at the soda fridge, yelling "Dr. Pepper, please!" He suspected their parents put them up to it, a little joke to brighten their day. But soon, it was everyone. Old Man Henderson with his crossword puzzle and lukewarm coffee, Sarah the florist with her bright smile and wilting carnations, even Mr. Kim, the usually stoic owner, would sometimes slip and call him "Doc."
 
-He'd lost his wife too young. The factory had closed down, taking his livelihood with it. His daughter, now a woman, lived a life he couldn't quite understand, miles away. 
+Dr. Pepper. It had a ring to it, a whimsicality that belied the everyday ordinariness of his life. And maybe, just maybe, it gave him a little push to be more than just a guy behind the counter. He started remembering everyone's usual orders, asking about their day, offering a kind word or a sympathetic ear when needed. The bodega, once just a job, became a stage for these small acts of human connection.
 
-He opened his eyes, the neon sign casting his reflection in the dark window. A stranger stared back, weary and lost. 
+One rainy afternoon, a young girl, no older than eight, stood at the counter, tears streaming down her face. She'd lost the five dollar bill her mother gave her for milk. Dr. Pepper knelt before her, his heart aching for her distress.  "Tell you what," he said, pulling out a can of Dr. Pepper from under the counter, "This one's on the house. Consider it a prescription for the blues." 
 
-He took another sip. It didn't erase the pain, the regret, the loneliness that clung to him like a shadow. But in that moment, in the familiar comfort of the bittersweet taste, he found a moment of peace. 
+The girl's eyes widened, then a smile broke through her tears. She hugged the can to her chest, the familiar logo a beacon of comfort.  As she skipped out, rain boots splashing in puddles, Dr. Pepper knew.  Maybe, just maybe, he wasn't a real doctor, but he dispensed something just as important: kindness, a listening ear, and the occasional can of fizzy, caramel-colored hope. 
 
-He was just a man, sitting in a quiet diner, nursing a Dr. Pepper. And somehow, that was enough. 
-
-
Captured stderr call
[2024-10-31T01:08:41Z INFO  baml_events] Function TestGemini:
-    Client: Gemini (gemini-1.5-pro-001) - 9509ms. StopReason: Stop
+
Captured stderr call
[2024-11-04T16:54:20Z INFO  baml_events] Function TestGemini:
+    Client: Gemini (gemini-1.5-pro-001) - 9075ms. StopReason: Stop. Tokens(in/out): unknown/unknown
     ---PROMPT---
     [chat] user: Write a nice short story about Dr. Pepper
     
     ---LLM REPLY---
-    The old diner was quiet, save for the gentle hum of the neon sign outside and the rhythmic tick-tock of the clock on the wall. Behind the counter, Millie polished a glass, her face etched with the wisdom of a thousand late-night conversations. A figure, silhouetted against the streetlights, pushed through the door. 
-    
-    "Dr. Pepper," the man said, his voice roughened by time and hard living. He slumped onto a stool, the weight of the world heavy on his shoulders. 
-    
-    Millie nodded, knowing better than to pry. Dr. Pepper was all anyone ever ordered here, at least after midnight. It wasn't a drink for idle chatter, but a companion for quiet contemplation. 
-    
-    She placed the frosted mug in front of him, the dark liquid fizzing gently. He took a long sip, the familiar bittersweet taste washing over his tongue. He closed his eyes, a wave of memories crashing over him.
-    
-    There was a time when Dr. Pepper had been a celebratory drink. He remembered the first time he tasted it, the crisp, complex flavor a revelation after years of sugary sodas. He was young then, full of dreams and aspirations, each sip bubbling with the promise of a bright future.
-    
-    He'd proposed to his wife with a ring hidden in a Dr. Pepper can. They’d shared countless bottles, their laughter echoing through their tiny apartment. When their daughter was born, he'd celebrated with, what else, a Dr. Pepper. 
+    Dr. Pepper wasn't a real doctor, though sometimes, late at night, when the city lights painted the bodega window in a neon glow, he felt like one. He wasn't stitching wounds, but mending spirits. At least, that's what he told himself as he rang up another pack of gummy bears and a lottery ticket, the usual order for Mrs. Garcia on a Tuesday.
     
-    But life, like a half-forgotten bottle left in the sun, had a way of going flat. 
+    His real name was Daniel, but the nickname stuck ever since he started working at the corner store.  It started with the kids, their sticky fingers pointing at the soda fridge, yelling "Dr. Pepper, please!" He suspected their parents put them up to it, a little joke to brighten their day. But soon, it was everyone. Old Man Henderson with his crossword puzzle and lukewarm coffee, Sarah the florist with her bright smile and wilting carnations, even Mr. Kim, the usually stoic owner, would sometimes slip and call him "Doc."
     
-    He'd lost his wife too young. The factory had closed down, taking his livelihood with it. His daughter, now a woman, lived a life he couldn't quite understand, miles away. 
+    Dr. Pepper. It had a ring to it, a whimsicality that belied the everyday ordinariness of his life. And maybe, just maybe, it gave him a little push to be more than just a guy behind the counter. He started remembering everyone's usual orders, asking about their day, offering a kind word or a sympathetic ear when needed. The bodega, once just a job, became a stage for these small acts of human connection.
     
-    He opened his eyes, the neon sign casting his reflection in the dark window. A stranger stared back, weary and lost. 
+    One rainy afternoon, a young girl, no older than eight, stood at the counter, tears streaming down her face. She'd lost the five dollar bill her mother gave her for milk. Dr. Pepper knelt before her, his heart aching for her distress.  "Tell you what," he said, pulling out a can of Dr. Pepper from under the counter, "This one's on the house. Consider it a prescription for the blues." 
     
-    He took another sip. It didn't erase the pain, the regret, the loneliness that clung to him like a shadow. But in that moment, in the familiar comfort of the bittersweet taste, he found a moment of peace. 
-    
-    He was just a man, sitting in a quiet diner, nursing a Dr. Pepper. And somehow, that was enough. 
+    The girl's eyes widened, then a smile broke through her tears. She hugged the can to her chest, the familiar logo a beacon of comfort.  As she skipped out, rain boots splashing in puddles, Dr. Pepper knew.  Maybe, just maybe, he wasn't a real doctor, but he dispensed something just as important: kindness, a listening ear, and the occasional can of fizzy, caramel-colored hope. 
     
     ---Parsed Response (string)---
-    "The old diner was quiet, save for the gentle hum of the neon sign outside and the rhythmic tick-tock of the clock on the wall. Behind the counter, Millie polished a glass, her face etched with the wisdom of a thousand late-night conversations. A figure, silhouetted against the streetlights, pushed through the door. \n\n\"Dr. Pepper,\" the man said, his voice roughened by time and hard living. He slumped onto a stool, the weight of the world heavy on his shoulders. \n\nMillie nodded, knowing better than to pry. Dr. Pepper was all anyone ever ordered here, at least after midnight. It wasn't a drink for idle chatter, but a companion for quiet contemplation. \n\nShe placed the frosted mug in front of him, the dark liquid fizzing gently. He took a long sip, the familiar bittersweet taste washing over his tongue. He closed his eyes, a wave of memories crashing over him.\n\nThere was a time when Dr. Pepper had been a celebratory drink. He remembered the first time he tasted it, the crisp, complex flavor a revelation after years of sugary sodas. He was young then, full of dreams and aspirations, each sip bubbling with the promise of a bright future.\n\nHe'd proposed to his wife with a ring hidden in a Dr. Pepper can. They’d shared countless bottles, their laughter echoing through their tiny apartment. When their daughter was born, he'd celebrated with, what else, a Dr. Pepper. \n\nBut life, like a half-forgotten bottle left in the sun, had a way of going flat. \n\nHe'd lost his wife too young. The factory had closed down, taking his livelihood with it. His daughter, now a woman, lived a life he couldn't quite understand, miles away. \n\nHe opened his eyes, the neon sign casting his reflection in the dark window. A stranger stared back, weary and lost. \n\nHe took another sip. It didn't erase the pain, the regret, the loneliness that clung to him like a shadow. But in that moment, in the familiar comfort of the bittersweet taste, he found a moment of peace. \n\nHe was just a man, sitting in a quiet diner, nursing a Dr. Pepper. And somehow, that was enough. \n"
-

Teardown

PASSED test_aws 0:00:02.058893

Setup

Call

Captured stderr call
[2024-10-31T01:08:41Z WARN  aws_runtime::env_config::normalize] section [Connection 1] ignored; config must be in the AWS config file rather than the credentials file
-[2024-10-31T01:08:41Z INFO  aws_config::meta::region] load_region; provider=EnvironmentVariableRegionProvider { env: Env(Real) }
-[2024-10-31T01:08:43Z INFO  baml_events] Function TestAws:
-    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 1884ms. StopReason: max_tokens
+    "Dr. Pepper wasn't a real doctor, though sometimes, late at night, when the city lights painted the bodega window in a neon glow, he felt like one. He wasn't stitching wounds, but mending spirits. At least, that's what he told himself as he rang up another pack of gummy bears and a lottery ticket, the usual order for Mrs. Garcia on a Tuesday.\n\nHis real name was Daniel, but the nickname stuck ever since he started working at the corner store.  It started with the kids, their sticky fingers pointing at the soda fridge, yelling \"Dr. Pepper, please!\" He suspected their parents put them up to it, a little joke to brighten their day. But soon, it was everyone. Old Man Henderson with his crossword puzzle and lukewarm coffee, Sarah the florist with her bright smile and wilting carnations, even Mr. Kim, the usually stoic owner, would sometimes slip and call him \"Doc.\"\n\nDr. Pepper. It had a ring to it, a whimsicality that belied the everyday ordinariness of his life. And maybe, just maybe, it gave him a little push to be more than just a guy behind the counter. He started remembering everyone's usual orders, asking about their day, offering a kind word or a sympathetic ear when needed. The bodega, once just a job, became a stage for these small acts of human connection.\n\nOne rainy afternoon, a young girl, no older than eight, stood at the counter, tears streaming down her face. She'd lost the five dollar bill her mother gave her for milk. Dr. Pepper knelt before her, his heart aching for her distress.  \"Tell you what,\" he said, pulling out a can of Dr. Pepper from under the counter, \"This one's on the house. Consider it a prescription for the blues.\" \n\nThe girl's eyes widened, then a smile broke through her tears. She hugged the can to her chest, the familiar logo a beacon of comfort.  As she skipped out, rain boots splashing in puddles, Dr. Pepper knew.  Maybe, just maybe, he wasn't a real doctor, but he dispensed something just as important: kindness, a listening ear, and the occasional can of fizzy, caramel-colored hope. \n"
+

Teardown

PASSED test_aws 0:00:02.412382

Setup

Call

Captured stderr call
[2024-11-04T16:54:20Z WARN  aws_runtime::env_config::normalize] section [Connection 1] ignored; config must be in the AWS config file rather than the credentials file
+[2024-11-04T16:54:20Z INFO  aws_config::meta::region] load_region; provider=EnvironmentVariableRegionProvider { env: Env(Real) }
+[2024-11-04T16:54:22Z INFO  baml_events] Function TestAws:
+    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 2231ms. StopReason: max_tokens. Tokens(in/out): 19/100
     ---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 the majestic Mount Rainier:
     
-    The Towering Presence of Mt. Rainier
+    Towering over the Pacific Northwest, Mount Rainier stands as a colossal sentinel, its snow-capped peak piercing the azure sky. At an imposing elevation of 14,411 feet, this majestic volcanic mountain commands awe and reverence from all who gaze upon it.
     
-    As the sun rose over the Cascade Mountains, its golden rays slowly crept up the towering slopes of Mt. Rainier. Standing 14,411 feet tall, the majestic peak dominated the landscape, a colossal presence that commanded the attention of all who laid eyes upon it.
-    
-    For the residents of the nearby towns and cities,
+    For the residents of the surrounding region, Mount Rainier is a constant and reassuring
     ---Parsed Response (string)---
-    "Here is a short story about Mt. Rainier:\n\nThe Towering Presence of Mt. Rainier\n\nAs the sun rose over the Cascade Mountains, its golden rays slowly crept up the towering slopes of Mt. Rainier. Standing 14,411 feet tall, the majestic peak dominated the landscape, a colossal presence that commanded the attention of all who laid eyes upon it.\n\nFor the residents of the nearby towns and cities,"
-

Teardown

PASSED test_openai_shorthand 0:00:09.297877

Setup

Call

Captured stderr call
[2024-10-31T01:08:52Z INFO  baml_events] Function TestOpenAIShorthand:
-    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 9286ms. StopReason: stop
+    "Here is a short story about the majestic Mount Rainier:\n\nTowering over the Pacific Northwest, Mount Rainier stands as a colossal sentinel, its snow-capped peak piercing the azure sky. At an imposing elevation of 14,411 feet, this majestic volcanic mountain commands awe and reverence from all who gaze upon it.\n\nFor the residents of the surrounding region, Mount Rainier is a constant and reassuring"
+

Teardown

PASSED test_openai_shorthand 0:00:15.723216

Setup

Call

Captured stderr call
[2024-11-04T16:54:38Z INFO  baml_events] Function TestOpenAIShorthand:
+    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 15715ms. StopReason: stop. Tokens(in/out): 18/603
     ---PROMPT---
     [chat] system: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
-    Once upon a time, in the lush Pacific Northwest, stood a majestic giant—Mount Rainier. With its snow-capped peak soaring 14,411 feet into the sky, it watched over the land with a silent grace that had captivated the hearts of all who beheld it. The mountain was not just tall; it was a symbol of beauty, strength, and an enduring spirit.
+    Once upon a time in the heart of the Pacific Northwest, there stood a majestic giant named Mount Rainier. Towering over the sprawling valleys and lush forests, Rainier was not just the highest peak in the Cascades; it was a sentinel of time and nature, watching over the land with a gentle yet imposing presence.
     
-    In a small village nestled at the foot of the mountain lived a young girl named Lila. Every morning, she would wake up to the sun casting a golden hue over Rainier’s majestic slopes. The sight filled her with wonder, and her dreams of adventure danced as high as the mountain itself. She often wondered what lay beyond the snow-laden summit, imagining sprawling valleys, shimmering lakes, and vibrant wildflower meadows.
+    In a small town at the base of the mountain lived a curious boy named Eli. He was fascinated by the stories his grandmother told him about Rainier. She would sit by the fire, her voice filled with wonder, recounting how the mountain was a sleeping guardian, covered in a glistening white blanket of snow. “She protects the lands and waters, and on clear days, her beauty takes your breath away,” she would say, pointing toward the distant peak.
     
-    One bright summer day, Lila decided that she would climb the mountain. With a well-loved backpack filled with essentials—water, snacks, and her favorite sketchbook—she set off, her heart pounding with excitement. As she began her ascent, the air turned crisp, and the scent of pine filled her lungs. Lila marveled at the towering trees and colorful wildflowers that dotted the hiking trails, each step bringing her closer to the peak.
+    Eli’s heart swelled with excitement every time he gazed up at the summit, especially on bright, sunny days when the sunlight kissed the snow, making it sparkle like a thousand diamonds. He yearned to see all that Mount Rainier had to offer, so one summer morning, armed with nothing but a backpack filled with sandwiches, a sketchbook, and a spirit full of adventure, he set off to hike the trails that crisscrossed the mountain.
     
-    As she climbed higher, the surroundings transformed. The trees thinned, and the air grew cooler. She encountered fellow hikers along the way, each captivated by the mountain’s beauty. They shared stories and laughter, creating memories beneath the watchful eye of Rainier. Lila often paused to sketch the breathtaking views, capturing the beauty of the moment in every stroke of her pencil.
+    With each step, Eli felt the pulse of the earth beneath his feet. He wandered through fields ablaze with wildflowers and listened to the whisper of the wind through the towering pines. As he climbed higher, the air turned crisp, and he could see panoramic views of valleys stretching into infinity. The sight of the glaciers shimmering under the sun took his breath away, and it was at that moment Eli understood why the mountain was revered by so many.
     
-    After hours of climbing, Lila finally reached the summit. Standing at the top of the world, the feeling was indescribable. The panoramic view opened up before her—a patchwork of valleys stretching in every direction, with rivers gleaming like ribbons in the sunlight. Clouds floated beneath her, and for a moment, she understood what it meant to be untethered, free.
+    Eventually, after a long and glorious day of exploration, he reached a viewpoint overlooking a vast expanse of wilderness. The sun began to dip below the horizon, casting hues of orange and purple across the sky. Eli sat down, his heart brimming with joy as he took out his sketchbook to capture the moment. Every line he drew was filled with the feeling of awe that Rainier’s towering presence inspired within him.
     
-    With a sense of accomplishment swelling in her heart, Lila took out her sketchbook and began to draw. She poured her soul onto the page, capturing the essence of the towering giant that had inspired her every step. It wasn’t just about reaching the summit; it was about the journey, the friendships formed along the way, and the awe of nature.
+    As he sketched, Eli couldn’t help but think about how much he had learned from his journey. Mount Rainier wasn’t just tall; it was a symbol of resilience, permanence, and beauty. It stood through decades, weathering storms and sunshine alike, reminding everyone who gazed upon it that even the tallest of mountains started as mere stones beneath the earth.
     
-    As the sun began to set, painting the sky in hues of pink and purple, Lila sat at the edge, her heart full. Mount Rainier was indeed tall, but it was also a reminder that dreams could be reached, and that every journey, no matter how daunting, holds its own kind of beauty. Lila closed her sketchbook, knowing that this adventure would stay with her forever—a testament to the spirit of a girl and her love for a mountain that stood tall and proud, a guardian of dreams.
+    In the twilight, with the first stars appearing, Eli knew he had forged a special bond with the mountain. He murmured a promise to return, to keep exploring its secrets, to share its beauty with others, and to remember the stories of his grandmother. As the silhouette of Mount Rainier stood silhouetted against the night sky, he made his way down the trail, heart full and spirit soaring, inspired by the abiding grandeur of the tall, timeless giant that would always watch over him.
     ---Parsed Response (string)---
-    "Once upon a time, in the lush Pacific Northwest, stood a majestic giant—Mount Rainier. With its snow-capped peak soaring 14,411 feet into the sky, it watched over the land with a silent grace that had captivated the hearts of all who beheld it. The mountain was not just tall; it was a symbol of beauty, strength, and an enduring spirit.\n\nIn a small village nestled at the foot of the mountain lived a young girl named Lila. Every morning, she would wake up to the sun casting a golden hue over Rainier’s majestic slopes. The sight filled her with wonder, and her dreams of adventure danced as high as the mountain itself. She often wondered what lay beyond the snow-laden summit, imagining sprawling valleys, shimmering lakes, and vibrant wildflower meadows.\n\nOne bright summer day, Lila decided that she would climb the mountain. With a well-loved backpack filled with essentials—water, snacks, and her favorite sketchbook—she set off, her heart pounding with excitement. As she began her ascent, the air turned crisp, and the scent of pine filled her lungs. Lila marveled at the towering trees and colorful wildflowers that dotted the hiking trails, each step bringing her closer to the peak.\n\nAs she climbed higher, the surroundings transformed. The trees thinned, and the air grew cooler. She encountered fellow hikers along the way, each captivated by the mountain’s beauty. They shared stories and laughter, creating memories beneath the watchful eye of Rainier. Lila often paused to sketch the breathtaking views, capturing the beauty of the moment in every stroke of her pencil.\n\nAfter hours of climbing, Lila finally reached the summit. Standing at the top of the world, the feeling was indescribable. The panoramic view opened up before her—a patchwork of valleys stretching in every direction, with rivers gleaming like ribbons in the sunlight. Clouds floated beneath her, and for a moment, she understood what it meant to be untethered, free.\n\nWith a sense of accomplishment swelling in her heart, Lila took out her sketchbook and began to draw. She poured her soul onto the page, capturing the essence of the towering giant that had inspired her every step. It wasn’t just about reaching the summit; it was about the journey, the friendships formed along the way, and the awe of nature.\n\nAs the sun began to set, painting the sky in hues of pink and purple, Lila sat at the edge, her heart full. Mount Rainier was indeed tall, but it was also a reminder that dreams could be reached, and that every journey, no matter how daunting, holds its own kind of beauty. Lila closed her sketchbook, knowing that this adventure would stay with her forever—a testament to the spirit of a girl and her love for a mountain that stood tall and proud, a guardian of dreams."
-

Teardown

PASSED test_openai_shorthand_streaming 0:00:07.529852

Setup

Call

Captured stderr call
[2024-10-31T01:09:00Z INFO  baml_events] Function TestOpenAIShorthand:
-    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 7518ms. StopReason: stop
+    "Once upon a time in the heart of the Pacific Northwest, there stood a majestic giant named Mount Rainier. Towering over the sprawling valleys and lush forests, Rainier was not just the highest peak in the Cascades; it was a sentinel of time and nature, watching over the land with a gentle yet imposing presence.\n\nIn a small town at the base of the mountain lived a curious boy named Eli. He was fascinated by the stories his grandmother told him about Rainier. She would sit by the fire, her voice filled with wonder, recounting how the mountain was a sleeping guardian, covered in a glistening white blanket of snow. “She protects the lands and waters, and on clear days, her beauty takes your breath away,” she would say, pointing toward the distant peak.\n\nEli’s heart swelled with excitement every time he gazed up at the summit, especially on bright, sunny days when the sunlight kissed the snow, making it sparkle like a thousand diamonds. He yearned to see all that Mount Rainier had to offer, so one summer morning, armed with nothing but a backpack filled with sandwiches, a sketchbook, and a spirit full of adventure, he set off to hike the trails that crisscrossed the mountain.\n\nWith each step, Eli felt the pulse of the earth beneath his feet. He wandered through fields ablaze with wildflowers and listened to the whisper of the wind through the towering pines. As he climbed higher, the air turned crisp, and he could see panoramic views of valleys stretching into infinity. The sight of the glaciers shimmering under the sun took his breath away, and it was at that moment Eli understood why the mountain was revered by so many.\n\nEventually, after a long and glorious day of exploration, he reached a viewpoint overlooking a vast expanse of wilderness. The sun began to dip below the horizon, casting hues of orange and purple across the sky. Eli sat down, his heart brimming with joy as he took out his sketchbook to capture the moment. Every line he drew was filled with the feeling of awe that Rainier’s towering presence inspired within him.\n\nAs he sketched, Eli couldn’t help but think about how much he had learned from his journey. Mount Rainier wasn’t just tall; it was a symbol of resilience, permanence, and beauty. It stood through decades, weathering storms and sunshine alike, reminding everyone who gazed upon it that even the tallest of mountains started as mere stones beneath the earth.\n\nIn the twilight, with the first stars appearing, Eli knew he had forged a special bond with the mountain. He murmured a promise to return, to keep exploring its secrets, to share its beauty with others, and to remember the stories of his grandmother. As the silhouette of Mount Rainier stood silhouetted against the night sky, he made his way down the trail, heart full and spirit soaring, inspired by the abiding grandeur of the tall, timeless giant that would always watch over him."
+

Teardown

PASSED test_openai_shorthand_streaming 0:00:13.107354

Setup

Call

Captured stderr call
[2024-11-04T16:54:51Z INFO  baml_events] Function TestOpenAIShorthand:
+    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 13097ms. StopReason: stop. Tokens(in/out): 18/685
     ---PROMPT---
     [chat] system: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
-    Once upon a time, in the verdant Pacific Northwest, there stood a majestic giant known as Mount Rainier. Towering at 14,411 feet, Rainier was more than just a mountain; it was a sentinel, a protector, and a source of inspiration for all who dwelled in its shadow.
+    Once upon a time, in the lush, green foothills of the Pacific Northwest, there stood a majestic giant named Mt. Rainier. Towering high above the vibrant landscape, she was a guardian of the hills, a beacon of beauty encircled by ancient forests and sparkling rivers.
+    
+    Every morning, the sun would rise and cast its golden rays upon Mt. Rainier’s snow-capped peaks, illuminating the valleys below and igniting the sky with brilliant hues of orange and pink. The mountain had a personality all her own; among the locals, she was both humbling and inspiring, an embodiment of nature’s grandeur.
     
-    In the quaint town of Ashford, just a stone’s throw from the mountain's base, lived a young girl named Lily. Every morning, she would look out her bedroom window and gaze at Rainier, its snow-capped peak glistening under the sun. To Lily, the mountain was both beautiful and intimidating, a reminder of nature's grandeur and power.
+    In a quaint little town at the base of the mountain, a young girl named Lily found solace beneath Mt. Rainier's watchful presence. She would often wander into the meadows where wildflowers danced in the breeze, dreaming of the adventures that awaited her. With each passing day, she nestled herself closer to the mountain, filling her heart with its stories: tales of brave climbers, swaying deer, and whispers from the ancient trees.
     
-    One summer day, emboldened by a restless spirit, Lily decided to climb the trail that led up the mountain. Armed with a small backpack filled with snacks and her trusty water bottle, she set off on her adventure. As she hiked, the world around her flourished with life; vibrant wildflowers danced in the gentle breeze, and the sound of a nearby stream provided a soothing melody.
+    One summer afternoon, Lily decided she wanted to see the world from the mountain’s summit. With a mix of excitement and trepidation, she shared her dream with her parents. Holding her hands, they said, "It may be tall, but if you truly wish to reach the top, you must prepare, take your time, and respect her beauty."
     
-    As she ascended, the trees began to thin and the air grew crisper. Each step brought her closer to the peak, but it also made her realize just how tall Mount Rainier truly was. Though she was small and the climb challenging, Lily’s heart swelled with determination. She envisioned the view from the top – the patchwork of forests, valleys, and rivers that painted the landscape below.
+    Determined, Lily started her quest. She learned about the trails, practiced her climbing skills, and filled her backpack with essentials. Day after day, she hiked the lower terrains, each step unfurling her love for the mountain. She met fellow adventurers along the way who shared their stories, each climbing higher with every passing season.
     
-    After hours of climbing, she finally reached a rocky overlook that provided a breathtaking view of the world spread out before her. The valleys shimmered in the sun, and the clouds seemed to kiss the mountain's peak. Up there among the clouds, she felt endless possibilities; she was on top of the world—at least a part of it.
+    Finally, the day arrived—a perfect summer morning when the sky was clear and the air was fresh. With her heart racing and her determination high, Lily set out on the trail to the summit of Mt. Rainier. The climb was both exhilarating and daunting. As she ascended, the world around her transformed; lush greens and wildflowers receded, replaced by rocky paths and the serene beauty of glaciers.
     
-    As she sat on the overlook, enjoying a snack, a fluffy, white mountain goat approached cautiously, its eyes curious and friendly. For a brief moment, they shared a silent connection. This mountain was not just a tall formation of rocks; it was a living, breathing entity filled with stories of those who had climbed before her—and those who would come after.
+    As the hours wore on, fatigue set in, but Lily remembered her dream and the mountain's whispers of perseverance. Slowly, one foot in front of the other, she climbed higher until, at last, she reached the summit. Standing on the precipice of the world, she took a deep breath and gazed out at the sweeping vistas—the valleys, the rivers, and even the glimmering ocean in the distance.
     
-    With a heart full of magic and a smile on her face, Lily made her way back down. She realized that Mount Rainier was not merely a towering presence, but also a symbol of resilience. It taught her that, regardless of how tall or mighty a challenge may seem, one could always take that first step and make their way up.
+    With the wind gently tousling her hair, Lily felt a profound connection to Mt. Rainier. It was not just a tall mountain; it was a testament to dreams, determination, and the spirit of adventure. At that moment, she realized that her journey was her own, a reflection of the beauty that awaited anyone who dared to reach for the sky.
     
-    From that day forward, every time she looked at Rainier from her window, it no longer seemed intimidating. Instead, it stood as a beacon of hope and adventure, always reminding her that the dreams that feel the tallest are often just a hike away.
+    As she made her way back down, her heart brimmed with joy. Mt. Rainier would always be tall and mighty, but she now understood that its true strength lay in the inspiration it gave to all those who gazed upon it. And in that small town, beneath the watchful eye of the mountain, stories would continue to unfold for generations to come, inspiring dreamers like Lily to chase after the heights they wished to reach.
     ---Parsed Response (string)---
-    "Once upon a time, in the verdant Pacific Northwest, there stood a majestic giant known as Mount Rainier. Towering at 14,411 feet, Rainier was more than just a mountain; it was a sentinel, a protector, and a source of inspiration for all who dwelled in its shadow.\n\nIn the quaint town of Ashford, just a stone’s throw from the mountain's base, lived a young girl named Lily. Every morning, she would look out her bedroom window and gaze at Rainier, its snow-capped peak glistening under the sun. To Lily, the mountain was both beautiful and intimidating, a reminder of nature's grandeur and power.\n\nOne summer day, emboldened by a restless spirit, Lily decided to climb the trail that led up the mountain. Armed with a small backpack filled with snacks and her trusty water bottle, she set off on her adventure. As she hiked, the world around her flourished with life; vibrant wildflowers danced in the gentle breeze, and the sound of a nearby stream provided a soothing melody.\n\nAs she ascended, the trees began to thin and the air grew crisper. Each step brought her closer to the peak, but it also made her realize just how tall Mount Rainier truly was. Though she was small and the climb challenging, Lily’s heart swelled with determination. She envisioned the view from the top – the patchwork of forests, valleys, and rivers that painted the landscape below.\n\nAfter hours of climbing, she finally reached a rocky overlook that provided a breathtaking view of the world spread out before her. The valleys shimmered in the sun, and the clouds seemed to kiss the mountain's peak. Up there among the clouds, she felt endless possibilities; she was on top of the world—at least a part of it.\n\nAs she sat on the overlook, enjoying a snack, a fluffy, white mountain goat approached cautiously, its eyes curious and friendly. For a brief moment, they shared a silent connection. This mountain was not just a tall formation of rocks; it was a living, breathing entity filled with stories of those who had climbed before her—and those who would come after.\n\nWith a heart full of magic and a smile on her face, Lily made her way back down. She realized that Mount Rainier was not merely a towering presence, but also a symbol of resilience. It taught her that, regardless of how tall or mighty a challenge may seem, one could always take that first step and make their way up.\n\nFrom that day forward, every time she looked at Rainier from her window, it no longer seemed intimidating. Instead, it stood as a beacon of hope and adventure, always reminding her that the dreams that feel the tallest are often just a hike away."
-

Teardown

PASSED test_anthropic_shorthand 0:00:03.001465

Setup

Call

Captured stderr call
[2024-10-31T01:09:03Z INFO  baml_events] Function TestAnthropicShorthand:
-    Client: anthropic/claude-3-haiku-20240307 (claude-3-haiku-20240307) - 2993ms. StopReason: "end_turn"
+    "Once upon a time, in the lush, green foothills of the Pacific Northwest, there stood a majestic giant named Mt. Rainier. Towering high above the vibrant landscape, she was a guardian of the hills, a beacon of beauty encircled by ancient forests and sparkling rivers.\n\nEvery morning, the sun would rise and cast its golden rays upon Mt. Rainier’s snow-capped peaks, illuminating the valleys below and igniting the sky with brilliant hues of orange and pink. The mountain had a personality all her own; among the locals, she was both humbling and inspiring, an embodiment of nature’s grandeur.\n\nIn a quaint little town at the base of the mountain, a young girl named Lily found solace beneath Mt. Rainier's watchful presence. She would often wander into the meadows where wildflowers danced in the breeze, dreaming of the adventures that awaited her. With each passing day, she nestled herself closer to the mountain, filling her heart with its stories: tales of brave climbers, swaying deer, and whispers from the ancient trees.\n\nOne summer afternoon, Lily decided she wanted to see the world from the mountain’s summit. With a mix of excitement and trepidation, she shared her dream with her parents. Holding her hands, they said, \"It may be tall, but if you truly wish to reach the top, you must prepare, take your time, and respect her beauty.\"\n\nDetermined, Lily started her quest. She learned about the trails, practiced her climbing skills, and filled her backpack with essentials. Day after day, she hiked the lower terrains, each step unfurling her love for the mountain. She met fellow adventurers along the way who shared their stories, each climbing higher with every passing season.\n\nFinally, the day arrived—a perfect summer morning when the sky was clear and the air was fresh. With her heart racing and her determination high, Lily set out on the trail to the summit of Mt. Rainier. The climb was both exhilarating and daunting. As she ascended, the world around her transformed; lush greens and wildflowers receded, replaced by rocky paths and the serene beauty of glaciers.\n\nAs the hours wore on, fatigue set in, but Lily remembered her dream and the mountain's whispers of perseverance. Slowly, one foot in front of the other, she climbed higher until, at last, she reached the summit. Standing on the precipice of the world, she took a deep breath and gazed out at the sweeping vistas—the valleys, the rivers, and even the glimmering ocean in the distance.\n\nWith the wind gently tousling her hair, Lily felt a profound connection to Mt. Rainier. It was not just a tall mountain; it was a testament to dreams, determination, and the spirit of adventure. At that moment, she realized that her journey was her own, a reflection of the beauty that awaited anyone who dared to reach for the sky.\n\nAs she made her way back down, her heart brimmed with joy. Mt. Rainier would always be tall and mighty, but she now understood that its true strength lay in the inspiration it gave to all those who gazed upon it. And in that small town, beneath the watchful eye of the mountain, stories would continue to unfold for generations to come, inspiring dreamers like Lily to chase after the heights they wished to reach."
+

Teardown

PASSED test_anthropic_shorthand 0:00:03.309795

Setup

Call

Captured stderr call
[2024-11-04T16:54:54Z INFO  baml_events] Function TestAnthropicShorthand:
+    Client: anthropic/claude-3-haiku-20240307 (claude-3-haiku-20240307) - 3301ms. StopReason: "end_turn". Tokens(in/out): 19/396
     ---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:
+    
+    Towering High
     
-    Towering over the Pacific Northwest, Mt. Rainier stands as a majestic and awe-inspiring natural wonder. At 14,411 feet (4,392 meters) tall, it is the highest mountain in the Cascade Range and the most prominent peak in the contiguous United States.
+    The morning mist clung to the ancient slopes of Mount Rainier, its majestic peak piercing through the clouds like a frozen spear. Jayden gazed upwards in awe, feeling insignificant in the shadow of this colossal mountain.
     
-    As I gazed up at its snow-capped summit, I couldn't help but feel small and humbled by its sheer scale and grandeur. The mountain's presence was overwhelming, a true testament to the raw power and majesty of Mother Nature.
+    At 14,411 feet, Mount Rainier was the highest point in the Cascade Range, a sleeping giant that loomed over the lush forests and alpine meadows of the Pacific Northwest. Jayden had come to the national park many times, but each visit left him humbled by the mountain's sheer, daunting scale.
     
-    As I hiked through the lush, verdant forests that surround the mountain's base, I couldn't help but marvel at the diversity of life that thrived in the shadow of this giant. Wildflowers dotted the landscape, their vibrant hues a stark contrast to the stark white of the glaciers that clung to the mountain's flanks.
+    As he began his hike, Jayden's legs burned from the steep incline, but his eyes remained fixed on the icy summit far above. With each step, the mountain's grandeur only seemed to grow, towering ever higher against the brilliant blue sky.
     
-    The higher I climbed, the more the air grew thin and the scenery became more dramatic. Towering rock formations and deep, crevasse-filled glaciers dominated the landscape, a testament to the immense forces that had shaped this incredible natural wonder over the course of millennia.
+    Pausing to catch his breath, Jayden turned and looked back at the way he had come. The world below had shrunk to a patchwork of green and gold, a reminded of how small he was in comparison to this ancient, majestic peak.
     
-    And as I reached the summit, I was rewarded with a breathtaking panoramic view that stretched out in all directions. The world below seemed small and insignificant, dwarfed by the sheer scale and power of the mountain that stood before me.
+    Jayden knew he would never reach the top - few ever did. But simply being in the shadow of Mount Rainier, feeling its power and presence, was enough to fill him with a sense of wonder. This was a mountain that commanded respect, one that had stood sentinel over the land for millennia.
     
-    In that moment, I felt a deep sense of awe and reverence for the natural world, and a renewed appreciation for the incredible beauty and wonder that exists in every corner of our planet. Mt. Rainier, with its towering presence and awe-inspiring grandeur, had left an indelible mark on my heart and soul.
+    As he continued his ascent, Jayden couldn't help but marvel at the mountain's enduring strength. No matter how many years passed, Mount Rainier would continue to rise high above, a timeless symbol of the raw, untamed beauty of the natural world.
     ---Parsed Response (string)---
-    "Here is a short story about Mt. Rainier:\n\nTowering over the Pacific Northwest, Mt. Rainier stands as a majestic and awe-inspiring natural wonder. At 14,411 feet (4,392 meters) tall, it is the highest mountain in the Cascade Range and the most prominent peak in the contiguous United States.\n\nAs I gazed up at its snow-capped summit, I couldn't help but feel small and humbled by its sheer scale and grandeur. The mountain's presence was overwhelming, a true testament to the raw power and majesty of Mother Nature.\n\nAs I hiked through the lush, verdant forests that surround the mountain's base, I couldn't help but marvel at the diversity of life that thrived in the shadow of this giant. Wildflowers dotted the landscape, their vibrant hues a stark contrast to the stark white of the glaciers that clung to the mountain's flanks.\n\nThe higher I climbed, the more the air grew thin and the scenery became more dramatic. Towering rock formations and deep, crevasse-filled glaciers dominated the landscape, a testament to the immense forces that had shaped this incredible natural wonder over the course of millennia.\n\nAnd as I reached the summit, I was rewarded with a breathtaking panoramic view that stretched out in all directions. The world below seemed small and insignificant, dwarfed by the sheer scale and power of the mountain that stood before me.\n\nIn that moment, I felt a deep sense of awe and reverence for the natural world, and a renewed appreciation for the incredible beauty and wonder that exists in every corner of our planet. Mt. Rainier, with its towering presence and awe-inspiring grandeur, had left an indelible mark on my heart and soul."
-

Teardown

PASSED test_anthropic_shorthand_streaming 0:00:02.778240

Setup

Call

Captured stderr call
[2024-10-31T01:09:05Z INFO  baml_events] Function TestAnthropicShorthand:
-    Client: anthropic/claude-3-haiku-20240307 (claude-3-haiku-20240307) - 2757ms. StopReason: "end_turn"
+    "Here is a short story about Mount Rainier:\n\nTowering High\n\nThe morning mist clung to the ancient slopes of Mount Rainier, its majestic peak piercing through the clouds like a frozen spear. Jayden gazed upwards in awe, feeling insignificant in the shadow of this colossal mountain.\n\nAt 14,411 feet, Mount Rainier was the highest point in the Cascade Range, a sleeping giant that loomed over the lush forests and alpine meadows of the Pacific Northwest. Jayden had come to the national park many times, but each visit left him humbled by the mountain's sheer, daunting scale.\n\nAs he began his hike, Jayden's legs burned from the steep incline, but his eyes remained fixed on the icy summit far above. With each step, the mountain's grandeur only seemed to grow, towering ever higher against the brilliant blue sky.\n\nPausing to catch his breath, Jayden turned and looked back at the way he had come. The world below had shrunk to a patchwork of green and gold, a reminded of how small he was in comparison to this ancient, majestic peak.\n\nJayden knew he would never reach the top - few ever did. But simply being in the shadow of Mount Rainier, feeling its power and presence, was enough to fill him with a sense of wonder. This was a mountain that commanded respect, one that had stood sentinel over the land for millennia.\n\nAs he continued his ascent, Jayden couldn't help but marvel at the mountain's enduring strength. No matter how many years passed, Mount Rainier would continue to rise high above, a timeless symbol of the raw, untamed beauty of the natural world."
+

Teardown

PASSED test_anthropic_shorthand_streaming 0:00:03.229976

Setup

Call

Captured stderr call
[2024-11-04T16:54:58Z INFO  baml_events] Function TestAnthropicShorthand:
+    Client: anthropic/claude-3-haiku-20240307 (claude-3-haiku-20240307) - 3206ms. StopReason: "end_turn". Tokens(in/out): 19/383
     ---PROMPT---
     [chat] user: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
     Here is a short story about Mount Rainier:
     
-    The Towering Sentinel of the Cascades
+    The Majestic Presence of Mount Rainier
     
-    As the morning sun crested the distant horizon, its golden rays slowly illuminated the majestic peak of Mount Rainier. Standing tall at 14,411 feet, the dormant volcano cast a magnificent silhouette against the clear, azure sky. 
+    As I gazed up at the towering peak of Mount Rainier, I was struck by its sheer size and grandeur. Rising dramatically from the surrounding landscape, the mountain's snow-capped summit seemed to pierce the sky, dwarfing everything around it.  
     
-    Tom paused on the trail, his gaze transfixed by the sheer scale and beauty of the mountain before him. Even from miles away, the glaciated summit seemed to lord over the surrounding landscape, a true king among the Cascade peaks. He marveled at the sight, his heart swelling with a sense of wonder and humility.
+    I had seen pictures of Rainier before, but nothing could have prepared me for the awe-inspiring sight of this ancient, glaciated volcano in person. Standing over 14,000 feet tall, it commanded attention and respect, a true testament to the incredible power of nature.
     
-    Over the course of millennia, this ancient giant had witnessed the ebb and flow of time. Native tribes had revered it as a sacred place, a home to powerful spirits. Centuries of snow and ice had sculpted its flanks, leaving behind glittering rivers of frozen water that flowed down towards the forests and rivers below. 
+    As I hiked through the lush, verdant forests that clung to the mountain's lower slopes, I couldn't help but feel small and insignificant in comparison to Rainier's massive presence. Yet, there was also a sense of wonder and humility that washed over me - this was a landscape sculpted over eons, a natural wonder that had witnessed the passage of millennia.
     
-    And yet, for all its timeless majesty, Mount Rainier remained a living, dynamic entity. Lurking deep beneath its surface, a massive magma chamber kept the volcano eternally restless, a sleeping giant that could one day awaken with catastrophic force.
+    With each step, the mountain seemed to grow taller, its rugged, snow-covered peak reaching ever higher into the clouds. I found myself pausing frequently, craning my neck to take in the full scale and majesty of Rainier, mesmerized by its sheer, towering beauty.
     
-    As Tom continued along the trail, he couldn't help but feel a profound sense of respect and admiration for this towering sentinel of the Cascades. In its shadows, he was reminded of the raw, unstoppable power of nature - a force that commanded reverence and humility from all who beheld it.
+    In that moment, I was reminded of just how grand and powerful our natural world can be. Mount Rainier stood as a testament to the enduring strength of the Earth, a monument to the forces that have shaped our planet over countless generations. And as I gazed upon its majestic form, I felt a profound sense of connection to the timeless cycles of nature that had given rise to this incredible natural wonder.
     ---Parsed Response (string)---
-    "Here is a short story about Mount Rainier:\n\nThe Towering Sentinel of the Cascades\n\nAs the morning sun crested the distant horizon, its golden rays slowly illuminated the majestic peak of Mount Rainier. Standing tall at 14,411 feet, the dormant volcano cast a magnificent silhouette against the clear, azure sky. \n\nTom paused on the trail, his gaze transfixed by the sheer scale and beauty of the mountain before him. Even from miles away, the glaciated summit seemed to lord over the surrounding landscape, a true king among the Cascade peaks. He marveled at the sight, his heart swelling with a sense of wonder and humility.\n\nOver the course of millennia, this ancient giant had witnessed the ebb and flow of time. Native tribes had revered it as a sacred place, a home to powerful spirits. Centuries of snow and ice had sculpted its flanks, leaving behind glittering rivers of frozen water that flowed down towards the forests and rivers below. \n\nAnd yet, for all its timeless majesty, Mount Rainier remained a living, dynamic entity. Lurking deep beneath its surface, a massive magma chamber kept the volcano eternally restless, a sleeping giant that could one day awaken with catastrophic force.\n\nAs Tom continued along the trail, he couldn't help but feel a profound sense of respect and admiration for this towering sentinel of the Cascades. In its shadows, he was reminded of the raw, unstoppable power of nature - a force that commanded reverence and humility from all who beheld it."
-

Teardown

PASSED test_fallback_to_shorthand 0:00:01.024756

Setup

Call

Captured stderr call
[2024-10-31T01:09:06Z INFO  baml_events] Function TestFallbackToShorthand:
+    "Here is a short story about Mount Rainier:\n\nThe Majestic Presence of Mount Rainier\n\nAs I gazed up at the towering peak of Mount Rainier, I was struck by its sheer size and grandeur. Rising dramatically from the surrounding landscape, the mountain's snow-capped summit seemed to pierce the sky, dwarfing everything around it.  \n\nI had seen pictures of Rainier before, but nothing could have prepared me for the awe-inspiring sight of this ancient, glaciated volcano in person. Standing over 14,000 feet tall, it commanded attention and respect, a true testament to the incredible power of nature.\n\nAs I hiked through the lush, verdant forests that clung to the mountain's lower slopes, I couldn't help but feel small and insignificant in comparison to Rainier's massive presence. Yet, there was also a sense of wonder and humility that washed over me - this was a landscape sculpted over eons, a natural wonder that had witnessed the passage of millennia.\n\nWith each step, the mountain seemed to grow taller, its rugged, snow-covered peak reaching ever higher into the clouds. I found myself pausing frequently, craning my neck to take in the full scale and majesty of Rainier, mesmerized by its sheer, towering beauty.\n\nIn that moment, I was reminded of just how grand and powerful our natural world can be. Mount Rainier stood as a testament to the enduring strength of the Earth, a monument to the forces that have shaped our planet over countless generations. And as I gazed upon its majestic form, I felt a profound sense of connection to the timeless cycles of nature that had given rise to this incredible natural wonder."
+

Teardown

PASSED test_fallback_to_shorthand 0:00:01.001753

Setup

Call

Captured stderr call
[2024-11-04T16:54:59Z INFO  baml_events] Function TestFallbackToShorthand:
     (1 other previous tries)
-    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 722ms. StopReason: stop
+    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 729ms. StopReason: stop. Tokens(in/out): 18/19
     ---PROMPT---
     [chat] system: Say a haiku about Mt Rainier is tall.
     
     ---LLM REPLY---
-    Majestic and grand,  
-    Mt. Rainier greets the sky,  
-    A sentinel bright.
+    Majestic and wide,  
+    Mt. Rainier crowns the sky,  
+    Nature’s sentinel.
     ---Parsed Response (string)---
-    "Majestic and grand,  \nMt. Rainier greets the sky,  \nA sentinel bright."
-

Teardown

PASSED test_aws_streaming 0:00:01.901175

Setup

Call

Captured stderr call
[2024-10-31T01:09:06Z WARN  aws_runtime::env_config::normalize] section [Connection 1] ignored; config must be in the AWS config file rather than the credentials file
-[2024-10-31T01:09:06Z INFO  aws_config::meta::region] load_region; provider=EnvironmentVariableRegionProvider { env: Env(Real) }
-[2024-10-31T01:09:08Z INFO  baml_events] Function TestAws:
-    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 1891ms. StopReason: unknown
+    "Majestic and wide,  \nMt. Rainier crowns the sky,  \nNature’s sentinel."
+

Teardown

PASSED test_aws_streaming 0:00:01.930766

Setup

Call

Captured stderr call
[2024-11-04T16:54:59Z WARN  aws_runtime::env_config::normalize] section [Connection 1] ignored; config must be in the AWS config file rather than the credentials file
+[2024-11-04T16:54:59Z INFO  aws_config::meta::region] load_region; provider=EnvironmentVariableRegionProvider { env: Env(Real) }
+[2024-11-04T16:55:01Z INFO  baml_events] Function TestAws:
+    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 1920ms. StopReason: unknown. Tokens(in/out): 19/100
     ---PROMPT---
     [chat] user: Write a nice short story about Mt Rainier is tall
     
     ---LLM REPLY---
     Here is a short story about Mt. Rainier:
     
-    Towering high above the surrounding landscape, Mount Rainier stood tall and proud. Its snow-capped peak glistened in the sunlight, a majestic sight that inspired awe in all who gazed upon it.
+    The Towering Giant of the Cascades
     
-    For local resident Emily, the mountain was a constant and comforting presence. She had grown up in the shadow of its grandeur, and its towering form had become as familiar
+    As the sun peeked over the horizon, its warm rays illuminated the majestic snow-capped peak of Mount Rainier. Standing tall at 14,411 feet, the dormant volcano cast a commanding presence over the surrounding landscape, dwarfing the evergreen forests and rolling hills that stretched out beneath it.
+    
+    For the people who live
     ---Parsed Response (string)---
-    "Here is a short story about Mt. Rainier:\n\nTowering high above the surrounding landscape, Mount Rainier stood tall and proud. Its snow-capped peak glistened in the sunlight, a majestic sight that inspired awe in all who gazed upon it.\n\nFor local resident Emily, the mountain was a constant and comforting presence. She had grown up in the shadow of its grandeur, and its towering form had become as familiar"
-

Teardown

PASSED test_streaming 0:00:03.444564

Setup

Call

Captured stderr call
[2024-10-31T01:09:12Z INFO  baml_events] Function PromptTestStreaming:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 3434ms. StopReason: stop
+    "Here is a short story about Mt. Rainier:\n\nThe Towering Giant of the Cascades\n\nAs the sun peeked over the horizon, its warm rays illuminated the majestic snow-capped peak of Mount Rainier. Standing tall at 14,411 feet, the dormant volcano cast a commanding presence over the surrounding landscape, dwarfing the evergreen forests and rolling hills that stretched out beneath it.\n\nFor the people who live"
+

Teardown

PASSED test_streaming 0:00:05.029893

Setup

Call

Captured stderr call
[2024-11-04T16:55:06Z INFO  baml_events] Function PromptTestStreaming:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 5020ms. StopReason: stop. Tokens(in/out): 19/306
     ---PROMPT---
     [chat] system: Tell me a short story about Programming languages are fun to create
     
     ---LLM REPLY---
-    Once upon a time, there was a brilliant software engineer named Emma who had a passion for creating programming languages. She loved the challenge of designing syntax, defining functions, and optimizing efficiency. 
+    Once upon a time, in a bustling city filled with brilliant minds, a group of young programmers came together with a dream to create their very own programming language. They were inspired by the languages they had learned and used, but they wanted to build something entirely unique and special.
+    
+    They started by brainstorming ideas, sketching out the syntax, and testing different features. As they worked tirelessly, they found that creating a programming language was not just an exercise in logic and problem-solving, but also a journey of creativity and imagination.
     
-    Emma spent countless hours experimenting with different concepts and prototypes, diving deep into the intricacies of compilation and interpretation. She reveled in the creative process of building something that could be used to create powerful and innovative software solutions. 
+    They experimented with different data types, control structures, and functions, weaving them together like artists painting a masterpiece. Each line of code was like a brushstroke on a canvas, adding depth and complexity to their creation.
     
-    As she worked tirelessly on her programming languages, Emma found joy in seeing her creations come to life. Each new language she developed represented a new tool in her digital toolbox, ready to be used to solve complex problems and bring ideas to fruition. 
+    As the language began to take shape, they tested it out on simple programs, watching in awe as their creation came to life. They marveled at how the language could bring order to chaos, turning lines of code into meaningful instructions that could be executed by a computer.
     
-    With each new programming language she created, Emma grew more skilled and knowledgeable, constantly pushing the boundaries of what was possible in the world of technology. And through her passion and dedication, she inspired others to explore the exciting world of programming language design. 
+    Finally, after many long days and nights of hard work, they unveiled their programming language to the world. Programmers from far and wide flocked to try it out, amazed by its elegance and power.
     
-    In the end, Emma's love for creating programming languages brought her not only personal fulfillment but also a sense of pride in knowing that her creations were making a difference in the ever-evolving landscape of software development. And so, she continued to innovate, always seeking new and exciting ways to harness the power of code.
+    And so, the young programmers realized that creating a programming language was not just about building a tool for others to use, but also a joyful and fulfilling expression of their creativity and passion for programming. They knew that they had created something truly special, a language that would inspire and empower generations of coders to come.
     ---Parsed Response (string)---
-    "Once upon a time, there was a brilliant software engineer named Emma who had a passion for creating programming languages. She loved the challenge of designing syntax, defining functions, and optimizing efficiency. \n\nEmma spent countless hours experimenting with different concepts and prototypes, diving deep into the intricacies of compilation and interpretation. She reveled in the creative process of building something that could be used to create powerful and innovative software solutions. \n\nAs she worked tirelessly on her programming languages, Emma found joy in seeing her creations come to life. Each new language she developed represented a new tool in her digital toolbox, ready to be used to solve complex problems and bring ideas to fruition. \n\nWith each new programming language she created, Emma grew more skilled and knowledgeable, constantly pushing the boundaries of what was possible in the world of technology. And through her passion and dedication, she inspired others to explore the exciting world of programming language design. \n\nIn the end, Emma's love for creating programming languages brought her not only personal fulfillment but also a sense of pride in knowing that her creations were making a difference in the ever-evolving landscape of software development. And so, she continued to innovate, always seeking new and exciting ways to harness the power of code."
-

Teardown

PASSED test_streaming_uniterated 0:00:03.235023

Setup

Call

Captured stderr call
[2024-10-31T01:09:15Z INFO  baml_events] Function PromptTestStreaming:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 3225ms. StopReason: stop
+    "Once upon a time, in a bustling city filled with brilliant minds, a group of young programmers came together with a dream to create their very own programming language. They were inspired by the languages they had learned and used, but they wanted to build something entirely unique and special.\n\nThey started by brainstorming ideas, sketching out the syntax, and testing different features. As they worked tirelessly, they found that creating a programming language was not just an exercise in logic and problem-solving, but also a journey of creativity and imagination.\n\nThey experimented with different data types, control structures, and functions, weaving them together like artists painting a masterpiece. Each line of code was like a brushstroke on a canvas, adding depth and complexity to their creation.\n\nAs the language began to take shape, they tested it out on simple programs, watching in awe as their creation came to life. They marveled at how the language could bring order to chaos, turning lines of code into meaningful instructions that could be executed by a computer.\n\nFinally, after many long days and nights of hard work, they unveiled their programming language to the world. Programmers from far and wide flocked to try it out, amazed by its elegance and power.\n\nAnd so, the young programmers realized that creating a programming language was not just about building a tool for others to use, but also a joyful and fulfilling expression of their creativity and passion for programming. They knew that they had created something truly special, a language that would inspire and empower generations of coders to come."
+

Teardown

PASSED test_streaming_uniterated 0:00:04.365119

Setup

Call

Captured stderr call
[2024-11-04T16:55:10Z INFO  baml_events] Function PromptTestStreaming:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 4356ms. StopReason: stop. Tokens(in/out): 19/312
     ---PROMPT---
     [chat] system: Tell me a short story about The color blue makes me sad
     
     ---LLM REPLY---
-    Once there was a girl named Lily who had a peculiar relationship with the color blue. Every time she saw something blue, a wave of melancholy would wash over her. It was as if the color had a strange power over her emotions, evoking memories of lost loved ones and heartbreak.
+    Once there was a girl named Lily who had always loved the color blue. The calming hue of the sky and the deep depths of the ocean always brought her comfort and joy. But as she grew older, something changed within her.
     
-    Lily tried to avoid anything blue as much as she could, but it seemed to be everywhere she turned. The sky, the sea, even the flowers in her garden all carried a tinge of blue that echoed in her heart.
+    Lily began to associate the color blue with sadness and loss. It reminded her of the day she had to say goodbye to her beloved pet dog, whose collar was a vibrant shade of blue. She couldn't bear to look at anything blue without feeling a pang of sorrow deep in her heart.
     
-    One day, as she was walking through a park, she saw a vibrant blue butterfly flitting from flower to flower. She felt a tug of sadness at the sight, but something about the delicate beauty of the creature made her pause. She watched as it danced in the sunlight, its wings shimmering with an ethereal glow.
+    As the years went by, Lily found herself avoiding anything blue. She refused to wear blue clothing or decorate her home with blue accents. The once beautiful color now brought only melancholy and pain.
     
-    In that moment, Lily realized that the color blue didn't have to make her sad. It could also be a source of beauty and inspiration, a reminder of the fleeting nature of life and the importance of cherishing every moment.
+    One day, as Lily was walking through a park, she came across a vibrant patch of blue flowers. Despite her best efforts to avoid them, the sight caught her eye and she couldn't help but feel a surge of emotion. Tears welled in her eyes as memories of her past flooded back, but this time, they were accompanied by a sense of healing and acceptance.
     
-    From that day on, whenever she saw the color blue, instead of feeling sad, she would think of the blue butterfly and the lesson it had taught her. And though a trace of melancholy lingered, it was now mingled with hope and gratitude for the beauty that surrounded her.
+    Lily realized that the color blue may always hold a tinge of sadness for her, but it was also a reminder of the love and happiness she had experienced in her life. She no longer needed to avoid it, for the color blue was a part of her story, a reminder of the bittersweet beauty of life. And so, with a newfound appreciation, Lily embraced the color blue once more, letting it bring both joy and sorrow in equal measure.
     ---Parsed Response (string)---
-    "Once there was a girl named Lily who had a peculiar relationship with the color blue. Every time she saw something blue, a wave of melancholy would wash over her. It was as if the color had a strange power over her emotions, evoking memories of lost loved ones and heartbreak.\n\nLily tried to avoid anything blue as much as she could, but it seemed to be everywhere she turned. The sky, the sea, even the flowers in her garden all carried a tinge of blue that echoed in her heart.\n\nOne day, as she was walking through a park, she saw a vibrant blue butterfly flitting from flower to flower. She felt a tug of sadness at the sight, but something about the delicate beauty of the creature made her pause. She watched as it danced in the sunlight, its wings shimmering with an ethereal glow.\n\nIn that moment, Lily realized that the color blue didn't have to make her sad. It could also be a source of beauty and inspiration, a reminder of the fleeting nature of life and the importance of cherishing every moment.\n\nFrom that day on, whenever she saw the color blue, instead of feeling sad, she would think of the blue butterfly and the lesson it had taught her. And though a trace of melancholy lingered, it was now mingled with hope and gratitude for the beauty that surrounded her."
-

Teardown

PASSED test_streaming_sync 0:00:04.503166

Setup

Call

Captured stderr call
[2024-10-31T01:09:19Z INFO  baml_events] Function PromptTestStreaming:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 4495ms. StopReason: stop
+    "Once there was a girl named Lily who had always loved the color blue. The calming hue of the sky and the deep depths of the ocean always brought her comfort and joy. But as she grew older, something changed within her.\n\nLily began to associate the color blue with sadness and loss. It reminded her of the day she had to say goodbye to her beloved pet dog, whose collar was a vibrant shade of blue. She couldn't bear to look at anything blue without feeling a pang of sorrow deep in her heart.\n\nAs the years went by, Lily found herself avoiding anything blue. She refused to wear blue clothing or decorate her home with blue accents. The once beautiful color now brought only melancholy and pain.\n\nOne day, as Lily was walking through a park, she came across a vibrant patch of blue flowers. Despite her best efforts to avoid them, the sight caught her eye and she couldn't help but feel a surge of emotion. Tears welled in her eyes as memories of her past flooded back, but this time, they were accompanied by a sense of healing and acceptance.\n\nLily realized that the color blue may always hold a tinge of sadness for her, but it was also a reminder of the love and happiness she had experienced in her life. She no longer needed to avoid it, for the color blue was a part of her story, a reminder of the bittersweet beauty of life. And so, with a newfound appreciation, Lily embraced the color blue once more, letting it bring both joy and sorrow in equal measure."
+

Teardown

PASSED test_streaming_sync 0:00:03.859453

Setup

Call

Captured stderr call
[2024-11-04T16:55:14Z INFO  baml_events] Function PromptTestStreaming:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 3852ms. StopReason: stop. Tokens(in/out): 19/269
     ---PROMPT---
     [chat] system: Tell me a short story about Programming languages are fun to create
     
     ---LLM REPLY---
-    Once upon a time, in a magical kingdom filled with endless possibilities, there lived a group of brilliant young wizards who were passionate about creating new and innovative things. One day, they decided to embark on a thrilling quest to develop their very own programming language.
+    Once upon a time, in a land where creativity and innovation flourished, a group of ambitious programmers gathered to create their own programming language. They were excited by the challenge of designing a language that was powerful, efficient, and easy to use.
+    
+    They started by brainstorming ideas for syntax, data structures, and operations. They debated the merits of different programming paradigms and incorporated elements from their favorite languages. As they worked, they encountered obstacles and setbacks, but they never lost their enthusiasm for the project.
     
-    Their journey began with a spark of inspiration, as ideas flowed freely and creativity knew no bounds. They worked tirelessly, combining their knowledge of logic, syntax, and algorithms to bring their vision to life. As lines of code danced across their screens, they marveled at the power they held in their hands.
+    After many long days and late nights of coding and testing, they finally had a working prototype of their new language. They named it "Codeland" and released it to the world with great fanfare.
     
-    The wizards faced many challenges along the way, from debugging pesky errors to refining complex functionalities. But with determination and teamwork, they overcame each obstacle, learning and growing with every step they took.
+    To their delight, Codeland quickly gained popularity among programmers for its simplicity and versatility. Developers praised its elegant syntax and powerful features, and soon it was being used to create a wide range of applications, from simple scripts to complex algorithms.
     
-    Finally, after months of hard work and dedication, the wizards unveiled their masterpiece to the world. Their programming language was a work of art, elegant in design and powerful in execution. It brought joy and excitement to all who used it, opening up a world of endless possibilities and creative potential.
+    As word spread about Codeland, more and more programmers joined the community, contributing ideas and improvements to the language. Together, they continued to refine and expand Codeland, making it even better and more functional with each new release.
     
-    And so, the wizards basked in the glory of their achievement, proud of what they had accomplished together. For they had discovered that programming languages were not just tools for creating software, but a form of magic that allowed them to shape the world in ways they had never imagined. And they knew that their adventure was far from over, as they continued to explore and invent new languages, each more enchanting than the last.
+    And so, the programmers of Codeland lived happily ever after, united by their love of coding and the joy of creating something truly amazing.
     ---Parsed Response (string)---
-    "Once upon a time, in a magical kingdom filled with endless possibilities, there lived a group of brilliant young wizards who were passionate about creating new and innovative things. One day, they decided to embark on a thrilling quest to develop their very own programming language.\n\nTheir journey began with a spark of inspiration, as ideas flowed freely and creativity knew no bounds. They worked tirelessly, combining their knowledge of logic, syntax, and algorithms to bring their vision to life. As lines of code danced across their screens, they marveled at the power they held in their hands.\n\nThe wizards faced many challenges along the way, from debugging pesky errors to refining complex functionalities. But with determination and teamwork, they overcame each obstacle, learning and growing with every step they took.\n\nFinally, after months of hard work and dedication, the wizards unveiled their masterpiece to the world. Their programming language was a work of art, elegant in design and powerful in execution. It brought joy and excitement to all who used it, opening up a world of endless possibilities and creative potential.\n\nAnd so, the wizards basked in the glory of their achievement, proud of what they had accomplished together. For they had discovered that programming languages were not just tools for creating software, but a form of magic that allowed them to shape the world in ways they had never imagined. And they knew that their adventure was far from over, as they continued to explore and invent new languages, each more enchanting than the last."
-

Teardown

PASSED test_streaming_uniterated_sync 0:00:03.061184

Setup

Call

Captured stderr call
[2024-10-31T01:09:22Z INFO  baml_events] Function PromptTestStreaming:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 3055ms. StopReason: stop
+    "Once upon a time, in a land where creativity and innovation flourished, a group of ambitious programmers gathered to create their own programming language. They were excited by the challenge of designing a language that was powerful, efficient, and easy to use.\n\nThey started by brainstorming ideas for syntax, data structures, and operations. They debated the merits of different programming paradigms and incorporated elements from their favorite languages. As they worked, they encountered obstacles and setbacks, but they never lost their enthusiasm for the project.\n\nAfter many long days and late nights of coding and testing, they finally had a working prototype of their new language. They named it \"Codeland\" and released it to the world with great fanfare.\n\nTo their delight, Codeland quickly gained popularity among programmers for its simplicity and versatility. Developers praised its elegant syntax and powerful features, and soon it was being used to create a wide range of applications, from simple scripts to complex algorithms.\n\nAs word spread about Codeland, more and more programmers joined the community, contributing ideas and improvements to the language. Together, they continued to refine and expand Codeland, making it even better and more functional with each new release.\n\nAnd so, the programmers of Codeland lived happily ever after, united by their love of coding and the joy of creating something truly amazing."
+

Teardown

PASSED test_streaming_uniterated_sync 0:00:04.015893

Setup

Call

Captured stderr call
[2024-11-04T16:55:18Z INFO  baml_events] Function PromptTestStreaming:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 4006ms. StopReason: stop. Tokens(in/out): 19/289
     ---PROMPT---
     [chat] system: Tell me a short story about The color blue makes me sad
     
     ---LLM REPLY---
-    Once there was a young girl named Emily who had a deep love for the color blue. She believed it represented peace and tranquility, soothing her troubled mind whenever she saw it.
+    Once there was a girl named Emily who had a deep connection to the color blue. She found it to be the most beautiful and calming hue, and it reminded her of the vastness of the ocean and the endless sky.
     
-    However, one day, tragedy struck when Emily's best friend, Sarah, passed away in a car accident. Sarah's favorite color was also blue, and it suddenly took on a new, heartbreaking meaning for Emily.
+    However, as she grew older, Emily started associating the color blue with her sadness. It reminded her of the times she felt lost and alone, of moments when she cried under the open sky, feeling small and insignificant.
     
-    From that day on, every time Emily saw the color blue, it reminded her of the loss she had endured. The once calming hue now brought tears to her eyes and a heaviness to her heart. She struggled to find solace in something she had once loved so dearly.
+    Despite her efforts to shake off the feeling, the color blue continued to weigh heavy on her heart. She would avoid anything blue, whether it be the sky, the ocean, or even a simple piece of clothing.
     
-    Despite her sadness, Emily knew she would always cherish the memories of Sarah and the beautiful blue skies they had admired together. And as time passed, she found that the color blue no longer made her sad, but instead brought a bittersweet comfort, reminding her of the precious moments they had shared.
+    One day, while taking a walk by the sea, Emily encountered a stunning blue flower blooming amidst the rocks. At first, she turned away, unable to bear the sadness that the color brought her. But as she looked closer, she realized that the flower was a symbol of hope and resilience.
+    
+    In that moment, Emily made peace with the color blue. She understood that while it may bring back painful memories, it also held the power to soothe, to heal, and to remind her that even in the midst of sadness, beauty can still bloom.
+    
+    From then on, whenever Emily saw the color blue, she felt a twinge of sadness but also a glimmer of hope, knowing that she could conquer her sadness and find solace in the beauty that surrounded her.
     ---Parsed Response (string)---
-    "Once there was a young girl named Emily who had a deep love for the color blue. She believed it represented peace and tranquility, soothing her troubled mind whenever she saw it.\n\nHowever, one day, tragedy struck when Emily's best friend, Sarah, passed away in a car accident. Sarah's favorite color was also blue, and it suddenly took on a new, heartbreaking meaning for Emily.\n\nFrom that day on, every time Emily saw the color blue, it reminded her of the loss she had endured. The once calming hue now brought tears to her eyes and a heaviness to her heart. She struggled to find solace in something she had once loved so dearly.\n\nDespite her sadness, Emily knew she would always cherish the memories of Sarah and the beautiful blue skies they had admired together. And as time passed, she found that the color blue no longer made her sad, but instead brought a bittersweet comfort, reminding her of the precious moments they had shared."
-

Teardown

PASSED test_streaming_claude 0:00:01.043147

Setup

Call

Captured stdout call
msgs:
-Here's a haiku about Mt. Rainier's height:
+    "Once there was a girl named Emily who had a deep connection to the color blue. She found it to be the most beautiful and calming hue, and it reminded her of the vastness of the ocean and the endless sky.\n\nHowever, as she grew older, Emily started associating the color blue with her sadness. It reminded her of the times she felt lost and alone, of moments when she cried under the open sky, feeling small and insignificant.\n\nDespite her efforts to shake off the feeling, the color blue continued to weigh heavy on her heart. She would avoid anything blue, whether it be the sky, the ocean, or even a simple piece of clothing.\n\nOne day, while taking a walk by the sea, Emily encountered a stunning blue flower blooming amidst the rocks. At first, she turned away, unable to bear the sadness that the color brought her. But as she looked closer, she realized that the flower was a symbol of hope and resilience.\n\nIn that moment, Emily made peace with the color blue. She understood that while it may bring back painful memories, it also held the power to soothe, to heal, and to remind her that even in the midst of sadness, beauty can still bloom.\n\nFrom then on, whenever Emily saw the color blue, she felt a twinge of sadness but also a glimmer of hope, knowing that she could conquer her sadness and find solace in the beauty that surrounded her."
+

Teardown

PASSED test_streaming_claude 0:00:01.150139

Setup

Call

Captured stdout call
msgs:
+Here's a haiku about Mt. Rainier:
 
-Rainier stands proud, high
-Fourteen thousand feet of snow
-Above Puget Sound
+Rainier stands so high
+Piercing clouds with snowy peak
+Guardian of sky
 final:
-Here's a haiku about Mt. Rainier's height:
+Here's a haiku about Mt. Rainier:
 
-Rainier stands proud, high
-Fourteen thousand feet of snow
-Above Puget Sound
-
Captured stderr call
[2024-10-31T01:09:24Z INFO  baml_events] Function PromptTestClaude:
-    Client: Sonnet (claude-3-5-sonnet-20241022) - 1030ms. StopReason: "end_turn"
+Rainier stands so high
+Piercing clouds with snowy peak
+Guardian of sky
+
Captured stderr call
[2024-11-04T16:55:19Z INFO  baml_events] Function PromptTestClaude:
+    Client: Sonnet (claude-3-5-sonnet-20241022) - 1117ms. StopReason: "end_turn". Tokens(in/out): 19/41
     ---PROMPT---
     [chat] user: Tell me a haiku about Mt Rainier is tall
     
     ---LLM REPLY---
-    Here's a haiku about Mt. Rainier's height:
+    Here's a haiku about Mt. Rainier:
     
-    Rainier stands proud, high
-    Fourteen thousand feet of snow
-    Above Puget Sound
+    Rainier stands so high
+    Piercing clouds with snowy peak
+    Guardian of sky
     ---Parsed Response (string)---
-    "Here's a haiku about Mt. Rainier's height:\n\nRainier stands proud, high\nFourteen thousand feet of snow\nAbove Puget Sound"
-

Teardown

PASSED test_streaming_gemini 0:00:08.008134

Setup

Call

Captured stdout call
msgs:
-Barnaby Butterfield, a man of simple tastes and unwavering routine, sat on his porch swing, the Louisiana sun dipping below the horizon. His day, like all the others, had unfolded predictably: wake, work, supper, swing, sleep. But Barnaby harbored a secret, a small rebellion against the mundane. Each day, as the last sliver of sun kissed the earth, he allowed himself a single indulgence: a frosty, ice-cold Dr Pepper.
+    "Here's a haiku about Mt. Rainier:\n\nRainier stands so high\nPiercing clouds with snowy peak\nGuardian of sky"
+

Teardown

PASSED test_streaming_gemini 0:00:06.320319

Setup

Call

Captured stdout call
msgs:
+Dr. Pepper hadn't always been Dr. Pepper. He'd started life as Perry P. Pepper, a bright-eyed boy fascinated by the fizz and pop of soda. Perry experimented in his basement lab, mixing concoctions of fruit extracts and bubbly water. His dream? To create a soda unlike any other, a flavor symphony that would dance on the tongue.
 
-Today, however, was different. Today, nestled amongst the six-packs at the general store, Barnaby discovered a curious, shimmering bottle, unlike any Dr Pepper he'd seen before. It hummed with a faint energy, the iconic logo swirling like a miniature galaxy. Intrigued, he bought it, his heart, usually as still as his routine, thrumming with a forgotten excitement.
+Years passed, filled with bubbling beakers and countless taste tests. Perry, now a young man, grew disheartened. His creations were good, but not groundbreaking. Then, one rainy afternoon, as lightning crackled outside, he stumbled upon a forgotten ingredient – a dusty vial labeled "23." 
 
-As the sky erupted in hues of orange and purple, Barnaby popped the bottle open. A rush of cool air, smelling of sugared plums and stardust, washed over him. He took a sip. The familiar, comforting taste was infused with something… more. It tasted of crisp mountain air, of laughter echoing through a bustling marketplace, of a thousand whispered secrets.
+Hesitant but intrigued, Perry added a single drop to his latest concoction. The mixture fizzed violently, spewing aromatic steam. When it settled, the air was thick with the scent of cherry, licorice, and something undefinably unique. He took a sip.
 
-Suddenly, the porch swing felt less like worn wood and more like a pirate ship sailing on a sea of stars. Barnaby, usually content with the view of his hydrangeas, saw towering waterfalls cascading from emerald cliffs. His world, usually confined to the four corners of his porch, had expanded, vibrant and exhilarating.
+His eyes widened. It was perfect. A kaleidoscope of 23 distinct flavors, harmonizing in a sweet, slightly spicy crescendo. The soda was more than just a drink; it was an experience, a burst of pure joy.
 
-The taste faded, leaving behind a lingering sweetness and a jolt of joy. As the last drop slid down his throat, Barnaby knew his routine wasn't broken, it was enhanced. He still had his quiet life, but now, he also had a taste of the extraordinary, a reminder that even in the ordinary, magic could be found, one sip of shimmering Dr Pepper at a time. 
+From that day forward, Perry P. Pepper was no more. He became Dr. Pepper, the eccentric inventor of the world's most unique soda. His creation, a testament to perseverance and a pinch of serendipity, became a global sensation, proving that sometimes, the best things in life are worth the wait – and a little bit of magic. 
 
 final:
-Barnaby Butterfield, a man of simple tastes and unwavering routine, sat on his porch swing, the Louisiana sun dipping below the horizon. His day, like all the others, had unfolded predictably: wake, work, supper, swing, sleep. But Barnaby harbored a secret, a small rebellion against the mundane. Each day, as the last sliver of sun kissed the earth, he allowed himself a single indulgence: a frosty, ice-cold Dr Pepper.
+Dr. Pepper hadn't always been Dr. Pepper. He'd started life as Perry P. Pepper, a bright-eyed boy fascinated by the fizz and pop of soda. Perry experimented in his basement lab, mixing concoctions of fruit extracts and bubbly water. His dream? To create a soda unlike any other, a flavor symphony that would dance on the tongue.
 
-Today, however, was different. Today, nestled amongst the six-packs at the general store, Barnaby discovered a curious, shimmering bottle, unlike any Dr Pepper he'd seen before. It hummed with a faint energy, the iconic logo swirling like a miniature galaxy. Intrigued, he bought it, his heart, usually as still as his routine, thrumming with a forgotten excitement.
+Years passed, filled with bubbling beakers and countless taste tests. Perry, now a young man, grew disheartened. His creations were good, but not groundbreaking. Then, one rainy afternoon, as lightning crackled outside, he stumbled upon a forgotten ingredient – a dusty vial labeled "23." 
 
-As the sky erupted in hues of orange and purple, Barnaby popped the bottle open. A rush of cool air, smelling of sugared plums and stardust, washed over him. He took a sip. The familiar, comforting taste was infused with something… more. It tasted of crisp mountain air, of laughter echoing through a bustling marketplace, of a thousand whispered secrets.
+Hesitant but intrigued, Perry added a single drop to his latest concoction. The mixture fizzed violently, spewing aromatic steam. When it settled, the air was thick with the scent of cherry, licorice, and something undefinably unique. He took a sip.
 
-Suddenly, the porch swing felt less like worn wood and more like a pirate ship sailing on a sea of stars. Barnaby, usually content with the view of his hydrangeas, saw towering waterfalls cascading from emerald cliffs. His world, usually confined to the four corners of his porch, had expanded, vibrant and exhilarating.
+His eyes widened. It was perfect. A kaleidoscope of 23 distinct flavors, harmonizing in a sweet, slightly spicy crescendo. The soda was more than just a drink; it was an experience, a burst of pure joy.
 
-The taste faded, leaving behind a lingering sweetness and a jolt of joy. As the last drop slid down his throat, Barnaby knew his routine wasn't broken, it was enhanced. He still had his quiet life, but now, he also had a taste of the extraordinary, a reminder that even in the ordinary, magic could be found, one sip of shimmering Dr Pepper at a time. 
+From that day forward, Perry P. Pepper was no more. He became Dr. Pepper, the eccentric inventor of the world's most unique soda. His creation, a testament to perseverance and a pinch of serendipity, became a global sensation, proving that sometimes, the best things in life are worth the wait – and a little bit of magic. 
 
-
Captured stderr call
[2024-10-31T01:09:32Z INFO  baml_events] Function TestGemini:
-    Client: Gemini (gemini-1.5-pro-001) - 7998ms. StopReason: Stop
+
Captured stderr call
[2024-11-04T16:55:25Z INFO  baml_events] Function TestGemini:
+    Client: Gemini (gemini-1.5-pro-001) - 6305ms. StopReason: Stop. Tokens(in/out): unknown/unknown
     ---PROMPT---
     [chat] user: Write a nice short story about Dr.Pepper
     
     ---LLM REPLY---
-    Barnaby Butterfield, a man of simple tastes and unwavering routine, sat on his porch swing, the Louisiana sun dipping below the horizon. His day, like all the others, had unfolded predictably: wake, work, supper, swing, sleep. But Barnaby harbored a secret, a small rebellion against the mundane. Each day, as the last sliver of sun kissed the earth, he allowed himself a single indulgence: a frosty, ice-cold Dr Pepper.
+    Dr. Pepper hadn't always been Dr. Pepper. He'd started life as Perry P. Pepper, a bright-eyed boy fascinated by the fizz and pop of soda. Perry experimented in his basement lab, mixing concoctions of fruit extracts and bubbly water. His dream? To create a soda unlike any other, a flavor symphony that would dance on the tongue.
     
-    Today, however, was different. Today, nestled amongst the six-packs at the general store, Barnaby discovered a curious, shimmering bottle, unlike any Dr Pepper he'd seen before. It hummed with a faint energy, the iconic logo swirling like a miniature galaxy. Intrigued, he bought it, his heart, usually as still as his routine, thrumming with a forgotten excitement.
+    Years passed, filled with bubbling beakers and countless taste tests. Perry, now a young man, grew disheartened. His creations were good, but not groundbreaking. Then, one rainy afternoon, as lightning crackled outside, he stumbled upon a forgotten ingredient – a dusty vial labeled "23." 
     
-    As the sky erupted in hues of orange and purple, Barnaby popped the bottle open. A rush of cool air, smelling of sugared plums and stardust, washed over him. He took a sip. The familiar, comforting taste was infused with something… more. It tasted of crisp mountain air, of laughter echoing through a bustling marketplace, of a thousand whispered secrets.
+    Hesitant but intrigued, Perry added a single drop to his latest concoction. The mixture fizzed violently, spewing aromatic steam. When it settled, the air was thick with the scent of cherry, licorice, and something undefinably unique. He took a sip.
     
-    Suddenly, the porch swing felt less like worn wood and more like a pirate ship sailing on a sea of stars. Barnaby, usually content with the view of his hydrangeas, saw towering waterfalls cascading from emerald cliffs. His world, usually confined to the four corners of his porch, had expanded, vibrant and exhilarating.
+    His eyes widened. It was perfect. A kaleidoscope of 23 distinct flavors, harmonizing in a sweet, slightly spicy crescendo. The soda was more than just a drink; it was an experience, a burst of pure joy.
     
-    The taste faded, leaving behind a lingering sweetness and a jolt of joy. As the last drop slid down his throat, Barnaby knew his routine wasn't broken, it was enhanced. He still had his quiet life, but now, he also had a taste of the extraordinary, a reminder that even in the ordinary, magic could be found, one sip of shimmering Dr Pepper at a time. 
+    From that day forward, Perry P. Pepper was no more. He became Dr. Pepper, the eccentric inventor of the world's most unique soda. His creation, a testament to perseverance and a pinch of serendipity, became a global sensation, proving that sometimes, the best things in life are worth the wait – and a little bit of magic. 
     
     ---Parsed Response (string)---
-    "Barnaby Butterfield, a man of simple tastes and unwavering routine, sat on his porch swing, the Louisiana sun dipping below the horizon. His day, like all the others, had unfolded predictably: wake, work, supper, swing, sleep. But Barnaby harbored a secret, a small rebellion against the mundane. Each day, as the last sliver of sun kissed the earth, he allowed himself a single indulgence: a frosty, ice-cold Dr Pepper.\n\nToday, however, was different. Today, nestled amongst the six-packs at the general store, Barnaby discovered a curious, shimmering bottle, unlike any Dr Pepper he'd seen before. It hummed with a faint energy, the iconic logo swirling like a miniature galaxy. Intrigued, he bought it, his heart, usually as still as his routine, thrumming with a forgotten excitement.\n\nAs the sky erupted in hues of orange and purple, Barnaby popped the bottle open. A rush of cool air, smelling of sugared plums and stardust, washed over him. He took a sip. The familiar, comforting taste was infused with something… more. It tasted of crisp mountain air, of laughter echoing through a bustling marketplace, of a thousand whispered secrets.\n\nSuddenly, the porch swing felt less like worn wood and more like a pirate ship sailing on a sea of stars. Barnaby, usually content with the view of his hydrangeas, saw towering waterfalls cascading from emerald cliffs. His world, usually confined to the four corners of his porch, had expanded, vibrant and exhilarating.\n\nThe taste faded, leaving behind a lingering sweetness and a jolt of joy. As the last drop slid down his throat, Barnaby knew his routine wasn't broken, it was enhanced. He still had his quiet life, but now, he also had a taste of the extraordinary, a reminder that even in the ordinary, magic could be found, one sip of shimmering Dr Pepper at a time. \n"
-

Teardown

PASSED test_tracing_async_only 0:00:05.938576

Setup

Call

Captured stdout call
STATS TraceStats(failed=0, started=15, finalized=15, submitted=15, sent=15, done=15)
-
Captured stderr call
[2024-10-31T01:09:33Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 696ms. StopReason: stop
+    "Dr. Pepper hadn't always been Dr. Pepper. He'd started life as Perry P. Pepper, a bright-eyed boy fascinated by the fizz and pop of soda. Perry experimented in his basement lab, mixing concoctions of fruit extracts and bubbly water. His dream? To create a soda unlike any other, a flavor symphony that would dance on the tongue.\n\nYears passed, filled with bubbling beakers and countless taste tests. Perry, now a young man, grew disheartened. His creations were good, but not groundbreaking. Then, one rainy afternoon, as lightning crackled outside, he stumbled upon a forgotten ingredient – a dusty vial labeled \"23.\" \n\nHesitant but intrigued, Perry added a single drop to his latest concoction. The mixture fizzed violently, spewing aromatic steam. When it settled, the air was thick with the scent of cherry, licorice, and something undefinably unique. He took a sip.\n\nHis eyes widened. It was perfect. A kaleidoscope of 23 distinct flavors, harmonizing in a sweet, slightly spicy crescendo. The soda was more than just a drink; it was an experience, a burst of pure joy.\n\nFrom that day forward, Perry P. Pepper was no more. He became Dr. Pepper, the eccentric inventor of the world's most unique soda. His creation, a testament to perseverance and a pinch of serendipity, became a global sensation, proving that sometimes, the best things in life are worth the wait – and a little bit of magic. \n"
+

Teardown

PASSED test_tracing_async_only 0:00:05.660904

Setup

Call

Captured stdout call
STATS TraceStats(failed=0, started=15, finalized=15, submitted=15, sent=15, done=15)
+
Captured stderr call
[2024-11-04T16:55:27Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 930ms. StopReason: stop. Tokens(in/out): 50/18
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -1015,16 +1124,16 @@
     
     ---LLM REPLY---
     {
-      "prop1": "Hello, world!",
+      "prop1": "example",
       "prop2": 540
     }
     ---Parsed Response (class TestOutputClass)---
     {
-      "prop1": "Hello, world!",
+      "prop1": "example",
       "prop2": 540
     }
-[2024-10-31T01:09:34Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 598ms. StopReason: stop
+[2024-11-04T16:55:28Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 864ms. StopReason: stop. Tokens(in/out): 50/20
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -1039,16 +1148,16 @@
     
     ---LLM REPLY---
     {
-      "prop1": "Hello, World!",
+      "prop1": "Hello, world!",
       "prop2": 540
     }
     ---Parsed Response (class TestOutputClass)---
     {
-      "prop1": "Hello, World!",
+      "prop1": "Hello, world!",
       "prop2": 540
     }
-[2024-10-31T01:09:35Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 779ms. StopReason: stop
+[2024-11-04T16:55:29Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1065ms. StopReason: stop. Tokens(in/out): 50/20
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -1063,16 +1172,16 @@
     
     ---LLM REPLY---
     {
-      "prop1": "Hello, World!",
+      "prop1": "Hello, world!",
       "prop2": 540
     }
     ---Parsed Response (class TestOutputClass)---
     {
-      "prop1": "Hello, World!",
+      "prop1": "Hello, world!",
       "prop2": 540
     }
-[2024-10-31T01:09:37Z INFO  baml_events] Function FnOutputClass:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 840ms. StopReason: stop
+[2024-11-04T16:55:31Z INFO  baml_events] Function FnOutputClass:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 833ms. StopReason: stop. Tokens(in/out): 50/19
     ---PROMPT---
     [chat] system: Return a JSON blob with this schema: 
     Answer in JSON using this schema:
@@ -1087,17 +1196,17 @@
     
     ---LLM REPLY---
     {
-      "prop1": "Sample data",
+      "prop1": "Example string",
       "prop2": 540
     }
     ---Parsed Response (class TestOutputClass)---
     {
-      "prop1": "Sample data",
+      "prop1": "Example string",
       "prop2": 540
     }
-

Teardown

PASSED test_tracing_sync 0:00:00.001286

Setup

Call

Teardown

PASSED test_tracing_thread_pool 0:00:01.482646

Setup

Call

Teardown

PASSED test_tracing_thread_pool_async 0:00:14.207460

Setup

Call

Teardown

PASSED test_tracing_async_gather 0:00:01.269674

Setup

Call

Teardown

PASSED test_tracing_async_gather_top_level 0:00:01.505922

Setup

Call

Teardown

PASSED test_dynamic 0:00:00.948736

Setup

Call

Captured stdout call
{'name': 'Harrison', 'hair_color': <Color.BLACK: 'BLACK'>, 'last_name': [], 'height': 1.83, 'hobbies': [<Hobby.SPORTS: 'SPORTS'>]}
-
Captured stderr call
[2024-10-31T01:09:57Z INFO  baml_events] Function ExtractPeople:
-    Client: GPT4 (gpt-4o-2024-08-06) - 940ms. StopReason: stop
+

Teardown

PASSED test_tracing_sync 0:00:00.001787

Setup

Call

Teardown

PASSED test_tracing_thread_pool 0:00:01.393800

Setup

Call

Teardown

PASSED test_tracing_thread_pool_async 0:00:14.123566

Setup

Call

Teardown

PASSED test_tracing_async_gather 0:00:01.477560

Setup

Call

Teardown

PASSED test_tracing_async_gather_top_level 0:00:01.139670

Setup

Call

Teardown

PASSED test_dynamic 0:00:01.428467

Setup

Call

Captured stdout call
{'name': 'Harrison', 'hair_color': <Color.BLACK: 'BLACK'>, 'last_name': [], 'height': 1.83, 'hobbies': [<Hobby.SPORTS: 'SPORTS'>]}
+
Captured stderr call
[2024-11-04T16:55:51Z INFO  baml_events] Function ExtractPeople:
+    Client: GPT4 (gpt-4o-2024-08-06) - 1415ms. StopReason: stop. Tokens(in/out): 177/49
     ---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.
     
@@ -1141,10 +1250,10 @@
         ]
       }
     ]
-

Teardown

PASSED test_dynamic_class_output 0:00:01.269460

Setup

Call

Captured stdout call
[]
+

Teardown

PASSED test_dynamic_class_output 0:00:00.957732

Setup

Call

Captured stdout call
[]
 {"hair_color":"black"}
-
Captured stderr call
[2024-10-31T01:09:58Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 693ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:55:51Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 430ms. StopReason: stop. Tokens(in/out): 49/10
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1163,8 +1272,8 @@
     {
       "hair_color": "black"
     }
-[2024-10-31T01:09:58Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 566ms. StopReason: stop
+[2024-11-04T16:55:52Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 513ms. StopReason: stop. Tokens(in/out): 49/10
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1183,9 +1292,9 @@
     {
       "hair_color": "black"
     }
-

Teardown

PASSED test_dynamic_class_nested_output_no_stream 0:00:01.321163

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-10-31T01:09:59Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1311ms. StopReason: stop
+

Teardown

PASSED test_dynamic_class_nested_output_no_stream 0:00:01.558718

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-11-04T16:55:53Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1544ms. StopReason: stop. Tokens(in/out): 97/57
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1213,7 +1322,7 @@
       },
       "address": null,
       "hairColor": "black",
-      "height": 6
+      "height": 6.0
     }
     ---Parsed Response (class DynamicOutput)---
     {
@@ -1226,7 +1335,7 @@
       "hair_color": "black",
       "height": 6.0
     }
-

Teardown

PASSED test_dynamic_class_nested_output_stream 0:00:00.903404

Setup

Call

Captured stdout call
streamed  name=None hair_color=None
+

Teardown

PASSED test_dynamic_class_nested_output_stream 0:00:00.941964

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}
@@ -1303,8 +1412,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-10-31T01:10:00Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 895ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:55:54Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 932ms. StopReason: stop. Tokens(in/out): 73/35
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1335,25 +1444,24 @@
       },
       "hair_color": "black"
     }
-

Teardown

PASSED test_stream_dynamic_class_output 0:00:00.463804

Setup

Call

Captured stdout call
[]
-streamed  {'hair_color': '{'}
-streamed  {'hair_color': '{'}
-streamed  {'hair_color': '{\n  "'}
-streamed  {'hair_color': '{\n  "hair'}
-streamed  {'hair_color': '{\n  "hair_color'}
-streamed  {'hair_color': '{\n  "hair_color":'}
+

Teardown

PASSED test_stream_dynamic_class_output 0:00:00.610370

Setup

Call

Captured stdout call
[]
+streamed  {'hair_color': None}
+streamed  {'hair_color': None}
+streamed  {'hair_color': None}
+streamed  {'hair_color': None}
+streamed  {'hair_color': None}
+streamed  {'hair_color': None}
 streamed  {'hair_color': ''}
 streamed  {'hair_color': 'black'}
 streamed  {'hair_color': 'black'}
 streamed  {'hair_color': 'black'}
 streamed  {'hair_color': 'black'}
 streamed  {'hair_color': 'black'}
-streamed  {'hair_color': 'black'}
 final  hair_color='black'
 final  {'hair_color': 'black'}
 final  {"hair_color":"black"}
-
Captured stderr call
[2024-10-31T01:10:01Z INFO  baml_events] Function MyFunc:
-    Client: MyClient (gpt-4o-mini-2024-07-18) - 455ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:55:55Z INFO  baml_events] Function MyFunc:
+    Client: MyClient (gpt-4o-mini-2024-07-18) - 602ms. StopReason: stop. Tokens(in/out): 48/10
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1365,31 +1473,29 @@
     }
     
     ---LLM REPLY---
-    ```json
     {
       "hair_color": "black"
     }
-    ```
     ---Parsed Response (class DynamicOutput)---
     {
       "hair_color": "black"
     }
-

Teardown

PASSED test_dynamic_inputs_list2 0:00:01.647980

Setup

Call

Captured stderr call
[2024-10-31T01:10:03Z INFO  baml_events] Function DynamicListInputOutput:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1637ms. StopReason: stop
+

Teardown

PASSED test_dynamic_inputs_list2 0:00:01.483164

Setup

Call

Captured stderr call
[2024-11-04T16:55:56Z INFO  baml_events] Function DynamicListInputOutput:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1472ms. StopReason: stop. Tokens(in/out): 135/79
     ---PROMPT---
     [chat] system: Here is some input data:
     ----
     [{
-        "testKey": "myTest",
         "new_key": "hi1",
         "blah": {
             "nestedKey1": "nestedVal",
         },
+        "testKey": "myTest",
     }, {
-        "new_key": "hi",
         "blah": {
             "nestedKey1": "nestedVal",
         },
+        "new_key": "hi",
         "testKey": "myTest",
     }]
     ----
@@ -1408,20 +1514,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>)---
     [
@@ -1440,8 +1546,8 @@
         }
       }
     ]
-

Teardown

PASSED test_dynamic_types_new_enum 0:00:02.412615

Setup

Call

Captured stderr call
[2024-10-31T01:10:05Z INFO  baml_events] Function ExtractPeople:
-    Client: GPT4 (gpt-4o-2024-08-06) - 2402ms. StopReason: stop
+

Teardown

PASSED test_dynamic_types_new_enum 0:00:00.940453

Setup

Call

Captured stderr call
[2024-11-04T16:55:57Z INFO  baml_events] Function ExtractPeople:
+    Client: GPT4 (gpt-4o-2024-08-06) - 931ms. StopReason: stop. Tokens(in/out): 149/36
     ---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.
     
@@ -1473,8 +1579,8 @@
         "animalLiked": "GIRAFFE"
       }
     ]
-

Teardown

PASSED test_dynamic_types_existing_enum 0:00:00.507572

Setup

Call

Captured stderr call
[2024-10-31T01:10:05Z INFO  baml_events] Function ExtractHobby:
-    Client: GPT4 (gpt-4o-2024-08-06) - 498ms. StopReason: stop
+

Teardown

PASSED test_dynamic_types_existing_enum 0:00:00.672058

Setup

Call

Captured stderr call
[2024-11-04T16:55:58Z INFO  baml_events] Function ExtractHobby:
+    Client: GPT4 (gpt-4o-2024-08-06) - 655ms. StopReason: stop. Tokens(in/out): 65/12
     ---PROMPT---
     [chat] system: Answer with a JSON Array using this schema:
     [
@@ -1483,19 +1589,17 @@
     user: My name is Harrison. My hair is black and I'm 6 feet tall. golf and music are my favorite!.
     
     ---LLM REPLY---
-    ```json
     [
-      "MUSIC",
-      "Golfing"
+      "Golfing",
+      "MUSIC"
     ]
-    ```
     ---Parsed Response (list<enum Hobby>)---
     [
-      "MUSIC",
-      "Golfing"
+      "Golfing",
+      "MUSIC"
     ]
-

Teardown

PASSED test_dynamic_literals 0:00:01.086050

Setup

Call

Captured stderr call
[2024-10-31T01:10:07Z INFO  baml_events] Function ExtractPeople:
-    Client: GPT4 (gpt-4o-2024-08-06) - 1077ms. StopReason: stop
+

Teardown

PASSED test_dynamic_literals 0:00:00.896486

Setup

Call

Captured stderr call
[2024-11-04T16:55:59Z INFO  baml_events] Function ExtractPeople:
+    Client: GPT4 (gpt-4o-2024-08-06) - 887ms. StopReason: stop. Tokens(in/out): 149/32
     ---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.
     
@@ -1525,23 +1629,23 @@
         "animalLiked": "GIRAFFE"
       }
     ]
-

Teardown

PASSED test_dynamic_inputs_list 0:00:01.488684

Setup

Call

Captured stderr call
[2024-10-31T01:10:08Z INFO  baml_events] Function DynamicListInputOutput:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1478ms. StopReason: stop
+

Teardown

PASSED test_dynamic_inputs_list 0:00:01.420476

Setup

Call

Captured stderr call
[2024-11-04T16:56:00Z INFO  baml_events] Function DynamicListInputOutput:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1408ms. StopReason: stop. Tokens(in/out): 134/78
     ---PROMPT---
     [chat] system: Here is some input data:
     ----
     [{
-        "new_key": "hi",
+        "testKey": "myTest",
         "blah": {
             "nestedKey1": "nestedVal",
         },
-        "testKey": "myTest",
+        "new_key": "hi",
     }, {
-        "testKey": "myTest",
         "new_key": "hi",
         "blah": {
             "nestedKey1": "nestedVal",
         },
+        "testKey": "myTest",
     }]
     ----
     
@@ -1591,12 +1695,12 @@
         }
       }
     ]
-

Teardown

PASSED test_dynamic_output_map 0:00:01.046204

Setup

Call

Captured stdout call
[]
+

Teardown

PASSED test_dynamic_output_map 0:00:00.950461

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-10-31T01:10:09Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1038ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:56:01Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 943ms. StopReason: stop. Tokens(in/out): 80/44
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1627,15 +1731,15 @@
         "facial_hair": "beard"
       }
     }
-

Teardown

PASSED test_dynamic_output_union 0:00:02.633330

Setup

Call

Captured stdout call
[]
+

Teardown

PASSED test_dynamic_output_union 0:00:02.446937

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'} 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-10-31T01:10:10Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1289ms. StopReason: stop
+final  hair_color='black' attributes={'eye_color': 'blue', 'facial_hair': 'beard'} height={'meters': 1.8}
+final  {'hair_color': 'black', 'attributes': {'eye_color': 'blue', 'facial_hair': 'beard'}, 'height': {'meters': 1.8}}
+final  {"hair_color":"black","attributes":{"eye_color":"blue","facial_hair":"beard"},"height":{"meters":1.8}}
+
Captured stderr call
[2024-11-04T16:56:02Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1145ms. StopReason: stop. Tokens(in/out): 114/58
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1659,7 +1763,7 @@
       "hair_color": "black",
       "attributes": {
         "eye_color": "blue",
-        "facial_hair": "beard",
+        "facial_hair": "beard"
       },
       "height": {
         "feet": 6,
@@ -1678,8 +1782,8 @@
         "inches": null
       }
     }
-[2024-10-31T01:10:12Z INFO  baml_events] Function MyFunc:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 1323ms. StopReason: stop
+[2024-11-04T16:56:04Z INFO  baml_events] Function MyFunc:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 1273ms. StopReason: stop. Tokens(in/out): 116/53
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -1703,8 +1807,7 @@
       "hair_color": "black",
       "attributes": {
         "eye_color": "blue",
-        "facial_hair": "beard",
-        "age": "30"
+        "facial_hair": "beard"
       },
       "height": {
         "meters": 1.8
@@ -1715,157 +1818,38 @@
       "hair_color": "black",
       "attributes": {
         "eye_color": "blue",
-        "facial_hair": "beard",
-        "age": "30"
+        "facial_hair": "beard"
       },
       "height": {
         "meters": 1.8
       }
     }
-

Teardown

PASSED test_nested_class_streaming 0:00:02.583748

Setup

Call

Captured stdout call
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': 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', 'prop2': None}
-streamed  {'prop1': 'example', 'prop2': None}
-streamed  {'prop1': 'example', 'prop2': None}
-streamed  {'prop1': 'example', 'prop2': None}
-streamed  {'prop1': 'example', 'prop2': None}
-streamed  {'prop1': 'example', 'prop2': None}
-streamed  {'prop1': 'example', 'prop2': None}
-streamed  {'prop1': 'example', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': None, 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': '', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': None, 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': '', 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value', 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': None}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': None, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-streamed  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': None}}}
-final  {'prop1': 'example', 'prop2': {'prop1': 'value1', 'prop2': 'value2', 'inner': {'prop2': 42, 'prop3': 3.14159}}}
-
Captured stderr call
[2024-10-31T01:10:14Z INFO  baml_events] Function FnOutputClassNested:
-    Client: Ollama (llama2) - 2575ms. StopReason: stop
+

Teardown

FAILED test_nested_class_streaming 0:00:00.008714

baml_py.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: 1730739364, tv_nsec: 41948000 }, latency: 1.718083ms, 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) }

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."
+        )
+        msgs: List[partial_types.TestClassNested] = []
+        async for msg in stream:
+            print("streamed ", msg.model_dump(mode="json"))
+            msgs.append(msg)
+>       final = await stream.get_final_response()
+
+tests/test_functions.py:1039: 
+_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+../../engine/language_client_python/python_src/baml_py/stream.py:81: in get_final_response
+    return self.__final_coerce((await asyncio.wrap_future(final)))
+_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+
+x = 
+
+>     lambda x: cast(types.TestClassNested, x.cast_to(types, types)),
+      self.__ctx_manager.get(),
+    )
+E   baml_py.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: 1730739364, tv_nsec: 41948000 }, latency: 1.718083ms, 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) }
+
+baml_client/async_client.py:3816: BamlClientError
Captured stderr call
[2024-11-04T16:56:04Z WARN  baml_events] Function FnOutputClassNested:
+    Client: Ollama (<unknown>) - 1ms
     ---PROMPT---
     [chat] system: Return a made up json blob that matches this schema:
     Answer in JSON using this schema:
@@ -1884,45 +1868,21 @@
     
     JSON:
     
-    ---LLM REPLY---
-    Of course! Here is a made-up JSON blob that matches the schema you provided:
-    ```json
-    {
-      "prop1": "example",
-      "prop2": {
-        "prop1": "value1",
-        "prop2": "value2",
-        "inner": {
-          "prop2": 42,
-          "prop3": 3.14159,
-        },
-      },
-    }
-    ```
-    This JSON blob includes the required properties `prop1` and `prop2`, as well as the nested property `inner` with the sub-properties `prop2` and `prop3`.
-    ---Parsed Response (class TestClassNested)---
-    {
-      "prop1": "example",
-      "prop2": {
-        "prop1": "value1",
-        "prop2": "value2",
-        "inner": {
-          "prop2": 42,
-          "prop3": 3.14159
-        }
-      }
-    }
-

Teardown

PASSED test_dynamic_client_with_openai 0:00:00.571335

Setup

Call

Captured stderr call
[2024-10-31T01:10:15Z INFO  baml_events] Function ExpectFailure:
-    Client: MyClient (gpt-3.5-turbo-0125) - 566ms. StopReason: stop
+    ---REQUEST OPTIONS---
+    model: "llama2"
+    ---ERROR (Unspecified error code: 2)---
+    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" })) }
+

Teardown

PASSED test_dynamic_client_with_openai 0:00:00.330723

Setup

Call

Captured stderr call
[2024-11-04T16:56:04Z INFO  baml_events] Function ExpectFailure:
+    Client: MyClient (gpt-3.5-turbo-0125) - 324ms. StopReason: stop. Tokens(in/out): 14/1
     ---PROMPT---
     [chat] system: What is the capital of England?
     
     ---LLM REPLY---
-    The capital of England is London.
+    London
     ---Parsed Response (string)---
-    "The capital of England is London."
-

Teardown

PASSED test_dynamic_client_with_vertex_json_str_creds 0:00:03.319996

Setup

Call

Captured stderr call
[2024-10-31T01:10:18Z INFO  baml_events] Function ExpectFailure:
-    Client: MyClient () - 3312ms. StopReason: "STOP"
+    "London"
+

Teardown

PASSED test_dynamic_client_with_vertex_json_str_creds 0:00:01.160190

Setup

Call

Captured stderr call
[2024-11-04T16:56:05Z INFO  baml_events] Function ExpectFailure:
+    Client: MyClient () - 1153ms. StopReason: "STOP". Tokens(in/out): 7/10
     ---PROMPT---
     [chat] user: What is the capital of England?
     
@@ -1931,8 +1891,8 @@
     
     ---Parsed Response (string)---
     "The capital of England is **London**. \n"
-

Teardown

PASSED test_dynamic_client_with_vertex_json_object_creds 0:00:01.369350

Setup

Call

Captured stderr call
[2024-10-31T01:10:20Z INFO  baml_events] Function ExpectFailure:
-    Client: MyClient () - 1363ms. StopReason: "STOP"
+

Teardown

PASSED test_dynamic_client_with_vertex_json_object_creds 0:00:01.094242

Setup

Call

Captured stderr call
[2024-11-04T16:56:06Z INFO  baml_events] Function ExpectFailure:
+    Client: MyClient () - 1084ms. StopReason: "STOP". Tokens(in/out): 7/10
     ---PROMPT---
     [chat] user: What is the capital of England?
     
@@ -1941,12 +1901,12 @@
     
     ---Parsed Response (string)---
     "The capital of England is **London**. \n"
-

Teardown

PASSED test_event_log_hook 0:00:01.367600

Setup

Call

Captured stdout call
Event log hook1: 
+

Teardown

PASSED test_event_log_hook 0:00:01.318807

Setup

Call

Captured stdout call
Event log hook1: 
 Event log event  BamlLogEvent {
     metadata: {
-        event_id: "c9a48c34-bac7-4350-8f08-96e876f58013",
+        event_id: "00a06d87-c8dd-42a4-8e0e-551b52121390",
         parent_id: None,
-        root_event_id: "c9a48c34-bac7-4350-8f08-96e876f58013"
+        root_event_id: "00a06d87-c8dd-42a4-8e0e-551b52121390"
     },
     prompt: "[
   {
@@ -1960,10 +1920,10 @@
 ]",
     raw_output: "["a", "b", "c"]",
     parsed_output: "["a", "b", "c"]",
-    start_time: "2024-10-31T01:10:20.561Z"
+    start_time: "2024-11-04T16:56:07.016Z"
 }
-
Captured stderr call
[2024-10-31T01:10:21Z INFO  baml_events] Function TestFnNamedArgsSingleStringList:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 528ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:56:07Z INFO  baml_events] Function TestFnNamedArgsSingleStringList:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 684ms. StopReason: stop. Tokens(in/out): 23/9
     ---PROMPT---
     [chat] system: Return this value back to me: ["a", "b", "c"]
     
@@ -1971,7 +1931,7 @@
     ["a", "b", "c"]
     ---Parsed Response (string)---
     "[\"a\", \"b\", \"c\"]"
-

Teardown

PASSED test_aws_bedrock 0:00:01.990151

Setup

Call

Captured stdout call
streamed  'Here'
+

Teardown

PASSED test_aws_bedrock 0:00:02.203973

Setup

Call

Captured stdout call
streamed  'Here'
 streamed  'Here is'
 streamed  'Here is a'
 streamed  'Here is a short'
@@ -1982,119 +1942,117 @@
 streamed  'Here is a short story about lightning in a'
 streamed  'Here is a short story about lightning in a rock'
 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 Capt'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Captive'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Captive Spark'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe ol'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quar'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent'
-streamed  'Here is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent an'
-streamed  ' is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still'
-streamed  'is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still,'
-streamed  ' short story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its'
-streamed  'ort story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its cr'
-streamed  't story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crum'
-streamed  'ry about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crumbling'
-streamed  'out lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crumbling rock'
-streamed  'ghtning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crumbling rock walls'
-streamed  'ing in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crumbling rock walls gle'
-streamed  'n a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming'
-streamed  ' rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming in'
-streamed  'k:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming in the'
-streamed  '\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming in the f'
-streamed  ' Captive Spark\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming in the fading'
-streamed  've Spark\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming in the fading light'
-streamed  'e Spark\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming in the fading light.'
-streamed  'rk\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming in the fading light. Moss'
-streamed  'k\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming in the fading light. Moss-'
-streamed  ' old quarry lay silent and still, its crumbling rock walls gleaming in the fading light. Moss-covere'
-streamed  'd quarry lay silent and still, its crumbling rock walls gleaming in the fading light. Moss-covered b'
-streamed  'uarry lay silent and still, its crumbling rock walls gleaming in the fading light. Moss-covered boul'
-streamed  'y lay silent and still, its crumbling rock walls gleaming in the fading light. Moss-covered boulders'
-streamed  'y silent and still, its crumbling rock walls gleaming in the fading light. Moss-covered boulders dot'
-streamed  'silent and still, its crumbling rock walls gleaming in the fading light. Moss-covered boulders dotte'
-streamed  't and still, its crumbling rock walls gleaming in the fading light. Moss-covered boulders dotted the'
-streamed  'nd still, its crumbling rock walls gleaming in the fading light. Moss-covered boulders dotted the un'
-streamed  'till, its crumbling rock walls gleaming in the fading light. Moss-covered boulders dotted the uneven'
-streamed  'its crumbling rock walls gleaming in the fading light. Moss-covered boulders dotted the uneven groun'
-streamed  's crumbling rock walls gleaming in the fading light. Moss-covered boulders dotted the uneven ground,'
-streamed  'mbling rock walls gleaming in the fading light. Moss-covered boulders dotted the uneven ground, remn'
-streamed  'ng rock walls gleaming in the fading light. Moss-covered boulders dotted the uneven ground, remnants'
-streamed  'rock walls gleaming in the fading light. Moss-covered boulders dotted the uneven ground, remnants of'
-streamed  'ck walls gleaming in the fading light. Moss-covered boulders dotted the uneven ground, remnants of a'
-streamed  'alls gleaming in the fading light. Moss-covered boulders dotted the uneven ground, remnants of a byg'
-streamed  's gleaming in the fading light. Moss-covered boulders dotted the uneven ground, remnants of a bygone'
-streamed  'eaming in the fading light. Moss-covered boulders dotted the uneven ground, remnants of a bygone era'
-streamed  'g in the fading light. Moss-covered boulders dotted the uneven ground, remnants of a bygone era when'
-streamed  ' the fading light. Moss-covered boulders dotted the uneven ground, remnants of a bygone era when the'
-streamed  'ading light. Moss-covered boulders dotted the uneven ground, remnants of a bygone era when the earth'
-streamed  "ing light. Moss-covered boulders dotted the uneven ground, remnants of a bygone era when the earth's"
-streamed  "light. Moss-covered boulders dotted the uneven ground, remnants of a bygone era when the earth's rum"
-streamed  ". Moss-covered boulders dotted the uneven ground, remnants of a bygone era when the earth's rumbling"
-streamed  "oss-covered boulders dotted the uneven ground, remnants of a bygone era when the earth's rumbling ha"
-streamed  "ered boulders dotted the uneven ground, remnants of a bygone era when the earth's rumbling had carve"
-streamed  "oulders dotted the uneven ground, remnants of a bygone era when the earth's rumbling had carved this"
-streamed  "s dotted the uneven ground, remnants of a bygone era when the earth's rumbling had carved this place"
-streamed  "ted the uneven ground, remnants of a bygone era when the earth's rumbling had carved this place from"
-streamed  "the uneven ground, remnants of a bygone era when the earth's rumbling had carved this place from the"
-streamed  "neven ground, remnants of a bygone era when the earth's rumbling had carved this place from the soli"
-streamed  "round, remnants of a bygone era when the earth's rumbling had carved this place from the solid stone"
-streamed  "ound, remnants of a bygone era when the earth's rumbling had carved this place from the solid stone."
-streamed  "mnants of a bygone era when the earth's rumbling had carved this place from the solid stone.\n\nAs the"
-streamed  "ts of a bygone era when the earth's rumbling had carved this place from the solid stone.\n\nAs the sun"
-streamed  "of a bygone era when the earth's rumbling had carved this place from the solid stone.\n\nAs the sun sl"
-streamed  " bygone era when the earth's rumbling had carved this place from the solid stone.\n\nAs the sun slippe"
-streamed  " era when the earth's rumbling had carved this place from the solid stone.\n\nAs the sun slipped below"
-streamed  " when the earth's rumbling had carved this place from the solid stone.\n\nAs the sun slipped below the"
-streamed  "e earth's rumbling had carved this place from the solid stone.\n\nAs the sun slipped below the horizon"
-streamed  " earth's rumbling had carved this place from the solid stone.\n\nAs the sun slipped below the horizon,"
-streamed  "arth's rumbling had carved this place from the solid stone.\n\nAs the sun slipped below the horizon, a"
-streamed  'rumbling had carved this place from the solid stone.\n\nAs the sun slipped below the horizon, a sudden'
-streamed  'ng had carved this place from the solid stone.\n\nAs the sun slipped below the horizon, a sudden crack'
-streamed  'had carved this place from the solid stone.\n\nAs the sun slipped below the horizon, a sudden crack of'
-streamed  ' this place from the solid stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning'
-streamed  's place from the solid stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zig'
-streamed  ' place from the solid stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigz'
-streamed  'place from the solid stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigza'
-streamed  'ce from the solid stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigzagge'
-streamed  'the solid stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigzagged across'
-streamed  'solid stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigzagged across the'
-streamed  ' stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigzagged across the dark'
-streamed  ' stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigzagged across the dark'
-streamed  ' stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigzagged across the dark'
-streamed  ' stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigzagged across the dark'
+streamed  'Here is a short story about lightning in a rock:\n\nAm'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia st'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia strol'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia strolle'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia strolled along'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia strolled along the'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia strolled along the rocky'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia strolled along the rocky beach'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia strolled along the rocky beach,'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia strolled along the rocky beach, her'
+streamed  'Here is a short story about lightning in a rock:\n\nAmelia strolled along the rocky beach, her eyes'
+streamed  's a short story about lightning in a rock:\n\nAmelia strolled along the rocky beach, her eyes scanning'
+streamed  'short story about lightning in a rock:\n\nAmelia strolled along the rocky beach, her eyes scanning the'
+streamed  'story about lightning in a rock:\n\nAmelia strolled along the rocky beach, her eyes scanning the groun'
+streamed  ' about lightning in a rock:\n\nAmelia strolled along the rocky beach, her eyes scanning the ground for'
+streamed  'ut lightning in a rock:\n\nAmelia strolled along the rocky beach, her eyes scanning the ground for any'
+streamed  ' in a rock:\n\nAmelia strolled along the rocky beach, her eyes scanning the ground for any interesting'
+streamed  'rock:\n\nAmelia strolled along the rocky beach, her eyes scanning the ground for any interesting finds'
+streamed  'ock:\n\nAmelia strolled along the rocky beach, her eyes scanning the ground for any interesting finds.'
+streamed  '\n\nAmelia strolled along the rocky beach, her eyes scanning the ground for any interesting finds. The'
+streamed  'elia strolled along the rocky beach, her eyes scanning the ground for any interesting finds. The sun'
+streamed  'a strolled along the rocky beach, her eyes scanning the ground for any interesting finds. The sun ha'
+streamed  'lled along the rocky beach, her eyes scanning the ground for any interesting finds. The sun had just'
+streamed  'long the rocky beach, her eyes scanning the ground for any interesting finds. The sun had just begun'
+streamed  'g the rocky beach, her eyes scanning the ground for any interesting finds. The sun had just begun to'
+streamed  'e rocky beach, her eyes scanning the ground for any interesting finds. The sun had just begun to set'
+streamed  ' rocky beach, her eyes scanning the ground for any interesting finds. The sun had just begun to set,'
+streamed  'each, her eyes scanning the ground for any interesting finds. The sun had just begun to set, casting'
+streamed  'ch, her eyes scanning the ground for any interesting finds. The sun had just begun to set, casting a'
+streamed  'er eyes scanning the ground for any interesting finds. The sun had just begun to set, casting a warm'
+streamed  ' eyes scanning the ground for any interesting finds. The sun had just begun to set, casting a warm g'
+streamed  'es scanning the ground for any interesting finds. The sun had just begun to set, casting a warm glow'
+streamed  'anning the ground for any interesting finds. The sun had just begun to set, casting a warm glow over'
+streamed  'ng the ground for any interesting finds. The sun had just begun to set, casting a warm glow over the'
+streamed  'und for any interesting finds. The sun had just begun to set, casting a warm glow over the landscape'
+streamed  'nd for any interesting finds. The sun had just begun to set, casting a warm glow over the landscape.'
+streamed  'for any interesting finds. The sun had just begun to set, casting a warm glow over the landscape. As'
+streamed  'any interesting finds. The sun had just begun to set, casting a warm glow over the landscape. As she'
+streamed  'eresting finds. The sun had just begun to set, casting a warm glow over the landscape. As she steppe'
+streamed  'ng finds. The sun had just begun to set, casting a warm glow over the landscape. As she stepped over'
+streamed  'inds. The sun had just begun to set, casting a warm glow over the landscape. As she stepped over the'
+streamed  's. The sun had just begun to set, casting a warm glow over the landscape. As she stepped over the un'
+streamed  'he sun had just begun to set, casting a warm glow over the landscape. As she stepped over the uneven'
+streamed  'ad just begun to set, casting a warm glow over the landscape. As she stepped over the uneven terrain'
+streamed  'd just begun to set, casting a warm glow over the landscape. As she stepped over the uneven terrain,'
+streamed  'un to set, casting a warm glow over the landscape. As she stepped over the uneven terrain, something'
+streamed  'et, casting a warm glow over the landscape. As she stepped over the uneven terrain, something caught'
+streamed  'casting a warm glow over the landscape. As she stepped over the uneven terrain, something caught her'
+streamed  'ing a warm glow over the landscape. As she stepped over the uneven terrain, something caught her eye'
+streamed  'g a warm glow over the landscape. As she stepped over the uneven terrain, something caught her eye -'
+streamed  'a warm glow over the landscape. As she stepped over the uneven terrain, something caught her eye - a'
+streamed  'glow over the landscape. As she stepped over the uneven terrain, something caught her eye - a smooth'
+streamed  'low over the landscape. As she stepped over the uneven terrain, something caught her eye - a smooth,'
+streamed  'ver the landscape. As she stepped over the uneven terrain, something caught her eye - a smooth, gray'
+streamed  'e landscape. As she stepped over the uneven terrain, something caught her eye - a smooth, gray stone'
+streamed  'dscape. As she stepped over the uneven terrain, something caught her eye - a smooth, gray stone that'
+streamed  '. As she stepped over the uneven terrain, something caught her eye - a smooth, gray stone that seeme'
+streamed  ' she stepped over the uneven terrain, something caught her eye - a smooth, gray stone that seemed to'
+streamed  'e stepped over the uneven terrain, something caught her eye - a smooth, gray stone that seemed to gl'
+streamed  'stepped over the uneven terrain, something caught her eye - a smooth, gray stone that seemed to glim'
+streamed  'pped over the uneven terrain, something caught her eye - a smooth, gray stone that seemed to glimmer'
+streamed  'd over the uneven terrain, something caught her eye - a smooth, gray stone that seemed to glimmer in'
+streamed  'er the uneven terrain, something caught her eye - a smooth, gray stone that seemed to glimmer in the'
+streamed  ' the uneven terrain, something caught her eye - a smooth, gray stone that seemed to glimmer in the f'
+streamed  'uneven terrain, something caught her eye - a smooth, gray stone that seemed to glimmer in the fading'
+streamed  ' terrain, something caught her eye - a smooth, gray stone that seemed to glimmer in the fading light'
+streamed  'terrain, something caught her eye - a smooth, gray stone that seemed to glimmer in the fading light.'
+streamed  'errain, something caught her eye - a smooth, gray stone that seemed to glimmer in the fading light. '
+streamed  'omething caught her eye - a smooth, gray stone that seemed to glimmer in the fading light. \n\nCurious'
+streamed  'mething caught her eye - a smooth, gray stone that seemed to glimmer in the fading light. \n\nCurious,'
+streamed  'hing caught her eye - a smooth, gray stone that seemed to glimmer in the fading light. \n\nCurious, Am'
+streamed  ' caught her eye - a smooth, gray stone that seemed to glimmer in the fading light. \n\nCurious, Amelia'
+streamed  'ht her eye - a smooth, gray stone that seemed to glimmer in the fading light. \n\nCurious, Amelia bent'
+streamed  'r eye - a smooth, gray stone that seemed to glimmer in the fading light. \n\nCurious, Amelia bent down'
+streamed  'ye - a smooth, gray stone that seemed to glimmer in the fading light. \n\nCurious, Amelia bent down an'
+streamed  'smooth, gray stone that seemed to glimmer in the fading light. \n\nCurious, Amelia bent down and picke'
+streamed  'th, gray stone that seemed to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it'
+streamed  ' gray stone that seemed to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up'
+streamed  'gray stone that seemed to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up,'
+streamed  'ne that seemed to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up, turning'
+streamed  'that seemed to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up, turning it'
+streamed  'seemed to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up, turning it over'
+streamed  'med to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up, turning it over in'
+streamed  'med to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up, turning it over in'
+streamed  'med to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up, turning it over in'
+streamed  'med to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up, turning it over in'
 streamed final Here is a short story about lightning in a rock:
 
-The Captive Spark
+Amelia strolled along the rocky beach, her eyes scanning the ground for any interesting finds. The sun had just begun to set, casting a warm glow over the landscape. As she stepped over the uneven terrain, something caught her eye - a smooth, gray stone that seemed to glimmer in the fading light. 
 
-The old quarry lay silent and still, its crumbling rock walls gleaming in the fading light. Moss-covered boulders dotted the uneven ground, remnants of a bygone era when the earth's rumbling had carved this place from the solid stone.
-
-As the sun slipped below the horizon, a sudden crack of lightning zigzagged across the dark
-
Captured stderr call
[2024-10-31T01:10:21Z WARN  aws_runtime::env_config::normalize] section [Connection 1] ignored; config must be in the AWS config file rather than the credentials file
-[2024-10-31T01:10:21Z INFO  aws_config::meta::region] load_region; provider=EnvironmentVariableRegionProvider { env: Env(Real) }
-[2024-10-31T01:10:23Z INFO  baml_events] Function TestAws:
-    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 1973ms. StopReason: unknown
+Curious, Amelia bent down and picked it up, turning it over in
+
Captured stderr call
[2024-11-04T16:56:08Z WARN  aws_runtime::env_config::normalize] section [Connection 1] ignored; config must be in the AWS config file rather than the credentials file
+[2024-11-04T16:56:08Z INFO  aws_config::meta::region] load_region; provider=EnvironmentVariableRegionProvider { env: Env(Real) }
+[2024-11-04T16:56:10Z INFO  baml_events] Function TestAws:
+    Client: AwsBedrock (anthropic.claude-3-haiku-20240307-v1:0) - 2186ms. StopReason: unknown. Tokens(in/out): 17/100
     ---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 Captive Spark
-    
-    The old quarry lay silent and still, its crumbling rock walls gleaming in the fading light. Moss-covered boulders dotted the uneven ground, remnants of a bygone era when the earth's rumbling had carved this place from the solid stone.
+    Amelia strolled along the rocky beach, her eyes scanning the ground for any interesting finds. The sun had just begun to set, casting a warm glow over the landscape. As she stepped over the uneven terrain, something caught her eye - a smooth, gray stone that seemed to glimmer in the fading light. 
     
-    As the sun slipped below the horizon, a sudden crack of lightning zigzagged across the dark
+    Curious, Amelia bent down and picked it up, turning it over in
     ---Parsed Response (string)---
-    "Here is a short story about lightning in a rock:\n\nThe Captive Spark\n\nThe old quarry lay silent and still, its crumbling rock walls gleaming in the fading light. Moss-covered boulders dotted the uneven ground, remnants of a bygone era when the earth's rumbling had carved this place from the solid stone.\n\nAs the sun slipped below the horizon, a sudden crack of lightning zigzagged across the dark"
-

Teardown

PASSED test_serialization_exception 0:00:00.590034

Setup

Call

Captured stdout call
Exception message from test:  <ExceptionInfo BamlValidationError(message=Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing require...required field: nonce2, raw_output=Hello there! How can I assist you today?, prompt=[chat] system: Say "hello there".
+    "Here is a short story about lightning in a rock:\n\nAmelia strolled along the rocky beach, her eyes scanning the ground for any interesting finds. The sun had just begun to set, casting a warm glow over the landscape. As she stepped over the uneven terrain, something caught her eye - a smooth, gray stone that seemed to glimmer in the fading light. \n\nCurious, Amelia bent down and picked it up, turning it over in"
+

Teardown

PASSED test_serialization_exception 0:00:00.623425

Setup

Call

Captured stdout call
Exception message from test:  <ExceptionInfo BamlValidationError(message=Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing require...required field: nonce2, raw_output=Hello there! How can I assist you today?, prompt=[chat] system: Say "hello there".
 ) tblen=2>
-
Captured stderr call
[2024-10-31T01:10:23Z WARN  baml_events] Function DummyOutputFunction:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 579ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:56:10Z WARN  baml_events] Function DummyOutputFunction:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 615ms. StopReason: stop. Tokens(in/out): 12/10
     ---PROMPT---
     [chat] system: Say "hello there".
     
@@ -2104,7 +2062,7 @@
     Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
       - <root>: Missing required field: nonce
       - <root>: Missing required field: nonce2
-

Teardown

PASSED test_stream_serialization_exception 0:00:00.773137

Setup

Call

Captured stdout call
streamed  nonce=None nonce2=None
+

Teardown

PASSED test_stream_serialization_exception 0:00:00.528694

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
@@ -2119,8 +2077,8 @@
 streamed  nonce=None nonce2=None
 Exception message:  <ExceptionInfo BamlValidationError(message=Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing require...required field: nonce2, raw_output=Hello there! How can I assist you today?, prompt=[chat] system: Say "hello there".
 ) tblen=3>
-
Captured stderr call
[2024-10-31T01:10:24Z WARN  baml_events] Function DummyOutputFunction:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 768ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:56:11Z WARN  baml_events] Function DummyOutputFunction:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 521ms. StopReason: stop. Tokens(in/out): 12/10
     ---PROMPT---
     [chat] system: Say "hello there".
     
@@ -2130,7 +2088,7 @@
     Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
       - <root>: Missing required field: nonce
       - <root>: Missing required field: nonce2
-

Teardown

PASSED test_stream2_serialization_exception 0:00:00.622227

Setup

Call

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

Teardown

PASSED test_stream2_serialization_exception 0:00:02.225284

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
@@ -2145,8 +2103,8 @@
 streamed  nonce=None nonce2=None nonce3=None
 Exception message:  <ExceptionInfo BamlValidationError(message=Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing require...required field: nonce3, raw_output=Hello there! How can I assist you today?, prompt=[chat] system: Say "hello there".
 ) tblen=3>
-
Captured stderr call
[2024-10-31T01:10:25Z WARN  baml_events] Function DummyOutputFunction:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 615ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:56:13Z WARN  baml_events] Function DummyOutputFunction:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 2217ms. StopReason: stop. Tokens(in/out): 12/10
     ---PROMPT---
     [chat] system: Say "hello there".
     
@@ -2157,8 +2115,8 @@
       - <root>: Missing required field: nonce
       - <root>: Missing required field: nonce2
       - <root>: Missing required field: nonce3
-

Teardown

PASSED test_descriptions 0:00:02.005727

Setup

Call

Captured stderr call
[2024-10-31T01:10:27Z INFO  baml_events] Function SchemaDescriptions:
-    Client: GPT4o (gpt-4o-2024-08-06) - 1988ms. StopReason: stop
+

Teardown

PASSED test_descriptions 0:00:02.569018

Setup

Call

Captured stderr call
[2024-11-04T16:56:16Z INFO  baml_events] Function SchemaDescriptions:
+    Client: GPT4o (gpt-4o-2024-08-06) - 2549ms. StopReason: stop. Tokens(in/out): 340/108
     ---PROMPT---
     [chat] system: Return a schema with this format:
     
@@ -2235,7 +2193,9 @@
         "hi"
       ],
       "blah": "blah",
-      "nested_attrs": "nested",
+      "nested_attrs": [
+        "nested"
+      ],
       "parens": "parens1",
       "other": "other"
     }
@@ -2261,15 +2221,10 @@
       "parens": "parens1",
       "other_group": "other"
     }
-

Teardown

FAILED test_caching 0:00:02.087360

AssertionError: Expected second call to be faster than first by a large margin.
-assert 1.047734022140503 < 1.0376319885253906

Setup

Call

>   ???
-E   AssertionError: Expected second call to be faster than first by a large margin.
-E   assert 1.047734022140503 < 1.0376319885253906
-
-tests/test_functions.py:1228: AssertionError
Captured stdout call
Duration no caching:  1.0376319885253906
-Duration with caching:  1.047734022140503
-
Captured stderr call
[2024-10-31T01:10:28Z INFO  baml_events] Function TestCaching:
-    Client: ClaudeWithCaching (claude-3-haiku-20240307) - 1031ms. StopReason: "end_turn"
+

Teardown

PASSED test_caching 0:00:01.888529

Setup

Call

Captured stdout call
Duration no caching:  0.9628689289093018
+Duration with caching:  0.9238379001617432
+
Captured stderr call
[2024-11-04T16:56:17Z INFO  baml_events] Function TestCaching:
+    Client: ClaudeWithCaching (claude-3-haiku-20240307) - 955ms. StopReason: "end_turn". Tokens(in/out): 968/31
     ---PROMPT---
     [chat] system: {"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.
@@ -2285,17 +2240,17 @@
         The story further examines the technological advancements that have made dream manipulation possible, questioning the role of innovation in society and the potential for both progress and peril. It considers the societal divide between those who can afford to buy enhanced dream experiences and those who cannot, highlighting issues of inequality and access. As Alex becomes more entangled in the web of their own making, they must confront the possibility that their actions could lead to unintended consequences, not just for themselves but for the fabric of society as a whole.
     
         In the end, Alex's journey is a cautionary tale about the power of dreams and the responsibilities that come with wielding such influence. It serves as a reminder of the importance of ethical considerations in the face of technological advancement and the need to balance innovation with humanity. The story leaves readers pondering the true cost of a world where dreams are no longer sacred, and the potential for both wonder and danger in the uncharted territories of the mind.
-     aaaaaaaaaaaaaaaaaaaaaaaaaa
+     aaaaaaaaaaaaaaaaaaaaaaa
     user: be funny
     
     ---LLM REPLY---
-    Here's a more lighthearted take on the dream-manipulation premise in 5 words:
+    Here's an attempt at a funny 5-word description:
     
-    Dream hacking, profits soar, chaos ensues.
+    Teenager controls dreams, chaos ensues. Whoops!
     ---Parsed Response (string)---
-    "Here's a more lighthearted take on the dream-manipulation premise in 5 words:\n\nDream hacking, profits soar, chaos ensues."
-[2024-10-31T01:10:29Z INFO  baml_events] Function TestCaching:
-    Client: ClaudeWithCaching (claude-3-haiku-20240307) - 1039ms. StopReason: "end_turn"
+    "Here's an attempt at a funny 5-word description:\n\nTeenager controls dreams, chaos ensues. Whoops!"
+[2024-11-04T16:56:18Z INFO  baml_events] Function TestCaching:
+    Client: ClaudeWithCaching (claude-3-haiku-20240307) - 916ms. StopReason: "end_turn". Tokens(in/out): 968/49
     ---PROMPT---
     [chat] system: {"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.
@@ -2311,17 +2266,19 @@
         The story further examines the technological advancements that have made dream manipulation possible, questioning the role of innovation in society and the potential for both progress and peril. It considers the societal divide between those who can afford to buy enhanced dream experiences and those who cannot, highlighting issues of inequality and access. As Alex becomes more entangled in the web of their own making, they must confront the possibility that their actions could lead to unintended consequences, not just for themselves but for the fabric of society as a whole.
     
         In the end, Alex's journey is a cautionary tale about the power of dreams and the responsibilities that come with wielding such influence. It serves as a reminder of the importance of ethical considerations in the face of technological advancement and the need to balance innovation with humanity. The story leaves readers pondering the true cost of a world where dreams are no longer sacred, and the potential for both wonder and danger in the uncharted territories of the mind.
-     aaaaaaaaaaaaaaaaaaaaaaaaaa
+     aaaaaaaaaaaaaaaaaaaaaaa
     user: be real
     
     ---LLM REPLY---
-    Okay, let me try to summarize the key elements of the story in a more concise, realistic way:
+    Okay, let me try to summarize this in a more straightforward way:
     
-    A teenager with the ability to manipulate dreams faces ethical dilemmas about using their power.
+    A teenager with the ability to manipulate dreams becomes entangled in a web of ethical dilemmas.
     ---Parsed Response (string)---
-    "Okay, let me try to summarize the key elements of the story in a more concise, realistic way:\n\nA teenager with the ability to manipulate dreams faces ethical dilemmas about using their power."
-

Teardown

PASSED test_arg_exceptions 0:00:01.017656

Setup

Call

Captured stderr call
[2024-10-31T01:10:29Z WARN  baml_events] Function MyFunc:
-    Client: MyClient (<unknown>) - 175ms
+    "Okay, let me try to summarize this in a more straightforward way:\n\nA teenager with the ability to manipulate dreams becomes entangled in a web of ethical dilemmas."
+

Teardown

PASSED test_arg_exceptions 0:00:00.967736

Setup

Call

Captured stderr call
[2024-11-04T16:56:18Z ERROR baml_runtime::tracing]   Error: input: Expected type String, got `Number(111)`
+    
+[2024-11-04T16:56:18Z WARN  baml_events] Function MyFunc:
+    Client: MyClient (<unknown>) - 253ms
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -2343,8 +2300,8 @@
         }
     }
     
-[2024-10-31T01:10:29Z WARN  baml_events] Function MyFunc:
-    Client: MyClient (<unknown>) - 165ms
+[2024-11-04T16:56:18Z WARN  baml_events] Function MyFunc:
+    Client: MyClient (<unknown>) - 194ms
     ---PROMPT---
     [chat] system: Given a string, extract info using the schema:
     
@@ -2366,23 +2323,25 @@
         }
     }
     
-[2024-10-31T01:10:30Z WARN  baml_events] Function DummyOutputFunction:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 664ms. StopReason: stop
+[2024-11-04T16:56:19Z WARN  baml_events] Function DummyOutputFunction:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 504ms. StopReason: stop. Tokens(in/out): 12/10
     ---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: <root>: Failed while parsing required fields: missing=2, unparsed=0
       - <root>: Missing required field: nonce
       - <root>: Missing required field: nonce2
-

Teardown

PASSED test_map_as_param 0:00:00.002494

Setup

Call

Teardown

PASSED test_baml_validation_error_format 0:00:00.673372

Setup

Call

Captured stdout call
Error:  BamlValidationError(message=Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
+

Teardown

PASSED test_map_as_param 0:00:00.002402

Setup

Call

Captured stderr call
[2024-11-04T16:56:19Z ERROR baml_runtime::tracing]   Error: myMap: a: Expected map, got `String("b")`
+    
+

Teardown

PASSED test_baml_validation_error_format 0:00:00.722720

Setup

Call

Captured stdout call
Error:  BamlValidationError(message=Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
   - <root>: Missing required field: nonce
   - <root>: Missing required field: nonce2, raw_output=Hello there! How can I assist you today?, prompt=[chat] system: Say "hello there".
 )
-
Captured stderr call
[2024-10-31T01:10:31Z WARN  baml_events] Function DummyOutputFunction:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 662ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:56:19Z WARN  baml_events] Function DummyOutputFunction:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 714ms. StopReason: stop. Tokens(in/out): 12/10
     ---PROMPT---
     [chat] system: Say "hello there".
     
@@ -2392,8 +2351,8 @@
     Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
       - <root>: Missing required field: nonce
       - <root>: Missing required field: nonce2
-

Teardown

PASSED test_no_stream_big_integer 0:00:00.469255

Setup

Call

Captured stderr call
[2024-10-31T01:10:31Z INFO  baml_events] Function StreamOneBigNumber:
-    Client: GPT4 (gpt-4o-2024-08-06) - 460ms. StopReason: stop
+

Teardown

PASSED test_no_stream_big_integer 0:00:00.395520

Setup

Call

Captured stderr call
[2024-11-04T16:56:20Z INFO  baml_events] Function StreamOneBigNumber:
+    Client: GPT4 (gpt-4o-2024-08-06) - 388ms. StopReason: stop. Tokens(in/out): 47/4
     ---PROMPT---
     [chat] system: Respond with only an integer, no affirmations or prefixes or anything.
     The response should be parsable as a JSON number.
@@ -2403,11 +2362,11 @@
     Answer as a: int
     
     ---LLM REPLY---
-    102982746598
+    102345678901
     ---Parsed Response (int)---
-    102982746598
-

Teardown

PASSED test_no_stream_object_with_numbers 0:00:00.743635

Setup

Call

Captured stderr call
[2024-10-31T01:10:32Z INFO  baml_events] Function StreamBigNumbers:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 736ms. StopReason: stop
+    102345678901
+

Teardown

PASSED test_no_stream_object_with_numbers 0:00:00.771659

Setup

Call

Captured stderr call
[2024-11-04T16:56:20Z INFO  baml_events] Function StreamBigNumbers:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 765ms. StopReason: stop. Tokens(in/out): 70/23
     ---PROMPT---
     [chat] system: Please make sure every integer in the output has 12 digits.
     For floats, provide a mix - from 0-10 places before the decimal point,
@@ -2422,15 +2381,15 @@
     ---LLM REPLY---
     {
       "a": 123456789012,
-      "b": 987654.321
+      "b": 9876543.210
     }
     ---Parsed Response (class BigNumbers)---
     {
       "a": 123456789012,
-      "b": 987654.321
+      "b": 9876543.21
     }
-

Teardown

PASSED test_no_stream_compound_object 0:00:03.949813

Setup

Call

Captured stderr call
[2024-10-31T01:10:36Z INFO  baml_events] Function StreamingCompoundNumbers:
-    Client: GPT4 (gpt-4o-2024-08-06) - 3941ms. StopReason: stop
+

Teardown

PASSED test_no_stream_compound_object 0:00:04.141204

Setup

Call

Captured stderr call
[2024-11-04T16:56:25Z INFO  baml_events] Function StreamingCompoundNumbers:
+    Client: GPT4 (gpt-4o-2024-08-06) - 4132ms. StopReason: stop. Tokens(in/out): 153/146
     ---PROMPT---
     [chat] system:     Respond in pure json. Don't use any English descriptions like "Sure, I'll do that",
         nor put the result into a fenced code block.
@@ -2463,54 +2422,54 @@
     {
       "big": {
         "a": 123456789012,
-        "b": 9876543210.123456789
+        "b": 987654.321098765
       },
       "big_nums": [
         {
           "a": 234567890123,
-          "b": 123456.7890123
+          "b": 678123.456
         },
         {
           "a": 345678901234,
-          "b": 9876.54321
+          "b": 2345678901.123456
         },
         {
           "a": 456789012345,
-          "b": 567890123.456789
+          "b": 123456.7890123456
         }
       ],
       "another": {
         "a": 567890123456,
-        "b": 12345678.901234567
+        "b": 912345678.12345
       }
     }
     ---Parsed Response (class CompoundBigNumbers)---
     {
       "big": {
         "a": 123456789012,
-        "b": 9876543210.123457
+        "b": 987654.321098765
       },
       "big_nums": [
         {
           "a": 234567890123,
-          "b": 123456.7890123
+          "b": 678123.456
         },
         {
           "a": 345678901234,
-          "b": 9876.54321
+          "b": 2345678901.123456
         },
         {
           "a": 456789012345,
-          "b": 567890123.456789
+          "b": 123456.7890123456
         }
       ],
       "another": {
         "a": 567890123456,
-        "b": 12345678.901234567
+        "b": 912345678.12345
       }
     }
-

Teardown

PASSED test_no_stream_compound_object_with_yapping 0:00:03.265870

Setup

Call

Captured stderr call
[2024-10-31T01:10:39Z INFO  baml_events] Function StreamingCompoundNumbers:
-    Client: GPT4 (gpt-4o-2024-08-06) - 3250ms. StopReason: stop
+

Teardown

PASSED test_no_stream_compound_object_with_yapping 0:00:03.088378

Setup

Call

Captured stderr call
[2024-11-04T16:56:28Z INFO  baml_events] Function StreamingCompoundNumbers:
+    Client: GPT4 (gpt-4o-2024-08-06) - 3079ms. StopReason: stop. Tokens(in/out): 134/171
     ---PROMPT---
     [chat] system:     Please give me a friendly response before outputting json. And put the JSON
         into a fenced code block.
@@ -2538,55 +2497,61 @@
     }
     
     ---LLM REPLY---
-    Hey there! I'd be happy to help you with the request. Here's your JSON data following the specified structure and format:
+    Hello! I'm here to help. Here's the JSON dataset you requested, with a friendly touch.
     
     ```json
     {
       "big": {
         "a": 123456789012,
-        "b": 123456.78901
+        "b": 9876543.12345678
       },
       "big_nums": [
         {
-          "a": 987654321098,
-          "b": 9876543210.1234
+          "a": 111111111111,
+          "b": 12345.6789
         },
         {
-          "a": 123000000456,
-          "b": 1234567.890123456
+          "a": 222222222222,
+          "b": 9876543210.123456
+        },
+        {
+          "a": 333333333333,
+          "b": 1111111111111.23456789
         }
       ],
       "another": {
-        "a": 654321098765,
-        "b": 567890.1234567890
+        "a": 444444444444,
+        "b": 567890.1
       }
     }
-    ``` 
-    
-    If there's anything else you need, feel free to ask!
+    ```
     ---Parsed Response (class CompoundBigNumbers)---
     {
       "big": {
         "a": 123456789012,
-        "b": 123456.78901
+        "b": 9876543.12345678
       },
       "big_nums": [
         {
-          "a": 987654321098,
-          "b": 9876543210.1234
+          "a": 111111111111,
+          "b": 12345.6789
+        },
+        {
+          "a": 222222222222,
+          "b": 9876543210.123455
         },
         {
-          "a": 123000000456,
-          "b": 1234567.890123456
+          "a": 333333333333,
+          "b": 1111111111111.2346
         }
       ],
       "another": {
-        "a": 654321098765,
-        "b": 567890.123456789
+        "a": 444444444444,
+        "b": 567890.1
       }
     }
-

Teardown

PASSED test_differing_unions 0:00:01.243643

Setup

Call

Captured stderr call
[2024-10-31T01:10:40Z INFO  baml_events] Function DifferentiateUnions:
-    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 1234ms. StopReason: stop
+

Teardown

PASSED test_differing_unions 0:00:01.562015

Setup

Call

Captured stderr call
[2024-11-04T16:56:29Z INFO  baml_events] Function DifferentiateUnions:
+    Client: openai/gpt-4o-mini (gpt-4o-mini-2024-07-18) - 1552ms. StopReason: stop. Tokens(in/out): 50/36
     ---PROMPT---
     [chat] system: Create a data model that represents the latter of the two classes.
     
@@ -2599,45 +2564,33 @@
     }
     
     ---LLM REPLY---
-    Here's a JSON representation of a data model that matches the second schema you provided:
+    Here is a JSON data model representing the latter of the two classes:
     
     ```json
     {
       "value": 42,
       "value2": "example string"
     }
-    ``` 
-    
-    This model includes an integer (`value`) and a string (`value2`). Adjust the values as necessary to fit the specific context you're working with.
+    ```
     ---Parsed Response (class OriginalB)---
     {
       "value": 42,
       "value2": "example string"
     }
-

Teardown

PASSED test_return_failing_assert 0:00:00.478799

Setup

Call

Captured stderr call
[2024-10-31T01:10:41Z WARN  baml_events] Function ReturnFailingAssert:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 467ms. StopReason: stop
+

Teardown

PASSED test_return_failing_assert 0:00:00.522013

Setup

Call

Captured stderr call
[2024-11-04T16:56:30Z WARN  baml_events] Function ReturnFailingAssert:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 514ms. StopReason: stop. Tokens(in/out): 20/1
     ---PROMPT---
     [chat] system: Return the next integer after 1.
     
     Answer as a: int
     
     ---LLM REPLY---
-    int: 2
+    2
     ---Parsed Response (Error)---
     Failed to coerce value: <root>: Assertions failed.
-

Teardown

PASSED test_parameter_failing_assert 0:00:00.001465

Setup

Call

Teardown

PASSED test_failing_assert_can_stream 0:00:04.409643

Setup

Call

Captured stdout call
None
-None
-None
-None
-None
-None
-None
-None
-None
-None
-None
-None
-None
+

Teardown

PASSED test_parameter_failing_assert 0:00:00.003441

Setup

Call

Captured stderr call
[2024-11-04T16:56:30Z ERROR baml_runtime::tracing]   Error: inp: Failed assert: small_int
+    
+

Teardown

PASSED test_failing_assert_can_stream 0:00:03.776608

Setup

Call

Captured stdout call
None
 None
 None
 None
@@ -3225,8 +3178,8 @@
 None
 None
 None
-
Captured stderr call
[2024-10-31T01:10:45Z WARN  baml_events] Function StreamFailingAssertion:
-    Client: GPT35 (gpt-3.5-turbo-0125) - 4404ms. StopReason: stop
+
Captured stderr call
[2024-11-04T16:56:34Z WARN  baml_events] Function StreamFailingAssertion:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 3768ms. StopReason: stop. Tokens(in/out): 62/291
     ---PROMPT---
     [chat] system: Tell me two different stories along the theme of Yoshimi battles the pink robots with the same title.
     Please make each about 300 words long.
@@ -3240,8 +3193,8 @@
     ---LLM REPLY---
     {
       "title": "Yoshimi Battles the Pink Robots",
-      "story_a": "Yoshimi woke up one morning to find herself in a world overrun by pink robots. These robots were invading cities, destroying buildings, and causing chaos wherever they went. Determined to protect her loved ones and her home, Yoshimi embarked on a mission to battle the pink robots. Armed with her creativity and resourcefulness, she improvised weapons and traps to outsmart the robots. With each victory, Yoshimi gained confidence and strength, eventually leading a resistance that pushed the robots out of their world. The people hailed Yoshimi as a hero, and she used her experiences to teach others the importance of never giving up in the face of challenges.",
-      "story_b": "Yoshimi was a skilled engineer who spent her days designing robots to assist with tasks and make life easier for people. One day, a group of pink robots she had never seen before suddenly appeared in her workshop. These robots seemed different from any she had encountered before - they were aggressive and destructive. Realizing that her creations had been corrupted by an unknown force, Yoshimi knew she had to stop them before they caused more harm. Refusing to give up on her robots, she worked tirelessly to reprogram them and turn them back to their original purpose. Through her determination and ingenuity, Yoshimi was able to reclaim control of the pink robots and restore peace to her workshop and the surrounding area."
+      "story_a": "Yoshimi was a young warrior tasked with defending her land from the invasion of pink robots. These robots were powered by a mysterious energy that seemed to be draining the life force from everything around them. Despite the odds stacked against her, Yoshimi bravely faced the robots in battle. With her quick reflexes and strategic thinking, she managed to outmaneuver the robots and find their weak spots. Using her sword and shield, Yoshimi fought valiantly to protect her homeland. In the end, she emerged victorious, destroying the pink robots and restoring peace to the land. Her bravery and strength made her a legend among her people, and they hailed her as their savior.",
+      "story_b": "Yoshimi was a scientist working in a high-tech laboratory when the pink robots suddenly appeared. These robots were part of a failed experiment gone wrong, threatening to destroy everything in their path. As the robots wreaked havoc, Yoshimi realized that she was the only one who could stop them. Using her knowledge of technology and robotics, she developed a plan to deactivate the pink robots and save her city. With her quick thinking and ingenuity, Yoshimi managed to hack into the robots' programming and shut them down one by one. Her heroic actions saved the city from destruction and earned her recognition as a brilliant scientist and hero."
     }
     ---Parsed Response (Error)---
     Failed to coerce value: <root>: Failed while parsing required fields: missing=0, unparsed=2
@@ -3249,4 +3202,74 @@
         - <root>: Assertions failed.
       - <root>: Failed to parse field story_b: <root>: Assertions failed.
         - <root>: Assertions failed.
-

Teardown

tests/test_pydantic.py 3 0:00:00.001237

PASSED test_model_validate_success 0:00:00.000628

Setup

Call

Teardown

PASSED test_model_validate_failure 0:00:00.000310

Setup

Call

Teardown

PASSED test_model_dump 0:00:00.000299

Setup

Call

Teardown

\ No newline at end of file +

Teardown

PASSED test_block_constraints 0:00:00.620434

Setup

Call

Captured stderr call
[2024-11-04T16:56:34Z INFO  baml_events] Function MakeBlockConstraint:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 613ms. StopReason: stop. Tokens(in/out): 42/19
+    ---PROMPT---
+    [chat] system: Generate an output in the following schema with a short string and a large int.
+    
+    Answer in JSON using this schema:
+    {
+      foo: int,
+      bar: string,
+    }
+    
+    ---LLM REPLY---
+    {
+      "foo": 1000000,
+      "bar": "Large number"
+    }
+    ---Parsed Response (class BlockConstraint)---
+    {
+      "value": {
+        "foo": 1000000,
+        "bar": "Large number"
+      },
+      "checks": {
+        "cross_field": {
+          "name": "cross_field",
+          "expression": "this.bar|length > this.foo",
+          "status": "failed"
+        }
+      }
+    }
+

Teardown

PASSED test_nested_block_constraints 0:00:00.934504

Setup

Call

Captured stdout call
nbc=Checked[BlockConstraint, Literal['cross_field']](value=BlockConstraint(foo=1, bar='hello'), checks={'cross_field': Check(name='cross_field', expression='this.bar|length > this.foo', status='succeeded')})
+
Captured stderr call
[2024-11-04T16:56:35Z INFO  baml_events] Function MakeNestedBlockConstraint:
+    Client: GPT35 (gpt-3.5-turbo-0125) - 925ms. StopReason: stop. Tokens(in/out): 52/24
+    ---PROMPT---
+    [chat] system: Generate an output where the inner foo is 1 and the inner bar is "hello".
+      Answer in JSON using this schema:
+    {
+      nbc: {
+        foo: int,
+        bar: string,
+      },
+    }
+    
+    ---LLM REPLY---
+    {
+      "nbc": {
+        "foo": 1,
+        "bar": "hello"
+      }
+    }
+    ---Parsed Response (class NestedBlockConstraint)---
+    {
+      "nbc": {
+        "value": {
+          "foo": 1,
+          "bar": "hello"
+        },
+        "checks": {
+          "cross_field": {
+            "name": "cross_field",
+            "expression": "this.bar|length > this.foo",
+            "status": "succeeded"
+          }
+        }
+      }
+    }
+

Teardown

PASSED test_block_constraint_arguments 0:00:00.003363

Setup

Call

Captured stderr call
[2024-11-04T16:56:35Z ERROR baml_runtime::tracing]   Error: inp: Failed assert: hi
+    
+[2024-11-04T16:56:35Z ERROR baml_runtime::tracing]   Error: inp: Failed assert: hi
+    
+

Teardown

tests/test_pydantic.py 3 0:00:00.001939

PASSED test_model_validate_success 0:00:00.000897

Setup

Call

Teardown

PASSED test_model_validate_failure 0:00:00.000591

Setup

Call

Teardown

PASSED test_model_dump 0:00:00.000452

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 a5cb50a7f..f08e4427b 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 venue \"barisa\" | \"ox_burger\"\n}\n\nfunction ExtractReceiptInfo(email: string, reason: \"curiosity\" | \"personal_finance\") -> 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.65.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.65.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.65.0\"\n}\n\n// generator openapi {\n// output_type rest/openapi\n// output_dir \"../openapi\"\n// version \"0.65.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.66.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.66.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.66.0\"\n}\n\n// generator openapi {\n// output_type rest/openapi\n// output_dir \"../openapi\"\n// version \"0.66.0\"\n// on_generate \"rm .gitignore\"\n// }\n", "test-files/aliases/aliased-inputs.baml" => "\nclass InputClass {\n key string @alias(\"color\")\n key2 string\n}\n\n\nclass InputClassNested {\n key string\n nested InputClass @alias(\"interesting-key\")\n}\n \n\nfunction AliasedInputClass(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {{input}}\n\n This is a test. What's the name of the first json key above? Remember, tell me the key, not value.\n \"#\n}\n \nfunction AliasedInputClass2(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {# making sure we can still access the original key #}\n {%if input.key == \"tiger\"%}\n Repeat this value back to me, and nothing else: {{input.key}}\n {%endif%}\n \"#\n}\n \n function AliasedInputClassNested(input: InputClassNested) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n\n {{input}}\n\n This is a test. What's the name of the second json key above? Remember, tell me the key, not value.\n \"#\n }\n\n\nenum AliasedEnum {\n KEY_ONE @alias(\"tiger\")\n KEY_TWO\n}\n\nfunction AliasedInputEnum(input: AliasedEnum) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\")}}\n\n\n Write out this word only in your response, in lowercase:\n ---\n {{input}}\n ---\n Answer:\n \"#\n}\n\n\nfunction AliasedInputList(input: AliasedEnum[]) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n Given this array:\n ---\n {{input}}\n ---\n\n Return the first element in the array:\n \"#\n}\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}", diff --git a/integ-tests/typescript/baml_client/inlinedbaml.ts b/integ-tests/typescript/baml_client/inlinedbaml.ts index 648f85bf0..25fd0f636 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 venue \"barisa\" | \"ox_burger\"\n}\n\nfunction ExtractReceiptInfo(email: string, reason: \"curiosity\" | \"personal_finance\") -> 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.65.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.65.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.65.0\"\n}\n\n// generator openapi {\n// output_type rest/openapi\n// output_dir \"../openapi\"\n// version \"0.65.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.66.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.66.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.66.0\"\n}\n\n// generator openapi {\n// output_type rest/openapi\n// output_dir \"../openapi\"\n// version \"0.66.0\"\n// on_generate \"rm .gitignore\"\n// }\n", "test-files/aliases/aliased-inputs.baml": "\nclass InputClass {\n key string @alias(\"color\")\n key2 string\n}\n\n\nclass InputClassNested {\n key string\n nested InputClass @alias(\"interesting-key\")\n}\n \n\nfunction AliasedInputClass(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {{input}}\n\n This is a test. What's the name of the first json key above? Remember, tell me the key, not value.\n \"#\n}\n \nfunction AliasedInputClass2(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {# making sure we can still access the original key #}\n {%if input.key == \"tiger\"%}\n Repeat this value back to me, and nothing else: {{input.key}}\n {%endif%}\n \"#\n}\n \n function AliasedInputClassNested(input: InputClassNested) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n\n {{input}}\n\n This is a test. What's the name of the second json key above? Remember, tell me the key, not value.\n \"#\n }\n\n\nenum AliasedEnum {\n KEY_ONE @alias(\"tiger\")\n KEY_TWO\n}\n\nfunction AliasedInputEnum(input: AliasedEnum) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\")}}\n\n\n Write out this word only in your response, in lowercase:\n ---\n {{input}}\n ---\n Answer:\n \"#\n}\n\n\nfunction AliasedInputList(input: AliasedEnum[]) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n Given this array:\n ---\n {{input}}\n ---\n\n Return the first element in the array:\n \"#\n}\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}", 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 ff4f92789..21632f5cd 100644 --- a/integ-tests/typescript/test-report.html +++ b/integ-tests/typescript/test-report.html @@ -257,6 +257,500 @@ font-size: 1rem; padding: 0 0.5rem; } -

Test Report

Started: 2024-11-03 15:38:34
Suites (1)
0 passed
1 failed
0 pending
Tests (61)
60 passed
1 failed
0 pending
Integ tests > should work for all inputs
single bool
passed
0.987s
Integ tests > should work for all inputs
single string list
passed
0.644s
Integ tests > should work for all inputs
return literal union
passed
0.482s
Integ tests > should work for all inputs
single class
passed
0.593s
Integ tests > should work for all inputs
multiple classes
passed
0.69s
Integ tests > should work for all inputs
single enum list
passed
0.575s
Integ tests > should work for all inputs
single float
passed
0.753s
Integ tests > should work for all inputs
single int
passed
0.456s
Integ tests > should work for all inputs
single literal int
passed
0.609s
Integ tests > should work for all inputs
single literal bool
passed
0.656s
Integ tests > should work for all inputs
single literal string
passed
0.564s
Integ tests > should work for all inputs
single class with literal prop
passed
0.748s
Integ tests > should work for all inputs
single class with literal union prop
passed
0.657s
Integ tests > should work for all inputs
single optional string
passed
0.462s
Integ tests > should work for all inputs
single map string to string
passed
0.624s
Integ tests > should work for all inputs
single map string to class
passed
0.782s
Integ tests > should work for all inputs
single map string to map
passed
0.763s
Integ tests
should work for all outputs
passed
6.653s
Integ tests
works with retries1
passed
1.898s
Integ tests
works with retries2
passed
2.694s
Integ tests
works with fallbacks
passed
3.392s
Integ tests
should work with image from url
passed
2.014s
Integ tests
should work with image from base 64
passed
0.978s
Integ tests
should work with audio base 64
passed
1.381s
Integ tests
should work with audio from url
passed
1.541s
Integ tests
should support streaming in OpenAI
passed
2.747s
Integ tests
should support streaming in Gemini
passed
7.485s
Integ tests
should support AWS
passed
1.931s
Integ tests
should support streaming in AWS
passed
1.933s
Integ tests
should support OpenAI shorthand
passed
6.994s
Integ tests
should support OpenAI shorthand streaming
passed
7.415s
Integ tests
should support anthropic shorthand
passed
3.821s
Integ tests
should support anthropic shorthand streaming
passed
2.984s
Integ tests
should support streaming without iterating
passed
2.501s
Integ tests
should support streaming in Claude
passed
1.12s
Integ tests
should support vertex
passed
7.516s
Integ tests
supports tracing sync
passed
0.011s
Integ tests
supports tracing async
passed
5.015s
Integ tests
should work with dynamic types single
passed
0.896s
Integ tests
should work with dynamic types enum
passed
1.14s
Integ tests
should work with dynamic literals
passed
0.803s
Integ tests
should work with dynamic types class
passed
0.96s
Integ tests
should work with dynamic inputs class
passed
0.654s
Integ tests
should work with dynamic inputs list
passed
0.8s
Integ tests
should work with dynamic output map
passed
0.877s
Integ tests
should work with dynamic output union
passed
2.418s
Integ tests
should work with nested classes
failed
0.106s
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: 1730677207, tv_nsec: 831045000 }, latency: 2.707208ms, message: "reqwest::Error { kind: Request, url: Url { scheme: \"http\", cannot_be_a_base: false, username: \"\", password: None, host: Some(Domain(\"localhost\")), port: Some(11434), path: \"/v1/chat/completions\", query: None, fragment: None }, source: hyper_util::client::legacy::Error(Connect, ConnectError(\"tcp connect error\", Os { code: 61, kind: ConnectionRefused, message: \"Connection refused\" })) }", code: Other(2) }
-    at BamlStream.parsed [as getFinalResponse] (/Users/greghale/code/baml/engine/language_client_typescript/stream.js:58:39)
-    at Object.<anonymous> (/Users/greghale/code/baml/integ-tests/typescript/tests/integ-tests.test.ts:578:19)
Integ tests
should work with dynamic client
passed
0.565s
Integ tests
should work with 'onLogEvent'
passed
2.536s
Integ tests
should work with a sync client
passed
0.733s
Integ tests
should raise an error when appropriate
passed
1.492s
Integ tests
should raise a BAMLValidationError
passed
0.635s
Integ tests
should reset environment variables correctly
passed
1.313s
Integ tests
should use aliases when serializing input objects - classes
passed
1.122s
Integ tests
should use aliases when serializing, but still have original keys in jinja
passed
1.102s
Integ tests
should use aliases when serializing input objects - enums
passed
0.488s
Integ tests
should use aliases when serializing input objects - lists
passed
1.118s
Integ tests
constraints: should handle checks in return types
passed
0.848s
Integ tests
constraints: should handle checks in returned unions
passed
0.95s
Integ tests
constraints: should handle block-level checks
passed
0.809s
Integ tests
constraints: should handle nested-block-level checks
passed
0.77s
\ No newline at end of file +

Test Report

Started: 2024-11-04 08:11:51
Suites (1)
0 passed
1 failed
0 pending
Tests (61)
58 passed
3 failed
0 pending
Integ tests > should work for all inputs
single bool
passed
0.777s
Integ tests > should work for all inputs
single string list
passed
1.036s
Integ tests > should work for all inputs
return literal union
failed
0.608s
BamlValidationError: BamlValidationError: Failed to parse LLM response: Failed to coerce value: <root>: Failed to find any (1 | true | "string output") in 3 items
+  - <root>: Expected 1, got Object([("answer", Boolean(true))]).
+  - <root>: Expected true, got Object([("answer", Boolean(true))]).
+  - <root>: Expected "string output", got Object([("answer", Boolean(true))]).
+    at Function.from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:33:28)
+    at from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:58:32)
+    at BamlAsyncClient.LiteralUnionsTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:1362:50)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:42:19)
Integ tests > should work for all inputs
single class
passed
0.928s
Integ tests > should work for all inputs
multiple classes
passed
0.578s
Integ tests > should work for all inputs
single enum list
passed
0.994s
Integ tests > should work for all inputs
single float
passed
0.519s
Integ tests > should work for all inputs
single int
passed
0.337s
Integ tests > should work for all inputs
single literal int
passed
0.359s
Integ tests > should work for all inputs
single literal bool
passed
0.449s
Integ tests > should work for all inputs
single literal string
passed
0.419s
Integ tests > should work for all inputs
single class with literal prop
passed
0.523s
Integ tests > should work for all inputs
single class with literal union prop
passed
0.613s
Integ tests > should work for all inputs
single optional string
passed
0.434s
Integ tests > should work for all inputs
single map string to string
passed
0.706s
Integ tests > should work for all inputs
single map string to class
passed
1.031s
Integ tests > should work for all inputs
single map string to map
passed
0.741s
Integ tests
should work for all outputs
passed
6.504s
Integ tests
works with retries1
passed
1.339s
Integ tests
works with retries2
passed
2.254s
Integ tests
works with fallbacks
passed
2.21s
Integ tests
should work with image from url
passed
2.462s
Integ tests
should work with image from base 64
passed
0.95s
Integ tests
should work with audio base 64
passed
1.031s
Integ tests
should work with audio from url
passed
1.082s
Integ tests
should support streaming in OpenAI
passed
3.648s
Integ tests
should support streaming in Gemini
failed
0.914s
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 {"category": String("HARM_CATEGORY_HATE_SPEECH"), "threshold": String("BLOCK_LOW_AND_ABOVE")}}, start_time: SystemTime { tv_sec: 1730736744, tv_nsec: 711125000 }, latency: 829.885458ms, message: "Failed to parse event: Error(\"missing field `content`\", line: 1, column: 359)", code: UnsupportedResponse(2) }
+    at BamlStream.parsed [as getFinalResponse] (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/stream.js:58:39)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:253:19)
Integ tests
should support AWS
passed
2.313s
Integ tests
should support streaming in AWS
passed
2.232s
Integ tests
should support OpenAI shorthand
passed
11.846s
Integ tests
should support OpenAI shorthand streaming
passed
9.93s
Integ tests
should support anthropic shorthand
passed
3.186s
Integ tests
should support anthropic shorthand streaming
passed
2.896s
Integ tests
should support streaming without iterating
passed
5.531s
Integ tests
should support streaming in Claude
passed
1.112s
Integ tests
should support vertex
passed
7.336s
Integ tests
supports tracing sync
passed
0.006s
Integ tests
supports tracing async
passed
2.815s
Integ tests
should work with dynamic types single
passed
1.203s
Integ tests
should work with dynamic types enum
passed
1.234s
Integ tests
should work with dynamic literals
passed
0.929s
Integ tests
should work with dynamic types class
passed
1.722s
Integ tests
should work with dynamic inputs class
passed
0.628s
Integ tests
should work with dynamic inputs list
passed
0.724s
Integ tests
should work with dynamic output map
passed
1.09s
Integ tests
should work with dynamic output union
passed
4.278s
Integ tests
should work with nested classes
failed
0.103s
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: 1730736806, tv_nsec: 665727000 }, latency: 1.319041ms, 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/vbv/repos/gloo-lang/engine/language_client_typescript/stream.js:58:39)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:578:19)
Integ tests
should work with dynamic client
passed
0.458s
Integ tests
should work with 'onLogEvent'
passed
2.049s
Integ tests
should work with a sync client
passed
0.547s
Integ tests
should raise an error when appropriate
passed
0.926s
Integ tests
should raise a BAMLValidationError
passed
0.508s
Integ tests
should reset environment variables correctly
passed
1.144s
Integ tests
should use aliases when serializing input objects - classes
passed
0.949s
Integ tests
should use aliases when serializing, but still have original keys in jinja
passed
1.129s
Integ tests
should use aliases when serializing input objects - enums
passed
0.539s
Integ tests
should use aliases when serializing input objects - lists
passed
0.438s
Integ tests
constraints: should handle checks in return types
passed
0.844s
Integ tests
constraints: should handle checks in returned unions
passed
0.893s
Integ tests
constraints: should handle block-level checks
passed
0.737s
Integ tests
constraints: should handle nested-block-level checks
passed
0.928s
Console Log
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:47:15)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
calling with class
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:53:15)
got response key
+true
+52
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:176:15)
Expected error Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "RetryClientConstant", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Say a haiku")] }]), request_options: {"model": String("gpt-3.5-turbo")}, start_time: SystemTime { tv_sec: 1730736730, tv_nsec: 756666000 }, latency: 275.386333ms, 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:2635:18)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:173:7) {
+  code: 'GenericFailure'
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:185:15)
Expected error Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "RetryClientExponential", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Say a haiku")] }]), request_options: {"model": String("gpt-3.5-turbo")}, start_time: SystemTime { tv_sec: 1730736733, tv_nsec: 77889000 }, latency: 243.340167ms, 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:2660:18)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:182:7) {
+  code: 'GenericFailure'
+}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:338:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:83:38)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:81:22)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:347:5)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
hello world
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:341:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:83:38)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:81:22)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:347:5)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
dummyFunc returned
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:344:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:83:38)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:81:22)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:347:5)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
dummyFunc2 returned
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
dummy hi1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
dummy hi2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:377:5)
dummy hi3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:384:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:44)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:28)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:400:5)
hello world
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
dummy firstDummyFuncArg
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:389:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:389:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:389:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:389:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
dummy secondDummyFuncArg
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 0)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:397:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested1
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at runNextTicks (node:internal/process/task_queues:60:5)
+    at listOnTimeout (node:internal/timers:538:9)
+    at processTimers (node:internal/timers:512:7)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 1)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:397:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested2
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:359:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at async Promise.all (index 2)
+    at dummyFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:365:22)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:397:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
samDummyNested nested3
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:370:15)
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:397:20
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:38
+    at /Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:13
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:383:17)
dummy thirdDummyFuncArg
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:403:15)
+    at func (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:104:44)
+    at AsyncLocalStorage.run (node:async_hooks:338:14)
+    at run (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:102:28)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:409:5)
hello world
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:413:13)
stats {"failed":0,"started":30,"finalized":30,"submitted":30,"sent":30,"done":30}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:437:13)
[
+  {
+    name: 'Harrison',
+    hair_color: 'BLACK',
+    last_name: null,
+    height: 1.83,
+    hobbies: [ 'SPORTS' ]
+  }
+]
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:506:13)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
[
+  [
+    'hair_color',
+    ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
+  ],
+  [
+    'attributes',
+    ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
+  ]
+]
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:508:15)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: hair_color
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:508:15)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: attributes
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:516:13)
final  {
+  hair_color: 'black',
+  attributes: { height: '6 feet', eye_color: 'blue', facial_hair: 'beard' }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:540:13)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
[
+  [
+    'hair_color',
+    ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
+  ],
+  [
+    'attributes',
+    ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
+  ],
+  [ 'height', ClassPropertyBuilder { bldr: ClassPropertyBuilder {} } ]
+]
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:542:15)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: hair_color
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:542:15)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: attributes
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:542:15)
+    at Promise.then.completed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at new Promise (<anonymous>)
+    at callAsyncCircusFn (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/Users/vbv/repos/gloo-lang/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
Property: height
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:550:13)
final  {
+  hair_color: 'black',
+  attributes: { eye_color: 'blue', facial_hair: 'beard', age: '30' },
+  height: { feet: 6, inches: null }
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:561:13)
final  {
+  hair_color: 'black',
+  attributes: { eye_color: 'blue', facial_hair: 'beard' },
+  height: { meters: 1.8 }
+}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:599:15)
+    at callback (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:70:17)
onLogEvent {
+  metadata: {
+    eventId: '2c5c90ba-407d-4dd4-b842-8fd3a322d57c',
+    rootEventId: '2c5c90ba-407d-4dd4-b842-8fd3a322d57c'
+  },
+  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-11-04T16:13:27.643Z'
+}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:599:15)
+    at callback (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/async_context_vars.js:70:17)
onLogEvent {
+  metadata: {
+    eventId: '8a1e0133-67e0-4b95-b355-ae06f1b9d111',
+    rootEventId: '8a1e0133-67e0-4b95-b355-ae06f1b9d111'
+  },
+  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-11-04T16:13:28.168Z'
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:633:15)
Error: Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "MyClient", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Given a string, extract info using the schema:\n\nMy name is Harrison. My hair is black and I'm 6 feet tall.\n\nAnswer in JSON using this schema:\n{\n}")] }]), request_options: {"model": String("gpt-4o-mini")}, start_time: SystemTime { tv_sec: 1730736809, tv_nsec: 990070000 }, latency: 215.395209ms, message: "Request failed: {\n    \"error\": {\n        \"message\": \"Incorrect API key provided: INVALID_KEY. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
+    at BamlAsyncClient.parsed (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:1435:18)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:630:7) {
+  code: 'GenericFailure'
+}
    at log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:641:17)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:637:5)
BamlValidationError: BamlValidationError: Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
+  - <root>: Missing required field: nonce
+  - <root>: Missing required field: nonce2
+    at Function.from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:33:28)
+    at from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:58:32)
+    at BamlAsyncClient.DummyOutputFunction (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:487:50)
+    at /Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:639:9
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:637:5) {
+  prompt: '[\x1B[2mchat\x1B[0m] \x1B[43msystem: \x1B[0mSay "hello there".\n',
+  raw_output: 'Hello there! How can I assist you today?'
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:653:17)
error BamlValidationError: BamlValidationError: Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
+  - <root>: Missing required field: nonce
+  - <root>: Missing required field: nonce2
+    at Function.from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:33:28)
+    at from (/Users/vbv/repos/gloo-lang/engine/language_client_typescript/index.js:58:32)
+    at BamlAsyncClient.DummyOutputFunction (/Users/vbv/repos/gloo-lang/integ-tests/typescript/baml_client/async_client.ts:487:50)
+    at Object.<anonymous> (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:649:7) {
+  prompt: '[\x1B[2mchat\x1B[0m] \x1B[43msystem: \x1B[0mSay "hello there".\n',
+  raw_output: 'Hello there! How can I assist you today?'
+}
    at Object.log (/Users/vbv/repos/gloo-lang/integ-tests/typescript/tests/integ-tests.test.ts:753:13)
{"nbc":{"value":{"foo":1,"bar":"hello"},"checks":{"cross_field":{"name":"cross_field","expression":"this.bar|length > this.foo","status":"succeeded"}}}}
\ No newline at end of file diff --git a/tools/versions/engine.cfg b/tools/versions/engine.cfg index f6714fd78..8c6554577 100644 --- a/tools/versions/engine.cfg +++ b/tools/versions/engine.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.65.0 +current_version = 0.66.0 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 982f64608..ffe84afed 100644 --- a/tools/versions/integ-tests.cfg +++ b/tools/versions/integ-tests.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.65.0 +current_version = 0.66.0 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/tools/versions/python.cfg b/tools/versions/python.cfg index 62267942c..c0cd2f44d 100644 --- a/tools/versions/python.cfg +++ b/tools/versions/python.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.65.0 +current_version = 0.66.0 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/tools/versions/ruby.cfg b/tools/versions/ruby.cfg index 632f08b40..b0cac4d1a 100644 --- a/tools/versions/ruby.cfg +++ b/tools/versions/ruby.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.65.0 +current_version = 0.66.0 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/tools/versions/typescript.cfg b/tools/versions/typescript.cfg index da7e8ff11..d31f1433e 100644 --- a/tools/versions/typescript.cfg +++ b/tools/versions/typescript.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.65.0 +current_version = 0.66.0 commit = False tag = False parse = ^(?P\d+)\.(?P\d+).(?P\d+)$ diff --git a/tools/versions/vscode.cfg b/tools/versions/vscode.cfg index 6646cda72..a72828835 100644 --- a/tools/versions/vscode.cfg +++ b/tools/versions/vscode.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.65.0 +current_version = 0.66.0 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 83e8173e1..65b0e4c47 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.65.0", + "version": "0.66.0", "publisher": "Boundary", "repository": "https://github.com/BoundaryML/baml", "homepage": "https://www.boundaryml.com",