structured-outputs 0.1.0-beta.2 → 0.1.0-beta.21
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.d.ts +18 -11
- package/esm/ResponseFormat.d.ts.map +1 -1
- package/esm/ResponseFormat.js +57 -5
- package/esm/ResponseFormat.js.map +1 -1
- package/esm/Tool.d.ts +13 -0
- package/esm/Tool.d.ts.map +1 -0
- package/esm/Tool.js +17 -0
- package/esm/Tool.js.map +1 -0
- package/esm/_dnt.polyfills.d.ts +12 -0
- package/esm/_dnt.polyfills.d.ts.map +1 -0
- package/esm/_dnt.polyfills.js +16 -0
- package/esm/_dnt.polyfills.js.map +1 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/_utils.d.ts +6 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/_utils.d.ts.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.d.ts +41 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/aggregate_groups.d.ts.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.d.ts +37 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/associate_by.d.ts.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.d.ts +33 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/associate_with.d.ts.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.d.ts +38 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/chunk.d.ts.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.d.ts +322 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/deep_merge.d.ts.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.d.ts +23 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/distinct.d.ts.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.d.ts +26 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/distinct_by.d.ts.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.d.ts +26 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/drop_last_while.d.ts.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.d.ts +25 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/drop_while.d.ts.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.d.ts +32 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/filter_entries.d.ts.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.d.ts +36 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/filter_keys.d.ts.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.d.ts +35 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/filter_values.d.ts.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.d.ts +31 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/find_single.d.ts.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.d.ts +32 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/first_not_nullish_of.d.ts.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.d.ts +29 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/includes_value.d.ts.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.d.ts +25 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/intersect.d.ts.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.d.ts +29 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/invert.d.ts.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.d.ts +34 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/invert_by.d.ts.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.d.ts +75 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/join_to_string.d.ts.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.d.ts +37 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_entries.d.ts.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.d.ts +33 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_keys.d.ts.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.d.ts +32 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_not_nullish.d.ts.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.d.ts +71 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/map_values.d.ts.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.d.ts +117 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/max_by.d.ts.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.d.ts +61 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/max_of.d.ts.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.d.ts +29 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/max_with.d.ts.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.d.ts +115 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/min_by.d.ts.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.d.ts +61 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/min_of.d.ts.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.d.ts +25 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/min_with.d.ts.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.d.ts +73 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/mod.d.ts.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.d.ts +24 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/omit.d.ts.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.d.ts +60 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/partition.d.ts.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.d.ts +39 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/partition_entries.d.ts.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.d.ts +27 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/permutations.d.ts.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.d.ts +25 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/pick.d.ts.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.d.ts +35 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/reduce_groups.d.ts.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.d.ts +27 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/running_reduce.d.ts.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.d.ts +24 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sample.d.ts.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.d.ts +66 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sliding_windows.d.ts.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.d.ts +161 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sort_by.d.ts.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.d.ts +29 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/sum_of.d.ts.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.d.ts +27 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/take_last_while.d.ts.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.d.ts +30 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/take_while.d.ts.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.d.ts +24 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/union.d.ts.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.d.ts +32 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/unzip.d.ts.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.d.ts +23 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/without_all.d.ts.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.d.ts +34 -0
- package/esm/deps/jsr.io/@std/collections/1.0.9/zip.d.ts.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/mod.d.ts +3 -14
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +3 -10
- package/esm/mod.js.map +1 -1
- package/esm/oai.d.ts +5 -0
- package/esm/oai.d.ts.map +1 -0
- package/esm/oai.js +2 -0
- package/esm/oai.js.map +1 -0
- package/esm/types/Ref.d.ts +4 -0
- package/esm/types/Ref.d.ts.map +1 -0
- package/esm/types/Ref.js +11 -0
- package/esm/types/Ref.js.map +1 -0
- package/esm/types/RootTy.d.ts +8 -0
- package/esm/types/RootTy.d.ts.map +1 -0
- package/esm/types/RootTy.js +19 -0
- package/esm/types/RootTy.js.map +1 -0
- package/esm/types/Ty.d.ts +27 -0
- package/esm/types/Ty.d.ts.map +1 -0
- package/esm/types/Ty.js +17 -0
- package/esm/types/Ty.js.map +1 -0
- package/esm/types/array.d.ts +3 -0
- package/esm/types/array.d.ts.map +1 -0
- package/esm/types/array.js +9 -0
- package/esm/types/array.js.map +1 -0
- package/esm/types/constant.d.ts +3 -0
- package/esm/types/constant.d.ts.map +1 -0
- package/esm/types/constant.js +8 -0
- package/esm/types/constant.js.map +1 -0
- package/esm/types/constantUnion.d.ts +3 -0
- package/esm/types/constantUnion.d.ts.map +1 -0
- package/esm/types/constantUnion.js +25 -0
- package/esm/types/constantUnion.js.map +1 -0
- package/esm/types/leaves.d.ts +6 -0
- package/esm/types/leaves.d.ts.map +1 -0
- package/esm/types/leaves.js +18 -0
- package/esm/types/leaves.js.map +1 -0
- package/esm/types/mod.d.ts +11 -0
- package/esm/types/mod.d.ts.map +1 -0
- package/esm/types/mod.js +11 -0
- package/esm/types/mod.js.map +1 -0
- package/esm/types/object.d.ts +6 -0
- package/esm/types/object.d.ts.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.d.ts +7 -0
- package/esm/types/std/Option.d.ts.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.d.ts +7 -0
- package/esm/types/std/Wrapper.d.ts.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.d.ts +3 -0
- package/esm/types/std/mod.d.ts.map +1 -0
- package/esm/types/std/mod.js +3 -0
- package/esm/types/std/mod.js.map +1 -0
- package/esm/types/taggedUnion.d.ts +8 -0
- package/esm/types/taggedUnion.d.ts.map +1 -0
- package/esm/types/taggedUnion.js +20 -0
- package/esm/types/taggedUnion.js.map +1 -0
- package/esm/util/phantoms.d.ts +2 -0
- package/esm/util/phantoms.d.ts.map +1 -0
- package/esm/util/phantoms.js +4 -0
- package/esm/util/phantoms.js.map +1 -0
- package/esm/util/recombineTaggedTemplateArgs.d.ts +2 -0
- package/esm/util/recombineTaggedTemplateArgs.d.ts.map +1 -0
- package/esm/util/recombineTaggedTemplateArgs.js +4 -0
- package/esm/util/recombineTaggedTemplateArgs.js.map +1 -0
- package/package.json +7 -9
- package/src/ResponseFormat.ts +80 -22
- package/src/Tool.ts +38 -0
- package/src/_dnt.polyfills.ts +27 -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/mod.ts +3 -18
- package/src/oai.ts +5 -0
- 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/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/_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/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,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
|
+
}
|
@@ -0,0 +1,42 @@
|
|
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 smallest value according to the provided
|
6
|
+
* comparator or 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 comparator The function to compare elements.
|
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 { minWith } from "@std/collections/min-with";
|
19
|
+
* import { assertEquals } from "@std/assert";
|
20
|
+
*
|
21
|
+
* const people = ["Kim", "Anna", "John"];
|
22
|
+
* const smallestName = minWith(people, (a, b) => a.length - b.length);
|
23
|
+
*
|
24
|
+
* assertEquals(smallestName, "Kim");
|
25
|
+
* ```
|
26
|
+
*/
|
27
|
+
export function minWith<T>(
|
28
|
+
array: Iterable<T>,
|
29
|
+
comparator: (a: T, b: T) => number,
|
30
|
+
): T | undefined {
|
31
|
+
let min: T | undefined;
|
32
|
+
let isFirst = true;
|
33
|
+
|
34
|
+
for (const current of array) {
|
35
|
+
if (isFirst || comparator(current, <T> min) < 0) {
|
36
|
+
min = current;
|
37
|
+
isFirst = false;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
return min;
|
42
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Pure functions for common tasks around collection types like arrays and
|
6
|
+
* objects.
|
7
|
+
*
|
8
|
+
* Inspired by
|
9
|
+
* {@link https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/ | Kotlin's Collections}
|
10
|
+
* package and {@link https://lodash.com/ | Lodash}.
|
11
|
+
*
|
12
|
+
* ```ts
|
13
|
+
* import { intersect, sample, pick } from "@std/collections";
|
14
|
+
* import { assertEquals, assertArrayIncludes } from "@std/assert";
|
15
|
+
*
|
16
|
+
* const lisaInterests = ["Cooking", "Music", "Hiking"];
|
17
|
+
* const kimInterests = ["Music", "Tennis", "Cooking"];
|
18
|
+
*
|
19
|
+
* assertEquals(intersect(lisaInterests, kimInterests), ["Cooking", "Music"]);
|
20
|
+
*
|
21
|
+
* assertArrayIncludes(lisaInterests, [sample(lisaInterests)]);
|
22
|
+
*
|
23
|
+
* const cat = { name: "Lulu", age: 3, breed: "Ragdoll" };
|
24
|
+
*
|
25
|
+
* assertEquals(pick(cat, ["name", "breed"]), { name: "Lulu", breed: "Ragdoll"});
|
26
|
+
* ```
|
27
|
+
*
|
28
|
+
* @module
|
29
|
+
*/
|
30
|
+
|
31
|
+
export * from "./aggregate_groups.js";
|
32
|
+
export * from "./associate_by.js";
|
33
|
+
export * from "./associate_with.js";
|
34
|
+
export * from "./chunk.js";
|
35
|
+
export * from "./deep_merge.js";
|
36
|
+
export * from "./distinct.js";
|
37
|
+
export * from "./distinct_by.js";
|
38
|
+
export * from "./drop_last_while.js";
|
39
|
+
export * from "./drop_while.js";
|
40
|
+
export * from "./filter_entries.js";
|
41
|
+
export * from "./filter_keys.js";
|
42
|
+
export * from "./filter_values.js";
|
43
|
+
export * from "./find_single.js";
|
44
|
+
export * from "./first_not_nullish_of.js";
|
45
|
+
export * from "./includes_value.js";
|
46
|
+
export * from "./intersect.js";
|
47
|
+
export * from "./invert_by.js";
|
48
|
+
export * from "./invert.js";
|
49
|
+
export * from "./join_to_string.js";
|
50
|
+
export * from "./map_entries.js";
|
51
|
+
export * from "./map_keys.js";
|
52
|
+
export * from "./map_not_nullish.js";
|
53
|
+
export * from "./map_values.js";
|
54
|
+
export * from "./max_by.js";
|
55
|
+
export * from "./max_of.js";
|
56
|
+
export * from "./max_with.js";
|
57
|
+
export * from "./min_by.js";
|
58
|
+
export * from "./min_of.js";
|
59
|
+
export * from "./min_with.js";
|
60
|
+
export * from "./omit.js";
|
61
|
+
export * from "./partition.js";
|
62
|
+
export * from "./partition_entries.js";
|
63
|
+
export * from "./permutations.js";
|
64
|
+
export * from "./pick.js";
|
65
|
+
export * from "./reduce_groups.js";
|
66
|
+
export * from "./running_reduce.js";
|
67
|
+
export * from "./sample.js";
|
68
|
+
export * from "./sliding_windows.js";
|
69
|
+
export * from "./sort_by.js";
|
70
|
+
export * from "./sum_of.js";
|
71
|
+
export * from "./take_last_while.js";
|
72
|
+
export * from "./take_while.js";
|
73
|
+
export * from "./union.js";
|
74
|
+
export * from "./unzip.js";
|
75
|
+
export * from "./without_all.js";
|
76
|
+
export * from "./zip.js";
|
@@ -0,0 +1,34 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Creates a new object by excluding the specified keys from the provided object.
|
6
|
+
*
|
7
|
+
* @typeParam T The type of the object.
|
8
|
+
* @typeParam K The type of the keys to omit.
|
9
|
+
*
|
10
|
+
* @param obj The object to omit keys from.
|
11
|
+
* @param keys The keys to omit from the object.
|
12
|
+
*
|
13
|
+
* @returns A new object with the specified keys omitted.
|
14
|
+
*
|
15
|
+
* @example Basic usage
|
16
|
+
* ```ts
|
17
|
+
* import { omit } from "@std/collections/omit";
|
18
|
+
* import { assertEquals } from "@std/assert";
|
19
|
+
*
|
20
|
+
* const obj = { a: 5, b: 6, c: 7, d: 8 };
|
21
|
+
* const omitted = omit(obj, ["a", "c"]);
|
22
|
+
*
|
23
|
+
* assertEquals(omitted, { b: 6, d: 8 });
|
24
|
+
* ```
|
25
|
+
*/
|
26
|
+
export function omit<T extends object, K extends keyof T>(
|
27
|
+
obj: Readonly<T>,
|
28
|
+
keys: readonly K[],
|
29
|
+
): Omit<T, K> {
|
30
|
+
const excludes = new Set(keys);
|
31
|
+
return Object.fromEntries(
|
32
|
+
Object.entries(obj).filter(([k, _]) => !excludes.has(k as K)),
|
33
|
+
) as Omit<T, K>;
|
34
|
+
}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Returns a tuple of two arrays with the first one containing all elements in
|
6
|
+
* the given array that match the given predicate and the second one containing
|
7
|
+
* all that do not.
|
8
|
+
*
|
9
|
+
* @typeParam T The type of the elements in the array.
|
10
|
+
*
|
11
|
+
* @param array The array to partition.
|
12
|
+
* @param predicate The predicate function to determine which array an element
|
13
|
+
* belongs to.
|
14
|
+
*
|
15
|
+
* @returns A tuple of two arrays. The first array contains all elements that
|
16
|
+
* match the predicate, the second contains all elements that do not.
|
17
|
+
*
|
18
|
+
* @example Basic usage
|
19
|
+
* ```ts
|
20
|
+
* import { partition } from "@std/collections/partition";
|
21
|
+
* import { assertEquals } from "@std/assert";
|
22
|
+
*
|
23
|
+
* const numbers = [5, 6, 7, 8, 9];
|
24
|
+
* const [even, odd] = partition(numbers, (it) => it % 2 === 0);
|
25
|
+
*
|
26
|
+
* assertEquals(even, [6, 8]);
|
27
|
+
* assertEquals(odd, [5, 7, 9]);
|
28
|
+
* ```
|
29
|
+
*/
|
30
|
+
export function partition<T>(
|
31
|
+
array: Iterable<T>,
|
32
|
+
predicate: (el: T) => boolean,
|
33
|
+
): [T[], T[]];
|
34
|
+
/**
|
35
|
+
* Returns a tuple of two arrays with the first one containing all elements in
|
36
|
+
* the given array that match the given predicate and the second one containing
|
37
|
+
* all that do not.
|
38
|
+
*
|
39
|
+
* This version of the function is a type-guard version of the function. It
|
40
|
+
* allows you to specify a type-guard predicate function that narrows the type
|
41
|
+
* of the elements in the array.
|
42
|
+
*
|
43
|
+
* @typeParam T The type of the elements in the array.
|
44
|
+
* @typeParam U The type of the elements that match the predicate.
|
45
|
+
*
|
46
|
+
* @param array The array to partition.
|
47
|
+
* @param predicate The type-guard predicate function to determine which array
|
48
|
+
* an element belongs to.
|
49
|
+
*
|
50
|
+
* @returns A tuple of two arrays. The first array contains all elements that
|
51
|
+
* match the predicate, the second contains all elements that do not.
|
52
|
+
*
|
53
|
+
* @example Basic usage
|
54
|
+
* ```ts
|
55
|
+
* import { partition } from "@std/collections/partition";
|
56
|
+
* import { assertEquals } from "@std/assert";
|
57
|
+
*
|
58
|
+
* const numbers = [5, 6, 7, 8, 9];
|
59
|
+
* const [even, odd] = partition(numbers, (it) => it % 2 === 0);
|
60
|
+
*
|
61
|
+
* assertEquals(even, [6, 8]);
|
62
|
+
* assertEquals(odd, [5, 7, 9]);
|
63
|
+
* ```
|
64
|
+
*/
|
65
|
+
export function partition<T, U extends T>(
|
66
|
+
array: Iterable<T>,
|
67
|
+
predicate: (el: T) => el is U,
|
68
|
+
): [U[], Exclude<T, U>[]];
|
69
|
+
export function partition(
|
70
|
+
array: Iterable<unknown>,
|
71
|
+
predicate: (el: unknown) => boolean,
|
72
|
+
): [unknown[], unknown[]] {
|
73
|
+
const matches: Array<unknown> = [];
|
74
|
+
const rest: Array<unknown> = [];
|
75
|
+
|
76
|
+
for (const element of array) {
|
77
|
+
if (predicate(element)) {
|
78
|
+
matches.push(element);
|
79
|
+
} else {
|
80
|
+
rest.push(element);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
return [matches, rest];
|
85
|
+
}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Returns a tuple of two records with the first one containing all entries of
|
6
|
+
* the given record that match the given predicate and the second one containing
|
7
|
+
* all that do not.
|
8
|
+
*
|
9
|
+
* @typeParam T The type of the values in the record.
|
10
|
+
*
|
11
|
+
* @param record The record to partition.
|
12
|
+
* @param predicate The predicate function to determine which entries go where.
|
13
|
+
*
|
14
|
+
* @returns A tuple containing two records, the first one containing all entries
|
15
|
+
* that match the predicate and the second one containing all that do not.
|
16
|
+
*
|
17
|
+
* @example Basic usage
|
18
|
+
* ```ts
|
19
|
+
* import { partitionEntries } from "@std/collections/partition-entries";
|
20
|
+
* import { assertEquals } from "@std/assert";
|
21
|
+
*
|
22
|
+
* const menu = {
|
23
|
+
* Salad: 11,
|
24
|
+
* Soup: 8,
|
25
|
+
* Pasta: 13,
|
26
|
+
* };
|
27
|
+
* const myOptions = partitionEntries(
|
28
|
+
* menu,
|
29
|
+
* ([item, price]) => item !== "Pasta" && price < 10,
|
30
|
+
* );
|
31
|
+
*
|
32
|
+
* assertEquals(
|
33
|
+
* myOptions,
|
34
|
+
* [
|
35
|
+
* { Soup: 8 },
|
36
|
+
* { Salad: 11, Pasta: 13 },
|
37
|
+
* ],
|
38
|
+
* );
|
39
|
+
* ```
|
40
|
+
*/
|
41
|
+
export function partitionEntries<T>(
|
42
|
+
record: Readonly<Record<string, T>>,
|
43
|
+
predicate: (entry: [string, T]) => boolean,
|
44
|
+
): [match: Record<string, T>, rest: Record<string, T>] {
|
45
|
+
const match: Record<string, T> = {};
|
46
|
+
const rest: Record<string, T> = {};
|
47
|
+
const entries = Object.entries(record);
|
48
|
+
|
49
|
+
for (const [key, value] of entries) {
|
50
|
+
if (predicate([key, value])) {
|
51
|
+
match[key] = value;
|
52
|
+
} else {
|
53
|
+
rest[key] = value;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
return [match, rest];
|
58
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Builds all possible orders of all elements in the given array
|
6
|
+
* Ignores equality of elements, meaning this will always return the same
|
7
|
+
* number of permutations for a given length of input.
|
8
|
+
*
|
9
|
+
* @typeParam T The type of the elements in the array.
|
10
|
+
*
|
11
|
+
* @param inputArray The array to build permutations from.
|
12
|
+
*
|
13
|
+
* @returns An array of all possible permutations of the given array.
|
14
|
+
*
|
15
|
+
* @example Basic usage
|
16
|
+
* ```ts
|
17
|
+
* import { permutations } from "@std/collections/permutations";
|
18
|
+
* import { assertEquals } from "@std/assert";
|
19
|
+
*
|
20
|
+
* const numbers = [ 1, 2 ];
|
21
|
+
* const windows = permutations(numbers);
|
22
|
+
*
|
23
|
+
* assertEquals(windows, [
|
24
|
+
* [ 1, 2 ],
|
25
|
+
* [ 2, 1 ],
|
26
|
+
* ]);
|
27
|
+
* ```
|
28
|
+
*/
|
29
|
+
export function permutations<T>(inputArray: Iterable<T>): T[][] {
|
30
|
+
const result: T[][] = [];
|
31
|
+
|
32
|
+
const array = [...inputArray];
|
33
|
+
|
34
|
+
const k = array.length;
|
35
|
+
|
36
|
+
if (k === 0) {
|
37
|
+
return result;
|
38
|
+
}
|
39
|
+
|
40
|
+
// Heap's Algorithm
|
41
|
+
const c = new Array<number>(k).fill(0);
|
42
|
+
|
43
|
+
result.push([...array]);
|
44
|
+
|
45
|
+
let i = 1;
|
46
|
+
|
47
|
+
while (i < k) {
|
48
|
+
if (c[i]! < i) {
|
49
|
+
if (i % 2 === 0) {
|
50
|
+
[array[0], array[i]] = [array[i], array[0]] as [T, T];
|
51
|
+
} else {
|
52
|
+
[array[c[i]!], array[i]] = [array[i], array[c[i]!]] as [T, T];
|
53
|
+
}
|
54
|
+
|
55
|
+
result.push([...array]);
|
56
|
+
|
57
|
+
c[i]! += 1;
|
58
|
+
i = 1;
|
59
|
+
} else {
|
60
|
+
c[i] = 0;
|
61
|
+
i += 1;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
return result;
|
66
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Creates a new object by including the specified keys from the provided
|
6
|
+
* object.
|
7
|
+
*
|
8
|
+
* @typeParam T The type of the object.
|
9
|
+
* @typeParam K The type of the keys.
|
10
|
+
*
|
11
|
+
* @param obj The object to pick keys from.
|
12
|
+
* @param keys The keys to include in the new object.
|
13
|
+
*
|
14
|
+
* @returns A new object with the specified keys from the provided object.
|
15
|
+
*
|
16
|
+
* @example Basic usage
|
17
|
+
* ```ts
|
18
|
+
* import { pick } from "@std/collections/pick";
|
19
|
+
* import { assertEquals } from "@std/assert";
|
20
|
+
*
|
21
|
+
* const obj = { a: 5, b: 6, c: 7, d: 8 };
|
22
|
+
* const picked = pick(obj, ["a", "c"]);
|
23
|
+
*
|
24
|
+
* assertEquals(picked, { a: 5, c: 7 });
|
25
|
+
* ```
|
26
|
+
*/
|
27
|
+
export function pick<T extends object, K extends keyof T>(
|
28
|
+
obj: Readonly<T>,
|
29
|
+
keys: readonly K[],
|
30
|
+
): Pick<T, K> {
|
31
|
+
const result = {} as Pick<T, K>;
|
32
|
+
for (const key of keys) if (key in obj) result[key] = obj[key];
|
33
|
+
return result;
|
34
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
import { mapValues } from "./map_values.js";
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Applies the given reducer to each group in the given grouping, returning the
|
8
|
+
* results together with the respective group keys.
|
9
|
+
*
|
10
|
+
* @typeParam T input type of an item in a group in the given grouping.
|
11
|
+
* @typeParam A type of the accumulator value, which will match the returned
|
12
|
+
* record's values.
|
13
|
+
*
|
14
|
+
* @param record The grouping to reduce.
|
15
|
+
* @param reducer The reducer function to apply to each group.
|
16
|
+
* @param initialValue The initial value of the accumulator.
|
17
|
+
*
|
18
|
+
* @returns A record with the same keys as the input grouping, where each value
|
19
|
+
* is the result of applying the reducer to the respective group.
|
20
|
+
*
|
21
|
+
* @example Basic usage
|
22
|
+
* ```ts
|
23
|
+
* import { reduceGroups } from "@std/collections/reduce-groups";
|
24
|
+
* import { assertEquals } from "@std/assert";
|
25
|
+
*
|
26
|
+
* const votes = {
|
27
|
+
* Woody: [2, 3, 1, 4],
|
28
|
+
* Buzz: [5, 9],
|
29
|
+
* };
|
30
|
+
*
|
31
|
+
* const totalVotes = reduceGroups(votes, (sum, vote) => sum + vote, 0);
|
32
|
+
*
|
33
|
+
* assertEquals(totalVotes, {
|
34
|
+
* Woody: 10,
|
35
|
+
* Buzz: 14,
|
36
|
+
* });
|
37
|
+
* ```
|
38
|
+
*/
|
39
|
+
export function reduceGroups<T, A>(
|
40
|
+
record: Readonly<Record<string, ReadonlyArray<T>>>,
|
41
|
+
reducer: (accumulator: A, current: T) => A,
|
42
|
+
initialValue: A,
|
43
|
+
): Record<string, A> {
|
44
|
+
return mapValues(record, (value) => value.reduce(reducer, initialValue));
|
45
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Calls the given reducer on each element of the given collection, passing its
|
6
|
+
* result as the accumulator to the next respective call, starting with the
|
7
|
+
* given initialValue. Returns all intermediate accumulator results.
|
8
|
+
*
|
9
|
+
* @typeParam T The type of the elements in the array.
|
10
|
+
* @typeParam O The type of the accumulator.
|
11
|
+
*
|
12
|
+
* @param array The array to reduce.
|
13
|
+
* @param reducer The reducer function to apply to each element.
|
14
|
+
* @param initialValue The initial value of the accumulator.
|
15
|
+
*
|
16
|
+
* @returns An array of all intermediate accumulator results.
|
17
|
+
*
|
18
|
+
* @example Basic usage
|
19
|
+
* ```ts
|
20
|
+
* import { runningReduce } from "@std/collections/running-reduce";
|
21
|
+
* import { assertEquals } from "@std/assert";
|
22
|
+
*
|
23
|
+
* const numbers = [1, 2, 3, 4, 5];
|
24
|
+
* const sumSteps = runningReduce(numbers, (sum, current) => sum + current, 0);
|
25
|
+
*
|
26
|
+
* assertEquals(sumSteps, [1, 3, 6, 10, 15]);
|
27
|
+
* ```
|
28
|
+
*/
|
29
|
+
export function runningReduce<T, O>(
|
30
|
+
array: readonly T[],
|
31
|
+
reducer: (accumulator: O, current: T, currentIndex: number) => O,
|
32
|
+
initialValue: O,
|
33
|
+
): O[] {
|
34
|
+
let currentResult = initialValue;
|
35
|
+
return array.map((el, currentIndex) =>
|
36
|
+
currentResult = reducer(currentResult, el, currentIndex)
|
37
|
+
);
|
38
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Produces a random number between the inclusive `lower` and `upper` bounds.
|
6
|
+
*/
|
7
|
+
function randomInteger(lower: number, upper: number): number {
|
8
|
+
return lower + Math.floor(Math.random() * (upper - lower + 1));
|
9
|
+
}
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Returns a random element from the given array.
|
13
|
+
*
|
14
|
+
* @typeParam T The type of the elements in the array.
|
15
|
+
* @typeParam O The type of the accumulator.
|
16
|
+
*
|
17
|
+
* @param array The array to sample from.
|
18
|
+
*
|
19
|
+
* @returns A random element from the given array, or `undefined` if the array
|
20
|
+
* is empty.
|
21
|
+
*
|
22
|
+
* @example Basic usage
|
23
|
+
* ```ts
|
24
|
+
* import { sample } from "@std/collections/sample";
|
25
|
+
* import { assertArrayIncludes } from "@std/assert";
|
26
|
+
*
|
27
|
+
* const numbers = [1, 2, 3, 4];
|
28
|
+
* const random = sample(numbers);
|
29
|
+
*
|
30
|
+
* assertArrayIncludes(numbers, [random]);
|
31
|
+
* ```
|
32
|
+
*/
|
33
|
+
export function sample<T>(array: readonly T[]): T | undefined {
|
34
|
+
const length = array.length;
|
35
|
+
return length ? array[randomInteger(0, length - 1)] : undefined;
|
36
|
+
}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2
|
+
// This module is browser compatible.
|
3
|
+
|
4
|
+
/** Options for {@linkcode slidingWindows}. */
|
5
|
+
export interface SlidingWindowsOptions {
|
6
|
+
/**
|
7
|
+
* If step is set, each window will start that many elements after the last
|
8
|
+
* window's start.
|
9
|
+
*
|
10
|
+
* @default {1}
|
11
|
+
*/
|
12
|
+
step?: number;
|
13
|
+
/**
|
14
|
+
* If partial is set, windows will be generated for the last elements of the
|
15
|
+
* collection, resulting in some undefined values if size is greater than 1.
|
16
|
+
*
|
17
|
+
* @default {false}
|
18
|
+
*/
|
19
|
+
partial?: boolean;
|
20
|
+
}
|
21
|
+
|
22
|
+
/**
|
23
|
+
* Generates sliding views of the given array of the given size and returns a
|
24
|
+
* new array containing all of them.
|
25
|
+
*
|
26
|
+
* If step is set, each window will start that many elements after the last
|
27
|
+
* window's start. (Default: 1)
|
28
|
+
*
|
29
|
+
* If partial is set, windows will be generated for the last elements of the
|
30
|
+
* collection, resulting in some undefined values if size is greater than 1.
|
31
|
+
*
|
32
|
+
* @typeParam T The type of the array elements.
|
33
|
+
*
|
34
|
+
* @param array The array to generate sliding windows from.
|
35
|
+
* @param size The size of the sliding windows.
|
36
|
+
* @param options The options for generating sliding windows.
|
37
|
+
*
|
38
|
+
* @returns A new array containing all sliding windows of the given size.
|
39
|
+
*
|
40
|
+
* @example Usage
|
41
|
+
* ```ts
|
42
|
+
* import { slidingWindows } from "@std/collections/sliding-windows";
|
43
|
+
* import { assertEquals } from "@std/assert";
|
44
|
+
* const numbers = [1, 2, 3, 4, 5];
|
45
|
+
*
|
46
|
+
* const windows = slidingWindows(numbers, 3);
|
47
|
+
* assertEquals(windows, [
|
48
|
+
* [1, 2, 3],
|
49
|
+
* [2, 3, 4],
|
50
|
+
* [3, 4, 5],
|
51
|
+
* ]);
|
52
|
+
*
|
53
|
+
* const windowsWithStep = slidingWindows(numbers, 3, { step: 2 });
|
54
|
+
* assertEquals(windowsWithStep, [
|
55
|
+
* [1, 2, 3],
|
56
|
+
* [3, 4, 5],
|
57
|
+
* ]);
|
58
|
+
*
|
59
|
+
* const windowsWithPartial = slidingWindows(numbers, 3, { partial: true });
|
60
|
+
* assertEquals(windowsWithPartial, [
|
61
|
+
* [1, 2, 3],
|
62
|
+
* [2, 3, 4],
|
63
|
+
* [3, 4, 5],
|
64
|
+
* [4, 5],
|
65
|
+
* [5],
|
66
|
+
* ]);
|
67
|
+
* ```
|
68
|
+
*/
|
69
|
+
export function slidingWindows<T>(
|
70
|
+
array: readonly T[],
|
71
|
+
size: number,
|
72
|
+
options: SlidingWindowsOptions = {},
|
73
|
+
): T[][] {
|
74
|
+
const { step = 1, partial = false } = options;
|
75
|
+
|
76
|
+
if (
|
77
|
+
!Number.isInteger(size) || !Number.isInteger(step) || size <= 0 || step <= 0
|
78
|
+
) {
|
79
|
+
throw new RangeError("Both size and step must be positive integer.");
|
80
|
+
}
|
81
|
+
|
82
|
+
return Array.from(
|
83
|
+
{ length: Math.floor((array.length - (partial ? 1 : size)) / step + 1) },
|
84
|
+
(_, i) => array.slice(i * step, i * step + size),
|
85
|
+
);
|
86
|
+
}
|