structured-outputs 0.1.0-beta.2 → 0.1.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns a new array, containing all elements in the given array transformed
|
|
6
|
+
* using the given transformer, except the ones that were transformed to `null`
|
|
7
|
+
* or `undefined`.
|
|
8
|
+
*
|
|
9
|
+
* @typeParam T The type of the elements in the input array.
|
|
10
|
+
* @typeParam O The type of the elements in the output array.
|
|
11
|
+
*
|
|
12
|
+
* @param array The array to map elements from.
|
|
13
|
+
* @param transformer The function to transform each element.
|
|
14
|
+
*
|
|
15
|
+
* @returns A new array with all elements transformed by the given transformer,
|
|
16
|
+
* except the ones that were transformed to `null` or `undefined`.
|
|
17
|
+
*
|
|
18
|
+
* @example Basic usage
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { mapNotNullish } from "@std/collections/map-not-nullish";
|
|
21
|
+
* import { assertEquals } from "@std/assert";
|
|
22
|
+
*
|
|
23
|
+
* const people = [
|
|
24
|
+
* { middleName: null },
|
|
25
|
+
* { middleName: "William" },
|
|
26
|
+
* { middleName: undefined },
|
|
27
|
+
* { middleName: "Martha" },
|
|
28
|
+
* ];
|
|
29
|
+
* const foundMiddleNames = mapNotNullish(people, (people) => people.middleName);
|
|
30
|
+
*
|
|
31
|
+
* assertEquals(foundMiddleNames, ["William", "Martha"]);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function mapNotNullish<T, O>(
|
|
35
|
+
array: Iterable<T>,
|
|
36
|
+
transformer: (el: T) => O,
|
|
37
|
+
): NonNullable<O>[] {
|
|
38
|
+
const result: NonNullable<O>[] = [];
|
|
39
|
+
|
|
40
|
+
for (const element of array) {
|
|
41
|
+
const transformedElement = transformer(element);
|
|
42
|
+
|
|
43
|
+
if (transformedElement !== undefined && transformedElement !== null) {
|
|
44
|
+
result.push(transformedElement as NonNullable<O>);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Applies the given transformer to all values in the given record and returns a
|
|
6
|
+
* new record containing the resulting keys associated to the last value that
|
|
7
|
+
* produced them.
|
|
8
|
+
*
|
|
9
|
+
* @typeParam T The type of the values in the input record.
|
|
10
|
+
* @typeParam O The type of the values in the output record.
|
|
11
|
+
* @typeParam K The type of the keys in the input and output records.
|
|
12
|
+
*
|
|
13
|
+
* @param record The record to map values from.
|
|
14
|
+
* @param transformer The function to transform each value.
|
|
15
|
+
*
|
|
16
|
+
* @returns A new record with all values transformed by the given transformer.
|
|
17
|
+
*
|
|
18
|
+
* @example Basic usage
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { mapValues } from "@std/collections/map-values";
|
|
21
|
+
* import { assertEquals } from "@std/assert";
|
|
22
|
+
*
|
|
23
|
+
* const usersById = {
|
|
24
|
+
* a5ec: { name: "Mischa" },
|
|
25
|
+
* de4f: { name: "Kim" },
|
|
26
|
+
* };
|
|
27
|
+
* const namesById = mapValues(usersById, (user) => user.name);
|
|
28
|
+
*
|
|
29
|
+
* assertEquals(
|
|
30
|
+
* namesById,
|
|
31
|
+
* {
|
|
32
|
+
* a5ec: "Mischa",
|
|
33
|
+
* de4f: "Kim",
|
|
34
|
+
* },
|
|
35
|
+
* );
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function mapValues<T, O, K extends string>(
|
|
39
|
+
record: Readonly<Record<K, T>>,
|
|
40
|
+
transformer: (value: T, key: K) => O,
|
|
41
|
+
): Record<K, O>;
|
|
42
|
+
/**
|
|
43
|
+
* Applies the given transformer to all values in the given record and returns a
|
|
44
|
+
* new record containing the resulting keys associated to the last value that
|
|
45
|
+
* produced them.
|
|
46
|
+
*
|
|
47
|
+
* @typeParam T The type of the values in the input record.
|
|
48
|
+
* @typeParam O The type of the values in the output record.
|
|
49
|
+
* @typeParam K The type of the keys in the input and output records.
|
|
50
|
+
*
|
|
51
|
+
* @param record The record to map values from.
|
|
52
|
+
* @param transformer The function to transform each value.
|
|
53
|
+
*
|
|
54
|
+
* @returns A new record with all values transformed by the given transformer.
|
|
55
|
+
*
|
|
56
|
+
* @example Basic usage
|
|
57
|
+
* ```ts
|
|
58
|
+
* import { mapValues } from "@std/collections/map-values";
|
|
59
|
+
* import { assertEquals } from "@std/assert";
|
|
60
|
+
*
|
|
61
|
+
* const usersById = {
|
|
62
|
+
* "a5ec": { name: "Mischa" },
|
|
63
|
+
* "de4f": { name: "Kim" },
|
|
64
|
+
* };
|
|
65
|
+
* const namesById = mapValues(usersById, (user) => user.name);
|
|
66
|
+
*
|
|
67
|
+
* assertEquals(
|
|
68
|
+
* namesById,
|
|
69
|
+
* {
|
|
70
|
+
* "a5ec": "Mischa",
|
|
71
|
+
* "de4f": "Kim",
|
|
72
|
+
* },
|
|
73
|
+
* );
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export function mapValues<T, O, K extends string>(
|
|
77
|
+
record: Readonly<Partial<Record<K, T>>>,
|
|
78
|
+
transformer: (value: T, key: K) => O,
|
|
79
|
+
): Partial<Record<K, O>>;
|
|
80
|
+
export function mapValues<T, O, K extends string>(
|
|
81
|
+
record: Record<K, T>,
|
|
82
|
+
transformer: (value: T, key: K) => O,
|
|
83
|
+
// deno-lint-ignore no-explicit-any
|
|
84
|
+
): any {
|
|
85
|
+
// deno-lint-ignore no-explicit-any
|
|
86
|
+
const result: any = {};
|
|
87
|
+
const entries = Object.entries<T>(record);
|
|
88
|
+
|
|
89
|
+
for (const [key, value] of entries) {
|
|
90
|
+
const mappedValue = transformer(value, key as K);
|
|
91
|
+
|
|
92
|
+
result[key] = mappedValue;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns the first element that is the largest value of the given function or
|
|
6
|
+
* undefined if there are no elements.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T The type of the elements in the array.
|
|
9
|
+
*
|
|
10
|
+
* @param array The array to find the maximum element in.
|
|
11
|
+
* @param selector The function to get the value to compare from each element.
|
|
12
|
+
*
|
|
13
|
+
* @returns The first element that is the largest value of the given function or
|
|
14
|
+
* undefined if there are no elements.
|
|
15
|
+
*
|
|
16
|
+
* @example Basic usage
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { maxBy } from "@std/collections/max-by";
|
|
19
|
+
* import { assertEquals } from "@std/assert";
|
|
20
|
+
*
|
|
21
|
+
* const people = [
|
|
22
|
+
* { name: "Anna", age: 34 },
|
|
23
|
+
* { name: "Kim", age: 42 },
|
|
24
|
+
* { name: "John", age: 23 },
|
|
25
|
+
* ];
|
|
26
|
+
*
|
|
27
|
+
* const personWithMaxAge = maxBy(people, (person) => person.age);
|
|
28
|
+
*
|
|
29
|
+
* assertEquals(personWithMaxAge, { name: "Kim", age: 42 });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function maxBy<T>(
|
|
33
|
+
array: Iterable<T>,
|
|
34
|
+
selector: (el: T) => number,
|
|
35
|
+
): T | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Returns the first element that is the largest value of the given function or
|
|
38
|
+
* undefined if there are no elements.
|
|
39
|
+
*
|
|
40
|
+
* @typeParam T The type of the elements in the array.
|
|
41
|
+
*
|
|
42
|
+
* @param array The array to find the maximum element in.
|
|
43
|
+
* @param selector The function to get the value to compare from each element.
|
|
44
|
+
*
|
|
45
|
+
* @returns The first element that is the largest value of the given function or
|
|
46
|
+
* undefined if there are no elements.
|
|
47
|
+
*
|
|
48
|
+
* @example Basic usage
|
|
49
|
+
* ```ts
|
|
50
|
+
* import { maxBy } from "@std/collections/max-by";
|
|
51
|
+
* import { assertEquals } from "@std/assert";
|
|
52
|
+
*
|
|
53
|
+
* const people = [
|
|
54
|
+
* { name: "Anna" },
|
|
55
|
+
* { name: "Kim" },
|
|
56
|
+
* { name: "John" },
|
|
57
|
+
* ];
|
|
58
|
+
*
|
|
59
|
+
* const personWithMaxName = maxBy(people, (person) => person.name);
|
|
60
|
+
*
|
|
61
|
+
* assertEquals(personWithMaxName, { name: "Kim" });
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export function maxBy<T>(
|
|
65
|
+
array: Iterable<T>,
|
|
66
|
+
selector: (el: T) => string,
|
|
67
|
+
): T | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Returns the first element that is the largest value of the given function or
|
|
70
|
+
* undefined if there are no elements.
|
|
71
|
+
*
|
|
72
|
+
* @typeParam T The type of the elements in the array.
|
|
73
|
+
*
|
|
74
|
+
* @param array The array to find the maximum element in.
|
|
75
|
+
* @param selector The function to get the value to compare from each element.
|
|
76
|
+
*
|
|
77
|
+
* @returns The first element that is the largest value of the given function or
|
|
78
|
+
* undefined if there are no elements.
|
|
79
|
+
*
|
|
80
|
+
* @example Basic usage
|
|
81
|
+
* ```ts
|
|
82
|
+
* import { maxBy } from "@std/collections/max-by";
|
|
83
|
+
* import { assertEquals } from "@std/assert";
|
|
84
|
+
*
|
|
85
|
+
* const people = [
|
|
86
|
+
* { name: "Anna", age: 34n },
|
|
87
|
+
* { name: "Kim", age: 42n },
|
|
88
|
+
* { name: "John", age: 23n },
|
|
89
|
+
* ];
|
|
90
|
+
*
|
|
91
|
+
* const personWithMaxAge = maxBy(people, (person) => person.age);
|
|
92
|
+
*
|
|
93
|
+
* assertEquals(personWithMaxAge, { name: "Kim", age: 42n });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export function maxBy<T>(
|
|
97
|
+
array: Iterable<T>,
|
|
98
|
+
selector: (el: T) => bigint,
|
|
99
|
+
): T | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Returns the first element that is the largest value of the given function or
|
|
102
|
+
* undefined if there are no elements.
|
|
103
|
+
*
|
|
104
|
+
* @typeParam T The type of the elements in the array.
|
|
105
|
+
*
|
|
106
|
+
* @param array The array to find the maximum element in.
|
|
107
|
+
* @param selector The function to get the value to compare from each element.
|
|
108
|
+
*
|
|
109
|
+
* @returns The first element that is the largest value of the given function or
|
|
110
|
+
* undefined if there are no elements.
|
|
111
|
+
*
|
|
112
|
+
* @example Basic usage
|
|
113
|
+
* ```ts
|
|
114
|
+
* import { maxBy } from "@std/collections/max-by";
|
|
115
|
+
* import { assertEquals } from "@std/assert";
|
|
116
|
+
*
|
|
117
|
+
* const people = [
|
|
118
|
+
* { name: "Anna", startedAt: new Date("2020-01-01") },
|
|
119
|
+
* { name: "Kim", startedAt: new Date("2021-03-01") },
|
|
120
|
+
* { name: "John", startedAt: new Date("2020-03-01") },
|
|
121
|
+
* ];
|
|
122
|
+
*
|
|
123
|
+
* const personWithLastStartedAt = maxBy(people, (person) => person.startedAt);
|
|
124
|
+
*
|
|
125
|
+
* assertEquals(personWithLastStartedAt, { name: "Kim", startedAt: new Date("2021-03-01") });
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
export function maxBy<T>(
|
|
129
|
+
array: Iterable<T>,
|
|
130
|
+
selector: (el: T) => Date,
|
|
131
|
+
): T | undefined;
|
|
132
|
+
export function maxBy<T>(
|
|
133
|
+
array: Iterable<T>,
|
|
134
|
+
selector:
|
|
135
|
+
| ((el: T) => number)
|
|
136
|
+
| ((el: T) => string)
|
|
137
|
+
| ((el: T) => bigint)
|
|
138
|
+
| ((el: T) => Date),
|
|
139
|
+
): T | undefined {
|
|
140
|
+
let max: T | undefined;
|
|
141
|
+
let maxValue: ReturnType<typeof selector> | undefined;
|
|
142
|
+
|
|
143
|
+
for (const current of array) {
|
|
144
|
+
const currentValue = selector(current);
|
|
145
|
+
|
|
146
|
+
if (maxValue === undefined || currentValue > maxValue) {
|
|
147
|
+
max = current;
|
|
148
|
+
maxValue = currentValue;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return max;
|
|
153
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Applies the given selector to all elements of the provided collection and
|
|
6
|
+
* returns the max value of all elements. If an empty array is provided the
|
|
7
|
+
* function will return undefined.
|
|
8
|
+
*
|
|
9
|
+
* @typeParam T The type of the elements in the array.
|
|
10
|
+
*
|
|
11
|
+
* @param array The array to find the maximum element in.
|
|
12
|
+
* @param selector The function to get the value to compare from each element.
|
|
13
|
+
*
|
|
14
|
+
* @returns The largest value of the given function or undefined if there are no
|
|
15
|
+
* elements.
|
|
16
|
+
*
|
|
17
|
+
* @example Basic usage
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { maxOf } from "@std/collections/max-of";
|
|
20
|
+
* import { assertEquals } from "@std/assert";
|
|
21
|
+
*
|
|
22
|
+
* const inventory = [
|
|
23
|
+
* { name: "mustard", count: 2 },
|
|
24
|
+
* { name: "soy", count: 4 },
|
|
25
|
+
* { name: "tomato", count: 32 },
|
|
26
|
+
* ];
|
|
27
|
+
*
|
|
28
|
+
* const maxCount = maxOf(inventory, (item) => item.count);
|
|
29
|
+
*
|
|
30
|
+
* assertEquals(maxCount, 32);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function maxOf<T>(
|
|
34
|
+
array: Iterable<T>,
|
|
35
|
+
selector: (el: T) => number,
|
|
36
|
+
): number | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Applies the given selector to all elements of the provided collection and
|
|
39
|
+
* returns the max value of all elements. If an empty array is provided the
|
|
40
|
+
* function will return undefined.
|
|
41
|
+
*
|
|
42
|
+
* @typeParam T The type of the elements in the array.
|
|
43
|
+
*
|
|
44
|
+
* @param array The array to find the maximum element in.
|
|
45
|
+
* @param selector The function to get the value to compare from each element.
|
|
46
|
+
*
|
|
47
|
+
* @returns The first element that is the largest value of the given function or
|
|
48
|
+
* undefined if there are no elements.
|
|
49
|
+
*
|
|
50
|
+
* @example Basic usage
|
|
51
|
+
* ```ts
|
|
52
|
+
* import { maxOf } from "@std/collections/max-of";
|
|
53
|
+
* import { assertEquals } from "@std/assert";
|
|
54
|
+
*
|
|
55
|
+
* const inventory = [
|
|
56
|
+
* { name: "mustard", count: 2n },
|
|
57
|
+
* { name: "soy", count: 4n },
|
|
58
|
+
* { name: "tomato", count: 32n },
|
|
59
|
+
* ];
|
|
60
|
+
*
|
|
61
|
+
* const maxCount = maxOf(inventory, (i) => i.count);
|
|
62
|
+
*
|
|
63
|
+
* assertEquals(maxCount, 32n);
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export function maxOf<T>(
|
|
67
|
+
array: Iterable<T>,
|
|
68
|
+
selector: (el: T) => bigint,
|
|
69
|
+
): bigint | undefined;
|
|
70
|
+
export function maxOf<T, S extends ((el: T) => number) | ((el: T) => bigint)>(
|
|
71
|
+
array: Iterable<T>,
|
|
72
|
+
selector: S,
|
|
73
|
+
): ReturnType<S> | undefined {
|
|
74
|
+
let maximumValue: ReturnType<S> | undefined;
|
|
75
|
+
|
|
76
|
+
for (const element of array) {
|
|
77
|
+
const currentValue = selector(element) as ReturnType<S>;
|
|
78
|
+
|
|
79
|
+
if (maximumValue === undefined || currentValue > maximumValue) {
|
|
80
|
+
maximumValue = currentValue;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (Number.isNaN(currentValue)) {
|
|
85
|
+
return currentValue;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return maximumValue;
|
|
90
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns the first element having the largest value according to the provided
|
|
6
|
+
* comparator or undefined if there are no elements.
|
|
7
|
+
*
|
|
8
|
+
* The comparator is expected to work exactly like one passed to `Array.sort`,
|
|
9
|
+
* which means that `comparator(a, b)` should return a negative number if
|
|
10
|
+
* `a < b`, a positive number if `a > b` and `0` if `a === b`.
|
|
11
|
+
*
|
|
12
|
+
* @typeParam T The type of the elements in the array.
|
|
13
|
+
*
|
|
14
|
+
* @param array The array to find the maximum element in.
|
|
15
|
+
* @param comparator The function to compare elements.
|
|
16
|
+
*
|
|
17
|
+
* @returns The first element that is the largest value of the given function or
|
|
18
|
+
* undefined if there are no elements.
|
|
19
|
+
*
|
|
20
|
+
* @example Basic usage
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { maxWith } from "@std/collections/max-with";
|
|
23
|
+
* import { assertEquals } from "@std/assert";
|
|
24
|
+
*
|
|
25
|
+
* const people = ["Kim", "Anna", "John", "Arthur"];
|
|
26
|
+
* const largestName = maxWith(people, (a, b) => a.length - b.length);
|
|
27
|
+
*
|
|
28
|
+
* assertEquals(largestName, "Arthur");
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function maxWith<T>(
|
|
32
|
+
array: Iterable<T>,
|
|
33
|
+
comparator: (a: T, b: T) => number,
|
|
34
|
+
): T | undefined {
|
|
35
|
+
let max: T | undefined;
|
|
36
|
+
let isFirst = true;
|
|
37
|
+
|
|
38
|
+
for (const current of array) {
|
|
39
|
+
if (isFirst || comparator(current, <T> max) > 0) {
|
|
40
|
+
max = current;
|
|
41
|
+
isFirst = false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return max;
|
|
46
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns the first element that is the smallest value of the given function or
|
|
6
|
+
* undefined if there are no elements.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T The type of the elements in the array.
|
|
9
|
+
*
|
|
10
|
+
* @param array The array to find the minimum element in.
|
|
11
|
+
* @param selector The function to get the value to compare from each element.
|
|
12
|
+
*
|
|
13
|
+
* @returns The first element that is the smallest value of the given function
|
|
14
|
+
* or undefined if there are no elements.
|
|
15
|
+
*
|
|
16
|
+
* @example Basic usage
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { minBy } from "@std/collections/min-by";
|
|
19
|
+
* import { assertEquals } from "@std/assert";
|
|
20
|
+
*
|
|
21
|
+
* const people = [
|
|
22
|
+
* { name: "Anna", age: 34 },
|
|
23
|
+
* { name: "Kim", age: 42 },
|
|
24
|
+
* { name: "John", age: 23 },
|
|
25
|
+
* ];
|
|
26
|
+
*
|
|
27
|
+
* const personWithMinAge = minBy(people, (i) => i.age);
|
|
28
|
+
*
|
|
29
|
+
* assertEquals(personWithMinAge, { name: "John", age: 23 });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function minBy<T>(
|
|
33
|
+
array: Iterable<T>,
|
|
34
|
+
selector: (el: T) => number,
|
|
35
|
+
): T | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Returns the first element that is the smallest value of the given function or
|
|
38
|
+
* undefined if there are no elements.
|
|
39
|
+
*
|
|
40
|
+
* @typeParam T The type of the elements in the array.
|
|
41
|
+
*
|
|
42
|
+
* @param array The array to find the minimum element in.
|
|
43
|
+
* @param selector The function to get the value to compare from each element.
|
|
44
|
+
*
|
|
45
|
+
* @returns The first element that is the smallest value of the given function
|
|
46
|
+
* or undefined if there are no elements.
|
|
47
|
+
*
|
|
48
|
+
* @example Basic usage
|
|
49
|
+
* ```ts
|
|
50
|
+
* import { minBy } from "@std/collections/min-by";
|
|
51
|
+
* import { assertEquals } from "@std/assert";
|
|
52
|
+
*
|
|
53
|
+
* const people = [
|
|
54
|
+
* { name: "Anna" },
|
|
55
|
+
* { name: "Kim" },
|
|
56
|
+
* { name: "John" },
|
|
57
|
+
* ];
|
|
58
|
+
*
|
|
59
|
+
* const personWithMinName = minBy(people, (person) => person.name);
|
|
60
|
+
*
|
|
61
|
+
* assertEquals(personWithMinName, { name: "Anna" });
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export function minBy<T>(
|
|
65
|
+
array: Iterable<T>,
|
|
66
|
+
selector: (el: T) => string,
|
|
67
|
+
): T | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Returns the first element that is the smallest value of the given function or
|
|
70
|
+
* undefined if there are no elements.
|
|
71
|
+
*
|
|
72
|
+
* @typeParam T The type of the elements in the array.
|
|
73
|
+
*
|
|
74
|
+
* @param array The array to find the minimum element in.
|
|
75
|
+
* @param selector The function to get the value to compare from each element.
|
|
76
|
+
*
|
|
77
|
+
* @returns The first element that is the smallest value of the given function
|
|
78
|
+
* or undefined if there are no elements.
|
|
79
|
+
*
|
|
80
|
+
* @example Basic usage
|
|
81
|
+
* ```ts
|
|
82
|
+
* import { minBy } from "@std/collections/min-by";
|
|
83
|
+
* import { assertEquals } from "@std/assert";
|
|
84
|
+
*
|
|
85
|
+
* const people = [
|
|
86
|
+
* { name: "Anna", age: 34n },
|
|
87
|
+
* { name: "Kim", age: 42n },
|
|
88
|
+
* { name: "John", age: 23n },
|
|
89
|
+
* ];
|
|
90
|
+
*
|
|
91
|
+
* const personWithMinAge = minBy(people, (i) => i.age);
|
|
92
|
+
*
|
|
93
|
+
* assertEquals(personWithMinAge, { name: "John", age: 23n });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export function minBy<T>(
|
|
97
|
+
array: Iterable<T>,
|
|
98
|
+
selector: (el: T) => bigint,
|
|
99
|
+
): T | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Returns the first element that is the smallest value of the given function or
|
|
102
|
+
* undefined if there are no elements.
|
|
103
|
+
*
|
|
104
|
+
* @typeParam T The type of the elements in the array.
|
|
105
|
+
*
|
|
106
|
+
* @param array The array to find the minimum element in.
|
|
107
|
+
* @param selector The function to get the value to compare from each element.
|
|
108
|
+
*
|
|
109
|
+
* @returns The first element that is the smallest value of the given function
|
|
110
|
+
* or undefined if there are no elements.
|
|
111
|
+
*
|
|
112
|
+
* @example Basic usage
|
|
113
|
+
* ```ts
|
|
114
|
+
* import { minBy } from "@std/collections/min-by";
|
|
115
|
+
* import { assertEquals } from "@std/assert";
|
|
116
|
+
*
|
|
117
|
+
* const people = [
|
|
118
|
+
* { name: "Anna", startedAt: new Date("2020-01-01") },
|
|
119
|
+
* { name: "Kim", startedAt: new Date("2020-03-01") },
|
|
120
|
+
* { name: "John", startedAt: new Date("2019-01-01") },
|
|
121
|
+
* ];
|
|
122
|
+
*
|
|
123
|
+
* const personWithMinStartedAt = minBy(people, (person) => person.startedAt);
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export function minBy<T>(
|
|
127
|
+
array: Iterable<T>,
|
|
128
|
+
selector: (el: T) => Date,
|
|
129
|
+
): T | undefined;
|
|
130
|
+
export function minBy<T>(
|
|
131
|
+
array: Iterable<T>,
|
|
132
|
+
selector:
|
|
133
|
+
| ((el: T) => number)
|
|
134
|
+
| ((el: T) => string)
|
|
135
|
+
| ((el: T) => bigint)
|
|
136
|
+
| ((el: T) => Date),
|
|
137
|
+
): T | undefined {
|
|
138
|
+
let min: T | undefined;
|
|
139
|
+
let minValue: ReturnType<typeof selector> | undefined;
|
|
140
|
+
|
|
141
|
+
for (const current of array) {
|
|
142
|
+
const currentValue = selector(current);
|
|
143
|
+
|
|
144
|
+
if (minValue === undefined || currentValue < minValue) {
|
|
145
|
+
min = current;
|
|
146
|
+
minValue = currentValue;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return min;
|
|
151
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Applies the given selector to all elements of the given collection and
|
|
6
|
+
* returns the min value of all elements. If an empty array is provided the
|
|
7
|
+
* function will return undefined.
|
|
8
|
+
*
|
|
9
|
+
* @typeParam T The type of the elements in the array.
|
|
10
|
+
*
|
|
11
|
+
* @param array The array to find the minimum element in.
|
|
12
|
+
* @param selector The function to get the value to compare from each element.
|
|
13
|
+
*
|
|
14
|
+
* @returns The smallest value of the given function or undefined if there are
|
|
15
|
+
* no elements.
|
|
16
|
+
*
|
|
17
|
+
* @example Basic usage
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { minOf } from "@std/collections/min-of";
|
|
20
|
+
* import { assertEquals } from "@std/assert";
|
|
21
|
+
*
|
|
22
|
+
* const inventory = [
|
|
23
|
+
* { name: "mustard", count: 2 },
|
|
24
|
+
* { name: "soy", count: 4 },
|
|
25
|
+
* { name: "tomato", count: 32 },
|
|
26
|
+
* ];
|
|
27
|
+
*
|
|
28
|
+
* const minCount = minOf(inventory, (item) => item.count);
|
|
29
|
+
*
|
|
30
|
+
* assertEquals(minCount, 2);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function minOf<T>(
|
|
34
|
+
array: Iterable<T>,
|
|
35
|
+
selector: (el: T) => number,
|
|
36
|
+
): number | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Applies the given selector to all elements of the given collection and
|
|
39
|
+
* returns the min value of all elements. If an empty array is provided the
|
|
40
|
+
* function will return undefined.
|
|
41
|
+
*
|
|
42
|
+
* @typeParam T The type of the elements in the array.
|
|
43
|
+
*
|
|
44
|
+
* @param array The array to find the minimum element in.
|
|
45
|
+
* @param selector The function to get the value to compare from each element.
|
|
46
|
+
*
|
|
47
|
+
* @returns The first element that is the smallest value of the given function
|
|
48
|
+
* or undefined if there are no elements.
|
|
49
|
+
*
|
|
50
|
+
* @example Basic usage
|
|
51
|
+
* ```ts
|
|
52
|
+
* import { minOf } from "@std/collections/min-of";
|
|
53
|
+
* import { assertEquals } from "@std/assert";
|
|
54
|
+
*
|
|
55
|
+
* const inventory = [
|
|
56
|
+
* { name: "mustard", count: 2n },
|
|
57
|
+
* { name: "soy", count: 4n },
|
|
58
|
+
* { name: "tomato", count: 32n },
|
|
59
|
+
* ];
|
|
60
|
+
*
|
|
61
|
+
* const minCount = minOf(inventory, (item) => item.count);
|
|
62
|
+
*
|
|
63
|
+
* assertEquals(minCount, 2n);
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export function minOf<T>(
|
|
67
|
+
array: Iterable<T>,
|
|
68
|
+
selector: (el: T) => bigint,
|
|
69
|
+
): bigint | undefined;
|
|
70
|
+
export function minOf<T, S extends ((el: T) => number) | ((el: T) => bigint)>(
|
|
71
|
+
array: Iterable<T>,
|
|
72
|
+
selector: S,
|
|
73
|
+
): ReturnType<S> | undefined {
|
|
74
|
+
let minimumValue: ReturnType<S> | undefined;
|
|
75
|
+
|
|
76
|
+
for (const element of array) {
|
|
77
|
+
const currentValue = selector(element) as ReturnType<S>;
|
|
78
|
+
|
|
79
|
+
if (minimumValue === undefined || currentValue < minimumValue) {
|
|
80
|
+
minimumValue = currentValue;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (Number.isNaN(currentValue)) {
|
|
85
|
+
return currentValue;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return minimumValue;
|
|
90
|
+
}
|