structured-outputs 0.1.0-beta.2 → 0.1.0-beta.20
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +77 -6
- package/esm/ResponseFormat.js +33 -5
- package/esm/ResponseFormat.js.map +1 -1
- package/esm/Tool.js +17 -0
- package/esm/Tool.js.map +1 -0
- package/esm/_dnt.polyfills.js +16 -0
- package/esm/_dnt.polyfills.js.map +1 -0
- package/esm/_dnt.shims.js +58 -0
- package/esm/_dnt.shims.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/almost_equals.js +47 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/almost_equals.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/array_includes.js +47 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/array_includes.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/assert.js +23 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/assert.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/assertion_error.js +31 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/assertion_error.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/equal.js +184 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/equal.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/equals.js +46 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/equals.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/exists.js +28 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/exists.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/fail.js +21 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/fail.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/false.js +23 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/false.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/greater.js +30 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/greater.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.js +30 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/instance_of.js +53 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/instance_of.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/is_error.js +54 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/is_error.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/less.js +29 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/less.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/less_or_equal.js +30 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/less_or_equal.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/match.js +27 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/match.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/mod.js +46 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/mod.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/not_equals.js +33 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/not_equals.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/not_instance_of.js +30 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/not_instance_of.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/not_match.js +27 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/not_match.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.js +33 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/object_match.js +160 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/object_match.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/rejects.js +54 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/rejects.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/strict_equals.js +58 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/strict_equals.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/string_includes.js +27 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/string_includes.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/throws.js +45 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/throws.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/unimplemented.js +21 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/unimplemented.js.map +1 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/unreachable.js +21 -0
- package/esm/deps/jsr.io/@std/assert/1.0.8/unreachable.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/_utils.js +19 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/_utils.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.js +51 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/associate_by.js +45 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/associate_by.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/associate_with.js +41 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/associate_with.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/chunk.js +51 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/chunk.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/deep_merge.js +96 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/deep_merge.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/distinct.js +28 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/distinct.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/distinct_by.js +39 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/distinct_by.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/drop_last_while.js +33 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/drop_last_while.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/drop_while.js +34 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/drop_while.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/filter_entries.js +43 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/filter_entries.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/filter_keys.js +46 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/filter_keys.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/filter_values.js +46 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/filter_values.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/find_single.js +45 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/find_single.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.js +42 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/includes_value.js +39 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/includes_value.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/intersect.js +36 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/intersect.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/invert.js +29 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/invert.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/invert_by.js +46 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/invert_by.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/join_to_string.js +59 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/join_to_string.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_entries.js +47 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_entries.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_keys.js +42 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_keys.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.js +43 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_values.js +13 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_values.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/max_by.js +15 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/max_by.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/max_of.js +17 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/max_of.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/max_with.js +41 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/max_with.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/min_by.js +15 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/min_by.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/min_of.js +17 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/min_of.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/min_with.js +37 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/min_with.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/mod.js +75 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/mod.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/omit.js +29 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/omit.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/partition.js +16 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/partition.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/partition_entries.js +54 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/partition_entries.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/permutations.js +58 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/permutations.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/pick.js +33 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/pick.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/reduce_groups.js +40 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/reduce_groups.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/running_reduce.js +32 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/running_reduce.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sample.js +35 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sample.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sliding_windows.js +57 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sliding_windows.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sort_by.js +30 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sort_by.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sum_of.js +37 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sum_of.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/take_last_while.js +34 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/take_last_while.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/take_while.js +39 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/take_while.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/union.js +34 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/union.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/unzip.js +46 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/unzip.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/without_all.js +28 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/without_all.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/zip.js +43 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/zip.js.map +1 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.js +111 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.js.map +1 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/diff.js +277 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/diff.js.map +1 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.js +180 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.js.map +1 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/format.js +38 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/format.js.map +1 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/styles.js +208 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/styles.js.map +1 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/types.js +3 -0
- package/esm/deps/jsr.io/@std/internal/1.0.5/types.js.map +1 -0
- package/esm/mod.js +3 -10
- package/esm/mod.js.map +1 -1
- package/esm/types/Ref.js +11 -0
- package/esm/types/Ref.js.map +1 -0
- package/esm/types/RootTy.js +19 -0
- package/esm/types/RootTy.js.map +1 -0
- package/esm/types/Ty.js +17 -0
- package/esm/types/Ty.js.map +1 -0
- package/esm/types/array.js +9 -0
- package/esm/types/array.js.map +1 -0
- package/esm/types/constant.js +8 -0
- package/esm/types/constant.js.map +1 -0
- package/esm/types/constantUnion.js +25 -0
- package/esm/types/constantUnion.js.map +1 -0
- package/esm/types/leaves.js +18 -0
- package/esm/types/leaves.js.map +1 -0
- package/esm/types/mod.js +11 -0
- package/esm/types/mod.js.map +1 -0
- package/esm/{object.js → types/object.js} +4 -4
- package/esm/types/object.js.map +1 -0
- package/esm/types/std/Option.js +9 -0
- package/esm/types/std/Option.js.map +1 -0
- package/esm/types/std/Wrapper.js +5 -0
- package/esm/types/std/Wrapper.js.map +1 -0
- package/esm/types/std/mod.js +3 -0
- package/esm/types/std/mod.js.map +1 -0
- package/esm/types/taggedUnion.js +20 -0
- package/esm/types/taggedUnion.js.map +1 -0
- package/esm/util/phantoms.js +4 -0
- package/esm/util/phantoms.js.map +1 -0
- package/esm/util/recombineTaggedTemplateArgs.js +4 -0
- package/esm/util/recombineTaggedTemplateArgs.js.map +1 -0
- package/package.json +10 -7
- package/src/ResponseFormat.ts +76 -25
- package/src/Tool.ts +38 -0
- package/src/_dnt.polyfills.ts +27 -0
- package/src/_dnt.shims.ts +60 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/almost_equals.ts +55 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/array_includes.ts +57 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/assert.ts +23 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/assertion_error.ts +31 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/equal.ts +210 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/equals.ts +52 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/exists.ts +31 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/fail.ts +21 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/false.ts +26 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/greater.ts +30 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.ts +36 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/instance_of.ts +64 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/is_error.ts +65 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/less.ts +29 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/less_or_equal.ts +36 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/match.ts +30 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/mod.ts +47 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/not_equals.ts +36 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/not_instance_of.ts +33 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/not_match.ts +30 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.ts +42 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/object_match.ts +202 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/rejects.ts +123 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/strict_equals.ts +67 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/string_includes.ts +30 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/throws.ts +111 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/unimplemented.ts +21 -0
- package/src/deps/jsr.io/@std/assert/1.0.8/unreachable.ts +21 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/_utils.ts +26 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.ts +62 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/associate_by.ts +50 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/associate_with.ts +46 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/chunk.ts +56 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/deep_merge.ts +578 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/distinct.ts +29 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/distinct_by.ts +42 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/drop_last_while.ts +36 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/drop_while.ts +39 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/filter_entries.ts +48 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/filter_keys.ts +51 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/filter_values.ts +51 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/find_single.ts +48 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.ts +47 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/includes_value.ts +45 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/intersect.ts +35 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/invert.ts +38 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/invert_by.ts +56 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/join_to_string.ts +109 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/map_entries.ts +53 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/map_keys.ts +47 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.ts +49 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/map_values.ts +96 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/max_by.ts +153 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/max_of.ts +90 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/max_with.ts +46 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/min_by.ts +151 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/min_of.ts +90 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/min_with.ts +42 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/mod.ts +76 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/omit.ts +34 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/partition.ts +85 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/partition_entries.ts +58 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/permutations.ts +66 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/pick.ts +34 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/reduce_groups.ts +45 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/running_reduce.ts +38 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/sample.ts +36 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/sliding_windows.ts +86 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/sort_by.ts +219 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/sum_of.ts +42 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/take_last_while.ts +37 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/take_while.ts +44 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/union.ts +36 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/unzip.ts +50 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/without_all.ts +28 -0
- package/src/deps/jsr.io/@std/collections/1.0.9/zip.ts +49 -0
- package/src/deps/jsr.io/@std/internal/1.0.5/build_message.ts +134 -0
- package/src/deps/jsr.io/@std/internal/1.0.5/diff.ts +317 -0
- package/src/deps/jsr.io/@std/internal/1.0.5/diff_str.ts +204 -0
- package/src/deps/jsr.io/@std/internal/1.0.5/format.ts +39 -0
- package/src/deps/jsr.io/@std/internal/1.0.5/styles.ts +233 -0
- package/src/deps/jsr.io/@std/internal/1.0.5/types.ts +18 -0
- package/src/mod.ts +3 -18
- package/src/types/Ref.ts +16 -0
- package/src/types/RootTy.ts +40 -0
- package/src/types/Ty.ts +57 -0
- package/src/types/array.ts +9 -0
- package/src/types/constant.ts +8 -0
- package/src/types/constantUnion.ts +27 -0
- package/src/types/leaves.ts +21 -0
- package/src/types/mod.ts +10 -0
- package/src/types/object.ts +15 -0
- package/src/types/std/Option.ts +15 -0
- package/src/types/std/Wrapper.ts +8 -0
- package/src/types/std/mod.ts +2 -0
- package/src/types/taggedUnion.ts +28 -0
- package/src/util/phantoms.ts +3 -0
- package/src/util/recombineTaggedTemplateArgs.ts +6 -0
- package/types/ResponseFormat.d.ts +26 -0
- package/types/ResponseFormat.d.ts.map +1 -0
- package/types/Tool.d.ts +13 -0
- package/types/Tool.d.ts.map +1 -0
- package/types/_dnt.polyfills.d.ts +12 -0
- package/types/_dnt.polyfills.d.ts.map +1 -0
- package/types/_dnt.shims.d.ts +2 -0
- package/types/_dnt.shims.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/almost_equals.d.ts +29 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/almost_equals.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/array_includes.d.ts +24 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/array_includes.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/assert.d.ts +16 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/assert.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/assertion_error.d.ts +26 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/assertion_error.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/equal.d.ts +17 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/equal.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/equals.d.ts +22 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/equals.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/exists.d.ts +18 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/exists.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/fail.d.ts +15 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/fail.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/false.d.ts +18 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/false.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/greater.d.ts +20 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/greater.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.d.ts +20 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/greater_or_equal.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/instance_of.d.ts +23 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/instance_of.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/is_error.d.ts +25 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/is_error.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/less.d.ts +19 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/less.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/less_or_equal.d.ts +20 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/less_or_equal.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/match.d.ts +18 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/match.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/mod.d.ts +44 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/mod.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/not_equals.d.ts +21 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/not_equals.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/not_instance_of.d.ts +20 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/not_instance_of.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/not_match.d.ts +18 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/not_match.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.d.ts +23 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/not_strict_equals.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/object_match.d.ts +28 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/object_match.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/rejects.d.ts +42 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/rejects.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/strict_equals.d.ts +24 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/strict_equals.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/string_includes.d.ts +18 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/string_includes.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/throws.d.ts +45 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/throws.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/unimplemented.d.ts +15 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/unimplemented.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/unreachable.d.ts +15 -0
- package/types/deps/jsr.io/@std/assert/1.0.8/unreachable.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/_utils.d.ts +6 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/_utils.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.d.ts +41 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/associate_by.d.ts +37 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/associate_by.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/associate_with.d.ts +33 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/associate_with.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/chunk.d.ts +38 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/chunk.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/deep_merge.d.ts +322 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/deep_merge.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/distinct.d.ts +23 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/distinct.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/distinct_by.d.ts +26 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/distinct_by.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/drop_last_while.d.ts +26 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/drop_last_while.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/drop_while.d.ts +25 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/drop_while.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/filter_entries.d.ts +32 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/filter_entries.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/filter_keys.d.ts +36 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/filter_keys.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/filter_values.d.ts +35 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/filter_values.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/find_single.d.ts +31 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/find_single.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.d.ts +32 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/includes_value.d.ts +29 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/includes_value.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/intersect.d.ts +25 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/intersect.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/invert.d.ts +29 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/invert.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/invert_by.d.ts +34 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/invert_by.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/join_to_string.d.ts +75 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/join_to_string.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/map_entries.d.ts +37 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/map_entries.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/map_keys.d.ts +33 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/map_keys.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.d.ts +32 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/map_values.d.ts +71 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/map_values.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/max_by.d.ts +117 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/max_by.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/max_of.d.ts +61 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/max_of.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/max_with.d.ts +29 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/max_with.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/min_by.d.ts +115 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/min_by.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/min_of.d.ts +61 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/min_of.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/min_with.d.ts +25 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/min_with.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/mod.d.ts +73 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/mod.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/omit.d.ts +24 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/omit.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/partition.d.ts +60 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/partition.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/partition_entries.d.ts +39 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/partition_entries.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/permutations.d.ts +27 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/permutations.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/pick.d.ts +25 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/pick.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/reduce_groups.d.ts +35 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/reduce_groups.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/running_reduce.d.ts +27 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/running_reduce.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/sample.d.ts +24 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/sample.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/sliding_windows.d.ts +66 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/sliding_windows.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/sort_by.d.ts +161 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/sort_by.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/sum_of.d.ts +29 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/sum_of.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/take_last_while.d.ts +27 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/take_last_while.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/take_while.d.ts +30 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/take_while.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/union.d.ts +24 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/union.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/unzip.d.ts +32 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/unzip.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/without_all.d.ts +23 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/without_all.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/zip.d.ts +34 -0
- package/types/deps/jsr.io/@std/collections/1.0.9/zip.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts +82 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/diff.d.ts +140 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/diff.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts +99 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/format.d.ts +2 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/format.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/styles.d.ts +159 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/styles.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/types.d.ts +16 -0
- package/types/deps/jsr.io/@std/internal/1.0.5/types.d.ts.map +1 -0
- package/types/mod.d.ts +5 -0
- package/types/mod.d.ts.map +1 -0
- package/types/types/Ref.d.ts +4 -0
- package/types/types/Ref.d.ts.map +1 -0
- package/types/types/RootTy.d.ts +8 -0
- package/types/types/RootTy.d.ts.map +1 -0
- package/types/types/Ty.d.ts +27 -0
- package/types/types/Ty.d.ts.map +1 -0
- package/types/types/array.d.ts +3 -0
- package/types/types/array.d.ts.map +1 -0
- package/types/types/constant.d.ts +3 -0
- package/types/types/constant.d.ts.map +1 -0
- package/types/types/constantUnion.d.ts +3 -0
- package/types/types/constantUnion.d.ts.map +1 -0
- package/types/types/leaves.d.ts +6 -0
- package/types/types/leaves.d.ts.map +1 -0
- package/types/types/mod.d.ts +11 -0
- package/types/types/mod.d.ts.map +1 -0
- package/types/types/object.d.ts +6 -0
- package/types/types/object.d.ts.map +1 -0
- package/types/types/std/Option.d.ts +7 -0
- package/types/types/std/Option.d.ts.map +1 -0
- package/types/types/std/Wrapper.d.ts +7 -0
- package/types/types/std/Wrapper.d.ts.map +1 -0
- package/types/types/std/mod.d.ts +3 -0
- package/types/types/std/mod.d.ts.map +1 -0
- package/types/types/taggedUnion.d.ts +8 -0
- package/types/types/taggedUnion.d.ts.map +1 -0
- package/types/util/phantoms.d.ts +2 -0
- package/types/util/phantoms.d.ts.map +1 -0
- package/types/util/recombineTaggedTemplateArgs.d.ts +2 -0
- package/types/util/recombineTaggedTemplateArgs.d.ts.map +1 -0
- package/esm/F.d.ts +0 -13
- package/esm/F.d.ts.map +0 -1
- package/esm/F.js +0 -10
- package/esm/F.js.map +0 -1
- package/esm/ResponseFormat.d.ts +0 -14
- package/esm/ResponseFormat.d.ts.map +0 -1
- package/esm/_base.d.ts +0 -13
- package/esm/_base.d.ts.map +0 -1
- package/esm/_base.js +0 -40
- package/esm/_base.js.map +0 -1
- package/esm/array.d.ts +0 -4
- package/esm/array.d.ts.map +0 -1
- package/esm/array.js +0 -9
- package/esm/array.js.map +0 -1
- package/esm/common.d.ts +0 -6
- package/esm/common.d.ts.map +0 -1
- package/esm/common.js +0 -2
- package/esm/common.js.map +0 -1
- package/esm/literal.d.ts +0 -4
- package/esm/literal.d.ts.map +0 -1
- package/esm/literal.js +0 -8
- package/esm/literal.js.map +0 -1
- package/esm/mod.d.ts +0 -16
- package/esm/mod.d.ts.map +0 -1
- package/esm/number.d.ts +0 -4
- package/esm/number.d.ts.map +0 -1
- package/esm/number.js +0 -8
- package/esm/number.js.map +0 -1
- package/esm/object.d.ts +0 -7
- package/esm/object.d.ts.map +0 -1
- package/esm/object.js.map +0 -1
- package/esm/schema.d.ts +0 -4
- package/esm/schema.d.ts.map +0 -1
- package/esm/schema.js +0 -9
- package/esm/schema.js.map +0 -1
- package/esm/string.d.ts +0 -4
- package/esm/string.d.ts.map +0 -1
- package/esm/string.js +0 -8
- package/esm/string.js.map +0 -1
- package/esm/union.d.ts +0 -6
- package/esm/union.d.ts.map +0 -1
- package/esm/union.js +0 -8
- package/esm/union.js.map +0 -1
- package/src/F.ts +0 -27
- package/src/_base.ts +0 -25
- package/src/array.ts +0 -11
- package/src/common.ts +0 -6
- package/src/literal.ts +0 -10
- package/src/number.ts +0 -10
- package/src/object.ts +0 -17
- package/src/schema.ts +0 -10
- package/src/string.ts +0 -10
- package/src/union.ts +0 -12
package/src/Tool.ts
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
import type { RootTy, Schema } from "./types/mod.js"
|
2
|
+
import { recombineTaggedTemplateArgs } from "./util/recombineTaggedTemplateArgs.js"
|
3
|
+
|
4
|
+
export function Tool<T>(name: string, ty: RootTy<T, never>): Tool<T> {
|
5
|
+
return Tool_(name, ty)
|
6
|
+
}
|
7
|
+
|
8
|
+
function Tool_<T>(name: string, ty: RootTy<T, never>, description?: string): Tool<T> {
|
9
|
+
return Object.assign(
|
10
|
+
(template: TemplateStringsArray, ...quasis: Array<string>) =>
|
11
|
+
Tool_(
|
12
|
+
name,
|
13
|
+
ty,
|
14
|
+
description ? `${description} ${recombineTaggedTemplateArgs(template, quasis)}` : undefined,
|
15
|
+
),
|
16
|
+
{
|
17
|
+
type: "function" as const,
|
18
|
+
name,
|
19
|
+
description,
|
20
|
+
parameters: ty.schema(),
|
21
|
+
toJson() {
|
22
|
+
const { type, name, description, parameters } = this
|
23
|
+
return { type, name, description, parameters }
|
24
|
+
},
|
25
|
+
},
|
26
|
+
)
|
27
|
+
}
|
28
|
+
|
29
|
+
export interface Tool<T = any> {
|
30
|
+
(template: TemplateStringsArray, ...quasis: Array<string>): Tool<T>
|
31
|
+
type: "function"
|
32
|
+
/** The name with which OpenAI recognizes the tool. */
|
33
|
+
name: string
|
34
|
+
/** A description to inform the LLM of when/how to use the tool. */
|
35
|
+
description?: string
|
36
|
+
/** The tool implementation's argument type in JSON Schema. */
|
37
|
+
parameters?: Schema
|
38
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
// https://github.com/tc39/proposal-accessible-object-hasownproperty/blob/main/polyfill.js
|
2
|
+
if (!Object.hasOwn) {
|
3
|
+
Object.defineProperty(Object, "hasOwn", {
|
4
|
+
value: function (object: any, property: any) {
|
5
|
+
if (object == null) {
|
6
|
+
throw new TypeError("Cannot convert undefined or null to object");
|
7
|
+
}
|
8
|
+
return Object.prototype.hasOwnProperty.call(Object(object), property);
|
9
|
+
},
|
10
|
+
configurable: true,
|
11
|
+
enumerable: false,
|
12
|
+
writable: true,
|
13
|
+
});
|
14
|
+
}
|
15
|
+
|
16
|
+
declare global {
|
17
|
+
interface Object {
|
18
|
+
/**
|
19
|
+
* Determines whether an object has a property with the specified name.
|
20
|
+
* @param o An object.
|
21
|
+
* @param v A property name.
|
22
|
+
*/
|
23
|
+
hasOwn(o: object, v: PropertyKey): boolean;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
export {};
|
@@ -0,0 +1,60 @@
|
|
1
|
+
const dntGlobals = {
|
2
|
+
};
|
3
|
+
export const dntGlobalThis = createMergeProxy(globalThis, dntGlobals);
|
4
|
+
|
5
|
+
function createMergeProxy<T extends object, U extends object>(
|
6
|
+
baseObj: T,
|
7
|
+
extObj: U,
|
8
|
+
): Omit<T, keyof U> & U {
|
9
|
+
return new Proxy(baseObj, {
|
10
|
+
get(_target, prop, _receiver) {
|
11
|
+
if (prop in extObj) {
|
12
|
+
return (extObj as any)[prop];
|
13
|
+
} else {
|
14
|
+
return (baseObj as any)[prop];
|
15
|
+
}
|
16
|
+
},
|
17
|
+
set(_target, prop, value) {
|
18
|
+
if (prop in extObj) {
|
19
|
+
delete (extObj as any)[prop];
|
20
|
+
}
|
21
|
+
(baseObj as any)[prop] = value;
|
22
|
+
return true;
|
23
|
+
},
|
24
|
+
deleteProperty(_target, prop) {
|
25
|
+
let success = false;
|
26
|
+
if (prop in extObj) {
|
27
|
+
delete (extObj as any)[prop];
|
28
|
+
success = true;
|
29
|
+
}
|
30
|
+
if (prop in baseObj) {
|
31
|
+
delete (baseObj as any)[prop];
|
32
|
+
success = true;
|
33
|
+
}
|
34
|
+
return success;
|
35
|
+
},
|
36
|
+
ownKeys(_target) {
|
37
|
+
const baseKeys = Reflect.ownKeys(baseObj);
|
38
|
+
const extKeys = Reflect.ownKeys(extObj);
|
39
|
+
const extKeysSet = new Set(extKeys);
|
40
|
+
return [...baseKeys.filter((k) => !extKeysSet.has(k)), ...extKeys];
|
41
|
+
},
|
42
|
+
defineProperty(_target, prop, desc) {
|
43
|
+
if (prop in extObj) {
|
44
|
+
delete (extObj as any)[prop];
|
45
|
+
}
|
46
|
+
Reflect.defineProperty(baseObj, prop, desc);
|
47
|
+
return true;
|
48
|
+
},
|
49
|
+
getOwnPropertyDescriptor(_target, prop) {
|
50
|
+
if (prop in extObj) {
|
51
|
+
return Reflect.getOwnPropertyDescriptor(extObj, prop);
|
52
|
+
} else {
|
53
|
+
return Reflect.getOwnPropertyDescriptor(baseObj, prop);
|
54
|
+
}
|
55
|
+
},
|
56
|
+
has(_target, prop) {
|
57
|
+
return prop in extObj || prop in baseObj;
|
58
|
+
},
|
59
|
+
}) as any;
|
60
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
import { AssertionError } from "./assertion_error.js";
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Make an assertion that `actual` and `expected` are almost equal numbers
|
7
|
+
* through a given tolerance. It can be used to take into account IEEE-754
|
8
|
+
* double-precision floating-point representation limitations. If the values
|
9
|
+
* are not almost equal then throw.
|
10
|
+
*
|
11
|
+
* The default tolerance is one hundred thousandth of a percent of the
|
12
|
+
* expected value.
|
13
|
+
*
|
14
|
+
* @example Usage
|
15
|
+
* ```ts ignore
|
16
|
+
* import { assertAlmostEquals } from "@std/assert";
|
17
|
+
*
|
18
|
+
* assertAlmostEquals(0.01, 0.02); // Throws
|
19
|
+
* assertAlmostEquals(1e-8, 1e-9); // Throws
|
20
|
+
* assertAlmostEquals(1.000000001e-8, 1.000000002e-8); // Doesn't throw
|
21
|
+
* assertAlmostEquals(0.01, 0.02, 0.1); // Doesn't throw
|
22
|
+
* assertAlmostEquals(0.1 + 0.2, 0.3, 1e-16); // Doesn't throw
|
23
|
+
* assertAlmostEquals(0.1 + 0.2, 0.3, 1e-17); // Throws
|
24
|
+
* ```
|
25
|
+
*
|
26
|
+
* @param actual The actual value to compare.
|
27
|
+
* @param expected The expected value to compare.
|
28
|
+
* @param tolerance The tolerance to consider the values almost equal. The
|
29
|
+
* default is one hundred thousandth of a percent of the expected value.
|
30
|
+
* @param msg The optional message to include in the error.
|
31
|
+
*/
|
32
|
+
export function assertAlmostEquals(
|
33
|
+
actual: number,
|
34
|
+
expected: number,
|
35
|
+
tolerance?: number,
|
36
|
+
msg?: string,
|
37
|
+
) {
|
38
|
+
if (Object.is(actual, expected)) {
|
39
|
+
return;
|
40
|
+
}
|
41
|
+
const delta = Math.abs(expected - actual);
|
42
|
+
if (tolerance === undefined) {
|
43
|
+
tolerance = isFinite(expected) ? Math.abs(expected * 1e-7) : 1e-7;
|
44
|
+
}
|
45
|
+
if (delta <= tolerance) {
|
46
|
+
return;
|
47
|
+
}
|
48
|
+
|
49
|
+
const msgSuffix = msg ? `: ${msg}` : ".";
|
50
|
+
const f = (n: number) => Number.isInteger(n) ? n : n.toExponential();
|
51
|
+
throw new AssertionError(
|
52
|
+
`Expected actual: "${f(actual)}" to be close to "${f(expected)}": \
|
53
|
+
delta "${f(delta)}" is greater than "${f(tolerance)}"${msgSuffix}`,
|
54
|
+
);
|
55
|
+
}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
import { equal } from "./equal.js";
|
4
|
+
import { format } from "../../internal/1.0.5/format.js";
|
5
|
+
import { AssertionError } from "./assertion_error.js";
|
6
|
+
|
7
|
+
/** An array-like object (`Array`, `Uint8Array`, `NodeList`, etc.) that is not a string */
|
8
|
+
export type ArrayLikeArg<T> = ArrayLike<T> & object;
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Make an assertion that `actual` includes the `expected` values. If not then
|
12
|
+
* an error will be thrown.
|
13
|
+
*
|
14
|
+
* Type parameter can be specified to ensure values under comparison have the
|
15
|
+
* same type.
|
16
|
+
*
|
17
|
+
* @example Usage
|
18
|
+
* ```ts ignore
|
19
|
+
* import { assertArrayIncludes } from "@std/assert";
|
20
|
+
*
|
21
|
+
* assertArrayIncludes([1, 2], [2]); // Doesn't throw
|
22
|
+
* assertArrayIncludes([1, 2], [3]); // Throws
|
23
|
+
* ```
|
24
|
+
*
|
25
|
+
* @typeParam T The type of the elements in the array to compare.
|
26
|
+
* @param actual The array-like object to check for.
|
27
|
+
* @param expected The array-like object to check for.
|
28
|
+
* @param msg The optional message to display if the assertion fails.
|
29
|
+
*/
|
30
|
+
export function assertArrayIncludes<T>(
|
31
|
+
actual: ArrayLikeArg<T>,
|
32
|
+
expected: ArrayLikeArg<T>,
|
33
|
+
msg?: string,
|
34
|
+
) {
|
35
|
+
const missing: unknown[] = [];
|
36
|
+
for (let i = 0; i < expected.length; i++) {
|
37
|
+
let found = false;
|
38
|
+
for (let j = 0; j < actual.length; j++) {
|
39
|
+
if (equal(expected[i], actual[j])) {
|
40
|
+
found = true;
|
41
|
+
break;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
if (!found) {
|
45
|
+
missing.push(expected[i]);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
if (missing.length === 0) {
|
49
|
+
return;
|
50
|
+
}
|
51
|
+
|
52
|
+
const msgSuffix = msg ? `: ${msg}` : ".";
|
53
|
+
msg = `Expected actual: "${format(actual)}" to include: "${
|
54
|
+
format(expected)
|
55
|
+
}"${msgSuffix}\nmissing: ${format(missing)}`;
|
56
|
+
throw new AssertionError(msg);
|
57
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
import { AssertionError } from "./assertion_error.js";
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Make an assertion, error will be thrown if `expr` does not have truthy value.
|
7
|
+
*
|
8
|
+
* @example Usage
|
9
|
+
* ```ts ignore
|
10
|
+
* import { assert } from "@std/assert";
|
11
|
+
*
|
12
|
+
* assert("hello".includes("ello")); // Doesn't throw
|
13
|
+
* assert("hello".includes("world")); // Throws
|
14
|
+
* ```
|
15
|
+
*
|
16
|
+
* @param expr The expression to test.
|
17
|
+
* @param msg The optional message to display if the assertion fails.
|
18
|
+
*/
|
19
|
+
export function assert(expr: unknown, msg = ""): asserts expr {
|
20
|
+
if (!expr) {
|
21
|
+
throw new AssertionError(msg);
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Error thrown when an assertion fails.
|
6
|
+
*
|
7
|
+
* @example Usage
|
8
|
+
* ```ts ignore
|
9
|
+
* import { AssertionError } from "@std/assert";
|
10
|
+
*
|
11
|
+
* try {
|
12
|
+
* throw new AssertionError("foo", { cause: "bar" });
|
13
|
+
* } catch (error) {
|
14
|
+
* if (error instanceof AssertionError) {
|
15
|
+
* error.message === "foo"; // true
|
16
|
+
* error.cause === "bar"; // true
|
17
|
+
* }
|
18
|
+
* }
|
19
|
+
* ```
|
20
|
+
*/
|
21
|
+
export class AssertionError extends Error {
|
22
|
+
/** Constructs a new instance.
|
23
|
+
*
|
24
|
+
* @param message The error message.
|
25
|
+
* @param options Additional options. This argument is still unstable. It may change in the future release.
|
26
|
+
*/
|
27
|
+
constructor(message: string, options?: ErrorOptions) {
|
28
|
+
super(message, options);
|
29
|
+
this.name = "AssertionError";
|
30
|
+
}
|
31
|
+
}
|
@@ -0,0 +1,210 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
import * as dntShim from "../../../../../_dnt.shims.js";
|
4
|
+
|
5
|
+
|
6
|
+
type KeyedCollection = Set<unknown> | Map<unknown, unknown>;
|
7
|
+
function isKeyedCollection(x: unknown): x is KeyedCollection {
|
8
|
+
return x instanceof Set || x instanceof Map;
|
9
|
+
}
|
10
|
+
|
11
|
+
function prototypesEqual(a: object, b: object) {
|
12
|
+
const pa = Object.getPrototypeOf(a);
|
13
|
+
const pb = Object.getPrototypeOf(b);
|
14
|
+
return pa === pb ||
|
15
|
+
pa === Object.prototype && pb === null ||
|
16
|
+
pa === null && pb === Object.prototype;
|
17
|
+
}
|
18
|
+
|
19
|
+
function isBasicObjectOrArray(obj: object) {
|
20
|
+
const proto = Object.getPrototypeOf(obj);
|
21
|
+
return proto === null || proto === Object.prototype ||
|
22
|
+
proto === Array.prototype;
|
23
|
+
}
|
24
|
+
|
25
|
+
// Slightly faster than Reflect.ownKeys in V8 as of 12.9.202.13-rusty (2024-10-28)
|
26
|
+
function ownKeys(obj: object) {
|
27
|
+
return [
|
28
|
+
...Object.getOwnPropertyNames(obj),
|
29
|
+
...Object.getOwnPropertySymbols(obj),
|
30
|
+
];
|
31
|
+
}
|
32
|
+
|
33
|
+
function getKeysDeep(obj: object) {
|
34
|
+
const keys = new Set<string | symbol>();
|
35
|
+
|
36
|
+
while (obj !== Object.prototype && obj !== Array.prototype && obj != null) {
|
37
|
+
for (const key of ownKeys(obj)) {
|
38
|
+
keys.add(key);
|
39
|
+
}
|
40
|
+
obj = Object.getPrototypeOf(obj);
|
41
|
+
}
|
42
|
+
|
43
|
+
return keys;
|
44
|
+
}
|
45
|
+
|
46
|
+
// deno-lint-ignore no-explicit-any
|
47
|
+
const Temporal: any = (dntShim.dntGlobalThis as any).Temporal ??
|
48
|
+
new Proxy({}, { get: () => {} });
|
49
|
+
|
50
|
+
/** A non-exhaustive list of prototypes that can be accurately fast-path compared with `String(instance)` */
|
51
|
+
const stringComparablePrototypes = new Set<unknown>(
|
52
|
+
[
|
53
|
+
Intl.Locale,
|
54
|
+
RegExp,
|
55
|
+
Temporal.Duration,
|
56
|
+
Temporal.Instant,
|
57
|
+
Temporal.PlainDate,
|
58
|
+
Temporal.PlainDateTime,
|
59
|
+
Temporal.PlainTime,
|
60
|
+
Temporal.PlainYearMonth,
|
61
|
+
Temporal.PlainMonthDay,
|
62
|
+
Temporal.ZonedDateTime,
|
63
|
+
URL,
|
64
|
+
URLSearchParams,
|
65
|
+
].filter((x) => x != null).map((x) => x.prototype),
|
66
|
+
);
|
67
|
+
|
68
|
+
function isPrimitive(x: unknown) {
|
69
|
+
return typeof x === "string" ||
|
70
|
+
typeof x === "number" ||
|
71
|
+
typeof x === "boolean" ||
|
72
|
+
typeof x === "bigint" ||
|
73
|
+
typeof x === "symbol" ||
|
74
|
+
x == null;
|
75
|
+
}
|
76
|
+
|
77
|
+
type TypedArray = Pick<Uint8Array | BigUint64Array, "length" | number>;
|
78
|
+
const TypedArray = Object.getPrototypeOf(Uint8Array);
|
79
|
+
function compareTypedArrays(a: TypedArray, b: TypedArray) {
|
80
|
+
if (a.length !== b.length) return false;
|
81
|
+
for (let i = 0; i < b.length; i++) {
|
82
|
+
if (!sameValueZero(a[i], b[i])) return false;
|
83
|
+
}
|
84
|
+
return true;
|
85
|
+
}
|
86
|
+
|
87
|
+
/** Check both strict equality (`0 == -0`) and `Object.is` (`NaN == NaN`) */
|
88
|
+
function sameValueZero(a: unknown, b: unknown) {
|
89
|
+
return a === b || Object.is(a, b);
|
90
|
+
}
|
91
|
+
|
92
|
+
/**
|
93
|
+
* Deep equality comparison used in assertions.
|
94
|
+
*
|
95
|
+
* @param a The actual value
|
96
|
+
* @param b The expected value
|
97
|
+
* @returns `true` if the values are deeply equal, `false` otherwise
|
98
|
+
*
|
99
|
+
* @example Usage
|
100
|
+
* ```ts
|
101
|
+
* import { equal } from "@std/assert/equal";
|
102
|
+
*
|
103
|
+
* equal({ foo: "bar" }, { foo: "bar" }); // Returns `true`
|
104
|
+
* equal({ foo: "bar" }, { foo: "baz" }); // Returns `false`
|
105
|
+
* ```
|
106
|
+
*/
|
107
|
+
export function equal(a: unknown, b: unknown): boolean {
|
108
|
+
const seen = new Map<unknown, unknown>();
|
109
|
+
return (function compare(a: unknown, b: unknown): boolean {
|
110
|
+
if (sameValueZero(a, b)) return true;
|
111
|
+
if (isPrimitive(a) || isPrimitive(b)) return false;
|
112
|
+
|
113
|
+
if (a instanceof Date && b instanceof Date) {
|
114
|
+
return Object.is(a.getTime(), b.getTime());
|
115
|
+
}
|
116
|
+
if (a && typeof a === "object" && b && typeof b === "object") {
|
117
|
+
if (!prototypesEqual(a, b)) {
|
118
|
+
return false;
|
119
|
+
}
|
120
|
+
if (a instanceof TypedArray) {
|
121
|
+
return compareTypedArrays(a as TypedArray, b as TypedArray);
|
122
|
+
}
|
123
|
+
if (a instanceof WeakMap) {
|
124
|
+
throw new TypeError("cannot compare WeakMap instances");
|
125
|
+
}
|
126
|
+
if (a instanceof WeakSet) {
|
127
|
+
throw new TypeError("cannot compare WeakSet instances");
|
128
|
+
}
|
129
|
+
if (a instanceof WeakRef) {
|
130
|
+
return compare(a.deref(), (b as WeakRef<WeakKey>).deref());
|
131
|
+
}
|
132
|
+
if (seen.get(a) === b) {
|
133
|
+
return true;
|
134
|
+
}
|
135
|
+
if (Object.keys(a).length !== Object.keys(b).length) {
|
136
|
+
return false;
|
137
|
+
}
|
138
|
+
seen.set(a, b);
|
139
|
+
if (isKeyedCollection(a) && isKeyedCollection(b)) {
|
140
|
+
if (a.size !== b.size) {
|
141
|
+
return false;
|
142
|
+
}
|
143
|
+
|
144
|
+
const aKeys = [...a.keys()];
|
145
|
+
const primitiveKeysFastPath = aKeys.every(isPrimitive);
|
146
|
+
if (primitiveKeysFastPath) {
|
147
|
+
if (a instanceof Set) {
|
148
|
+
return a.symmetricDifference(b).size === 0;
|
149
|
+
}
|
150
|
+
|
151
|
+
for (const key of aKeys) {
|
152
|
+
if (
|
153
|
+
!b.has(key) ||
|
154
|
+
!compare(a.get(key), (b as Map<unknown, unknown>).get(key))
|
155
|
+
) {
|
156
|
+
return false;
|
157
|
+
}
|
158
|
+
}
|
159
|
+
return true;
|
160
|
+
}
|
161
|
+
|
162
|
+
let unmatchedEntries = a.size;
|
163
|
+
|
164
|
+
for (const [aKey, aValue] of a.entries()) {
|
165
|
+
for (const [bKey, bValue] of b.entries()) {
|
166
|
+
/* Given that Map keys can be references, we need
|
167
|
+
* to ensure that they are also deeply equal */
|
168
|
+
|
169
|
+
if (!compare(aKey, bKey)) continue;
|
170
|
+
|
171
|
+
if (
|
172
|
+
(aKey === aValue && bKey === bValue) ||
|
173
|
+
(compare(aValue, bValue))
|
174
|
+
) {
|
175
|
+
unmatchedEntries--;
|
176
|
+
break;
|
177
|
+
}
|
178
|
+
}
|
179
|
+
}
|
180
|
+
|
181
|
+
return unmatchedEntries === 0;
|
182
|
+
}
|
183
|
+
|
184
|
+
let keys: Iterable<string | symbol>;
|
185
|
+
|
186
|
+
if (isBasicObjectOrArray(a)) {
|
187
|
+
// fast path
|
188
|
+
keys = ownKeys({ ...a, ...b });
|
189
|
+
} else if (stringComparablePrototypes.has(Object.getPrototypeOf(a))) {
|
190
|
+
// medium path
|
191
|
+
return String(a) === String(b);
|
192
|
+
} else {
|
193
|
+
// slow path
|
194
|
+
keys = getKeysDeep(a).union(getKeysDeep(b));
|
195
|
+
}
|
196
|
+
|
197
|
+
for (const key of keys) {
|
198
|
+
type Key = keyof typeof a;
|
199
|
+
if (!compare(a[key as Key], b[key as Key])) {
|
200
|
+
return false;
|
201
|
+
}
|
202
|
+
if (((key in a) && (!(key in b))) || ((key in b) && (!(key in a)))) {
|
203
|
+
return false;
|
204
|
+
}
|
205
|
+
}
|
206
|
+
return true;
|
207
|
+
}
|
208
|
+
return false;
|
209
|
+
})(a, b);
|
210
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
import { equal } from "./equal.js";
|
4
|
+
import { buildMessage } from "../../internal/1.0.5/build_message.js";
|
5
|
+
import { diff } from "../../internal/1.0.5/diff.js";
|
6
|
+
import { diffStr } from "../../internal/1.0.5/diff_str.js";
|
7
|
+
import { format } from "../../internal/1.0.5/format.js";
|
8
|
+
|
9
|
+
import { AssertionError } from "./assertion_error.js";
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Make an assertion that `actual` and `expected` are equal, deeply. If not
|
13
|
+
* deeply equal, then throw.
|
14
|
+
*
|
15
|
+
* Type parameter can be specified to ensure values under comparison have the
|
16
|
+
* same type.
|
17
|
+
*
|
18
|
+
* @example Usage
|
19
|
+
* ```ts ignore
|
20
|
+
* import { assertEquals } from "@std/assert";
|
21
|
+
*
|
22
|
+
* assertEquals("world", "world"); // Doesn't throw
|
23
|
+
* assertEquals("hello", "world"); // Throws
|
24
|
+
* ```
|
25
|
+
*
|
26
|
+
* @typeParam T The type of the values to compare. This is usually inferred.
|
27
|
+
* @param actual The actual value to compare.
|
28
|
+
* @param expected The expected value to compare.
|
29
|
+
* @param msg The optional message to display if the assertion fails.
|
30
|
+
*/
|
31
|
+
export function assertEquals<T>(
|
32
|
+
actual: T,
|
33
|
+
expected: T,
|
34
|
+
msg?: string,
|
35
|
+
) {
|
36
|
+
if (equal(actual, expected)) {
|
37
|
+
return;
|
38
|
+
}
|
39
|
+
const msgSuffix = msg ? `: ${msg}` : ".";
|
40
|
+
let message = `Values are not equal${msgSuffix}`;
|
41
|
+
|
42
|
+
const actualString = format(actual);
|
43
|
+
const expectedString = format(expected);
|
44
|
+
const stringDiff = (typeof actual === "string") &&
|
45
|
+
(typeof expected === "string");
|
46
|
+
const diffResult = stringDiff
|
47
|
+
? diffStr(actual as string, expected as string)
|
48
|
+
: diff(actualString.split("\n"), expectedString.split("\n"));
|
49
|
+
const diffMsg = buildMessage(diffResult, { stringDiff }).join("\n");
|
50
|
+
message = `${message}\n${diffMsg}`;
|
51
|
+
throw new AssertionError(message);
|
52
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
import { AssertionError } from "./assertion_error.js";
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Make an assertion that actual is not null or undefined.
|
7
|
+
* If not then throw.
|
8
|
+
*
|
9
|
+
* @example Usage
|
10
|
+
* ```ts ignore
|
11
|
+
* import { assertExists } from "@std/assert";
|
12
|
+
*
|
13
|
+
* assertExists("something"); // Doesn't throw
|
14
|
+
* assertExists(undefined); // Throws
|
15
|
+
* ```
|
16
|
+
*
|
17
|
+
* @typeParam T The type of the actual value.
|
18
|
+
* @param actual The actual value to check.
|
19
|
+
* @param msg The optional message to include in the error if the assertion fails.
|
20
|
+
*/
|
21
|
+
export function assertExists<T>(
|
22
|
+
actual: T,
|
23
|
+
msg?: string,
|
24
|
+
): asserts actual is NonNullable<T> {
|
25
|
+
if (actual === undefined || actual === null) {
|
26
|
+
const msgSuffix = msg ? `: ${msg}` : ".";
|
27
|
+
msg =
|
28
|
+
`Expected actual: "${actual}" to not be null or undefined${msgSuffix}`;
|
29
|
+
throw new AssertionError(msg);
|
30
|
+
}
|
31
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
import { AssertionError } from "./assertion_error.js";
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Forcefully throws a failed assertion.
|
7
|
+
*
|
8
|
+
* @example Usage
|
9
|
+
* ```ts ignore
|
10
|
+
* import { fail } from "@std/assert";
|
11
|
+
*
|
12
|
+
* fail("Deliberately failed!"); // Throws
|
13
|
+
* ```
|
14
|
+
*
|
15
|
+
* @param msg Optional message to include in the error.
|
16
|
+
* @returns Never returns, always throws.
|
17
|
+
*/
|
18
|
+
export function fail(msg?: string): never {
|
19
|
+
const msgSuffix = msg ? `: ${msg}` : ".";
|
20
|
+
throw new AssertionError(`Failed assertion${msgSuffix}`);
|
21
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
import { AssertionError } from "./assertion_error.js";
|
4
|
+
|
5
|
+
/** Assertion condition for {@linkcode assertFalse}. */
|
6
|
+
export type Falsy = false | 0 | 0n | "" | null | undefined;
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Make an assertion, error will be thrown if `expr` have truthy value.
|
10
|
+
*
|
11
|
+
* @example Usage
|
12
|
+
* ```ts ignore
|
13
|
+
* import { assertFalse } from "@std/assert";
|
14
|
+
*
|
15
|
+
* assertFalse(false); // Doesn't throw
|
16
|
+
* assertFalse(true); // Throws
|
17
|
+
* ```
|
18
|
+
*
|
19
|
+
* @param expr The expression to test.
|
20
|
+
* @param msg The optional message to display if the assertion fails.
|
21
|
+
*/
|
22
|
+
export function assertFalse(expr: unknown, msg = ""): asserts expr is Falsy {
|
23
|
+
if (expr) {
|
24
|
+
throw new AssertionError(msg);
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
import { format } from "../../internal/1.0.5/format.js";
|
4
|
+
import { AssertionError } from "./assertion_error.js";
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Make an assertion that `actual` is greater than `expected`.
|
8
|
+
* If not then throw.
|
9
|
+
*
|
10
|
+
* @example Usage
|
11
|
+
* ```ts ignore
|
12
|
+
* import { assertGreater } from "@std/assert";
|
13
|
+
*
|
14
|
+
* assertGreater(2, 1); // Doesn't throw
|
15
|
+
* assertGreater(1, 1); // Throws
|
16
|
+
* assertGreater(0, 1); // Throws
|
17
|
+
* ```
|
18
|
+
*
|
19
|
+
* @typeParam T The type of the values to compare.
|
20
|
+
* @param actual The actual value to compare.
|
21
|
+
* @param expected The expected value to compare.
|
22
|
+
* @param msg The optional message to display if the assertion fails.
|
23
|
+
*/
|
24
|
+
export function assertGreater<T>(actual: T, expected: T, msg?: string) {
|
25
|
+
if (actual > expected) return;
|
26
|
+
|
27
|
+
const actualString = format(actual);
|
28
|
+
const expectedString = format(expected);
|
29
|
+
throw new AssertionError(msg ?? `Expect ${actualString} > ${expectedString}`);
|
30
|
+
}
|